Andreas Rheinhardt: > Given that AV1 only has exactly one sequence header, it is unnecessary > to copy the content of said sequence header into an intermediate dynamic > buffer; instead the sequence header can be copied from where it is in > the input buffer. > > Signed-off-by: Andreas Rheinhardt <[email protected]> > --- > libavformat/av1.c | 18 +++++++----------- > 1 file changed, 7 insertions(+), 11 deletions(-) > > diff --git a/libavformat/av1.c b/libavformat/av1.c > index 1e7a67d2f2..0cbffb1fd8 100644 > --- a/libavformat/av1.c > +++ b/libavformat/av1.c > @@ -363,11 +363,11 @@ int ff_av1_parse_seq_header(AV1SequenceParameters *seq, > const uint8_t *buf, int > > int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size) > { > - AVIOContext *seq_pb = NULL, *meta_pb = NULL; > + AVIOContext *meta_pb; > AV1SequenceParameters seq_params; > PutBitContext pbc; > - uint8_t header[4]; > - uint8_t *seq, *meta; > + uint8_t header[4], *meta; > + const uint8_t *seq; > int64_t obu_size; > int start_pos, type, temporal_id, spatial_id; > int ret, nb_seq = 0, seq_size, meta_size; > @@ -375,12 +375,9 @@ int ff_isom_write_av1c(AVIOContext *pb, const uint8_t > *buf, int size) > if (size <= 0) > return AVERROR_INVALIDDATA; > > - ret = avio_open_dyn_buf(&seq_pb); > - if (ret < 0) > - return ret; > ret = avio_open_dyn_buf(&meta_pb); > if (ret < 0) > - goto fail; > + return ret; > > while (size > 0) { > int len = parse_obu_header(buf, size, &obu_size, &start_pos, > @@ -401,7 +398,8 @@ int ff_isom_write_av1c(AVIOContext *pb, const uint8_t > *buf, int size) > if (ret < 0) > goto fail; > > - avio_write(seq_pb, buf, len); > + seq = buf; > + seq_size = len; > break; > case AV1_OBU_METADATA: > if (!obu_size) { > @@ -417,8 +415,7 @@ int ff_isom_write_av1c(AVIOContext *pb, const uint8_t > *buf, int size) > buf += len; > } > > - seq_size = avio_get_dyn_buf(seq_pb, &seq); > - if (!seq_size) { > + if (!nb_seq) { > ret = AVERROR_INVALIDDATA; > goto fail; > } > @@ -447,7 +444,6 @@ int ff_isom_write_av1c(AVIOContext *pb, const uint8_t > *buf, int size) > avio_write(pb, meta, meta_size); > > fail: > - ffio_free_dyn_buf(&seq_pb); > ffio_free_dyn_buf(&meta_pb); > > return ret; > Will apply tomorrow unless there are objections.
- Andreas _______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
