About
OpenHTPC is an open source home theater PC (HTPC) front end project.
The system is written in C#. Currently it's running on the Windows
platform. However, the system is design to be platform independent so that in
the future it could be deployed on other platforms like Linux.
Use Case Analysis
The system is a Home Theater PC
(HTPC) front-end software. The software provides the as easy-to-use
interface as the user interface of any home electronics. With the control
simplest input device, the software should be able to play movie clips (DivX,
Real media, Quick time etc), DVD movie, TV and musics (mp3, rm, AAC etc) and
pictures.
The media files can be located on local machine, or on others PC through home
network, or even on removable storages like CD/DVD, compact flash or secure
digital cards.
Design Goal
-
Versatile. The system is primarily a front-end. On Windows
platform it uses the DirectX interface. As long as the codec of the specific
media type is installed, it should be able to play it.
-
Simple maintenance. The system is composed of several
DLLs, one executable, at least one skin folder and one configuration file.
Basically the users just need to copy the files. Make changes to no more than
10 lines in XML configuration and run.
-
Easy to use. The system is designed to work with any input
device (keyboard, remote controller and joysticks etc) with at least 6 buttons
(up, down, left, right, ok and cancel).
I designed the innovative context sensitive key map mechanism. For example,
the Right function and FastForward function can be
assigned to the same button. If the current context is DVD navigation, the code
will only check if the button supports the Right. If the current
context is playback, it will only check if the button supports FastForward
function.
-
Internationalization. I always beat in mind the support for
internationalization in the design process. All text string and fonts are
defined in the configuration file of the skin. The skin is fully customizable
with different languages support.
Also, for DivX movies with different external subtitles in different
languages. The system can automatically adjust the language font when switching
among different subtitles.
In a word, the system is designed to be maximum considerate to end
users.
Portablity Issues
I would expect in the near future the project would be able to be
ported to Unix platforms. The system is implemented in C#. The design has
successfully decoupled the media navigation functionalities and actual media
playback related functionalities.
The media playback functions can be abstracted into an interface with around 10
functions. On Windows I'm currently using DirectX interface to do actual
playback work. On Linux/Unix we can choose the front-ends like mplayer, xine or
videolan.
I'm keeping an eye on the DotGNU project on Linux platform.
|