avcodec/libx265: fill headers in extradata
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 14 Mar 2014 03:26:24 +0000 (04:26 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 14 Mar 2014 03:26:24 +0000 (04:26 +0100)
Fixes Ticket3457

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/libx265.c

index 698ade2..2aceac7 100644 (file)
@@ -190,7 +190,7 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx)
     for (i = 0; i < nnal; i++)
         ctx->header_size += nal[i].sizeBytes;
 
-    ctx->header = av_malloc(ctx->header_size);
+    ctx->header = av_malloc(ctx->header_size + FF_INPUT_BUFFER_PADDING_SIZE);
     if (!ctx->header) {
         av_log(avctx, AV_LOG_ERROR,
                "Cannot allocate HEVC header of size %d.\n", ctx->header_size);
@@ -204,6 +204,13 @@ static av_cold int libx265_encode_init(AVCodecContext *avctx)
         buf += nal[i].sizeBytes;
     }
 
+    if (avctx->flags & CODEC_FLAG_GLOBAL_HEADER) {
+        avctx->extradata_size = ctx->header_size;
+        avctx->extradata = ctx->header;
+        ctx->header_size = 0;
+        ctx->header = NULL;
+    }
+
     return 0;
 }