vlc | branch: master | Julian Scheel <jul...@jusst.de> | Wed Jun 17 11:28:33 2015 +0200| [73689dd333148138353fbd82359ba37215b1c36d] | committer: Jean-Baptiste Kempf
mmal: Fix plane offset computation The computation of plane offsets was broken after recent refactorings. Fix it by doing the actual computation of offsets in the picture lock function. Signed-off-by: Julian Scheel <jul...@jusst.de> Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=73689dd333148138353fbd82359ba37215b1c36d --- modules/hw/mmal/mmal_picture.c | 8 ++++++-- modules/hw/mmal/vout.c | 5 ----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/modules/hw/mmal/mmal_picture.c b/modules/hw/mmal/mmal_picture.c index 584227e..d127c27 100644 --- a/modules/hw/mmal/mmal_picture.c +++ b/modules/hw/mmal/mmal_picture.c @@ -33,9 +33,13 @@ int mmal_picture_lock(picture_t *picture) MMAL_BUFFER_HEADER_T *buffer = pic_sys->buffer; buffer->user_data = picture; + + int offset = 0; picture->p[0].p_pixels = buffer->data; - picture->p[1].p_pixels += (ptrdiff_t)buffer->data; - picture->p[2].p_pixels += (ptrdiff_t)buffer->data; + for (int i = 1; i < picture->i_planes; i++) { + offset = offset + picture->p[i - 1].i_pitch * picture->p[i - 1].i_lines; + picture->p[i].p_pixels = (ptrdiff_t)buffer->data + offset; + } pic_sys->displayed = false; diff --git a/modules/hw/mmal/vout.c b/modules/hw/mmal/vout.c index 0d13572..b3223f0 100644 --- a/modules/hw/mmal/vout.c +++ b/modules/hw/mmal/vout.c @@ -180,7 +180,6 @@ static int Open(vlc_object_t *object) uint32_t buffer_pitch, buffer_height; vout_display_place_t place; MMAL_DISPLAYREGION_T display_region; - uint32_t offsets[3]; MMAL_STATUS_T status; int ret = VLC_SUCCESS; unsigned i; @@ -273,7 +272,6 @@ static int Open(vlc_object_t *object) goto out; } - offsets[0] = 0; for (i = 0; i < sys->i_planes; ++i) { sys->planes[i].i_lines = buffer_height; sys->planes[i].i_pitch = buffer_pitch; @@ -281,14 +279,11 @@ static int Open(vlc_object_t *object) sys->planes[i].i_visible_pitch = vd->fmt.i_visible_width; if (i > 0) { - offsets[i] = offsets[i - 1] + sys->planes[i - 1].i_pitch * sys->planes[i - 1].i_lines; sys->planes[i].i_lines /= 2; sys->planes[i].i_pitch /= 2; sys->planes[i].i_visible_lines /= 2; sys->planes[i].i_visible_pitch /= 2; } - - sys->planes[i].p_pixels = (uint8_t *)offsets[i]; } vlc_mutex_init(&sys->buffer_mutex); _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits