UltraGrid
UltraGrid Low-Latency High-Resolution Transmission System
Loading...
Searching...
No Matches
audio_opts.cpp
Go to the documentation of this file.
1#include <cstring>
2
3#include "ui_ultragrid_window.h"
4
5#include "audio_opts.hpp"
6#include "combobox_ui.hpp"
7
8std::vector<SettingItem> getAudioCompress(AvailableSettings *availSettings){
9 const std::string optStr = "audio.compress";
10 std::vector<SettingItem> res;
11
12 SettingItem defaultItem;
13 defaultItem.name = "None";
14 defaultItem.opts.push_back({optStr, ""});
15 res.push_back(std::move(defaultItem));
16
17 for(const auto &i : availSettings->getAvailableSettings(AUDIO_COMPRESS)){
19 item.name = i;
20 item.opts.push_back({optStr, i});
21 res.push_back(std::move(item));
22 }
23
24 return res;
25}
26
27std::vector<SettingItem> getAudioPlayback(AvailableSettings *availSettings){
28 const std::string optStr = "audio.playback";
29 std::vector<SettingItem> res;
30
31 SettingItem defaultItem;
32 defaultItem.name = "None";
33 defaultItem.opts.push_back({optStr, ""});
34 res.push_back(std::move(defaultItem));
35
36 for(const auto &i : availSettings->getDevices(AUDIO_PLAYBACK)){
38 item.name = i.name;
39 item.opts.push_back({optStr, i.type});
40 item.opts.push_back({optStr + "." + i.type + ".device", i.deviceOpt});
41 auto embedAudioIt = i.extra.find("isEmbeddedAudio");
42 if(embedAudioIt != i.extra.end() && embedAudioIt->second == "t"){
43 item.conditions.push_back({{{"video.display.embeddedAudioAvailable", "t"}, false}});
44 }
45 res.push_back(std::move(item));
46 }
47
48 return res;
49}
50
51std::vector<SettingItem> getAudioSrc(AvailableSettings *availSettings){
52 const std::string optStr = "audio.source";
53 std::vector<SettingItem> res;
54
55 SettingItem defaultItem;
56 defaultItem.name = "None";
57 defaultItem.opts.push_back({optStr, ""});
58 res.push_back(std::move(defaultItem));
59
60 for(const auto &i : availSettings->getDevices(AUDIO_SRC)){
62 item.name = i.name;
63 item.opts.push_back({optStr, i.type});
64 item.opts.push_back({optStr + "." + i.type + ".device", i.deviceOpt});
65 auto embedAudioIt = i.extra.find("isEmbeddedAudio");
66 if(embedAudioIt != i.extra.end() && embedAudioIt->second == "t"){
67 item.conditions.push_back({{{"video.source.embeddedAudioAvailable", "t"}, false}});
68 }
69 res.push_back(std::move(item));
70 }
71
72 return res;
73}
74
75void audioCompressionCallback(Option &opt, bool suboption, void *opaque){
76 Ui::UltragridWindow *win = static_cast<Ui::UltragridWindow *>(opaque);
77
78 if(suboption)
79 return;
80
81 const char *const losslessCodecs[] = {
82 "",
83 "FLAC",
84 "u-law",
85 "A-law",
86 "PCM"
87 };
88
89 bool enableBitrate = true;
90
91 for(const auto str : losslessCodecs){
92 if(std::strcmp(str, opt.getValue().c_str()) == 0){
93 enableBitrate = false;
94 break;
95 }
96 }
97
98 opt.getSettings()->getOption("audio.compress.bitrate").setEnabled(enableBitrate);
99 win->audioBitrateEdit->setEnabled(enableBitrate);
100 win->audioBitrateLabel->setEnabled(enableBitrate);
101}
102
std::vector< SettingItem > getAudioCompress(AvailableSettings *availSettings)
Definition audio_opts.cpp:8
void audioCompressionCallback(Option &opt, bool suboption, void *opaque)
std::vector< SettingItem > getAudioPlayback(AvailableSettings *availSettings)
std::vector< SettingItem > getAudioSrc(AvailableSettings *availSettings)
const std::vector< Device > & getDevices(SettingType type) const
const std::vector< std::string > & getAvailableSettings(SettingType type) const
std::string getValue() const
Definition settings.cpp:26
Settings * getSettings()
Definition settings.cpp:129
void setEnabled(bool enable, bool suppressCallback=false)
Definition settings.cpp:90
const Option & getOption(const std::string &opt) const
Definition settings.cpp:384
std::vector< SettingValue > opts
std::string name
Definition hd-rum.c:27