media fixes for v4.10-rc8
-----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJYosRpAAoJEAhfPr2O5OEVAU4P/RB/A9v422J1aFixQ1fPp89P xRp6m6xj2ln/r/ydl5j3LgSzA6nCSQT4p1jRalFRdpk/FyS4v6wE4RhaIDGW/Q1P WDwRfcyrUdWIPZR6T0289m8eTHG0w4ewbEHPm5iG5UZQHZsObEpmNJD6mOSm00N4 0JhAmJIccWxIjObIajZizQ9BEUUE+T1PQgDf7QiTHFb3d1UrNXYu/cka8Ys9lafu kR//BPRxLsCXWWHf45ZHgYH+V214haGcVhtlf1ehALlZQ3wNYZaC7XvH8G795ykR ayrc77qLj2NROhTG4rvljyOH4L0I1IH0k2bC633FrPpgzOCCqNLBMLwn5YhFN3Z+ QNO2ChxDmZlWcqbepkOmK6IK2HmIulM4AOK0gQa+J4inYM3w2aZD3egaFFsx2I0+ 1y7KSKAULNjEZanx80t3rxGw+bnIh80eD3n2ODgAU0spqEsm5cb3C3JIN3qeS8KQ j6vVawB2+gTRCRIHWDBHnYUzkn2SPINp1bRajuxryH1u5TKgvs02NQB84i9mdNR+ iRpH7Yn8BIuA2w0sGGjbyBYyb6IVFrdx9yS7xsr4CbKYR8tWvEsqRxlN7V16J30M crxj2OM+yAIXLTSB1bW892WL51JqJRGF3lFnUGS4R4PH9tMvR4YN/PT8yv0wZJC/ SfwwJ38/yZBkZuRSNEpt =OTHY -----END PGP SIGNATURE----- Merge tag 'media/v4.10-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media fixes from Mauro Carvalho Chehab: "A colorspace regression fix in V4L2 core and a CEC core bug that makes it discard valid messages" * tag 'media/v4.10-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: [media] cec: initiator should be the same as the destination for, poll [media] videodev2.h: go back to limited range Y'CbCr for SRGB and, ADOBERGB
This commit is contained in:
commit
747ae0a96f
3 changed files with 23 additions and 14 deletions
|
@ -211,7 +211,13 @@ Colorspace sRGB (V4L2_COLORSPACE_SRGB)
|
|||
The :ref:`srgb` standard defines the colorspace used by most webcams
|
||||
and computer graphics. The default transfer function is
|
||||
``V4L2_XFER_FUNC_SRGB``. The default Y'CbCr encoding is
|
||||
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is full range.
|
||||
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited range.
|
||||
|
||||
Note that the :ref:`sycc` standard specifies full range quantization,
|
||||
however all current capture hardware supported by the kernel convert
|
||||
R'G'B' to limited range Y'CbCr. So choosing full range as the default
|
||||
would break how applications interpret the quantization range.
|
||||
|
||||
The chromaticities of the primary colors and the white reference are:
|
||||
|
||||
|
||||
|
@ -276,7 +282,7 @@ the following ``V4L2_YCBCR_ENC_601`` encoding as defined by :ref:`sycc`:
|
|||
|
||||
Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
|
||||
[-0.5…0.5]. This transform is identical to one defined in SMPTE
|
||||
170M/BT.601. The Y'CbCr quantization is full range.
|
||||
170M/BT.601. The Y'CbCr quantization is limited range.
|
||||
|
||||
|
||||
.. _col-adobergb:
|
||||
|
@ -288,10 +294,15 @@ The :ref:`adobergb` standard defines the colorspace used by computer
|
|||
graphics that use the AdobeRGB colorspace. This is also known as the
|
||||
:ref:`oprgb` standard. The default transfer function is
|
||||
``V4L2_XFER_FUNC_ADOBERGB``. The default Y'CbCr encoding is
|
||||
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is full
|
||||
range. The chromaticities of the primary colors and the white reference
|
||||
are:
|
||||
``V4L2_YCBCR_ENC_601``. The default Y'CbCr quantization is limited
|
||||
range.
|
||||
|
||||
Note that the :ref:`oprgb` standard specifies full range quantization,
|
||||
however all current capture hardware supported by the kernel convert
|
||||
R'G'B' to limited range Y'CbCr. So choosing full range as the default
|
||||
would break how applications interpret the quantization range.
|
||||
|
||||
The chromaticities of the primary colors and the white reference are:
|
||||
|
||||
|
||||
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
||||
|
@ -344,7 +355,7 @@ the following ``V4L2_YCBCR_ENC_601`` encoding:
|
|||
|
||||
Y' is clamped to the range [0…1] and Cb and Cr are clamped to the range
|
||||
[-0.5…0.5]. This transform is identical to one defined in SMPTE
|
||||
170M/BT.601. The Y'CbCr quantization is full range.
|
||||
170M/BT.601. The Y'CbCr quantization is limited range.
|
||||
|
||||
|
||||
.. _col-bt2020:
|
||||
|
|
|
@ -612,8 +612,7 @@ int cec_transmit_msg_fh(struct cec_adapter *adap, struct cec_msg *msg,
|
|||
}
|
||||
memset(msg->msg + msg->len, 0, sizeof(msg->msg) - msg->len);
|
||||
if (msg->len == 1) {
|
||||
if (cec_msg_initiator(msg) != 0xf ||
|
||||
cec_msg_destination(msg) == 0xf) {
|
||||
if (cec_msg_destination(msg) == 0xf) {
|
||||
dprintk(1, "cec_transmit_msg: invalid poll message\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -638,7 +637,7 @@ int cec_transmit_msg_fh(struct cec_adapter *adap, struct cec_msg *msg,
|
|||
dprintk(1, "cec_transmit_msg: destination is the adapter itself\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
if (cec_msg_initiator(msg) != 0xf &&
|
||||
if (msg->len > 1 && adap->is_configured &&
|
||||
!cec_has_log_addr(adap, cec_msg_initiator(msg))) {
|
||||
dprintk(1, "cec_transmit_msg: initiator has unknown logical address %d\n",
|
||||
cec_msg_initiator(msg));
|
||||
|
@ -1072,7 +1071,7 @@ static int cec_config_log_addr(struct cec_adapter *adap,
|
|||
|
||||
/* Send poll message */
|
||||
msg.len = 1;
|
||||
msg.msg[0] = 0xf0 | log_addr;
|
||||
msg.msg[0] = (log_addr << 4) | log_addr;
|
||||
err = cec_transmit_msg_fh(adap, &msg, NULL, true);
|
||||
|
||||
/*
|
||||
|
|
|
@ -362,8 +362,8 @@ enum v4l2_quantization {
|
|||
/*
|
||||
* The default for R'G'B' quantization is always full range, except
|
||||
* for the BT2020 colorspace. For Y'CbCr the quantization is always
|
||||
* limited range, except for COLORSPACE_JPEG, SRGB, ADOBERGB,
|
||||
* XV601 or XV709: those are full range.
|
||||
* limited range, except for COLORSPACE_JPEG, XV601 or XV709: those
|
||||
* are full range.
|
||||
*/
|
||||
V4L2_QUANTIZATION_DEFAULT = 0,
|
||||
V4L2_QUANTIZATION_FULL_RANGE = 1,
|
||||
|
@ -379,8 +379,7 @@ enum v4l2_quantization {
|
|||
(((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? \
|
||||
V4L2_QUANTIZATION_LIM_RANGE : \
|
||||
(((is_rgb_or_hsv) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \
|
||||
(ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) || \
|
||||
(colsp) == V4L2_COLORSPACE_ADOBERGB || (colsp) == V4L2_COLORSPACE_SRGB ? \
|
||||
(ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) ? \
|
||||
V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))
|
||||
|
||||
enum v4l2_priority {
|
||||
|
|
Loading…
Reference in a new issue