[FFmpeg-cvslog] Merge commit 'f3ed484953b81856e40239d2410058a96188b2be'

Derek Buitenhuis git at videolan.org
Thu May 12 15:36:48 CEST 2016


ffmpeg | branch: master | Derek Buitenhuis <derek.buitenhuis at gmail.com> | Thu May 12 14:33:57 2016 +0100| [97946b20b6d8c8746ca41490534d7ecceaab799b] | committer: Derek Buitenhuis

Merge commit 'f3ed484953b81856e40239d2410058a96188b2be'

* commit 'f3ed484953b81856e40239d2410058a96188b2be':
  h264_mp4toannexb_bsf: do not fail on annex B extradata

Merged-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=97946b20b6d8c8746ca41490534d7ecceaab799b
---

 libavcodec/h264_mp4toannexb_bsf.c |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c
index 828bf18..163d0f5 100644
--- a/libavcodec/h264_mp4toannexb_bsf.c
+++ b/libavcodec/h264_mp4toannexb_bsf.c
@@ -140,10 +140,16 @@ pps:
 static int h264_mp4toannexb_init(AVBSFContext *ctx)
 {
     H264BSFContext *s = ctx->priv_data;
+    int extra_size = ctx->par_in->extradata_size;
     int ret;
 
     /* retrieve sps and pps NAL units from extradata */
-    if (ctx->par_in->extradata_size >= 6) {
+    if (!extra_size                                               ||
+        (extra_size >= 3 && AV_RB24(ctx->par_in->extradata) == 1) ||
+        (extra_size >= 4 && AV_RB32(ctx->par_in->extradata) == 1)) {
+        av_log(ctx, AV_LOG_VERBOSE,
+               "The input looks like it is Annex B already\n");
+    } else if (extra_size >= 6) {
         ret = h264_extradata_to_annexb(ctx, AV_INPUT_BUFFER_PADDING_SIZE);
         if (ret < 0)
             return ret;
@@ -153,6 +159,9 @@ static int h264_mp4toannexb_init(AVBSFContext *ctx)
         s->idr_sps_seen     = 0;
         s->idr_pps_seen     = 0;
         s->extradata_parsed = 1;
+    } else {
+        av_log(ctx, AV_LOG_ERROR, "Invalid extradata size: %d\n", extra_size);
+        return AVERROR_INVALIDDATA;
     }
 
     return 0;


======================================================================

diff --cc libavcodec/h264_mp4toannexb_bsf.c
index 828bf18,c65aaeb..163d0f5
--- a/libavcodec/h264_mp4toannexb_bsf.c
+++ b/libavcodec/h264_mp4toannexb_bsf.c
@@@ -149,10 -146,11 +155,13 @@@ static int h264_mp4toannexb_init(AVBSFC
              return ret;
  
          s->length_size      = ret;
 -        s->first_idr        = 1;
 +        s->new_idr          = 1;
 +        s->idr_sps_seen     = 0;
 +        s->idr_pps_seen     = 0;
          s->extradata_parsed = 1;
+     } else {
+         av_log(ctx, AV_LOG_ERROR, "Invalid extradata size: %d\n", extra_size);
+         return AVERROR_INVALIDDATA;
      }
  
      return 0;



More information about the ffmpeg-cvslog mailing list