Subtitles

May 6th, 2008

I consider subtitles to be more of evil. Why? Because they steal precious screen space, create a distraction and usually of a bad quality. Also external subtitles can create a lot of problems with synchronization, especially when movie is cut into parts. Our television channels have extremely small subtitles translating Russian speech into Ukrainian but nobody reads them anyway (and I don’t watch TV at all). Those subtitles can provide some amusement though because of very crooked translation (I’ve heard that “Vienna ball” was translated like “Vienna jumpings”, it’s hard to translate that word back).

I know, newer container formats like Matroska and OGM (both are not good) have support for subtitles and there are ‘advanced’ subtitle formats designed for them (like ASS) with a lot of features — font family/size/style selection, placing text in different parts of the screen, etc (backscratching is not there yet). Well, one day they will achieve what DVD subtitles already have – information overlay over moving picture.

Another issue with subtitles is the quality of translation. Well, usually translations are bad, especially low-budget when they don’t even have money for dub (fansubbing is a different thing). Personally I’ve found that neither Spanish, French nor Italian subtitles had helped me with understanding Wagner operas. And Chinese subtitles are hard to read (and impossible without the dictionary or Chinese man).
It’s better to learn language instead.

And now for something completely different – good examples of subtitles.
Read the rest of this entry »

A New Record

April 23rd, 2008

Well, this is not development-related in any way but worth mentioning anyway.
I was overoptimistic choosing UPS instead of diesel generator. There is no electricity at home and whole block for at least 22(twenty two) hours and not sure they will finish fixing power line today. Please don’t ask naive question “Don’t you have backup power lines?” – obviously we don’t.

Update. No power from about 9:00 April 22 to about 14:00 April 23. Not an experience I want to have again.

FFmpeg Hall of Shame

April 2nd, 2008

Following Mike’s example and with intention to spread the word, I welcome you to look at our Hall of Shame where you can find those, who use FFmpeg and probably other products but fail to comply to (L)GPL, giving no credit and/or sources.

So, if you want a bit of publicity follow their example. But don’t be surprised later.

Profiles and FFmpeg

March 26th, 2008

I think I ought to tell about the idea that fellow FFmpeg participant Robert Swain (I still wait for him to complete AMR-NB decoder) tries to champion. I mean encoding profiles.

The idea is quite simple – allow users use convenient presets instead of command line black magic, so simple commands like

ffmpeg -i input.vob -preset dvdrip -preset hq_mp3 output.avi
ffmpeg -i input.avi -preset flash_youtube output.flv
ffmpeg -i input.vob -preset ipod_vid output.mp4

can be used without bothering about bitrate/flags/gop size/whatever.

I also think this will be useful. It will be easier to change options meaning without making additional complications (we still get questions from users that do not know recent ffmpeg expects bitrate to be specified in bits, not in kilobits as before). Just don’t make frontend for it named ffclippy, okay?

Protected: Roads

March 26th, 2008

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

A new iron at work

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

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.

RV30/40 – status

March 4th, 2008

Just for curious people who really want to know what’s happening in rv30/40 decoder for libavcodec implementation.

I have implemented all main parts of decoder including loop filters, but some of the finer details are missing like parameters that should be passed to loop filters or motion vector prediction. This results into jerky picture in case of B-frames present (and they are often present) and dirty tails after moving objects. See for yourself.

Screenshot of decoder performance

Some example of my rv40 decoder work

Currently the work on this decoder is stalled. In order to fix bugs I have to verify decoded data against reference decoder and that’s not easy. It takes a whole night to get the needed debug data for 70 frames from 320×240 video on my ThinkPad 390. And it takes a lot of space too considering I have about a hundred megabytes of free disk space there.

I want to obtain a small (I don’t have enough space to fit standard desktop), low-power (less than 20-30 Wt power consumption, power blackouts are quite common here) x86-based computer. I know they exist in many variations, but it’s next to impossible to buy one here.

Well, I will finish both encoders. Eventually. Especially if I have enough content to test it with – most files I’ve met (including samples.mplayerhq.hu) are either Japanese TV recordings (anime often bears Chinese subtitles) or Simpsons with crappy translation into Russian (for example, “you rock” was translated as it if was “you are a rock”). Oh, there are also some movie trailers but I fear the need to watch them won’t motivate even Mike.

If you are curious why I chose that shot. I believe it features the character main MPlayer server is named after.

Checkpoint

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.

Some Thought on Future FFmpeg Audio API

November 22nd, 2007

After some discussions on IRC I’ve participated I’d like to present here for future discussion.

  1. Audio API should reflect video API as much as possible. Now decoder outputs 16-bit native-endian audio into raw buffer.
  2. Introduce audio formats. I’d like to be able to decode old 8-bit codec into bytes, newer 24-bit audio into 32-bit ints, floats for other codecs if they need it, etc.
  3. Planar format for multichannel codecs. It will simplify downmixing and channel reordering. (This is not my idea but it is worth mentioning)
  4. Swscaler-like structure for format handling and negotiations between audio filters.
  5. Block-based audio processing. Each audio should be operated as a multiple of blocks with fixed number of samples (like video is operated by frames and rarely by slices). Why not always by single block? Because some formats throw chunks with multiple blocks to decode (Monkey Audio, Musepack SV8) and some have too small blocks that cause too much overhead to process them by one at time (most speech codecs and (AD)PCM). This is just a bit stricter than current scheme.

Now, who wants to implement this?