avcodec/cbs: Make ff_cbs_insert_unit_data() always append the new unit

All split functions (the only users of this function) only
append units.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt 2022-02-04 13:58:36 +01:00
parent f183ae787a
commit 66d7a21132
7 changed files with 23 additions and 16 deletions

View File

@ -789,18 +789,16 @@ int ff_cbs_insert_unit_content(CodedBitstreamFragment *frag,
return 0; return 0;
} }
int ff_cbs_insert_unit_data(CodedBitstreamFragment *frag, static int cbs_insert_unit_data(CodedBitstreamFragment *frag,
int position, CodedBitstreamUnitType type,
CodedBitstreamUnitType type, uint8_t *data, size_t data_size,
uint8_t *data, size_t data_size, AVBufferRef *data_buf,
AVBufferRef *data_buf) int position)
{ {
CodedBitstreamUnit *unit; CodedBitstreamUnit *unit;
AVBufferRef *data_ref; AVBufferRef *data_ref;
int err; int err;
if (position == -1)
position = frag->nb_units;
av_assert0(position >= 0 && position <= frag->nb_units); av_assert0(position >= 0 && position <= frag->nb_units);
if (data_buf) if (data_buf)
@ -828,6 +826,16 @@ int ff_cbs_insert_unit_data(CodedBitstreamFragment *frag,
return 0; return 0;
} }
int ff_cbs_append_unit_data(CodedBitstreamFragment *frag,
CodedBitstreamUnitType type,
uint8_t *data, size_t data_size,
AVBufferRef *data_buf)
{
return cbs_insert_unit_data(frag, type,
data, data_size, data_buf,
frag->nb_units);
}
void ff_cbs_delete_unit(CodedBitstreamFragment *frag, void ff_cbs_delete_unit(CodedBitstreamFragment *frag,
int position) int position)
{ {

View File

@ -393,14 +393,13 @@ int ff_cbs_insert_unit_content(CodedBitstreamFragment *frag,
AVBufferRef *content_buf); AVBufferRef *content_buf);
/** /**
* Insert a new unit into a fragment with the given data bitstream. * Add a new unit to a fragment with the given data bitstream.
* *
* If data_buf is not supplied then data must have been allocated with * If data_buf is not supplied then data must have been allocated with
* av_malloc() and will on success become owned by the unit after this * av_malloc() and will on success become owned by the unit after this
* call or freed on error. * call or freed on error.
*/ */
int ff_cbs_insert_unit_data(CodedBitstreamFragment *frag, int ff_cbs_append_unit_data(CodedBitstreamFragment *frag,
int position,
CodedBitstreamUnitType type, CodedBitstreamUnitType type,
uint8_t *data, size_t data_size, uint8_t *data, size_t data_size,
AVBufferRef *data_buf); AVBufferRef *data_buf);

View File

@ -828,7 +828,7 @@ static int cbs_av1_split_fragment(CodedBitstreamContext *ctx,
goto fail; goto fail;
} }
err = ff_cbs_insert_unit_data(frag, -1, header.obu_type, err = ff_cbs_append_unit_data(frag, header.obu_type,
data, obu_length, frag->data_ref); data, obu_length, frag->data_ref);
if (err < 0) if (err < 0)
goto fail; goto fail;

View File

@ -493,7 +493,7 @@ static int cbs_h2645_fragment_add_nals(CodedBitstreamContext *ctx,
ref = (nal->data == nal->raw_data) ? frag->data_ref ref = (nal->data == nal->raw_data) ? frag->data_ref
: packet->rbsp.rbsp_buffer_ref; : packet->rbsp.rbsp_buffer_ref;
err = ff_cbs_insert_unit_data(frag, -1, nal->type, err = ff_cbs_append_unit_data(frag, nal->type,
(uint8_t*)nal->data, size, ref); (uint8_t*)nal->data, size, ref);
if (err < 0) if (err < 0)
return err; return err;

View File

@ -226,7 +226,7 @@ static int cbs_jpeg_split_fragment(CodedBitstreamContext *ctx,
data_ref = frag->data_ref; data_ref = frag->data_ref;
} }
err = ff_cbs_insert_unit_data(frag, -1, marker, err = ff_cbs_append_unit_data(frag, marker,
data, data_size, data_ref); data, data_size, data_ref);
if (err < 0) if (err < 0)
return err; return err;

View File

@ -186,7 +186,7 @@ static int cbs_mpeg2_split_fragment(CodedBitstreamContext *ctx,
final = 1; final = 1;
} }
err = ff_cbs_insert_unit_data(frag, -1, unit_type, (uint8_t*)start, err = ff_cbs_append_unit_data(frag, unit_type, (uint8_t*)start,
unit_size, frag->data_ref); unit_size, frag->data_ref);
if (err < 0) if (err < 0)
return err; return err;

View File

@ -451,7 +451,7 @@ static int cbs_vp9_split_fragment(CodedBitstreamContext *ctx,
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
err = ff_cbs_insert_unit_data(frag, -1, 0, err = ff_cbs_append_unit_data(frag, 0,
frag->data + pos, frag->data + pos,
sfi.frame_sizes[i], sfi.frame_sizes[i],
frag->data_ref); frag->data_ref);
@ -469,7 +469,7 @@ static int cbs_vp9_split_fragment(CodedBitstreamContext *ctx,
return 0; return 0;
} else { } else {
err = ff_cbs_insert_unit_data(frag, -1, 0, err = ff_cbs_append_unit_data(frag, 0,
frag->data, frag->data_size, frag->data, frag->data_size,
frag->data_ref); frag->data_ref);
if (err < 0) if (err < 0)