summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/interface/audio.cpp
blob: a9663b04fe55bf2d89d07e7eab312e8bb23ac801 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// license:BSD-3-Clause
// copyright-holders:Olivier Galibert

#include "audio.h"

#include "util/language.h"
#include "util/strformat.h"

#include <algorithm>
#include <iterator>


namespace osd {

namespace {

struct position_name_mapping {
	channel_position m_pos;
	const char *m_name;
};

const position_name_mapping f_position_name_mappings[] = {
		{ channel_position::FC(),       N_p("audio-position", "Front center")    },
		{ channel_position::FL(),       N_p("audio-position", "Front left")      },
		{ channel_position::FR(),       N_p("audio-position", "Front right")     },
		{ channel_position::RC(),       N_p("audio-position", "Rear center")     },
		{ channel_position::RL(),       N_p("audio-position", "Rear left")       },
		{ channel_position::RR(),       N_p("audio-position", "Rear right")      },
		{ channel_position::HC(),       N_p("audio-position", "Headrest center") },
		{ channel_position::HL(),       N_p("audio-position", "Headrest left")   },
		{ channel_position::HR(),       N_p("audio-position", "Headrest right")  },
		{ channel_position::BACKREST(), N_p("audio-position", "Backrest")        },
		{ channel_position::LFE(),      N_p("audio-position", "Subwoofer")       },
		{ channel_position::ONREQ(),    N_p("audio-position", "Auxiliary")       },
		{ channel_position::UNKNOWN(),  N_p("audio-position", "Unknown")         } };

} // anonymous namespace

std::string channel_position::name() const
{
	auto const found = std::find_if(
			std::begin(f_position_name_mappings),
			std::end(f_position_name_mappings),
			[this] (const position_name_mapping &val) { return *this == val.m_pos; });
	if (std::end(f_position_name_mappings) != found)
		return _("audio-position", found->m_name);
	else
		return util::string_format(_("audio-position", "[%1$f %2$f %3$f]"), m_x, m_y, m_z);
}

} // anonymous namespace