mov: Export bounds and padding from spherical metadata

Update the fate test as needed.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
pull/272/head
Vittorio Giovara 8 years ago
parent 6bce6aa17d
commit a825980f9f
  1. 27
      libavformat/mov.c
  2. 2
      libavformat/version.h
  3. 2
      tests/fate/mov.mak
  4. 6
      tests/ref/fate/mov-spherical

@ -3237,6 +3237,8 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom)
MOVStreamContext *sc; MOVStreamContext *sc;
int size, version, layout; int size, version, layout;
int32_t yaw, pitch, roll; int32_t yaw, pitch, roll;
size_t l = 0, t = 0, r = 0, b = 0;
size_t padding = 0;
uint32_t tag; uint32_t tag;
enum AVSphericalProjection projection; enum AVSphericalProjection projection;
@ -3322,9 +3324,25 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom)
return 0; return 0;
} }
projection = AV_SPHERICAL_CUBEMAP; projection = AV_SPHERICAL_CUBEMAP;
padding = avio_rb32(pb);
break; break;
case MKTAG('e','q','u','i'): case MKTAG('e','q','u','i'):
projection = AV_SPHERICAL_EQUIRECTANGULAR; t = avio_rb32(pb);
b = avio_rb32(pb);
l = avio_rb32(pb);
r = avio_rb32(pb);
if (b >= UINT_MAX - t || r >= UINT_MAX - l) {
av_log(c->fc, AV_LOG_ERROR,
"Invalid bounding rectangle coordinates "
"%zu,%zu,%zu,%zu\n", l, t, r, b);
return AVERROR_INVALIDDATA;
}
if (l || t || r || b)
projection = AV_SPHERICAL_EQUIRECTANGULAR_TILE;
else
projection = AV_SPHERICAL_EQUIRECTANGULAR;
break; break;
default: default:
av_log(c->fc, AV_LOG_ERROR, "Unknown projection type\n"); av_log(c->fc, AV_LOG_ERROR, "Unknown projection type\n");
@ -3341,6 +3359,13 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom)
sc->spherical->pitch = pitch; sc->spherical->pitch = pitch;
sc->spherical->roll = roll; sc->spherical->roll = roll;
sc->spherical->padding = padding;
sc->spherical->bound_left = l;
sc->spherical->bound_top = t;
sc->spherical->bound_right = r;
sc->spherical->bound_bottom = b;
return 0; return 0;
} }

@ -31,7 +31,7 @@
#define LIBAVFORMAT_VERSION_MAJOR 57 #define LIBAVFORMAT_VERSION_MAJOR 57
#define LIBAVFORMAT_VERSION_MINOR 11 #define LIBAVFORMAT_VERSION_MINOR 11
#define LIBAVFORMAT_VERSION_MICRO 0 #define LIBAVFORMAT_VERSION_MICRO 1
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
LIBAVFORMAT_VERSION_MINOR, \ LIBAVFORMAT_VERSION_MINOR, \

@ -11,7 +11,7 @@ FATE_MOV += fate-mov-sar
fate-mov-sar: CMD = probestream sample_aspect_ratio $(TARGET_SAMPLES)/mov/displaymatrix.mov fate-mov-sar: CMD = probestream sample_aspect_ratio $(TARGET_SAMPLES)/mov/displaymatrix.mov
FATE_MOV += fate-mov-spherical FATE_MOV += fate-mov-spherical
fate-mov-spherical: CMD = probestream projection,yaw,pitch,roll $(TARGET_SAMPLES)/mov/spherical.mov fate-mov-spherical: CMD = probestream projection,yaw,pitch,roll,left,top,right,bottom $(TARGET_SAMPLES)/mov/spherical.mov
FATE_MOV += fate-mov-stereo3d FATE_MOV += fate-mov-stereo3d
fate-mov-stereo3d: CMD = probestream type $(TARGET_SAMPLES)/mov/spherical.mov fate-mov-stereo3d: CMD = probestream type $(TARGET_SAMPLES)/mov/spherical.mov

@ -1,4 +1,8 @@
equirectangular tiled equirectangular
148
73
147
72
45 45
30 30
15 15

Loading…
Cancel
Save