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

Jean-Baptiste Kempf jb at videolan.org
Fri Feb 7 15:09:26 CET 2014


Seems OK.

On 06 Feb, Matthias Keiser wrote :
> >From ff4d4b5bf739e13ec2fc6bb85c6cda1b2aae8ad9 Mon Sep 17 00:00:00 2001
> From: Matthias Keiser <matthias at tristan-inc.com>
> Date: Thu, 6 Feb 2014 16:30:41 +0100
> Subject: [PATCH 12/13] vout_display_GetDefaultDisplaySize,
>  vout_display_PlacePicture: take into account video rotation.
> 
> ---
>  src/video_output/display.c | 20 +++++++++++++++-----
>  1 file changed, 15 insertions(+), 5 deletions(-)
> 
> diff --git a/src/video_output/display.c b/src/video_output/display.c
> index b268c18..19548e6 100644
> --- a/src/video_output/display.c
> +++ b/src/video_output/display.c
> @@ -197,6 +197,12 @@ void vout_display_GetDefaultDisplaySize(unsigned *width, unsigned *height,
>  
>      *width  = *width  * cfg->zoom.num / cfg->zoom.den;
>      *height = *height * cfg->zoom.num / cfg->zoom.den;
> +
> +    if(source->orientation == ORIENT_ROTATED_90 || source->orientation == ORIENT_ROTATED_270) {
> +        unsigned store = *width;
> +        *width = *height;
> +        *height = store;
> +    }
>  }
>  
>  /* */
> @@ -214,6 +220,10 @@ void vout_display_PlacePicture(vout_display_place_t *place,
>      unsigned display_width;
>      unsigned display_height;
>  
> +    video_format_t sourceRot;
> +    video_format_t *p_sourceRot = &sourceRot;
> +    video_format_ApplyRotation(source, p_sourceRot);
> +
>      if (cfg->is_display_filled) {
>          display_width  = cfg->display.width;
>          display_height = cfg->display.height;
> @@ -223,7 +233,7 @@ void vout_display_PlacePicture(vout_display_place_t *place,
>          cfg_tmp.display.width  = 0;
>          cfg_tmp.display.height = 0;
>          vout_display_GetDefaultDisplaySize(&display_width, &display_height,
> -                                           source, &cfg_tmp);
> +                                           p_sourceRot, &cfg_tmp);
>  
>          if (do_clipping) {
>              display_width  = __MIN(display_width,  cfg->display.width);
> @@ -231,12 +241,12 @@ void vout_display_PlacePicture(vout_display_place_t *place,
>          }
>      }
>  
> -    const unsigned width  = source->i_visible_width;
> -    const unsigned height = source->i_visible_height;
> +    const unsigned width  = p_sourceRot->i_visible_width;
> +    const unsigned height = p_sourceRot->i_visible_height;
>      /* Compute the height if we use the width to fill up display_width */
> -    const int64_t scaled_height = (int64_t)height * display_width  * cfg->display.sar.num * source->i_sar_den / width  / source->i_sar_num / cfg->display.sar.den;
> +    const int64_t scaled_height = (int64_t)height * display_width  * cfg->display.sar.num * p_sourceRot->i_sar_den / width  / p_sourceRot->i_sar_num / cfg->display.sar.den;
>      /* And the same but switching width/height */
> -    const int64_t scaled_width  = (int64_t)width  * display_height * cfg->display.sar.den * source->i_sar_num / height / source->i_sar_den / cfg->display.sar.num;
> +    const int64_t scaled_width  = (int64_t)width  * display_height * cfg->display.sar.den * p_sourceRot->i_sar_num / height / p_sourceRot->i_sar_den / cfg->display.sar.num;
>  
>      /* We keep the solution that avoid filling outside the display */
>      if (scaled_width <= cfg->display.width) {
> -- 
> 1.8.3.4 (Apple Git-47)
> 
> 
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel

-- 
With my kindest regards,

-- 
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device



More information about the vlc-devel mailing list