Brussels / 30 & 31 January 2016


Implementing a native Daala decoder in FFmpeg

Or how I learned to stop worrying and did it anyway

The world of multimedia is one which is slow and reluctant to adapt new technologies, regardless of how inefficient and inflexible older technologies are in comparison. Such has been the case with all common video, audio and container formats spread through the internet. Historically, the number one reason for this has been poor support by popular programs, like IE6 not supporting PNG files or the APNG vs MNG and in recent times GIF vs WEBM. There have however been exceptions to this, such as the lighting fast adaption of VP9 by Google, which was an achievement only possible after developing the format themselves and pushing support for it through the popular Chrome browser. Although some browsers were not as quick to follow this trend (as they had to include an additional library dependency) this demonstrated to the world of multimedia that it is indeed possible to quickly adapt new technologies as long as they're an order of magnitude better than the current solutions and, more importantly, support for such formats would have to be available through the browsers themselves as soon as major providers start publishing content and services using it. Since a large majority of current browsers like Chrome, Firefox and their derivatives already include libavcodec (a library from the FFmpeg project to provide decoding and encoding of various formats), support for new formats within the library itself even before having their specifications published could speed up adaption and reduce future work load. This talk will explain both the politics behind doing this work, and will give a more technical description of what the Daala codec currently is, as well as discuss the challenges of implementing it in FFmpeg's libavcodec, and finally discuss where it stands right now as the future heir to the throne of open video formats.


Rostislav Pehlivanov