[FFmpeg-devel] Strange code in libavformat/udp.c:udp_open()

Luca Abeni lucabe72
Fri Jul 13 16:18:11 CEST 2007


Hi all,

in libavformat/udp.c:udp_open() there is something like:
	s->is_multicast = find_info_tag(buf, sizeof(buf), "multicast", p);
does anyone know why "is_multicast" is not set according to the 
destination IP address (using the IN_MULTICAST() macro)?

If people agree that this is a good idea, next week I'll post a patch 
for using IN_MULTICAST() instead of the redundant "multicast" tag.


The Long story:
I am streaming some audio and video over RTP with ffmpeg, and trying to 
receive it with ffplay. The SDP describing the streams is
v=0
o=- 0 0 IN IPV4 127.0.0.1
t=0 0
s=No Name
a=tool:libavformat
m=video 10000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 MP4V-ES/90000
a=fmtp:96 profile-level-id=1
m=audio 20000 RTP/AVP 14
c=IN IP4 127.0.0.1
I believe that this SDP is valid (if I understand the RFC correctly, the 
IP address in the "c=" line is not forced to be a multicast address).

VLC is able to play the stream using the live555 libraries, but ffplay 
and ffmpeg fail with "rtp: IP_ADD_MEMBERSHIP: Invalid argument", because 
they try to open the "udp://127.0.0.1:10000?multicast=1&ttl=16" URI.

The error is at line 1371 of libavformat/rtsp.c (sdp_read_header() - 
I'll send a patch for it next week), but I still believe that udp_open() 
is doing a silly thing in using the "multicast" tag...
Am I missing something?


				Thanks,
					Luca




More information about the ffmpeg-devel mailing list