diff mbox series

[FFmpeg-devel,1/2] mov: Pick up "com.apple.quicktime.artwork" as cover art

Message ID 20210401115107.53832-1-martin@martin.st
State New
Headers show
Series [FFmpeg-devel,1/2] mov: Pick up "com.apple.quicktime.artwork" as cover art
Related show

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

Martin Storsjö April 1, 2021, 11:51 a.m. UTC
---
 libavformat/mov.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)
diff mbox series

Patch

diff --git a/libavformat/mov.c b/libavformat/mov.c
index a1411264ec..162772f499 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -410,7 +410,18 @@  retry:
             str_size = data_size - 16;
             atom.size -= 16;
 
-            if (atom.type == MKTAG('c', 'o', 'v', 'r')) {
+            if (!key && c->found_hdlr_mdta && c->meta_keys) {
+                uint32_t index = AV_RB32(&atom.type);
+                if (index < c->meta_keys_count && index > 0) {
+                    key = c->meta_keys[index];
+                } else if (atom.type != MKTAG('c', 'o', 'v', 'r')) {
+                    av_log(c->fc, AV_LOG_WARNING,
+                           "The index of 'data' is out of range: %"PRId32" < 1 or >= %d.\n",
+                           index, c->meta_keys_count);
+                }
+            }
+            if (atom.type == MKTAG('c', 'o', 'v', 'r') ||
+                (key && !strcmp(key, "com.apple.quicktime.artwork"))) {
                 int ret = mov_read_covr(c, pb, data_type, str_size);
                 if (ret < 0) {
                     av_log(c->fc, AV_LOG_ERROR, "Error parsing cover art.\n");
@@ -420,15 +431,6 @@  retry:
                 if (atom.size > 8)
                     goto retry;
                 return ret;
-            } else if (!key && c->found_hdlr_mdta && c->meta_keys) {
-                uint32_t index = AV_RB32(&atom.type);
-                if (index < c->meta_keys_count && index > 0) {
-                    key = c->meta_keys[index];
-                } else {
-                    av_log(c->fc, AV_LOG_WARNING,
-                           "The index of 'data' is out of range: %"PRId32" < 1 or >= %d.\n",
-                           index, c->meta_keys_count);
-                }
             }
         } else return 0;
     } else if (atom.size > 4 && key && !c->itunes_metadata && !raw) {