aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-05-23 13:02:54 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-05-28 12:03:28 +0200
commit9fee37c56e60f9e24bf921188519a062de6185a1 (patch)
treef96e4919f74cb0339907bdbcef8e4a80815377db
parentbe22f97332a530a42f4548aab1258d52fb17bb77 (diff)
downloadffmpeg-9fee37c56e60f9e24bf921188519a062de6185a1.tar.gz
avformat/img2dec: Avoid duplicating buffer when adding side-data
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-rw-r--r--libavformat/img2dec.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/libavformat/img2dec.c b/libavformat/img2dec.c
index 40f3e3d499..ee7ceed08f 100644
--- a/libavformat/img2dec.c
+++ b/libavformat/img2dec.c
@@ -379,8 +379,7 @@ int ff_img_read_header(AVFormatContext *s1)
* as a dictionary, so it can be used by filters like 'drawtext'.
*/
static int add_filename_as_pkt_side_data(char *filename, AVPacket *pkt) {
- uint8_t* metadata;
- int metadata_len;
+ int metadata_len, ret;
AVDictionary *d = NULL;
char *packed_metadata = NULL;
@@ -391,13 +390,12 @@ static int add_filename_as_pkt_side_data(char *filename, AVPacket *pkt) {
av_dict_free(&d);
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);
-
return 0;
}