[vlc-devel] [PATCH 01/14] core: add 3D stereo information to video_format_t
Rémi Denis-Courmont
remi at remlab.net
Tue Sep 9 20:14:15 CEST 2014
Le mardi 9 septembre 2014, 19:03:20 Felix Abecassis a écrit :
> ---
> include/vlc_es.h | 38 ++++++++++++++++++++++++++++++++++++++
> src/input/decoder.c | 3 ++-
> src/misc/es_format.c | 3 +++
> 3 files changed, 43 insertions(+), 1 deletion(-)
>
> diff --git a/include/vlc_es.h b/include/vlc_es.h
> index 5790d23..ad33f3a 100644
> --- a/include/vlc_es.h
> +++ b/include/vlc_es.h
> @@ -191,6 +191,42 @@ typedef enum video_transform_t
> TRANSFORM_ANTI_TRANSPOSE = ORIENT_ANTI_TRANSPOSED
> } video_transform_t;
>
> +typedef enum vlc_stereo3d_mode
> +{
> + /* No stereoscopy: 2D picture. */
> + VLC_STEREO3D_2D = 0,
> +
> + /* Side-by-side with left eye first. */
> + VLC_STEREO3D_SBS,
> +
> + /* Top-bottom with left eye first. */
> + VLC_STEREO3D_TB,
> +
> + /* Row sequential with left eye first. */
> + VLC_STEREO3D_ROW,
> +
> + /* Column sequential with left eye first. */
> + VLC_STEREO3D_COL,
> +
> + /* Frame sequential with left eye first. */
> + VLC_STEREO3D_FRAME,
> +
> + /* Checkerboard pattern with left eye first. */
> + VLC_STEREO3D_CHECKERBOARD,
> +} vlc_stereo3d_mode;
> +
> +typedef enum vlc_stereo3d_flag
> +{
> + /* Right eye is first instead of left eye. */
> + VLC_STEREO3D_SWAP_EYES = 1,
> +} vlc_stereo3d_flag;
Do we really need to separate flags from mode? How many flags are there ever
going to be?
> +
> +typedef struct
> +{
> + vlc_stereo3d_mode mode;
> + vlc_stereo3d_flag flags;
> +} stereo3d_format_t;
> +
> /**
> * video format description
> */
> @@ -219,6 +255,8 @@ struct video_format_t
> int i_rbshift, i_lbshift;
> video_palette_t *p_palette; /**< video palette from
> demuxer */ video_orientation_t orientation; /**< picture
> orientation */ +
> + stereo3d_format_t stereo;
> };
>
> /**
> diff --git a/src/input/decoder.c b/src/input/decoder.c
> index c90d149..d112265 100644
> --- a/src/input/decoder.c
> +++ b/src/input/decoder.c
> @@ -2040,7 +2040,8 @@ static picture_t *vout_new_buffer( 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.stereo.mode != p_owner->fmt.video.stereo.mode ) {
> vout_thread_t *p_vout;
>
> diff --git a/src/misc/es_format.c b/src/misc/es_format.c
> index 27622bc..cf5f0d8 100644
> --- a/src/misc/es_format.c
> +++ b/src/misc/es_format.c
> @@ -392,6 +392,9 @@ bool video_format_IsSimilar( const video_format_t
> *p_fmt1, const video_format_t if( v1.orientation != v2.orientation)
> return false;
>
> + if( v1.stereo.mode != v2.stereo.mode )
> + return false;
> +
> if( v1.i_chroma == VLC_CODEC_RGB15 ||
> v1.i_chroma == VLC_CODEC_RGB16 ||
> v1.i_chroma == VLC_CODEC_RGB24 ||
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list