Archive for the ‘Uncategorized’ Category

A Bit of New Hardware

Monday, September 28th, 2009

I’ve finally got SheevaPlug which will be my new server instead of Artigo 1000 which seems to have internal power management broken. Also it will help me in my plans of decreasing x86 share in my boxes. The only uses I find for x86 netbook now are reverse-engineering and running an occasional game, everything else I do on other boxes as well.

Looks like FedEx at least here is going downhill. While two weeks of delay (aka “custom clearance”) is pretty usual for me, from this year one has to go to their office to sign some papers and pay custom fee before they finish custom clearance and deliver package to your town. I had to go there second time to pick up the package (and before that packages were delivered straight to my place except for one case when it went back to USA). Not that 2.5km walk can harm.

Another thing worth mentioning is that my Gdium now has probably the fastest MPlayer — I’ve ported several lavc MMX-accelerated functions to it, so now H.264, RV3/4 and H.26[13]-based formats decode faster (the latter by couple of ten percents faster, others by 5-10%), not mentioning Monkey Audio which is now possible to listen to in realtime even files packed on insane level. Maybe in distant future they will hit SVN (if I clean them and Måns finds time for review).

In the memory of my ThinkPad

Wednesday, April 29th, 2009

I bought my brand newrefurbished IBM ThinkPad 390 six years ago. While its hardware may be laughable by the current standards – PII-266, 192MB RAM, 4GB HDD – it was my computer where I started developing for FFmpeg. GCC compiling libavcodec/motion_est.c was the reason for adding 128MB to original 64MB of RAM. IIRC, all of codecs development till 2006 GSoC (VC-1 decoder) was done on it.

When I moved to MacMini, it still served me – as a router (it’s hard to see COM port on modern hardware, so modem was connected to TP390, later it was ADSL modem and second PCMCIA network card), as an x86 platform (mostly for running IDA and binary codecs) and for Internet-related stuff (cvs and git server, mail fetching, small web server, downloader and such).

Here’s how it looked for the last years:

i390

Rest in peace.

Now I have Asus EEE 701 working instead of it. Since it’s more compact, I can also fit BeagleBoard on the table next to it.

RV40 is in

Tuesday, December 2nd, 2008

As you may know from other place, FFmpeg got RV40 decoder. There’s still some hope that FFmpeg will get RV30 decoder as well (it needs loop filter and squishing some bugs).

Some notes about performance:

  • PPC G4 1.42GHz — on par
  • Celeron 600MHz (inside ASUS Eee) — significantly slower (2 minutes of the same source decoded in 64 and 82 seconds by binary and native decoders respectively)

When I switch motion compensation functions from C implementations to optimised H.264 counterparts (they are slightly different so the picture quality gets worse) native decoder becomes faster than binary one by several percents on x86 and even faster on PPC. Conclusion: if you want fast decoding then submit SIMD versions of motion compensation functions.

A Round Date

Thursday, August 14th, 2008

Today is the day when my first contribution to FFmpeg went to CVS.

You know that story – a curious programmer once decided to look how one of video codecs works, found out that was deflated MS RLE data expanded for bitdepths > 8bpp, wrote a decoder for it, adapted for ffmpeg, sent that decoder to one person and guess what that person did? Added necessary ties and committed it to FFmpeg CVS.

Well, since then I contribute to FFmpeg a bit of different stuff time from time. Plans for this year include AAC encoder, finishing RV3/4 decoder, pushing LucasArts SMUSH decoder to SVN, making Mike finish Xan4 decoder and some random stuff I’m not aware of now.

Protected: Roads

Wednesday, March 26th, 2008

This content is password protected. To view it please enter your password below:

A new iron at work

Tuesday, March 25th, 2008

Tech support effect has worked – after I showed my new toy to familiar computer repairman it began to work. RAM installation is a black magic indeed.

So now I have a working x86-compatible box with 1GHz CPU and more RAM and harddrive space than on other boxes combined. I’ve already installed Ubuntu (just the first distro I reached, no actual preferences) and debug environment is almost ready, so I may continue RV[34] development soon.

Here is a photo of it with a piece of paper where its name is written. Try to guess it (and no, it is not related to anime).

My new box

A New Box

Saturday, March 22nd, 2008

I’ve finally got an x86 box. Thanks to immeasurable efforts of Henning Norén who sent it to me.

On this poor quality photo you can see it. This box contains Pico-ITX based computer with more memory than on my other boxes together.

My New Box

The only bad moment is that though I’ve assembled it (and I believe assembled it properly) I can’t make it start up. DC converter (a small board to the right) produces voltages all right, so it’s not a power failure. Hopefully I will resolve this issue in a week, install Linux and resume my work on codecs development.

Checkpoint

Sunday, January 6th, 2008

Let’s see what was done with my plans for 2007:

  • Make some lossless audio decoders – no luck (well, I’ve helped a bit to include Monkey’s Audio decoder to ffmpeg)
  • Implement missing VC-1 Simple/Main profile features – no luck (at least WMV3 Complex Profile is almost completely supported)
  • Implement VC-1 Advanced profile interlaced mode – no luck
  • Help with some other projects – DCA implementation and maybe even finish RE for Xan v4 – partially done
  • Write JPEG-2000 decoder – no luck, some people convinced me to write RV3/4 decoder instead and I’m still waiting for the specs 🙁

So it was extremely unlucky year in fulfillment of goals.

What have been done instead:

  • Musepack SV8 support
  • Helped with some projects (DCA decoder, Monkey’s Audio decoder, few game formats)
  • Some WMV3/VC-1 fixes
  • A bit of work on RV3/4 decoder

I hope this year will be better.

Multimedia-unrelated news

Friday, November 9th, 2007

I just had to post this – our Philharmonic presented own harpsichord. Several years ago when I first visited it I’ve listened to concert music with harpsichord but it was borrowed one and there was nothing comparable since that time.

The presentation went well and we were enjoying different music – from sonatas by Handel and Telemann, Johann Sebastian Bach concertos to Mozart to jazz improvisations and modern Ukrainian music (well, when composer plays on one of the instruments himself I consider it modern).

Looking forward for further listening (with hope that it would take less than a couple of years of waiting).

A Book on Multimedia

Thursday, November 8th, 2007

I presume those interested in multimedia coding have heard of “Data Compression: The Complete Reference” by David Salomon. Personally I consider this book very good but maybe we should write our own book concentrating on multimedia only. Why? I have not seen books where video (and audio) compression is not merely outlined (like in most books on general data compression) or is not solely dedicated to some standard
(MPEG usually).

I gladly remember this book as it’s quite outdated but at least it covers many codec, container and even implementation issues (unfortunately, sound only))!

My proposal for book outline:

  • General multimedia concept (pixels, samples, PCM, DCT)
  • Audio compression
    • Simple time-domain codecs (DPCM, ADPCM)
    • Complex time-domain codecs (lossless mostly)
    • Speech codecs
    • MDCT-based codecs and friends
    • How to write a fast decoder and good encoder (or otherwise)
  • Image Compression
  • Video compression
    • Lossless coding
    • Game video codecs (who will write this?)
    • Modern standard and non-standard codecs
    • Implementation tips and tricks
    • Known codecs (implementation-wise) overview
  • Containers
    • Why making codecs dependent on custom container is idiotic 🙂
    • File-based containers
    • Streaming containers

And I know where to get information ;-). Well, let’s see if this catches up.