diff --git a/lib/models/syncing/transcode_download_model.dart b/lib/models/syncing/transcode_download_model.dart index 1e9a13218..c1755c88d 100644 --- a/lib/models/syncing/transcode_download_model.dart +++ b/lib/models/syncing/transcode_download_model.dart @@ -54,7 +54,8 @@ abstract class TranscodeDownloadModel with _$TranscodeDownloadModel { /// Device profile for download transcoding. /// Uses HTTP protocol instead of HLS so the server returns a complete file URL. - DeviceProfile get deviceProfile => DeviceProfile( + DeviceProfile get deviceProfile => ref.read(argumentsStateProvider).leanBackMode + ? DeviceProfile( maxStreamingBitrate: maxBitrate.bitRate, maxStaticBitrate: maxBitrate.bitRate, directPlayProfiles: const [ @@ -76,9 +77,33 @@ abstract class TranscodeDownloadModel with _$TranscodeDownloadModel { SubtitleProfile(format: 'vtt', method: SubtitleDeliveryMethod.$external), SubtitleProfile(format: 'ass', method: SubtitleDeliveryMethod.$external), SubtitleProfile(format: 'ssa', method: SubtitleDeliveryMethod.$external), - SubtitleProfile(format: 'pgssub', method: SubtitleDeliveryMethod.$external), ], ); + : DeviceProfile( + maxStreamingBitrate: maxBitrate.bitRate, + maxStaticBitrate: maxBitrate.bitRate, + directPlayProfiles: const [ + DirectPlayProfile(type: DlnaProfileType.video), + DirectPlayProfile(type: DlnaProfileType.audio), + ], + transcodingProfiles: [ + TranscodingProfile( + audioCodec: audioCodec.name.toLowerCase(), + container: container.name.toLowerCase(), + maxAudioChannels: '2', + protocol: MediaStreamProtocol.http, + type: DlnaProfileType.video, + videoCodec: videoCodec.name.toLowerCase(), + ), + ], + containerProfiles: const [], + subtitleProfiles: const [ + SubtitleProfile(format: 'vtt', method: SubtitleDeliveryMethod.$external), + SubtitleProfile(format: 'ass', method: SubtitleDeliveryMethod.$external), + SubtitleProfile(format: 'ssa', method: SubtitleDeliveryMethod.$external), + SubtitleProfile(format: 'pgssub', method: SubtitleDeliveryMethod.$external), + ], + ); String label(BuildContext context) { if (!enabled) { diff --git a/lib/profiles/default_profile.dart b/lib/profiles/default_profile.dart index f33505d68..dfe750f3b 100644 --- a/lib/profiles/default_profile.dart +++ b/lib/profiles/default_profile.dart @@ -12,6 +12,36 @@ final videoProfileProvider = StateProvider.autoDispose((ref) => DeviceProfile defaultProfile(PlayerOptions player) => kIsWeb ? webProfile + : ref.read(argumentsStateProvider).leanBackMode + ? const DeviceProfile( + maxStreamingBitrate: 120000000, + maxStaticBitrate: 120000000, + musicStreamingTranscodingBitrate: 384000, + directPlayProfiles: [ + DirectPlayProfile( + type: DlnaProfileType.video, + ), + DirectPlayProfile( + type: DlnaProfileType.audio, + ) + ], + transcodingProfiles: [ + TranscodingProfile( + audioCodec: 'aac,mp3,mp2', + container: 'ts', + maxAudioChannels: '2', + protocol: MediaStreamProtocol.hls, + type: DlnaProfileType.video, + videoCodec: 'h264', + ), + ], + containerProfiles: [], + subtitleProfiles: [ + SubtitleProfile(format: 'vtt', method: SubtitleDeliveryMethod.$external), + SubtitleProfile(format: 'ass', method: SubtitleDeliveryMethod.$external), + SubtitleProfile(format: 'ssa', method: SubtitleDeliveryMethod.$external), + ], + ) : const DeviceProfile( maxStreamingBitrate: 120000000, maxStaticBitrate: 120000000,