mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-03-20 16:26:24 +00:00
fix(vlc): add audio transcoding mode to fix 7.1 TrueHD playback
This commit is contained in:
@@ -3,7 +3,7 @@ import { useMemo } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Platform, View, type ViewProps } from "react-native";
|
||||
import { Switch } from "react-native-gesture-handler";
|
||||
import { useSettings } from "@/utils/atoms/settings";
|
||||
import { AudioTranscodeMode, useSettings } from "@/utils/atoms/settings";
|
||||
import { Text } from "../common/Text";
|
||||
import { ListGroup } from "../list/ListGroup";
|
||||
import { ListItem } from "../list/ListItem";
|
||||
@@ -54,6 +54,70 @@ export const AudioToggles: React.FC<Props> = ({ ...props }) => {
|
||||
];
|
||||
}, [cultures, settings?.defaultAudioLanguage, t, updateSettings]);
|
||||
|
||||
const audioTranscodeModeLabels: Record<AudioTranscodeMode, string> = {
|
||||
[AudioTranscodeMode.Auto]: t("home.settings.audio.transcode_mode.auto"),
|
||||
[AudioTranscodeMode.ForceStereo]: t(
|
||||
"home.settings.audio.transcode_mode.stereo",
|
||||
),
|
||||
[AudioTranscodeMode.Allow51]: t("home.settings.audio.transcode_mode.5_1"),
|
||||
[AudioTranscodeMode.AllowAll]: t(
|
||||
"home.settings.audio.transcode_mode.passthrough",
|
||||
),
|
||||
};
|
||||
|
||||
const audioTranscodeModeOptions = useMemo(
|
||||
() => [
|
||||
{
|
||||
options: [
|
||||
{
|
||||
type: "radio" as const,
|
||||
label: t("home.settings.audio.transcode_mode.auto"),
|
||||
value: AudioTranscodeMode.Auto,
|
||||
selected:
|
||||
settings?.audioTranscodeMode === AudioTranscodeMode.Auto ||
|
||||
!settings?.audioTranscodeMode,
|
||||
onPress: () =>
|
||||
updateSettings({ audioTranscodeMode: AudioTranscodeMode.Auto }),
|
||||
},
|
||||
{
|
||||
type: "radio" as const,
|
||||
label: t("home.settings.audio.transcode_mode.stereo"),
|
||||
value: AudioTranscodeMode.ForceStereo,
|
||||
selected:
|
||||
settings?.audioTranscodeMode === AudioTranscodeMode.ForceStereo,
|
||||
onPress: () =>
|
||||
updateSettings({
|
||||
audioTranscodeMode: AudioTranscodeMode.ForceStereo,
|
||||
}),
|
||||
},
|
||||
{
|
||||
type: "radio" as const,
|
||||
label: t("home.settings.audio.transcode_mode.5_1"),
|
||||
value: AudioTranscodeMode.Allow51,
|
||||
selected:
|
||||
settings?.audioTranscodeMode === AudioTranscodeMode.Allow51,
|
||||
onPress: () =>
|
||||
updateSettings({
|
||||
audioTranscodeMode: AudioTranscodeMode.Allow51,
|
||||
}),
|
||||
},
|
||||
{
|
||||
type: "radio" as const,
|
||||
label: t("home.settings.audio.transcode_mode.passthrough"),
|
||||
value: AudioTranscodeMode.AllowAll,
|
||||
selected:
|
||||
settings?.audioTranscodeMode === AudioTranscodeMode.AllowAll,
|
||||
onPress: () =>
|
||||
updateSettings({
|
||||
audioTranscodeMode: AudioTranscodeMode.AllowAll,
|
||||
}),
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
[settings?.audioTranscodeMode, t, updateSettings],
|
||||
);
|
||||
|
||||
if (isTv) return null;
|
||||
if (!settings) return null;
|
||||
|
||||
@@ -98,6 +162,31 @@ export const AudioToggles: React.FC<Props> = ({ ...props }) => {
|
||||
title={t("home.settings.audio.language")}
|
||||
/>
|
||||
</ListItem>
|
||||
<ListItem
|
||||
title={t("home.settings.audio.transcode_mode.title")}
|
||||
subtitle={t("home.settings.audio.transcode_mode.description")}
|
||||
>
|
||||
<PlatformDropdown
|
||||
groups={audioTranscodeModeOptions}
|
||||
trigger={
|
||||
<View className='flex flex-row items-center justify-between py-1.5 pl-3'>
|
||||
<Text className='mr-1 text-[#8E8D91]'>
|
||||
{
|
||||
audioTranscodeModeLabels[
|
||||
settings?.audioTranscodeMode || AudioTranscodeMode.Auto
|
||||
]
|
||||
}
|
||||
</Text>
|
||||
<Ionicons
|
||||
name='chevron-expand-sharp'
|
||||
size={18}
|
||||
color='#5A5960'
|
||||
/>
|
||||
</View>
|
||||
}
|
||||
title={t("home.settings.audio.transcode_mode.title")}
|
||||
/>
|
||||
</ListItem>
|
||||
</ListGroup>
|
||||
</View>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user