avcodec/utils: use the unpack_dictionary function

Signed-off-by: Ben Boeckel <mathstuf@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Ben Boeckel 2013-11-17 20:36:30 -05:00 committed by Michael Niedermayer
parent fcb1b0078d
commit 34b7c82dd3

View File

@ -2012,32 +2012,15 @@ fail:
static int add_metadata_from_side_data(AVCodecContext *avctx, AVFrame *frame)
{
int size, ret = 0;
int size;
const uint8_t *side_metadata;
const uint8_t *end;
AVDictionary **frame_md = avpriv_frame_get_metadatap(frame);
side_metadata = av_packet_get_side_data(avctx->internal->pkt,
AV_PKT_DATA_STRINGS_METADATA, &size);
if (!side_metadata)
goto end;
end = side_metadata + size;
if (size && end[-1])
return AVERROR_INVALIDDATA;
while (side_metadata < end) {
const uint8_t *key = side_metadata;
const uint8_t *val = side_metadata + strlen(key) + 1;
int ret;
if (val >= end)
return AVERROR_INVALIDDATA;
ret = av_dict_set(avpriv_frame_get_metadatap(frame), key, val, 0);
if (ret < 0)
break;
side_metadata = val + strlen(val) + 1;
}
end:
return ret;
return av_packet_unpack_dictionary(side_metadata, size, frame_md);
}
int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,