v0.3.3 — QSV kalibrasyonu + yönlendirilmiş çıktı fix'i
Donanım kalibrasyonu + bir crash düzeltmesi. h264_qsv kalite argümanları ilk kez gerçek Intel donanımında ölçüldü (KI-6'nın QSV yarısı kapandı) ve yönlendirilmiş çıktıda koşuyu öldüren encoding hatası giderildi. Yeni bağımlılık yok.
Düzeltildi
render/encoder.py — h264_qsv kalite argümanları kalibre edildi. v0.2'den beri tablodaki QSV girişi "makul default"tu, gerçek donanımda hiç ölçülmemişti. Intel UHD iGPU'da (i5-12450HX, hibrit kip) iki gerçek klip × 7 aday ölçüldü — libx264 crf 23 referansına karşı boyut, süre ve SSIM:
- Mod ICQ değil CQP. Eşit dosya boyutuna indirgendiğinde CQP iki klipte de daha yüksek SSIM verdi (720p30 facecam: 0.98971 vs ~0.98903 @ 82 MB; 1080p60 düşük hareket: 0.99658 vs ~0.99623 @ 13.4 MB) ve daha hızlıydı (45.6 vs 59.1 sn). Yeni arg seti:
-preset medium -q:v {crf}. - Eşleme
-q:v = crf(ofset 0). Klip başına kazananlar çakıştı (facecam'de crf+0, düşük hareketli klipte crf+3); tek doğrusal eşleme gerektiği için karar aracın hedef içeriğine — konuşma/facecam — yaslandı. Ofset 0 iki klipte de referansın SSIM'ine 0.001 içinde kalıyor. - Ölçüm sapması kayda geçti: CQP sabit kuantizasyondur, x264'ün crf'i gibi içeriğe uyarlanmaz — düşük hareketli 1080p60 klipte dosya referansı %31 aştı (facecam'de %9). Sapma bilinçli olarak kalite yönünde bırakıldı (NVENC'in
-2ofsetiyle aynı tercih). -qdeğil-q:v. Stream belirteci olmadan-qses encoder'ına da sızıyor: aynı komutta aac-b:a 192khedefini bırakıp qscale VBR'a geçti (241 kbps ölçüldü). Ürettikleri video akışı bit-birebir aynı, yani ölçümler eşlemeye taşınıyor.
_KALITE_ARGS'ın diğer satırlarına (h264_nvenc, h264_amf, libx264) dokunulmadı. Ölçüm tabloları KNOWN_ISSUES.md KI-6'da.
CLI — yönlendirilmiş stdout koşuyu öldürüyordu. fillercut video.mp4 > log.txt (veya herhangi bir pipe) Windows-TR makinede traceback'le ölüyordu: yönlendirilmiş stdout locale encoding'ine düşüyor (ölçüldü: cp1254, errors="surrogateescape") ve probe özetindeki ✓ (U+2713) cp1254'te yok → UnicodeEncodeError. Çıktı terminalde kalınca görünmüyor, log alan herkesi vuruyordu. main_entry artık stdout+stderr'i errors="replace"e ayarlıyor. encoding="utf-8" bilinçli olarak seçilmedi: locale encoding'i korumak gerçek konsolda kod sayfasıyla çelişme riskini sıfırlıyor, bedeli yalnız süs karakteri — gerçek koşuda doğrulandı, log.txt'de — (0x97) ve ı (0xFD) sağlam, yalnız ✓ → ?.
Değişti
console_scripts hedefi fillercut.cli:app → fillercut.cli:main_entry. Akış ayarı ilk çıktıdan önce çalışmak zorunda ve modül seviyesinde yapılamaz (fillercut.cli'yi import etmek çağıranın akışlarını değiştirmemeli). Kaynaktan kuranlar için not: bu paketleme değişikliğidir, etkili olması için pip install -e . gerekir.
Testler
- QSV değer sabitlemesi CQP'ye güncellendi;
-q:v'nin stream belirteçli olması ve[0, 51]kırpması ayrıca kilitlendi. TestGercekQsvProbe— NVENC muadilinin QSV karşılığı (@pytest.mark.ffmpeg); donanım yoksa kendi kendine skip eder.TestKonsolAkisiDayanikliligi— cp1254 sahte akışa gerçek probe özeti basımı: crash yok,✓replace ile düşüyor, akış sürüyor; üç guard yolu (akışNone,reconfigureyok, akış kapalı) ayrıca kilitli.- Kilit testler fix'siz kırmızı olduğu doğrulanarak eklendi: fix devre dışı bırakılınca ana test tam da üretimdeki hatayı verdi (
'charmap' codec can't encode character '✓'). - Toplam test sayısı 417 → 431 (429 passed, 2 skipped);
ffmpegmarker'lı test 5 → 8.
Bilinen sınırlar
KI-6 AMF yarısı açık — AMD donanımı yok; kalibrasyon "AMD günü"nde QSV'nin deseniyle tekrarlanacak (referans → aday grid'i → boyut/süre/SSIM → crf eşlemesi), adaylar önce ffmpeg -h encoder=h264_amf çıktısıyla doğrulanacak.
Tam değişiklik listesi: CHANGELOG.md