return AVERROR(ENOMEM);
ctx->log_ctx = log_ctx;
- ctx->codec = type;
+ ctx->codec = type; /* Must be before any error */
if (type->priv_data_size) {
ctx->priv_data = av_mallocz(ctx->codec->priv_data_size);
void ff_cbs_flush(CodedBitstreamContext *ctx)
{
- if (ctx->codec && ctx->codec->flush)
+ if (ctx->codec->flush)
ctx->codec->flush(ctx);
}
if (!ctx)
return;
- if (ctx->codec && ctx->codec->close)
+ if (ctx->codec->close)
ctx->codec->close(ctx);
av_freep(&ctx->write_buffer);
flush_put_bits(&pbc);
- ret = ff_cbs_alloc_unit_data(unit, put_bits_count(&pbc) / 8);
+ ret = ff_cbs_alloc_unit_data(unit, put_bytes_output(&pbc));
if (ret < 0)
return ret;