[vlc-devel] [PATCH] libvlc: media: add orientation in libvlc_video_track_t

Rémi Denis-Courmont remi at remlab.net
Thu Nov 24 18:59:58 CET 2016


Le torstaina 24. marraskuuta 2016, 17.54.23 EET Thomas Guillem a écrit :
> ---
>  include/vlc/libvlc_media.h | 13 +++++++++++++
>  lib/media.c                | 18 ++++++++++++++++++
>  2 files changed, 31 insertions(+)
> 
> diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h
> index 8fd13fe..547c7c0 100644
> --- a/include/vlc/libvlc_media.h
> +++ b/include/vlc/libvlc_media.h
> @@ -172,6 +172,18 @@ typedef struct libvlc_audio_track_t
>      unsigned    i_rate;
>  } libvlc_audio_track_t;
> 
> +typedef enum libvlc_video_orient_t
> +{
> +    libvlc_video_orient_normal,         /**< or top_left */
> +    libvlc_video_orient_transposed,     /**< or left_top */
> +    libvlc_video_orient_antitransposed, /**< or right_bottom */
> +    libvlc_video_orient_hflipped,       /**< or top_right */
> +    libvlc_video_orient_vflipped,       /**< or bottom_left */
> +    libvlc_video_orient_180,            /**< or bottom_right */
> +    libvlc_video_orient_270,            /**< or left_bottom */
> +    libvlc_video_orient_90,             /**< or right_top */
> +} libvlc_video_orient_t;

Did you actually check how that looks in Doxygen. I somehow doubt it´s 
understandable.
> +
>  typedef struct libvlc_video_track_t
>  {
>      unsigned    i_height;
> @@ -180,6 +192,7 @@ typedef struct libvlc_video_track_t
>      unsigned    i_sar_den;
>      unsigned    i_frame_rate_num;
>      unsigned    i_frame_rate_den;
> +    libvlc_video_orient_t i_orientation;

Not this again.

>  } libvlc_video_track_t;
> 
>  typedef struct libvlc_subtitle_track_t
> diff --git a/lib/media.c b/lib/media.c
> index 8e07930..b30bbc4 100644
> --- a/lib/media.c
> +++ b/lib/media.c
> @@ -106,6 +106,22 @@ static const libvlc_meta_t vlc_to_libvlc_meta[] =
>      [vlc_meta_DiscTotal]    = libvlc_meta_DiscTotal
>  };
> 
> +static libvlc_video_orient_t vlc_to_libvlc_orient(video_orientation_t
> orient) +{
> +    switch (orient)
> +    {
> +        case ORIENT_TOP_LEFT:       return libvlc_video_orient_normal;
> +        case ORIENT_TOP_RIGHT:      return libvlc_video_orient_hflipped;
> +        case ORIENT_BOTTOM_LEFT:    return libvlc_video_orient_vflipped;
> +        case ORIENT_BOTTOM_RIGHT:   return libvlc_video_orient_180;
> +        case ORIENT_LEFT_TOP:       return libvlc_video_orient_transposed;
> +        case ORIENT_LEFT_BOTTOM:    return libvlc_video_orient_270;
> +        case ORIENT_RIGHT_TOP:      return libvlc_video_orient_90;
> +        case ORIENT_RIGHT_BOTTOM:   return
> libvlc_video_orient_antitransposed;
> +        default:                   
> vlc_assert_unreachable();

Do you really need a switch for a 1:1 mapping of 8 values?

> +    }
> +}
> +
>  static libvlc_media_list_t *media_get_subitems( libvlc_media_t * p_md,
>                                                  bool b_create )
>  {
> @@ -994,6 +1010,8 @@ libvlc_media_tracks_get( libvlc_media_t *p_md,
> libvlc_media_track_t *** pp_es ) p_mes->video->i_sar_den =
> p_es->video.i_sar_den;
>              p_mes->video->i_frame_rate_num = p_es->video.i_frame_rate;
>              p_mes->video->i_frame_rate_den = p_es->video.i_frame_rate_base;
> +            p_mes->video->i_orientation =
> +                vlc_to_libvlc_orient(p_es->video.orientation);
>              break;
>          case AUDIO_ES:
>              p_mes->i_type = libvlc_track_audio;


-- 
Rémi Denis-Courmont
https://www.remlab.net/



More information about the vlc-devel mailing list