Byla vydána (𝕏) dubnová aktualizace aneb nová verze 1.100 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.100 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána v nové verzi 2025.5.
OpenSearch (Wikipedie) byl vydán ve verzi 3.0. Podrobnosti v poznámkách k vydání. Jedná se o fork projektů Elasticsearch a Kibana.
PyXL je koncept procesora, ktorý dokáže priamo spúštat Python kód bez nutnosti prekladu ci Micropythonu. Podľa testov autora je pri 100 MHz približne 30x rýchlejší pri riadeni GPIO nez Micropython na Pyboard taktovanej na 168 MHz.
Grafana (Wikipedie), tj. open source nástroj pro vizualizaci různých metrik a s ní související dotazování, upozorňování a lepší porozumění, byla vydána ve verzi 12.0. Přehled novinek v aktualizované dokumentaci.
Raspberry Pi OS, oficiální operační systém pro Raspberry Pi, byl vydán v nové verzi 2025-05-06. Přehled novinek v příspěvku na blogu Raspberry Pi a poznámkách k vydání. Pravděpodobně se jedná o poslední verzi postavenou na Debianu 12 Bookworm. Následující verze by již měla být postavena na Debianu 13 Trixie.
Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Crystal HD najdete především v podobě karet BCM970012 a BCM970015, přičemž ta první karta typicky vyjde o něco levněji, ale zato je zase trochu vybíravější. Na trhu je najdete v podobě Mini PCI Express karet (ostatní varianty se moc nevyskytují) a někteří z vás možná mají netbook, kde právě tento kousek je jedinou nadějí pro plynulé přehrávání videa.
Karty oficiálně podporují MPEG-2, MPEG-4 Part 2, H.264 a VC-1. Pokrývají tak kompletně standardy používané v digitálním televizním vysílání (MPEG-2 a H.264), Blu-Ray disky (VC-1) a „pirátské“ ripy (typicky MPEG-4 Part 2 a H.264). Maximální rozlišení videa je 1920×1088, přičemž je zde ještě omezení na bitrate, a to 40 Mbps. Princip je jednoduchý: do karty se posílá komprimovaný proud videa a zpět přichází proud dekomprimovaný.
To byl první problém, který jsem začal řešit. Nakonec jsem si kartu objednal přes eBay – to je trochu riziko, protože prodejci rádi označují své aukce identifikátorem jak lepšího modelu, tak horšího. Samozřejmě pak dostanete ten horší. Jako já. Obecně bych ale doporučil e-shop BuyDVB.net, kde se kromě samotných karet prodávají i různé DVB-S/T/C karty za dobrou cenu, s podporou nestandardních modulací (32APSK) a v neposlední řadě s výbornou podporou Linuxu – ta je sice v podobě ovladače udržovaného mimo jádro, ale samotný kód ovladače má podobu téměř jen wrapperu, který napojí příslušné ovladače čipsetů na samotný hardware.
Teď, když jsme si sehnali samotný HW dekodér, ještě zbývá vyřešit, jak to umístíme do svého počítače. Pokud máte notebook s vícero Mini PCI Express sloty, můžete mít štěstí – je tu šance, že po připojení začne dekodér fungovat. Bohužel velká část výrobců notebooků vybavuje BIOSy whitelistem povolených karet – ten ale jde u mnoha modelů zablokovat, případně nějak ošidit.
Pokud chcete Mini PCI Express kartu dostat do svého desktopu, nabízí se použít „redukci“ na velké PCI Express. Protože jsem šel po ceně, přeskočil jsem zaručeně fungující redukce, které se cenou blíží tisícikoruně. Místo nich jsem si koupil velmi lacinou kartu Routerboard 11E, jež je sice oficiálně pouze pro WiFi moduly, ale veřte, že funguje i s tímto HW dekodérem.
O podporu v Linuxu se postaral samotný Broadcom, který dodal prvotní open source ovladač. Ten převzala komunita a začala řešit různé nedostatky – aktuální práce je dostupná v Git repozitáři. Ovladač se skládá ze dvou částí: jaderného modulu crystalhd a knihovny libcrystalhd. Nejprve si tedy stáhneme obsah repozitáře:
git clone --depth 1 git://linuxtv.org/jarod/crystalhd.git
Pak přejdeme ke kompilaci modulu:
cd crystalhd/driver/linux autoconf ./configure make make install
Kompilace pravděpodobně selže na souboru crystalhd_flea_ddr.c – stačí na jeho začátek připsat tento řádek a už se to povede.
#include <linux/delay.h>
Teď zkompilujeme knihovnu:
cd ../../linux_lib/libcrystalhd make make install
Jaderný ovladač najdete i v novějších jádrech, skrývá se mezi staging ovladači. Našel jsem však řadu míst, kde se jeho užití nedoporučuje – a pravdou je, že se jaderný ovladač identifikoval starší verzí než ten z Gitu. Takto by mělo vypadat úspešné načtení modulu a nalezení karty:
[246711.027735] Loading crystalhd v3.10.0 [246711.027891] crystalhd 0000:04:00.0: Starting Device:0x1612 [246711.031185] crystalhd 0000:04:00.0: irq 48 for MSI/MSI-X [246711.031205] crystalhd 0000:04:00.0: irq 49 for MSI/MSI-X [246711.286151] crystalhd 0000:04:00.0: setting latency timer to 64
Teď ale ještě nejsme u konce. Crystal HD musí podporovat váš přehrávač. Nejsnazší cesta vede přes knihovnu ffmpeg, v jejíž Git verzi je podpora přítomna (libavcodec/crystalhd.c). Pokud configure v systému zpozoruje libcrystalhd, kompilace podpory pro tento hardware se aktivuje. V repozitáři forku libav jsem podporu Crystal HD neviděl.
Dalším místem je například přehrávač MPlayer, v jehož repozitáři je podpora pro Crystal HD ve FFmpeg začleněna.
Jakmile máme vše zkompilované a nainstalované, nic by už nemělo přehrávání bránit. V MPlayeru se dá užití HW akcelerace zapnout použitím dekodérů nazvaných ffh264crystalhd, ffmpeg2crystalhd a dalších, kompletní výpis ukáže tento příkaz:
$ mplayer -vc help 2>/dev/null | grep crystalhd ffmpeg2crystalhd ffmpeg working FFmpeg MPEG-2 (CrystalHD) [mpeg2_crystalhd] ffdivxcrystalhd ffmpeg problems FFmpeg DivX(MSMPEG-4 v3) (CrystalHD) [msmpeg4_crystalhd] ffwmv3crystalhd ffmpeg problems FFmpeg WMV3/WMV9 (CrystalHD) [wmv3_crystalhd] ffvc1crystalhd ffmpeg problems FFmpeg WVC1 (CrystalHD) [vc1_crystalhd] ffh264crystalhd ffmpeg working FFmpeg H.264 (CrystalHD) [h264_crystalhd] ffodivxcrystalhd ffmpeg working FFmpeg MPEG-4,DIVX-4/5 (CrystalHD) [mpeg4_crystalhd]
Otestoval jsem podporu MPEG-2, H.264 a MPEG-4 Part 2 („DivX“). První dva formáty fungovaly, MPEG-4 Part 2 ale bylo z neznámých důvodů odmítnuto. Inicializace karty je asi nejnáročnější částí celého procesu – může to výjimečně až 5 sekund a občas mi to u HD videí selhalo. dmesg
rychle napovědělo proč: obávané page allocation failure, a to přesto, že v systému bylo 3,5 GB volné paměti. Ovladač si totiž potřebuje alokovat větší bloky paměti jako DMA buffer. Problém naštěstí po chvíli zmizel a mohl jsem jít testovat.
$ mplayer -vc ffh264crystalhd 'The.Simpsons.S22E02.720p.HDTV.X264-DIMENSION.mkv' ... DtsCreateShMem:deleted shmem segment and creating a new one ... DtsDeviceOpen: Opening HW in mode 0 Clock set to 180 Enable single threaded mode Setting Color Mode to 1 ...
A přehrávání začalo. V konzoli se zpočátku přehrávání objevují nějaké ty chybové hlášky, zejména pak tyto dvě:
[h264_crystalhd @ 0x30a86f3100]CrystalHD: No frames ready. Returning [h264_crystalhd @ 0x30a86f3100]CrystalHD: Picture Number discontinuity
Což je podle komentářů v kódu hlavně důsledek toho, že se do hardwaru musí nejprve poslat určitý objem dat a až pak se začne vracet výsledek. Přes tyto trochu děsivé hlášky ale přehrávání fungovalo v pořádku. Subjektivně mi přišlo hardwarově dekomprimované video stejně kvalitní jako při softwarové dekompresi, nicméně autor libcrystalhd mě upozornil, že hardware dodává výstup v yuyv422, namísto yuv420.
MPlayer se dá nastavit tak, aby se dával přednost CrystalHD, a to umístěním podobného řádku do /etc/mplayer/mplayer.conf:
vc=ffh264crystalhd,ffmpeg2crystalhd,
V následující tabulce najdete přehled zátěže procesoru Athlon 64 4600+. Obrázek si uděláte sami z výsledků, test probíhal bez aktivního výstupu zvuku.
Způsob | Zátěž CPU |
---|---|
Software | ~70 % |
Crystal HD | 15 % |
VDPAU | 3 % |
Vítězství VDPAU se dá vysvětlit snadno tím, že při jeho použití jde komprimované video do grafické karty a tím operace končí. S Crystal HD jde nejprve do akcelerátoru, pak se musí načíst zpět dekomprimované a v této podobě se posílá do grafické karty.
Git verze VLC sice Crystal HD skrze FFmpeg podporuje, ale výsledek byl zoufalý. Zátěž procesoru byla kolem 45 % a obraz se hrozně cukal. Nebylo to koukatelné. Celkově mi akcelerované video nikde ve VLC nechodí – na notebooku když v něm použiji VDPAU, ale dělá to tak neefektivně, že je zátěž CPU jako bez VDPAU, ne-li vyšší. Ačkoliv nemám MPlayer moc v lásce, tak v tomto ohledu mi funguje mnohem lépe.
XBMC aktuálně nikde neprovozuji. Hledání na webu nicméně naznačuje, že XBMC má velmi dobrou podporu Crystal HD, dokonce je prý lepší než ta ve FFmpeg, což je mj. umožněno příznivější architekturou XBMC. MythTV se podle všeho podpoře těší také.
Důvod, proč jsem si kartu kupoval, byl ale docela odlišný. Výkon procesoru mám dostatečný, všude mohu použít VDPAU, ale na domácím serveru mám jiné potřeby. Tam nechci, aby mi běžel X server; i kdyby běžel, tak ffmpeg nedokáže využít VDPAU při rekompresi videa – půjde to jen při přehrávání. To neznamená, že by „read-back“ z karty byl nemožný, ale FFmpeg to prostě teď nepodporuje.
Na serveru potřebuji komprimovat v reálném čase televizní vysílání tak, aby se vešlo do uploadu mé VDSL2 linky, který činí 2 Mbit/s. Server bez problémů stíhá převádět SD stanice na rozlišení ~640×480 a komprimovat obraz pomocí x264. Pokud ale chci obdobnou věc udělat s HD stanicemi (u kterých nemám k dispozici SD variantu), procesor přestane stíhat, protože je příliš zatížen dekódováním.
Moje myšlenka byla tedy taková, že v Crystal HD provedu dekódování spolu se snížením rozlišení (to karta také umí) a zbytek už procesor bude stíhat. Zde je nutné podotknout, že Crystal HD nebude stíhat dekódování vyšší rychlostí než 1× – nejde tedy použít jako zázračně rychlý dekodér, dekódovat bude jen „přehrávací“ rychlostí. Bohužel se ukázalo, že tento způsob užití nebyl ve ffmpeg testován (a ani se nedivím).
Dostávám chyby jako [libx264 @ 0x8269a0] Input picture width (640) is greater than stride (0) a pokud jsem se pokusil ručně opravit stride na 720 (taková je stride jdoucí z hardwaru), vedlo to k pádu ffmpeg. Aktuálně jsem v kontaktu s autorem implementace, aby se nedostatek opravil. Uvedu tedy jen, že fungovat by to mělo přidáním těchto přepínačů:
ffmpeg -strict experimental -vcodec h264_crystalhd # Možná volba: -crystalhd_downscale_width 640
Na některých místech jsem četl, že Crystal HD je potenciální „VDPAU killer“, tedy že dokáže vytlačit dražší karty NVIDIA z různých doma vyrobených HTPC. Osobně bych při stavbě takového stroje dal přednost VDPAU, protože po zhodnocení zkušeností musím říci, že je to jistější volba. A ona je to podle výsledků zátěže procesoru volba dokonce i efektivnější.
Chcete-li se ale vyhnout NVIDII a máte v plánu provozovat třeba právě XBMC, nebude Crystal HD vyložená prohra – jen bych doporučil pořídit si dražší ze dvou zmiňovaných čipů. Podle komentářů v kódu má levnější čip více nedostatků, které se pak musí všemožně obcházet v ovladači.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
V době dnešních výkonů cpu a gpu je hw dekodér k ničemu.Ámen.
Bohužel velká část výrobců notebooků vybavuje BIOSy whitelistem povolených karet – ten ale jde u mnoha modelů zablokovat, případně nějak ošidit.Tohle je zásadní a největší problém Crystal HD. Doporučuji všem zájemcům vyzkoušet ve svém notebooku nějakou "cizí" kartu než si pořídíte Crystal HD. Problémy lze očekávat u Lenova, HP, Dellu a dost dalších značek. Konkrétně, co se týče novějších (2010+) modelů Lenova, nepomůže nic než patchnutý BIOS. Nějaké zalepování pinů, vypínání slotů, přehazování karet a podobně nemá žádný efekt (vlastní zkušenost).
Spíš než spešl dekodér bych zkoumal nějaký DSP, který bude umět třeba i kódovat.Quicksync u některých procesorů Intel. AMD chystá něco podobného (bude to v grafikách, a zřejmě také v příší generaci procesorů Fusion). Ovšem kvalitou jsou takové dekodéry jenom šidítka. Kdybych s tím zenkódoval nějakej fansub, tak internet vyleze ze zásuvky a nakope mi zadek.
Spíš si myslím, že celkový přínos HW dekoderu je nulový, né-li záporný.Trošku fyziky: Nejnáročnější část u frekvenčně-kompresních algoritmů je právě převod z frekvenční domény do časové. Všelijaké kvantování a strukturování a MC a podobně je většinou brnkačka, protože to jde provést způsoby ALU blízkými (bitové posuny, bitové operace, vybrání z polí, atd.), ne však iD(F/C)T. Ve své čisté podobě je to hodně sinů a hodně cosinů a už takový cosinus se implementuje v číslicových strojích dost blbě, ne jejich série (ve skutečnosti dnešní úrovni předcházela spousta matematického hackingu). DSP pokud již nemají přímo dedikované obvody pro takové akce se aspoň to snaží nějak řešit. Z toho důvodu, pokud to není úplný křáp, tak varianta DSP + spící CPU musí vždy vyjít lépe než cokoliv jiného (i z pohledu spotřeby). Pokud ne, je někde chyba, ale není to chyba fyzikální, ale implementační. Osobně tuto variantu Ďolasovi velmi schvaluji. Nedělat to tak je jako třeba pouštět si do digitálního monitoru signál skrze VGA – jde to, ale podobně jako pan Monk u toho mám vždycky takový divný tik v oku.
H.264 ale neužívá standardní (i)DCT, nedělá to ani mpeg2.Vím jen, že AVC to má rozšířeno o jinou eventuální transformaci, ale jinak to slyším prvně. Tak co teda?
Mpeg2 definoval určitý rozsah, do kterého se musí aproximace použitá dekodérem/enkodérem vejít a hotovo, udělejte si to jak chcete (libavcodec má těch algoritmů přes deset)Tak ± kvantizace koeficientů (fixed/float). Nic v tom smyslu, že by si mohl dekodér dovolit různě interpretovat koeficienty.
Tuším se to někdy dokonce označovalo jako "HCT".Nebude to Hadamard?
loopfilterNo jo, na ten jsem zapomněl. Ale jinak stejný problém.
2012-01-05 00:27:57 < Dark_Shikari> The H.264 Cosine Transform is often referred to as the "dct", but it isn't quite the same thing (it's much simpler, and require no multiplications).
2012-01-05 00:29:32 < Dark_Shikari> Basically it's a fast dct approximation that results in improperly scaled output -- which gets corrected later as part of quantization/dequantization.
Vývojář to doufejme ví dobře :)
Subjektivně mi přišlo hardwarově dekomprimované video stejně kvalitní jako při softwarové dekompresiKdyby ne, pak by se zařízení nemohlo pyšnit podporou formátů MPEG, ale nějakých jejich podmnožin. MPEG standard nepředepisuje kodér (kvůli možnosti vylepšování), ovšem dekodér dle tohoto standardu musí vždycky dávat přesně na bit stejný výsledek jinak nesplňuje požadavky MPEG standardu (malé deviace jako zaokrouhlování tolerovány).
Subjektivně mi přišlo hardwarově dekomprimované video stejně kvalitní jako při softwarové dekompresi, nicméně autor libcrystalhd mě upozornil, že hardware dodává výstup v yuyv422, namísto yuv420.YUV422 má větší chrominační rozlišení než YUV420, převod YUV420 -> YUV422 ničemu nevadí, protože by měl být bezeztrátový.
To neznamená, že by „read-back“ z karty byl nemožný, ale FFmpeg to prostě teď nepodporuje.Krom jiného by to bylo jako šťárat se levou nohou v pravém uchu.
Na serveru potřebuji komprimovat v reálném čase televizní vysílání tak, aby se vešlo do uploadu mé VDSL2 linky, který činí 2 Mbit/s.Z Ďolase se stal mediální magnát?
Zde je nutné podotknout, že Crystal HD nebude stíhat dekódování vyšší rychlostí než 1× – nejde tedy použít jako zázračně rychlý dekodér, dekódovat bude jen „přehrávací“ rychlostí.Řešením by bylo použít nějaké DSP od TI (přecijen mají delší tradici). Některé výkonnější by dost možná zvládlo i dekódovaní + kódování na místě (mají menší buffer, ale jinak stejně používají sdílený prostor s GPP). Nicméně uvádění do chodu Broadcomu oproti TI DSP je ještě procházka růžovým sadem (i se všemi zde zmíněnými problémy).
Z Ďolase se stal mediální magnát?Když jsem u rodičů, tak se nechci koukat na Novu
Krom jiného by to bylo jako šťárat se levou nohou v pravém uchu.Prostě se jen snažím využít to, co je, aniž bych musel dokupovat nový procesor, a tudíž i základní desku a paměti.
Když jsem u rodičů, tak se nechci koukat na NovuJsem si to myslel. A nepomůže ani kvalitní zesilovač k parabole?
rostě se jen snažím využít to, co je, aniž bych musel dokupovat nový procesor, a tudíž i základní desku a paměti.Nevím, ale není VDPAU prezentační vrstva? Co vím tak zrovna s přímím zapisováním na adresy grafického portu to nikdy nebyla moc sranda (muselo se čekat na cykly) nebude to stejně i s VDPAU? DSP se to podšoupne a výsledek přecijen někde po cestě vyklopí. Jinými slovy nechci říct, že by to nešlo, ale nebude to podobné jako se zmiňovaným dvojím převodem v případě VGA? (Tedy levá noha, pravé ucho)
Jsem si to myslel. A nepomůže ani kvalitní zesilovač k parabole?No, rodiče bydlí 200km daleko, to si spíš pořídím mobilní parabolu
Nevím, ale není VDPAU prezentační vrstva? Co vím tak zrovna s přímím zapisováním na adresy grafického portu to nikdy nebyla moc sranda (muselo se čekat na cykly) nebude to stejně i s VDPAU?Čuně VLC to tak ale teď dělá... pošle H264 do grafiky, přečte zpátky raw video a to zase zpátky zapíše do grafiky. Je to na pár facek, ale je to důkazem toho, že se VDPAU dá využít čistě k dekódování bez zobrazování.
Starší MPEGy definují odchylku do které se musíte vejít (jediná ne-exaktní část procesu je však DCT/iDCT). H.264 je celé exaktní - jakákoliv odchylka od referenčního dekodéru znamená vadnou implementaci (tedy kromě lahůdek jako že referenční dekodér prý nezvládá některé části high 4:4:4 predictive profilu protože je v něm neopravená chyba... holt to nikdo nepoužívá tak se na to kašle).Subjektivně mi přišlo hardwarově dekomprimované video stejně kvalitní jako při softwarové dekompresiKdyby ne, pak by se zařízení nemohlo pyšnit podporou formátů MPEG, ale nějakých jejich podmnožin. MPEG standard nepředepisuje kodér (kvůli možnosti vylepšování), ovšem dekodér dle tohoto standardu musí vždycky dávat přesně na bit stejný výsledek jinak nesplňuje požadavky MPEG standardu (malé deviace jako zaokrouhlování tolerovány).
Kompilace pravděpodobně selže na souboru crystalhd_flea_ddr.c – stačí na jeho začátek připsat tento řádek a už se to povede.Jo, na to je dobré alespoň uvést commit, na kterém jsi to testoval. Co když v gitu někdo ještě stihne něco pokazit :).