[vlc-devel] [PATCH] Support for rotated MP4 Movies (bug #2882)

Rémi Denis-Courmont remi at remlab.net
Sat Feb 8 11:21:38 CET 2014


Le samedi 8 février 2014, 00:19:18 Matthias Keiser a écrit :
> From 5c88469141eb6f12c4bb34b46799921c24e6d139 Mon Sep 17 00:00:00 2001
> From: Matthias Keiser <matthias at tristan-inc.com>
> Date: Fri, 7 Feb 2014 23:46:12 +0100
> Subject: [PATCH] Add function which applies the rotation to a
> video_format_t.
> 
> ---
>  include/vlc_es.h     |  6 ++++++
>  src/misc/es_format.c | 24 ++++++++++++++++++++++++
>  2 files changed, 30 insertions(+)
> 
> diff --git a/include/vlc_es.h b/include/vlc_es.h
> index 3040c38..09b79ae 100644
> --- a/include/vlc_es.h
> +++ b/include/vlc_es.h
> @@ -263,6 +263,12 @@ VLC_API void video_format_CopyCrop( video_format_t *,
> const video_format_t * ); VLC_API void video_format_ScaleCropAr(
> video_format_t *, const video_format_t * );
> 
>  /**
> + * This function "normalizes" the formats orientation, by switching the a/r
> according to the orientation, + * producing a format whose orientation is
> ORIENT_NORMAL. It makes a shallow copy (pallette is not alloc'ed). + */
> +void video_format_ApplyRotation(const video_format_t * restrict in,
> video_format_t * restrict out); +
> +/**
>   * This function will check if the first video format is similar
>   * to the second one.
>   */
> diff --git a/src/misc/es_format.c b/src/misc/es_format.c
> index 87b6ada..d64f549 100644
> --- a/src/misc/es_format.c
> +++ b/src/misc/es_format.c
> @@ -243,6 +243,27 @@ void video_format_ScaleCropAr( video_format_t *p_dst,
> const video_format_t *p_sr p_dst->i_sar_num, p_dst->i_sar_den, 65536);
>  }
> 
> +void video_format_ApplyRotation(const video_format_t * restrict in,
> video_format_t * restrict out) { +
> +    *out = *in;
> +
> +    if(in->orientation == ORIENT_ROTATED_90 || in->orientation ==
> ORIENT_ROTATED_270 || +       in->orientation == ORIENT_LEFT_TOP ||
> in->orientation == ORIENT_RIGHT_BOTTOM) { +
> +        out->i_visible_width = in->i_visible_height;
> +        out->i_visible_height = in->i_visible_width;
> +        out->i_height = in->i_width;
> +        out->i_width = in->i_height;
> +        out->i_sar_num = in->i_sar_den;
> +        out->i_sar_den = in->i_sar_num;
> +        out->orientation = ORIENT_NORMAL;
> +    }
> +    else {
> +        out->orientation = ORIENT_NORMAL;

Trivially duplicated code.

> +    }
> +}
> +
> +
>  bool video_format_IsSimilar( const video_format_t *p_fmt1, const
> video_format_t *p_fmt2 ) {
>      video_format_t v1 = *p_fmt1;
> @@ -259,6 +280,9 @@ bool video_format_IsSimilar( const video_format_t
> *p_fmt1, const video_format_t if( v1.i_sar_num * v2.i_sar_den !=
> v2.i_sar_num * v1.i_sar_den ) return false;
> 
> +    if( v1.orientation != v2.orientation)
> +        return false;
> +
>      if( v1.i_chroma == VLC_CODEC_RGB15 ||
>          v1.i_chroma == VLC_CODEC_RGB16 ||
>          v1.i_chroma == VLC_CODEC_RGB24 ||

Also patch does not apply to HEAD.

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




More information about the vlc-devel mailing list