[vlc-devel] [PATCH] libvlc: media: add multiview in libvlc_video_track_t
Zhao Zhili
quinkblack at foxmail.com
Fri Apr 13 13:33:03 CEST 2018
Hi Rémi,
On 2018年04月13日 19:00, Rémi Denis-Courmont wrote:
> Le 12 avril 2018 15:43:14 GMT+03:00, Zhao Zhili <quinkblack at foxmail.com> a écrit :
>> ---
>> 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
> Nihao,
>
> Are you sure this works with Doxygen? I don't recall such syntax.
I think the comments need more details to make it qualified as API
document, so I leave it as plain comments.
More information about the vlc-devel
mailing list