// 5.7.0 — 4K nach der Leistung (Commander-Entscheid 12.09.2026): Grafik- // karten-Encoder plus 4K-Preset → komprimieren; nur CPU → verlustfrei. // Preset-Namen und Encoder am mitgelieferten HandBrake 1.11.2 gemessen // (--preset-list, --help; vce_h265_10bit stürzt ab, AV1 10-Bit läuft). import { describe, expect, it } from 'vitest' import { DEFAULT_HB_PRESET, PRESET_KEINE, empfehlungText, presetEmpfehlung } from '../src/gemeinsam/preset-empfehlung' import { komprimierenFuer, presetFuer } from '../src/kern/komprimieren/presets' const PRESETS = ['H.265 MKV 1080p30', 'H.265 MKV 2160p60 4K', 'AV1 VCN 2160p 4K', 'H.265 VCN 2160p 4K', 'H.265 VCN 1080p', 'H.265 NVENC 1080p'] const NUR_CPU = ['cpu-x264', 'cpu-x265', 'cpu-av1'] const AMD = [...NUR_CPU, 'vce', 'vce-av1'] const NVIDIA_OHNE_4K = [...NUR_CPU, 'nvenc'] describe('presetEmpfehlung für 4K-UHD', () => { it('Grafikkarte mit 4K-Preset → das 4K-Preset (8 Bit im Klartext)', () => { expect(presetEmpfehlung('uhd', AMD, PRESETS)).toBe('H.265 VCN 2160p 4K') expect(empfehlungText('uhd', 'H.265 VCN 2160p 4K')).toBe('H.265 VCN 2160p 4K (8 Bit)') }) it('nur CPU → verlustfrei lassen, nie das 1080p-CPU-Preset', () => { expect(presetEmpfehlung('uhd', NUR_CPU, PRESETS)).toBe(PRESET_KEINE) expect(empfehlungText('uhd', PRESET_KEINE)).toContain('verlustfrei') }) it('Grafikkarte ohne 4K-Preset → verlustfrei, nicht klein rechnen', () => { expect(presetEmpfehlung('uhd', NVIDIA_OHNE_4K, PRESETS)).toBe(PRESET_KEINE) }) it('DVD und Blu-ray wie bisher: Grafikkarte, sonst CPU-Default', () => { expect(presetEmpfehlung('bluray', AMD, PRESETS)).toBe('H.265 VCN 1080p') expect(presetEmpfehlung('dvd', NUR_CPU, PRESETS)).toBe(DEFAULT_HB_PRESET) expect(presetEmpfehlung('bluray', NVIDIA_OHNE_4K, PRESETS)).toBe('H.265 NVENC 1080p') }) }) describe('komprimierenFuer mit Empfehlung', () => { it('automatisch + Empfehlung „keine" → nicht komprimieren', () => { expect(komprimierenFuer('uhd', {}, PRESET_KEINE)).toBe(false) expect(komprimierenFuer('uhd', { transcodePresetUhd: '' }, PRESET_KEINE)).toBe(false) }) it('eigene Wahl schlägt die Empfehlung — in beide Richtungen', () => { expect(komprimierenFuer('uhd', { transcodePresetUhd: 'AV1 VCN 2160p 4K' }, PRESET_KEINE)).toBe(true) expect(komprimierenFuer('uhd', { transcodePresetUhd: PRESET_KEINE }, 'H.265 VCN 2160p 4K')).toBe(false) expect(presetFuer('uhd', { transcodePresetUhd: 'AV1 VCN 2160p 4K' }, PRESET_KEINE)).toBe('AV1 VCN 2160p 4K') }) it('Blu-ray bleibt unberührt', () => { expect(komprimierenFuer('bluray', {}, 'H.265 VCN 1080p')).toBe(true) expect(komprimierenFuer('bluray', {}, '')).toBe(true) }) })