[vlc-commits] mmal: Fix plane offset computation
Julian Scheel
git at videolan.org
Wed Jun 17 14:21:19 CEST 2015
vlc | branch: master | Julian Scheel <julian at 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 <julian at jusst.de>
Signed-off-by: Jean-Baptiste Kempf <jb at 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);
More information about the vlc-commits
mailing list