[FFmpeg-devel] [PATCH] Making process of uuid-xmp faster.
Chen Meng
mengchen.mc at alibaba-inc.com
Tue Nov 8 17:04:35 EET 2016
From baee22d71825128f74beb15122cd786f8d89f13f Mon Sep 17 00:00:00 2001
From: Chen Meng <mengchen.mc at alibaba-inc.com>
Date: Tue, 8 Nov 2016 22:58:44 +0800
Subject: [PATCH] Take the error code in return.
---
libavformat/mov.c | 30 ++++++++++++++----------------
1 file changed, 14 insertions(+), 16 deletions(-)
diff --git a/libavformat/mov.c b/libavformat/mov.c
index 388cd1f..c86252c 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -4529,30 +4529,28 @@ static int mov_read_uuid(MOVContext *c, AVIOContext *pb, MOVAtom atom)
uint8_t *buffer;
size_t len = atom.size - sizeof(uuid);
- buffer = av_mallocz(len + 1);
- if (!buffer) {
- return AVERROR(ENOMEM);
- }
-
if (c->export_xmp) {
+ buffer = av_mallocz(len + 1);
+ if (!buffer) {
+ return AVERROR(ENOMEM);
+ }
ret = avio_read(pb, buffer, len);
- if (ret != len) {
+ if (ret < 0) {
+ av_free(buffer);
+ return ret;
+ } else if (ret != len) {
av_free(buffer);
return AVERROR_INVALIDDATA;
}
- } else {
- // skip all uuid atom, which makes it fast for long uuid-xmp file
- ret = avio_seek(pb, len, SEEK_CUR);
- }
- if (ret < 0) {
- av_free(buffer);
- return ret;
- }
- if (c->export_xmp) {
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_seek(pb, len, SEEK_CUR);
+ if (ret < 0)
+ return ret;
}
- av_free(buffer);
}
return 0;
}
--
2.10.2
------------------------------------------------------------------From:Michael Niedermayer <michael at niedermayer.cc>Time:2016 Nov 8 (Tue) 20:10To:FFmpeg development discussions and patches <ffmpeg-devel at ffmpeg.org>Subject:Re: [FFmpeg-devel] [PATCH] Making process of uuid-xmp faster.
On Tue, Nov 08, 2016 at 04:34:13PM +0800, Chen Meng wrote:
> ---
> libavformat/mov.c | 15 +++++++++++----
> 1 file changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index f06de06..388cd1f 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -4533,13 +4533,20 @@ static int mov_read_uuid(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> if (!buffer) {
> return AVERROR(ENOMEM);
> }
> - ret = avio_read(pb, buffer, len);
> +
> + if (c->export_xmp) {
> + ret = avio_read(pb, buffer, len);
> + if (ret != len) {
> + av_free(buffer);
> + return AVERROR_INVALIDDATA;
> + }
this looses the error code in ret
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Its not that you shouldnt use gotos but rather that you should write
readable code and code with gotos often but not always is less readable
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel at ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
More information about the ffmpeg-devel
mailing list