[vlc-devel] [PATCH] libvlc: media: add multiview in libvlc_video_track_t
Thomas Guillem
thomas at gllm.fr
Fri Apr 13 12:57:52 CEST 2018
merged, thanks!
On Thu, Apr 12, 2018, at 14:43, Zhao Zhili wrote:
> ---
> include/vlc/libvlc_media.h | 25 +++++++++++++++++++++++++
> lib/media.c | 14 ++++++++++++++
> 2 files changed, 39 insertions(+)
>
> diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h
> index 383f366..ec4778f 100644
> --- a/include/vlc/libvlc_media.h
> +++ b/include/vlc/libvlc_media.h
> @@ -205,6 +205,30 @@ typedef struct libvlc_video_viewpoint_t
> float f_field_of_view; /**< field of view in
> degrees ]0;180[ (default 80.)*/
> } libvlc_video_viewpoint_t;
>
> +typedef enum libvlc_video_multiview_t
> +{
> + /* No stereoscopy: 2D picture. */
> + libvlc_video_multiview_2d,
> +
> + /* Side-by-side */
> + libvlc_video_multiview_stereo_sbs,
> +
> + /* Top-bottom */
> + libvlc_video_multiview_stereo_tb,
> +
> + /* Row sequential */
> + libvlc_video_multiview_stereo_row,
> +
> + /* Column sequential */
> + libvlc_video_multiview_stereo_col,
> +
> + /* Frame sequential */
> + libvlc_video_multiview_stereo_frame,
> +
> + /* Checkerboard pattern */
> + libvlc_video_multiview_stereo_checkerboard
> +} libvlc_video_multiview_t;
> +
> typedef struct libvlc_video_track_t
> {
> unsigned i_height;
> @@ -217,6 +241,7 @@ typedef struct libvlc_video_track_t
> libvlc_video_orient_t i_orientation;
> libvlc_video_projection_t i_projection;
> libvlc_video_viewpoint_t pose; /**< Initial view point */
> + libvlc_video_multiview_t i_multiview;
> } libvlc_video_track_t;
>
> typedef struct libvlc_subtitle_track_t
> diff --git a/lib/media.c b/lib/media.c
> index 58881e3..2b32f9d 100644
> --- a/lib/media.c
> +++ b/lib/media.c
> @@ -123,6 +123,16 @@ static_assert(
> PROJECTION_MODE_CUBEMAP_LAYOUT_STANDARD == (int)
> libvlc_video_projection_cubemap_layout_standard,
> "Mismatch between libvlc_video_projection_t and
> video_projection_mode_t" );
>
> +static_assert(
> + MULTIVIEW_2D == (int) libvlc_video_multiview_2d
> &&
> + MULTIVIEW_STEREO_SBS == (int)
> libvlc_video_multiview_stereo_sbs &&
> + MULTIVIEW_STEREO_TB == (int)
> libvlc_video_multiview_stereo_tb &&
> + MULTIVIEW_STEREO_ROW == (int)
> libvlc_video_multiview_stereo_row &&
> + MULTIVIEW_STEREO_COL == (int)
> libvlc_video_multiview_stereo_col &&
> + MULTIVIEW_STEREO_FRAME == (int)
> libvlc_video_multiview_stereo_frame &&
> + MULTIVIEW_STEREO_CHECKERBOARD == (int)
> libvlc_video_multiview_stereo_checkerboard,
> + "Mismatch between libvlc_video_multiview_t and
> video_multiview_mode_t");
> +
> static libvlc_media_list_t *media_get_subitems( libvlc_media_t * p_md,
> bool b_create )
> {
> @@ -1038,6 +1048,10 @@ libvlc_media_tracks_get( libvlc_media_t *p_md,
> libvlc_media_track_t *** pp_es )
> p_mes->video->pose.f_pitch = p_es->video.pose.pitch;
> p_mes->video->pose.f_roll = p_es->video.pose.roll;
> p_mes->video->pose.f_field_of_view = p_es->video.pose.fov;
> +
> + assert( p_es->video.multiview_mode >= MULTIVIEW_2D &&
> + p_es->video.multiview_mode <=
> MULTIVIEW_STEREO_CHECKERBOARD );
> + p_mes->video->i_multiview = (int) p_es-
> >video.multiview_mode;
> break;
> case AUDIO_ES:
> p_mes->i_type = libvlc_track_audio;
> --
> 2.9.5
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
More information about the vlc-devel
mailing list