Summer of Code 2008: Difference between revisions
(→CURRENT IDEAS: wording update for non-draft status) |
(pages without links suck) |
||
Line 1: | Line 1: | ||
== CURRENT IDEAS == | == CURRENT IDEAS == | ||
This is our ideas page for Google Summer of Code projects with Xiph.org. | This is our ideas page for [http://code.google.com/soc/ Google Summer of Code] projects with [http://xiph.org Xiph.org]. | ||
We need a primary and backup mentor volunteer for any project that is to become an official proposal, but submit something and we'll see who we can round up. :) | We need a primary and backup mentor volunteer for any project that is to become an official proposal, but submit something and we'll see who we can round up. :) | ||
Line 7: | Line 7: | ||
=== Optimize Theora encoding/decoding speed, SSE/SSE2 === | === Optimize Theora encoding/decoding speed, SSE/SSE2 === | ||
Work on MMX, SSE/SSE2 implementations of the crucial encoding and | Work on MMX, SSE/SSE2 implementations of the crucial encoding and | ||
decoding elements in libtheora. This could continue in theora-exp | decoding elements in [http://svn.xiph.org/trunk/libtheora/ libtheora]. This could continue in theora-exp | ||
where with ruik's work or consolidate theora-mmx, theora-oil work into | where with ruik's work or consolidate theora-mmx, theora-oil work into | ||
trunk. The results must still build cleanly on other archs and do | trunk. The results must still build cleanly on other archs and do | ||
Line 15: | Line 15: | ||
=== Theora reference encoder quality optimization === | === Theora reference encoder quality optimization === | ||
The libtheora encoder could make more use of some features present in the spec | The [http://theora.org/download.html libtheora] encoder could make more use of some features present in the spec | ||
but not currently implemented in the encoder. This is a little open ended, but | but not currently implemented in the encoder. This is a little open ended, but | ||
suggestions are: quant matrix tuning, per-block qi choice, 4:2:2 and 4:4:4 chroma | suggestions are: quant matrix tuning, per-block qi choice, 4:2:2 and 4:4:4 chroma | ||
Line 23: | Line 23: | ||
=== Encode support in theora-exp === | === Encode support in theora-exp === | ||
Implement a rate-distortion optimized encoding mode for theora-exp, | Implement a rate-distortion optimized encoding mode for [http://svn.xiph.org/experimental/derf/theora-exp/ theora-exp], | ||
including R-D optimzed mode decision and quantization (e.g., constant | including R-D optimzed mode decision and quantization (e.g., constant | ||
lambda). Then, use the above routines to implement a medium-latency ABR | lambda). Then, use the above routines to implement a medium-latency ABR | ||
Line 45: | Line 45: | ||
=== OggMNG implementation === | === OggMNG implementation === | ||
Implement the OggMNG decode support in gstreamer and/or illi's dshow filters. | Implement the OggMNG decode support in [http://gstreamer.freedesktop.org/dev/ gstreamer] and/or [http://www.illiminable.com/ogg/ illi's dshow filters]. | ||
Implement encoding support in based on byzanz or | Implement encoding support in based on [http://www.advogato.org/person/company/diary.html?start=18 byzanz] or [http://live.gnome.org/Istanbul Istanbul]. Bonus points for | ||
overlay support. Details on the OggMNG specifications [http://wiki.xiph.org/index.php/OggMNG here] | overlay support. Details on the OggMNG specifications [http://wiki.xiph.org/index.php/OggMNG here] | ||
Line 54: | Line 54: | ||
this project would also consolidate the various proposals for | this project would also consolidate the various proposals for | ||
subtitles. from what i saw on #annodex, | subtitles. from what i saw on #annodex, | ||
using CMML might be the way to go. Coordinate with Annodex.net. | using [http://annodex.net/TR/draft-pfeiffer-cmml-03.html CMML] might be the way to go. Coordinate with [http://annodex.net/ Annodex.net]. | ||
another option is to pick an existing format (e.g. srt) and get a | another option is to pick an existing format (e.g. srt) and get a | ||
Line 61: | Line 61: | ||
=== OggSkeleton tool support === | === OggSkeleton tool support === | ||
Implement OggSkeleton production in various xiph tool packages. Also | Implement [http://wiki.xiph.org/OggSkeleton OggSkeleton] production in various xiph tool packages. Also | ||
implement some playback support at least one popular playback framework: | implement some playback support at least one popular playback framework: | ||
illi's dshow filters, gstreamer/totem, VLC, Quicktime, etc. It may be | illi's dshow filters, gstreamer/totem, VLC, Quicktime, etc. It may be | ||
interesting to do this as a general library, e.g. on top liboggz. | interesting to do this as a general library, e.g. on top [http://annodex.net/software/liboggz/ liboggz]. | ||
''Mentor: Conrad Parker, backup: Silvia Pfeiffer'' | ''Mentor: Conrad Parker, backup: Silvia Pfeiffer'' | ||
=== RTP payloaders and depayloaders for Vorbis and Theora === | === RTP payloaders and depayloaders for Vorbis and Theora === | ||
Write a set of payloaders and depayloader plugins for Vorbis and Theora for GStreamer and Farsight. | Write a set of payloaders and depayloader plugins for Vorbis and Theora for [http://gstreamer.net/ GStreamer] and [http://farsight.sourceforge.net/ Farsight]. | ||
These plugins should implement the current specifications for Vorbis and Theora. Philipe Khalaf and Rob Taylor | These plugins should implement the current specifications for [http://xiph.org/vorbis/ Vorbis] and [http://xiph.org/theora/ Theora]. Philipe Khalaf and Rob Taylor | ||
of the Farsight project are prepared to mentor this project. | of the Farsight project are prepared to mentor this project. | ||
Line 76: | Line 76: | ||
=== Theora support in ekiga === | === Theora support in ekiga === | ||
Implement support for Theora as a video codec in the ekiga chat application. | Implement support for Theora as a video codec in the [http://www.gnomemeeting.org/ ekiga] chat application. | ||
Overlaps with GNOME. | Overlaps with [http://live.gnome.org/SummerOfCode2006/Ideas GNOME]. | ||
''Mentor: Ralph Giles'' | ''Mentor: Ralph Giles'' | ||
=== MXF support in gstreamer === | === MXF support in gstreamer === | ||
Implement an MXF mux/demux for gstreamer, with mappings for Vorbis and Theora | Implement an [http://www.digitalpreservation.gov/formats/fdd/fdd000013.shtml MXF] mux/demux for [http://gstreamer.freedesktop.org/dev/ gstreamer], with mappings for [http://xiph.org/vorbis/ Vorbis] and [http://xiph.org/theora Theora]. | ||
''Mentors: Christian Schaller, Mike Smith'' | ''Mentors: Christian Schaller, Mike Smith'' | ||
Line 90: | Line 89: | ||
Working on a hardware theora decoder, that can be used in embedded | Working on a hardware theora decoder, that can be used in embedded | ||
devices, dvd players and video pods. Presumedly GPL verilog source | devices, dvd players and video pods. Presumedly GPL verilog source | ||
to run on an FPGA. | to run on an FPGA. See http://sourceforge.net/projects/elphel/ for a rough encoder implementation. | ||
=== Intel to AT&T x86 assembly translation === | === Intel to AT&T x86 assembly translation === | ||
There is a general need for cross platform projects to be able to compile the same asm accelleration code on both GCC and MSVC. Unfortunately, at least of x86, they have incompatible assembly formats. Currently people either convert one to the other by hand (a maintenance nightmare) or require an external compile/assemble step on one or the other platform. | There is a general need for cross platform projects to be able to compile the same asm accelleration code on both GCC and MSVC. Unfortunately, at least of x86, they have incompatible assembly formats. Currently people either convert one to the other by hand (a maintenance nightmare) or require an external compile/assemble step on one or the other platform. | ||
Start with the (unmaintained?) intel2gas script. Spruce it up to support all of recent MMX, SSE, SSE2, SSE3 instructions. Then implement the reverse translation. Once both are working, write some glue code so it can be easily used as part of a GNU autotools build to derive one set of source from the other at build or package time. | Start with the (unmaintained?) [http://www.niksula.hut.fi/~mtiihone/intel2gas/ intel2gas] script. Spruce it up to support all of recent MMX, SSE, SSE2, SSE3 instructions. Then implement the reverse translation. Once both are working, write some glue code so it can be easily used as part of a GNU autotools build to derive one set of source from the other at build or package time. | ||
== GUIDELINES FOR APPLYING == | == GUIDELINES FOR APPLYING == |
Revision as of 13:49, 1 May 2006
CURRENT IDEAS
This is our ideas page for Google Summer of Code projects with Xiph.org.
We need a primary and backup mentor volunteer for any project that is to become an official proposal, but submit something and we'll see who we can round up. :)
Optimize Theora encoding/decoding speed, SSE/SSE2
Work on MMX, SSE/SSE2 implementations of the crucial encoding and decoding elements in libtheora. This could continue in theora-exp where with ruik's work or consolidate theora-mmx, theora-oil work into trunk. The results must still build cleanly on other archs and do run-time capability detection.
Mentor: Ralph Giles, backup: Jan Gerber, Mike Smith
Theora reference encoder quality optimization
The libtheora encoder could make more use of some features present in the spec but not currently implemented in the encoder. This is a little open ended, but suggestions are: quant matrix tuning, per-block qi choice, 4:2:2 and 4:4:4 chroma support.
Mentor: Ralph Giles, backup: Timothy Terriberry
Encode support in theora-exp
Implement a rate-distortion optimized encoding mode for theora-exp, including R-D optimzed mode decision and quantization (e.g., constant lambda). Then, use the above routines to implement a medium-latency ABR encoding mode (e.g., varying lambda), with a default target buffer size of approximately 2 seconds.
Mentor: Timothy "Derf" Terriberry, backup: Mike Smith, Ralph Giles
Development assistant for the "Ghost" audio codec
Designing a cutting edge perceptual codec is a very daunting task. Xiph is in the research stage on a new low-latency, general purpose audio codec, code-named "Ghost". This is basically a "code assistant" position, where you will be asked to implement, test, and give feedback on ideas from Christopher Montgomery, designer of the Ogg Vorbis format. Be prepared to learn a lot about audio coding, or apply what you already know. While there's less "ownership" potential in this project proposal, it will be a great opportunity to learn about compression algorithm design, practice your programming chops, and learn to work in team.
Mentor: Christopher "Monty" Montgomery, backup: Jean-Marc Valin
OggMNG implementation
Implement the OggMNG decode support in gstreamer and/or illi's dshow filters. Implement encoding support in based on byzanz or Istanbul. Bonus points for overlay support. Details on the OggMNG specifications here
Mentors: Mike Smith, Ralph Giles
Subtitle Editor
this project would also consolidate the various proposals for subtitles. from what i saw on #annodex, using CMML might be the way to go. Coordinate with Annodex.net.
another option is to pick an existing format (e.g. srt) and get a gui mockup done. It should: give you playback with scrubbing, let you set in and out points, and write out the results in an Ogg File.
OggSkeleton tool support
Implement OggSkeleton production in various xiph tool packages. Also implement some playback support at least one popular playback framework: illi's dshow filters, gstreamer/totem, VLC, Quicktime, etc. It may be interesting to do this as a general library, e.g. on top liboggz.
Mentor: Conrad Parker, backup: Silvia Pfeiffer
RTP payloaders and depayloaders for Vorbis and Theora
Write a set of payloaders and depayloader plugins for Vorbis and Theora for GStreamer and Farsight. These plugins should implement the current specifications for Vorbis and Theora. Philipe Khalaf and Rob Taylor of the Farsight project are prepared to mentor this project.
Mentors: Philipe Khalaf, Rob Taylor Backup: Christian Schaller
Theora support in ekiga
Implement support for Theora as a video codec in the ekiga chat application. Overlaps with GNOME.
Mentor: Ralph Giles
MXF support in gstreamer
Implement an MXF mux/demux for gstreamer, with mappings for Vorbis and Theora.
Mentors: Christian Schaller, Mike Smith
Hardware implementation of Theora decoding
Working on a hardware theora decoder, that can be used in embedded devices, dvd players and video pods. Presumedly GPL verilog source to run on an FPGA. See http://sourceforge.net/projects/elphel/ for a rough encoder implementation.
Intel to AT&T x86 assembly translation
There is a general need for cross platform projects to be able to compile the same asm accelleration code on both GCC and MSVC. Unfortunately, at least of x86, they have incompatible assembly formats. Currently people either convert one to the other by hand (a maintenance nightmare) or require an external compile/assemble step on one or the other platform.
Start with the (unmaintained?) intel2gas script. Spruce it up to support all of recent MMX, SSE, SSE2, SSE3 instructions. Then implement the reverse translation. Once both are working, write some glue code so it can be easily used as part of a GNU autotools build to derive one set of source from the other at build or package time.
GUIDELINES FOR APPLYING
Remember that many people will apply to work on the Summer of Code.
Keep in mind that those of us evaluating your application do not know you, we do not know what kind of experience you have, we do not know what you have done in the past and we have to pick the best people suited for a particular task.
Hence, it is very important that you tell us in your email why you should be considered to implement a particular project. Projects with one line applications will probably get discarded so don't make an application like this:
I would like to work on project XYZ
Do not cut-and-paste the text from this page in your application. We know full well what the text here is. Instead explain to us your take on the problem "I could implement this using this and that", "I would need to research these areas", "I might need help sorting this out", etc.
Explain to us why you are a good candidate, also explain which projects interest you (in case that there is more than one) and why.
During the summer of code, we will invest significant resources from existing team members to guide you, answer your questions, and help you architect the software in a way that is acceptable to Xiph.org and that has a high chance of having an impact on the larger community Xiph.org works with.
Note that if you are a student that want to apply for the Summer of Code, you should go through the standard Google process.
If you have questions about these projects you can for instance come to the #theora channel on irc.freenode.com
(thanks to the Mono project for these general guidelines)