[vlc-commits] display: apply the same source aspect ratio cleaning on init and source update

Steve Lhomme git at videolan.org
Thu Jun 20 10:03:21 CEST 2019


vlc | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Tue Jun 18 07:58:26 2019 +0200| [fecefe0b429d7667a68914ebce5dd5287139b1c6] | committer: Steve Lhomme

display: apply the same source aspect ratio cleaning on init and source update

In push we still need to clean the format every time the source changes. Before
it was done before the display pool was allocated and kept all along.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=fecefe0b429d7667a68914ebce5dd5287139b1c6
---

 src/video_output/display.c      | 22 ++++++++++++++++------
 src/video_output/display.h      |  1 +
 src/video_output/video_output.c |  7 +------
 3 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/src/video_output/display.c b/src/video_output/display.c
index f295ad6731..2173bb084e 100644
--- a/src/video_output/display.c
+++ b/src/video_output/display.c
@@ -588,18 +588,28 @@ static int vout_SetSourceAspect(vout_display_t *vd,
     return ret;
 }
 
+void VoutFixFormatAR(video_format_t *fmt)
+{
+    vlc_ureduce( &fmt->i_sar_num, &fmt->i_sar_den,
+                 fmt->i_sar_num,  fmt->i_sar_den, 50000 );
+    if (fmt->i_sar_num <= 0 || fmt->i_sar_den <= 0) {
+        fmt->i_sar_num = 1;
+        fmt->i_sar_den = 1;
+    }
+}
+
 void vout_UpdateDisplaySourceProperties(vout_display_t *vd, const video_format_t *source)
 {
     vout_display_priv_t *osys = container_of(vd, vout_display_priv_t, display);
     int err1 = 0, err2 = 0;
 
-    if (source->i_sar_num * osys->source.i_sar_den !=
-        source->i_sar_den * osys->source.i_sar_num) {
+    video_format_t fixed_src = *source;
+    VoutFixFormatAR( &fixed_src );
+    if (fixed_src.i_sar_num * osys->source.i_sar_den !=
+        fixed_src.i_sar_den * osys->source.i_sar_num) {
 
-        osys->source.i_sar_num = source->i_sar_num;
-        osys->source.i_sar_den = source->i_sar_den;
-        vlc_ureduce(&osys->source.i_sar_num, &osys->source.i_sar_den,
-                    osys->source.i_sar_num, osys->source.i_sar_den, 0);
+        osys->source.i_sar_num = fixed_src.i_sar_num;
+        osys->source.i_sar_den = fixed_src.i_sar_den;
 
         /* FIXME it will override any AR that the user would have forced */
         err1 = vout_SetSourceAspect(vd, osys->source.i_sar_num,
diff --git a/src/video_output/display.h b/src/video_output/display.h
index f9100d98ef..35138c5c70 100644
--- a/src/video_output/display.h
+++ b/src/video_output/display.h
@@ -23,3 +23,4 @@
 #include "vout_wrapper.h"
 
 void vout_UpdateDisplaySourceProperties(vout_display_t *vd, const video_format_t *);
+void VoutFixFormatAR(video_format_t *);
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 1ae84bbb1c..a3ef144da1 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -87,12 +87,7 @@ static void VoutFixFormat(video_format_t *dst, const video_format_t *src)
 {
     video_format_Copy(dst, src);
     dst->i_chroma = vlc_fourcc_GetCodec(VIDEO_ES, src->i_chroma);
-    vlc_ureduce( &dst->i_sar_num, &dst->i_sar_den,
-                 src->i_sar_num,  src->i_sar_den, 50000 );
-    if (dst->i_sar_num <= 0 || dst->i_sar_den <= 0) {
-        dst->i_sar_num = 1;
-        dst->i_sar_den = 1;
-    }
+    VoutFixFormatAR( dst );
     video_format_FixRgb(dst);
 }
 



More information about the vlc-commits mailing list