On Sat, May 4, 2019 at 2:15 PM Luca Barbato <[email protected]> wrote: > > From: Mark Thompson <[email protected]> > > Make this clear in the documentation and add some asserts to ensure > that it is always true. > --- > libavcodec/cbs.c | 19 ++++++++++++------- > libavcodec/cbs.h | 10 ++++++---- > 2 files changed, 18 insertions(+), 11 deletions(-) > > diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c > index dc8d94eedc..907471956b 100644 > --- a/libavcodec/cbs.c > +++ b/libavcodec/cbs.c > @@ -140,26 +140,30 @@ static int > cbs_read_fragment_content(CodedBitstreamContext *ctx, > int err, i, j; > > for (i = 0; i < frag->nb_units; i++) { > + CodedBitstreamUnit *unit = &frag->units[i]; > + > if (ctx->decompose_unit_types) { > for (j = 0; j < ctx->nb_decompose_unit_types; j++) { > - if (ctx->decompose_unit_types[j] == frag->units[i].type) > + if (ctx->decompose_unit_types[j] == unit->type) > break; > } > if (j >= ctx->nb_decompose_unit_types) > continue; > } > > - av_buffer_unref(&frag->units[i].content_ref); > - frag->units[i].content = NULL; > + av_buffer_unref(&unit->content_ref); > + unit->content = NULL; > + > + av_assert0(unit->data && unit->data_ref); > > - err = ctx->codec->read_unit(ctx, &frag->units[i]); > + err = ctx->codec->read_unit(ctx, unit); > if (err == AVERROR(ENOSYS)) { > av_log(ctx->log_ctx, AV_LOG_VERBOSE, > "Decomposition unimplemented for unit %d " > - "(type %"PRIu32").\n", i, frag->units[i].type); > + "(type %"PRIu32").\n", i, unit->type); > } else if (err < 0) { > av_log(ctx->log_ctx, AV_LOG_ERROR, "Failed to read unit %d " > - "(type %"PRIu32").\n", i, frag->units[i].type); > + "(type %"PRIu32").\n", i, unit->type); > return err; > } > } > @@ -278,6 +282,7 @@ int ff_cbs_write_fragment_data(CodedBitstreamContext *ctx, > "(type %"PRIu32").\n", i, unit->type); > return err; > } > + av_assert0(unit->data && unit->data_ref); > } > > av_buffer_unref(&frag->data_ref); > @@ -288,6 +293,7 @@ int ff_cbs_write_fragment_data(CodedBitstreamContext *ctx, > av_log(ctx->log_ctx, AV_LOG_ERROR, "Failed to assemble fragment.\n"); > return err; > } > + av_assert0(frag->data && frag->data_ref); > > return 0; > } > @@ -328,7 +334,6 @@ int ff_cbs_write_packet(CodedBitstreamContext *ctx, > if (err < 0) > return err; > > - av_assert0(frag->data_ref); > buf = av_buffer_ref(frag->data_ref); > if (!buf) > return AVERROR(ENOMEM); > diff --git a/libavcodec/cbs.h b/libavcodec/cbs.h > index 1f26be7b36..c38edc539a 100644 > --- a/libavcodec/cbs.h > +++ b/libavcodec/cbs.h > @@ -84,8 +84,9 @@ typedef struct CodedBitstreamUnit { > */ > size_t data_bit_padding; > /** > - * If data is reference counted, a reference to the buffer containing > - * data. Null if data is not reference counted. > + * A reference to the buffer containing data. > + * > + * Must be set if data is not NULL. > */ > AVBufferRef *data_ref; > > @@ -130,8 +131,9 @@ typedef struct CodedBitstreamFragment { > */ > size_t data_bit_padding; > /** > - * If data is reference counted, a reference to the buffer containing > - * data. Null if data is not reference counted. > + * A reference to the buffer containing data. > + * > + * Must be set if data is not NULL. > */ > AVBufferRef *data_ref; > > -- > 2.12.2 > > _______________________________________________ > libav-devel mailing list > [email protected] > https://lists.libav.org/mailman/listinfo/libav-devel
OK _______________________________________________ libav-devel mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-devel
