summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <slomo@circular-chaos.org>2013-09-03 11:05:02 +0200
committerSebastian Dröge <slomo@circular-chaos.org>2013-09-03 11:09:55 +0200
commit18be33389a78afaa4c0377db057af33d175bb2d2 (patch)
tree8272d8f2fab26c6eddc9c3eb370b950a01535289
parent8eb8dd8f2f5161e9099fe5092b0a88384debf181 (diff)
downloadgstreamer-plugins-bad-18be33389a78afaa4c0377db057af33d175bb2d2.tar.gz
amcvideodec: Port tiled NV12 conversion to 1.0
-rw-r--r--sys/androidmedia/gstamcvideodec.c20
1 files 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;