2012-05-02

High Priority Libav Projects

After Reading Kostya's High Priority Libav Projects I thought I'd make my own list:

Tools:
  • avprobe compact output: I'd like to see compact tabular output for avprobe -show_packets that can easily and quickly glanced over by a human.
  • avprobe machine readable output: I'd like to see avprobe export data in a standard format well understood by other tools like json rather than the current pseudo-ini format.
  • avconv audio enhancements: avconv should skip resampling and remixing when decoding to null. 
Filters:
  • Audio filtering system: I'd like to see an audio filtering system that does remixing, resampling, nyquist commands, sound touch effects, auto gain control, arbitrary FIR and IIR filtering.
Testing:
  • probe-test: Each year dozens of changes are made to the probing functions fixing handfuls of files while breaking others. This happens particularly often in the four way war between AC3, MP3, MPEG-PS, and MPEG-TS. There should be a comprehensive probe test to make sure the these tweaks don't break other files. Every new tweak should be accompanied with a new file to the probe test that didn't work before the tweak and does work after. 
  • Regular automated fuzzing: ClusterFuzz, GCI, and a variety of other projects have found lots of crashers and hangs in libav that have been fixed. We should do large scale automated fuzzing, similar to fate on a regular basis to find when new code and changes are making the code more vulnerable. 
  • Better code coverage by fate: Our non-error path code coverage is really abysmal. 
Encoders:
  • AAC Encoder: Libav has a not so great AAC encoder and library wrappers to several not so great AAC encoder libraries. We need some way to provide high quality AAC encoding support to the user. At this point the situation is so bad I think that standardized wrappers to proprietary vendor encoders and to encoder SDKs would be a huge step forward. 
Decoders:
  • Improved VC-1 decoding: I've had the misfortune of seeing dozens and dozens of Windows Media Files that are identified as corrupt by expression encoder, show noticeable artifacting with Libav, but play perfectly in WMP. 
  • GoToMeeting: I'd love to see decoders for GoToMeeting 2, 3, and 4. G2M4 doesn't even play nice with the MPlayer DLL loader. 
  • Apple Intermediate Codec: While it is becoming less relevant year over year, AIC based QuickTime intermediate files continue to pop up regularly. 
  • MP3Pro: While many multimedia hackers claim to never have seen MP3Pro files in the wild, a reasonable number of 22050 Hz MP3s featuring wide band content are in fact MP3Pro. I'll admit a bit of my interest in MP3Pro is academic curiosity about the history of SBR. 
  • VoxWare Metasound: Once upon a time his codec did seem to have some popularity.
  • Theora cropping: Modern Theora streams seem to have the annoying habit of centering the picture when its size is not a multiple of 16 rather than placing the picture in the top left. It would be nice if we supported this cropping scheme. 
  • Opus: Opus is the most baller emerging audio codec of this era. I'm a little bit jealous of the GSoC student working on it. 
Demuxers:
  • Multistream PCM in MOV and MXF: Many professional MOV (and MXF) files use multiple mono PCM tracks for multichannel audio rather than a single multichannel track. It would be nice if we detected and supported these files as first class citizens. 
Muxers:
  • Low overhead MPEG-TS output for HLS streaming.
  • Better MP4 profile support in iods: The MP4 muxer should be able to tell what profile and level to put into the iods atom automatically when encoding AAC and H.264. 
Some things that I'm less excited about
  • VP4 and VP7: These codecs never seemed to hit critical mass. MPEG-2 and H.264 will be around forever regardless of what the freetard detractors say. No one seems to miss VP4 and 7 except for On2 enthusiasts and Skype packet snoopers.
  • More game codecs: Game codecs seem to be less robust than general purpose codecs: I'd rather not expand the attack surface to support a hand full of files used by single games. Popular game codecs like Smacker and Bink are fine as well as codecs used by popular modable games. Between Bink and Xiph codecs, we seem to cover prerendered assets for most current mainstream games.