Re: Linux Codec API

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Chris Nuernberger wrote:
On Monday 13 May 2002 06:58 pm, you wrote:

I think we should have a directory under /usr/lib/ called codecs, and
then

Why do you care where it is ? We have LD_LIBRARY_PATH

I want the codecs to be self-registering;
I also want easy install and removal, thus I want them all in the same directory.

Yes, but make the directory run-time configurable...

The plan was to have them all register themselves by inserting data into a textfile in their current directory, wherever that may be. This data has:
vendorID
objectName
format[s]Input
format[s]Output

Preferably more than that. You would probably want input-output format pairs (as not all codecs support the same outputs for a given input). Secondly, you should probably also have a "cost" measure (I was thinking of using the average no. of CPU clocks relative to some reference codec). Finally, a "quality" measure, possibly a PSNR measurement - to give an indication of how good the codec is.

This makes it possible to have a number of codecs - a fast but poor quality codec for real-time applications, and a really good, slow codec for off-line compression.

To maintain all of this, I was thinking of having an core library that built and maintained the registry (possibly also benchmarked quality and cost). The core would also be responsible for hooking together codec chains for a given input, output, and cost measure...

A bit of extra effort, but well worth it.

The nicest codec interface I have used is that of rte (http://zapping.sf.net/). Flexible, configurable, and really easty to use. Also, the push/pull mechanism makes it possible to make relatively cheap buffers for decoding ahead, and, can also interface very nicely to v4l2's buffering system.

Then a program could, given an arbitrary stream and its format, see what other formats it could convert that initial stream to (or more complicated but still possible) find if, through a chain of three or four codecs, it could end up with the desired result (remember that a codec could also simply be image format conversion or scaling). Chris

As I said above, use a core library, that given an input, output, and cost requirement, builds the desired codec chain, rather than duplicating this functionality in each program.

As you may notice, I have thought long and hard about this - I have just never had the time to sit down and do it. I also haven't managed to think of effective ways to handle file sources and sinks (audio, video and time information).

If you want any help working on this, send me some mail, and I will help where needed.

-justin





[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux