[vlc-commits] picture: round the number of visible lines to the upper multiple

Steve Lhomme git at videolan.org
Wed Apr 18 11:03:10 CEST 2018


vlc/vlc-3.0 | branch: master | Steve Lhomme <robux4 at ycbcr.xyz> | Tue Apr 17 14:41:43 2018 +0200| [6dbcc5d5a8127d3369e49cee620b02ab7e4df55c] | committer: Thomas Guillem

picture: round the number of visible lines to the upper multiple

The U/V lines of 4:2:0 chroma are divided by 2. But if the height is an odd
number we end up missing the last line for these planes.

Fixes #20290

(cherry picked from commit 81aed6c302c1d3e90267fbdea07e9db361632043)
Signed-off-by: Thomas Guillem <thomas at gllm.fr>

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

 src/misc/picture.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/misc/picture.c b/src/misc/picture.c
index f6671edd51..be51a46d6a 100644
--- a/src/misc/picture.c
+++ b/src/misc/picture.c
@@ -192,9 +192,9 @@ int picture_Setup( picture_t *p_picture, const video_format_t *restrict fmt )
         plane_t *p = &p_picture->p[i];
 
         p->i_lines         = (i_height_aligned + i_height_extra ) * p_dsc->p[i].h.num / p_dsc->p[i].h.den;
-        p->i_visible_lines = fmt->i_visible_height * p_dsc->p[i].h.num / p_dsc->p[i].h.den;
+        p->i_visible_lines = (fmt->i_visible_height + (p_dsc->p[i].h.den - 1)) * p_dsc->p[i].h.num / p_dsc->p[i].h.den;
         p->i_pitch         = i_width_aligned * p_dsc->p[i].w.num / p_dsc->p[i].w.den * p_dsc->pixel_size;
-        p->i_visible_pitch = fmt->i_visible_width * p_dsc->p[i].w.num / p_dsc->p[i].w.den * p_dsc->pixel_size;
+        p->i_visible_pitch = (fmt->i_visible_width + (p_dsc->p[i].w.den - 1)) * p_dsc->p[i].w.num / p_dsc->p[i].w.den * p_dsc->pixel_size;
         p->i_pixel_pitch   = p_dsc->pixel_size;
 
         assert( (p->i_pitch % 16) == 0 );



More information about the vlc-commits mailing list