[FFmpeg-devel] [PATCH] Make the process of uuid-xmp atom faster.
Steven Liu
lingjiujianke at gmail.com
Fri Nov 11 05:09:26 EET 2016
2016-11-11 10:36 GMT+08:00 Chen Meng <mengchen.mc at alibaba-inc.com>:
> ---
> libavformat/mov.c | 32 ++++++++++++++++++--------------
> 1 file changed, 18 insertions(+), 14 deletions(-)
>
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index 9ec7d03..436c234 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -4549,24 +4549,28 @@ static int mov_read_uuid(MOVContext *c,
> AVIOContext *pb, MOVAtom atom)
> } else if (!memcmp(uuid, uuid_xmp, sizeof(uuid))) {
> uint8_t *buffer;
> size_t len = atom.size - sizeof(uuid);
> -
> - buffer = av_mallocz(len + 1);
> - if (!buffer) {
> - return AVERROR(ENOMEM);
> - }
> - ret = avio_read(pb, buffer, len);
> - if (ret < 0) {
> - av_free(buffer);
> - return ret;
> - } else if (ret != len) {
> - av_free(buffer);
> - return AVERROR_INVALIDDATA;
> - }
> if (c->export_xmp) {
> + buffer = av_mallocz(len + 1);
> + if (!buffer) {
> + return AVERROR(ENOMEM);
> + }
> + ret = avio_read(pb, buffer, len);
> + if (ret < 0) {
> + av_free(buffer);
> + return ret;
> + } else if (ret != len) {
> + av_free(buffer);
> + return AVERROR_INVALIDDATA;
> + }
> buffer[len] = '\0';
> av_dict_set(&c->fc->metadata, "xmp", buffer, 0);
> + av_free(buffer);
> + } else {
> + // skip all uuid atom, which makes it fast for long uuid-xmp
> file
> + ret = avio_skip(pb, len);
> + if (ret < 0)
> + return ret;
> }
> - av_free(buffer);
> }
> return 0;
> }
> --
> 2.10.2
>
> LGTM, Except Submitter name used GBK at
https://patchwork.ffmpeg.org/project/ffmpeg/list/
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
More information about the ffmpeg-devel
mailing list