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

Commit c96fd46a authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab
Browse files

[media] v4l: Add premultiplied alpha flag for pixel formats



When set, the new V4L2_PIX_FMT_FLAG_PREMUL_ALPHA flag indicates that the
pixel values are premultiplied by the alpha channel value.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent d52e2381
Loading
Loading
Loading
Loading
+30 −1
Original line number Diff line number Diff line
@@ -135,6 +135,12 @@ extended fields were set to zero. On return drivers must set the
<constant>V4L2_PIX_FMT_PRIV_MAGIC</constant> and all the extended fields to
applicable values.</para></entry>
	</row>
	<row>
	  <entry>__u32</entry>
	  <entry><structfield>flags</structfield></entry>
	    <entry>Flags set by the application or driver, see <xref
linkend="format-flags" />.</entry>
	</row>
      </tbody>
    </tgroup>
  </table>
@@ -222,7 +228,13 @@ codes can be used.</entry>
        </row>
	<row>
	  <entry>__u8</entry>
          <entry><structfield>reserved[11]</structfield></entry>
	  <entry><structfield>flags</structfield></entry>
	  <entry>Flags set by the application or driver, see <xref
linkend="format-flags" />.</entry>
	</row>
        <row>
          <entry>__u8</entry>
          <entry><structfield>reserved[10]</structfield></entry>
          <entry>Reserved for future extensions. Should be zeroed by the
           application.</entry>
        </row>
@@ -1079,4 +1091,21 @@ concatenated to form the JPEG stream. </para>
	</tbody>
      </tgroup>
    </table>

    <table frame="none" pgwide="1" id="format-flags">
      <title>Format Flags</title>
      <tgroup cols="3">
	&cs-def;
	<tbody valign="top">
	  <row>
	    <entry><constant>V4L2_PIX_FMT_FLAG_PREMUL_ALPHA</constant></entry>
	    <entry>0x00000001</entry>
	    <entry>The color values are premultiplied by the alpha channel
value. For example, if a light blue pixel with 50% transparency was described by
RGBA values (128, 192, 255, 128), the same pixel described with premultiplied
colors would be described by RGBA values (64, 96, 128, 128) </entry>
	  </row>
	</tbody>
      </tgroup>
    </table>
  </section>
+1 −1
Original line number Diff line number Diff line
@@ -155,7 +155,7 @@ applications. -->
	<revnumber>3.16</revnumber>
	<date>2014-05-27</date>
	<authorinitials>lp</authorinitials>
	<revremark>Extended &v4l2-pix-format;.
	<revremark>Extended &v4l2-pix-format;. Added format flags.
	</revremark>
      </revision>

+3 −2
Original line number Diff line number Diff line
@@ -256,7 +256,8 @@ static void v4l_print_format(const void *arg, bool write_only)
		pix = &p->fmt.pix;
		pr_cont(", width=%u, height=%u, "
			"pixelformat=%c%c%c%c, field=%s, "
			"bytesperline=%u, sizeimage=%u, colorspace=%d\n",
			"bytesperline=%u, sizeimage=%u, colorspace=%d, "
			"flags %u\n",
			pix->width, pix->height,
			(pix->pixelformat & 0xff),
			(pix->pixelformat >>  8) & 0xff,
@@ -264,7 +265,7 @@ static void v4l_print_format(const void *arg, bool write_only)
			(pix->pixelformat >> 24) & 0xff,
			prt_names(pix->field, v4l2_field_names),
			pix->bytesperline, pix->sizeimage,
			pix->colorspace);
			pix->colorspace, pix->flags);
		break;
	case V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE:
	case V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE:
+7 −1
Original line number Diff line number Diff line
@@ -288,6 +288,7 @@ struct v4l2_pix_format {
	__u32          		sizeimage;
	__u32			colorspace;	/* enum v4l2_colorspace */
	__u32			priv;		/* private data, depends on pixelformat */
	__u32			flags;		/* format flags (V4L2_PIX_FMT_FLAG_*) */
};

/*      Pixel format         FOURCC                          depth  Description  */
@@ -452,6 +453,9 @@ struct v4l2_pix_format {
/* priv field value to indicates that subsequent fields are valid. */
#define V4L2_PIX_FMT_PRIV_MAGIC		0xfeedcafe

/* Flags */
#define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA	0x00000001

/*
 *	F O R M A T   E N U M E R A T I O N
 */
@@ -1754,6 +1758,7 @@ struct v4l2_plane_pix_format {
 * @colorspace:		enum v4l2_colorspace; supplemental to pixelformat
 * @plane_fmt:		per-plane information
 * @num_planes:		number of planes for this format
 * @flags:		format flags (V4L2_PIX_FMT_FLAG_*)
 */
struct v4l2_pix_format_mplane {
	__u32				width;
@@ -1764,7 +1769,8 @@ struct v4l2_pix_format_mplane {

	struct v4l2_plane_pix_format	plane_fmt[VIDEO_MAX_PLANES];
	__u8				num_planes;
	__u8				reserved[11];
	__u8				flags;
	__u8				reserved[10];
} __attribute__ ((packed));

/**