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

Martin Storsjö martin
Wed Jan 27 21:25:51 CET 2010


Hi Ronald,

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

> On Wed, Jan 27, 2010 at 3:08 PM, Martin Storsj? <martin at martin.st> wrote:
> > 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?
> 
> It is exactly for this that the return values are intended. Also, for
> something like RDT, the demuxer itself might "parse" already. If you
> can return full frames, it is generally more memory-efficient (b/c you
> need fewer memcpy()s), and then that's better, IMO.

Ok, so for the current non-interleaved case, we still should return all 
frames at once - only for the potential future case of interleaved frames 
should we return them one at a time?

But do you agree that the depacketizer may need to set the timestamp if we 
return individual frames, in scenario described above?

To me, lines 414-417 (sorry, the line numbers were wrong in some of the 
earlier mails) in rtpdec.c clearly say that this is the intended use of 
the timestamp pointer. If the timestamp pointer parameter was to be 
removed, we could only set pkt->pts = AV_NOPTS_VALUE there, instead of 
doing the finalize_packet call.

// Martin



More information about the ffmpeg-devel mailing list