From cc554704722c4fdcad5e6b3f1451721a8f17607e Mon Sep 17 00:00:00 2001 From: Nicolas George Date: Sun, 29 Jul 2012 21:53:19 +0200 Subject: [PATCH] audioconvert: include the description of channels in the library. --- libavutil/audioconvert.c | 63 ++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/libavutil/audioconvert.c b/libavutil/audioconvert.c index e17f52ee59..8e65d5968a 100644 --- a/libavutil/audioconvert.c +++ b/libavutil/audioconvert.c @@ -28,38 +28,43 @@ #include "audioconvert.h" #include "bprint.h" -static const char * const channel_names[] = { - [0] = "FL", /* front left */ - [1] = "FR", /* front right */ - [2] = "FC", /* front center */ - [3] = "LFE", /* low frequency */ - [4] = "BL", /* back left */ - [5] = "BR", /* back right */ - [6] = "FLC", /* front left-of-center */ - [7] = "FRC", /* front right-of-center */ - [8] = "BC", /* back-center */ - [9] = "SL", /* side left */ - [10] = "SR", /* side right */ - [11] = "TC", /* top center */ - [12] = "TFL", /* top front left */ - [13] = "TFC", /* top front center */ - [14] = "TFR", /* top front right */ - [15] = "TBL", /* top back left */ - [16] = "TBC", /* top back center */ - [17] = "TBR", /* top back right */ - [29] = "DL", /* downmix left */ - [30] = "DR", /* downmix right */ - [31] = "WL", /* wide left */ - [32] = "WR", /* wide right */ - [33] = "SDL", /* surround direct left */ - [34] = "SDR", /* surround direct right */ +struct channel_name { + const char *name; + const char *description; +}; + +static const struct channel_name channel_names[] = { + [0] = { "FL", "front left" }, + [1] = { "FR", "front right" }, + [2] = { "FC", "front center" }, + [3] = { "LFE", "low frequency" }, + [4] = { "BL", "back left" }, + [5] = { "BR", "back right" }, + [6] = { "FLC", "front left-of-center" }, + [7] = { "FRC", "front right-of-center" }, + [8] = { "BC", "back center" }, + [9] = { "SL", "side left" }, + [10] = { "SR", "side right" }, + [11] = { "TC", "top center" }, + [12] = { "TFL", "top front left" }, + [13] = { "TFC", "top front center" }, + [14] = { "TFR", "top front right" }, + [15] = { "TBL", "top back left" }, + [16] = { "TBC", "top back center" }, + [17] = { "TBR", "top back right" }, + [29] = { "DL", "downmix left" }, + [30] = { "DR", "downmix right" }, + [31] = { "WL", "wide left" }, + [32] = { "WR", "wide right" }, + [33] = { "SDL", "surround direct left" }, + [34] = { "SDR", "surround direct right" }, }; static const char *get_channel_name(int channel_id) { if (channel_id < 0 || channel_id >= FF_ARRAY_ELEMS(channel_names)) return NULL; - return channel_names[channel_id]; + return channel_names[channel_id].name; } static const struct { @@ -107,9 +112,9 @@ static uint64_t get_channel_layout_single(const char *name, int name_len) return channel_layout_map[i].layout; } for (i = 0; i < FF_ARRAY_ELEMS(channel_names); i++) - if (channel_names[i] && - strlen(channel_names[i]) == name_len && - !memcmp(channel_names[i], name, name_len)) + if (channel_names[i].name && + strlen(channel_names[i].name) == name_len && + !memcmp(channel_names[i].name, name, name_len)) return (int64_t)1 << i; i = strtol(name, &end, 10); if (end - name == name_len ||