[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