https://wiki.xiph.org/api.php?action=feedcontributions&user=Arek&feedformat=atomXiphWiki - User contributions [en]2024-03-28T14:34:18ZUser contributionsMediaWiki 1.40.1https://wiki.xiph.org/index.php?title=Summer_of_Code_2008&diff=8788Summer of Code 20082008-03-24T10:25:47Z<p>Arek: some more XiphQT ideas</p>
<hr />
<div>This is our ideas page for [http://code.google.com/soc/ Google Summer of Code] projects with [http://xiph.org Xiph.org] and [http://annodex.org/ Annodex]. The two projects participate jointly this year under Xiph's name.<br />
<br />
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.<br />
<br />
'''Mentors''' please visit [[Summer of Code Mentoring]] and help us prepare our application as a mentoring organization.<br />
<br />
== Current Ideas ==<br />
<br />
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. :)<br />
<br />
''Project ideas go here''<br />
* Transcode/Tag/Upload tool for Theora et al. (ideally as a firefox extension so web cms integration is easy) '''OggPusher''' details below:<br />
* Theora encoding support in GIMP<br />
* Theora Java port directly (semi)automatically derived from the reference sources<br />
* Optimisations for Oggenc and Co. as done by Lancer (http://homepage3.nifty.com/blacksword/) which gives around 3x more speed. If one fears quality lose, make it ./configure option. Lancers diffs only work for Windows.<br />
* Speex support in IceS<br />
* Better stream source gui for dvswitch<br />
* Multiplexing support (so one can play audio from video files) in ogg123<br />
:Isn't this already done with the vorbisfile support in 1.2.0?<br />
::At first, I thought it wasn't but that's because I tested with a 2.3 GB film and it didn't work. Smaller files work just fine, which makes me believe there's a bug somewhere that needs to be found. Anyway, we can remove this entry.--Ivo<br />
:::2.3 GB is just above what can be represented as bytes on a signed 32 bit int - clue to the bug ? --[[User:Ogg.k.ogg.k|Ogg.k.ogg.k]]<br />
* XSPF support in ogg123 and oggenc (playlist creation)<br />
* Initial support for OggPCM in some of our tools<br />
* OggMNG tools<br />
:Is this really necessary? I mean, OggMNG seems to have gone nowhere and serve no niche.--Ivo<br />
::We still keep getting asked for a format where speex and images together make up a movie.--Silvia<br />
* ROE implementation for network: using ROE in a client-server negotiation to dynamically request a specific multi-track ogg file using skeleton (Silvia)<br />
* create Ogg caption support for vlc using CMML<br />
* ffmpeg improvements for Xiph.Org codecs:<br />
** add Speex support<br />
** add Ogg Skeleton support<br />
** fix seeking bugs involving Ogg Theora<br />
** fix bugs in Ogg Theora decoder<br />
** improve ogg muxer<br />
* Ogg Cutter, a GUI to cut out segments from Ogg Videos, this could be based on oggz-chop (part of oggz-tools) or done with Gstreamer (starting with [http://webcvs.freedesktop.org/gstreamer/gst-python/examples/remuxer.py?content-type=text%2Fplain&view=co remuxer.py])<br />
* Improve [http://xiph.org/quicktime/ Xiph QuickTime Components]:<br />
** add Ogg Skeleton support (would make XiphQT able to properly play streams served with mod_annodex)<br />
** add FLAC and Speex encoding support<br />
** improve user interface of the Ogg exporter<br />
** add AudioFile components supporting Ogg and FLAC files (to make XiphQT available to applications using only CoreAudio without QuickTime)<br />
<br />
==Detailed Project Description==<br />
<br />
===Mv_Embed: Accessibility and [re]usability:===<br />
'''Mentor:''' Michael Dale, Anna (EngageMedia) <br/><br />
'''Existing Feature Set:''' [http://metavid.ucsc.edu/wiki/index.php/Mv_Embed Mv_Embed] is an existing javascript library that takes html5 <video> tag and rewrites the video tag for to support in-page ogg theora playback in contemporary browsers. MV_embed supports may browsers and plugins including: native browser support such as firefox 3 video builds, oggplay plugin for firefox2 in win, mac, linux ; VLC activX/plugin for win IE, firefox, and mac, linux firefox; mplayer & totem for linux; and java cortado for microsoft, sun, apple java VM for IE, firefox & safari. Mv_embed maps all these plugin javascript systems to a ~near~ html5 spec api enabling web application developers to take advantage of a uniform javascript API for video control and interaction without having to worry about the underling plugin systems. Mv_Embed is used as part of the metavidWiki Project (screen cast).<br />
<br />
'''Proposed Development:''' Mv_Embed will be enhanced around two goals integration into prominent open source Content Management Systems and better accessibility of close captions and associative video metadata.<br />
<br />
Mv_Embed will integrate into existing CMS video extensions for quick "one-off" ogg theora support.<br />
* FilmForge (Drupal)<br />
* ShowInABox (Wordpress)<br />
* Plumi (Plone)<br />
<br />
Additional server side components like transcoding to theora, generating thumbnails, and exporting metadata will also be developed. Where time / resources permit server side hooks into ffmepg2theora (for transcoding) and mplayer (for generating thumbnails) will be developed for the CMS systems as well. As OggPusher matures simple hooks will be added to the CMS's to support direct ogg theora clip uploads.<br />
<br />
'''Accessibility & CMML'''<br />
Accessible components of mv_embed consist of obtaining the metadata and putting it into the dom as a child of the video element. Mv_Embed will offer a reference javascript interface for client interactions with that metadata. The metadata will be structured in Continues Media Markup Language (CMML). CMML is a part of the annodex technology set and can either be muxed into the ogg stream or be requested separately via XML. Mv_Embed will negotiate a transport method for the metadata that will work for the given plugin type.(Currently only oggplay plugin supports ogg-skeleton and exposing muxed CMML tracks in the ogg stream).<br />
<br />
Mv_Embed is part of [http://metavid.ucsc.edu/wiki/index.php/MetaVidWiki MetavidWiki] enables community authored transcripts and exposes these multiple layers in CMML. Proposed work on Mv_Embed will generalize these development efforts taking place in the metavid project for other CMS's and improve the usability and accessibility of these metadata layers in javascript based interfaces and mutil-plugin playback environment.<br />
<br />
=== Theora Java port directly (semi)automatically derived from the reference sources ===<br />
<br />
The current Java decoder port (jheora) is rapidly heading towards becoming obsolete. It was based on the C reference implementation during alpha development stages, which means it cannot decode advanced Theora streams using non-VP3 features. Current Theora mainline features a completely new decoder, implementing all bitstream features, and a new encoder needing these advanced decoder capabilities is expected to arrive soon. jheora, however, appears to be unmaintainable for very same reasons the original alpha decoder was dropped. To make matters worse there's a very very noticable lack of someone being at least moderately skilled in Java AND being skilled in video coding AND writing Java code with acceptable speed (video decoding should be realtime). Any conventional manual Java source port may quickly bitrot to an unmaintainable state.<br />
<br />
Thankfully there *are* technologies to get C code to execute in the Java Virtual Machine. The obvious idea would be to translate the actual source code to Java using an automated process, but no reliable tools exist doing this (and given the concept-clash in some areas between C and Java it's unlikely something really nice will emerge). Projects like NestedVM (http://nestedvm.ibex.org/) and Cibyl (http://spel.bth.se/index.php/Cibyl) are doing '''language agnostic translations to Java bytecode''', using the GCC toolchain.<br />
<br />
In the first step the code to be ported is compiled to MIPS ELF binaries. Those are then converted to Java bytecode. This works pretty well because MIPS is pretty similar to Java bytecode and most instructions can be mapped directly.<br />
<br />
Crazyness? Work of mad men, living in nuclear families, fighting rampaging robots with nuclear missiles? Does this actually work? Yup, it does work, and some Xiph encoders/decoders have been successfully converted with NestedVM already (http://groups.google.com/group/nestedvm/browse_thread/thread/df96ef7337f390e4/a45fdd66534e7641?#a45fdd66534e7641) and figures provided by the Cibyl project indicate that the MIPS-to-Java approach isn't actually slower than a "real" Java port (http://spel.bth.se/index.php/Cibyl_performance) - it's sometimes faster, sometimes slower.<br />
<br />
The problem with NestedVM is that there appears to be no means to generate a Java interface from the converted binaries - which means that while the converted binaries work fine on Java there's no way to call the functionality of the converted code by other Java classes, which would be necessary to e.g. write a player applet.<br />
<br />
Cibyl, on the other hand, does provide means to generate Java interfaces, given the binary and the header files. Cibyl, however, needs to link some helper symbols into the MIPS binary, which apparently requires some tricks to work in the usual autoconf setup (http://groups.google.com/group/cibyl-devel/browse_thread/thread/584e5fc3b9bc7e2c). So for the Cibyl port to work some autoconf magic may be necessary.<br />
<br />
So what should this project do:<br />
<br />
* Create and document a working setup for doing language-agnostic Java conversions<br />
* Demonstrate this for Theora<br />
* Find a way to generate a Java interface in a way being automated as much as possible<br />
<br />
This project most likely is directly bound to progress made with either NestedVM or Cibyl. The upside of this is that any results may be directly applied to other projects, too<br />
<br />
--[[User:Maikmerten|Maikmerten]] 03:43, 12 March 2008 (PDT)<br />
<br />
<br />
===OggPusher===<br />
'''Mentor:''' Michael Dale ... or anyone else with more experience with firefox extensions/ffmpeg2theora ? <br><br />
'''Abstract:''' OggPusher is a proposed cross platform packaging of ffmpeg2theora as a browser extension. This exposes JavaScript hooks to web applications enabling easy client side transcodes from high quality source originals such as DV or MPEG2 and uploading into web based content management systems.<br><br />
'''Sample Application Flow:''' is as follows: A user visits a oggPusher enabled web service. The firefox user is prompted to install a browser extension via firefox's .xpi extension framework. Once enabled, the web service upload interface does a call to the oggPusher to expose a "open file" dialog box on the client. The websevice access the oggPusher api to set the requested transcode bitrate and other transcode options (such as interlace, number of audio channels, resolution etc). The client selects the high quality local file and begins transcoding to a temporary location on local disk. If there is an error in transcoding the upload is aborted and an error is exposed to web application. Once the file is done transcoding, the web interface has the client issue a POST of the transcoded file.(if the server supports more efficient PUT than that can be used). The amount of the file that has been transcoded and the amount uploaded are exposed via javascript hooks so that web application javascript interface can update the client on upload progress. If the the upload connection is reset a ajax request on the client can request "bytes upload so far" from the server and have oggPusher begin uploading from that point in the temporary local ogg file. A local file hash could be rechecked to insure the local file has not changed. The server can then do a simple join on the uploaded pieces, enabling reusable uploads over existing http protocol. If the server does not support resumes the file will be uploaded from the start.<br />
<br />
'''Features for initial Release:'''<br />
* A .xpi extension based on ffmpeg2theoa that supports uploading of local files of any type that ffmpeg accepts.<br />
* Supports two modes of operation<br />
** zero server side config where oggPusher just gives the option of uploading theora video where it finds a form file input type.<br />
** server side config where the server/service hooks into oggPusher for extra functionality, like resuming transferrer and status updates integrated with the web application.<br />
* A simple javascript api for controlling ffmpeg2theora encoding options. These options will be pre-demerited and javascript input will be scrubbed to avoid client side security risks.<br />
* A set of javascript hooks for oggPusher that expose upload progress, encoding progress and transcoding errors.<br />
* A sample server side implementation using php/html/javascript for grabbing ogg files from oggPusher.<br />
<br />
<br />
'''Future Feature RoadMap:'''<br />
Once the basic implementation has been deployed the following features will be targeted for future versions:<br />
<br />
* Integration with popular open source CMS's first target is mediaWiki.<br />
* Hooks for connecting into "live" interfaces such as firewire digital video input or USB web cams.<br />
** Extend oggfwd and server side components for in browser live streaming to web services.<br />
* Extend to support ffmpeg2Dirac and future open source media codecs.<br />
* Enable javascript hooks for grabbing highquality jpg or png screen grabs from the original source to be uploaded alongside the encoded video.<br />
* Enable Bittorrent uploads<br />
<br />
===XSPF support in oggenc and ogg123 applications===<br />
<br />
Mentor: Ivo Emanuel Gonçalves<br/><br />
Existing Feature Set: oggenc and ogg123 are part of a toolset named vorbis-tools, where oggenc is a Vorbis encoder and ogg123 an audio player. XSPF is a XML-based playlist format, extensible, but simple and efficient.<br />
<br />
Proposed Development: this project would extend those two applications (oggenc and ogg123) to support XSPF. Namely, oggenc would be able to generate a playlist from the encoded files, and ogg123 would be able to parse a playlist for supported media for playback. This is a C project, with the intention of using code from or actually linking to the BSD-licensed libSpiff, which is a C++ XSPF library.<br />
<br />
<br />
===php_annodex: wrapper to libannodex or liboggz for doing media stuff===<br />
<br />
'''Mentor:''' Silvia Pfeiffer ... or anyone else with an a php background e.g. Michael Dale<br/><br />
<br />
'''What is it?'''<br />
Direct interaction with Ogg video and audio files from within a Web scripting language is key to providing further support to existing and new Web media applications. php_annodex can e.g. be used to extend Drupal, MediaWiki and other php-based applications with function calls to control opening, closing, seeking, playing, pausing, telling position and similar interactions with audio/video. Further, since Annodex has CMML for time-aligned annotations, hyperlinks to other places, and textual descriptions (such as captions) can be accessed and used through php_annodex.<br />
<br />
'''What is the project?'''<br />
An initial version of [http://annodex.net/software/phpannodex/index.html php_annodex exists], but it is incomplete and not up-to-date. This is in comparison with such support in python through [http://annodex.net/taxonomy_menu/1/19 pyannodex]. A GSoC student would be expected to bring the support for Xiph and Annodex technology in php_annodex up-to-date. In addition, he/she could extend this work by also implementing media support in a plugin, e.g. the Drupal module [http://annodex.net/software/phpannodex/index.html Acidfree]. php_annodex is simply a php wrapper around the C-libraries libannodex and liboggz. It may suffice to just focus on liboggz.<br />
<br />
<br />
===ruby_annodex: wrapper to libannodex or liboggz for doing media stuff===<br />
<br />
'''Mentor:''' Silvia Pfeiffer<br/><br />
<br />
'''What is it?'''<br />
Direct interaction with Ogg video and audio files from within a Web scripting language is key to providing further support to existing and new Web media applications. ruby_annodex can e.g. be used to extend rails with function calls to control opening, closing, seeking, playing, pausing, telling position and similar interactions with audio/video. Further, since Annodex has CMML for time-aligned annotations, hyperlinks to other places, and textual descriptions (such as captions) can be accessed and used through ruby_annodex.<br />
<br />
'''What is the project?'''<br />
A python wrapper of similar type called [http://annodex.net/taxonomy_menu/1/19 pyannodex] exists. The ruby_annodex wrapper should provide similar functionality to ruby, in particular with a view of using it from within rails for the development of Web applications. Development of an example application in ruby on rails would be part of this. Extension of this project to include media support into a ruby-based CMS is possible.<br />
<br />
<br />
===Using ROE to create multi-track Ogg files===<br />
<br />
'''Mentor:''' Silvia Pfeiffer ... and anyone else interested in ROE, e.g. Ralph Giles, Conrad Parker, Michael Dale, Shane Stephens<br/><br />
<br />
'''What is it?'''<br />
[http://trac.annodex.net/wiki/MovieDescriptionLanguage ROE] is a small XML description language for multi-track media files. It can be used for authoring multi-track media files from separate physical files on disk. It can also be used on a Web server to dynamically create multi-track media resources where the tracks are selected through the request from the client.<br />
<br />
'''What is the project?'''<br />
In this project, we only implement and experiment with the file multiplexing side of things. The ROE specification is very new and potentially incomplete, so part of the project will be to validate this specification. The other part will be to create an authoring tool that can take a ROE file, parse it, pull in all the input audio, video, text etc files and create an Ogg file with a Skeleton that contains the equivalent of ROE inside the binary file. The project will start with a focus on multiplexing vorbis audio and theora video, but also include speex, FLAC, CMML, and possibly MNG data. If this is achieved in a short time frame, the project can continue onto developing support for these multi-track files in e.g. vlc or ffmpeg. This can even extend to providing a full tool-chain from authoring captions for a video file, to creating the respective multitrack Ogg file, and finally to playing them back inside vlc where the captions are shown as overlays.<br />
<br />
<br />
===SHARE application for the Spread Open Media project===<br />
<br />
Mentor: Ivo Emanuel Gonçalves<br/><br />
Existing Feature Set: Spread Open Media is a community project to promote the different free formats for multimedia and otherwise. SHARE is a pratical step to build on this community and spread more files.<br />
<br />
Proposed Development: SHARE is intended to be a PHP project. We do not discard the possibility of using Rails or Python, but the current SOM server does not support these. SHARE will be a WebJay-like clone, as in users will be able to register, vote, comment and upload their own XSPF playlists. Basically, it is a playlist sharing application. Using OpenID for registration and Cortado (an existing Java applet) for playback would be welcome additions.<br />
<br />
===Dirac support in liboggplay and liboggz===<br />
<br />
'''Mentor:''' ??<br />
<br />
Right now [http://wiki.xiph.org/index.php/OggPlay liboggplay] only support Theora video. <br />
Your aim for this project is to add support for [http://dirac.sourceforge.net/ Dirac],<br />
this should be done using [http://www.diracvideo.org/ libschrodinger].<br />
Doing this, you will add OggDirac support to the OggPlay Browser Plugin and the upcoming <video> tag support in Firefox.<br />
<br />
== Guidelines for Applying ==<br />
<br />
Remember that many people will apply to work on the Summer of Code.<br />
<br />
Keep in mind that those of us evaluating your application do not know you, we do not know what kind of <br />
experience you have, we do not know what you have done in the past and we have to pick the best people <br />
suited for a particular task.<br />
<br />
Hence, it is very important that you tell us in your email why you should be considered to implement a <br />
particular project. Please use the application template at [[Summer of Code Applications]] as a starting point.<br />
<br />
== See Also ==<br />
*[[CodingGuidelines]]<br />
*[[MIT approach to design and implementation]]<br />
*[[How to do a release]]<br />
*[[Summer of Code 2007]]<br />
*[[Summer of Code 2006]]</div>Arekhttps://wiki.xiph.org/index.php?title=Summer_of_Code_2008&diff=6496Summer of Code 20082007-03-22T23:38:49Z<p>Arek: /* Current Ideas */ student application deadline has been extended to 26th</p>
<hr />
<div>== Current Ideas ==<br />
<br />
This is our ideas page for [http://code.google.com/soc/ Google Summer of Code] projects with [http://xiph.org Xiph.org] and [http://annodex.net/ Annodex]. The two projects are participating jointly this year under Xiph's name.<br />
<br />
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. :)<br />
<br />
note: Google Summer of Code 2007, mentoring organizations to apply between March 5 and March 12, students March 14 - March 26<br />
<br />
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.<br />
<br />
'''Mentors''' for details of our mentor application and plan, please see [[Summer of Code 2007]].<br />
<br />
Students should also check out projects related to the [http://wiki.elphel.com/index.php?title=SoC Elphel Open Source cameras].<br />
<br />
=== Optimize Theora encoding/decoding speed, SSE/SSE2 ===<br />
Work on MMX, SSE/SSE2 implementations of the crucial encoding and<br />
decoding elements in [http://svn.xiph.org/trunk/theora/ libtheora] and/or [http://svn.xiph.org/trunk/theora-exp theora-exp].<br />
This could include porting the vp3 mmx and altivec code to the libtheora decoder, and writing sse improvements on the<br />
mmx work that has already been done. The results must still build cleanly on other archs and do <br />
run-time capability detection.<br />
<br />
You could start improving this [http://lists.xiph.org/pipermail/theora-dev/2005-August/002838.html MMX loop filter patch for theora-exp] that was never completed nor merged in current theora-exp (see all list thread).<br />
<br />
''Mentor: Ralph Giles, Timothy Terriberry, backup: Jan Gerber, Mike Smith''<br />
<br />
=== Encode support in theora-exp ===<br />
Implement a rate-distortion optimized encoding mode for [http://svn.xiph.org/trunk/theora-exp/ theora-exp],<br />
including R-D optimzed mode decision and quantization (e.g., constant<br />
lambda). Then, use the above routines to implement a medium-latency ABR<br />
encoding mode (e.g., varying lambda), with a default target buffer size<br />
of approximately 2 seconds.<br />
<br />
''Mentor: Timothy "Derf" Terriberry, backup: Mike Smith, Ralph Giles''<br />
<br />
=== Development assistant for the "Ghost" audio codec ===<br />
Designing a cutting edge perceptual codec is a very daunting task. Xiph<br />
is in the research stage on a new low-latency, general purpose audio codec,<br />
code-named "Ghost". This is basically a "code assistant" position, where you<br />
will be asked to implement, test, and give feedback on ideas from Christopher<br />
Montgomery, designer of the Ogg Vorbis format. Be prepared to learn a lot about<br />
audio coding, or apply what you already know. While there's less "ownership"<br />
potential in this project proposal, it will be a great opportunity to learn<br />
about compression algorithm design, practice your programming chops, and learn<br />
to work in team.<br />
<br />
''Mentor: Christopher "Monty" Montgomery, backup: Jean-Marc Valin''<br />
<br />
=== OggMNG implementation ===<br />
Implement the OggMNG decode support in [http://gstreamer.freedesktop.org/dev/ gstreamer] and/or [http://www.illiminable.com/ogg/ illi's dshow filters].<br />
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<br />
overlay support. Details on the OggMNG specifications [http://wiki.xiph.org/index.php/OggMNG here]<br />
<br />
''Mentors: Mike Smith, Ralph Giles''<br />
<br />
=== Theora reference encoder quality optimization ===<br />
The [http://theora.org/download.html libtheora] encoder could make more use of some features present in the spec<br />
but not currently implemented in the encoder. This is a little open ended, but<br />
suggestions are: quant matrix tuning, per-block qi choice, 4:2:2 and 4:4:4 chroma<br />
support.<br />
<br />
''Mentor: Ralph Giles, backup: Timothy Terriberry''<br />
<br />
=== Subtitle Definition ===<br />
There has been a long-standing need for the introduction of subtitles into Ogg. Several means have been suggested and various implementations exist. However, there has been no standard way that is supported by Xiph at this stage.<br />
<br />
The [http://annodex.net/TR/draft-pfeiffer-cmml-03.html CMML] format with its time-aligned means of interleaving text into Ogg bitstreams is a platform on which we would very much like to define a standard means of including subtitles.<br />
<br />
In this project, a standard means of interleaving subtitles (as found on DVDs or in srt files) into Ogg will be defined using CMML.<br />
<br />
The project requires to make changes to the CMML definition and extend it in several ways. CMML needs to have a valid XML schema or DTD definition associated with it, so that standard XML tools will parse it. The associated documentation should then be updated and software written to put e.g. a srt file into CMML inside Ogg. If there is enough time, it would also be good to implement support for this format in a media player such as vlc or mplayer or xine.<br />
<br />
''Mentor: Silvia Pfeiffer, backup: Conrad Parker''<br />
<br />
=== Theora support in ekiga ===<br />
Implement support for Theora as a video codec in the [http://www.gnomemeeting.org/ ekiga] chat application.<br />
Overlaps with [http://live.gnome.org/SummerOfCode2006/Ideas GNOME].<br />
<br />
''Mentor: Ralph Giles''<br />
<br />
=== MXF support in gstreamer ===<br />
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].<br />
<br />
''Mentors: Christian Schaller, Mike Smith''<br />
<br />
=== Cascading Style Sheet support for CMML in GStreamer ===<br />
<br />
Implement support for [http://www.w3.org/Style/CSS/ Cascading Style Sheets] to add styling and positioning hints to<br />
[http://annodex.net/TR/draft-pfeiffer-cmml-03.html CMML] text overlays on [http://xiph.org/theora Theora] video. Doing so allows for advanced titling features visually similar to TV-style news headlines, sports scores, and scrolling text. The advantage over conventional "burnt-in" titling is that the stylesheet-driven approach is machine-readable, allowing indexing for search and improved accessibility.<br />
<br />
The project involves:<br />
# YUV compositing support in the [http://gstreamer.freedesktop.org/data/doc/gstreamer/0.10.1/gst-plugins-base-plugins/html/gst-plugins-base-plugins-textoverlay.html textoverlay] plugin in [http://gstreamer.freedesktop.org/dev/ gstreamer] in order to complete the low-level support for color and font attributes. Textoverlay already includes partial support for [http://developer.gnome.org/doc/API/2.0/pango/PangoMarkupFormat.html pango text], but lacks the necessary colorspace conversions. This portion of the project necessarily involves C programming.<br />
# Implementation of a test application to playback video marked up with CSS titling hints. It is recommended that this portion of the project be implemented in a higher-level language for which GStreamer support and CSS parsing libraries exist, such as Python, Ruby or Haskell.<br />
<br />
Further work could include support for style sheets in liboggplay / Firefox, or direct support for style sheet retrieval and rendering in GStreamer (via the [http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-cmmldec.html cmmldec] plugin and/or a new style-sheet-aware textoverlay plugin).<br />
<br />
''Mentor: Conrad Parker, backup: Mike Smith, Silvia Pfeiffer''<br />
<br />
=== Hardware implementation of Theora decoding ===<br />
Working on a hardware theora decoder, that can be used in embedded<br />
devices, dvd players and video pods. Presumedly GPL verilog source<br />
to run on an FPGA. See http://sourceforge.net/projects/elphel/ for a rough encoder implementation. This was a successful project in 2006.<br />
<br />
=== Intel to AT&T x86 assembly translation ===<br />
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.<br />
<br />
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.<br />
<br />
=== Speex and FLAC encoders in Xiph QuickTime Components ===<br />
Implement Speex and FLAC [http://developer.apple.com/documentation/MusicAudio/Reference/CoreAudio/index.html Core Audio] encoders.<br />
<br />
[http://xiph.org/quicktime/ XiphQT] has a Vorbis encoder component that could be used as a reference and starting point.<br />
<br />
''Mentor: Arek Korbik''<br />
<br />
=== New vocoder for Speex ===<br />
This is a real speech coding project! Speex currently has a very low bit-rate (2.15 kbps) mode that is implemented as a trivial vocoder. This mode has four "reserved" bits per frame, which means it would be possible to transmit more information. The idea of this project would be to make use of these bits to improve the quality of the 2.15 kbps mode. Changes to both the encoder and the decoder are allowed, provided that they are compatible with older version. This means that the new bit-stream should be decodable by the old decoder with only minor loss in quality. This still leaves plenty of room for improvement. Upon successful completion, there will be a new vocoder that can be merged into the main Speex tree with improved quality and (non-exact) backward compatibility with the previous vocoder. The project requires some signal processing knowledge.<br />
<br />
''Mentor: Jean-Marc Valin''<br />
<br />
=== New Speex VAD/VBR code ===<br />
The current Speex VAD/VBR code is a quick hack, put together a long time ago. This project consists of rewriting it to perform much better under all kinds of conditions. Performance criteria are: classification accuracy, quality in VAD/DTX mode, simplicity, and of course speed. This project involves pattern classification and speech processing, so it requires at least some knowledge in these fields (or at least one of them).<br />
<br />
''Mentor: Jean-Marc Valin''<br />
<br />
<br />
=== rehuff: a tool to losslessly compress Vorbis files ===<br />
Would be nice to have an updated version of "rehuff", a tool to losslessly compress Vorbis files. There were an experimental version of it (see [http://lists.xiph.org/pipermail/vorbis-dev/2006-August/018522.html rehuff status]), but had some limits:<br />
* it's not free software;<br />
* it has a bug causing the rehuffed file can't correctly seek;<br />
* it works only with stereo files.<br />
<br />
Would be nice to have an updated rehuff, without the previous limits, and with a library part that will be included in libvorbisenc, so all encoders could use it (rehuff binary, oggenc, ...).<br />
''Not an official Xiph.org project, only a user proposed idea.''<br />
<br />
=== Ogg and Annodex integration into open source web Content Management Systems ===<br />
The goal of this project is to make the use of ogg theora video in existing CMSs as easy as possible. <br />
The project would consist of integrating in browser playback and structured cmml metadata into existing CMSs like mediaWiki, drupal or wordpress. <br />
<br />
In browser playback support will be handled by vlc or java cortado plugin and then liboggplay & native browser decoding as that project matures. [http://metavid.ucsc.edu/wiki/index.php/Mv_embed mv_embed] may be a starting point for client plugin detection. <br />
The extension package should also handle thumbnail generation via mplayer or ffmpeg, and ideally support transcodeing via shell calls to ffmpeg2theora. Meta data attributes for the video in the CMS could be exportable as CMML. (a standardized xml format for tagging continues video)<br />
<br />
''Mentor: Michael Dale'', ''backup: Silvia Pfeiffer''<br />
<br />
=== OggPlay: Time Offset Acceleration ===<br />
<br />
OggPlay is a new library that enables developers to drop ogg media support into applications. OggPlay will be used to implement native Ogg/Annodex support in Firefox, and supports a range of features including playing Oggs provided in TCP streams.<br />
<br />
This project involves adding time offset optimisation support to OggPlay in TCP mode. Upon successful completion, applications will be able to notify the library of "interesting" time regions of the file, either at the current time point or in the past or future. The library in turn will ensure that these regions are pinned in local memory or on disk using a combination of compressed stream and uncompressed frames. If the application later attempts to seek to a pinned time region, then access to the stream at that point will be much faster than other regions.<br />
<br />
Time offset acceleration will be useful to projects such as Annodex, which allows annotation of time regions ('clips') in Ogg, as well as direct access to individual clips over the WWW, URL-based naming of clips, and linking between clips.<br />
<br />
''Mentor: Shane Stephens'', ''backups: Marcin Lubonski, Michael Martin''<br />
<br />
== Guidelines for Applying ==<br />
<br />
Remember that many people will apply to work on the Summer of Code.<br />
<br />
Keep in mind that those of us evaluating your application do not know you, we do not know what kind of <br />
experience you have, we do not know what you have done in the past and we have to pick the best people <br />
suited for a particular task.<br />
<br />
Hence, it is very important that you tell us in your email why you should be considered to implement a <br />
particular project. Please use the application template at [[Summer of Code Applications]] as a starting point.<br />
<br />
== See Also ==<br />
*[[CodingGuidelines]]<br />
*[[MIT approach to design and implementation]]</div>Arekhttps://wiki.xiph.org/index.php?title=Summer_of_Code_2007&diff=6429Summer of Code 20072007-03-09T11:34:10Z<p>Arek: /* Who will your mentors be? Please include Google Account Information. */</p>
<hr />
<div>== Application ==<br />
<br />
Google Summer of Code has a formal application process for mentoring applications this year. The window is March 5-12. This section is for development of our joint application with [http://annodex.net/ Annodex].<br />
<br />
Here are the questions the [http://code.google.com/support/bin/answer.py?answer=60303&topic=10727&ctx=sibling GSoC faq] says we must address:<br />
<br />
==== Describe your organization ====<br />
<br />
[http://xiph.org Xiph.org] is an open source project and non-profit corporation dedicated to providing open and free-to-implement multimedia technology as a foundation for an interoperable, level playing field on the internet and other digital distribution networks. Over the past 8 years we have hosted development for all the major patent-free audio and video codec development, including the Vorbis, Speex, FLAC and Theora, the Ogg streaming format, and the icecast streaming media server.<br />
<br />
This year we are also coordinating projects for the [http://annodex.org Annodex association] under our umbrella. The [http://annodex.net/ Annodex project] <br />
is developing a set of open specifications and open source software to allow the creation of hyperlinked Webs of audio and video integrated with the text-based view of the current Web. Toward this goal, Annodex has done a great deal of work developing tools, browswer plugins and convenience libraries to facilitate adoption of Xiph.org's lower-level technology. As such the two projects have largely aligned goals, but focus on different levels in the stack.<br />
<br />
=== Why is your organization applying to participate in GSoC 2007? What do you hope to gain by participating? ===<br />
<br />
==== Did your organization participate in GSoC 2005 or 2006? If so, please summarize your involvement and the successes and failures of your student projects. ====<br />
<br />
Xiph.org was invited to participate in GSoc 2006, and informally mentored annodex-related projects as well.<br />
<br />
We were granted funding for 6 slots. One we weren't able to fill because our chosen students picked (or were assigned to) other projects. <br />
<br />
'''Two were [http://code.google.com/soc/xiph/about.html successful]''': One, a [http://code.google.com/soc/xiph/appinfo.html?csaid=5F9265EEC6FA0611 hardware implementation of a theora decoder]. This project produced HDL implementation of the major decoder components, to be used with a general purpose CPU, such as the open source LEON sparc implementation. Real time playback of SD content was achieved using the proprietary Nagios cpu design. Two, [http://code.google.com/soc/xiph/appinfo.html?csaid=213E2D30F095565D implentation of OggSkeleton support] in various tools. We have maintained contact with the two successful students since the program finished, but neither has contributed significant code outside the GSoC term.<br />
<br />
The remaining three were unsuccessful through lack of necessary skills, health complications, insufficient motivation, or some combination of all of these.<br />
<br />
We enjoyed our participation last year. It energized our project and improved our connections to the rest of the open source community. We learned some lessons about mentoring and especially about applicant screening and would appreciate a chance to apply them in a second round.<br />
<br />
==== If your organization has not previously participated in GSoC, have you applied in the past? If so, for what year(s)? ====<br />
<br />
We did not apply outside of our invitation in 2006.<br />
<br />
==== Who will your organization administrator be? Please include Google Account information. ====<br />
<br />
Ralph Giles: google account giles@xiph.org<br />
<br />
==== What license does your project use? ====<br />
<br />
In general, we use a modified-BSD style license for our libraries, to enable the widest possible uses of our formats and reference implementations.<br />
<br />
Our applications are generally GPL but LGPL or (GPL-compatible) modified BSD is also acceptable.<br />
<br />
==== What is the URL for your ideas page? ====<br />
<br />
This wiki page contains our current suggestions: (updates needed for 2007):<br />
<br />
http://wiki.xiph.org/index.php/Summer_of_Code<br />
<br />
==== What is the main development mailing list for your organization? ====<br />
<br />
We don't have a single central mailing list for all of Xiph.Org. Instead, we have per-project mailing lists; of these the most active is vorbis-dev@xiph.org. A complete listing of our lists is available at:<br />
<br />
http://lists.xiph.org/mailman/listinfo/<br />
<br />
==== What is the main IRC channel for your organization? ====<br />
<br />
We use freenode (irc.freenode.net), with a number of channels. #xiph is the main organisation-wide one, but we also have project channels: #vorbis, #theora, #icecast and #annodex are the major ones.<br />
<br />
==== Does your organization have an application template you would like to see students use? If so, please provide it now. ====<br />
<br />
http://wiki.xiph.org/index.php/Summer_of_Code_Applications<br />
<br />
==== Who will be your backup organization administrator? Please include Google Account information. ====<br />
<br />
Michael Smith: google account mlrsmith@gmail.com<br />
<br />
==== Who will your mentors be? Please include Google Account Information. ====<br />
<br />
'''Mike Smith''': google account mlrsmith@gmail.com<br />
<br />
Mike Smith has been involved with Xiph.Org and multimedia development since 2000 and remains one of our most involved core members. He helped write major portions of the vorbis-tools suite and the icecast streaming media server. He currently works as a developer at Fluendo.com on the GStreamer multimedia framework, flumotion (a streaming media server), and other multimedia software. <br />
<br />
'''Ralph Giles''': google account giles@xiph.org<br />
<br />
Ralph Giles has been involved with Xiph.org and multimedia development since 2000. He has contributed to tool development and the theora video codec. He handles much of the coordination and adminstrative work for Xiph.org. He mentored the successful "Hardware implementation of Theora decoding" project in GSoC 2006 and acted as an administrator.<br />
<br />
'''Silvia Pfeiffer''': google account silviapfeiffer1@gmail.com<br />
<br />
Silvia Pfeiffer is the founder of the Annodex project and chair of the Annodex Association. She is the principle author of most of the annodex specifications, RFC 3533 and RFC 3534 describing the Ogg media format, and is heavily involved as an organizer in both the Xiph and Annodex projects. <br />
Most recently she organized the [http://www.annodex.org/events/foms2007/ FOMS] developer summit and media recording for [http://lca2007.linux.org.au/ LCA 2007]. She helped mentor the successful "OggSkeleton support" project in GSoC 2006 and acted as an administrator during the application process.<br />
<br />
'''Christopher Montgomery''': google account xiphmont@gmail.com<br />
<br />
Christopher "Monty" Montgomery is the founder of Xiph.org, architect and lead developer of the Ogg Vorbis general purpose audio compression format. He has been doing open source development under the Xiph name since 1999. His current work focusses on development of a next-generation audio codec. He helped mentor a project related to this in GSoC 2006.<br />
<br />
'''Timothy Terriberry''': google account tterribe@vt.edu<br />
<br />
Timothy Terriberry is the author of the Theora video codec specification and the author of the theora-exp implementation. He has been an active contributor since 2003. He mentored a theora-related project in GSoC 2006.<br />
<br />
'''Jan Gerber''': google account jan.gerber@gmail.com<br />
<br />
Jan is the author of the very widely used [http://v2v.cc/~j/ffmpeg2theora/ ffmpeg2theora] transcoding tool, and maintainer of the [http://v2v.cc v2v.cc] syndication website. He has been a project contributor since 2002.<br />
<br />
'''Conrad Parker''': google account conrad@metadecks.org<br />
<br />
Conrad Parker is the author of the [http://www.annodex.net/software/liboggz/html/ liboggz] and [http://www.annodex.net/software/libfishsound/html/ libfishsound] convenience libraries and the [http://www.metadecks.org/software/sweep/ sweep] audio editor. He is heavily involved in the Annodex project and mentored the successful "OggSkeleton support" project in GSoC 2006.<br />
<br />
'''Jean-Marc Valin''': google account jmvalin@gmail.com<br />
<br />
Jean-Marc Valin is the architect and lead developer of the Speex voice codec. He has been involved in Xiph.Org since 2002. He mentored an audio codec research project in GSoC 2006.<br />
<br />
'''Arek Korbik''': google account arkadini@gmail.com<br />
<br />
Arek Korbik is the author of the [http://xiph.org/quicktime/ Xiph QuickTime Components]. He has been a project contributor since 2005.<br />
<br />
==== What criteria did you use to select these individuals as mentors? Please be as specific as possible. ====<br />
<br />
We selected our mentors from the 'core' developers and contributors within Xiph. Mentors were selected based on how well they know the code area they're volunteering to mentor, how long they've been part of Xiph, how well they interact with others (particularly in terms of building community around our projects).<br />
<br />
The majority of the mentors we've selected are core developers on the various Xiph.Org sub-projects that they've volunteered to mentor for. They have been contributing to Xiph.Org for at least several years, and have shown a persistent interest both in the software we develop, and in helping to create a community around it. We have also made sure that each mentor has sufficient time available to adequately mentor their student(s).<br />
<br />
==== What is your plan for dealing with disappearing students? ====<br />
<br />
Though the details of dealing with students on a day-to-day basis will fall to the individual mentors, we will set some requirements for reporting progress. We expect mentors to be in contact with their students at least several times a week, and ideally daily (during the working week). Back-up mentors will also stay in contact.<br />
<br />
We will require students to send a brief summary of their progress to the relevant sub-project mailing list once a week. This is not intended as an onerous requirement: just a sign that progress is being made. Should a student fail to do this, without having negotiated an exemption from their mentor beforehand, we'll send them a (polite) warning, and ask the mentor to take a closer look at what the student is getting done. <br />
<br />
Should the student then continue to be absent, we'll be forced to take additional action - up to and including requesting that google withhold payment from them. We hope for none of this to be needed, but our experiences last year indicated that in at least some cases it may well be.<br />
<br />
Xiph.Org also holds monthly IRC meetings where we try to get status updates on our various sub-projects, progress, etc. We'll ask that each student attend (unless their timezone makes this prohibitively difficult, in which case we'll ask them for a pre-prepared progress report to give at the meeting).<br />
<br />
==== What is your plan for dealing with disappearing mentors? ====<br />
<br />
Our project-suggestions page has at least two mentors for every project. Should we decide to select a project not listed on that page, we would not do so without finding both a willing mentor and an available backup.<br />
<br />
In most cases, the mentors are core developers who have been an active part of Xiph.Org for a number of years, so we think that disappearing mentors are relatively unlikely, but this provides the neccesary backup should a mentor be unable to continue for unforseen reasons.<br />
<br />
==== What steps will you take to encourage students to interact with your project's community before, during and after the program? ====<br />
<br />
Xiph.Org conducts much of its development discussion and community-building on our IRC channels. We'll ask that the students be present there while they're working, where adequate network access makes that possible. We hope to make them feel that they're an important part of our community; that their contributions are really making a difference towards the goals of Xiph. <br />
<br />
We intend to be open to their contributions - whilst we're aware that initially their work may not be of a quality sufficient to go into our core codebase immediately, we'll give them write access to our repository to work on a branch. We'll ask them to be open in discussing and designing their contributions on irc and our mailing lists. Our application template welcomes them to come and ask us questions when they're trying to write up their application. We hope that some, or even all, of the students will continue to be part of the Xiph community after SoC concludes. For those students who have not previously contributed to open source software, we'll teach them about how important community building is for the ongoing health of such projects.<br />
<br />
=== What will you do to ensure that your accepted students stick with the project after GSoC concludes? ===</div>Arekhttps://wiki.xiph.org/index.php?title=Summer_of_Code_2008&diff=6428Summer of Code 20082007-03-09T10:12:34Z<p>Arek: Updated XiphQT ideas</p>
<hr />
<div>== CURRENT IDEAS ==<br />
<br />
This is our ideas page for [http://code.google.com/soc/ Google Summer of Code] projects with [http://xiph.org Xiph.org] and [http://annodex.net/ Annodex]. The two projects are participating jointly this year under Xiph's name.<br />
<br />
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. :)<br />
<br />
note: Google Summer of Code 2007, mentoring organizations to apply between March 5 and March 12, students March 14 - March 24<br />
<br />
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.<br />
<br />
'''Mentors''' for details of our mentor application and plan, please see [[Summer of Code 2007]].<br />
<br />
Students should also check out projects related to the [http://wiki.elphel.com/index.php?title=SoC Elphel Open Source cameras].<br />
<br />
=== Optimize Theora encoding/decoding speed, SSE/SSE2 ===<br />
Work on MMX, SSE/SSE2 implementations of the crucial encoding and<br />
decoding elements in [http://svn.xiph.org/trunk/theora/ libtheora] and/or [http://svn.xiph.org/trunk/theora-exp theora-exp].<br />
This could include porting the vp3 mmx and altivec code to the libtheora decoder, and writing sse improvements on the<br />
mmx work that has already been done. The results must still build cleanly on other archs and do <br />
run-time capability detection.<br />
<br />
You could start improving this [http://lists.xiph.org/pipermail/theora-dev/2005-August/002838.html MMX loop filter patch for theora-exp] that was never completed nor merged in current theora-exp (see all list thread).<br />
<br />
''Mentor: Ralph Giles, Timothy Terriberry, backup: Jan Gerber, Mike Smith''<br />
<br />
=== Encode support in theora-exp ===<br />
Implement a rate-distortion optimized encoding mode for [http://svn.xiph.org/trunk/theora-exp/ theora-exp],<br />
including R-D optimzed mode decision and quantization (e.g., constant<br />
lambda). Then, use the above routines to implement a medium-latency ABR<br />
encoding mode (e.g., varying lambda), with a default target buffer size<br />
of approximately 2 seconds.<br />
<br />
''Mentor: Timothy "Derf" Terriberry, backup: Mike Smith, Ralph Giles''<br />
<br />
=== Development assistant for the "Ghost" audio codec ===<br />
Designing a cutting edge perceptual codec is a very daunting task. Xiph<br />
is in the research stage on a new low-latency, general purpose audio codec,<br />
code-named "Ghost". This is basically a "code assistant" position, where you<br />
will be asked to implement, test, and give feedback on ideas from Christopher<br />
Montgomery, designer of the Ogg Vorbis format. Be prepared to learn a lot about<br />
audio coding, or apply what you already know. While there's less "ownership"<br />
potential in this project proposal, it will be a great opportunity to learn<br />
about compression algorithm design, practice your programming chops, and learn<br />
to work in team.<br />
<br />
''Mentor: Christopher "Monty" Montgomery, backup: Jean-Marc Valin''<br />
<br />
=== OggMNG implementation ===<br />
Implement the OggMNG decode support in [http://gstreamer.freedesktop.org/dev/ gstreamer] and/or [http://www.illiminable.com/ogg/ illi's dshow filters].<br />
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<br />
overlay support. Details on the OggMNG specifications [http://wiki.xiph.org/index.php/OggMNG here]<br />
<br />
''Mentors: Mike Smith, Ralph Giles''<br />
<br />
=== Theora reference encoder quality optimization ===<br />
The [http://theora.org/download.html libtheora] encoder could make more use of some features present in the spec<br />
but not currently implemented in the encoder. This is a little open ended, but<br />
suggestions are: quant matrix tuning, per-block qi choice, 4:2:2 and 4:4:4 chroma<br />
support.<br />
<br />
''Mentor: Ralph Giles, backup: Timothy Terriberry''<br />
<br />
=== Subtitle Editor ===<br />
this project would also consolidate the various proposals for<br />
subtitles. from what i saw on #annodex,<br />
using [http://annodex.net/TR/draft-pfeiffer-cmml-03.html CMML] might be the way to go. Coordinate with [http://annodex.net/ Annodex.net].<br />
<br />
another option is to pick an existing format (e.g. srt) and get a<br />
gui mockup done. It should: give you playback with scrubbing, let<br />
you set in and out points, and write out the results in an Ogg File.<br />
<br />
=== OggSkeleton tool support ===<br />
Implement [http://wiki.xiph.org/OggSkeleton OggSkeleton] production in various xiph tool packages, e.g. oggenc, vorbisenc, speexenc, theora encoder_example or ffmpeg2theora. Possibly also implement support for the QuickTime media framework (most other media frameworks already support OggSkeleton e.g. gstreamer, xine, vlc, DirectShow). It may be interesting to do these as a general library, e.g. on top [http://annodex.net/software/liboggz/ liboggz]. This was a successful project in 2006.<br />
<br />
''Mentor: Conrad Parker, backup: Silvia Pfeiffer''<br />
<br />
=== Theora support in ekiga ===<br />
Implement support for Theora as a video codec in the [http://www.gnomemeeting.org/ ekiga] chat application.<br />
Overlaps with [http://live.gnome.org/SummerOfCode2006/Ideas GNOME].<br />
<br />
''Mentor: Ralph Giles''<br />
<br />
=== MXF support in gstreamer ===<br />
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].<br />
<br />
''Mentors: Christian Schaller, Mike Smith''<br />
<br />
=== Hardware implementation of Theora decoding ===<br />
Working on a hardware theora decoder, that can be used in embedded<br />
devices, dvd players and video pods. Presumedly GPL verilog source<br />
to run on an FPGA. See http://sourceforge.net/projects/elphel/ for a rough encoder implementation. This was a successful project in 2006.<br />
<br />
=== Intel to AT&T x86 assembly translation ===<br />
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.<br />
<br />
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.<br />
<br />
=== Speex and FLAC encoders in Xiph QuickTime Components ===<br />
Implement Speex and FLAC [http://developer.apple.com/documentation/MusicAudio/Reference/CoreAudio/index.html Core Audio] encoders.<br />
<br />
[http://xiph.org/quicktime/ XiphQT] has a Vorbis encoder component that could be used as a reference and starting point.<br />
<br />
''Mentor: Arek Korbik''<br />
<br />
=== New vocoder for Speex ===<br />
Speex currently has a very low bit-rate (2.15 kbps) mode that is implemented as a trivial vocoder. This mode has four "reserved" bits per frame, which means it would be possible to transmit more information. The idea of this project would be to make use of these bits to improve the quality of the 2.15 kbps mode. Changes to both the encoder and the decoder are allowed, provided that they are compatible with older version. This means that the new bit-stream should be decodable by the old decoder with only minor loss in quality. This still leaves plenty of room for improvement. Requires signal processing knowledge.<br />
<br />
''Mentor: Jean-Marc Valin''<br />
<br />
=== New Speex VAD/VBR code ===<br />
The current Speex VAD/VBR code is a quick hack, put together a long time ago. This project would consist of rewriting it to perform much better under all kinds of conditions. Requires signal processing knowledge.<br />
<br />
''Mentor: Jean-Marc Valin''<br />
<br />
=== rehuff: a tool to losslessly compress Vorbis files ===<br />
Would be nice to have an updated version of "rehuff", a tool to losslessly compress Vorbis files. There were an experimental version of it (see [http://lists.xiph.org/pipermail/vorbis-dev/2006-August/018522.html rehuff status]), but had some limits:<br />
* it's not free software;<br />
* it has a bug causing the rehuffed file can't correctly seek;<br />
* it works only with stereo files.<br />
<br />
Would be nice to have an updated rehuff, without the previous limits, and with a library part that will be included in libvorbisenc, so all encoders could use it (rehuff binary, oggenc, ...).<br />
<br />
''Not an official Xiph.org project, only a user proposed idea.''<br />
<br />
== GUIDELINES FOR APPLYING ==<br />
<br />
Remember that many people will apply to work on the Summer of Code.<br />
<br />
Keep in mind that those of us evaluating your application do not know you, we do not know what kind of <br />
experience you have, we do not know what you have done in the past and we have to pick the best people <br />
suited for a particular task.<br />
<br />
Hence, it is very important that you tell us in your email why you should be considered to implement a <br />
particular project. Projects with one line applications will probably get discarded so don't make an application<br />
like this:<br />
<br />
I would like to work on project XYZ<br />
<br />
Do not cut-and-paste the text from this page in your application. We know full well what the text here is. <br />
Instead explain to us your take on the problem "I could implement this using this and that", "I would need to <br />
research these areas", "I might need help sorting this out", etc.<br />
<br />
Explain to us why you are a good candidate, also explain which projects interest you (in case that there is more <br />
than one) and why.<br />
<br />
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 <br />
having an impact on the larger community Xiph.org works with.<br />
<br />
Note that if you are a student that want to apply for the Summer of Code, you should go through the standard Google process.<br />
<br />
If you have questions about these projects you can for instance come to the #theora channel on irc.freenode.com<br />
<br />
(thanks to the Mono project for these general guidelines)</div>Arekhttps://wiki.xiph.org/index.php?title=Summer_of_Code_2008&diff=4968Summer of Code 20082006-05-02T21:15:32Z<p>Arek: /* CURRENT IDEAS */ - added QuickTime audio encoders idea</p>
<hr />
<div>== CURRENT IDEAS ==<br />
<br />
This is our ideas page for [http://code.google.com/soc/ Google Summer of Code] projects with [http://xiph.org Xiph.org].<br />
<br />
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. :)<br />
<br />
'''If you're interested''' in doing a Summer of Code project with Xiph.org, [http://code.google.com/soc/student_step1.html sign up here] and submit an application.<br />
<br />
=== Optimize Theora encoding/decoding speed, SSE/SSE2 ===<br />
Work on MMX, SSE/SSE2 implementations of the crucial encoding and<br />
decoding elements in [http://svn.xiph.org/trunk/theora/ libtheora]. This could continue in theora-exp<br />
where with ruik's work or consolidate theora-mmx, theora-oil work into<br />
trunk. The results must still build cleanly on other archs and do <br />
run-time capability detection.<br />
<br />
''Mentor: Ralph Giles, backup: Jan Gerber, Mike Smith''<br />
<br />
=== Theora reference encoder quality optimization ===<br />
The [http://theora.org/download.html libtheora] encoder could make more use of some features present in the spec<br />
but not currently implemented in the encoder. This is a little open ended, but<br />
suggestions are: quant matrix tuning, per-block qi choice, 4:2:2 and 4:4:4 chroma<br />
support.<br />
<br />
''Mentor: Ralph Giles, backup: Timothy Terriberry''<br />
<br />
=== Encode support in theora-exp ===<br />
Implement a rate-distortion optimized encoding mode for [http://svn.xiph.org/experimental/derf/theora-exp/ theora-exp],<br />
including R-D optimzed mode decision and quantization (e.g., constant<br />
lambda). Then, use the above routines to implement a medium-latency ABR<br />
encoding mode (e.g., varying lambda), with a default target buffer size<br />
of approximately 2 seconds.<br />
<br />
''Mentor: Timothy "Derf" Terriberry, backup: Mike Smith, Ralph Giles''<br />
<br />
=== Development assistant for the "Ghost" audio codec ===<br />
Designing a cutting edge perceptual codec is a very daunting task. Xiph<br />
is in the research stage on a new low-latency, general purpose audio codec,<br />
code-named "Ghost". This is basically a "code assistant" position, where you<br />
will be asked to implement, test, and give feedback on ideas from Christopher<br />
Montgomery, designer of the Ogg Vorbis format. Be prepared to learn a lot about<br />
audio coding, or apply what you already know. While there's less "ownership"<br />
potential in this project proposal, it will be a great opportunity to learn<br />
about compression algorithm design, practice your programming chops, and learn<br />
to work in team.<br />
<br />
''Mentor: Christopher "Monty" Montgomery, backup: Jean-Marc Valin''<br />
<br />
=== OggMNG implementation ===<br />
Implement the OggMNG decode support in [http://gstreamer.freedesktop.org/dev/ gstreamer] and/or [http://www.illiminable.com/ogg/ illi's dshow filters].<br />
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<br />
overlay support. Details on the OggMNG specifications [http://wiki.xiph.org/index.php/OggMNG here]<br />
<br />
''Mentors: Mike Smith, Ralph Giles''<br />
<br />
=== Subtitle Editor ===<br />
this project would also consolidate the various proposals for<br />
subtitles. from what i saw on #annodex,<br />
using [http://annodex.net/TR/draft-pfeiffer-cmml-03.html CMML] might be the way to go. Coordinate with [http://annodex.net/ Annodex.net].<br />
<br />
another option is to pick an existing format (e.g. srt) and get a<br />
gui mockup done. It should: give you playback with scrubbing, let<br />
you set in and out points, and write out the results in an Ogg File.<br />
<br />
=== OggSkeleton tool support ===<br />
Implement [http://wiki.xiph.org/OggSkeleton OggSkeleton] production in various xiph tool packages. Also<br />
implement some playback support at least one popular playback framework:<br />
illi's dshow filters, gstreamer/totem, VLC, Quicktime, etc. It may be<br />
interesting to do this as a general library, e.g. on top [http://annodex.net/software/liboggz/ liboggz].<br />
<br />
''Mentor: Conrad Parker, backup: Silvia Pfeiffer''<br />
<br />
=== RTP payloaders and depayloaders for Vorbis and Theora ===<br />
Write a set of payloaders and depayloader plugins for Vorbis and Theora for [http://gstreamer.net/ GStreamer] and [http://farsight.sourceforge.net/ Farsight].<br />
These plugins should implement the current specifications for [http://xiph.org/vorbis/ Vorbis] and [http://xiph.org/theora/ Theora]. Philipe Khalaf and Rob Taylor<br />
of the Farsight project are prepared to mentor this project.<br />
<br />
''Mentors: Philipe Khalaf, Rob Taylor Backup: Christian Schaller''<br />
<br />
=== Theora support in ekiga ===<br />
Implement support for Theora as a video codec in the [http://www.gnomemeeting.org/ ekiga] chat application.<br />
Overlaps with [http://live.gnome.org/SummerOfCode2006/Ideas GNOME].<br />
<br />
''Mentor: Ralph Giles''<br />
<br />
=== MXF support in gstreamer ===<br />
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].<br />
<br />
''Mentors: Christian Schaller, Mike Smith''<br />
<br />
=== Hardware implementation of Theora decoding ===<br />
Working on a hardware theora decoder, that can be used in embedded<br />
devices, dvd players and video pods. Presumedly GPL verilog source<br />
to run on an FPGA. See http://sourceforge.net/projects/elphel/ for a rough encoder implementation.<br />
<br />
=== Intel to AT&T x86 assembly translation ===<br />
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.<br />
<br />
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.<br />
<br />
=== Theora encoder and Ogg exporter/muxer QuickTime components ===<br />
[http://developer.apple.com/quicktime/ QuickTime] is a major multimedia framework, used in many professional audio and video applications. The framework is flexible and its functionality can be extended by means of plugins - ''components''.<br />
While the number of existing tools able to export video in Theora format is still limited, Theora encoder/exporter components would somewhat improve the situation allowing applications based on QuickTime to produce content in Theora format.<br />
<br />
The project idea is to implement two QuickTime components: Theora encoder and Ogg exporter. <br />
In the Theora encoder component [http://theora.org/download.html libtheora] should be used for the encoding functionality and focus here is on integrating that functionality with the rest of the QuickTime framework.<br />
Ogg file exporter would be built around [http://www.xiph.org/ogg/ libogg] for transfering internal QuickTime movie structures into physical ogg streams. The component would also need to support [http://www.xiph.org/ogg/doc/oggstream.html concurrent multiplexing] and Ogg Theora mapping ([http://www.theora.org/doc/Theora_I_spec.pdf Theora spec, appendix A]). [http://www.xiph.org/ogg/doc/oggstream.html Sequential multiplexing] and possibly [[OggSkeleton]] support would be a plus.<br />
<br />
QuickTime is [http://developer.apple.com/quicktime/ extensively documented] including [http://developer.apple.com/documentation/QuickTime/QuickTimeComponentCreation-date.html#doclist component creation] and [http://developer.apple.com/samplecode/QuickTime/idxQuickTimeComponentCreation-date.html#doclist example components]. The old [http://qtcomponents.sourceforge.net/ qtcomponents] project also contains an Ogg/Vorbis exporter component.<br />
<br />
''Mentor: Arek Korbik''<br />
<br />
=== Audio encoders in QuickTime/CoreAudio ===<br />
This is a complementary idea to the Theora and Ogg QuickTime components above, adding audio format support to the Ogg exporter component.<br />
<br />
Implement Vorbis, Speex and possibly FLAC encoders as [http://developer.apple.com/documentation/MusicAudio/Reference/CoreAudio/index.html Core Audio AudioCodecs].<br />
<br />
Besides documentation, [http://developer.apple.com/audio/download/ Core Audio SDK] includes an example AudioCodec implementation.<br />
<br />
''Mentor: Arek Korbik''<br />
<br />
== GUIDELINES FOR APPLYING ==<br />
<br />
Remember that many people will apply to work on the Summer of Code.<br />
<br />
Keep in mind that those of us evaluating your application do not know you, we do not know what kind of <br />
experience you have, we do not know what you have done in the past and we have to pick the best people <br />
suited for a particular task.<br />
<br />
Hence, it is very important that you tell us in your email why you should be considered to implement a <br />
particular project. Projects with one line applications will probably get discarded so don't make an application<br />
like this:<br />
<br />
I would like to work on project XYZ<br />
<br />
Do not cut-and-paste the text from this page in your application. We know full well what the text here is. <br />
Instead explain to us your take on the problem "I could implement this using this and that", "I would need to <br />
research these areas", "I might need help sorting this out", etc.<br />
<br />
Explain to us why you are a good candidate, also explain which projects interest you (in case that there is more <br />
than one) and why.<br />
<br />
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 <br />
having an impact on the larger community Xiph.org works with.<br />
<br />
Note that if you are a student that want to apply for the Summer of Code, you should go through the standard Google process.<br />
<br />
If you have questions about these projects you can for instance come to the #theora channel on irc.freenode.com<br />
<br />
(thanks to the Mono project for these general guidelines)</div>Arekhttps://wiki.xiph.org/index.php?title=Summer_of_Code_2008&diff=4966Summer of Code 20082006-05-02T17:17:27Z<p>Arek: /* CURRENT IDEAS */</p>
<hr />
<div>== CURRENT IDEAS ==<br />
<br />
This is our ideas page for [http://code.google.com/soc/ Google Summer of Code] projects with [http://xiph.org Xiph.org].<br />
<br />
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. :)<br />
<br />
'''If you're interested''' in doing a Summer of Code project with Xiph.org, [http://code.google.com/soc/student_step1.html sign up here] and submit an application.<br />
<br />
=== Optimize Theora encoding/decoding speed, SSE/SSE2 ===<br />
Work on MMX, SSE/SSE2 implementations of the crucial encoding and<br />
decoding elements in [http://svn.xiph.org/trunk/theora/ libtheora]. This could continue in theora-exp<br />
where with ruik's work or consolidate theora-mmx, theora-oil work into<br />
trunk. The results must still build cleanly on other archs and do <br />
run-time capability detection.<br />
<br />
''Mentor: Ralph Giles, backup: Jan Gerber, Mike Smith''<br />
<br />
=== Theora reference encoder quality optimization ===<br />
The [http://theora.org/download.html libtheora] encoder could make more use of some features present in the spec<br />
but not currently implemented in the encoder. This is a little open ended, but<br />
suggestions are: quant matrix tuning, per-block qi choice, 4:2:2 and 4:4:4 chroma<br />
support.<br />
<br />
''Mentor: Ralph Giles, backup: Timothy Terriberry''<br />
<br />
=== Encode support in theora-exp ===<br />
Implement a rate-distortion optimized encoding mode for [http://svn.xiph.org/experimental/derf/theora-exp/ theora-exp],<br />
including R-D optimzed mode decision and quantization (e.g., constant<br />
lambda). Then, use the above routines to implement a medium-latency ABR<br />
encoding mode (e.g., varying lambda), with a default target buffer size<br />
of approximately 2 seconds.<br />
<br />
''Mentor: Timothy "Derf" Terriberry, backup: Mike Smith, Ralph Giles''<br />
<br />
=== Development assistant for the "Ghost" audio codec ===<br />
Designing a cutting edge perceptual codec is a very daunting task. Xiph<br />
is in the research stage on a new low-latency, general purpose audio codec,<br />
code-named "Ghost". This is basically a "code assistant" position, where you<br />
will be asked to implement, test, and give feedback on ideas from Christopher<br />
Montgomery, designer of the Ogg Vorbis format. Be prepared to learn a lot about<br />
audio coding, or apply what you already know. While there's less "ownership"<br />
potential in this project proposal, it will be a great opportunity to learn<br />
about compression algorithm design, practice your programming chops, and learn<br />
to work in team.<br />
<br />
''Mentor: Christopher "Monty" Montgomery, backup: Jean-Marc Valin''<br />
<br />
=== OggMNG implementation ===<br />
Implement the OggMNG decode support in [http://gstreamer.freedesktop.org/dev/ gstreamer] and/or [http://www.illiminable.com/ogg/ illi's dshow filters].<br />
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<br />
overlay support. Details on the OggMNG specifications [http://wiki.xiph.org/index.php/OggMNG here]<br />
<br />
''Mentors: Mike Smith, Ralph Giles''<br />
<br />
=== Subtitle Editor ===<br />
this project would also consolidate the various proposals for<br />
subtitles. from what i saw on #annodex,<br />
using [http://annodex.net/TR/draft-pfeiffer-cmml-03.html CMML] might be the way to go. Coordinate with [http://annodex.net/ Annodex.net].<br />
<br />
another option is to pick an existing format (e.g. srt) and get a<br />
gui mockup done. It should: give you playback with scrubbing, let<br />
you set in and out points, and write out the results in an Ogg File.<br />
<br />
=== OggSkeleton tool support ===<br />
Implement [http://wiki.xiph.org/OggSkeleton OggSkeleton] production in various xiph tool packages. Also<br />
implement some playback support at least one popular playback framework:<br />
illi's dshow filters, gstreamer/totem, VLC, Quicktime, etc. It may be<br />
interesting to do this as a general library, e.g. on top [http://annodex.net/software/liboggz/ liboggz].<br />
<br />
''Mentor: Conrad Parker, backup: Silvia Pfeiffer''<br />
<br />
=== RTP payloaders and depayloaders for Vorbis and Theora ===<br />
Write a set of payloaders and depayloader plugins for Vorbis and Theora for [http://gstreamer.net/ GStreamer] and [http://farsight.sourceforge.net/ Farsight].<br />
These plugins should implement the current specifications for [http://xiph.org/vorbis/ Vorbis] and [http://xiph.org/theora/ Theora]. Philipe Khalaf and Rob Taylor<br />
of the Farsight project are prepared to mentor this project.<br />
<br />
''Mentors: Philipe Khalaf, Rob Taylor Backup: Christian Schaller''<br />
<br />
=== Theora support in ekiga ===<br />
Implement support for Theora as a video codec in the [http://www.gnomemeeting.org/ ekiga] chat application.<br />
Overlaps with [http://live.gnome.org/SummerOfCode2006/Ideas GNOME].<br />
<br />
''Mentor: Ralph Giles''<br />
<br />
=== MXF support in gstreamer ===<br />
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].<br />
<br />
''Mentors: Christian Schaller, Mike Smith''<br />
<br />
=== Hardware implementation of Theora decoding ===<br />
Working on a hardware theora decoder, that can be used in embedded<br />
devices, dvd players and video pods. Presumedly GPL verilog source<br />
to run on an FPGA. See http://sourceforge.net/projects/elphel/ for a rough encoder implementation.<br />
<br />
=== Intel to AT&T x86 assembly translation ===<br />
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.<br />
<br />
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.<br />
<br />
=== Theora encoder and Ogg exporter/muxer QuickTime components ===<br />
[http://developer.apple.com/quicktime/ QuickTime] is a major multimedia framework, used in many professional audio and video applications. The framework is flexible and its functionality can be extended by means of plugins - ''components''.<br />
While the number of existing tools able to export video in Theora format is still limited, Theora encoder/exporter components would somewhat improve the situation allowing applications based on QuickTime to produce content in Theora format.<br />
<br />
The project idea is to implement two QuickTime components: Theora encoder and Ogg exporter. <br />
In the Theora encoder component [http://theora.org/download.html libtheora] should be used for the encoding functionality and focus here is on integrating that functionality with the rest of the QuickTime framework.<br />
Ogg file exporter would be built around [http://www.xiph.org/ogg/ libogg] for transfering internal QuickTime movie structures into physical ogg streams. The component would also need to support [http://www.xiph.org/ogg/doc/oggstream.html concurrent multiplexing] and Ogg Theora mapping ([http://www.theora.org/doc/Theora_I_spec.pdf Theora spec, appendix A]). [http://www.xiph.org/ogg/doc/oggstream.html Sequential multiplexing] and possibly [[OggSkeleton]] support would be a plus.<br />
<br />
QuickTime is [http://developer.apple.com/quicktime/ extensively documented] including [http://developer.apple.com/documentation/QuickTime/QuickTimeComponentCreation-date.html#doclist component creation] and [http://developer.apple.com/samplecode/QuickTime/idxQuickTimeComponentCreation-date.html#doclist example components]. The old [http://qtcomponents.sourceforge.net/ qtcomponents] project also contains an Ogg/Vorbis exporter component.<br />
<br />
''Mentor: Arek Korbik''<br />
<br />
== GUIDELINES FOR APPLYING ==<br />
<br />
Remember that many people will apply to work on the Summer of Code.<br />
<br />
Keep in mind that those of us evaluating your application do not know you, we do not know what kind of <br />
experience you have, we do not know what you have done in the past and we have to pick the best people <br />
suited for a particular task.<br />
<br />
Hence, it is very important that you tell us in your email why you should be considered to implement a <br />
particular project. Projects with one line applications will probably get discarded so don't make an application<br />
like this:<br />
<br />
I would like to work on project XYZ<br />
<br />
Do not cut-and-paste the text from this page in your application. We know full well what the text here is. <br />
Instead explain to us your take on the problem "I could implement this using this and that", "I would need to <br />
research these areas", "I might need help sorting this out", etc.<br />
<br />
Explain to us why you are a good candidate, also explain which projects interest you (in case that there is more <br />
than one) and why.<br />
<br />
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 <br />
having an impact on the larger community Xiph.org works with.<br />
<br />
Note that if you are a student that want to apply for the Summer of Code, you should go through the standard Google process.<br />
<br />
If you have questions about these projects you can for instance come to the #theora channel on irc.freenode.com<br />
<br />
(thanks to the Mono project for these general guidelines)</div>Arek