[vlc-commits] avcodec: add code to read stereo 3d metadata
Mohammed Danish
git at videolan.org
Thu Apr 26 08:53:13 CEST 2018
vlc | branch: master | Mohammed Danish <shaan3 at gmail.com> | Wed Jul 12 06:13:25 2017 -0400| [7076180e34a3a076a8606c1d1394ad82af5f3103] | committer: Steve Lhomme
avcodec: add code to read stereo 3d metadata
Signed-off-by: Steve Lhomme <robux4 at ycbcr.xyz>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7076180e34a3a076a8606c1d1394ad82af5f3103
---
modules/codec/avcodec/video.c | 47 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c
index d0801db1ec..8b4f6252b7 100644
--- a/modules/codec/avcodec/video.c
+++ b/modules/codec/avcodec/video.c
@@ -47,6 +47,10 @@
#include "avcodec.h"
#include "va.h"
+#if LIBAVUTIL_VERSION_CHECK( 52, 20, 0, 58, 100 )
+#include <libavutil/stereo3d.h>
+#endif
+
#include "../codec/cc.h"
#define FRAME_INFO_DEPTH 64
@@ -864,6 +868,49 @@ static int DecodeSidedata( decoder_t *p_dec, const AVFrame *frame, picture_t *p_
}
#endif
+#if LIBAVUTIL_VERSION_CHECK( 52, 20, 0, 58, 100 )
+ const AVFrameSideData *p_stereo3d_data =
+ av_frame_get_side_data( frame,
+ AV_FRAME_DATA_STEREO3D );
+ if( p_stereo3d_data )
+ {
+ const struct AVStereo3D *stereo_data =
+ (const AVStereo3D *) p_stereo3d_data->data;
+ switch (stereo_data->type)
+ {
+ case AV_STEREO3D_SIDEBYSIDE:
+ p_pic->format.multiview_mode = MULTIVIEW_STEREO_SBS;
+ break;
+ case AV_STEREO3D_TOPBOTTOM:
+ p_pic->format.multiview_mode = MULTIVIEW_STEREO_TB;
+ break;
+ case AV_STEREO3D_FRAMESEQUENCE:
+ p_pic->format.multiview_mode = MULTIVIEW_STEREO_FRAME;
+ break;
+ case AV_STEREO3D_COLUMNS:
+ p_pic->format.multiview_mode = MULTIVIEW_STEREO_ROW;
+ break;
+ case AV_STEREO3D_LINES:
+ p_pic->format.multiview_mode = MULTIVIEW_STEREO_COL;
+ break;
+ case AV_STEREO3D_CHECKERBOARD:
+ p_pic->format.multiview_mode = MULTIVIEW_STEREO_CHECKERBOARD;
+ break;
+ default:
+ case AV_STEREO3D_2D:
+ p_pic->format.multiview_mode = MULTIVIEW_2D;
+ break;
+ }
+ if (p_dec->fmt_out.video.multiview_mode != p_pic->format.multiview_mode)
+ {
+ p_dec->fmt_out.video.multiview_mode = p_pic->format.multiview_mode;
+ format_changed = true;
+ }
+ }
+ else
+ p_pic->format.multiview_mode = p_dec->fmt_out.video.multiview_mode;
+#endif
+
if (format_changed && decoder_UpdateVideoFormat( p_dec ))
return -1;
More information about the vlc-commits
mailing list