Re: [FFmpeg-devel] [PATCHv3 2/3] mov: Export bounds and padding from spherical metadata
On 2/28/2017 1:24 PM, Vittorio Giovara wrote: > On Tue, Feb 28, 2017 at 10:58 AM, James Almerwrote: >> On 2/21/2017 8:07 PM, James Almer wrote: >>> On 2/21/2017 7:35 PM, Vittorio Giovara wrote: Update the fate test as needed. --- libavformat/mov.c | 28 +++- tests/ref/fate/mov-spherical-mono | 6 +- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 7b0bbcc..d798336 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -4637,6 +4637,8 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom) MOVStreamContext *sc; int size, version; int32_t yaw, pitch, roll; +size_t l, t, r, b; +size_t padding = 0; uint32_t tag; enum AVSphericalProjection projection; @@ -4716,9 +4718,25 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom) switch (tag) { case MKTAG('c','b','m','p'): projection = AV_SPHERICAL_CUBEMAP; +padding = avio_rb32(pb); >>> >>> Doesn't layout come first? > > Ah, that's right, thanks You pushed this patch without fixing it... ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCHv3 2/3] mov: Export bounds and padding from spherical metadata
On Tue, Feb 28, 2017 at 10:58 AM, James Almerwrote: > On 2/21/2017 8:07 PM, James Almer wrote: >> On 2/21/2017 7:35 PM, Vittorio Giovara wrote: >>> Update the fate test as needed. >>> --- >>> libavformat/mov.c | 28 +++- >>> tests/ref/fate/mov-spherical-mono | 6 +- >>> 2 files changed, 32 insertions(+), 2 deletions(-) >>> >>> diff --git a/libavformat/mov.c b/libavformat/mov.c >>> index 7b0bbcc..d798336 100644 >>> --- a/libavformat/mov.c >>> +++ b/libavformat/mov.c >>> @@ -4637,6 +4637,8 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext >>> *pb, MOVAtom atom) >>> MOVStreamContext *sc; >>> int size, version; >>> int32_t yaw, pitch, roll; >>> +size_t l, t, r, b; >>> +size_t padding = 0; >>> uint32_t tag; >>> enum AVSphericalProjection projection; >>> >>> @@ -4716,9 +4718,25 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext >>> *pb, MOVAtom atom) >>> switch (tag) { >>> case MKTAG('c','b','m','p'): >>> projection = AV_SPHERICAL_CUBEMAP; >>> +padding = avio_rb32(pb); >> >> Doesn't layout come first? Ah, that's right, thanks -- Vittorio ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCHv3 2/3] mov: Export bounds and padding from spherical metadata
On 2/21/2017 8:07 PM, James Almer wrote: > On 2/21/2017 7:35 PM, Vittorio Giovara wrote: >> Update the fate test as needed. >> --- >> libavformat/mov.c | 28 +++- >> tests/ref/fate/mov-spherical-mono | 6 +- >> 2 files changed, 32 insertions(+), 2 deletions(-) >> >> diff --git a/libavformat/mov.c b/libavformat/mov.c >> index 7b0bbcc..d798336 100644 >> --- a/libavformat/mov.c >> +++ b/libavformat/mov.c >> @@ -4637,6 +4637,8 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext >> *pb, MOVAtom atom) >> MOVStreamContext *sc; >> int size, version; >> int32_t yaw, pitch, roll; >> +size_t l, t, r, b; >> +size_t padding = 0; >> uint32_t tag; >> enum AVSphericalProjection projection; >> >> @@ -4716,9 +4718,25 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext >> *pb, MOVAtom atom) >> switch (tag) { >> case MKTAG('c','b','m','p'): >> projection = AV_SPHERICAL_CUBEMAP; >> +padding = avio_rb32(pb); > > Doesn't layout come first? > >> break; >> 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; >> default: >> av_log(c->fc, AV_LOG_ERROR, "Unknown projection type\n"); >> @@ -4735,6 +4753,14 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext >> *pb, MOVAtom atom) >> sc->spherical->pitch = pitch; >> sc->spherical->roll = roll; >> >> +sc->spherical->padding = padding; >> + >> +if (projection == AV_SPHERICAL_EQUIRECTANGULAR_TILE) { >> +sc->spherical->bound_left = l; >> +sc->spherical->bound_top= t; >> +sc->spherical->bound_right = r; >> +sc->spherical->bound_bottom = b; >> +} >> return 0; >> } >> >> diff --git a/tests/ref/fate/mov-spherical-mono >> b/tests/ref/fate/mov-spherical-mono >> index 8048aff..a70d879 100644 >> --- a/tests/ref/fate/mov-spherical-mono >> +++ b/tests/ref/fate/mov-spherical-mono >> @@ -8,7 +8,11 @@ inverted=0 >> [SIDE_DATA] >> side_data_type=Spherical Mapping >> side_data_size=56 >> -projection=equirectangular >> +projection=tiled equirectangular >> +bound_left=148 >> +bound_top=73 >> +bound_right=147 >> +bound_bottom=72 >> yaw=45 >> pitch=30 >> roll=15 >> CCing this time because i forgot last time. Sorry ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCHv3 2/3] mov: Export bounds and padding from spherical metadata
On 2/21/2017 7:35 PM, Vittorio Giovara wrote: > Update the fate test as needed. > --- > libavformat/mov.c | 28 +++- > tests/ref/fate/mov-spherical-mono | 6 +- > 2 files changed, 32 insertions(+), 2 deletions(-) > > diff --git a/libavformat/mov.c b/libavformat/mov.c > index 7b0bbcc..d798336 100644 > --- a/libavformat/mov.c > +++ b/libavformat/mov.c > @@ -4637,6 +4637,8 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext > *pb, MOVAtom atom) > MOVStreamContext *sc; > int size, version; > int32_t yaw, pitch, roll; > +size_t l, t, r, b; > +size_t padding = 0; > uint32_t tag; > enum AVSphericalProjection projection; > > @@ -4716,9 +4718,25 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext > *pb, MOVAtom atom) > switch (tag) { > case MKTAG('c','b','m','p'): > projection = AV_SPHERICAL_CUBEMAP; > +padding = avio_rb32(pb); Doesn't layout come first? > break; > 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; > default: > av_log(c->fc, AV_LOG_ERROR, "Unknown projection type\n"); > @@ -4735,6 +4753,14 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext > *pb, MOVAtom atom) > sc->spherical->pitch = pitch; > sc->spherical->roll = roll; > > +sc->spherical->padding = padding; > + > +if (projection == AV_SPHERICAL_EQUIRECTANGULAR_TILE) { > +sc->spherical->bound_left = l; > +sc->spherical->bound_top= t; > +sc->spherical->bound_right = r; > +sc->spherical->bound_bottom = b; > +} > return 0; > } > > diff --git a/tests/ref/fate/mov-spherical-mono > b/tests/ref/fate/mov-spherical-mono > index 8048aff..a70d879 100644 > --- a/tests/ref/fate/mov-spherical-mono > +++ b/tests/ref/fate/mov-spherical-mono > @@ -8,7 +8,11 @@ inverted=0 > [SIDE_DATA] > side_data_type=Spherical Mapping > side_data_size=56 > -projection=equirectangular > +projection=tiled equirectangular > +bound_left=148 > +bound_top=73 > +bound_right=147 > +bound_bottom=72 > yaw=45 > pitch=30 > roll=15 > ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCHv3 2/3] mov: Export bounds and padding from spherical metadata
Update the fate test as needed. --- libavformat/mov.c | 28 +++- tests/ref/fate/mov-spherical-mono | 6 +- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 7b0bbcc..d798336 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -4637,6 +4637,8 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom) MOVStreamContext *sc; int size, version; int32_t yaw, pitch, roll; +size_t l, t, r, b; +size_t padding = 0; uint32_t tag; enum AVSphericalProjection projection; @@ -4716,9 +4718,25 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom) switch (tag) { case MKTAG('c','b','m','p'): projection = AV_SPHERICAL_CUBEMAP; +padding = avio_rb32(pb); break; 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; default: av_log(c->fc, AV_LOG_ERROR, "Unknown projection type\n"); @@ -4735,6 +4753,14 @@ static int mov_read_sv3d(MOVContext *c, AVIOContext *pb, MOVAtom atom) sc->spherical->pitch = pitch; sc->spherical->roll = roll; +sc->spherical->padding = padding; + +if (projection == AV_SPHERICAL_EQUIRECTANGULAR_TILE) { +sc->spherical->bound_left = l; +sc->spherical->bound_top= t; +sc->spherical->bound_right = r; +sc->spherical->bound_bottom = b; +} return 0; } diff --git a/tests/ref/fate/mov-spherical-mono b/tests/ref/fate/mov-spherical-mono index 8048aff..a70d879 100644 --- a/tests/ref/fate/mov-spherical-mono +++ b/tests/ref/fate/mov-spherical-mono @@ -8,7 +8,11 @@ inverted=0 [SIDE_DATA] side_data_type=Spherical Mapping side_data_size=56 -projection=equirectangular +projection=tiled equirectangular +bound_left=148 +bound_top=73 +bound_right=147 +bound_bottom=72 yaw=45 pitch=30 roll=15 -- 2.10.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel