GMediaMP backend updates
There have been lots of updates to the backend of GMediaMP to make it a more useful application.
First off, I created a browser widget. This widget is used for every display of lists of tracks. With some configuration, it can display the two artist/album style panes to filter the list of tracks. This allows me to simplify the code a lot by having one widget and using a different store for different media types. So all the different panes (Music, Movies, …) are all handled by a browser widget.
Then I created a media-store interface which defines the store used by the browser. Then I created a few classes that implement this interface that work with different backends. The first one is the media-store which interacts with GMediaDB. This is how the main 4 panes are created. A media-store object is created for all 4, then browser widgets are created and added to the view. This makes the code very simple and straight forward. I’ve also started a backend to load from an ipod. So with little work, the browser widget can display information from a completely different source.
I created a device-manager class that watches for device mounts/unmounts and manages device classes. There is a device interface that defines interaction with any kind of removable device. Currently there is an ipod device class that handles creating the stores and browsers for all its media types and adding them to the main views. This implementation can currently only read from the device and play anything stored on it. Syncing is still being worked on and some changes to the device interface will probably occur.
I have worked on the build system to enable the user to configure which options are used when running the program. This will include things like which backends to use for the player and which devices to enable support for. This is helpful for me because it enables me to work on certain things that are not stable but still keep them in the master branch of the repo. I can just set it to be disabled by default, and enable it when i want to work on it.
The last big change is something I’ve been working on for a while. I created a player interface and created several classes that implement this interface. The main reason I did this was that the first version used gstreamer to playback media files, but I wanted more control over the process. To do this I looked into using libavformat/libavcodec. This provides for much greater control over playback but has a completely different interface than gstreamer is. So now there are the two different player backends that can be selected via the build options.
So with these updates, GMediaMP got a more uniform interface all using the same browser widget class, the groundwork for device support, two different player backends, and the ability to choose between several options to go into the compiled program. With that this project is getting more exciting everyday and turning into something useful.
-
Recent
-
Links
-
Archives
- December 2009 (1)
- November 2009 (1)
- October 2009 (1)
- September 2009 (2)
- August 2009 (1)
- July 2009 (1)
-
Categories
-
RSS
Entries RSS
Comments RSS