[FFmpeg-cvslog] avformat/mov: set Stereo3D type when parsing eyes box
James Almer
git at videolan.org
Fri Jun 28 20:44:38 EEST 2024
ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Fri Jun 21 22:23:06 2024 -0300| [0b330d8642ee416774eb730946f88a236c8ce3d4] | committer: James Almer
avformat/mov: set Stereo3D type when parsing eyes box
If view is defined in the child stri box, then the type must be set to
unspecified, as these boxes don't carry packing information.
Also, don't attach a useless Stereo 3D side data if the stream is monoscopic.
Signed-off-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0b330d8642ee416774eb730946f88a236c8ce3d4
---
libavformat/mov.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/libavformat/mov.c b/libavformat/mov.c
index b4245789c4..14f43bf906 100644
--- a/libavformat/mov.c
+++ b/libavformat/mov.c
@@ -6546,7 +6546,8 @@ static int mov_read_eyes(MOVContext *c, AVIOContext *pb, MOVAtom atom)
int size, flags = 0;
int64_t remaining;
uint32_t tag, baseline = 0;
- enum AVStereo3DView view = AV_STEREO3D_VIEW_PACKED;
+ enum AVStereo3DView view = AV_STEREO3D_VIEW_UNSPEC;
+ enum AVStereo3DType type = AV_STEREO3D_2D;
enum AVStereo3DPrimaryEye primary_eye = AV_PRIMARY_EYE_NONE;
AVRational horizontal_disparity_adjustment = { 0, 1 };
@@ -6596,6 +6597,9 @@ static int mov_read_eyes(MOVContext *c, AVIOContext *pb, MOVAtom atom)
view = AV_STEREO3D_VIEW_LEFT;
else if (has_right)
view = AV_STEREO3D_VIEW_RIGHT;
+ if (has_left || has_right)
+ type = AV_STEREO3D_UNSPEC;
+
break;
}
case MKTAG('h','e','r','o'): {
@@ -6690,6 +6694,9 @@ static int mov_read_eyes(MOVContext *c, AVIOContext *pb, MOVAtom atom)
return AVERROR_INVALIDDATA;
}
+ if (type == AV_STEREO3D_2D)
+ return 0;
+
if (!sc->stereo3d) {
sc->stereo3d = av_stereo3d_alloc_size(&sc->stereo3d_size);
if (!sc->stereo3d)
@@ -6697,6 +6704,7 @@ static int mov_read_eyes(MOVContext *c, AVIOContext *pb, MOVAtom atom)
}
sc->stereo3d->flags = flags;
+ sc->stereo3d->type = type;
sc->stereo3d->view = view;
sc->stereo3d->primary_eye = primary_eye;
sc->stereo3d->baseline = baseline;
More information about the ffmpeg-cvslog
mailing list