[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