summaryrefslogtreecommitdiff
path: root/libavdevice/lavfi.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-08-30 07:02:16 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-09-06 21:45:41 +0200
commit26469aebd39e2cfba8c5c1918ac8d19af4d8ee18 (patch)
tree15a6814cd1c36685596aa1f3e86866e52087d491 /libavdevice/lavfi.c
parent7ad085b2c4d0ac27bc9e425fb81f012c74e5fbca (diff)
downloadffmpeg-26469aebd39e2cfba8c5c1918ac8d19af4d8ee18.tar.gz
avdevice/lavfi: Use av_packet_pack_dictionary() to pack dictionary
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavdevice/lavfi.c')
-rw-r--r--libavdevice/lavfi.c25
1 files changed, 8 insertions, 17 deletions
diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c
index 72ec1bb9b7..c04e0b147a 100644
--- a/libavdevice/lavfi.c
+++ b/libavdevice/lavfi.c
@@ -444,25 +444,16 @@ static int lavfi_read_packet(AVFormatContext *avctx, AVPacket *pkt)
frame_metadata = frame->metadata;
if (frame_metadata) {
- uint8_t *metadata;
- AVDictionaryEntry *e = NULL;
- AVBPrint meta_buf;
-
- av_bprint_init(&meta_buf, 0, AV_BPRINT_SIZE_UNLIMITED);
- while ((e = av_dict_get(frame_metadata, "", e, AV_DICT_IGNORE_SUFFIX))) {
- av_bprintf(&meta_buf, "%s", e->key);
- av_bprint_chars(&meta_buf, '\0', 1);
- av_bprintf(&meta_buf, "%s", e->value);
- av_bprint_chars(&meta_buf, '\0', 1);
- }
- if (!av_bprint_is_complete(&meta_buf) ||
- !(metadata = av_packet_new_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA,
- meta_buf.len))) {
- av_bprint_finalize(&meta_buf, NULL);
+ int size;
+ uint8_t *metadata = av_packet_pack_dictionary(frame_metadata, &size);
+
+ if (!metadata)
return AVERROR(ENOMEM);
+ if ((ret = av_packet_add_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA,
+ metadata, size)) < 0) {
+ av_freep(&metadata);
+ return ret;
}
- memcpy(metadata, meta_buf.str, meta_buf.len);
- av_bprint_finalize(&meta_buf, NULL);
}
if ((ret = create_subcc_packet(avctx, frame, min_pts_sink_idx)) < 0) {