Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0476a83 authored by Sylwester Nawrocki's avatar Sylwester Nawrocki Committed by Mauro Carvalho Chehab
Browse files

[media] V4L: Add capability flags for memory-to-memory devices



This patch adds new V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDEO_M2M_MPLANE
capability flags that are intended to be used for memory-to-memory (M2M)
devices, instead of ORed V4L2_CAP_VIDEO_CAPTURE and V4L2_CAP_VIDEO_OUTPUT.

V4L2_CAP_VIDEO_M2M flag is added at the drivers, CAPTURE and OUTPUT
capability flags are left untouched and will be removed in future,
after a transition period required for existing applications to be
adapted to check only for V4L2_CAP_VIDEO_M2M.

Signed-off-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Acked-by: default avatarKamil Debski <k.debski@samsung.com>
Acked-by: default avatarAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 6126b912
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -2471,6 +2471,15 @@ that used it. It was originally scheduled for removal in 2.6.35.
      </orderedlist>
    </section>

    <section>
      <title>V4L2 in Linux 3.6</title>
      <orderedlist>
        <listitem>
	  <para>Added V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDEO_M2M_MPLANE capabilities.</para>
        </listitem>
      </orderedlist>
    </section>

    <section id="other">
      <title>Relation of V4L2 to other Linux multimedia APIs</title>

+13 −0
Original line number Diff line number Diff line
@@ -191,6 +191,19 @@ linkend="output">Video Output</link> interface.</entry>
	    <link linkend="planar-apis">multi-planar API</link> through the
	    <link linkend="output">Video Output</link> interface.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_CAP_VIDEO_M2M</constant></entry>
	    <entry>0x00004000</entry>
	    <entry>The device supports the single-planar API through the
	    Video Memory-To-Memory interface.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_CAP_VIDEO_M2M_MPLANE</constant></entry>
	    <entry>0x00008000</entry>
	    <entry>The device supports the
	    <link linkend="planar-apis">multi-planar API</link> through the
	    Video Memory-To-Memory  interface.</entry>
	  </row>
	  <row>
	    <entry><constant>V4L2_CAP_VIDEO_OVERLAY</constant></entry>
	    <entry>0x00000004</entry>
+1 −2
Original line number Diff line number Diff line
@@ -431,8 +431,7 @@ static int vidioc_querycap(struct file *file, void *priv,
	strncpy(cap->driver, MEM2MEM_NAME, sizeof(cap->driver) - 1);
	strncpy(cap->card, MEM2MEM_NAME, sizeof(cap->card) - 1);
	strlcpy(cap->bus_info, MEM2MEM_NAME, sizeof(cap->bus_info));
	cap->device_caps = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT
			  | V4L2_CAP_STREAMING;
	cap->capabilities = V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
	cap->capabilities = cap->device_caps | V4L2_CAP_DEVICE_CAPS;
	return 0;
}
+7 −3
Original line number Diff line number Diff line
@@ -396,9 +396,13 @@ static int vidioc_querycap(struct file *file, void *priv,
{
	strncpy(cap->driver, MEM2MEM_NAME, sizeof(cap->driver) - 1);
	strncpy(cap->card, MEM2MEM_NAME, sizeof(cap->card) - 1);
	cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT
			  | V4L2_CAP_STREAMING;

	/*
	 * This is only a mem-to-mem video device. The capture and output
	 * device capability flags are left only for backward compatibility
	 * and are scheduled for removal.
	 */
	cap->capabilities = V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_VIDEO_OUTPUT |
			    V4L2_CAP_VIDEO_M2M | V4L2_CAP_STREAMING;
	return 0;
}

+6 −1
Original line number Diff line number Diff line
@@ -259,7 +259,12 @@ static int fimc_m2m_querycap(struct file *file, void *fh,
	strncpy(cap->driver, fimc->pdev->name, sizeof(cap->driver) - 1);
	strncpy(cap->card, fimc->pdev->name, sizeof(cap->card) - 1);
	cap->bus_info[0] = 0;
	cap->capabilities = V4L2_CAP_STREAMING |
	/*
	 * This is only a mem-to-mem video device. The capture and output
	 * device capability flags are left only for backward compatibility
	 * and are scheduled for removal.
	 */
	cap->capabilities = V4L2_CAP_STREAMING | V4L2_CAP_VIDEO_M2M_MPLANE |
		V4L2_CAP_VIDEO_CAPTURE_MPLANE | V4L2_CAP_VIDEO_OUTPUT_MPLANE;

	return 0;
Loading