Asi @
meda: ještě dlužím nějaké odpovědi na otázky, týkající se
video cache Kodi a zobrazení v
Player Debug Info, ale věřím, že mé odpovědi budou užitečné i pro ostatní. Proto také vezmu popis poněkud zeširoka, a možná v něm uvedu i některé již notoricky známé věci, což mi ale @
meda: jistě odpustí.
V Kodi Wiki
Player Process Info samozřejmě existuje popis toho, co zobrazení funkce
Player Debug Info obsahuje, tento popis je ale zastaralý a úplně 100% neodpovídá
aktuální release verzi Kodi 21. Nicméně doporučuji si to přečíst. Taky se rovnou přiznám, že ani já neodpovím na všechno a určitě ne vyčerpávajícím způsobem, ale pokusím se nějak sdělit to, co jsem (zatím) vypozoroval. Dnešní příspěvek tedy budu věnovat pouze
části Player Debug Info na části 3. řádku, začínající textem
forward:.
Část screenshot-u, kde 1. řádek (kombinace bílého a modrého textu) jsou vybrané informace, které do zobrazení full screen přidává můj skin, následující 4 řádky (pouze bílý text) jsou všas plně údaje
Player Debug Info:
Co tedy část za textem
forward: obsahuje. Jsou to celkem
4 údaje oddělené znakem
/ a já je pro další budu označovat jak
1. údaj,
2. údaj atd. Co je třeba říci hned na začátek je, že to, co tyto údaje obahují, je závislé na tom, v jakém režimu se přehrávání video souboru/streamu nachází. To je určeno dvěma skutečnostmi:
- jaký soubor/stream se přehrává,
- jak je v Kodi nastaven tzv. caching (viz Pozn.1), tedy nastavení video cache Kodi.
Pozn. 1 Video cache se v Kodi od verze 21 nastavuje prostřednictvím nastavení Kodi v
Nastavení > Služby > Caching. Kodi tedy už nepoužívá ani nečte parametry ze souboru
advancedsettings.xml.
Kombinace dvou výše uvedných skutečností je pak při přehrávání východiskem pro:
- Nepoužití cache - což je v případě, kdy nastane alespoň jeden z případů:
- použití cache je v nastavení vypnuto (Buffer mode má hodnotu No Buffer)
- přehrává se soubor/stream ze zdroje, který neopodvídá nastavenému Buffer mode
- přehrává se stream definovaný prostřednictvím adaptivního prokolu (např. HLS, MPGE-DASH)
- přehrává se tzv. PVR stream
- Použití cache - což je vždy, když nenastane žádný z případů uvedených v bodě 1.
Takže, jaký je význam 4 údajů v případě (ne)použití cache?
Při
nepoužití cache:
- údaj [MB/kB/B] - trvale se zobrazuje hodnota 0.00 B
- údaj [%] - aktuální zaplnění (viz Pozn. 2) bufferu (viz Pozn. 3) Kodi přehrávače v %
- údaj [sec] - vypočítaná doba (viz Pozn. 4) přehrávání nabufferovaných dat v sekundách
- údaj [%] - nabuferovaná data v %, vztažená ke známá celkové velikosti (Pozn. 5) přehrávaného obsahu (což je při výpočtu % nabuferovaných dat chápáno jako 100 %)
Pozn. 2 - Kodi se snaží udržovat velikost buferu na co nejvyšší hodnotě. Záleží na typu přehrávaného soubor/streamu, jak se mu to daří. Primární je samozřejmě udržování synchronizace přehrávání s relativním časem přehrávaného obsahu, což také určuje typické hodnoty zaplnění, které se ne vždy a trvale musí držet na hodnotě 100 %. To ale není chyba. Např. o PVR steramnů (např. Live TV) se může pohyboat i kolem 70 % nebo dokonce i 30 % a přesto je přehrávání plynulé. Záleží na typu protokolu, řetězci zpracování takových streamů, např. Tvheadend + streamlink/ffmpeg nebo InputStream Adaptive, atp.
Pozn. 3 - buffer přehrávače je v kódu Kodi definovaná struktura, v současné verzi Kodi o velikosti 20 MB. Změnit se dá pouze zásahem do zdrojového kódu a novým přeložením celé aplikace.
Pozn. 4 - tento údaj velmi přibližne udává, na jak dlouhou dobu nabufferovaná data postačí k plynulému přehávání v případě, že dojde k přerušení komunikace se zdrojem dat. Vzhledem k dynamice prezentace dat, případného vlivu algoritmů adaptivních porotkolů, je to údaj opravdu jen velmi přibližný. Ostatně jeho smysl a praktické využití tomu odpovídá. Je to jistě zajímavé číslo, ale praktický význam nemá, tedy já ho alespoň moc nevidím.
Pozn. 5 - ne vždy může Kodi v tomto případě získat informace o celkové velikosti přehrávaného obsahu. To se týká především PVR streamů, u kterých se % nabufferovaných dat proto vztahuje ke známé velikosti získané z jiných dostupných informací (pokud jsou k diposzici). U Live TV např. z EPG. Význam tohoto údaje je tedy trochu podobný tomu předchozímu.
A při
použití cache:
- údaj [MB/kB/B] - aktuální hodnota zaplnění dopředného bufferu cache v MB/kB/B (viz Pozn. 6)
- údaj [%] - aktuální zaplnění dopředného bufferu cache v % (viz Pozn. 6)
- údaj [sec] - vypočítaná doba (viz Pozn. 7) přehrávání nabufferovaných dat v sekundách
- údaj [%] - nabuferovaná data v %, vztažený ke známé celkové velikosti (Pozn. 8) přehrávaného obsahu (což je při výpočtu % nabuferovaných dat chápáno jako 100 %)
Pozn. 6 - video cache a její
dopředný (forward) buffer je samostatné téma a byl mu věnován tento
příspěvek. Zde tedy jen upozornění, že hodnota v % je vztažená k aktuální alokaci cache pro dopředný buffer, která ale může být dynamická a zejména v počátku přehrávání nebo po velkém skoku vpřed a nebo vzad může alokace pro dopředný buffer překročit oněch 75 %, jak je popsáno v odkazovanám příspěvku.
Pozn. 7 - v případě tohoto údaje je v případě nepoužití cache napsáno, že velmi přibližne udává, na jak dlouhou dobu nabufferovaná data postačí k plynulému přehávání v případě, že dojde k přerušení komunikace se zdrojem dat. V případě použití cache je tato neurčitost údaje ještě zásadnější. Navíc výpočet této doby závisí na tom, jak je nastavena vlastní cache, její umístění i strategie jejího plnění. Platí tedy pro ni ještě více to, co jsem uvedl v závěru
Pozn. 4 výše.
Pozn. 8 - tady, oproti stavu při nepoužití cache, je situace celkem jasná. Velikost přehrávného obsahu je většinou známá, takže i tento údaj je většinou vždy relevantní v původním slova smyslu. Celkem jasně je to vidět a význam tohoto údaje, včetně vztahu ke 2. údaji to potvrzuje, v případě, kdy si zkusíte nejdříve nastavit cache do paměti, kdy je velikost cache limitovaná a pak na disk, kdy je neomezená (pokud tedy na disku místo pro celý přehrávaný obsah máte). Zatímco v prvním případě bude hodnota tohoto 4. údaje většinou menší jak 2. údaje, ve druhém případě budou hodnoty vždy shodné.
To je asi vše, co v danou chvíli k této probelmatice mohu dodat. Jasně, je zde hodně věcí, které by se daly ještě zkoumat, v řadě případů by předpoklady a odhady toho, jak to vlastně funguje, daly zlepšit či definitivně objasnit i analýzou kódu Kodi, ale já to, alespoň pro sebe a tuto chvílu, už považuji za zbytečné. Nic mi to nepřináší.
Je také možné, že se v hodnocení funkcí mohu mýlit, takže máte-li nějaká další zjištění nebo jiné názory, klidně je sem napište a můžeme se o tom tady pobavit.