Wednesday 26 August 2009

The sorry state of hardware video playback acceleration

I've been playing around with options for a HTPC for a while now. See my initial HTPC article for introduction about this. BTW: It's almost finished with another post following in a couple of months (I need to do some programming first).

Anyway, while buying hardware, I was looking for a discrete graphics card that would provide HW accelerated video playback since my old Athlon X2 3800 isn't quite up to the job when full HD H264 content is to be played.

Anyway, after looking around for a while, I decided to go for an ATI 4350 (30€), since Nvidia's entry level offerings were a tad too expensive for me (>50€). It was rather a matter of principle than price. Since both manufacturers advertize HW accelerated playback for years now, I was confident any offering would do the trick. Also initial searching for "HW accelerated H264" turned up some promising pages quickly "discouraging" me from digging deeper.

I could not be more wrong...

As it turns out, HW accelerated video playback isn't nearly capable of providing an average user with what they want. Be it ATI or Nvidia, both have their issues and problems, not to mention the very concepts HW based acceleration is currently implemented around. I should mention that Nvidia is currently in a bit of a lead due to their successful CUDA advertizing and support (CoreAVC released a CUDA accelerated codec). ATI on the other hand is betting on it's OpenCL horses, but currently don't even offer a driver.

I compiled a short list of problems I detected while trying to enable any kind of HW acceleration. Note that I have tried just about any codec that was mentioned on various net forums first. These problems are just the best case I found after trying them all and failing with each and every one of them.
1. DXVA
The famed microsoft framework for HW based video playback seems to be a one way street. There's no return information. Either the HW can or cannot play a codec. If it can, it will be accelerated, otherwise it will not. Some other codec will have to take charge.
What's worse is that the card won't just decode the video stream - the whole system works only if the decoded content is displayed immediately on the screen.

2. HW accelerated functions
Actually a very similar problem to the one listed above. This one was the most dissappointing to me because ATI avivo is supposed to provide some nice and quite powerful deinterlacing algorithms. Since this functionality works in only "all or nothing" mode, you can get deinterlacing only if the avivo can also decode the stream itself. Otherwise you're so out of luck. Same goes for any other filter avivo or purevideo may or may not provide.

3. Supported video codecs
This one is just great! After playing around for a while, you can only find out that number of supported codecs by any of the two chipmakers is frighteningly low. To make matters worse: if chipmaker says it's chip supports H264, that doesn't mean it will support everything encoded in H264. It turns out, lots of important codec features are not supported and the stream also has to be encoded just the right way for even the supported features to work. It turns out that my own camera clips, carefully transcoded into H264 (x264) of course can't be played back. I sure as hell am not transcoding them again. Anyway, even when I managed to find a video that the card was willing to play back, it was a DVD - which my Athlon can already deal with quite well. I don't need HW acceleration for low res MPEG2. I need it for H264, dammit - high resolution.

4. Additional filters
With DXVA you can just forget that. DXVA is a one way street. This means no additional filters. Yep, that also means subtitles. A disgrace.


Quite frankly I can't help but be disappointed. I had a nice old 6600GT laying around and I bought the ATI card to help decode the more demanding content (my full HD camera) which my poor old Athlon struggles with at 80-90% CPU usage. It turns out I just wasted my money.
Even my friends pathetic 300MHz ARM in his MediaTank plays back just about any content he throws at it easily, thanks to properly implemented HW accelerated codecs. I can't believe that after at least five years of bragging, ATI and Nvidia can't provide decent acceleration for this.

It seems both of them will be saved by OpenCL in the end, but even with that coming up I don't believe we'll see a good solution until FFMPEG project gurus implement it. At that time I'm betting my HD4350 will turn out to be a pretty weak card offering very little acceleration. Well, no matter - i just need 20 - 30% off my poor old CPU and I'm hoping the little bugger will at least be able to do that much.

Until then I'll just have to swallow an occasional dropped frame and no postprocessing for my full HD.

Sunday 9 August 2009

Siva pot, vodi me.... (drugi del)

Bitnje so ena prav lepa vasica. Par kilometrov med Kranjem in Škofjo Loko. Ravna cesta, en sam blag ovinek, cesta rahlo nagnjena v smer Škofje Loke. Ravno toliko, da na kolesu občutiš, da je v tisto smer malo lažje goniti.

Pred nekaj tedni se je tam zgodila prometna nesreča. Nekaj mladincev se je peljalo skozi Bitnje, verjetno iščoč naslednji bar, v katerem bi se lahko še malo zabavali. Ali pa so šli domov, ni pomembno. Pomembno je, da so ti mladinci vozili krepko čez 100 km/h pri omejitvi 60, pri tem pa so jim cesta + avto + hitrost + pozna ura izstavili račun v obliki precej trdega pristanka v neki hiši ob cesti.

En teden kasneje so izginili znaki za omejitev 60 km/h, zaradi česar je sedaj omejitev skozi Bitnje 50km/h.

Če se prav spomnim, so bile table za pričetek vasi Bitnje (zgornje, srednje in spodnje) pred dobrimi 15 leti, ko sem dobil izpit za vožnjo avtomobila, še tiste brez črt (omejitev 80km/h je to takrat pomenilo). Ko se je spremenil zakon, so bile najprej table za 70km/h, pozneje pa so (prav tako po eni nesreči zaradi prevelike hitrosti) zmanjšali na 60.

Lahko da se tudi motim, ampak ni poanta v tem.

Poanta je v tem, da na naših cestah vidiš neznansko število znakov za omejitev, neprekinjenih črt - seveda na ravninah - in podobnih zadev. In večina jih je bila postavljena kmalu po tem, ko se je nek norec / pijanec / pač običajen nesrečnik zvrnil s ceste zaradi kakršnega koli razloga.

Očitno naši velmožje, ki imajo te zadeve "čez", ne ločijo med pojmoma "nesreča" in "objestnost" (v kakršni koli obliki).
Nesreča se pač zgodi zaradi trenutka slabosti ali neprevidnosti. Lahko se tudi zgodi, če je določen odsek dejansko nevaren in se to odraža v večjem številu nesreč.
Objestnost pa povzroča nesreče zaradi prevelikih hitrosti, alkohola ali preprosto "afnanja" po cesti.
Medtem, ko je povečano število nesreč na določenem odseku tehten razlog za omejevanje hitrosti ter druge opozorilne znake, nobeden od ostalih vzrokov ni in ne more biti razlog za take ukrepe.

Že 60km/h je bila kar nizka omejitev za ravno in pregledno cesto skozi Bitnje. Voziti skoznje 50km/h je čisto mučenje in povsem nesmiselna omejitev. Me prav zanima, ali se tisti, ki je dal odstraniti znake, sedaj vozi 50km/h skozi to vas. Stavim pir, da se ne. Pijem seveda v Radovljici, da ne bo pomote. Lahko pa povem to, da od odstranitve znakov vedno povzročim kolono. Nihče se ne strinja s to odločitvijo in tudi dejansko je popolnoma nesmiselna in ne naredi povsem ničesar za varnost prometa.

Ko se naši velmožje že tako pritožujejo nad ceno prometnih znakov, jim priporočam, da se enkrat zapeljejo po cestah, ki jih sami upravljajo, in uredijo prometne znake, da bodo bolje odražali dejansko stanje in varnost posamezne ceste.

Tako bomo vsi bolj zadovoljni, pa tudi nesreč bo manj.
Samo moja 0.02€

Siva pot, vodi me....

400 km. 600 z vsemi dodatnimi potrebnimi povezavami. Morda kakšnega več, morda kakšnega manj.
Imamo torej Ljubljanski obroč, Karavanke - Brežice ter Lendava - Koper. Potem pa še Postojna - Jelšane, Brežice - Šentilj ter Žalec - Dravograd in Dravograd - Maribor. Aja, pa še Novo Gorico in Ajdovščino sem pozabil. Hudi kilometri.

Toliko avtocest bi morala Slovenija zgraditi. Morda še kakšno zraven, ampak to je več ali manj to.

In to ubogo revščino "gradimo" že 18 let. V prvih letih so nam razlagali, kako poceni kilometer da imamo, in to je bil seveda izgovor za počasno gradnjo. Sedaj je gradnja še vedno počasna, imamo pa verjetno najdražje kilometre v Evropi. Neprestano samo hvalisanje, kakšne tehnološko napredne tunele in viadukte da smo zgradili, potem pa se zapelješ par kilometrov po kateri koli sosednji državi in vidiš še bolj impresivne - pa se nič kaj toliko hvalisanja ne sliši od njih. Medtem pa so naši zaprti, ker se je voziščni beton izrabil, so bili napačno postavljeni jekleni distančniki, ali pa kar tako, ker je nekomu všeč zapreti avtocesto...

Naši južni sosedje v enem letu zgradijo več kilometrov avtocest, kot pa jih bi mi vsega skupaj sploh morali - ne pretiravam prav veliko. Samo cesta Zagreb - Lipovac ima čez 300 km, pa je prav lepo vzdrževana, da sploh ne govorim o povezavah, ki so jih naredili v letih po osamosvojitvi. Mislim, da bi pri vsem hvalisanju, kako dobro gospodarstvo, da imamo, mi zlahka naredili prav toliko, pa nam niti ni bilo potrebno.

Pri vsem skupaj pa imamo na naših avtocestah neprestano neke omejitve hitrosti zaradi nekih del, ki jih ni videti nikjer, zaradi del, ki še bodo ali pa kar tako, samo zato, ker si DARS oziroma njegovi pooblaščeni vzdrževalci to pač lahko privoščijo. Saj ni pomembno, da je zaradi teh nesmiselnih blokad in zapor na teh istih cestah veliko nesreč. Pač v takem primeru postavijo še malo nižjo omejitev, da je verjetnost nesreče in frustracija voznikov še malo večja.

Samo par banalnih primerov:
1. Oni most pri Naklem čez tržiško bistrico: Nekdo je ugotovil, da so tiste jeklene traverze za par milimetrov napačno postavljene in že smo imeli celo leto omejitve 60km / h tam čez. Prosim vas, prav lepo!!! Kdo hudiča bo pri dveh pasovih na avtocesti vozil tam 60??? Sem celo poskušal to delati, pa sem skoraj vsakič skoraj povzročil nesrečo.
2. Eden od tunelov na štajerski avtocesti: Celo pomlad je bil eden od pasov zaprt, s prav tako krasno omejitvijo že par kilometrov pred tunelom, mislim, da je bilo čez tunel celo 50, ali pa so nam milostno vseno naklonili 60? Ne vem več, vendar na onem zaprtem pasu ni bilo videti nobenega delavca nikdar. Dokler se nise en dan pojavili s cisterno in spirali sten tunela. Morda da so potem še celo barvali, ne vem več...
3. Cestninske postaje: Če prav vem, je bil sprejet celo odlok o njihovi odstranitvi, da ne bi bilo potrebno voziti 40km/h tam čez, pa so še kar tam. Policaji z laserskimi merilniki pa tudi...
4. Ali moram sploh omeniti one imbecilne omejitve 40km/h na vsakem izvozu z avtoceste? Če se kdor koli drži te omejitve 99% sledi nesreča, ker se mu sledeči zagotovo zaleti. Ali je res potrebno postavljati tako - še enkrat poudarjam - imbecilne omejitve? Ali ne more biti 80? Ali ne more biti sploh brez znaka, kot je to npr. v Avstriji? Ali smo vozniki res tako neumni, da nas je treba s temi znaki spraviti k pameti? Jaz bi sicer raje rekel, da nas z njimi spravljate ob pamet.
5. Prosim, da se enkrat kak gospod z DARSA pelje po kateri koli naši avtocesti in malo opazuje znake za omejitve hitrosti. Trdim, da bo na metre štel odseke, kjer je mogoče več kot 10 minut voziti s hitrostjo 130km / h. Neprestano nekaj - dela na cesti (ki jih ni), križišče, spolzko vozišče, karkoli, samo da lahko postavite tiste tako priljubljene znake z omejitvami hitrosti.
6. Najbolje pa je na tistih odsekih, kjer avtoceste še ni. Idealen primer: Peračica. Imamo torej bivšo hitro cesto (no, OK, nov pas avtocesete, ampak povsem enake širine). Ta pas je sicer dvosmeren, ampak brez možnosti prehitevanja (ad-hoc ograja, ipd.). Torej, zakaj mora ta pas imeti omejitev 80km/h, pogosto skozi tunel celo 60km/h, medtem ko je stara cesta za motorna vozila lahko imela 100km/h in dovoljenje za prehitevanje nedeljskih voznikov. V čem je tako zavarovan pas manj varen, kot pa prejšnja cesta? Isto vprašanje velja seveda tudi za vse odseke, kjer so tako imenovana "dela na cesti", dejansko pa zaprt pas 3 mesece in potem dva tedna del na cesti.
7. Za konec še en cukrček: Za pir dam prvemu, ki mi pove odsek naših avtocest, ki je bil izročen v uporabo (torej narejen) in potem NI bilo v enem mesecu že vzdrževalnih del na njem. Jaz takega odseka nisem videl. Da sploh ne omenjam, da naši gradbeniki očitno niso sposobni narediti več kot 10 km na enkrat... Aja, pozabil: saj jih ne naredijo, takoj nato so že vzdrževalna dela.

Meh, zdaj sem pa povsem znorel in napisal nekaj, česar prvotno sploh nisem imel namena. Sledi torej Siva pot (drugi del).

Ne vrag, le sosed bo mejak

Če je kaj potrebno priznati našim vrlim politikom, je to vsekakor, da znajo do onemoglosti zakomplicirati neznatne probleme.

Govorim seveda o 18 let trajajoči tragikomediji z južno mejo. No, če hočem biti res pošten, moram pri tem omeniti tudi hrvaške politike, ki, prav tako kot naši, v večnem strahu pred izgubo volilnih glasov - in s tem politične moči - prav tako nikakor ne morejo sprejeti nekega kompromisa.

Že davno je jasno, da je obema stranema škoda vsakega kvadratnega metra od tistih ubogih desetih kvadratnih kilometrov, če jih je sploh toliko vprašljivih... Pri tem pa se že 18 let obe strani obmetavata s takimi podlostmi, da se še parameciji obračajo v svojih grobovih ob njihovi imbecilnosti (se opravičujem za tujko, vendar nisem našel ustrezno močnega slovenskega izraza). Trpita pa oba naroda. Ljudje smo pač "ovce" in precej dovzetni za propagando. Še posebej če ta traja 18 let. Na eni strani neprestano poslušajo: "Našo zemljo nam hočejo ukrasti", na drugi pa "Spet so provocirali s tem ali onim incidentom" - na obeh straneh pa neprestano le medsebojna obrekovanja in zvračanje krivde.

Se opravičujem, gospodje politiki, na obeh straneh: s to svojo imbecilnostjo ste zaradi nekaj metrov levo ali desno dosegli le to, da se bodo običajni ljudje še kar nekaj let gledali postrani. Tragikomedija na vrhuncu. Ne eni ne drugi niste sposobni narediti nekega kompromisa, s katerim seveda nobena stran ne bo zadovoljna (ker bo vsaj nekje) izgubila tistih nekaj metrov, vendar bi končno vsaj rešil to vprašanje.

Sedaj že pokojna nekdanja predsednika obeh držav sta v izbranem trenutku premogla dovolj treznega razmišljanja, da sta prišla do nečesa kolikor toliko spodobnega za obe strani. Ta predlog je prav toliko sprejemljiv, kot bo kateri koli drug, za katero koli stran. Nobena stran se ne bo nikoli odrekla vsem vprašljivim metrom, tako da je upanje na tak "kompromis" odveč, vse ostalo pa so povsem nepomembni detajli.

Dogovorite se torej za nekaj - KARKOLI - in končno sprejmite mejo, postavite tiste bedne mejnike, ki čez 2 leti tako ali tako ne bodo več pomembni, in zaključite zgodbo. Preden naredite trajno škodo v odnosih med normalnimi ljudmi. Ali je to res tako težko?

In potem sprožite kampanjo na obeh nacionalnih televizijah, ki bo poskušala vsaj malo popraviti škodo, ki ste jo povzročili s svojimi neumnostmi v teh 18 letih. Nekaj v smislu rožic in skupnih piknikov - saj veste: nismo tako različni, da se ne bi mogli imeti radi. Sovraštvo in zamere res nimajo kaj iskati pri tradicionalno prijateljskih sosedih.