1
mirror of https://code.videolan.org/videolan/vlc synced 2024-10-03 01:31:53 +02:00

es_out: fix video format tables

- Fix missing const (and eliminate relocs)
 - Remove tautology comparison, use static assertion
 - Use named indices
This commit is contained in:
Rémi Denis-Courmont 2017-10-03 21:35:41 +03:00
parent d8c0164129
commit 5cb3ee0b36
2 changed files with 52 additions and 41 deletions

View File

@ -263,6 +263,7 @@ typedef enum video_color_primaries_t
#define COLOR_PRIMARIES_EBU_3213 COLOR_PRIMARIES_BT601_625
#define COLOR_PRIMARIES_BT470_BG COLOR_PRIMARIES_BT601_625
#define COLOR_PRIMARIES_BT470_M COLOR_PRIMARIES_FCC1953
#define COLOR_PRIMARIES_MAX COLOR_PRIMARIES_FCC1953
} video_color_primaries_t;
/**
@ -285,6 +286,7 @@ typedef enum video_transfer_func_t
#define TRANSFER_FUNC_SMPTE_293 TRANSFER_FUNC_BT709
#define TRANSFER_FUNC_SMPTE_296 TRANSFER_FUNC_BT709
#define TRANSFER_FUNC_ARIB_B67 TRANSFER_FUNC_HLG
#define TRANSFER_FUNC_MAX TRANSFER_FUNC_HLG
} video_transfer_func_t;
/**
@ -299,6 +301,7 @@ typedef enum video_color_space_t
#define COLOR_SPACE_SRGB COLOR_SPACE_BT709
#define COLOR_SPACE_SMPTE_170 COLOR_SPACE_BT601
#define COLOR_SPACE_SMPTE_240 COLOR_SPACE_SMPTE_170
#define COLOR_SPACE_MAX COLOR_SPACE_BT2020
} video_color_space_t;
/**
@ -313,6 +316,7 @@ typedef enum video_chroma_location_t
CHROMA_LOCATION_TOP_CENTER,
CHROMA_LOCATION_BOTTOM_LEFT,
CHROMA_LOCATION_BOTTOM_CENTER,
#define CHROMA_LOCATION_MAX CHROMA_LOCATION_BOTTOM_CENTER
} video_chroma_location_t;
/**

View File

@ -3146,60 +3146,67 @@ static void EsOutUpdateInfo( es_out_t *out, es_out_id_t *es, const es_format_t *
}
if( fmt->video.primaries != COLOR_PRIMARIES_UNDEF )
{
static const char *primaries_names[] = { N_("Undefined"),
N_("ITU-R BT.601 (525 lines, 60 Hz)"),
N_("ITU-R BT.601 (625 lines, 50 Hz)"),
"ITU-R BT.709",
"ITU-R BT.2020",
"DCI/P3 D65",
"ITU-R BT.470 M",
static const char primaries_names[][32] = {
[COLOR_PRIMARIES_UNDEF] = N_("Undefined"),
[COLOR_PRIMARIES_BT601_525] =
N_("ITU-R BT.601 (525 lines, 60 Hz)"),
[COLOR_PRIMARIES_BT601_625] =
N_("ITU-R BT.601 (625 lines, 50 Hz)"),
[COLOR_PRIMARIES_BT709] = "ITU-R BT.709",
[COLOR_PRIMARIES_BT2020] = "ITU-R BT.2020",
[COLOR_PRIMARIES_DCI_P3] = "DCI/P3 D65",
[COLOR_PRIMARIES_BT470_M] = "ITU-R BT.470 M",
};
if( fmt->video.primaries < ARRAY_SIZE(primaries_names) )
info_category_AddInfo( p_cat, _("Color primaries"), "%s",
_(primaries_names[fmt->video.primaries]) );
static_assert(ARRAY_SIZE(primaries_names) == COLOR_PRIMARIES_MAX+1,
"Color primiaries table mismatch");
info_category_AddInfo( p_cat, _("Color primaries"), "%s",
_(primaries_names[fmt->video.primaries]) );
}
if( fmt->video.transfer != TRANSFER_FUNC_UNDEF )
{
static const char *func_names[] = { N_("Undefined"),
N_("Linear"),
"sRGB",
"ITU-R BT.470 BG",
"ITU-R BT.470 M",
"ITU-R BT.709, ITU-R BT.2020",
"SMPTE ST2084",
"SMPTE 240M",
"Hybrid Log-Gamma",
static const char func_names[][20] = {
[TRANSFER_FUNC_UNDEF] = N_("Undefined"),
[TRANSFER_FUNC_LINEAR] = N_("Linear"),
[TRANSFER_FUNC_SRGB] = "sRGB",
[TRANSFER_FUNC_BT470_BG] = "ITU-R BT.470 BG",
[TRANSFER_FUNC_BT470_M] = "ITU-R BT.470 M",
[TRANSFER_FUNC_BT709] = "ITU-R BT.709",
[TRANSFER_FUNC_SMPTE_ST2084] = "SMPTE ST2084",
[TRANSFER_FUNC_SMPTE_240] = "SMPTE 240M",
[TRANSFER_FUNC_HLG] = N_("Hybrid Log-Gamma"),
};
if( fmt->video.transfer < ARRAY_SIZE(func_names) )
info_category_AddInfo( p_cat, _("Color transfer function"), "%s",
_(func_names[fmt->video.transfer]) );
static_assert(ARRAY_SIZE(func_names) == TRANSFER_FUNC_MAX+1,
"Transfer functions table mismatch");
info_category_AddInfo( p_cat, _("Color transfer function"), "%s",
_(func_names[fmt->video.transfer]) );
}
if( fmt->video.space != COLOR_SPACE_UNDEF )
{
static const char *space_names[] = { N_("Undefined"),
"ITU-R BT.601",
"ITU-R BT.709",
"ITU-R BT.2020",
static const char space_names[][16] = {
[COLOR_SPACE_UNDEF] = N_("Undefined"),
[COLOR_SPACE_BT601] = "ITU-R BT.601",
[COLOR_SPACE_BT709] = "ITU-R BT.709",
[COLOR_SPACE_BT2020] = "ITU-R BT.2020",
};
static const char *range_names[] = {
N_("Limited Range"),
N_("Full Range"),
};
if( fmt->video.space < ARRAY_SIZE(space_names) )
info_category_AddInfo( p_cat, _("Color space"), "%s %s",
_(space_names[fmt->video.space]),
_(range_names[fmt->video.b_color_range_full]) );
static_assert(ARRAY_SIZE(space_names) == COLOR_SPACE_MAX+1,
"Color space table mismatch");
info_category_AddInfo( p_cat, _("Color space"), _("%s Range"),
_(space_names[fmt->video.space]),
_(fmt->video.b_color_range_full ? "Full" : "Limited") );
}
if( fmt->video.chroma_location != CHROMA_LOCATION_UNDEF )
{
static const char *c_loc_names[] = { N_("Undefined"),
N_("Left"),
N_("Center"),
N_("Top Left"),
N_("Top Center"),
N_("Bottom Left"),
N_("Bottom Center"),
static const char c_loc_names[][16] = {
[CHROMA_LOCATION_UNDEF] = N_("Undefined"),
[CHROMA_LOCATION_LEFT] = N_("Left"),
[CHROMA_LOCATION_CENTER] = N_("Center"),
[CHROMA_LOCATION_TOP_LEFT] = N_("Top Left"),
[CHROMA_LOCATION_TOP_CENTER] = N_("Top Center"),
[CHROMA_LOCATION_BOTTOM_LEFT] =N_("Bottom Left"),
[CHROMA_LOCATION_BOTTOM_CENTER] = N_("Bottom Center"),
};
static_assert(ARRAY_SIZE(c_loc_names) == CHROMA_LOCATION_MAX+1,
"Chroma location table mismatch");
info_category_AddInfo( p_cat, _("Chroma location"), "%s",
_(c_loc_names[fmt->video.chroma_location]) );
}