[FFmpeg-devel] [PATCH] RTP depacketizer for AMR

Martin Storsjö martin
Wed Jan 27 21:08:05 CET 2010


On Wed, 27 Jan 2010, Ronald S. Bultje wrote:

> I think the best thing here is to return whole packets since the
> decoder handles that anyway. If needed, we'll write a AMR parser. And
> RTP depacketizers should not mess with timestamps, it's the wrong
> place.

Well, the current dynamic handler design suggests to me that they're 
inteded to be able to return parts of an RTP packet, one frame at a time, 
right - that's what returning 0/1 signals (0 - last packet from this data, 
1 - we've got more to return, so call again with NULL buf pointer). In 
more complicated scenarios, I do see the case where the depacketizer may 
need to hint about the timestamp of each returned packet, if they're 
nontrivial.

Also, another point that came to my mind regarding splitting in the 
depacketizer vs in a parser: AMR/RTP does allow interleaving (which I 
don't support yet, haven't run across any samples with that). In this 
case, the first RTP packet may contain audio frames 1, 4, 7, the second 
packet contains frames 2, 5, 8, etc.

In this case, I don't see any other option than buffering this within the 
depacketizer and then returning the individual frames in the correct 
order. Or is there another solution to that case? Also, if we notice that 
the packet containing frames 2, 5, 8 was dropped in transmission, we may 
need to return frames 1, 3, 4, 6, 7, 9, and thus may need to set the 
individual timestamp for each returned packet, since setting them 
sequentially doesn't yield the correct end result.

// Martin



More information about the ffmpeg-devel mailing list