Fix band-0 DC filter gating and improve settings UI
This commit is contained in:
+1
-1
@@ -12,7 +12,7 @@
|
||||
|
||||
// Kept in one place: the string reported to foobar2000 and written to the log
|
||||
// must not drift apart.
|
||||
#define JOC_VERSION "0.2.0"
|
||||
#define JOC_VERSION "0.2.1"
|
||||
|
||||
DECLARE_COMPONENT_VERSION("JOC decoder (E-AC-3 JOC)", JOC_VERSION,
|
||||
"Plays E-AC-3 JOC (Dolby Atmos) files: the JOC objects are "
|
||||
|
||||
+25
-19
@@ -189,6 +189,7 @@ private:
|
||||
}
|
||||
if (pick_file(m_hwnd, path, title, filter)) {
|
||||
set_text(GetDlgItem(m_hwnd, IDC_EDIT_HRTF), path);
|
||||
update_status();
|
||||
notify();
|
||||
}
|
||||
return TRUE;
|
||||
@@ -219,6 +220,10 @@ private:
|
||||
return TRUE;
|
||||
}
|
||||
if (code == EN_CHANGE || code == CBN_SELCHANGE) {
|
||||
if (id == IDC_EDIT_HRTF || id == IDC_COMBO_LAYOUT ||
|
||||
id == IDC_EDIT_GAIN) {
|
||||
update_status();
|
||||
}
|
||||
notify();
|
||||
return TRUE;
|
||||
}
|
||||
@@ -338,35 +343,36 @@ private:
|
||||
void update_enabled_state() { update_status(); }
|
||||
|
||||
void update_status() {
|
||||
const joc_settings::Values values = joc_settings::read();
|
||||
std::string status;
|
||||
const joc_settings::Values values = read_controls();
|
||||
std::string output_status;
|
||||
if (values.output != 0) {
|
||||
char text[96] = {};
|
||||
const unsigned channels = joc_decode::speaker_channels(values.speaker_layout);
|
||||
std::snprintf(text, sizeof(text), "扬声器布局 %s(%u 声道)",
|
||||
values.speaker_layout.c_str(), channels);
|
||||
status = text;
|
||||
} else {
|
||||
// Show what will actually be read, so an empty box is not a mystery.
|
||||
joc_decode::Settings effective = joc_settings::current();
|
||||
effective.hrtf_source =
|
||||
static_cast<joc_decode::HrtfSource>(values.hrtf_source);
|
||||
effective.hrtf_file = values.hrtf_file;
|
||||
const std::string file = joc_decode::resolve_hrtf_file(effective);
|
||||
status = std::string(joc_settings::hrtf_source_name(values.hrtf_source)) + ":" +
|
||||
(file.empty() ? std::string("无法确定默认路径")
|
||||
: (values.hrtf_file.empty() ? "默认 " + file : file));
|
||||
output_status = text;
|
||||
}
|
||||
// Say what is actually in effect, including the parts that do not apply
|
||||
// to the selected output mode, so nothing has to be greyed out.
|
||||
set_text(GetDlgItem(m_hwnd, IDC_LABEL_OUTPUT_STATUS), output_status);
|
||||
|
||||
joc_decode::Settings effective = joc_settings::current();
|
||||
effective.hrtf_source =
|
||||
static_cast<joc_decode::HrtfSource>(values.hrtf_source);
|
||||
effective.hrtf_file = values.hrtf_file;
|
||||
const std::string file = joc_decode::resolve_hrtf_file(effective);
|
||||
std::string hrtf_status =
|
||||
std::string(joc_settings::hrtf_source_name(values.hrtf_source)) + ":";
|
||||
if (values.hrtf_file.empty()) hrtf_status += "默认";
|
||||
hrtf_status += "\n" +
|
||||
(file.empty() ? std::string("无法确定默认路径") : file);
|
||||
set_text(GetDlgItem(m_hwnd, IDC_LABEL_STATUS), hrtf_status);
|
||||
|
||||
char gain[96] = {};
|
||||
if (values.gain_enabled) {
|
||||
std::snprintf(gain, sizeof(gain), "\n增益开 %.2f dB", values.gain_db);
|
||||
std::snprintf(gain, sizeof(gain), "增益开 %.2f dB", values.gain_db);
|
||||
} else {
|
||||
std::snprintf(gain, sizeof(gain), "\n增益关(输出不衰减)");
|
||||
std::snprintf(gain, sizeof(gain), "增益关(输出不衰减)");
|
||||
}
|
||||
status += gain;
|
||||
set_text(GetDlgItem(m_hwnd, IDC_LABEL_STATUS), status);
|
||||
set_text(GetDlgItem(m_hwnd, IDC_LABEL_GAIN_STATUS), gain);
|
||||
}
|
||||
|
||||
bool changed() const {
|
||||
|
||||
+23
-21
@@ -7,11 +7,11 @@
|
||||
// sample page uses (SDK\foobar2000\foo_sample\foo_sample.rc). A CAPTION statement
|
||||
// implies WS_CAPTION, which would draw a second frame inside the host's and shift
|
||||
// every control down by the caption height -- visible but not clickable.
|
||||
IDD_JOC_PREFS DIALOGEX 0, 0, 330, 226
|
||||
IDD_JOC_PREFS DIALOGEX 0, 0, 330, 273
|
||||
STYLE DS_SETFONT | WS_CHILD
|
||||
FONT 8, "Microsoft Sans Serif", 400, 0, 0x0
|
||||
BEGIN
|
||||
GROUPBOX "输出", IDC_GROUP_OUTPUT, 7, 5, 316, 64
|
||||
GROUPBOX "输出", IDC_GROUP_OUTPUT, 7, 5, 316, 61
|
||||
CONTROL "双耳(HRTF)", IDC_RADIO_BINAURAL, "Button",
|
||||
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 16, 20, 72, 10
|
||||
CONTROL "扬声器布局", IDC_RADIO_SPEAKER, "Button",
|
||||
@@ -22,31 +22,33 @@ BEGIN
|
||||
LTEXT "双耳模式", IDC_LABEL_MODE, 172, 22, 42, 10
|
||||
COMBOBOX IDC_COMBO_MODE, 216, 19, 96, 90,
|
||||
CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "房间尾音(秒)", IDC_LABEL_TAIL, 172, 41, 46, 10
|
||||
EDITTEXT IDC_EDIT_TAIL, 220, 38, 40, 13, ES_AUTOHSCROLL
|
||||
LTEXT "房间尾音(秒)", IDC_LABEL_TAIL, 172, 41, 62, 10
|
||||
EDITTEXT IDC_EDIT_TAIL, 238, 38, 40, 13, ES_AUTOHSCROLL
|
||||
LTEXT "", IDC_LABEL_OUTPUT_STATUS, 16, 52, 300, 10
|
||||
|
||||
GROUPBOX "HRTF", IDC_GROUP_HRTF, 7, 74, 316, 84
|
||||
GROUPBOX "HRTF", IDC_GROUP_HRTF, 7, 71, 316, 100
|
||||
CONTROL "SOFA 文件", IDC_RADIO_HRTF_SOFA, "Button",
|
||||
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 16, 89, 56, 10
|
||||
BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP, 16, 86, 56, 10
|
||||
CONTROL "Rosella 个性化模型", IDC_RADIO_HRTF_ROSELLA, "Button",
|
||||
BS_AUTORADIOBUTTON | WS_TABSTOP, 78, 89, 78, 10
|
||||
LTEXT "HRTF 文件(留空=默认位置)", IDC_LABEL_HRTF, 16, 106, 92, 10
|
||||
EDITTEXT IDC_EDIT_HRTF, 110, 103, 164, 13, ES_AUTOHSCROLL
|
||||
PUSHBUTTON "浏览…", IDC_BROWSE_HRTF, 279, 103, 38, 13
|
||||
BS_AUTORADIOBUTTON | WS_TABSTOP, 78, 86, 78, 10
|
||||
LTEXT "HRTF 文件(留空=默认位置)", IDC_LABEL_HRTF, 16, 105, 106, 10
|
||||
EDITTEXT IDC_EDIT_HRTF, 126, 102, 148, 13, ES_AUTOHSCROLL
|
||||
PUSHBUTTON "浏览…", IDC_BROWSE_HRTF, 279, 102, 38, 13
|
||||
LTEXT "留空时读组件目录下 HRTF\\binaural.sofa 或 binaural.personalized_headphone;SOFA 由渲染器内部编译,滤波组表已编入库中。",
|
||||
IDC_LABEL_HRTF_HINT, 16, 122, 300, 30
|
||||
IDC_LABEL_HRTF_HINT, 16, 121, 300, 20
|
||||
LTEXT "", IDC_LABEL_STATUS, 16, 145, 300, 20
|
||||
|
||||
GROUPBOX "增益", IDC_GROUP_GAIN, 7, 162, 152, 56
|
||||
GROUPBOX "增益", IDC_GROUP_GAIN, 7, 176, 316, 48
|
||||
CONTROL "应用增益", IDC_CHECK_GAIN, "Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP, 16, 178, 58, 10
|
||||
LTEXT "dB", IDC_LABEL_GAIN, 80, 178, 12, 10
|
||||
EDITTEXT IDC_EDIT_GAIN, 96, 175, 40, 13, ES_AUTOHSCROLL
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP, 16, 192, 58, 10
|
||||
LTEXT "dB", IDC_LABEL_GAIN, 80, 192, 12, 10
|
||||
EDITTEXT IDC_EDIT_GAIN, 96, 189, 40, 13, ES_AUTOHSCROLL
|
||||
LTEXT "", IDC_LABEL_GAIN_STATUS, 145, 192, 171, 10
|
||||
LTEXT "双耳渲染后可能超过 0 dBFS,可用负值衰减。",
|
||||
IDC_LABEL_GAIN_HINT, 16, 194, 134, 20
|
||||
IDC_LABEL_GAIN_HINT, 16, 208, 300, 10
|
||||
|
||||
GROUPBOX "其它", IDC_GROUP_MISC, 165, 162, 158, 56
|
||||
LTEXT "ffmpeg.exe", IDC_LABEL_FFMPEG, 173, 178, 44, 10
|
||||
EDITTEXT IDC_EDIT_FFMPEG, 216, 175, 62, 13, ES_AUTOHSCROLL
|
||||
PUSHBUTTON "浏览…", IDC_BROWSE_FFMPEG, 282, 175, 35, 13
|
||||
LTEXT "", IDC_LABEL_STATUS, 173, 194, 144, 20
|
||||
GROUPBOX "其它", IDC_GROUP_MISC, 7, 229, 316, 38
|
||||
LTEXT "ffmpeg.exe", IDC_LABEL_FFMPEG, 16, 245, 44, 10
|
||||
EDITTEXT IDC_EDIT_FFMPEG, 64, 242, 210, 13, ES_AUTOHSCROLL
|
||||
PUSHBUTTON "浏览…", IDC_BROWSE_FFMPEG, 279, 242, 38, 13
|
||||
END
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#define IDC_COMBO_MODE 2016
|
||||
#define IDC_LABEL_TAIL 2017
|
||||
#define IDC_EDIT_TAIL 2018
|
||||
#define IDC_LABEL_OUTPUT_STATUS 2019
|
||||
|
||||
#define IDC_GROUP_HRTF 2020
|
||||
#define IDC_RADIO_HRTF_SOFA 2021
|
||||
@@ -26,6 +27,7 @@
|
||||
#define IDC_LABEL_GAIN 2032
|
||||
#define IDC_EDIT_GAIN 2033
|
||||
#define IDC_LABEL_GAIN_HINT 2034
|
||||
#define IDC_LABEL_GAIN_STATUS 2035
|
||||
|
||||
#define IDC_GROUP_MISC 2040
|
||||
#define IDC_LABEL_FFMPEG 2041
|
||||
|
||||
Reference in New Issue
Block a user