ffmpeg | branch: master | Andreas Rheinhardt <[email protected]> | Sun Aug 30 07:02:16 2020 +0200| [26469aebd39e2cfba8c5c1918ac8d19af4d8ee18] | committer: Andreas Rheinhardt
avdevice/lavfi: Use av_packet_pack_dictionary() to pack dictionary Signed-off-by: Andreas Rheinhardt <[email protected]> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=26469aebd39e2cfba8c5c1918ac8d19af4d8ee18 --- libavdevice/lavfi.c | 25 ++++++++----------------- 1 file 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) { _______________________________________________ ffmpeg-cvslog mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
