diff --git a/README b/README index f4961f4..7188231 100644 --- a/README +++ b/README @@ -30,6 +30,8 @@ With "-t" option, you can change the scan timeout. The default scan timeout is 10000ms(10 seconds). It tries to get png image file while scanning. If it can't get the png image file for the timeout, it gives up and tries the next multicast ip address. +With "-u" option, you can scan with udp protocol instead of rtp protocol. The +default is scanning with rtp protocol. With "-q" option, you can disable the log printing. With "-w" option, you can wait for the multicast packet without specifying the scanning ip addresses. When it detects multicast packet from the specified diff --git a/omvs_main.c b/omvs_main.c index beca3dc..1683777 100644 --- a/omvs_main.c +++ b/omvs_main.c @@ -37,6 +37,7 @@ static gchar *_omvs_outdir = "omvs_out"; static gint _omvs_jobs = 1; static gint _omvs_sleep = 1000; static gint _omvs_timeout = 10000; +static gboolean _omvs_udp_scan; static gboolean _omvs_quiet; static gboolean _omvs_wait; @@ -61,6 +62,8 @@ static GOptionEntry _omvs_entries[] = "Sleep time(milliseconds) between scans", "ms" }, { "timeout", 't', 0, G_OPTION_ARG_INT, &_omvs_timeout, "Timeout time(milliseconds) in each scan", "ms" }, + { "udp", 'u', 0, G_OPTION_ARG_NONE, &_omvs_udp_scan, + "Use udp protocol instead of rtp", NULL }, { "quiet", 'q', 0, G_OPTION_ARG_NONE, &_omvs_quiet, "Print no log except for errors", NULL }, { "wait", 'w', 0, G_OPTION_ARG_NONE, &_omvs_wait, @@ -312,7 +315,11 @@ static gpointer _omvs_start_scan_job(gpointer data) { if (!is_udp_port_found) { gchar *uri; gchar *filename; - uri = g_strdup_printf("rtp://%s:%d", addr_str, udp_port); + if (_omvs_udp_scan) { + uri = g_strdup_printf("udp://%s:%d", addr_str, udp_port); + } else { + uri = g_strdup_printf("rtp://%s:%d", addr_str, udp_port); + } filename = g_strdup_printf("%s/%s-%d.png", _omvs_outdir, addr_str, udp_port); if (!_omvs_quiet) { @@ -369,7 +376,11 @@ static gpointer _omvs_start_scan_job(gpointer data) { _omvs_m3u_idx++; g_mutex_lock(&_omvs_mutex); fprintf(_omvs_m3u_fp, "#EXTINF:%u,%u\n", _omvs_m3u_idx, _omvs_m3u_idx); - fprintf(_omvs_m3u_fp, "rtp://%s:%u\n", addr_str, o_ipaddr->ports[j]); + if (_omvs_udp_scan) { + fprintf(_omvs_m3u_fp, "udp://%s:%u\n", addr_str, o_ipaddr->ports[j]); + } else { + fprintf(_omvs_m3u_fp, "rtp://%s:%u\n", addr_str, o_ipaddr->ports[j]); + } fflush(_omvs_m3u_fp); g_mutex_unlock(&_omvs_mutex); } @@ -566,7 +577,11 @@ static gint _omvs_wait_for_multicast_packet(void) { (haddr >> 16) & 0xff, (haddr >> 8) & 0xff, (haddr >> 0) & 0xff); - uri = g_strdup_printf("rtp://%s:%u", addr_str, udp_port); + if (_omvs_udp_scan) { + uri = g_strdup_printf("udp://%s:%u", addr_str, udp_port); + } else { + uri = g_strdup_printf("rtp://%s:%u", addr_str, udp_port); + } if (!g_hash_table_replace(urihashtable, uri, addr_str)) { continue;