mirror of
https://mirror.skon.top/https://github.com/FFmpeg/FFmpeg
synced 2026-04-20 21:00:41 +08:00
lavu: add support for Panasonic V-Gamut
This commit is contained in:
@@ -1665,6 +1665,7 @@ static const AVOption libplacebo_options[] = {
|
||||
{"smpte432", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_SMPTE432}, INT_MIN, INT_MAX, STATIC, .unit = "color_primaries"},
|
||||
{"jedec-p22", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_JEDEC_P22}, INT_MIN, INT_MAX, STATIC, .unit = "color_primaries"},
|
||||
{"ebu3213", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_EBU3213}, INT_MIN, INT_MAX, STATIC, .unit = "color_primaries"},
|
||||
{"vgamut", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_V_GAMUT}, INT_MIN, INT_MAX, STATIC, .unit = "color_primaries"},
|
||||
|
||||
{"color_trc", "select color transfer", OFFSET(color_trc), AV_OPT_TYPE_INT, {.i64=-1}, -1, AVCOL_TRC_NB-1, DYNAMIC, .unit = "color_trc"},
|
||||
{"auto", "keep the same color transfer", 0, AV_OPT_TYPE_CONST, {.i64=-1}, INT_MIN, INT_MAX, STATIC, .unit = "color_trc"},
|
||||
|
||||
@@ -66,7 +66,7 @@ static const AVOption setparams_options[] = {
|
||||
{"pc", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, FLAGS, .unit = "range"},
|
||||
{"jpeg", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_RANGE_JPEG}, 0, 0, FLAGS, .unit = "range"},
|
||||
|
||||
{"color_primaries", "select color primaries", OFFSET(color_primaries), AV_OPT_TYPE_INT, {.i64=-1}, -1, AVCOL_PRI_NB-1, FLAGS, .unit = "color_primaries"},
|
||||
{"color_primaries", "select color primaries", OFFSET(color_primaries), AV_OPT_TYPE_INT, {.i64=-1}, -1, AVCOL_PRI_EXT_NB-1, FLAGS, .unit = "color_primaries"},
|
||||
{"auto", "keep the same color primaries", 0, AV_OPT_TYPE_CONST, {.i64=-1}, 0, 0, FLAGS, .unit = "color_primaries"},
|
||||
{"bt709", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_BT709}, 0, 0, FLAGS, .unit = "color_primaries"},
|
||||
{"unknown", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_UNSPECIFIED}, 0, 0, FLAGS, .unit = "color_primaries"},
|
||||
@@ -81,6 +81,7 @@ static const AVOption setparams_options[] = {
|
||||
{"smpte432", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_SMPTE432}, 0, 0, FLAGS, .unit = "color_primaries"},
|
||||
{"jedec-p22", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_JEDEC_P22}, 0, 0, FLAGS, .unit = "color_primaries"},
|
||||
{"ebu3213", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_EBU3213}, 0, 0, FLAGS, .unit = "color_primaries"},
|
||||
{"vgamut", NULL, 0, AV_OPT_TYPE_CONST, {.i64=AVCOL_PRI_V_GAMUT}, 0, 0, FLAGS, .unit = "color_primaries"},
|
||||
|
||||
{"color_trc", "select color transfer", OFFSET(color_trc), AV_OPT_TYPE_INT, {.i64=-1}, -1, AVCOL_TRC_EXT_NB-1, FLAGS, .unit = "color_trc"},
|
||||
{"auto", "keep the same color transfer", 0, AV_OPT_TYPE_CONST, {.i64=-1}, 0, 0, FLAGS, .unit = "color_trc"},
|
||||
|
||||
@@ -87,16 +87,21 @@ static const AVColorPrimariesDesc color_primaries[AVCOL_PRI_NB] = {
|
||||
[AVCOL_PRI_JEDEC_P22] = { WP_D65, { { AVR(0.630), AVR(0.340) }, { AVR(0.295), AVR(0.605) }, { AVR(0.155), AVR(0.077) } } },
|
||||
};
|
||||
|
||||
static const AVColorPrimariesDesc color_primaries_ext[AVCOL_PRI_EXT_NB -
|
||||
AVCOL_PRI_EXT_BASE] = {
|
||||
[AVCOL_PRI_V_GAMUT - AVCOL_PRI_EXT_BASE] = { WP_D65, { { AVR(0.730), AVR(0.280) }, { AVR(0.165), AVR(0.840) }, { AVR(0.100), AVR(-0.030) } } },
|
||||
};
|
||||
|
||||
const AVColorPrimariesDesc *av_csp_primaries_desc_from_id(enum AVColorPrimaries prm)
|
||||
{
|
||||
const AVColorPrimariesDesc *p;
|
||||
|
||||
if ((unsigned)prm >= AVCOL_PRI_NB)
|
||||
return NULL;
|
||||
p = &color_primaries[prm];
|
||||
const AVColorPrimariesDesc *p = NULL;
|
||||
if ((unsigned)prm < AVCOL_PRI_NB)
|
||||
p = &color_primaries[prm];
|
||||
else if (((unsigned)prm >= AVCOL_PRI_EXT_BASE) &&
|
||||
((unsigned)prm < AVCOL_PRI_EXT_NB))
|
||||
p = &color_primaries_ext[prm - AVCOL_PRI_EXT_BASE];
|
||||
if (!p->prim.r.x.num)
|
||||
return NULL;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
@@ -3430,6 +3430,11 @@ static const char * const color_primaries_names[AVCOL_PRI_NB] = {
|
||||
[AVCOL_PRI_EBU3213] = "ebu3213",
|
||||
};
|
||||
|
||||
static const char * const color_primaries_names_ext[AVCOL_PRI_EXT_NB -
|
||||
AVCOL_PRI_EXT_BASE] = {
|
||||
[AVCOL_PRI_V_GAMUT - AVCOL_PRI_EXT_BASE] = "vgamut",
|
||||
};
|
||||
|
||||
static const char * const color_transfer_names[] = {
|
||||
[AVCOL_TRC_RESERVED0] = "reserved",
|
||||
[AVCOL_TRC_BT709] = "bt709",
|
||||
@@ -3922,8 +3927,12 @@ int av_color_range_from_name(const char *name)
|
||||
|
||||
const char *av_color_primaries_name(enum AVColorPrimaries primaries)
|
||||
{
|
||||
return (unsigned) primaries < AVCOL_PRI_NB ?
|
||||
color_primaries_names[primaries] : NULL;
|
||||
if ((unsigned)primaries < AVCOL_PRI_NB)
|
||||
return color_primaries_names[primaries];
|
||||
else if (((unsigned)primaries >= AVCOL_PRI_EXT_BASE) &&
|
||||
((unsigned)primaries < AVCOL_PRI_EXT_NB))
|
||||
return color_primaries_names_ext[primaries - AVCOL_TRC_EXT_BASE];
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int av_color_primaries_from_name(const char *name)
|
||||
@@ -3938,6 +3947,14 @@ int av_color_primaries_from_name(const char *name)
|
||||
return i;
|
||||
}
|
||||
|
||||
for (i = 0; i < FF_ARRAY_ELEMS(color_primaries_names_ext); i++) {
|
||||
if (!color_primaries_names_ext[i])
|
||||
continue;
|
||||
|
||||
if (av_strstart(name, color_primaries_names_ext[i], NULL))
|
||||
return AVCOL_PRI_EXT_BASE + i;
|
||||
}
|
||||
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
|
||||
@@ -670,7 +670,12 @@ enum AVColorPrimaries {
|
||||
AVCOL_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 (2010) / P3 D65 / Display P3
|
||||
AVCOL_PRI_EBU3213 = 22, ///< EBU Tech. 3213-E (nothing there) / one of JEDEC P22 group phosphors
|
||||
AVCOL_PRI_JEDEC_P22 = AVCOL_PRI_EBU3213,
|
||||
AVCOL_PRI_NB ///< Not part of ABI
|
||||
AVCOL_PRI_NB, ///< Not part of ABI
|
||||
|
||||
/* The following entries are not part of H.273, but custom extensions */
|
||||
AVCOL_PRI_EXT_BASE = 256,
|
||||
AVCOL_PRI_V_GAMUT = AVCOL_PRI_EXT_BASE,
|
||||
AVCOL_PRI_EXT_NB ///< Not part of ABI
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user