Potvrdíte / vyvrátíte? Jaká je aktuální situace ohledně Hevc+lookahead @skylake @qsv.
Je rok 2024. Naposled jsem to zkoušel v 2017.
Právě jsem na to narazil (opakovaně). , Skylake. ffmpeg píše MFX session API version 2.13 a MGX session implementation 1.31. FFMPEG mám V nové verzi, 2024-10-02 . Nyní jsem chtěl zkusit jestli už to funguje náhodou.
U HEVC_QSV mi to prostě kóduje bez look_ahead (píše to RateCOntrolMethod=ICQ místo "ALA_ICQ)
Kde je zakopaný pes, proč LA_ICQ mi nejde. Je to vlastnost HEVC, quickysync, nepodpora Skylake, bug v ffmpeg? Nebo je potřeba aktualizovat drivery grafiky a nějaký media (mfx ) runtime? Používám grafikou akcelerovaný pipeline, komplet, IA cores, jsou pod 20% a pod 5W. GT cores berou 18W pro HEVC. (13 pro H264)
Bohužel je to pořád tak jak jsem psal a vy také potvrzujete. LA ICQ nefunguje s HEVC. Není to chyba ffmpeg, nebo nástrojů, co volají ty knihovny. Chová se to přesně, jak popisujete, pošle se nastavení rc modu - nestane se nic.
Bohužel to vypadá na neřešený bug, protože se o tom mluví na fóru Intelu zhruba od vydání Skylake (2015).
U novějších CPU tam je hlavně rozpor mezi oficiální dokumentací Intelu a realitou.
https://www.intel.com/content/www/us/en/docs/onevpl/developer-reference-media-intel-hardware/1-1/features-and-formats.html(Třeba minimálně u nových GPU >10. gen. je LA_ICQ u HEVC explicitně uvedeno v Encode Features)
Realita je, že to nefunguje ani v FFMPEGu, Handbrake ani v QSVEnc, což je speciální dekodér, enkodér, procesor pouze pro QSV, který má pokryté asi všechny možnosti, co nabízí tak knihovna a je poměrně často aktualizovaný.
Má tam i dumpy podporovaných vlastností z různých generací hardware, včetně novějších diskrétních grafik DG2 (A380), Linux a Windows.
https://github.com/rigaya/QSVEnc/tree/master/GPUFeaturesVšude je to LA_ICQ pro HEVC vykřížkované.
Ctěl bych shrnout otázkou:
...Kromě toho je hw kódování do HEVC 3x -6x pomalejší . Má to cenu , přecházet z AVC? Nebo mám starý HW? jde o 8bitové 420 kodování vstupu i výstupu. 4K do 4K/1080p
Složitá otázka, záleží na spoustě věcí.
Jestli potřebujete šetřit bitrate (velikost souborů), případně jaký máte průměrný cíl pro bitrate. Jak moc vám jde o nejširší kompatibilitu (což je třeba důvod, proč HEVC nemá téměř žádná streamovací služba - stejně by to museli kódovat dvakrát), rychlost kódování, co jste zmínil atp.
AVC rozhodně pořád funguje, klidně i pro vyšší rozlišení, jen prostě není tak efektivní. Nebudu úplně zabíhat do všech technických detailů, v čem je HEVC lepší, ale v typicky mi to vycházelo okolo 25-30% úspory (těch cílových 50%, co měli tvůrci mi přijde spíš optimistické). Bavíme se o dosažení stejné pozorovatelné kvality a použití soft. enkodérů x264/x265 v HD a UltraHD.
Je tam samozřejmě také víc metrik pro porovnání - od standardizovaných (PSNR, VMAF) až po klasickou okometrickou
(vezmu scénu v které je víc spatial/statických detailu, zároveň nějaký významnější pohyb a budu s bitratem iterovat dolů až na hranici nějakých viditelných artefaktů. Můžu si porovnat plynulost pohybů, texturu těch detailů, plynulost bar. přechodů, hrany - čemuž např. pomáhají in-loop filtry).
Ten cílový bitrate hraje roli v tom, že rozdíl mezi kodeky se snižuje s jeho velikostí. Pokud budete chtít dělat menší soubory, např. okolo 5Mbit v HD, tak tam bude vyšší rozdíl než např. u 14Mbit.
Pro posouzení by pak hrál roli samozřejmě také účel. Jestliže to mám na nějaké svoje věci, které si archivuji s relativně vysokou kvalitou a nevadí mi třeba vyšší bitrate (který bude ale pořád řádově menší než u I frame kodeků - DNxHR, ProRes, AVC Intra), když z toho budu chtít cokoliv jiného, prostě to překóduji.
Nebo jak píše třeba tazatel, jde víceméně o nějakou "normalizaci" už jednou komprimovaných videí z různých zdrojů do stejného kodeku, který je pak kompatibilní se všemi mými zařízeními.
Takže suma sumárum, pokud by tam nebyl s AVC žádný reálný problém, používal bych ho dál, nerušilo by mi to klidné spaní. Jen bych případně přitlačil na bitrate, pokud by mi šlo o kvalitu.
Klidně bych pro důležité kódování (např. mnou natočené věci) použil i 10bitů a softwarový AVC kodek, pokud to nepodporuje můj hardware. Bude to na kódování pořád rychlejší než HEVC a má to smysl, pokud se chcete vyhnout bandingu (skokům v barevných přechodech) i když je vstupní video 8bitů.