Skip to content

Commit 81e521a

Browse files
committed
Merge branch '1910_hwdec'
2 parents 75a7e5f + 92f4120 commit 81e521a

File tree

11 files changed

+53
-14
lines changed

11 files changed

+53
-14
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file.
77
### Added
88

99
- Collection: allow using width/height when bulk renaming
10+
- Video: allow forcing hardware acceleration
1011

1112
## <a id="v1.13.12"></a>[v1.13.12] - 2025-12-23
1213

lib/l10n/app_en.arb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -841,6 +841,8 @@
841841
"settingsSystemDefault": "System default",
842842
"settingsDefault": "Default",
843843
"settingsDisabled": "Disabled",
844+
"settingsEnabled": "Enabled",
845+
"settingsForced": "Forced",
844846
"settingsAskEverytime": "Ask everytime",
845847
"settingsModificationWarningDialogMessage": "Other settings will be modified.",
846848

lib/model/device.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ final Device device = Device._private();
77

88
class Device {
99
late final String _packageName, _packageVersion, _userAgent;
10-
late final bool _canAuthenticateUser, _canPinShortcut;
10+
late final bool _canAuthenticateUser, _canPinShortcut, _showPinShortcutFeedback;
1111
late final bool _canRenderFlagEmojis, _canRenderSubdivisionFlagEmojis, _canRequestManageMedia, _canSetLockScreenWallpaper;
12-
late final bool _hasGeocoder, _isDynamicColorAvailable, _isTelevision, _showPinShortcutFeedback, _supportEdgeToEdgeUIMode, _supportPictureInPicture;
12+
late final bool _hasGeocoder, _isDynamicColorAvailable, _supportEdgeToEdgeUIMode, _supportPictureInPicture;
13+
late final bool _isPhysicalDevice, _isTelevision;
1314

1415
String get packageName => _packageName;
1516

@@ -33,6 +34,8 @@ class Device {
3334

3435
bool get isDynamicColorAvailable => _isDynamicColorAvailable;
3536

37+
bool get isPhysicalDevice => _isPhysicalDevice;
38+
3639
bool get isTelevision => _isTelevision;
3740

3841
bool get showPinShortcutFeedback => _showPinShortcutFeedback;
@@ -50,6 +53,7 @@ class Device {
5053
_userAgent = '$_packageName/$_packageVersion';
5154

5255
final androidInfo = await DeviceInfoPlugin().androidInfo;
56+
_isPhysicalDevice = androidInfo.isPhysicalDevice;
5357
_isTelevision = androidInfo.systemFeatures.contains('android.software.leanback');
5458

5559
final auth = LocalAuthentication();

lib/model/settings/settings.dart

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ class Settings with ChangeNotifier, SettingsAccess, SearchSettings, AppSettings,
7171
_unregister();
7272
_register(monitorPlatformSettings);
7373
initAppSettings();
74+
await sanitize();
7475
}
7576

7677
void _unregister() {
@@ -184,6 +185,11 @@ class Settings with ChangeNotifier, SettingsAccess, SearchSettings, AppSettings,
184185
set(SettingKeys.videoBackgroundModeKey, null);
185186
}
186187
collectionBurstPatterns = collectionBurstPatterns.where(BurstPatterns.options.contains).toList();
188+
189+
// emulator
190+
if (!device.isPhysicalDevice) {
191+
set(SettingKeys.videoHardwareAccelerationKey, VideoHardwareAcceleration.disabled);
192+
}
187193
}
188194

189195
// tag editor
@@ -383,7 +389,6 @@ class Settings with ChangeNotifier, SettingsAccess, SearchSettings, AppSettings,
383389
case SettingKeys.viewerGestureSideTapNextKey:
384390
case SettingKeys.viewerUseCutoutKey:
385391
case SettingKeys.enableMotionPhotoAutoPlayKey:
386-
case SettingKeys.enableVideoHardwareAccelerationKey:
387392
case SettingKeys.videoGestureDoubleTapTogglePlayKey:
388393
case SettingKeys.videoGestureSideDoubleTapSeekKey:
389394
case SettingKeys.videoGestureVerticalDragBrightnessVolumeKey:
@@ -426,6 +431,7 @@ class Settings with ChangeNotifier, SettingsAccess, SearchSettings, AppSettings,
426431
case SettingKeys.imageBackgroundKey:
427432
case SettingKeys.videoAutoPlayModeKey:
428433
case SettingKeys.videoBackgroundModeKey:
434+
case SettingKeys.videoHardwareAccelerationKey:
429435
case SettingKeys.videoLoopModeKey:
430436
case SettingKeys.videoResumptionModeKey:
431437
case SettingKeys.subtitleTextAlignmentKey:

lib/view/src/settings/enums.dart

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,17 @@ extension ExtraVideoBackgroundModeView on VideoBackgroundMode {
176176
}
177177
}
178178

179+
extension ExtraVideoHardwareAccelerationView on VideoHardwareAcceleration {
180+
String getName(BuildContext context) {
181+
final l10n = context.l10n;
182+
return switch (this) {
183+
VideoHardwareAcceleration.disabled => l10n.settingsDisabled,
184+
VideoHardwareAcceleration.enabled => l10n.settingsEnabled,
185+
VideoHardwareAcceleration.forced => l10n.settingsForced,
186+
};
187+
}
188+
}
189+
179190
extension ExtraVideoLoopModeView on VideoLoopMode {
180191
String getName(BuildContext context) {
181192
final l10n = context.l10n;

lib/widgets/settings/video/playback.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@ class VideoPlaybackPage extends StatelessWidget {
2121
body: SafeArea(
2222
child: ListView(
2323
children: [
24-
SettingsSwitchListTile(
25-
selector: (context, s) => s.enableVideoHardwareAcceleration,
26-
onChanged: (v) => settings.enableVideoHardwareAcceleration = v,
27-
title: context.l10n.settingsVideoEnableHardwareAcceleration,
24+
SettingsSelectionListTile<VideoHardwareAcceleration>(
25+
values: VideoHardwareAcceleration.values,
26+
getName: (context, v) => v.getName(context),
27+
selector: (context, s) => s.videoHardwareAcceleration,
28+
onSelection: (v) => settings.videoHardwareAcceleration = v,
29+
tileTitle: context.l10n.settingsVideoEnableHardwareAcceleration,
2830
),
2931
SettingsSelectionListTile<VideoAutoPlayMode>(
3032
values: VideoAutoPlayMode.values,

plugins/aves_model/lib/src/settings/enums.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ enum VideoAutoPlayMode { disabled, playMuted, playWithSound }
3636

3737
enum VideoBackgroundMode { disabled, pip }
3838

39+
enum VideoHardwareAcceleration { disabled, enabled, forced }
40+
3941
enum VideoLoopMode { never, shortOnly, always }
4042

4143
enum VideoResumptionMode { never, ask, always }

plugins/aves_model/lib/src/settings/keys.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,9 @@ class SettingKeys {
111111
static const imageBackgroundKey = 'image_background';
112112

113113
// video
114-
static const enableVideoHardwareAccelerationKey = 'video_hwaccel_mediacodec';
115-
static const videoBackgroundModeKey = 'video_background_mode';
116114
static const videoAutoPlayModeKey = 'video_auto_play_mode';
115+
static const videoBackgroundModeKey = 'video_background_mode';
116+
static const videoHardwareAccelerationKey = 'video_hardware_acceleration';
117117
static const videoLoopModeKey = 'video_loop';
118118
static const videoResumptionModeKey = 'video_resumption_mode';
119119
static const videoControlActionsKey = 'video_control_actions';

plugins/aves_video/lib/src/settings/defaults.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import 'package:aves_utils/aves_utils.dart';
55

66
class SettingsDefaults {
77
// video
8-
static const enableVideoHardwareAcceleration = true;
98
static const videoAutoPlayMode = VideoAutoPlayMode.disabled;
109
static const videoBackgroundMode = VideoBackgroundMode.disabled;
10+
static const videoHardwareAcceleration = VideoHardwareAcceleration.enabled;
1111
static const videoLoopMode = VideoLoopMode.shortOnly;
1212
static const videoResumptionMode = VideoResumptionMode.ask;
1313
static const videoShowRawTimedText = false;

plugins/aves_video/lib/src/settings/video.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import 'package:aves_model/aves_model.dart';
22
import 'package:aves_video/src/settings/defaults.dart';
33

44
mixin VideoSettings on SettingsAccess {
5-
bool get enableVideoHardwareAcceleration => getBool(SettingKeys.enableVideoHardwareAccelerationKey) ?? SettingsDefaults.enableVideoHardwareAcceleration;
5+
VideoHardwareAcceleration get videoHardwareAcceleration => getEnumOrDefault(SettingKeys.videoHardwareAccelerationKey, SettingsDefaults.videoHardwareAcceleration, VideoHardwareAcceleration.values);
66

7-
set enableVideoHardwareAcceleration(bool newValue) => set(SettingKeys.enableVideoHardwareAccelerationKey, newValue);
7+
set videoHardwareAcceleration(VideoHardwareAcceleration newValue) => set(SettingKeys.videoHardwareAccelerationKey, newValue.toString());
88

99
VideoAutoPlayMode get videoAutoPlayMode => getEnumOrDefault(SettingKeys.videoAutoPlayModeKey, SettingsDefaults.videoAutoPlayMode, VideoAutoPlayMode.values);
1010

0 commit comments

Comments
 (0)