[FFmpeg-devel] Question about AVRtpPayloadTypes

Luca Abeni lucabe72
Fri Aug 10 15:04:42 CEST 2007

Hi all,

I have some doubts about the RTP/RTSP code in libavformat. I hope 
someone here can help me in understanding it...
While trying to implement proper support for mpeg1 and mpeg2 video in 
libavformat/rtp.c, I found some parts of the code that seem to be a 
little bit confusing.

First of all, it is not clear to me how AVRtpPayloadTypes is supposed to 
be used: some parts of the code seem to assume that 
AVRtpPayloadTypes[i].pt == i (for example, see 
rtp.c:rtp_get_codec_info()), while some other parts of the code do not 
make this assumption: for example, rtsp.c:sdp_parse_rtpmap() contains
/* search into AVRtpPayloadTypes[] */
for (i = 0; AVRtpPayloadTypes[i].pt >= 0; ++i)
     if (!strcmp(buf, AVRtpPayloadTypes[i].enc_name) && 
(codec->codec_type == AVRtpPayloadTypes[i].codec_type)){
         codec->codec_id = AVRtpPayloadTypes[i].codec_id;

So, is rtp_get_codec_info() (and all the code doing 
"AVRtpPayloadTypes[payload_type]") broken, is sdp_parts_rtpmap() doing 
something useless, or am I missing something?

Also, I am confused by the above code in rtsp:sdp_parse_rtpmap()... If 
the payload type is known, and is < 96, why is the codec type searched 
based on enc_name? And, most important, is it possible to find an 
"a=rtpmap" line in the SDP if the payload type is < 96? I would think it 
is useless...


More information about the ffmpeg-devel mailing list