해상도 올리기 메모리: 이 기기에서 같은 값이면 같다고 알림 (192)
- 사용자 편의 (기기 확인, P11): 메모리가 작은 기기는 적게 · 보통 · 많이가 모두 가장 작은 타일이라 같은 값이 세 번 보였다 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>묶음5
parent
e81fa6e5ba
commit
69b8ab52ad
|
|
@ -9,6 +9,7 @@
|
|||
" (바뀐 날 같음)": " (same modified time)",
|
||||
" (보낼 것이 더 새것)": " (the one being sent is newer)",
|
||||
" (보통)": " (normal)",
|
||||
" (보통과 같음)": " (same as Normal)",
|
||||
" (사용 불가)": " (unavailable)",
|
||||
" (있는 것이 더 새것)": " (the existing one is newer)",
|
||||
" (자막 {0}개 함께)": " ({0} subtitles moved too)",
|
||||
|
|
@ -1458,6 +1459,7 @@
|
|||
"이 기기에서는 AI 번역을 쓸 수 없습니다.": "AI translation is not available on this device.",
|
||||
"이 기기에서는 AI 엔진을 찾지 못했습니다. 앱을 다시 설치해 보세요": "The AI engine was not found on this device. Try reinstalling the app",
|
||||
"이 기기에서는 쓸 수 없는 컴포넌트입니다": "This component is not available on this device",
|
||||
"이 기기에서는 적게 · 보통 · 많이 가 모두 같습니다: {0} (메모리가 작아 가장 작은 타일)": "On this device Low · Normal · High are all the same: {0} (smallest tile because memory is small)",
|
||||
"이 기기용 파일 없음": "No file for this device",
|
||||
"이 기기의 CPU 가 이 AI 엔진을 지원하지 않습니다": "This device's CPU does not support this AI engine",
|
||||
"이 기기의 안전 저장소를 쓸 수 없어 비밀번호를 저장하지 못했습니다": "Couldn't save the password because this device's secure storage is unavailable",
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
" (바뀐 날 같음)": " (更新日時が同じ)",
|
||||
" (보낼 것이 더 새것)": " (送る方が新しい)",
|
||||
" (보통)": "(標準)",
|
||||
" (보통과 같음)": " (普通と同じ)",
|
||||
" (사용 불가)": "(使用不可)",
|
||||
" (있는 것이 더 새것)": " (既存の方が新しい)",
|
||||
" (자막 {0}개 함께)": "(字幕 {0}個も一緒に)",
|
||||
|
|
@ -1458,6 +1459,7 @@
|
|||
"이 기기에서는 AI 번역을 쓸 수 없습니다.": "この端末では AI 翻訳を使えません。",
|
||||
"이 기기에서는 AI 엔진을 찾지 못했습니다. 앱을 다시 설치해 보세요": "この端末で AI エンジンが見つかりませんでした。アプリを再インストールしてください",
|
||||
"이 기기에서는 쓸 수 없는 컴포넌트입니다": "この端末では使えないコンポーネントです",
|
||||
"이 기기에서는 적게 · 보통 · 많이 가 모두 같습니다: {0} (메모리가 작아 가장 작은 타일)": "この機器では少なめ · 普通 · 多めはすべて同じです: {0} (メモリが少ないため最小のタイル)",
|
||||
"이 기기용 파일 없음": "このデバイス用のファイルなし",
|
||||
"이 기기의 CPU 가 이 AI 엔진을 지원하지 않습니다": "この端末の CPU はこの AI エンジンに対応していません",
|
||||
"이 기기의 안전 저장소를 쓸 수 없어 비밀번호를 저장하지 못했습니다": "この端末の安全な保存領域を使えないため、パスワードを保存できませんでした",
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
" (바뀐 날 같음)": "(修改时间相同)",
|
||||
" (보낼 것이 더 새것)": "(要发送的较新)",
|
||||
" (보통)": "(标准)",
|
||||
" (보통과 같음)": "(与普通相同)",
|
||||
" (사용 불가)": "(不可用)",
|
||||
" (있는 것이 더 새것)": "(已有的较新)",
|
||||
" (자막 {0}개 함께)": "(字幕 {0} 个一并移动)",
|
||||
|
|
@ -1458,6 +1459,7 @@
|
|||
"이 기기에서는 AI 번역을 쓸 수 없습니다.": "此设备无法使用 AI 翻译。",
|
||||
"이 기기에서는 AI 엔진을 찾지 못했습니다. 앱을 다시 설치해 보세요": "在此设备上找不到 AI 引擎。请尝试重新安装应用",
|
||||
"이 기기에서는 쓸 수 없는 컴포넌트입니다": "此组件在本设备上不可用",
|
||||
"이 기기에서는 적게 · 보통 · 많이 가 모두 같습니다: {0} (메모리가 작아 가장 작은 타일)": "在此设备上,少 · 普通 · 多 都相同:{0}(内存较小,使用最小的分块)",
|
||||
"이 기기용 파일 없음": "没有此设备的文件",
|
||||
"이 기기의 CPU 가 이 AI 엔진을 지원하지 않습니다": "此设备的 CPU 不支持该 AI 引擎",
|
||||
"이 기기의 안전 저장소를 쓸 수 없어 비밀번호를 저장하지 못했습니다": "本设备的安全存储不可用,无法保存密码",
|
||||
|
|
|
|||
|
|
@ -92,6 +92,26 @@ int androidUpscaleTile({int? memTotalMb, int? longSide, double share = 0.30}) {
|
|||
return 192;
|
||||
}
|
||||
|
||||
/// 176 · 192: 환경 설정 "해상도 올리기 메모리" 의 설명 줄 - 이 기기에서 적게 · 보통 · 많이 가 고르는 타일 · 메모리.
|
||||
/// 메모리가 작은 기기 (P11 4GB 등) 는 셋 다 가장 작은 타일이라 같은 값이 세 번 보였다 - 같으면 그렇다고 알린다
|
||||
List<String> upscaleMemoryLines(int? memTotalMb) {
|
||||
int tile(String id) => androidUpscaleTile(memTotalMb: memTotalMb, share: upscaleMemoryShare(id));
|
||||
String text(int t) => trf('타일 {0} · 약 {1}GB', [t, (upscaleTileMemoryMb(t) / 1024).toStringAsFixed(1)]);
|
||||
final low = tile('low'), normal = tile('normal'), high = tile('high');
|
||||
final same = tr(' (보통과 같음)');
|
||||
return [
|
||||
if (memTotalMb != null) trf('이 기기 메모리 {0}GB 기준:', [(memTotalMb / 1024).toStringAsFixed(0)]),
|
||||
if (low == normal && normal == high)
|
||||
trf('이 기기에서는 적게 · 보통 · 많이 가 모두 같습니다: {0} (메모리가 작아 가장 작은 타일)', [text(normal)])
|
||||
else ...[
|
||||
trf('적게 (느림): {0}', [text(low)]) + (low == normal ? same : ''),
|
||||
trf('보통: {0}', [text(normal)]),
|
||||
trf('많이 (빠름): {0} - 다른 앱이 많이 켜져 있으면 Android 가 이 앱을 끌 수 있습니다', [text(high)]) + (high == normal ? same : ''),
|
||||
],
|
||||
tr('타일이 작을수록 느립니다 (예: 16GB 폰에서 1024×768 을 2배로 - 512 약 4분 · 320 약 9분 30초).'),
|
||||
];
|
||||
}
|
||||
|
||||
/// 타일 크기 → 엔진이 쓸 메모리 어림 (MB, S10 실측 512 → 6.6GB 에서 넓이 비례)
|
||||
int upscaleTileMemoryMb(int tile) => (6600 * (tile / 512) * (tile / 512)).round();
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ import 'folder_picker.dart';
|
|||
import 'license_texts.dart' show showLicenseDocument;
|
||||
import 'setting_tile.dart';
|
||||
import 'theme.dart';
|
||||
import '../app/ai_upscale.dart' show androidUpscaleTile, upscaleMemoryShare, upscaleTileMemoryMb, deviceMemTotalMb;
|
||||
import '../app/ai_upscale.dart' show deviceMemTotalMb, upscaleMemoryLines;
|
||||
|
||||
/// 기기 안에서 그리는 데 아직 받지 않은 파일 (Windows 는 실행 파일까지, TAESD 포함) - AI 그림 화면 · 받기 화면이 같은 값을 보인다 (139)
|
||||
List<AiFile> aiMissingFiles(AiStore store) => [
|
||||
|
|
@ -75,21 +75,10 @@ class _AiSettingsState extends State<AiSettings> {
|
|||
/// 176: 해상도 올리기 메모리 (적게 · 보통 · 많이) - 이 기기에서의 타일 · 예상 메모리
|
||||
Widget _upMemoryTile() {
|
||||
final mem = deviceMemTotalMb();
|
||||
String level(String id) {
|
||||
final t = androidUpscaleTile(memTotalMb: mem, share: upscaleMemoryShare(id));
|
||||
return trf('타일 {0} · 약 {1}GB', [t, (upscaleTileMemoryMb(t) / 1024).toStringAsFixed(1)]);
|
||||
}
|
||||
|
||||
return SettingTile(
|
||||
leading: const Icon(Icons.memory),
|
||||
title: Text(tr('해상도 올리기 메모리')),
|
||||
subtitle: Text([
|
||||
if (mem != null) trf('이 기기 메모리 {0}GB 기준:', [(mem / 1024).toStringAsFixed(0)]),
|
||||
trf('적게 (느림): {0}', [level('low')]),
|
||||
trf('보통: {0}', [level('normal')]),
|
||||
trf('많이 (빠름): {0} - 다른 앱이 많이 켜져 있으면 Android 가 이 앱을 끌 수 있습니다', [level('high')]),
|
||||
tr('타일이 작을수록 느립니다 (예: 16GB 폰에서 1024×768 을 2배로 - 512 약 4분 · 320 약 9분 30초).'),
|
||||
].join('\n')),
|
||||
subtitle: Text(upscaleMemoryLines(mem).join('\n')),
|
||||
isThreeLine: true,
|
||||
trailing: DropdownButton<String>(
|
||||
value: c.settings.aiUpMemory,
|
||||
|
|
|
|||
|
|
@ -58,6 +58,14 @@ void main() {
|
|||
expect(androidUpscaleTile(memTotalMb: 40000, share: 0.20), 512);
|
||||
expect(androidUpscaleTile(memTotalMb: 6000, share: 0.20), 192);
|
||||
expect(androidUpscaleTile(longSide: 1024), 256);
|
||||
// 192: 메모리가 작은 기기 (P11 4GB, MemTotal 약 3.5GB) 는 셋 다 가장 작은 타일 - 같은 값을 세 번 보이지 않고 같다고 알린다
|
||||
final small = upscaleMemoryLines(3500);
|
||||
expect(small.where((l) => l.contains('모두 같습니다')), hasLength(1));
|
||||
expect(small.where((l) => l.startsWith('적게') || l.startsWith('많이')), isEmpty);
|
||||
// 16GB 는 셋이 다르다
|
||||
expect(upscaleMemoryLines(15000).where((l) => l.contains('같')), isEmpty);
|
||||
// 일부만 같으면 그 줄에 (보통과 같음)
|
||||
expect(upscaleMemoryLines(5000).where((l) => l.contains('(보통과 같음)')), isNotEmpty);
|
||||
expect(androidUpscaleTile(longSide: 800), 512);
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue