[FFmpeg-devel] [PATCH] matroskadec: cosmetics: Rearrange checks for projection-depedendent properties

Vittorio Giovara vittorio.giovara at gmail.com
Wed Mar 8 00:35:18 EET 2017


---
... and this chunk for matroska too.
Vittorio

 libavformat/matroskadec.c | 21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index fdc3f268aa..fdb23ab05e 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1930,9 +1930,7 @@ static int mkv_parse_video_projection(AVStream *st, const MatroskaTrack *track)
 
     switch (track->video.projection.type) {
     case MATROSKA_VIDEO_PROJECTION_TYPE_EQUIRECTANGULAR:
-        if (track->video.projection.private.size == 0)
-            projection = AV_SPHERICAL_EQUIRECTANGULAR;
-        else if (track->video.projection.private.size == 20) {
+        if (track->video.projection.private.size == 20) {
             t = bytestream2_get_be32(&gb);
             b = bytestream2_get_be32(&gb);
             l = bytestream2_get_be32(&gb);
@@ -1946,15 +1944,15 @@ static int mkv_parse_video_projection(AVStream *st, const MatroskaTrack *track)
                        l, t, r, b);
                 return AVERROR_INVALIDDATA;
             }
-
-            if (l || t || r || b)
-                projection = AV_SPHERICAL_EQUIRECTANGULAR_TILE;
-            else
-                projection = AV_SPHERICAL_EQUIRECTANGULAR;
-        } else {
+        } else if (track->video.projection.private.size != 0) {
             av_log(NULL, AV_LOG_ERROR, "Unknown spherical metadata\n");
             return AVERROR_INVALIDDATA;
         }
+
+        if (l || t || r || b)
+            projection = AV_SPHERICAL_EQUIRECTANGULAR_TILE;
+        else
+            projection = AV_SPHERICAL_EQUIRECTANGULAR;
         break;
     case MATROSKA_VIDEO_PROJECTION_TYPE_CUBEMAP:
         if (track->video.projection.private.size < 4) {
@@ -1962,13 +1960,12 @@ static int mkv_parse_video_projection(AVStream *st, const MatroskaTrack *track)
             return AVERROR_INVALIDDATA;
         } else if (track->video.projection.private.size == 12) {
             uint32_t layout = bytestream2_get_be32(&gb);
-            if (layout == 0) {
-                projection = AV_SPHERICAL_CUBEMAP;
-            } else {
+            if (layout) {
                 av_log(NULL, AV_LOG_WARNING,
                        "Unknown spherical cubemap layout %"PRIu32"\n", layout);
                 return 0;
             }
+            projection = AV_SPHERICAL_CUBEMAP;
             padding = bytestream2_get_be32(&gb);
         } else {
             av_log(NULL, AV_LOG_ERROR, "Unknown spherical metadata\n");
-- 
2.12.0



More information about the ffmpeg-devel mailing list