From MythTV Official Wiki
Revision as of 03:09, 1 May 2006 by Cpinkham (talk | contribs)

Jump to: navigation, search

Google Summer of Code 2006

MythTV was selected as a mentoring organization for Google's Summer of Code 2006. The following are proposed projects from MythTV developers, though student write-ins are certainly encouraged if you've got better ideas. Just email the mythtv-dev list or contact Isaac if you have any questions.

These projects should all be fairly time consuming - we're looking for people that can dedicate the majority of their summer to MythTV. Development assistance will be available through email and IRC.

Proposed Projects

Settings Rework/Enhancements

Myth is.. configurable. Quite often, it's way too configurable. Pages upon pages of settings for the user to play with just get confusing. Simplifying the settings UI is a must. This is a two-part task. First, simple and advanced modes of configuration should be created, with the majority of the various options being hidden in simple mode. The second part of this project will be rewriting the underlying code to make the user interface more like the Scheduled Recordings interface, which is much easier to use than the current wizard-style settings UIs.

Automatic configuration

The initial configuration stage (mythtv-setup) could be made simpler though automatic tuner card detection and configuration. The setup process also requires configuration of IP addresses/ports/etc of the backend services, and this also could be made automatic through the use of zeroconf/random discovery service/whatnot.

UI rewrite

This project is part of a more extensive on-going development effort. Myth has a new UI backend (called libmythui), and everything is slowly being rewritten to use this. This new backend allows multiple 'painters' that do the actual drawing - OpenGL and Qt based painters have been written. Using the OpenGL painter, a more modern/advanced UI is possible. At the same time, the process of rewriting converting Myth's UI to this new backend will allow everything to be made more consistant. This migration to libmythui can be done in stages (down to single screens at a time), so a student working on this project could choose whatever sections of the existing UI presentation code they'd like to rewrite - a few plugins, some of the core UI code, etc.

  • Skills: C++, XML (the theme definitions)
  • Mentor: Isaac Richards
  • Backup Mentor:


One of the big complaints about MythTV is that people don't like how MythMusic works. Well, here's your chance to change that. This project will involve the design and implementation of a new UI for MythMusic. This includes making it possible to exit the player without stopping playback (a not that difficult task), and possibly supporting the existing 'mfd' module that used to be under development as a backend for media playback/ripping/burning/itunes support/etc.

MythWeather enhancements

MythWeather's been sort of dangling unmaintained for a while now. It'd be nice to enhance it in various ways. Split data retrieval out into separate scripts, so more than one source of weather data could be used. Download data periodically in the background, so data's always available. Support multiple locations. Additional data/map display. That sort of thing.

Port to Windows

There used to be a semi-working port of mythfrontend (playback portion of Myth) to Windows. It's gotten extremely stale since it was unmaintained, and no longer compiles, let alone works. So, this project idea is to fix up the port of the frontend, and also add support for TV Tuner devices on Windows - basically, port mythbackend (recording/scheduling part).

MythWeb UI Redesign (AJAX)

Users have asked for it, so we will oblige. MythWeb needs a complete UI overhaul to bring it up to date with the latest technologies. This project will include reworking and standardizing HTML/CSS page layouts, designing a new look-feel skin and upgrading the default (javascript-friendly) template set to use AJAX and dynamic content wherever possible.


This project will entail converting the nuvexport script from Perl to C++, creating a new program capable of interfacing natively with libavformat (and possibly transcode and mencoder) to export recorded programs in a variety of formats, including DVD backups/burning.

MythCommFlag Enhancements

This project will involve adding several enhancements to MythTV's commercial flagger. Part of the project will be giving the commercial flagger the ability to run in a multithreaded mode so that it can benefit from dual-core or SMP servers. Each thread would operate on a section of the recording and then when all sections have been analyzed, the flagger would consolidate the data and generate the commercial skip list. The other part of the project involves adding several new ways to detect commercials. New detection methods would include the following:

  • CC/Teletext detection using a dictionary of phrases
  • Audio analysis looking for periods of silence or sections with a higher perceived volume
  • detection of cross-fades which are used in place of blank frames sometimes
  • detection of repeating still frames which are sometimes used in place of blank frames between commercials and show material

The project is not limited to just this list, if the applicant can come up with any other ways to improve the accuracy or speed of the commercial flagger, those may be approved and accepted as part of the project.

  • Skills: C++, with experience in video or audio analysis helpful but not required
  • Mentor: Chris Pinkham
  • Backup Mentor:

Make Myth Multi-user

This project involves making integrate better in a multi-user environment. A couple examples are multiple users in a family where the parents want to control what actions their kids may perform, or multiple users sharing a house where you just don't want people deleting each others recordings. Restrictions would be set on a per-user basis, controlling things such as editing recording schedules, deleting recordings, ratings limits, access to setup menus, access to plugins, etc.. Other per-user controls would be things like restricting a user to view just their own personal recordings in their named Recording Group, ability to view their own recordings and Shared recordings, or ability to view all recordings. A similar setting would indicate which scheduled recordings a user could edit. These are just a few of the things shat would need to be modified to make Myth function better when multiple users are involved. The default for Myth would be to have a single all-powerful user. Unless someone creates additional users within Myth, the program would continue to function as it does now.