IFreevo is accepted for Google Summer of Code. This page should be used to describe tasks students could do for Freevo. If you have an idea, just add it to this page. Students can register until March 24th. The Freevo submission is split into three parts:
- kaa for basic python modules of the Kaa Media Repository, independent of Freevo itself.
- freevo for work in Freevo 2.0 svn trunk
geexbox for work on GeeXboX (For those who don't know: GeeXbox is a LiveCD and GeeXboX 2.0 will be based on Freevo 2.0)
Kaa.popcorn is a generic player module and can play video and audio files using mplayer or xine. Support gstreamer as player backend is only a proof of concept right now. Gstreamer is a very promising framework that should be fully supported by kaa.popcorn to be supported by Freevo. The work can be split into the following parts:
- Support basic control with gstreamer. This includes post-processing, seeking, deinterlacer, libvisual integration and the possibility to change the filter list during runtime.
- Create gstreamer filter to support OSD overlay. This is needed to draw the Freevo OSD on top of gstreamer
- Create shared memory output sink to display the video on top of other videos using the overlay filter or render it into other parts of Freevo with alpha blending (Freevo will do that, the sink only needs to provide the image as shared memory)
kaa.record is being rewritten right now based on gstreamer. Most of the logic is finished and it will be finished when Google SoC 2007 starts. Based on the code the following parts could be done as separate projects:
- 1 CAM support for DVB 2 Teletext support 3 DVB EPG parsing
- When Google SoC 2007 starts we will have a new very powerful gui render engine. It will be possible to use animations with fading, scaling and other nice effects with the gui. We will need a designer to design the user interface. Most of this won't be coding python code but create a good design and images.
- Create webserver based on cherrypy and cheetah
- control freevo over the web. Start/Stop/Recordings
- Guest accounts with limited access
- Download of files
- Some nice web 2.0 Ajax effects, but not too much or small devices like the Nokia 770 will die.
- Based on some proof of concept code already written.
GeeXboX (more details on [[http://trac.geexbox.org/trac.cgi/wiki/soc07]])
Inclusion of X.Org server
- As for now, GeeXboX runs in full console mode through generic VESA extensions which is adequate for 4:3 screens and TV-Out.
- With the upcoming of HDTV content and wide screens, the rendering and display of anamorphic high-definitions streams becomes mandatory.
The goal of the student is then to proceed with the integration of X.Org server (and all of its depedancies) to GeeXboX. This requires a good level of Linux systems internals and good notions of packages compilation and cross-compilation. Previous experience of Gentoo (or better LFS, a.k.a LinuxfromScratch?) distribution is welcomed.
- Once X.Org has been integrated, the student will have to work and the hardware auto-detection issues, in order to start the X server with the drivers the most suited to the running computer.
- Several other points might be addressed such as TV-Out handling and video cards' hardware decompression assistance (a.k.a. XvMC) under video player.
- Skills needed: C, Bash shell, Compilation.
Rework of LiveCD boot and HDD installation process
- Designed as a LiveCD, the HDD installation procedure of GeeXboX suffers from design flaws.
- The student's job will be to rework the boot procedure to use new technologies like SquashFS. Many points can also be adressed for a better hardware auto-detection in order to speed up distribution boot time.
- In parallel, the student will have to work of the boot procedure when installed on HDD (by opposition to LiveCD usage), where other filesystem technologies like UnionFS/AuFs can be combined to SquashFS to have R/W partitions.
This task requires good knowledge of Linux boot, distribution internals and motivation for test&trial hours. The student needs to be confident with shell scripting.
Development of a Vidix video driver for Intel cards
GeeXboX video playback relies on 2 types of video drivers designed for console mode: VESA and Vidix (http://vidix.sf.net/). While the first one provides a generic unaccelerated video driver that works everywhere (video output fallback), one can use the vidix driver that provides direct graphic access (DGA) to the video card, offering overlay support.
- The Vidix drivers set is handling many video cards (ATI, nVidia, S3, VIA, Matrox ...) while totally missing support for Intel based video cards.
- The student's project will be to write an accelerated driver for Intel based cards (mainly i945 and i965) that can be found embedded on many HTPC motherboards. The goal can be reached by trying to port parts of the X.Org intel driver to the Vidix API.
The task is tricky and requires a good C knowledge (besides some notions about video cards and system programming). It is mandatory for the student to have access to an Intel card, otherwise he won't be able to write a working driver for
- If successful, the project can goes on with enhancements on the nVidia vidix driver.