Thread (6 messages) 6 messages, 3 authors, 2015-12-17

[PATCH v2 6/8] [Media] vcodec: mediatek: Add Mediatek V4L2 Video Encoder Driver

From: Hans Verkuil <hidden>
Date: 2015-12-16 13:45:01
Also in: linux-devicetree, linux-media, linux-mediatek, lkml

On 12/16/15 14:17, tiffany lin wrote:
Hi Hans,


On Tue, 2015-12-15 at 15:17 +0100, Hans Verkuil wrote:
quoted
On 12/15/15 14:51, tiffany lin wrote:
quoted
We are not familiar with v4l2-compliance utility, we will check how to
use it.
It's part of v4l-utils.git (http://git.linuxtv.org/v4l-utils.git/). There is a
fairly decent man page. It does exhaustive compliance tests for V4L2 devices.

That said, the support for memory-to-memory codec devices is not great, so I wouldn't
trust any failures it reports when using the streaming tests (i.e. the --stream*
options). By default just run 'v4l2-compliance -d /dev/videoX' to do the compliance
test.

Note: before I accept this driver I do want to see that compliance test output!
Got it. We will provide it in next version.
Now our driver is developed and run base on kernel v3.18.
V4L2 and vb2 have some difference between Linux 4.4-rc1 and 3.18 kernel.
Is it ok we provided test output base on v3.18 or we need to base on
4.4-rc1?
I'm actually not sure if the latest v4l2-compliance test suite will work with a 3.18
kernel. so either you have to go back to an older version of v4l2-compliance that
works with 3.18 (go back to commit 4a57509a8334aca6ca8e81cd3beb08d5be397dac, that
might do the trick) or (and that's what I recommend) go with the latest kernel.

For the media tree that is http://git.linuxtv.org/media_tree.git/log/.

The final version of the patch has to be against that kernel anyway.
quoted
quoted
quoted
quoted
+}
+
+int m2mctx_venc_queue_init(void *priv, struct vb2_queue *src_vq,
+			   struct vb2_queue *dst_vq)
+{
+	struct mtk_vcodec_ctx *ctx = priv;
+	int ret;
+
+	src_vq->type		= V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE;
+	src_vq->io_modes	= VB2_DMABUF | VB2_MMAP | VB2_USERPTR;
You're using videobuf2-dma-contig, so VB2_USERPTR is generally useless in that
case. I would drop it.
Sorry, I don't get it. 
We are using videobuf2-dma-contig, but we also using VB2_USERPTR.
???? In that case the user pointer you pass in must point to physically contiguous
memory. Which means you got it through some magic. Typically what should be used
are dmabuf handles to pass buffers around between different subsystems.

The use of VB2_USERPTR for that purpose is deprecated.

Or am I misunderstanding you as well?
Our encoder support all three modes.
In case that A driver + Encode driver flow, OUTPUT buffer will be
VB2_DMABUF from A driver.
In case that read YCbCr frame data from file and encode them to bit
stream flow, we use VB2_USERPTR and VB2_MMAP.
In VB2_USERPTR case, videobuf2-dma-contig will help us get continuous
dma address.
Our chip has IOMMU and M4U that help us get continuous phy address for
encode HW.

http://lists.infradead.org/pipermail/linux-mediatek/2015-October/002525.html
Ah, OK. Have you tested this with malloc()ed buffers? Just asking :-)

Regards,

	Hans
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help