feat(api): 新增 UAC 版本支持及相关界面改进
- 在音频参数中加入 uac_ver 字段,支持区分 UAC 2.0 和 UAC 1.0 - 在多语言资源中添加 UAC 版本选项及对应标签(中英文、德语、西班牙语、法语、繁体中文等) - 在 AudioPage 页面新增 UAC 版本选择组件,支持用户选择不同版本 - 在 SelectPage 中加入 uac_ver 的映射,保证数据正确传递 - 为 UAC 版本选项新增“Custom”自定义项,丰富配置可能性
This commit is contained in:
@@ -101,6 +101,8 @@ export interface DeviceState {
|
|||||||
dreMode: number;
|
dreMode: number;
|
||||||
dacVolumeDirect: number;
|
dacVolumeDirect: number;
|
||||||
analogGain: number;
|
analogGain: number;
|
||||||
|
/** USB Audio Class version: 0 = UAC 2.0, 1 = UAC 1.0. */
|
||||||
|
uac_ver: number;
|
||||||
effect_enable: number;
|
effect_enable: number;
|
||||||
effect_value: number;
|
effect_value: number;
|
||||||
width_enable: number;
|
width_enable: number;
|
||||||
@@ -488,6 +490,7 @@ export const MOCK_DEVICE_STATE: DeviceState = {
|
|||||||
dreMode: 0,
|
dreMode: 0,
|
||||||
dacVolumeDirect: 0,
|
dacVolumeDirect: 0,
|
||||||
analogGain: 0,
|
analogGain: 0,
|
||||||
|
uac_ver: 0,
|
||||||
effect_enable: 0,
|
effect_enable: 0,
|
||||||
effect_value: 50,
|
effect_value: 50,
|
||||||
width_enable: 0,
|
width_enable: 0,
|
||||||
|
|||||||
@@ -168,7 +168,8 @@
|
|||||||
"options": [
|
"options": [
|
||||||
"BS2B Standard (700 Hz, 4,5 dB)",
|
"BS2B Standard (700 Hz, 4,5 dB)",
|
||||||
"BS2B Populär (700 Hz, 6 dB)",
|
"BS2B Populär (700 Hz, 6 dB)",
|
||||||
"BS2B Entspannt (650 Hz, 9,5 dB)"
|
"BS2B Entspannt (650 Hz, 9,5 dB)",
|
||||||
|
"Custom"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"subwoofer": {
|
"subwoofer": {
|
||||||
@@ -588,6 +589,19 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"uacVer": {
|
||||||
|
"label": "UAC-Version",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"label": "UAC 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 1,
|
||||||
|
"label": "UAC 1.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"arc": {
|
"arc": {
|
||||||
"label": "ARC-Modus",
|
"label": "ARC-Modus",
|
||||||
"options": [
|
"options": [
|
||||||
|
|||||||
@@ -168,7 +168,8 @@
|
|||||||
"options": [
|
"options": [
|
||||||
"BS2B default (700 Hz, 4.5 dB)",
|
"BS2B default (700 Hz, 4.5 dB)",
|
||||||
"BS2B popular (700 Hz, 6 dB)",
|
"BS2B popular (700 Hz, 6 dB)",
|
||||||
"BS2B relax (650 Hz, 9.5 dB)"
|
"BS2B relax (650 Hz, 9.5 dB)",
|
||||||
|
"Custom"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"subwoofer": {
|
"subwoofer": {
|
||||||
@@ -588,6 +589,19 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"uacVer": {
|
||||||
|
"label": "UAC Version",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"label": "UAC 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 1,
|
||||||
|
"label": "UAC 1.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"arc": {
|
"arc": {
|
||||||
"label": "ARC mode",
|
"label": "ARC mode",
|
||||||
"options": [
|
"options": [
|
||||||
|
|||||||
@@ -168,7 +168,8 @@
|
|||||||
"options": [
|
"options": [
|
||||||
"BS2B predeterminado (700 Hz, 4,5 dB)",
|
"BS2B predeterminado (700 Hz, 4,5 dB)",
|
||||||
"BS2B popular (700 Hz, 6 dB)",
|
"BS2B popular (700 Hz, 6 dB)",
|
||||||
"BS2B relajado (650 Hz, 9,5 dB)"
|
"BS2B relajado (650 Hz, 9,5 dB)",
|
||||||
|
"Custom"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"subwoofer": {
|
"subwoofer": {
|
||||||
@@ -588,6 +589,19 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"uacVer": {
|
||||||
|
"label": "Versión UAC",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"label": "UAC 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 1,
|
||||||
|
"label": "UAC 1.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"arc": {
|
"arc": {
|
||||||
"label": "Modo ARC",
|
"label": "Modo ARC",
|
||||||
"options": [
|
"options": [
|
||||||
|
|||||||
@@ -168,7 +168,8 @@
|
|||||||
"options": [
|
"options": [
|
||||||
"BS2B défaut (700 Hz, 4,5 dB)",
|
"BS2B défaut (700 Hz, 4,5 dB)",
|
||||||
"BS2B populaire (700 Hz, 6 dB)",
|
"BS2B populaire (700 Hz, 6 dB)",
|
||||||
"BS2B relax (650 Hz, 9,5 dB)"
|
"BS2B relax (650 Hz, 9,5 dB)",
|
||||||
|
"Custom"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"subwoofer": {
|
"subwoofer": {
|
||||||
@@ -588,6 +589,19 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"uacVer": {
|
||||||
|
"label": "Version UAC",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"label": "UAC 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 1,
|
||||||
|
"label": "UAC 1.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"arc": {
|
"arc": {
|
||||||
"label": "Mode ARC",
|
"label": "Mode ARC",
|
||||||
"options": [
|
"options": [
|
||||||
|
|||||||
@@ -168,7 +168,8 @@
|
|||||||
"options": [
|
"options": [
|
||||||
"BS2B default(700Hz,4.5dB)",
|
"BS2B default(700Hz,4.5dB)",
|
||||||
"BS2B polular(700Hz,6dB)",
|
"BS2B polular(700Hz,6dB)",
|
||||||
"BS2B relax(650Hz,9.5dB)"
|
"BS2B relax(650Hz,9.5dB)",
|
||||||
|
"Custom"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"subwoofer": {
|
"subwoofer": {
|
||||||
@@ -588,6 +589,19 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"uacVer": {
|
||||||
|
"label": "UAC版本",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"label": "UAC 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 1,
|
||||||
|
"label": "UAC 1.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"arc": {
|
"arc": {
|
||||||
"label": "ARC模式",
|
"label": "ARC模式",
|
||||||
"options": [
|
"options": [
|
||||||
|
|||||||
@@ -168,7 +168,8 @@
|
|||||||
"options": [
|
"options": [
|
||||||
"BS2B default(700Hz,4.5dB)",
|
"BS2B default(700Hz,4.5dB)",
|
||||||
"BS2B polular(700Hz,6dB)",
|
"BS2B polular(700Hz,6dB)",
|
||||||
"BS2B relax(650Hz,9.5dB)"
|
"BS2B relax(650Hz,9.5dB)",
|
||||||
|
"Custom"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"subwoofer": {
|
"subwoofer": {
|
||||||
@@ -588,6 +589,19 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"uacVer": {
|
||||||
|
"label": "UAC版本",
|
||||||
|
"options": [
|
||||||
|
{
|
||||||
|
"index": 0,
|
||||||
|
"label": "UAC 2.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"index": 1,
|
||||||
|
"label": "UAC 1.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"arc": {
|
"arc": {
|
||||||
"label": "ARC模式",
|
"label": "ARC模式",
|
||||||
"options": [
|
"options": [
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ type LocaleDac = {
|
|||||||
autoImpedance?: { label?: string; options?: Array<{ index: number; label: string }> };
|
autoImpedance?: { label?: string; options?: Array<{ index: number; label: string }> };
|
||||||
dreMode?: { label?: string; options?: Array<{ index: number; label: string }> };
|
dreMode?: { label?: string; options?: Array<{ index: number; label: string }> };
|
||||||
dacVolumeDirect?: { label?: string; options?: Array<{ index: number; label: string }> };
|
dacVolumeDirect?: { label?: string; options?: Array<{ index: number; label: string }> };
|
||||||
|
uacVer?: { label?: string; options?: Array<{ index: number; label: string }> };
|
||||||
volumeStep?: string;
|
volumeStep?: string;
|
||||||
bootVolume?: string | { label?: string; options?: Array<{ index: number; label: string }> };
|
bootVolume?: string | { label?: string; options?: Array<{ index: number; label: string }> };
|
||||||
xlr?: { label?: string; options?: Array<{ index: number; label: string }> };
|
xlr?: { label?: string; options?: Array<{ index: number; label: string }> };
|
||||||
@@ -222,6 +223,7 @@ export default function AudioPage() {
|
|||||||
const xlrIdx = ds?.xlr ?? 0;
|
const xlrIdx = ds?.xlr ?? 0;
|
||||||
const mutePolarIdx = (ds as ({ hdmimutepolar?: number } | null))?.hdmimutepolar ?? 0;
|
const mutePolarIdx = (ds as ({ hdmimutepolar?: number } | null))?.hdmimutepolar ?? 0;
|
||||||
const iisModeIdx = (ds as ({ hdmiType?: number } | null))?.hdmiType ?? 0;
|
const iisModeIdx = (ds as ({ hdmiType?: number } | null))?.hdmiType ?? 0;
|
||||||
|
const uacVerIdx = Math.min(Math.max(ds?.uac_ver ?? 0, 0), 1);
|
||||||
const bootSoundVal = normalizeBootSound(localBootSound);
|
const bootSoundVal = normalizeBootSound(localBootSound);
|
||||||
const firmwareVersion = parseFirmwareVersion(ds?.version);
|
const firmwareVersion = parseFirmwareVersion(ds?.version);
|
||||||
const bootSoundMaxIdx = getBootSoundMaxIndex(firmwareVersion);
|
const bootSoundMaxIdx = getBootSoundMaxIndex(firmwareVersion);
|
||||||
@@ -238,6 +240,7 @@ export default function AudioPage() {
|
|||||||
"0dB",
|
"0dB",
|
||||||
"-12dB",
|
"-12dB",
|
||||||
]);
|
]);
|
||||||
|
const UAC_VER_OPTIONS = optionLabels(dacText.uacVer?.options, ["UAC 2.0", "UAC 1.0"]);
|
||||||
|
|
||||||
const pageTitle = usePageTitleWithConnection(localeData.home?.audioSet ?? "Audio");
|
const pageTitle = usePageTitleWithConnection(localeData.home?.audioSet ?? "Audio");
|
||||||
|
|
||||||
@@ -388,6 +391,11 @@ export default function AudioPage() {
|
|||||||
value={XLR_OPTIONS[xlrIdx] ?? XLR_OPTIONS[0] ?? "—"}
|
value={XLR_OPTIONS[xlrIdx] ?? XLR_OPTIONS[0] ?? "—"}
|
||||||
onClick={() => goSelect(dacText.xlr?.label ?? "选择 XLR 极性", XLR_OPTIONS, xlrIdx, "xlr")}
|
onClick={() => goSelect(dacText.xlr?.label ?? "选择 XLR 极性", XLR_OPTIONS, xlrIdx, "xlr")}
|
||||||
/>
|
/>
|
||||||
|
<ListRow
|
||||||
|
label={dacText.uacVer?.label ?? "UAC 版本"}
|
||||||
|
value={UAC_VER_OPTIONS[uacVerIdx] ?? UAC_VER_OPTIONS[0] ?? "—"}
|
||||||
|
onClick={() => goSelect(dacText.uacVer?.label ?? "选择 UAC 版本", UAC_VER_OPTIONS, uacVerIdx, "uacVer")}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ const KEY_TO_SETTING: Record<string, string> = {
|
|||||||
dacGain: "dacGain",
|
dacGain: "dacGain",
|
||||||
dacImpedance: "dacImpedance",
|
dacImpedance: "dacImpedance",
|
||||||
dacVolumeDirect: "dacVolumeDirect",
|
dacVolumeDirect: "dacVolumeDirect",
|
||||||
|
uacVer: "uac_ver",
|
||||||
vu: "vu",
|
vu: "vu",
|
||||||
input: "input",
|
input: "input",
|
||||||
output: "output",
|
output: "output",
|
||||||
|
|||||||
Reference in New Issue
Block a user