diff mbox

[FFmpeg-devel] Making xmp data process faster

Message ID 20161108061504.48675-1-mengchen.mc@alibaba-inc.com
State New, archived
Headers show

Commit Message

=?GBK?B?w8+zvSjj1bfqKQ==?= Nov. 8, 2016, 6:15 a.m. UTC
---
 libavformat/mov.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)
diff mbox

Patch

diff --git a/libavformat/mov.c b/libavformat/mov.c
index f06de06..341d22d 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;
+            }
+        } else {
+            // skip all uuid atoms, which makes it fast for long uuid-xmp file
+            ret = avio_seek(pb, len, SEEK_CUR);
+        }
         if (ret < 0) {
             av_free(buffer);
             return ret;
-        } else if (ret != len) {
-            av_free(buffer);
-            return AVERROR_INVALIDDATA;
         }
         if (c->export_xmp) {
             buffer[len] = '\0';