From 18be33389a78afaa4c0377db057af33d175bb2d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Tue, 3 Sep 2013 11:05:02 +0200 Subject: amcvideodec: Port tiled NV12 conversion to 1.0 --- sys/androidmedia/gstamcvideodec.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/sys/androidmedia/gstamcvideodec.c b/sys/androidmedia/gstamcvideodec.c index 47965e4c9..58ab58ec9 100644 --- a/sys/androidmedia/gstamcvideodec.c +++ b/sys/androidmedia/gstamcvideodec.c @@ -987,26 +987,25 @@ gst_amc_video_dec_fill_buffer (GstAmcVideoDec * self, gint idx, } /* FIXME: This should be in libgstvideo as MT12 or similar, see v4l2 */ case COLOR_QCOM_FormatYUV420PackedSemiPlanar64x32Tile2m8ka:{ + GstVideoFrame vframe; gint width = self->width; gint height = self->height; - gint src_stride = self->stride; - gint dest_luma_stride = GST_VIDEO_INFO_COMP_STRIDE (info, 0); - gint dest_chroma_stride = GST_VIDEO_INFO_COMP_STRIDE (info, 1); + gint dest_luma_stride, dest_chroma_stride; guint8 *src = buf->data + buffer_info->offset; - guint8 *dest_luma = - GST_BUFFER_DATA (outbuf) + GST_VIDEO_INFO_COMP_OFFSET (info, 0); - guint8 *dest_chroma = - GST_BUFFER_DATA (outbuf) + GST_VIDEO_INFO_COMP_OFFSET (info, 1); + guint8 *dest_luma, *dest_chroma; gint y; - const size_t tile_w = (width - 1) / TILE_WIDTH + 1; const size_t tile_w_align = (tile_w + 1) & ~1; - const size_t tile_h_luma = (height - 1) / TILE_HEIGHT + 1; const size_t tile_h_chroma = (height / 2 - 1) / TILE_HEIGHT + 1; - size_t luma_size = tile_w_align * tile_h_luma * TILE_SIZE; + gst_video_frame_map (&vframe, info, outbuf, GST_MAP_WRITE); + dest_luma = GST_VIDEO_FRAME_PLANE_DATA (&vframe, 0); + dest_chroma = GST_VIDEO_FRAME_PLANE_DATA (&vframe, 1); + dest_luma_stride = GST_VIDEO_FRAME_COMP_STRIDE (&vframe, 0); + dest_chroma_stride = GST_VIDEO_FRAME_COMP_STRIDE (&vframe, 1); + if ((luma_size % TILE_GROUP_SIZE) != 0) luma_size = (((luma_size - 1) / TILE_GROUP_SIZE) + 1) * TILE_GROUP_SIZE; @@ -1063,6 +1062,7 @@ gst_amc_video_dec_fill_buffer (GstAmcVideoDec * self, gint idx, } height -= TILE_HEIGHT; } + gst_video_frame_unmap (&vframe); ret = TRUE; break; -- cgit v1.2.1