matroskadec: cosmetics: Rearrange checks for projection-depedendent properties

This commit is contained in:
Vittorio Giovara 2017-03-07 17:34:32 -05:00
parent ac8c72f8f1
commit 9ae3506696
1 changed files with 9 additions and 12 deletions

View File

@ -1930,9 +1930,7 @@ static int mkv_parse_video_projection(AVStream *st, const MatroskaTrack *track)
switch (track->video.projection.type) { switch (track->video.projection.type) {
case MATROSKA_VIDEO_PROJECTION_TYPE_EQUIRECTANGULAR: case MATROSKA_VIDEO_PROJECTION_TYPE_EQUIRECTANGULAR:
if (track->video.projection.private.size == 0) if (track->video.projection.private.size == 20) {
projection = AV_SPHERICAL_EQUIRECTANGULAR;
else if (track->video.projection.private.size == 20) {
t = bytestream2_get_be32(&gb); t = bytestream2_get_be32(&gb);
b = bytestream2_get_be32(&gb); b = bytestream2_get_be32(&gb);
l = 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); l, t, r, b);
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
} else if (track->video.projection.private.size != 0) {
if (l || t || r || b)
projection = AV_SPHERICAL_EQUIRECTANGULAR_TILE;
else
projection = AV_SPHERICAL_EQUIRECTANGULAR;
} else {
av_log(NULL, AV_LOG_ERROR, "Unknown spherical metadata\n"); av_log(NULL, AV_LOG_ERROR, "Unknown spherical metadata\n");
return AVERROR_INVALIDDATA; return AVERROR_INVALIDDATA;
} }
if (l || t || r || b)
projection = AV_SPHERICAL_EQUIRECTANGULAR_TILE;
else
projection = AV_SPHERICAL_EQUIRECTANGULAR;
break; break;
case MATROSKA_VIDEO_PROJECTION_TYPE_CUBEMAP: case MATROSKA_VIDEO_PROJECTION_TYPE_CUBEMAP:
if (track->video.projection.private.size < 4) { 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; return AVERROR_INVALIDDATA;
} else if (track->video.projection.private.size == 12) { } else if (track->video.projection.private.size == 12) {
uint32_t layout = bytestream2_get_be32(&gb); uint32_t layout = bytestream2_get_be32(&gb);
if (layout == 0) { if (layout) {
projection = AV_SPHERICAL_CUBEMAP;
} else {
av_log(NULL, AV_LOG_WARNING, av_log(NULL, AV_LOG_WARNING,
"Unknown spherical cubemap layout %"PRIu32"\n", layout); "Unknown spherical cubemap layout %"PRIu32"\n", layout);
return 0; return 0;
} }
projection = AV_SPHERICAL_CUBEMAP;
padding = bytestream2_get_be32(&gb); padding = bytestream2_get_be32(&gb);
} else { } else {
av_log(NULL, AV_LOG_ERROR, "Unknown spherical metadata\n"); av_log(NULL, AV_LOG_ERROR, "Unknown spherical metadata\n");