[vlc-devel] [RFC PATCH 2/2] core: add 3D stereo information to video_format_t
Jean-Baptiste Kempf
jb at videolan.org
Fri May 27 15:18:10 CEST 2016
From: Felix Abecassis <felix.abecassis at gmail.com>
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
---
include/vlc_es.h | 26 ++++++++++++++++++++++++++
src/input/decoder.c | 3 ++-
src/misc/es_format.c | 3 +++
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/include/vlc_es.h b/include/vlc_es.h
index 2c6fe57..9cf5e0e 100644
--- a/include/vlc_es.h
+++ b/include/vlc_es.h
@@ -192,6 +192,30 @@ typedef enum video_transform_t
TRANSFORM_ANTI_TRANSPOSE = ORIENT_ANTI_TRANSPOSED
} video_transform_t;
+typedef enum video_multiview_mode_t
+{
+ /* No stereoscopy: 2D picture. */
+ MULTIVIEW_2D = 0,
+
+ /* Side-by-side with left eye first. */
+ MULTIVIEW_STEREO_SBS,
+
+ /* Top-bottom with left eye first. */
+ MULTIVIEW_STEREO_TB,
+
+ /* Row sequential with left eye first. */
+ MULTIVIEW_ROW,
+
+ /* Column sequential with left eye first. */
+ MULTIVIEW_COL,
+
+ /* Frame sequential with left eye first. */
+ MULTIVIEW_FRAME,
+
+ /* Checkerboard pattern with left eye first. */
+ MULTIVIEW_CHECKERBOARD,
+} video_multiview_mode_t;
+
/**
* Video projection mode.
*/
@@ -288,6 +312,8 @@ struct video_format_t
bool b_color_range_full; /**< 0-255 instead of 16-235 */
video_chroma_location_t chroma_location; /**< YCbCr chroma location */
+ video_multiview_mode_t multiview_mode; /** Multiview mode, 2D, 3D */
+
video_projection_mode_t projection_mode; /**< projection mode */
int32_t i_pose_yaw_degrees; /**< view point yaw in 16.16 fixed point */
int32_t i_pose_pitch_degrees; /**< view point pitch in 16.16 fixed point */
diff --git a/src/input/decoder.c b/src/input/decoder.c
index bd966c1..2df09a9 100644
--- a/src/input/decoder.c
+++ b/src/input/decoder.c
@@ -328,7 +328,8 @@ static int vout_update_format( decoder_t *p_dec )
|| p_dec->fmt_out.i_codec != p_owner->fmt.video.i_chroma
|| (int64_t)p_dec->fmt_out.video.i_sar_num * p_owner->fmt.video.i_sar_den !=
(int64_t)p_dec->fmt_out.video.i_sar_den * p_owner->fmt.video.i_sar_num ||
- p_dec->fmt_out.video.orientation != p_owner->fmt.video.orientation )
+ p_dec->fmt_out.video.orientation != p_owner->fmt.video.orientation ||
+ p_dec->fmt_out.video.multiview_mode != p_owner->fmt.video.multiview_mode )
{
vout_thread_t *p_vout;
diff --git a/src/misc/es_format.c b/src/misc/es_format.c
index 0375767..b4090e9 100644
--- a/src/misc/es_format.c
+++ b/src/misc/es_format.c
@@ -395,6 +395,9 @@ bool video_format_IsSimilar( const video_format_t *f1,
if( f1->orientation != f2->orientation)
return false;
+ if( f1->multiview_mode!= f2->multiview_mode )
+ return false;
+
if( f1->i_chroma == VLC_CODEC_RGB15 ||
f1->i_chroma == VLC_CODEC_RGB16 ||
f1->i_chroma == VLC_CODEC_RGB24 ||
--
2.8.1.369.geae769a
More information about the vlc-devel
mailing list