From: Koushik Dutta <kou...@gmail.com>

The codec information may be in the SDP and not in the stream.

Signed-off-by: Koushik Dutta <kou...@gmail.com>
---
 libavformat/rtpdec_mpeg4.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/libavformat/rtpdec_mpeg4.c b/libavformat/rtpdec_mpeg4.c
index 6531632b2d..c3c3c67c3e 100644
--- a/libavformat/rtpdec_mpeg4.c
+++ b/libavformat/rtpdec_mpeg4.c
@@ -180,6 +180,7 @@ static int aac_parse_packet(AVFormatContext *ctx, 
PayloadContext *data,
                             int flags)
 {
     int ret;
+    AVCodecParameters *par = st->codecpar;
 
 
     if (!buf) {
@@ -208,6 +209,26 @@ static int aac_parse_packet(AVFormatContext *ctx, 
PayloadContext *data,
         return 1;
     }
 
+    /* Check for and skip ADTS header if we have an explicit decoder config */
+    if (par->extradata && len > 7) {
+       if (buf[0] == 0xff && (buf[1] & 0xf0) == 0xf0) {
+           size_t header_size = 7 + ((buf[1] & 0x01) ? 0 : 2);
+           if (len > header_size) {
+                buf += header_size;
+                len -= header_size;
+           }
+
+           if ((ret = av_new_packet(pkt, len)) < 0) {
+                av_log(ctx, AV_LOG_ERROR, "Out of memory\n");
+                return ret;
+           }
+
+            memcpy(pkt->data, buf, len);
+           pkt->stream_index = st->index;
+           return 0;
+       }
+    }
+
     if (rtp_parse_mp4_au(data, buf, len)) {
         av_log(ctx, AV_LOG_ERROR, "Error parsing AU headers\n");
         return -1;
-- 
2.39.5 (Apple Git-154)

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to