[FFmpeg-devel] [PATCH] RTP depacketizer for AMR
Luca Abeni
lucabe72
Wed Jan 27 18:09:29 CET 2010
Martin Storsj? wrote:
> On Wed, 27 Jan 2010, Luca Abeni wrote:
>
>>> It seems to me that the missing timestamps aren't filled in automatically by
>>> libavformat. Around lines 421-424 in rtpdec.c, the timestamp is set to 0
>> Congratulations, I think you just found a bug ;-)
>> That should be AV_NOPTS_VALUE, not 0.
>> Can you try this change and see what happens if the payload handler does
>> not mess with timestamps?
>
> No, that won't work. "timestamp" in this case is an uint32_t, not an
> int64_t as the AVPacket::pts field.
Ah, ok... So, a different solution has to be used. But my idea is still that
the packet pts should be set to AV_NOPTS_VALUE.
> But as far as I can see, the dynamic rtp packetload handlers really are
> intended to set the timestamp in this way. From rtpdec.h:
>
> /**
> * Packet parsing for "private" payloads in the RTP specs.
> [...]
> * @param timestamp pointer in which to write the timestamp of this RTP
> packet
> */
> typedef int (*DynamicPayloadPacketHandlerProc) (AVFormatContext *ctx,
> PayloadContext *s,
> AVStream *st,
> AVPacket * pkt,
> uint32_t *timestamp,
> const uint8_t * buf,
> int len, int flags);
>
> If they were not intended to set the timestamp, the timestamp parameter
> wouldn't be a pointer.
I believe that the timestamp parameter should not eve exist here ;-)
But at this point I leave this to the maintainer.
Luca
More information about the ffmpeg-devel
mailing list