V Londýně probíhá dvoudenní Ubuntu Summit 25.10. Na programu je řada zajímavých přednášek. Zhlédnout je lze také na YouTube (23. 10. a 24. 10.).
Gemini CLI umožňuje používání AI Gemini přímo v terminálu. Vydána byla verze 0.10.0.
Konference OpenAlt 2025 proběhne již příští víkend 1. a 2. listopadu v Brně. Nabídne přibližně 80 přednášek a workshopů rozdělených do 7 tematických tracků. Program se může ještě mírně měnit až do samotné konference, a to s ohledem na opožděné úpravy abstraktů i případné podzimní virózy. Díky partnerům je vstup na konferenci zdarma. Registrace není nutná. Vyplnění formuláře však pomůže s lepším plánováním dalších ročníků konference.
Samsung představil headset Galaxy XR se 4K Micro-OLED displeji, procesorem Snapdragon XR2+ Gen 2, 16 GB RAM, 256 GB úložištěm, operačním systémem Android XR a Gemini AI.
Před konferencí Next.js Conf 2025 bylo oznámeno vydání nové verze 16 open source frameworku Next.js (Wikipedie) pro psaní webových aplikací v Reactu. Přehled novinek v příspěvku na blogu.
Sovereign Tech Fund oznámil finanční podporu následujících open source projektů: Scala, SDCC, Let's Encrypt, Servo, chatmail, Drupal, Fedify, openprinting, PHP, Apache Arrow, OpenSSL, R Project, Open Web Docs, conda, systemd a phpseclib.
Bylo vydáno OpenBSD 7.8. S předběžnou podporou Raspberry Pi 5. Opět bez písničky.
Valkey (Wikipedie) byl vydán v nové major verzi 9.0. Valkey je fork Redisu.
Byly publikovány informace o kritické zranitelnosti v knihovně pro Rust async-tar a jejích forcích tokio-tar, krata-tokio-tar a astral-tokio-tar. Jedná se o zranitelnost CVE-2025-62518 s CVSS 8.1. Nálezci je pojmenovali TARmageddon.
AlmaLinux přinese s verzí 10.1 podporu btrfs. XFS bude stále jako výchozí filesystém, ale instalátor nabídne i btrfs. Více informací naleznete v oficiálním oznámení.
Programming stuff. And stuff.
Experimentálně vyvinutá (prostě dává celkem rozumné výsledky ) metoda je:
Vem každý frame videa v daném časovém rozmezí, rozděl ho na bloky velikosti NxN (používal jsem většinou N=16), spočti power spectral density (PSD) nad blokem, zintegruj všechny PSD vektory takhle získané (v logaritmické škále, dB/Hz).
Na to, že jsem si tuhle metodu vymyslel takříkajíc "z brucha", funguje překvapivě dobře. Používal jsem ffmpeg a dvě verze mencoderu pro encodování; novší, 2009-07-31, je označen opt_mencoder, druhý je od něj o rok starší; bez označení "mencoder" jsou videa encodovány přes ffmpeg. Testována byla na Baader Meinhof Komplex traileru a pár dalších videích.
Grafy zobrazené níže mají v levém grafu integrované PSD vektory a vpravo jejich korelaci k prvnímu video souboru nebo framu. V pravém grafu je několik hodnot korelací - počítá se korelace od X-tého prvku vektoru k poslednímu, vzhledem k ose X. To značí, že čím vyšší hodnota X, graf ukazuje hodnotu korelace tím vyšších frekvencí. Např. při X=3 je zobrazena korelace original[3:] a encoded[3:] (v pythoní notaci), tj. od čtvrtého prvku ke konci vektoru (index vektoru jde od nuly).
Pro ilustraci několik framů (první je zmenšený originál; případne můžu vyhrabat kompletní commandlajny jak se které video encodovalo):
První oříšek byl výběr vhodné metody zmenšení originálního videa, protože encodované videa byly zmenšeny. Tady je zobrazeno porovnání PSD zmenšeného originálního framu a originálního framu (vyděleno poměrem počtu bloků originálu a počtu bloků zmenšeného framu):
Tady mně překvapil lanczos filtr (resizováno gimp-em), kde jsem čekal, že "ořez frekvencí" se bude týkat nejvyšších frekvencí (šum), ale vypadá spíš jako generický low-pass filter. Mencoderův lanczos filtr se choval podobně. Po několika pokusech to dopadlo tak, že lanczos a nearest-neighbor ne, mezi bilinear a bicubic ve výsledku moc rozdíl nebyl.
PSD je počítáno na luma kanále framů. Pro "podobnost" integrovaných PSD vektorů jsem použil korelaci, která vypadá použitelně. Posun PSD grafu na ose Y má na svědomí změna světlosti kodekem (tudíž i změna amplitud). V pravém grafu korelace pro X větší 6 nemá příliš smysl (protože se počítá korelace příliš málo prvků). Soubory označeny jenom "argvNM" jsou z ffmpegu, ostatní obsahující řetězec "mencoder" jsou z mencoderu.
Jsou vybrány typické případy (96%) s plus několik případu na zamyšlení.
Tady korelace správně ukazuje změnu ve vysokých frekvencích, u singlepass ffmpeg VBR i CBR jsou patrné artefakty. U mencoderu (argv7) je rozdíl ve vysokých frekvencích (blur) způsoben lanczos filtrem při změně velikosti (a taky kubickou interpolací při deinterlace). "Ručně" jsme vybrali argv2 jako nejlepší, jenže pouhým okem to téměř nejde rozlišit (v případě 2-pass encodingu), náhodně jsme se dívali a porovnávali specifické framy (třeba argv[2-4] vypadají při přehrávání neodlišitelně).
U mencoderu je tady vidět efekt vypnutí deinterlacu (argv7 vs argv8; možná by bylo lepší zkusit detelecine pullup filtr, v případě Baader/Meinhof to není potřeba, ale encodování musí univerzálně fungovat i pro interlacované videa).
Překvápko s bicubic resize u mencoderu. Subjektivně na několika framech je mencoder s bicubic rezising lepší než s bilinear resizing (argv12 vs argv13), viz zachycené framy výše. Možná korelace není úplně nejvhodnejší nástroj (chtělo by to něco jako "weighted correlation", aby třeba nejvyšším frekvencím šla nastavit nižsí váha).
Jediné překvapení tady je argv13 vs argv12: subjektivně jsou framy z bicubic-scaled argv13 lepší než argv12, nicméně korelace tvrdí něco jiného (nejspíš způsobeno odstraněním vysokofrekvenčního šumu v argv13, hodnoty 7-8 na ose X, viz levý graf), opět platí teze že by možná nebylo špatný se porozhlídnout po nečem specifictějším nežli korelace.
Kromě zmíněných speciálních případů s korelací to funguje dobře za předpokladu, že codec má specifickou chybu; volně definováno - vždy rozostří, nebo přidá hrany/šum, jinými slovy nenastane situace kdy by energie dané frekvence v jednom framu byly nízké a naopak v jiném framu vysoké, tudíž rozdíl integrace energií v těchhle framech by měla za výsledek nulu (nebo něco blízké nule).
Ze zkušenosti šum ve zdrojovém videu má taky "neočekávané" účinky - kodeky (nebo motion estimation atd.) mají tendenci vysokofrekvenční šum vyhladit, což subjektivně vede k lepšímu výsledku, ale na druhé straně korelace zobrazuje singlepass encodované videa "bližší" originálu, protože mají podobné vysokofrekvenční spektrum (i když hrany byly ve skutečnosti přidány).
Můžete vyzkoušet zdrojáky jestli chcete. Syntax:
video_psd_integrate.py -s NN -t MM [options] videofile1 [videofile2] ... [videofileN]
psd_integrate.py imagefile1 [imagefile2] ... [imagefileN]
U video_psd_integrate je parametr -s počáteční čas, -t jak dlouho od začátku počítat, -h nebo --help vyhodí kompletní help. Jako vedlejší účinek jsem taky zjistil, že vlákna v Pythonu jsou GIL-em brzděny úplně brutálně (sériové počítaní je rychlejší než paralelní i když máte volná jádra/procesory). Zdrojáky vyžadují numpy, matplotlib a ffmpeg.
Je možné stáhnout grafy v SVG (ideální pro zoomování).
Tiskni
Sdílej: