Mercurial > libavformat.hg
changeset 6255:e87b379e8816 libavformat
rtpdec: Allow depacketizers to specify that pkt->pts should be left as AV_NOPTS_VALUE
author | mstorsjo |
---|---|
date | Wed, 14 Jul 2010 12:26:16 +0000 |
parents | feec446a2dc1 |
children | c74a9b10ee6c |
files | rtpdec.c rtpdec.h |
diffstat | 2 files changed, 6 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/rtpdec.c Mon Jul 12 18:52:03 2010 +0000 +++ b/rtpdec.c Wed Jul 14 12:26:16 2010 +0000 @@ -375,7 +375,7 @@ */ static void finalize_packet(RTPDemuxContext *s, AVPacket *pkt, uint32_t timestamp) { - if (s->last_rtcp_ntp_time != AV_NOPTS_VALUE) { + if (s->last_rtcp_ntp_time != AV_NOPTS_VALUE && timestamp != RTP_NOTS_VALUE) { int64_t addend; int delta_timestamp; @@ -408,7 +408,9 @@ if (!buf) { /* return the next packets, if any */ if(s->st && s->parse_packet) { - timestamp= 0; ///< Should not be used if buf is NULL, but should be set to the timestamp of the packet returned.... + /* timestamp should be overwritten by parse_packet, if not, + * the packet is left with pts == AV_NOPTS_VALUE */ + timestamp = RTP_NOTS_VALUE; rv= s->parse_packet(s->ic, s->dynamic_protocol_context, s->st, pkt, ×tamp, NULL, 0, flags); finalize_packet(s, pkt, timestamp);
--- a/rtpdec.h Mon Jul 12 18:52:03 2010 +0000 +++ b/rtpdec.h Wed Jul 14 12:26:16 2010 +0000 @@ -34,6 +34,8 @@ #define RTP_MIN_PACKET_LENGTH 12 #define RTP_MAX_PACKET_LENGTH 1500 /* XXX: suppress this define */ +#define RTP_NOTS_VALUE ((uint32_t)-1) + typedef struct RTPDemuxContext RTPDemuxContext; RTPDemuxContext *rtp_parse_open(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type); void rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx,