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, &timestamp, 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,