mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 08:38:18 +08:00
@@ -8,6 +8,7 @@ import 'package:PiliPlus/models/common/video/video_decode_type.dart';
|
|||||||
import 'package:PiliPlus/models/common/video/video_quality.dart';
|
import 'package:PiliPlus/models/common/video/video_quality.dart';
|
||||||
import 'package:PiliPlus/pages/setting/models/model.dart';
|
import 'package:PiliPlus/pages/setting/models/model.dart';
|
||||||
import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart';
|
import 'package:PiliPlus/pages/setting/widgets/select_dialog.dart';
|
||||||
|
import 'package:PiliPlus/plugin/pl_player/models/hwdec_type.dart';
|
||||||
import 'package:PiliPlus/utils/storage.dart';
|
import 'package:PiliPlus/utils/storage.dart';
|
||||||
import 'package:PiliPlus/utils/storage_key.dart';
|
import 'package:PiliPlus/utils/storage_key.dart';
|
||||||
import 'package:PiliPlus/utils/storage_pref.dart';
|
import 'package:PiliPlus/utils/storage_pref.dart';
|
||||||
@@ -343,19 +344,15 @@ List<SettingsModel> get videoSettings => [
|
|||||||
leading: const Icon(Icons.memory_outlined),
|
leading: const Icon(Icons.memory_outlined),
|
||||||
getSubtitle: () => '当前:${Pref.hardwareDecoding}(此项即mpv的--hwdec)',
|
getSubtitle: () => '当前:${Pref.hardwareDecoding}(此项即mpv的--hwdec)',
|
||||||
onTap: (setState) async {
|
onTap: (setState) async {
|
||||||
String? result = await showDialog(
|
final result = await showDialog<String>(
|
||||||
context: Get.context!,
|
context: Get.context!,
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
return SelectDialog<String>(
|
return SelectDialog<String>(
|
||||||
title: '硬解模式',
|
title: '硬解模式',
|
||||||
value: Pref.hardwareDecoding,
|
value: Pref.hardwareDecoding,
|
||||||
values: const [
|
values: HwDecType.values
|
||||||
'auto',
|
.map((e) => (e.hwdec, '${e.hwdec}\n${e.desc}'))
|
||||||
'auto-copy',
|
.toList(),
|
||||||
'auto-safe',
|
|
||||||
'no',
|
|
||||||
'yes',
|
|
||||||
].map((e) => (e, e)).toList(),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
32
lib/plugin/pl_player/models/hwdec_type.dart
Normal file
32
lib/plugin/pl_player/models/hwdec_type.dart
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
enum HwDecType {
|
||||||
|
no('no', '启用软解'),
|
||||||
|
auto('auto', '启用任意可用解码器'),
|
||||||
|
autoSafe('auto-safe', '启用最佳解码器'),
|
||||||
|
autoCopy('auto-copy', '启用带拷贝功能的最佳解码器'),
|
||||||
|
d3d11va('d3d11va', 'DirectX11 (windows8 及以上)'),
|
||||||
|
d3d11vaCopy('d3d11va-copy', 'DirectX11 (windows8 及以上) (非直通)'),
|
||||||
|
videotoolbox('videotoolbox', 'VideoToolbox (macOS / iOS)'),
|
||||||
|
videotoolboxCopy('videotoolbox-copy', 'VideoToolbox (macOS / iOS) (非直通)'),
|
||||||
|
vaapi('vaapi', 'VAAPI (Linux)'),
|
||||||
|
vaapiCopy('vaapi-copy', 'VAAPI (Linux) (非直通)'),
|
||||||
|
nvdec('nvdec', 'NVDEC (NVIDIA独占)'),
|
||||||
|
nvdecCopy('nvdec-copy', 'NVDEC (NVIDIA独占) (非直通)'),
|
||||||
|
drm('drm', 'DRM (Linux)'),
|
||||||
|
drmCopy('drm-copy', 'DRM (Linux) (非直通)'),
|
||||||
|
vulkan('vulkan', 'Vulkan (全平台) (实验性)'),
|
||||||
|
vulkanCopy('vulkan-copy', 'Vulkan (全平台) (实验性) (非直通)'),
|
||||||
|
dxva2('dxva2', 'DXVA2 (Windows7 及以上)'),
|
||||||
|
dxva2Copy('dxva2-copy', 'DXVA2 (Windows7 及以上) (非直通)'),
|
||||||
|
vdpau('vdpau', 'VDPAU (Linux)'),
|
||||||
|
vdpauCopy('vdpau-copy', 'VDPAU (Linux) (非直通)'),
|
||||||
|
mediacodec('mediacodec', 'MediaCodec (Android)'),
|
||||||
|
mediacodecCopy('mediacodec-copy', 'MediaCodec (Android) (非直通)'),
|
||||||
|
cuda('cuda', 'CUDA (NVIDIA独占) (过时)'),
|
||||||
|
cudaCopy('cuda-copy', 'CUDA (NVIDIA独占) (过时) (非直通)'),
|
||||||
|
crystalhd('crystalhd', 'CrystalHD (全平台) (过时)'),
|
||||||
|
rkmpp('rkmpp', 'Rockchip MPP (仅部分Rockchip芯片)');
|
||||||
|
|
||||||
|
final String hwdec;
|
||||||
|
final String desc;
|
||||||
|
const HwDecType(this.hwdec, this.desc);
|
||||||
|
}
|
||||||
@@ -21,6 +21,7 @@ import 'package:PiliPlus/models/user/danmaku_rule.dart';
|
|||||||
import 'package:PiliPlus/models/user/info.dart';
|
import 'package:PiliPlus/models/user/info.dart';
|
||||||
import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart';
|
import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart';
|
||||||
import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart';
|
import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart';
|
||||||
|
import 'package:PiliPlus/plugin/pl_player/models/hwdec_type.dart';
|
||||||
import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart';
|
import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart';
|
||||||
import 'package:PiliPlus/utils/context_ext.dart';
|
import 'package:PiliPlus/utils/context_ext.dart';
|
||||||
import 'package:PiliPlus/utils/extension.dart';
|
import 'package:PiliPlus/utils/extension.dart';
|
||||||
@@ -228,7 +229,9 @@ abstract class Pref {
|
|||||||
|
|
||||||
static String get hardwareDecoding => _setting.get(
|
static String get hardwareDecoding => _setting.get(
|
||||||
SettingBoxKey.hardwareDecoding,
|
SettingBoxKey.hardwareDecoding,
|
||||||
defaultValue: Platform.isAndroid ? 'auto-safe' : 'auto',
|
defaultValue: Platform.isAndroid
|
||||||
|
? HwDecType.autoSafe.hwdec
|
||||||
|
: HwDecType.auto.hwdec,
|
||||||
);
|
);
|
||||||
|
|
||||||
static String get videoSync =>
|
static String get videoSync =>
|
||||||
|
|||||||
Reference in New Issue
Block a user