cbs: Allocate the context inside the init function
... instead of making callers allocate it themselves. This is more consistent with other APIs in libav.
This commit is contained in:
parent
cc1c94dacd
commit
2651352988
@ -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,
|
||||
|
@ -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);
|
||||
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
@ -104,7 +104,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;
|
||||
@ -132,7 +132,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: "
|
||||
@ -168,7 +168,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;
|
||||
}
|
||||
|
||||
@ -195,7 +195,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;
|
||||
}
|
||||
|
||||
@ -255,7 +255,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 = VAEncPackedHeaderRawData;
|
||||
return 0;
|
||||
@ -277,7 +277,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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
@ -76,7 +76,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;
|
||||
@ -104,7 +104,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: "
|
||||
@ -144,7 +144,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;
|
||||
}
|
||||
|
||||
@ -171,7 +171,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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user