mirror of
https://github.com/Jellify-Music/App.git
synced 2026-03-20 20:21:43 -05:00
Bugfix/aac+alac on android (#512)
* set default device profiles, enable AAC for Android initialize device profile properly in the device profiles store
This commit is contained in:
@@ -1,12 +1,9 @@
|
||||
import SettingsListGroup from './settings-list-group'
|
||||
import { RadioGroup } from 'tamagui'
|
||||
import { RadioGroupItemWithLabel } from '../../Global/helpers/radio-group-item-with-label'
|
||||
import {
|
||||
StreamingQuality,
|
||||
useDisplayAudioQualityBadge,
|
||||
useStreamingQuality,
|
||||
} from '../../../stores/settings/player'
|
||||
import { useDisplayAudioQualityBadge, useStreamingQuality } from '../../../stores/settings/player'
|
||||
import { SwitchWithLabel } from '../../Global/helpers/switch-with-label'
|
||||
import StreamingQuality from '../../../enums/audio-quality'
|
||||
|
||||
export default function PlaybackTab(): React.JSX.Element {
|
||||
const [streamingQuality, setStreamingQuality] = useStreamingQuality()
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
enum StreamingQuality {
|
||||
Original = 'original', // Direct Play
|
||||
High = 'high', // 320
|
||||
Medium = 'medium', // 256
|
||||
Low = 'low', // 128
|
||||
}
|
||||
|
||||
export default StreamingQuality
|
||||
|
||||
@@ -2,6 +2,8 @@ import { DeviceProfile } from '@jellyfin/sdk/lib/generated-client'
|
||||
import { create } from 'zustand'
|
||||
import { createJSONStorage, devtools, persist } from 'zustand/middleware'
|
||||
import { stateStorage } from '../constants/storage'
|
||||
import { getDeviceProfile } from '../utils/device-profiles'
|
||||
import StreamingQuality from '../enums/audio-quality'
|
||||
|
||||
type DeviceProfileStore = {
|
||||
deviceProfile: DeviceProfile
|
||||
@@ -12,7 +14,7 @@ export const useStreamingDeviceProfileStore = create<DeviceProfileStore>()(
|
||||
devtools(
|
||||
persist(
|
||||
(set) => ({
|
||||
deviceProfile: {},
|
||||
deviceProfile: getDeviceProfile(StreamingQuality.Original, 'stream'),
|
||||
setDeviceProfile: (data: DeviceProfile) => set({ deviceProfile: data }),
|
||||
}),
|
||||
{
|
||||
@@ -33,7 +35,7 @@ export const useDownloadingDeviceProfileStore = create<DeviceProfileStore>()(
|
||||
devtools(
|
||||
persist(
|
||||
(set) => ({
|
||||
deviceProfile: {},
|
||||
deviceProfile: getDeviceProfile(StreamingQuality.Original, 'download'),
|
||||
setDeviceProfile: (data: DeviceProfile) => set({ deviceProfile: data }),
|
||||
}),
|
||||
{
|
||||
|
||||
@@ -4,13 +4,7 @@ import { stateStorage } from '../../constants/storage'
|
||||
import { useStreamingDeviceProfileStore } from '../device-profile'
|
||||
import { useEffect } from 'react'
|
||||
import { getDeviceProfile } from '../../utils/device-profiles'
|
||||
|
||||
export enum StreamingQuality {
|
||||
Original = 'original', // Direct Play
|
||||
High = 'high', // 320
|
||||
Medium = 'medium', // 256
|
||||
Low = 'low', // 128
|
||||
}
|
||||
import StreamingQuality from '../../enums/audio-quality'
|
||||
|
||||
type PlayerSettingsStore = {
|
||||
streamingQuality: StreamingQuality
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { create } from 'zustand'
|
||||
import { StreamingQuality } from './player'
|
||||
import { createJSONStorage, devtools, persist } from 'zustand/middleware'
|
||||
import { Platform } from 'react-native'
|
||||
import { stateStorage } from '../../constants/storage'
|
||||
import StreamingQuality from '../../enums/audio-quality'
|
||||
|
||||
export type DownloadQuality = StreamingQuality
|
||||
|
||||
|
||||
@@ -19,11 +19,11 @@ import {
|
||||
EncodingContext,
|
||||
MediaStreamProtocol,
|
||||
} from '@jellyfin/sdk/lib/generated-client'
|
||||
import { StreamingQuality } from '../stores/settings/player'
|
||||
import { Platform } from 'react-native'
|
||||
import { getQualityParams } from './mappings'
|
||||
import { capitalize } from 'lodash'
|
||||
import { SourceType } from '../types/JellifyTrack'
|
||||
import StreamingQuality from '../enums/audio-quality'
|
||||
|
||||
/**
|
||||
* A constant that defines the options for the {@link useDeviceProfile} hook - building the
|
||||
@@ -174,15 +174,15 @@ const DEFAULT_PLATFORM_PROFILE: DeviceProfile = {
|
||||
Container: 'mp3',
|
||||
Type: DlnaProfileType.Audio,
|
||||
},
|
||||
// {
|
||||
// Container: 'aac',
|
||||
// Type: DlnaProfileType.Audio,
|
||||
// },
|
||||
// {
|
||||
// AudioCodec: 'aac',
|
||||
// Container: 'm4a',
|
||||
// Type: DlnaProfileType.Audio,
|
||||
// },
|
||||
{
|
||||
Container: 'aac',
|
||||
Type: DlnaProfileType.Audio,
|
||||
},
|
||||
{
|
||||
AudioCodec: 'aac',
|
||||
Container: 'm4a',
|
||||
Type: DlnaProfileType.Audio,
|
||||
},
|
||||
// {
|
||||
// AudioCodec: 'aac',
|
||||
// Container: 'm4b',
|
||||
@@ -198,24 +198,24 @@ const DEFAULT_PLATFORM_PROFILE: DeviceProfile = {
|
||||
},
|
||||
],
|
||||
TranscodingProfiles: [
|
||||
// {
|
||||
// AudioCodec: 'aac',
|
||||
// BreakOnNonKeyFrames: true,
|
||||
// Container: 'aac',
|
||||
// Context: EncodingContext.Streaming,
|
||||
// MaxAudioChannels: '6',
|
||||
// MinSegments: 2,
|
||||
// Protocol: MediaStreamProtocol.Hls,
|
||||
// Type: DlnaProfileType.Audio,
|
||||
// },
|
||||
// {
|
||||
// AudioCodec: 'aac',
|
||||
// Container: 'aac',
|
||||
// Context: EncodingContext.Streaming,
|
||||
// MaxAudioChannels: '6',
|
||||
// Protocol: MediaStreamProtocol.Http,
|
||||
// Type: DlnaProfileType.Audio,
|
||||
// },
|
||||
{
|
||||
AudioCodec: 'aac',
|
||||
BreakOnNonKeyFrames: true,
|
||||
Container: 'aac',
|
||||
Context: EncodingContext.Streaming,
|
||||
MaxAudioChannels: '6',
|
||||
MinSegments: 2,
|
||||
Protocol: MediaStreamProtocol.Hls,
|
||||
Type: DlnaProfileType.Audio,
|
||||
},
|
||||
{
|
||||
AudioCodec: 'aac',
|
||||
Container: 'aac',
|
||||
Context: EncodingContext.Streaming,
|
||||
MaxAudioChannels: '6',
|
||||
Protocol: MediaStreamProtocol.Http,
|
||||
Type: DlnaProfileType.Audio,
|
||||
},
|
||||
{
|
||||
AudioCodec: 'mp3',
|
||||
Container: 'mp3',
|
||||
@@ -240,14 +240,14 @@ const DEFAULT_PLATFORM_PROFILE: DeviceProfile = {
|
||||
Protocol: MediaStreamProtocol.Http,
|
||||
Type: DlnaProfileType.Audio,
|
||||
},
|
||||
// {
|
||||
// AudioCodec: 'aac',
|
||||
// Container: 'aac',
|
||||
// Context: EncodingContext.Static,
|
||||
// MaxAudioChannels: '6',
|
||||
// Protocol: MediaStreamProtocol.Http,
|
||||
// Type: DlnaProfileType.Audio,
|
||||
// },
|
||||
{
|
||||
AudioCodec: 'aac',
|
||||
Container: 'aac',
|
||||
Context: EncodingContext.Static,
|
||||
MaxAudioChannels: '6',
|
||||
Protocol: MediaStreamProtocol.Http,
|
||||
Type: DlnaProfileType.Audio,
|
||||
},
|
||||
{
|
||||
AudioCodec: 'wav',
|
||||
Container: 'wav',
|
||||
|
||||
@@ -13,16 +13,14 @@ import { AudioApi } from '@jellyfin/sdk/lib/generated-client/api'
|
||||
import { JellifyDownload } from '../types/JellifyDownload'
|
||||
import { Api } from '@jellyfin/sdk/lib/api'
|
||||
import RNFS from 'react-native-fs'
|
||||
import { StreamingQuality } from '../stores/settings/player'
|
||||
import { AudioQuality } from '../types/AudioQuality'
|
||||
import { queryClient } from '../constants/query-client'
|
||||
import { QueryKeys } from '../enums/query-keys'
|
||||
import { isUndefined } from 'lodash'
|
||||
import uuid from 'react-native-uuid'
|
||||
import { convertRunTimeTicksToSeconds } from './runtimeticks'
|
||||
import { DownloadQuality } from '../stores/settings/usage'
|
||||
import MediaInfoQueryKey from '../api/queries/media/keys'
|
||||
import { JellifyUser } from '../types/JellifyUser'
|
||||
import StreamingQuality from '../enums/audio-quality'
|
||||
|
||||
/**
|
||||
* Gets quality-specific parameters for transcoding
|
||||
|
||||
Reference in New Issue
Block a user