Add a flags field to the RTPDynamicPayloadPacketHandlerProc (PKT_FLAG_*).
[libav.git] / libavformat / rtpdec.c
index f5e2d6d..7bdfca3 100644 (file)
@@ -402,7 +402,7 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
                      const uint8_t *buf, int len)
 {
     unsigned int ssrc, h;
-    int payload_type, seq, ret;
+    int payload_type, seq, ret, flags = 0;
     AVStream *st;
     uint32_t timestamp;
     int rv= 0;
@@ -411,7 +411,7 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
         /* 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....
-            rv= s->parse_packet(s, pkt, &timestamp, NULL, 0);
+            rv= s->parse_packet(s, pkt, &timestamp, NULL, 0, flags);
             finalize_packet(s, pkt, timestamp);
             return rv;
         } else {
@@ -474,6 +474,8 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
             s->read_buf_index = 0;
             return 1;
         }
+    } else if (s->parse_packet) {
+        rv = s->parse_packet(s, pkt, &timestamp, buf, len, flags);
     } else {
         // at this point, the RTP header has been stripped;  This is ASSUMING that there is only 1 CSRC, which in't wise.
         switch(st->codec->codec_id) {
@@ -529,12 +531,8 @@ int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
             rv= 0;
             break;
         default:
-            if(s->parse_packet) {
-                rv= s->parse_packet(s, pkt, &timestamp, buf, len);
-            } else {
-                av_new_packet(pkt, len);
-                memcpy(pkt->data, buf, len);
-            }
+            av_new_packet(pkt, len);
+            memcpy(pkt->data, buf, len);
             break;
         }