[libav-devel] [PATCH 01/14] cbs: Allocate the context inside the init function

Mark Thompson sw at jkqxz.net
Thu Nov 9 02:07:43 CET 2017


... instead of making the caller allocate it themselves.  This is
more consistent with other APIs in libav.
---
 libavcodec/cbs.c                    | 20 +++++++++++++++++---
 libavcodec/cbs.h                    |  6 +++---
 libavcodec/h264_metadata_bsf.c      | 20 ++++++++++----------
 libavcodec/h264_redundant_pps_bsf.c | 18 +++++++++---------
 libavcodec/h265_metadata_bsf.c      | 18 +++++++++---------
 libavcodec/mpeg2_metadata_bsf.c     | 16 ++++++++--------
 libavcodec/trace_headers_bsf.c      | 14 +++++++-------
 libavcodec/vaapi_encode_h264.c      | 14 +++++++-------
 libavcodec/vaapi_encode_h265.c      | 10 +++++-----
 libavcodec/vaapi_encode_mpeg2.c     | 10 +++++-----
 10 files changed, 80 insertions(+), 66 deletions(-)

diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
index 744091493..3ac0d4b32 100644
--- a/libavcodec/cbs.c
+++ b/libavcodec/cbs.c
@@ -39,9 +39,10 @@ static const CodedBitstreamType *cbs_type_table[] = {
 #endif
 };
 
-int ff_cbs_init(CodedBitstreamContext *ctx,
+int ff_cbs_init(CodedBitstreamContext **ctx_ptr,
                 enum AVCodecID codec_id, void *log_ctx)
 {
+    CodedBitstreamContext *ctx;
     const CodedBitstreamType *type;
     int i;
 
@@ -55,27 +56,40 @@ int ff_cbs_init(CodedBitstreamContext *ctx,
     if (!type)
         return AVERROR(EINVAL);
 
+    ctx = av_mallocz(sizeof(*ctx));
+    if (!ctx)
+        return AVERROR(ENOMEM);
+
     ctx->log_ctx = log_ctx;
     ctx->codec   = type;
 
     ctx->priv_data = av_mallocz(ctx->codec->priv_data_size);
-    if (!ctx->priv_data)
+    if (!ctx->priv_data) {
+        av_freep(&ctx);
         return AVERROR(ENOMEM);
+    }
 
     ctx->decompose_unit_types = NULL;
 
     ctx->trace_enable = 0;
     ctx->trace_level  = AV_LOG_TRACE;
 
+    *ctx_ptr = ctx;
     return 0;
 }
 
-void ff_cbs_close(CodedBitstreamContext *ctx)
+void ff_cbs_close(CodedBitstreamContext **ctx_ptr)
 {
+    CodedBitstreamContext *ctx = *ctx_ptr;
+
+    if (!ctx)
+        return;
+
     if (ctx->codec && ctx->codec->close)
         ctx->codec->close(ctx);
 
     av_freep(&ctx->priv_data);
+    av_freep(ctx_ptr);
 }
 
 static void cbs_unit_uninit(CodedBitstreamContext *ctx,
diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h
index 01b2239b7..34ee78be3 100644
--- a/libavcodec/cbs.h
+++ b/libavcodec/cbs.h
@@ -169,15 +169,15 @@ typedef struct CodedBitstreamContext {
 
 
 /**
- * Initialise a new context for the given codec.
+ * Create and initialise a new context for the given codec.
  */
-int ff_cbs_init(CodedBitstreamContext *ctx,
+int ff_cbs_init(CodedBitstreamContext **ctx,
                 enum AVCodecID codec_id, void *log_ctx);
 
 /**
  * Close a context and free all internal state.
  */
-void ff_cbs_close(CodedBitstreamContext *ctx);
+void ff_cbs_close(CodedBitstreamContext **ctx);
 
 
 /**
diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c
index 1afa5014b..33757cfb1 100644
--- a/libavcodec/h264_metadata_bsf.c
+++ b/libavcodec/h264_metadata_bsf.c
@@ -35,7 +35,7 @@ enum {
 typedef struct H264MetadataContext {
     const AVClass *class;
 
-    CodedBitstreamContext cbc;
+    CodedBitstreamContext *cbc;
     CodedBitstreamFragment access_unit;
 
     H264RawAUD aud_nal;
@@ -214,7 +214,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
     if (err < 0)
         goto fail;
 
-    err = ff_cbs_read_packet(&ctx->cbc, au, in);
+    err = ff_cbs_read_packet(ctx->cbc, au, in);
     if (err < 0) {
         av_log(bsf, AV_LOG_ERROR, "Failed to read packet.\n");
         goto fail;
@@ -229,7 +229,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
     // If an AUD is present, it must be the first NAL unit.
     if (au->units[0].type == H264_NAL_AUD) {
         if (ctx->aud == REMOVE)
-            ff_cbs_delete_unit(&ctx->cbc, au, 0);
+            ff_cbs_delete_unit(ctx->cbc, au, 0);
     } else {
         if (ctx->aud == INSERT) {
             static const int primary_pic_type_table[] = {
@@ -269,7 +269,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
             aud->nal_unit_header.nal_unit_type = H264_NAL_AUD;
             aud->primary_pic_type = j;
 
-            err = ff_cbs_insert_unit_content(&ctx->cbc, au,
+            err = ff_cbs_insert_unit_content(ctx->cbc, au,
                                              0, H264_NAL_AUD, aud);
             if (err < 0) {
                 av_log(bsf, AV_LOG_ERROR, "Failed to insert AUD.\n");
@@ -314,7 +314,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
 
             sei->nal_unit_header.nal_unit_type = H264_NAL_SEI;
 
-            err = ff_cbs_insert_unit_content(&ctx->cbc, au,
+            err = ff_cbs_insert_unit_content(ctx->cbc, au,
                                              sei_pos, H264_NAL_SEI, sei);
             if (err < 0) {
                 av_log(bsf, AV_LOG_ERROR, "Failed to insert SEI.\n");
@@ -375,7 +375,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
         ++sei->payload_count;
     }
 
-    err = ff_cbs_write_packet(&ctx->cbc, out, au);
+    err = ff_cbs_write_packet(ctx->cbc, out, au);
     if (err < 0) {
         av_log(bsf, AV_LOG_ERROR, "Failed to write packet.\n");
         goto fail;
@@ -387,7 +387,7 @@ static int h264_metadata_filter(AVBSFContext *bsf, AVPacket *out)
 
     err = 0;
 fail:
-    ff_cbs_fragment_uninit(&ctx->cbc, au);
+    ff_cbs_fragment_uninit(ctx->cbc, au);
     av_freep(&sei_udu_string);
 
     av_packet_free(&in);
@@ -406,7 +406,7 @@ static int h264_metadata_init(AVBSFContext *bsf)
         return err;
 
     if (bsf->par_in->extradata) {
-        err = ff_cbs_read_extradata(&ctx->cbc, au, bsf->par_in);
+        err = ff_cbs_read_extradata(ctx->cbc, au, bsf->par_in);
         if (err < 0) {
             av_log(bsf, AV_LOG_ERROR, "Failed to read extradata.\n");
             goto fail;
@@ -420,7 +420,7 @@ static int h264_metadata_init(AVBSFContext *bsf)
             }
         }
 
-        err = ff_cbs_write_extradata(&ctx->cbc, bsf->par_out, au);
+        err = ff_cbs_write_extradata(ctx->cbc, bsf->par_out, au);
         if (err < 0) {
             av_log(bsf, AV_LOG_ERROR, "Failed to write extradata.\n");
             goto fail;
@@ -429,7 +429,7 @@ static int h264_metadata_init(AVBSFContext *bsf)
 
     err = 0;
 fail:
-    ff_cbs_fragment_uninit(&ctx->cbc, au);
+    ff_cbs_fragment_uninit(ctx->cbc, au);
     return err;
 }
 
diff --git a/libavcodec/h264_redundant_pps_bsf.c b/libavcodec/h264_redundant_pps_bsf.c
index abc7af788..24b7b6730 100644
--- a/libavcodec/h264_redundant_pps_bsf.c
+++ b/libavcodec/h264_redundant_pps_bsf.c
@@ -28,8 +28,8 @@
 
 
 typedef struct H264RedundantPPSContext {
-    CodedBitstreamContext input;
-    CodedBitstreamContext output;
+    CodedBitstreamContext *input;
+    CodedBitstreamContext *output;
 
     CodedBitstreamFragment access_unit;
 
@@ -77,7 +77,7 @@ static int h264_redundant_pps_filter(AVBSFContext *bsf, AVPacket *out)
     if (err < 0)
         return err;
 
-    err = ff_cbs_read_packet(&ctx->input, au, in);
+    err = ff_cbs_read_packet(ctx->input, au, in);
     if (err < 0)
         return err;
 
@@ -92,7 +92,7 @@ static int h264_redundant_pps_filter(AVBSFContext *bsf, AVPacket *out)
             if (!au_has_sps) {
                 av_log(ctx, AV_LOG_VERBOSE, "Deleting redundant PPS "
                        "at %"PRId64".\n", in->pts);
-                ff_cbs_delete_unit(&ctx->input, au, i);
+                ff_cbs_delete_unit(ctx->input, au, i);
             }
         }
         if (nal->type == H264_NAL_SLICE ||
@@ -102,11 +102,11 @@ static int h264_redundant_pps_filter(AVBSFContext *bsf, AVPacket *out)
         }
     }
 
-    err = ff_cbs_write_packet(&ctx->output, out, au);
+    err = ff_cbs_write_packet(ctx->output, out, au);
     if (err < 0)
         return err;
 
-    ff_cbs_fragment_uninit(&ctx->output, au);
+    ff_cbs_fragment_uninit(ctx->output, au);
 
     err = av_packet_copy_props(out, in);
     if (err < 0)
@@ -134,7 +134,7 @@ static int h264_redundant_pps_init(AVBSFContext *bsf)
     ctx->global_pic_init_qp = 26;
 
     if (bsf->par_in->extradata) {
-        err = ff_cbs_read_extradata(&ctx->input, au, bsf->par_in);
+        err = ff_cbs_read_extradata(ctx->input, au, bsf->par_in);
         if (err < 0) {
             av_log(bsf, AV_LOG_ERROR, "Failed to read extradata.\n");
             return err;
@@ -145,13 +145,13 @@ static int h264_redundant_pps_init(AVBSFContext *bsf)
                 h264_redundant_pps_fixup_pps(ctx, au->units[i].content);
         }
 
-        err = ff_cbs_write_extradata(&ctx->output, bsf->par_out, au);
+        err = ff_cbs_write_extradata(ctx->output, bsf->par_out, au);
         if (err < 0) {
             av_log(bsf, AV_LOG_ERROR, "Failed to write extradata.\n");
             return err;
         }
 
-        ff_cbs_fragment_uninit(&ctx->output, au);
+        ff_cbs_fragment_uninit(ctx->output, au);
     }
 
     return 0;
diff --git a/libavcodec/h265_metadata_bsf.c b/libavcodec/h265_metadata_bsf.c
index aef4a55fb..ffaf7f287 100644
--- a/libavcodec/h265_metadata_bsf.c
+++ b/libavcodec/h265_metadata_bsf.c
@@ -33,7 +33,7 @@ enum {
 typedef struct H265MetadataContext {
     const AVClass *class;
 
-    CodedBitstreamContext cbc;
+    CodedBitstreamContext *cbc;
     CodedBitstreamFragment access_unit;
 
     H265RawAUD aud_nal;
@@ -241,7 +241,7 @@ static int h265_metadata_filter(AVBSFContext *bsf, AVPacket *out)
     if (err < 0)
         goto fail;
 
-    err = ff_cbs_read_packet(&ctx->cbc, au, in);
+    err = ff_cbs_read_packet(ctx->cbc, au, in);
     if (err < 0) {
         av_log(bsf, AV_LOG_ERROR, "Failed to read packet.\n");
         goto fail;
@@ -256,7 +256,7 @@ static int h265_metadata_filter(AVBSFContext *bsf, AVPacket *out)
     // If an AUD is present, it must be the first NAL unit.
     if (au->units[0].type == HEVC_NAL_AUD) {
         if (ctx->aud == REMOVE)
-            ff_cbs_delete_unit(&ctx->cbc, au, 0);
+            ff_cbs_delete_unit(ctx->cbc, au, 0);
     } else {
         if (ctx->aud == INSERT) {
             H265RawAUD *aud = &ctx->aud_nal;
@@ -288,7 +288,7 @@ static int h265_metadata_filter(AVBSFContext *bsf, AVPacket *out)
             };
             aud->pic_type = pic_type;
 
-            err = ff_cbs_insert_unit_content(&ctx->cbc, au,
+            err = ff_cbs_insert_unit_content(ctx->cbc, au,
                                              0, HEVC_NAL_AUD, aud);
             if (err) {
                 av_log(bsf, AV_LOG_ERROR, "Failed to insert AUD.\n");
@@ -310,7 +310,7 @@ static int h265_metadata_filter(AVBSFContext *bsf, AVPacket *out)
         }
     }
 
-    err = ff_cbs_write_packet(&ctx->cbc, out, au);
+    err = ff_cbs_write_packet(ctx->cbc, out, au);
     if (err < 0) {
         av_log(bsf, AV_LOG_ERROR, "Failed to write packet.\n");
         goto fail;
@@ -322,7 +322,7 @@ static int h265_metadata_filter(AVBSFContext *bsf, AVPacket *out)
 
     err = 0;
 fail:
-    ff_cbs_fragment_uninit(&ctx->cbc, au);
+    ff_cbs_fragment_uninit(ctx->cbc, au);
 
     av_packet_free(&in);
 
@@ -340,7 +340,7 @@ static int h265_metadata_init(AVBSFContext *bsf)
         return err;
 
     if (bsf->par_in->extradata) {
-        err = ff_cbs_read_extradata(&ctx->cbc, au, bsf->par_in);
+        err = ff_cbs_read_extradata(ctx->cbc, au, bsf->par_in);
         if (err < 0) {
             av_log(bsf, AV_LOG_ERROR, "Failed to read extradata.\n");
             goto fail;
@@ -359,7 +359,7 @@ static int h265_metadata_init(AVBSFContext *bsf)
             }
         }
 
-        err = ff_cbs_write_extradata(&ctx->cbc, bsf->par_out, au);
+        err = ff_cbs_write_extradata(ctx->cbc, bsf->par_out, au);
         if (err < 0) {
             av_log(bsf, AV_LOG_ERROR, "Failed to write extradata.\n");
             goto fail;
@@ -368,7 +368,7 @@ static int h265_metadata_init(AVBSFContext *bsf)
 
     err = 0;
 fail:
-    ff_cbs_fragment_uninit(&ctx->cbc, au);
+    ff_cbs_fragment_uninit(ctx->cbc, au);
     return err;
 }
 
diff --git a/libavcodec/mpeg2_metadata_bsf.c b/libavcodec/mpeg2_metadata_bsf.c
index 5dae481d3..492393286 100644
--- a/libavcodec/mpeg2_metadata_bsf.c
+++ b/libavcodec/mpeg2_metadata_bsf.c
@@ -28,7 +28,7 @@
 typedef struct MPEG2MetadataContext {
     const AVClass *class;
 
-    CodedBitstreamContext cbc;
+    CodedBitstreamContext *cbc;
     CodedBitstreamFragment fragment;
 
     MPEG2RawExtensionData sequence_display_extension;
@@ -165,7 +165,7 @@ static int mpeg2_metadata_update_fragment(AVBSFContext *bsf,
     if (add_sde) {
         int err;
 
-        err = ff_cbs_insert_unit_content(&ctx->cbc, frag, se_pos + 1,
+        err = ff_cbs_insert_unit_content(ctx->cbc, frag, se_pos + 1,
                                          MPEG2_START_EXTENSION,
                                          &ctx->sequence_display_extension);
         if (err < 0) {
@@ -189,7 +189,7 @@ static int mpeg2_metadata_filter(AVBSFContext *bsf, AVPacket *out)
     if (err < 0)
         goto fail;
 
-    err = ff_cbs_read_packet(&ctx->cbc, frag, in);
+    err = ff_cbs_read_packet(ctx->cbc, frag, in);
     if (err < 0) {
         av_log(bsf, AV_LOG_ERROR, "Failed to read packet.\n");
         goto fail;
@@ -201,7 +201,7 @@ static int mpeg2_metadata_filter(AVBSFContext *bsf, AVPacket *out)
         goto fail;
     }
 
-    err = ff_cbs_write_packet(&ctx->cbc, out, frag);
+    err = ff_cbs_write_packet(ctx->cbc, out, frag);
     if (err < 0) {
         av_log(bsf, AV_LOG_ERROR, "Failed to write packet.\n");
         goto fail;
@@ -215,7 +215,7 @@ static int mpeg2_metadata_filter(AVBSFContext *bsf, AVPacket *out)
 
     err = 0;
 fail:
-    ff_cbs_fragment_uninit(&ctx->cbc, frag);
+    ff_cbs_fragment_uninit(ctx->cbc, frag);
 
     av_packet_free(&in);
 
@@ -233,7 +233,7 @@ static int mpeg2_metadata_init(AVBSFContext *bsf)
         return err;
 
     if (bsf->par_in->extradata) {
-        err = ff_cbs_read_extradata(&ctx->cbc, frag, bsf->par_in);
+        err = ff_cbs_read_extradata(ctx->cbc, frag, bsf->par_in);
         if (err < 0) {
             av_log(bsf, AV_LOG_ERROR, "Failed to read extradata.\n");
             goto fail;
@@ -245,7 +245,7 @@ static int mpeg2_metadata_init(AVBSFContext *bsf)
             goto fail;
         }
 
-        err = ff_cbs_write_extradata(&ctx->cbc, bsf->par_out, frag);
+        err = ff_cbs_write_extradata(ctx->cbc, bsf->par_out, frag);
         if (err < 0) {
             av_log(bsf, AV_LOG_ERROR, "Failed to write extradata.\n");
             goto fail;
@@ -254,7 +254,7 @@ static int mpeg2_metadata_init(AVBSFContext *bsf)
 
     err = 0;
 fail:
-    ff_cbs_fragment_uninit(&ctx->cbc, frag);
+    ff_cbs_fragment_uninit(ctx->cbc, frag);
     return err;
 }
 
diff --git a/libavcodec/trace_headers_bsf.c b/libavcodec/trace_headers_bsf.c
index 2f1369e4d..9c97dd4ce 100644
--- a/libavcodec/trace_headers_bsf.c
+++ b/libavcodec/trace_headers_bsf.c
@@ -27,7 +27,7 @@
 
 
 typedef struct TraceHeadersContext {
-    CodedBitstreamContext cbc;
+    CodedBitstreamContext *cbc;
 } TraceHeadersContext;
 
 
@@ -40,21 +40,21 @@ static int trace_headers_init(AVBSFContext *bsf)
     if (err < 0)
         return err;
 
-    ctx->cbc.trace_enable = 1;
-    ctx->cbc.trace_level  = AV_LOG_INFO;
+    ctx->cbc->trace_enable = 1;
+    ctx->cbc->trace_level  = AV_LOG_INFO;
 
     if (bsf->par_in->extradata) {
         CodedBitstreamFragment ps;
 
         av_log(bsf, AV_LOG_INFO, "Extradata\n");
 
-        err = ff_cbs_read_extradata(&ctx->cbc, &ps, bsf->par_in);
+        err = ff_cbs_read_extradata(ctx->cbc, &ps, bsf->par_in);
         if (err < 0) {
             av_log(bsf, AV_LOG_ERROR, "Failed to read extradata.\n");
             return err;
         }
 
-        ff_cbs_fragment_uninit(&ctx->cbc, &ps);
+        ff_cbs_fragment_uninit(ctx->cbc, &ps);
     }
 
     return 0;
@@ -97,11 +97,11 @@ static int trace_headers(AVBSFContext *bsf, AVPacket *out)
 
     av_log(bsf, AV_LOG_INFO, "Packet: %d bytes%s.\n", in->size, tmp);
 
-    err = ff_cbs_read_packet(&ctx->cbc, &au, in);
+    err = ff_cbs_read_packet(ctx->cbc, &au, in);
     if (err < 0)
         return err;
 
-    ff_cbs_fragment_uninit(&ctx->cbc, &au);
+    ff_cbs_fragment_uninit(ctx->cbc, &au);
 
     av_packet_move_ref(out, in);
     av_packet_free(&in);
diff --git a/libavcodec/vaapi_encode_h264.c b/libavcodec/vaapi_encode_h264.c
index 3ff19d2c8..15bd3be28 100644
--- a/libavcodec/vaapi_encode_h264.c
+++ b/libavcodec/vaapi_encode_h264.c
@@ -78,7 +78,7 @@ typedef struct VAAPIEncodeH264Context {
     int cpb_delay;
     int dpb_delay;
 
-    CodedBitstreamContext cbc;
+    CodedBitstreamContext *cbc;
     CodedBitstreamFragment current_access_unit;
     int aud_needed;
     int sei_needed;
@@ -101,7 +101,7 @@ static int vaapi_encode_h264_write_access_unit(AVCodecContext *avctx,
     VAAPIEncodeH264Context *priv = ctx->priv_data;
     int err;
 
-    err = ff_cbs_write_fragment_data(&priv->cbc, au);
+    err = ff_cbs_write_fragment_data(priv->cbc, au);
     if (err < 0) {
         av_log(avctx, AV_LOG_ERROR, "Failed to write packed header.\n");
         return err;
@@ -129,7 +129,7 @@ static int vaapi_encode_h264_add_nal(AVCodecContext *avctx,
     H264RawNALUnitHeader *header = nal_unit;
     int err;
 
-    err = ff_cbs_insert_unit_content(&priv->cbc, au, -1,
+    err = ff_cbs_insert_unit_content(priv->cbc, au, -1,
                                      header->nal_unit_type, nal_unit);
     if (err < 0) {
         av_log(avctx, AV_LOG_ERROR, "Failed to add NAL unit: "
@@ -165,7 +165,7 @@ static int vaapi_encode_h264_write_sequence_header(AVCodecContext *avctx,
 
     err = vaapi_encode_h264_write_access_unit(avctx, data, data_len, au);
 fail:
-    ff_cbs_fragment_uninit(&priv->cbc, au);
+    ff_cbs_fragment_uninit(priv->cbc, au);
     return err;
 }
 
@@ -192,7 +192,7 @@ static int vaapi_encode_h264_write_slice_header(AVCodecContext *avctx,
 
     err = vaapi_encode_h264_write_access_unit(avctx, data, data_len, au);
 fail:
-    ff_cbs_fragment_uninit(&priv->cbc, au);
+    ff_cbs_fragment_uninit(priv->cbc, au);
     return err;
 }
 
@@ -250,7 +250,7 @@ static int vaapi_encode_h264_write_extra_header(AVCodecContext *avctx,
         if (err < 0)
             goto fail;
 
-        ff_cbs_fragment_uninit(&priv->cbc, au);
+        ff_cbs_fragment_uninit(priv->cbc, au);
 
         *type = VAEncPackedHeaderH264_SEI;
         return 0;
@@ -259,7 +259,7 @@ static int vaapi_encode_h264_write_extra_header(AVCodecContext *avctx,
     }
 
 fail:
-    ff_cbs_fragment_uninit(&priv->cbc, au);
+    ff_cbs_fragment_uninit(priv->cbc, au);
     return err;
 }
 
diff --git a/libavcodec/vaapi_encode_h265.c b/libavcodec/vaapi_encode_h265.c
index 477065e2c..7838d6444 100644
--- a/libavcodec/vaapi_encode_h265.c
+++ b/libavcodec/vaapi_encode_h265.c
@@ -55,7 +55,7 @@ typedef struct VAAPIEncodeH265Context {
     int slice_type;
     int pic_type;
 
-    CodedBitstreamContext cbc;
+    CodedBitstreamContext *cbc;
     CodedBitstreamFragment current_access_unit;
     int aud_needed;
 } VAAPIEncodeH265Context;
@@ -74,7 +74,7 @@ static int vaapi_encode_h265_write_access_unit(AVCodecContext *avctx,
     VAAPIEncodeH265Context *priv = ctx->priv_data;
     int err;
 
-    err = ff_cbs_write_fragment_data(&priv->cbc, au);
+    err = ff_cbs_write_fragment_data(priv->cbc, au);
     if (err < 0) {
         av_log(avctx, AV_LOG_ERROR, "Failed to write packed header.\n");
         return err;
@@ -102,7 +102,7 @@ static int vaapi_encode_h265_add_nal(AVCodecContext *avctx,
     H265RawNALUnitHeader *header = nal_unit;
     int err;
 
-    err = ff_cbs_insert_unit_content(&priv->cbc, au, -1,
+    err = ff_cbs_insert_unit_content(priv->cbc, au, -1,
                                      header->nal_unit_type, nal_unit);
     if (err < 0) {
         av_log(avctx, AV_LOG_ERROR, "Failed to add NAL unit: "
@@ -142,7 +142,7 @@ static int vaapi_encode_h265_write_sequence_header(AVCodecContext *avctx,
 
     err = vaapi_encode_h265_write_access_unit(avctx, data, data_len, au);
 fail:
-    ff_cbs_fragment_uninit(&priv->cbc, au);
+    ff_cbs_fragment_uninit(priv->cbc, au);
     return err;
 }
 
@@ -169,7 +169,7 @@ static int vaapi_encode_h265_write_slice_header(AVCodecContext *avctx,
 
     err = vaapi_encode_h265_write_access_unit(avctx, data, data_len, au);
 fail:
-    ff_cbs_fragment_uninit(&priv->cbc, au);
+    ff_cbs_fragment_uninit(priv->cbc, au);
     return err;
 }
 
diff --git a/libavcodec/vaapi_encode_mpeg2.c b/libavcodec/vaapi_encode_mpeg2.c
index 8b956eb3e..90fb0aedd 100644
--- a/libavcodec/vaapi_encode_mpeg2.c
+++ b/libavcodec/vaapi_encode_mpeg2.c
@@ -52,7 +52,7 @@ typedef struct VAAPIEncodeMPEG2Context {
     unsigned int f_code_horizontal;
     unsigned int f_code_vertical;
 
-    CodedBitstreamContext cbc;
+    CodedBitstreamContext *cbc;
     CodedBitstreamFragment current_fragment;
 } VAAPIEncodeMPEG2Context;
 
@@ -65,7 +65,7 @@ static int vaapi_encode_mpeg2_write_fragment(AVCodecContext *avctx,
     VAAPIEncodeMPEG2Context *priv = ctx->priv_data;
     int err;
 
-    err = ff_cbs_write_fragment_data(&priv->cbc, frag);
+    err = ff_cbs_write_fragment_data(priv->cbc, frag);
     if (err < 0) {
         av_log(avctx, AV_LOG_ERROR, "Failed to write packed header.\n");
         return err;
@@ -92,7 +92,7 @@ static int vaapi_encode_mpeg2_add_header(AVCodecContext *avctx,
     VAAPIEncodeMPEG2Context *priv = ctx->priv_data;
     int err;
 
-    err = ff_cbs_insert_unit_content(&priv->cbc, frag, -1, type, header);
+    err = ff_cbs_insert_unit_content(priv->cbc, frag, -1, type, header);
     if (err < 0) {
         av_log(avctx, AV_LOG_ERROR, "Failed to add header: "
                "type = %d.\n", type);
@@ -132,7 +132,7 @@ static int vaapi_encode_mpeg2_write_sequence_header(AVCodecContext *avctx,
 
     err = vaapi_encode_mpeg2_write_fragment(avctx, data, data_len, frag);
 fail:
-    ff_cbs_fragment_uninit(&priv->cbc, frag);
+    ff_cbs_fragment_uninit(priv->cbc, frag);
     return 0;
 }
 
@@ -157,7 +157,7 @@ static int vaapi_encode_mpeg2_write_picture_header(AVCodecContext *avctx,
 
     err = vaapi_encode_mpeg2_write_fragment(avctx, data, data_len, frag);
 fail:
-    ff_cbs_fragment_uninit(&priv->cbc, frag);
+    ff_cbs_fragment_uninit(priv->cbc, frag);
     return 0;
 }
 
-- 
2.11.0



More information about the libav-devel mailing list