diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-05-23 12:57:29 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-05-28 12:01:22 +0200 |
commit | be22f97332a530a42f4548aab1258d52fb17bb77 (patch) | |
tree | d980baeabe075451d62f0282ff5429d2225d4922 | |
parent | ed9bbcff6fd5579d9633eccbc9a28cb2d3892f85 (diff) | |
download | ffmpeg-be22f97332a530a42f4548aab1258d52fb17bb77.tar.gz |
avformat/concatdec: Avoid duplicating buffer when adding side-data
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-rw-r--r-- | libavformat/concatdec.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index 2173911ce4..4b56b61404 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -626,17 +626,16 @@ static int concat_read_packet(AVFormatContext *avf, AVPacket *pkt) av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base)); if (cat->cur_file->metadata) { - uint8_t* metadata; int metadata_len; char* packed_metadata = av_packet_pack_dictionary(cat->cur_file->metadata, &metadata_len); if (!packed_metadata) return AVERROR(ENOMEM); - if (!(metadata = av_packet_new_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA, metadata_len))) { + ret = av_packet_add_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA, + packed_metadata, metadata_len); + if (ret < 0) { av_freep(&packed_metadata); - return AVERROR(ENOMEM); + return ret; } - memcpy(metadata, packed_metadata, metadata_len); - av_freep(&packed_metadata); } if (cat->cur_file->duration == AV_NOPTS_VALUE && st->cur_dts != AV_NOPTS_VALUE) { @@ -647,7 +646,7 @@ static int concat_read_packet(AVFormatContext *avf, AVPacket *pkt) } pkt->stream_index = cs->out_stream_index; - return ret; + return 0; } static void rescale_interval(AVRational tb_in, AVRational tb_out, |