diff --git a/libavformat/udp.c b/libavformat/udp.c index 3d159ef4f8..f28bdcaa4c 100644 --- a/libavformat/udp.c +++ b/libavformat/udp.c @@ -48,6 +48,7 @@ typedef struct { * option: 'multicast=1' : enable multicast * 'ttl=n' : set the ttl value (for multicast only) * 'localport=n' : set the local port + * 'pkt_size=n' : set max packet size * * @param s1 media file context * @param uri of the remote server @@ -104,6 +105,7 @@ static int udp_open(URLContext *h, const char *uri, int flags) char buf[256]; h->is_streamed = 1; + h->max_packet_size = 1472; is_output = (flags & URL_WRONLY); @@ -123,6 +125,9 @@ static int udp_open(URLContext *h, const char *uri, int flags) if (find_info_tag(buf, sizeof(buf), "localport", p)) { s->local_port = strtol(buf, NULL, 10); } + if (find_info_tag(buf, sizeof(buf), "pkt_size", p)) { + h->max_packet_size = strtol(buf, NULL, 10); + } } /* fill the dest addr */ @@ -191,7 +196,6 @@ static int udp_open(URLContext *h, const char *uri, int flags) } s->udp_fd = udp_fd; - h->max_packet_size = 1472; /* XXX: probe it ? */ return 0; fail: if (udp_fd >= 0)