GeeXboX: An Introduction to Enna Media Center
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 97 | |
Author | ||
License | CC Attribution 2.0 Belgium: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/45706 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSDEM 201069 / 97
1
2
4
5
6
8
14
15
16
17
23
29
38
41
42
44
46
47
48
50
53
54
62
63
64
65
66
71
74
75
77
78
79
80
82
84
85
94
00:00
Interface (computing)State of matterComputerMultimediaDistribution (mathematics)Software developerGraphical user interfaceVideoconferencingContent (media)Hard disk driveAnalogyComputer hardwareSoftwareLevel (video gaming)VideoconferencingFlow separationMultiplicationProjective planeHard disk driveMultimediaHypermediaDistribution (mathematics)Point (geometry)CuboidData storage deviceCartesian coordinate systemSet-top boxComputer fileBootingView (database)Streaming mediaNeuroinformatikRemote administrationMultiplication signUniform resource locatorDigital photographyCodecInterface (computing)Audio file formatSoftware developerAnalogyContent (media)Remote procedure callSet (mathematics)1 (number)Computer animationLecture/Conference
03:20
Latent heatComputer configurationGraphical user interfacePortable communications deviceHypermediaMenu (computing)Control flowFunction (mathematics)Travelling salesman problemElectronic visual displayUser interfaceFunctional (mathematics)NavigationProjective planeElectronic visual displayMenu (computing)HypermediaDistribution (mathematics)CuboidCartesian coordinate systemMultiplication signInterface (computing)Game controllerSoftware developerRegular graphComputer animation
04:59
ComputerGraphical user interfaceMetadataInformation retrievalMultimediaLibrary (computing)Projective planeMultimediaHypermediaGraphical user interfaceCartesian coordinate systemMetadataRight angleInterface (computing)Information retrievalBitOcean currentCuboidComputer fileNeuroinformatikTouchscreenComputer animationLecture/Conference
06:21
AbstractionSoftwareArchitectureMultimediaControl flowGeneric programmingSoftware frameworkThread (computing)Asynchronous Transfer ModeSineOrder (biology)Library (computing)Level (video gaming)VideoconferencingMoment (mathematics)Projective planeElementary arithmeticMultimediaHypermediaSoftware bugAbstractionCartesian coordinate systemMetadataFrame problemSoftware frameworkView (database)Streaming mediaDifferent (Kate Ryan album)Front and back endsInterface (computing)VolumenvisualisierungGame controller1 (number)Electronic visual displayWeightGraphical user interfaceSquare numberCuboidoutputEqualiser (mathematics)Lipschitz-StetigkeitComputer animation
09:04
ArchitectureCore dumpRoyal NavyParity (mathematics)Data structureComputer architectureMoment (mathematics)Slide ruleHypermediaCartesian coordinate systemWrapper (data mining)Multiplication signGame controllerBitDebuggerLipschitz-StetigkeitWebsiteComputer animation
10:17
ArchitectureGreen's functionEmailParity (mathematics)Library (computing)HypermediaImplementationMultiplicationOperations researchDatabaseInformationCovering spaceStreaming mediaInformation retrievalDatabaseData structureImplementationInformationOrder (biology)Computer architectureLibrary (computing)Level (video gaming)Category of beingVideoconferencingUser interfaceFlow separationDebuggerContent (media)Pairwise comparisonProjective planeSlide ruleDivisorCovering spaceHypermediaAbstractionAsynchronous Transfer ModeInternet service providerElectronic mailing listGreatest elementComputer fileWebsiteStreaming mediaDifferent (Kate Ryan album)Wrapper (data mining)Multiplication signGame controllerMechanism designSoftware developerMultimediaData storage deviceComputer animation
13:11
Module (mathematics)Modul <Datentyp>E-bookFile viewerMoment (mathematics)E-bookMusical ensembleInternet service providerModule (mathematics)Set-top boxWebsiteNeuroinformatikDigital photographyInterface (computing)E-Book-ReaderData miningFile viewerRight angleComputer animation
14:09
Term (mathematics)YouTubeOvalInstant MessagingVideoconferencingLibrary (computing)AerodynamicsHypermediaKeyboard shortcutTouchscreenLocal ringWeb browserMiniDiscDatabaseDynamical systemWindowVideoconferencingLocal ringHard disk driveHypermediaCASE <Informatik>Ocean currentCartesian coordinate systemTouchscreenDatabaseTouch typingLibrary (computing)MIDITerm (mathematics)CuboidKeyboard shortcutKey (cryptography)MiniDiscInternettelefonieComputer animation
15:08
Computer hardwareWhiteboardSpring (hydrology)MereologyProjective planeComputer animation
15:26
Computer animation
Transcript: English(auto-generated)
00:10
Hi, so my name is Benjamin, as I said, and I'm the project leader of the GiggsBox distribution for quite seven years now. And we have designed a new media center application that I'm going to present to you guys now.
00:28
So, again, GiggsBox is a major live CD multimedia distribution since 2003. Back at the time, there were only moviex distribution for the one who might remember of it, who was also a live CD distribution.
00:45
And the idea of the distribution at this time was to be able to turn the computer into a full feature set of boxes. At the time, many computers were at difficulties playing back several kinds of videos of audio codecs or video codecs, whatever.
01:08
And we wanted to make some distribution that only does this purpose. So the idea was that with a live CD, one can just boot his PC and be able to run every kind of multimedia content he has.
01:21
Photos, videos, audio files, whatever. And we wanted it to be able to stream from various media locations. So we are able to read files from either your hard disk, from the NFS, or from SAMBA, for the network storage. Also, we wanted to add support for the UPnP or DLNA streaming protocol.
01:46
So, again, also with the CDDA support and DVD support, analog TV support, DVBE playback, this kind of thing. At the time, it was a really small and tiny distribution, which was at the
02:02
very first release only three megabits big or small, depends on the point of view. But it's something that really can boot your PC really quick. And as a live CD, you can also shut it down really quick. The idea was to replace the, when it was designed to replace the first hardware setup boxes.
02:24
So when it was designed, it was the time of the first KISS setup boxes, the first ones that were able to play the DVX files on your TV. So that was the idea of the distribution. So, obviously, we had to make it fully controllable through your remote control, through LiRC.
02:42
And, as you may see on the right, this is a screenshot of the interface, which, honestly, is quite ugly. And this is still the existing interface. And we have designed the new interface, which is called ENOW, which aims at replacing this one.
03:03
The DVX project was designed by a few M-Player developers, including myself. And, as you may see, the design is quite simple because it uses the M-Player OSD interface. So it's also quite limited.
03:22
Again, as we are using right now the M-Player OSD interface, it is quite difficult to add any new functionalities. So what we wanted is to really split the MediaPlayer interface from the user interface.
03:41
Also, with the GigsBox being completely based upon M-Player projects, and being M-Player developers, we introduced many features that were not, at this time, in the regular M-Player projects. So we introduced the support for the DVD nav, enhanced a lot of things in the OSD menu,
04:04
added some TV control, LCD display support, RTSP streaming, and things like this. Of course, nowadays, all of these features have been included in the AppStream project. But, as a consequence, many of the users requested us that the features that GigsBox originally proposed,
04:25
they requested us for these features to be able to be used in other distributions than GigsBox. So we had the willingness to create a new guy, which had to be portable, which had to be configurable and extensible.
04:42
So it has to work on any kind of display, whether it is frame-refer-based or X-org or OpenGL-based, anything like this. And, again, it had to be a standalone application that can run on any distribution, not just GigsBox.
05:00
So, the application that we are talking about is called Ina. You have on the right a few screenshots of the application, which, as you can see, is far different from the previous screenshot that you've seen of the current interface. Ina has been designed to be the GUI for the GigsBox 2.0 release.
05:25
It's a media center application that is meant to be used as a home theater PC, and is meant to run on low-resources computers. So the binary itself is only 250 kilobytes big. Of course, then you add the theme files, which are composed of all the JPEGs, PNGs, and things like this.
05:45
So it quite enhances the resource consumption. But we have decided to make the GUI rely on the Enlightenment Foundation Libraries project. So we will see this a bit later on.
06:02
As for the graphical interface, we rely on the EFL. And as for all of the multimedia playback capabilities and all the metadata retrieval, we rely on two separated projects, which are called libPlayer and libValela, which are projects that have been created by the GigsBox folks.
06:22
So here you can see quite a simple interface or view of what Ina really is. In the green squares, you have all the libs that have been designed by the GigsBox teams. So Ina itself, which relies on the libPlayer AV framework and on the libValela metadata engine.
06:47
And for the graphical interface, it relies on the Enlightenment Foundation Libraries, also known as the EFL, which mostly are the projects called Ina, EAT, EVAS, Ecore, Edge, and Elementary. As for the libPlayer framework, it relies on different media player backends.
07:04
So we can control MPlayer, Xyn, VLC, Gstreamer, and of course this player controls the audio and video renderer layers. EVAS itself is also used to control the video renderer for the graphic display, but it is also used in order to control the input layer.
07:30
So one of the first libraries we designed is called libPlayer. This is a multimedia AV abstraction layer that was used to control various multimedia players.
07:45
So the willingness is that some people, some of the users we have, have made some complaints that we stick to MPlayer. And for some reason it was good in the past, it was maybe not as good as it used to be nowadays because VLC might be better for playing the net streams.
08:02
Xyn might be better for playing DVDs and things like this. So we have designed an AV abstraction layer that actually provides a generic API. And this API allows us to control all of these players. So MPlayer, Xyn, VLC, and Gstreamer. The two first ones are pretty much stable, the two last ones are in a pretty much experimental stage at the moment.
08:26
So it basically can play but with still a lot of bugs. The application or the library has been designed to be fully multi-threaded and also thread safe. And it allows any front-end to use it to control any media players through various audio and video renderers.
08:52
So ELSA, OSS projects for the audio ones. And either the frame buffer, OpenGL, SDL, VDPIU, X11, or Xvideo for the video layers.
09:06
This is some internal drawings of the libPlayer architecture. Just to say, the slides will be available on our website, as they are a bit complicated.
09:21
If you want to spend any more time to check about the architecture, they will be available on our website. As for libPlayer, as I said, we have one public player API. This player API is used to expose the control to various media players.
09:41
So what you have designed is this API and the front-ends, which at the moment is ENA only, but many other applications might not be able to use it. You just have to send some controls to a control queue. The controls can be very simple.
10:00
They are the playback, stop, pause, seeking, backward, forward, any kind of things. And through this, we have a lot of internal structures that actually cause different wrappers.
10:25
When you register your player public API, you have to register a new player structure, which you first define to be one of the four players that we support. And then the wrapper engine actually translates all the public API calls into one of the multimedia player API.
10:55
Except from mPlayer, which by comparison to the other libraries isn't really a library,
11:03
and so mPlayer only can be controlled through the slave mode, which is a FIFO-based mechanism. And we have implemented a complete wrapper that interacts with mPlayer through this FIFO mechanism. One of the ideas of libPlayer is to provide this video abstraction layer,
11:24
so that we might be able to control several new players or new things that might come in the future without having to change anything on the front-end, so on the user interface. The next one that we use is libValala.
11:41
libValala is a tiny media scanner library. It has been designed to feature high-performance and multi-threaded implementation. What it does is storing various information on your media files into an SQLite database. In order to do that, it parses the audio-video stream properties through the ffmpeg project,
12:06
and it also allows to grab many information from online websites in order to fetch covers, lyrics, synapses, lists of actors for your movies, and things like this.
12:22
On the bottom you may see the different grabbers that we currently support. As for the offline mechanisms, we support EXIF, ffmpeg, and the NFO files. For the online, we support different websites that provide such kind of information.
12:41
We probably won't spend much time on this, but this is some internal mechanisms of libValala and how it works. We have a scanner that actually calls many grabbers that can be either offline or online, and retrieves the various information from different content providers and stores them within a database.
13:04
If you're interested in the architecture, you may check the slides on the website. As for Ina itself, again a few more screenshots on the right, you may see it as it has been designed with embedded considerations in mind.
13:24
It has a low footprint, and it also was meant to be user-convenient and plug-and-play. The idea is that anyone without any computer skills is able to use the interface. As for now, we have many modules that have been designed.
13:42
Basic features like the music player, the movie and TV show players, also a photo viewer, weather forecast activities, and some online ebook reader that uses some content providers. We have two at the moment. One is called the OneManga website, and another is the GoComix one. These are two websites where we can fetch e-books or comics and things like this,
14:07
and you can display them on your set-top box. As for the feature, as it was the case with GigsBox, we support playing back from the local disk, from CDDA, DVD, database, broadcast,
14:21
we support the UPnP and DLNA playback. Also, the application supports all the dynamic media detection through the UDAV library, so it's a replacement for the HAL that is currently dying. We may discover how many hard drives you have.
14:40
If you plug a new USB key, it automatically appears on your applications and things like this. Again, it has been designed to be controllable through the keyboard, the mouse, or the touchscreen. As for the mid- and long-term features, we expect to port it to Windows and to OS X. Currently it runs only on Linux and has been packaged through Ubuntu.
15:02
As you may see, many other features that might come like video on demand, voice over IP, and things like this. The project is still young and a few announcements are due to spring. It will be part of the GigsBox 2.0 release that is supposed to be coming by the beginning of the month.
15:27
Thank you for your attention. If you have any other questions, you can...