This is an automatic generated email to let you know that the following patch were queued at the http://git.linuxtv.org/cgit.cgi/v4l-utils.git tree:
Subject: sync-with-kernel: update to the latest kernel Author: Hans Verkuil <[email protected]> Date: Mon Jun 1 08:48:36 2015 +0200 Signed-off-by: Hans Verkuil <[email protected]> contrib/freebsd/include/linux/videodev2.h | 40 ++++++++++++++++ include/linux/dvb/frontend.h | 70 +++++++++++++++++++---------- include/linux/videodev2.h | 40 ++++++++++++++++ lib/include/libdvbv5/dvb-fe.h | 2 +- lib/libdvbv5/dvb-v5.c | 44 +++++++++--------- lib/libdvbv5/dvb-v5.h | 2 +- lib/libdvbv5/gen_dvb_structs.pl | 56 +++++++++++----------- utils/v4l2-ctl/vivid-tpg.c | 71 ++++++++++------------------- 8 files changed, 204 insertions(+), 121 deletions(-) --- http://git.linuxtv.org/cgit.cgi/v4l-utils.git/commit/?id=813a27096caef3416a87921d83bbe7554ccad7cb diff --git a/contrib/freebsd/include/linux/videodev2.h b/contrib/freebsd/include/linux/videodev2.h index 7014c33..4c18455 100644 --- a/contrib/freebsd/include/linux/videodev2.h +++ b/contrib/freebsd/include/linux/videodev2.h @@ -210,6 +210,12 @@ enum v4l2_memory { /* see also http://vektor.theorem.ca/graphics/ycbcr/ */ enum v4l2_colorspace { + /* + * Default colorspace, i.e. let the driver figure it out. + * Can only be used with video capture. + */ + V4L2_COLORSPACE_DEFAULT = 0, + /* SMPTE 170M: used for broadcast NTSC/PAL SDTV */ V4L2_COLORSPACE_SMPTE170M = 1, @@ -252,8 +258,20 @@ enum v4l2_colorspace { /* BT.2020 colorspace, used for UHDTV. */ V4L2_COLORSPACE_BT2020 = 10, + + /* Raw colorspace: for RAW unprocessed images */ + V4L2_COLORSPACE_RAW = 11, }; +/* + * Determine how COLORSPACE_DEFAULT should map to a proper colorspace. + * This depends on whether this is a SDTV image (use SMPTE 170M), an + * HDTV image (use Rec. 709), or something else (use sRGB). + */ +#define V4L2_MAP_COLORSPACE_DEFAULT(is_sdtv, is_hdtv) \ + ((is_sdtv) ? V4L2_COLORSPACE_SMPTE170M : \ + ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB)) + enum v4l2_ycbcr_encoding { /* * Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the @@ -298,6 +316,16 @@ enum v4l2_ycbcr_encoding { V4L2_YCBCR_ENC_SMPTE240M = 8, }; +/* + * Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding. + * This depends on the colorspace. + */ +#define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \ + ((colsp) == V4L2_COLORSPACE_REC709 ? V4L2_YCBCR_ENC_709 : \ + ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \ + ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \ + V4L2_YCBCR_ENC_601))) + enum v4l2_quantization { /* * The default for R'G'B' quantization is always full range, except @@ -310,6 +338,17 @@ enum v4l2_quantization { V4L2_QUANTIZATION_LIM_RANGE = 2, }; +/* + * Determine how QUANTIZATION_DEFAULT should map to a proper quantization. + * This depends on whether the image is RGB or not, the colorspace and the + * Y'CbCr encoding. + */ +#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb, colsp, ycbcr_enc) \ + (((is_rgb) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : \ + (((is_rgb) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \ + (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) ? \ + V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)) + enum v4l2_priority { V4L2_PRIORITY_UNSET = 0, /* not initialized */ V4L2_PRIORITY_BACKGROUND = 1, @@ -436,6 +475,7 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ +#define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */ /* Grey bit-packed formats */ #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ diff --git a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h index 8f74a4e..9254649 100644 --- a/include/linux/dvb/frontend.h +++ b/include/linux/dvb/frontend.h @@ -36,7 +36,7 @@ typedef enum fe_type { } fe_type_t; -typedef enum fe_caps { +enum fe_caps { FE_IS_STUPID = 0, FE_CAN_INVERSION_AUTO = 0x1, FE_CAN_FEC_1_2 = 0x2, @@ -68,7 +68,9 @@ typedef enum fe_caps { FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */ FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */ FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */ -} fe_caps_t; +}; + +typedef enum fe_caps fe_caps_t; struct dvb_frontend_info { @@ -103,23 +105,29 @@ struct dvb_diseqc_slave_reply { }; /* errorcode when no message was received */ -typedef enum fe_sec_voltage { +enum fe_sec_voltage { SEC_VOLTAGE_13, SEC_VOLTAGE_18, SEC_VOLTAGE_OFF -} fe_sec_voltage_t; +}; +typedef enum fe_sec_voltage fe_sec_voltage_t; -typedef enum fe_sec_tone_mode { + +enum fe_sec_tone_mode { SEC_TONE_ON, SEC_TONE_OFF -} fe_sec_tone_mode_t; +}; + +typedef enum fe_sec_tone_mode fe_sec_tone_mode_t; -typedef enum fe_sec_mini_cmd { +enum fe_sec_mini_cmd { SEC_MINI_A, SEC_MINI_B -} fe_sec_mini_cmd_t; +}; + +typedef enum fe_sec_mini_cmd fe_sec_mini_cmd_t; /** @@ -134,7 +142,7 @@ typedef enum fe_sec_mini_cmd { * to reset DiSEqC, tone and parameters */ -typedef enum fe_status { +enum fe_status { FE_HAS_SIGNAL = 0x01, FE_HAS_CARRIER = 0x02, FE_HAS_VITERBI = 0x04, @@ -142,16 +150,19 @@ typedef enum fe_status { FE_HAS_LOCK = 0x10, FE_TIMEDOUT = 0x20, FE_REINIT = 0x40, -} fe_status_t; +}; -typedef enum fe_spectral_inversion { +typedef enum fe_status fe_status_t; + +enum fe_spectral_inversion { INVERSION_OFF, INVERSION_ON, INVERSION_AUTO -} fe_spectral_inversion_t; +}; +typedef enum fe_spectral_inversion fe_spectral_inversion_t; -typedef enum fe_code_rate { +enum fe_code_rate { FEC_NONE = 0, FEC_1_2, FEC_2_3, @@ -165,10 +176,12 @@ typedef enum fe_code_rate { FEC_3_5, FEC_9_10, FEC_2_5, -} fe_code_rate_t; +}; + +typedef enum fe_code_rate fe_code_rate_t; -typedef enum fe_modulation { +enum fe_modulation { QPSK, QAM_16, QAM_32, @@ -183,9 +196,11 @@ typedef enum fe_modulation { APSK_32, DQPSK, QAM_4_NR, -} fe_modulation_t; +}; -typedef enum fe_transmit_mode { +typedef enum fe_modulation fe_modulation_t; + +enum fe_transmit_mode { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_AUTO, @@ -195,9 +210,11 @@ typedef enum fe_transmit_mode { TRANSMISSION_MODE_32K, TRANSMISSION_MODE_C1, TRANSMISSION_MODE_C3780, -} fe_transmit_mode_t; +}; + +typedef enum fe_transmit_mode fe_transmit_mode_t; -typedef enum fe_bandwidth { +enum fe_bandwidth { BANDWIDTH_8_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_6_MHZ, @@ -205,9 +222,11 @@ typedef enum fe_bandwidth { BANDWIDTH_5_MHZ, BANDWIDTH_10_MHZ, BANDWIDTH_1_712_MHZ, -} fe_bandwidth_t; +}; + +typedef enum fe_bandwidth fe_bandwidth_t; -typedef enum fe_guard_interval { +enum fe_guard_interval { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, @@ -219,16 +238,19 @@ typedef enum fe_guard_interval { GUARD_INTERVAL_PN420, GUARD_INTERVAL_PN595, GUARD_INTERVAL_PN945, -} fe_guard_interval_t; +}; +typedef enum fe_guard_interval fe_guard_interval_t; -typedef enum fe_hierarchy { +enum fe_hierarchy { HIERARCHY_NONE, HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_AUTO -} fe_hierarchy_t; +}; + +typedef enum fe_hierarchy fe_hierarchy_t; enum fe_interleaving { INTERLEAVING_NONE, diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index e6d2fbe..6908397 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h @@ -176,6 +176,12 @@ enum v4l2_memory { /* see also http://vektor.theorem.ca/graphics/ycbcr/ */ enum v4l2_colorspace { + /* + * Default colorspace, i.e. let the driver figure it out. + * Can only be used with video capture. + */ + V4L2_COLORSPACE_DEFAULT = 0, + /* SMPTE 170M: used for broadcast NTSC/PAL SDTV */ V4L2_COLORSPACE_SMPTE170M = 1, @@ -218,8 +224,20 @@ enum v4l2_colorspace { /* BT.2020 colorspace, used for UHDTV. */ V4L2_COLORSPACE_BT2020 = 10, + + /* Raw colorspace: for RAW unprocessed images */ + V4L2_COLORSPACE_RAW = 11, }; +/* + * Determine how COLORSPACE_DEFAULT should map to a proper colorspace. + * This depends on whether this is a SDTV image (use SMPTE 170M), an + * HDTV image (use Rec. 709), or something else (use sRGB). + */ +#define V4L2_MAP_COLORSPACE_DEFAULT(is_sdtv, is_hdtv) \ + ((is_sdtv) ? V4L2_COLORSPACE_SMPTE170M : \ + ((is_hdtv) ? V4L2_COLORSPACE_REC709 : V4L2_COLORSPACE_SRGB)) + enum v4l2_ycbcr_encoding { /* * Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the @@ -264,6 +282,16 @@ enum v4l2_ycbcr_encoding { V4L2_YCBCR_ENC_SMPTE240M = 8, }; +/* + * Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding. + * This depends on the colorspace. + */ +#define V4L2_MAP_YCBCR_ENC_DEFAULT(colsp) \ + ((colsp) == V4L2_COLORSPACE_REC709 ? V4L2_YCBCR_ENC_709 : \ + ((colsp) == V4L2_COLORSPACE_BT2020 ? V4L2_YCBCR_ENC_BT2020 : \ + ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_YCBCR_ENC_SMPTE240M : \ + V4L2_YCBCR_ENC_601))) + enum v4l2_quantization { /* * The default for R'G'B' quantization is always full range, except @@ -276,6 +304,17 @@ enum v4l2_quantization { V4L2_QUANTIZATION_LIM_RANGE = 2, }; +/* + * Determine how QUANTIZATION_DEFAULT should map to a proper quantization. + * This depends on whether the image is RGB or not, the colorspace and the + * Y'CbCr encoding. + */ +#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb, colsp, ycbcr_enc) \ + (((is_rgb) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : \ + (((is_rgb) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \ + (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) ? \ + V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE)) + enum v4l2_priority { V4L2_PRIORITY_UNSET = 0, /* not initialized */ V4L2_PRIORITY_BACKGROUND = 1, @@ -402,6 +441,7 @@ struct v4l2_pix_format { #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */ #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */ #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ +#define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */ /* Grey bit-packed formats */ #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */ diff --git a/lib/include/libdvbv5/dvb-fe.h b/lib/include/libdvbv5/dvb-fe.h index 5a842ed..00fb6ab 100644 --- a/lib/include/libdvbv5/dvb-fe.h +++ b/lib/include/libdvbv5/dvb-fe.h @@ -753,7 +753,7 @@ int dvb_fe_set_default_country(struct dvb_v5_fe_parms *parms, extern const unsigned fe_bandwidth_name[8]; extern const char *dvb_v5_name[71]; extern const void *dvb_v5_attr_names[]; -extern const char *delivery_system_name[20]; +extern const char *delivery_system_name[22]; extern const char *fe_code_rate_name[14]; extern const char *fe_modulation_name[15]; extern const char *fe_transmission_mode_name[10]; diff --git a/lib/libdvbv5/dvb-v5.c b/lib/libdvbv5/dvb-v5.c index ade44f1..d804c65 100644 --- a/lib/libdvbv5/dvb-v5.c +++ b/lib/libdvbv5/dvb-v5.c @@ -241,26 +241,28 @@ const char *dvb_v5_name[71] = { [70] = NULL, }; -const char *delivery_system_name[20] = { - [SYS_ATSC] = "ATSC", - [SYS_ATSCMH] = "ATSCMH", - [SYS_CMMB] = "CMMB", - [SYS_DAB] = "DAB", - [SYS_DSS] = "DSS", - [SYS_DTMB] = "DTMB", - [SYS_DVBC_ANNEX_A] = "DVBC/ANNEX_A", - [SYS_DVBC_ANNEX_B] = "DVBC/ANNEX_B", - [SYS_DVBC_ANNEX_C] = "DVBC/ANNEX_C", - [SYS_DVBH] = "DVBH", - [SYS_DVBS] = "DVBS", - [SYS_DVBS2] = "DVBS2", - [SYS_DVBT] = "DVBT", - [SYS_DVBT2] = "DVBT2", - [SYS_ISDBC] = "ISDBC", - [SYS_ISDBS] = "ISDBS", - [SYS_ISDBT] = "ISDBT", - [SYS_TURBO] = "TURBO", - [SYS_UNDEFINED] = "UNDEFINED", - [19] = NULL, +const char *delivery_system_name[22] = { + [SYS_ATSC] = "ATSC", + [SYS_ATSCMH] = "ATSCMH", + [SYS_CMMB] = "CMMB", + [SYS_DAB] = "DAB", + [SYS_DMBTH] = "DMBTH", + [SYS_DSS] = "DSS", + [SYS_DTMB] = "DTMB", + [SYS_DVBC_ANNEX_A] = "DVBC/ANNEX_A", + [SYS_DVBC_ANNEX_AC] = "DVBC/ANNEX_AC", + [SYS_DVBC_ANNEX_B] = "DVBC/ANNEX_B", + [SYS_DVBC_ANNEX_C] = "DVBC/ANNEX_C", + [SYS_DVBH] = "DVBH", + [SYS_DVBS] = "DVBS", + [SYS_DVBS2] = "DVBS2", + [SYS_DVBT] = "DVBT", + [SYS_DVBT2] = "DVBT2", + [SYS_ISDBC] = "ISDBC", + [SYS_ISDBS] = "ISDBS", + [SYS_ISDBT] = "ISDBT", + [SYS_TURBO] = "TURBO", + [SYS_UNDEFINED] = "UNDEFINED", + [21] = NULL, }; diff --git a/lib/libdvbv5/dvb-v5.h b/lib/libdvbv5/dvb-v5.h index bf2f550..8399fca 100644 --- a/lib/libdvbv5/dvb-v5.h +++ b/lib/libdvbv5/dvb-v5.h @@ -26,5 +26,5 @@ const char *fe_inversion_name[4]; const char *fe_pilot_name[4]; const char *fe_rolloff_name[5]; const char *dvb_v5_name[71]; -const char *delivery_system_name[20]; +const char *delivery_system_name[22]; #endif diff --git a/lib/libdvbv5/gen_dvb_structs.pl b/lib/libdvbv5/gen_dvb_structs.pl index 1fab057..e99032c 100755 --- a/lib/libdvbv5/gen_dvb_structs.pl +++ b/lib/libdvbv5/gen_dvb_structs.pl @@ -57,12 +57,12 @@ sub gen_fe($) # # Mode FE_CAPS # - if (m/typedef enum fe_caps\ {/) { + if (m/enum fe_caps\ {/) { $mode = FE_CAPS; next; } if ($mode == FE_CAPS) { - if (m/\} fe_caps_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -76,12 +76,12 @@ sub gen_fe($) # # Mode FE_STATUS # - if (m/typedef enum fe_status\ {/) { + if (m/enum fe_status\ {/) { $mode = FE_STATUS; next; } if ($mode == FE_STATUS) { - if (m/\} fe_status_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -97,12 +97,12 @@ sub gen_fe($) # # Mode FE_CODERATE # - if (m/typedef enum fe_code_rate \{/) { + if (m/enum fe_code_rate \{/) { $mode = FE_CODERATE; next; } if ($mode == FE_CODERATE) { - if (m/\} fe_code_rate_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -117,12 +117,12 @@ sub gen_fe($) # # Mode FE_MODULATION # - if (m/typedef enum fe_modulation \{/) { + if (m/enum fe_modulation \{/) { $mode = FE_MODULATION; next; } if ($mode == FE_MODULATION) { - if (m/\} fe_modulation_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -137,12 +137,12 @@ sub gen_fe($) # # Mode FE_TMODE # - if (m/typedef enum fe_transmit_mode \{/) { + if (m/enum fe_transmit_mode \{/) { $mode = FE_TMODE; next; } if ($mode == FE_TMODE) { - if (m/\} fe_transmit_mode_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -157,12 +157,12 @@ sub gen_fe($) # # Mode FE_BW # - if (m/typedef enum fe_bandwidth \{/) { + if (m/enum fe_bandwidth \{/) { $mode = FE_BW; next; } if ($mode == FE_BW) { - if (m/\} fe_bandwidth_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -183,12 +183,12 @@ sub gen_fe($) # # Mode FE_GINTERVAL # - if (m/typedef enum fe_guard_interval \{/) { + if (m/enum fe_guard_interval \{/) { $mode = FE_GINTERVAL; next; } if ($mode == FE_GINTERVAL) { - if (m/\} fe_guard_interval_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -203,12 +203,12 @@ sub gen_fe($) # # Mode FE_HIERARCHY # - if (m/typedef enum fe_hierarchy \{/) { + if (m/enum fe_hierarchy \{/) { $mode = FE_HIERARCHY; next; } if ($mode == FE_HIERARCHY) { - if (m/\} fe_hierarchy_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -223,12 +223,12 @@ sub gen_fe($) # # Mode FE_VOLTAGE # - if (m/typedef enum fe_sec_voltage \{/) { + if (m/enum fe_sec_voltage \{/) { $mode = FE_VOLTAGE; next; } if ($mode == FE_VOLTAGE) { - if (m/\} fe_sec_voltage_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -243,12 +243,12 @@ sub gen_fe($) # # Mode FE_TONE # - if (m/typedef enum fe_sec_tone_mode \{/) { + if (m/enum fe_sec_tone_mode \{/) { $mode = FE_TONE; next; } if ($mode == FE_TONE) { - if (m/\} fe_sec_tone_mode_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -263,12 +263,12 @@ sub gen_fe($) # # Mode FE_INVERSION # - if (m/typedef enum fe_spectral_inversion \{/) { + if (m/enum fe_spectral_inversion \{/) { $mode = FE_INVERSION; next; } if ($mode == FE_INVERSION) { - if (m/\} fe_spectral_inversion_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -283,12 +283,12 @@ sub gen_fe($) # # Mode FE_PILOT # - if (m/typedef enum fe_pilot \{/) { + if (m/enum fe_pilot \{/) { $mode = FE_PILOT; next; } if ($mode == FE_PILOT) { - if (m/\} fe_pilot_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -303,12 +303,12 @@ sub gen_fe($) # # Mode FE_ROLLOFF # - if (m/typedef enum fe_rolloff \{/) { + if (m/enum fe_rolloff \{/) { $mode =FE_ROLLOFF; next; } if ($mode == FE_ROLLOFF) { - if (m/\} fe_rolloff_t;/) { + if (m/\};/) { $mode = NORMAL; next; } @@ -333,12 +333,12 @@ sub gen_fe($) # # Mode FE_DTS # - if (m/typedef enum fe_delivery_system \{/) { + if (m/enum fe_delivery_system \{/) { $mode = FE_DTS; next; } if ($mode == FE_DTS) { - if (m/\} fe_delivery_system_t;/) { + if (m/\};/) { $mode = NORMAL; next; } diff --git a/utils/v4l2-ctl/vivid-tpg.c b/utils/v4l2-ctl/vivid-tpg.c index 4df755a..b1147f2 100644 --- a/utils/v4l2-ctl/vivid-tpg.c +++ b/utils/v4l2-ctl/vivid-tpg.c @@ -220,6 +220,8 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc) case V4L2_PIX_FMT_ARGB32: case V4L2_PIX_FMT_ABGR32: case V4L2_PIX_FMT_GREY: + case V4L2_PIX_FMT_Y16: + case V4L2_PIX_FMT_Y16_BE: tpg->is_yuv = false; break; case V4L2_PIX_FMT_YUV444: @@ -292,6 +294,7 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc) } switch (fourcc) { + case V4L2_PIX_FMT_GREY: case V4L2_PIX_FMT_RGB332: tpg->twopixelsize[0] = 2; break; @@ -313,6 +316,8 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc) case V4L2_PIX_FMT_YUV444: case V4L2_PIX_FMT_YUV555: case V4L2_PIX_FMT_YUV565: + case V4L2_PIX_FMT_Y16: + case V4L2_PIX_FMT_Y16_BE: tpg->twopixelsize[0] = 2 * 2; break; case V4L2_PIX_FMT_RGB24: @@ -329,9 +334,6 @@ bool tpg_s_fourcc(struct tpg_data *tpg, u32 fourcc) case V4L2_PIX_FMT_YUV32: tpg->twopixelsize[0] = 2 * 4; break; - case V4L2_PIX_FMT_GREY: - tpg->twopixelsize[0] = 2; - break; case V4L2_PIX_FMT_NV12: case V4L2_PIX_FMT_NV21: case V4L2_PIX_FMT_NV12M: @@ -712,7 +714,9 @@ static void precalculate_color(struct tpg_data *tpg, int k) g <<= 4; b <<= 4; } - if (tpg->qual == TPG_QUAL_GRAY || tpg->fourcc == V4L2_PIX_FMT_GREY) { + if (tpg->qual == TPG_QUAL_GRAY || tpg->fourcc == V4L2_PIX_FMT_GREY || + tpg->fourcc == V4L2_PIX_FMT_Y16 || + tpg->fourcc == V4L2_PIX_FMT_Y16_BE) { /* Rec. 709 Luma function */ /* (0.2126, 0.7152, 0.0722) * (255 * 256) */ r = g = b = (13879 * r + 46688 * g + 4713 * b) >> 16; @@ -895,6 +899,14 @@ static void gen_twopix(struct tpg_data *tpg, case V4L2_PIX_FMT_GREY: buf[0][offset] = r_y; break; + case V4L2_PIX_FMT_Y16: + buf[0][offset] = 0; + buf[0][offset+1] = r_y; + break; + case V4L2_PIX_FMT_Y16_BE: + buf[0][offset] = r_y; + buf[0][offset+1] = 0; + break; case V4L2_PIX_FMT_YUV422P: case V4L2_PIX_FMT_YUV420: case V4L2_PIX_FMT_YUV420M: @@ -1640,48 +1652,15 @@ static void tpg_recalc(struct tpg_data *tpg) tpg->recalc_lines = true; tpg->real_ycbcr_enc = tpg->ycbcr_enc; tpg->real_quantization = tpg->quantization; - if (tpg->ycbcr_enc == V4L2_YCBCR_ENC_DEFAULT) { - switch (tpg->colorspace) { - case V4L2_COLORSPACE_REC709: - tpg->real_ycbcr_enc = V4L2_YCBCR_ENC_709; - break; - case V4L2_COLORSPACE_SRGB: - tpg->real_ycbcr_enc = V4L2_YCBCR_ENC_SYCC; - break; - case V4L2_COLORSPACE_BT2020: - tpg->real_ycbcr_enc = V4L2_YCBCR_ENC_BT2020; - break; - case V4L2_COLORSPACE_SMPTE240M: - tpg->real_ycbcr_enc = V4L2_YCBCR_ENC_SMPTE240M; - break; - case V4L2_COLORSPACE_SMPTE170M: - case V4L2_COLORSPACE_470_SYSTEM_M: - case V4L2_COLORSPACE_470_SYSTEM_BG: - case V4L2_COLORSPACE_ADOBERGB: - default: - tpg->real_ycbcr_enc = V4L2_YCBCR_ENC_601; - break; - } - } - if (tpg->quantization == V4L2_QUANTIZATION_DEFAULT) { - tpg->real_quantization = V4L2_QUANTIZATION_FULL_RANGE; - if (tpg->is_yuv) { - switch (tpg->real_ycbcr_enc) { - case V4L2_YCBCR_ENC_SYCC: - case V4L2_YCBCR_ENC_XV601: - case V4L2_YCBCR_ENC_XV709: - break; - default: - tpg->real_quantization = - V4L2_QUANTIZATION_LIM_RANGE; - break; - } - } else if (tpg->colorspace == V4L2_COLORSPACE_BT2020) { - /* R'G'B' BT.2020 is limited range */ - tpg->real_quantization = - V4L2_QUANTIZATION_LIM_RANGE; - } - } + if (tpg->ycbcr_enc == V4L2_YCBCR_ENC_DEFAULT) + tpg->real_ycbcr_enc = + V4L2_MAP_YCBCR_ENC_DEFAULT(tpg->colorspace); + + if (tpg->quantization == V4L2_QUANTIZATION_DEFAULT) + tpg->real_quantization = + V4L2_MAP_QUANTIZATION_DEFAULT(!tpg->is_yuv, + tpg->colorspace, tpg->real_ycbcr_enc); + tpg_precalculate_colors(tpg); } if (tpg->recalc_square_border) { _______________________________________________ linuxtv-commits mailing list [email protected] http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits
