VP3/Theora Encoder
Google Summer of Code 2008
Student : Sisir Koppaka
Mentor : Mike Melanson
Minimum Requirement: I and P frame support, simple motion estimation before September 1st.
This purpose of this page is to serve as a one-stop reference to all things related to this project, so that one can know the most recent status by visiting this page. Essentially, it is a filtered version of mails(private and mailing list) and interaction related to this project. This page would also be useful to anyone interested in participating in future editions of SoC in FFmpeg or even general, newbie multimedia hackers.
What this is all about
I plan to implement an encoder for VP3 first, and then for Theora during this summer. The stable reference implementation has been criticised of not producing high quality videos and this has in turn been attributed to the fact that most of the VP3 code base that was donated and which formed the basis for that effort was undocumented. An experimental encoder is also under development, in which Xiph.org hopes to better the quality.
Currently, the plan is to do a clean implementation for FFmpeg, i.e., not to use the Xiph.org codebase for developing this one. The hard focus of this implementation is quality.
Worklog
A log of all stuff I did.
- April 25 : Created this page.
Resources
This section contains links to online resources, research papers or any other stuff that would be useful to this project. Please feel free to add any other resources that you think would help me in this project.
- Theora documentation : http://theora.org/doc/ Appendix contains a nice delta of VP3 and Theora specs.
- VP3 format description(vp3-format.txt) by Mike is in libtheora.
- A critical review of the current Theora reference implementation: http://web.mit.edu/xiphmont/Public/theora/demo.html
- Theora decoder test suite: http://v2v.cc/~j/theora_testsuite/ Ideally, the encoder should be able to encode all of these types of videos.
Tools
These are some tools which might be required in this project. I'm acquainted with some of them, and still learning some. If you feel there is some tool that I need to know that would make my job easier, like for debugging or optimization(which I will do in the later part of this summer), then please add your suggestions here - I will look it up and learn it. If you know of better sources of information on these tools, then please do add such links below.
GDB
Debugging
- User Manual: http://sourceware.org/gdb/documentation/
Valgrind
Debugging
- Home page(See the Quick Start and the User Manual there): http://valgrind.org/
gprof
Profiling
Advice
Anything which does not fall under the above sections.
- For ASM optimizations, interframe motion estimation functions are already in place for general use, but there is the matter of porting the SIMD-optimized versions of the DCT (MMX/SSE2/AltiVec). But that is already written in the original project and can be safely cribbed within the constraints of this project. That type of optimization comes later on, after the basic encoder is already functional (or when you need to pick some low-hanging fruit to gain confidence before working on something really complex). - Mike Melanson
Contact
My contact information
- Primary email : sisir DOT koppaka AT gmail DOT com This is also my primary chat ID, in Google Talk and Jabber.
- Yahoo! - sisir UNDERSCORE ssa AT yahoo DOT com (Only for chat, no mails)
- Website: http://koppaka.net/