Skip to content

v0.3.3 — QSV kalibrasyonu + yönlendirilmiş çıktı fix'i

Choose a tag to compare

@inanx12 inanx12 released this 22 Aug 23:06
· 189 commits to main since this release

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.pyh264_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 -2 ofsetiyle aynı tercih).
  • -q değil -q:v. Stream belirteci olmadan -q ses encoder'ına da sızıyor: aynı komutta aac -b:a 192k hedefini 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:appfillercut.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, reconfigure yok, 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); ffmpeg marker'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