vlc | branch: master | Thomas Guillem <[email protected]> | Thu Nov 24 18:03:32 2016 +0100| [38aca24fb0cad5badd38d5ad07665c23844a1867] | committer: Thomas Guillem
libvlc: media: add projection in libvlc_video_track_t > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=38aca24fb0cad5badd38d5ad07665c23844a1867 --- include/vlc/libvlc_media.h | 15 +++++++++++++++ lib/media.c | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h index c94acb0..01e571c 100644 --- a/include/vlc/libvlc_media.h +++ b/include/vlc/libvlc_media.h @@ -184,6 +184,14 @@ typedef enum libvlc_video_orient_t libvlc_video_orient_right_bottom /**< Anti-transposed */ } libvlc_video_orient_t; +typedef enum libvlc_video_projection_t +{ + libvlc_video_projection_rectangular, + libvlc_video_projection_equirectangular, /**< 360 spherical */ + + libvlc_video_projection_cubemap_layout_standard = 0x100, +} libvlc_video_projection_t; + typedef struct libvlc_video_track_t { unsigned i_height; @@ -194,6 +202,13 @@ typedef struct libvlc_video_track_t unsigned i_frame_rate_den; libvlc_video_orient_t i_orientation; + libvlc_video_projection_t i_projection; + struct { + float f_yaw_degrees; /**< View point yaw in degrees ]-180;180] */ + float f_pitch_degrees; /**< View point pitch in degrees ]-90;90] */ + float f_roll_degrees; /**< View point roll in degrees ]-180;180] */ + float f_fov_degrees; /**< View point fov in degrees ]0;180[ */ + } pose; /**< Initial view point */ } libvlc_video_track_t; typedef struct libvlc_subtitle_track_t diff --git a/lib/media.c b/lib/media.c index ac837a2..fdd2445 100644 --- a/lib/media.c +++ b/lib/media.c @@ -117,6 +117,12 @@ static_assert( ORIENT_RIGHT_BOTTOM == (int) libvlc_video_orient_right_bottom, "Mismatch between libvlc_video_orient_t and video_orientation_t" ); +static_assert( + PROJECTION_MODE_RECTANGULAR == (int) libvlc_video_projection_rectangular && + PROJECTION_MODE_EQUIRECTANGULAR == (int) libvlc_video_projection_equirectangular && + PROJECTION_MODE_CUBEMAP_LAYOUT_STANDARD == (int) libvlc_video_projection_cubemap_layout_standard, + "Mismatch between libvlc_video_projection_t and video_projection_mode_t" ); + static libvlc_media_list_t *media_get_subitems( libvlc_media_t * p_md, bool b_create ) { @@ -1010,6 +1016,15 @@ libvlc_media_tracks_get( libvlc_media_t *p_md, libvlc_media_track_t *** pp_es ) p_es->video.orientation <= ORIENT_RIGHT_BOTTOM ); p_mes->video->i_orientation = (int) p_es->video.orientation; + assert( ( p_es->video.projection_mode >= PROJECTION_MODE_RECTANGULAR && + p_es->video.projection_mode <= PROJECTION_MODE_EQUIRECTANGULAR ) || + ( p_es->video.projection_mode == PROJECTION_MODE_CUBEMAP_LAYOUT_STANDARD ) ); + p_mes->video->i_projection = (int) p_es->video.projection_mode; + + p_mes->video->pose.f_yaw_degrees = p_es->video.pose.f_yaw_degrees; + p_mes->video->pose.f_pitch_degrees = p_es->video.pose.f_pitch_degrees; + p_mes->video->pose.f_roll_degrees = p_es->video.pose.f_roll_degrees; + p_mes->video->pose.f_fov_degrees = p_es->video.pose.f_fov_degrees; break; case AUDIO_ES: p_mes->i_type = libvlc_track_audio; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
