@@ -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';