No more pink walls

    Still kickin

    Browsing Posts in OpenSource

    So time for another update, this time accompanied by a mini screencast. Recently I’ve been focussing on the TV functionality part of Gloss as it has been a bit neglected since it was first written. The backend streaming code has received a partial rewrite (Still very much in progress) that aims to lay the code out in a way that more closely resembles the official Myth Frontend. Needless to say I’ve been poring over this code, and when not getting confused, have learned some really interesting things. I’ve also been tuning the transfer parameters a little to try and achieve smoother, more consistent playback.
    The ability to change channels is now firmly in place and with it comes a basic on screen display featuring channel names/logos/guide etc.

    A couple of people have recently been on the IRC chat too (#gloss on irc.freenode.org) and have provided some really useful feedback. This has lead to a heap of compatibility bugs being corrected, as well as the addition of a –debug mode allowing a different level of verbosity in reporting.

    As I said, I’ve done another screencast, but its only a short one showing some of the new features since the last video. Enjoy:
    YouTube Preview Image

    Well its back to real life now and I can already feel the buzz from linux.conf.au starting to wear thin. Fortunately it has lasted long enough though for me to get a hell of a lot of things done. I met some terrific people at LCA including Rob Bradford from O-Hand in the UK (Thanks for the stickers) as well as catching up with some old conf friends (Hey Nick!).
    On the Gloss side, there’s been plenty of updates, the two most visible being the creation of a sliding image previewer and the stripping out of the menu system from the core code. This means that it is no longer mandatory for Gloss to use a standard menu system for its interface. Whilst writing a new interface module isn’t exactly as stragithforward as writing a new transition, it is now a viable option and to prove the point, I wrote a ‘wheel’ system that (kind of) duplicates the system found on the original version of Frontrow, but is much nicer in my opinion. The great thing about this is that  the interface is completely transparent to the modules themselves and the option of which interface to use is simply set in the theme like any other option. A new screencast showing off these two things shouldn’t be too far away now.
    Also, I received so much schtick from certain people about it during LCA that I have made the TV functionality my next priority, with channel changing being top of the list. This is something I should have got around to doing a LONG time ago, but the eye candy always seemed to keep getting in the way.
    I’ve also updated the setup instructions for Gloss so its now (a little) easier for someone to get it up and running. Thanks to ctudball for being the guinea pig.

    I’ve also spent the last week or so trying to give something back to Clutter by porting all the tests to python, discovering some niggly little issues along the way. I should finish these off this weekend and I’ll get back into Gloss properly after that.

    Anyway, I’m off to Spamalot tonight with Dad, should be an awesome evening :)

    So I’ve been promising it for quite a while now, but the latest Gloss screencast is finally out, and its a doozy. Its a full 5 minutes long and has commentary explaining various features. As usual, its up on YouTube:
    YouTube Preview Image

    The last few weeks have been very hectic on the Gloss front as I’m preparing to show it off at linux.conf.au next week.  Whilst there’s not been many new features added, many of the existing ones have been cleaned up and are working more reliably than they were in the past.
    There has been a lot of work on the themes themselves, making them look their best on as many resolutions as possible. I also added one new menu transition in (zoom_fade), although it still has some clipping issues.

    So that’s about all for now. After next week I hope to do some work in getting the TV module more fully featured, with the top priority being channel changing. Good things to come in other words.

    So I figured that before the sheer number of changes overwhelmed me to the point of forgetting them all, I’d make another long overdue entry about Gloss.

    Firstly, I mentioned in my last entry that I had submitted a proposal for a lightning talk on Gloss at linux.conf.au, well I can confirm that this will be going ahead on the first Monday at the Multimedia Mini-conf. This has probably been the driver that has caused me to work on Gloss so much as there’s a whole heap of things I’d like to see implemented by the time I give the talk.

    So anyway, onto things that have happened since last time:

    • Clutter has moved up to version 0.5, breaking so many things in Gloss in the process that I thought I’d never get to the bottom of it all. There’s still a couple of little changes that are causing me problems and I have a couple of bugs in O-Hands Bugzilla that will help things if/when they get fixed.
    • Probably the biggest change has been the creation of themes for Gloss. I made the decision to go with XML based config for these and so far everything is going really well. Not all of the modules are yet fully themeable, but all the main stuff is done and I’ve made 2 themes to demonstrate what’s possible. The new theme is pretty much a direct knock-off of the Apple FrontRow interface, but it does look good and includes many of the nifty graphic animations that FrontRow contains. The theming moves beyond just simply changing images and moving elements, it also allows you to select transformations for various actions, which leads onto the next point:
    • Pluggable transformations. One of the bigger ‘bling’ elements in a media centre is the transitions/transformations between various elements. Now because I’m not the most artistic or creative of people, I’ve made it as simple as possible for others to be able to make their own transitions without needing to understand much of the underlying system. These transitions can then be selected within themes.
    • TV playback: I FINALLY fixed the streaming video playback system so that it buffers and streams smoothly. This had been really p*ssing me off for a long time, so I was rather happy when I finally got it right :)

    And now a few less exciting things:

    • A nice central input queue that controls and buffers key inputs on scrollable items (eg menus). This fixes problems that were caused when a navigation key was held down causing multiple input events while there was an existing timeline running. Now that’s a big mouthful and sounds really boring, but the theory is that this will lead to those sexy accelerating menu’s that all the cool kids are using these days
    • Video module now has rolling cover viewers so that different folders can be viewed. This is still reasonably basic as most of the work has been around getting it work with Clutter 0.5. Expect more in this area soon.
    • So many little fixes and neatening of the code that to mention them all would cause this entry to become the most boring ever.

    I REALLY want to do another screencast, but a few little things are still broken with Clutter 0.5 and the theming updates, so doing anything at the moment doesn’t feel right, although it would demonstrate so many new things since the last video was made. So, I promise that by the next entry I will have a new screencast ready, bugs or not, and I might even add a little bit of a commentary too :)

    Well its been a little while between updates so I thought I should pop something up. Gloss has been moving slowly, but steadily, forward. I took a break from coding / technology for about a month when I visited Singapore and have been a bit slack getting back into things. That said, they’re well and truly back on track now.

    There’s no screencast from Gloss today as most of the work has been happening under the covers and visually very little has changed since last time. I can happily say though that most of the features that were shown in the last screencast are now actually working propoerly rather than just working long enough to do a demo :)

    The video player had some performance tuning done to it as the large use of textures was having an impact on video and transition framerate. All textures are now being dynamically add/removed as needed rather than just sitting there once the module is loaded. I’m also currently in the process of making this module be able to navigate a file system in an aesthetically pleasing manner. If anyone has suggestions on how best to do this, please let me know, what I think I have is OK, but maybe limited for some peoples needs.

    The TV module has taken steps towards improving its very dodgy file buffering system. Gstreamer is currently reading directly off the socket and whilst this is working and exactly what I wanted, I’m having ‘difficulties’ (To put it mildly) convincing gstreamer to buffer enough data. In the end I fear I’m going to have to move to a custom made pipeline, which I always knew was going to be the case, but I dreaded doing it.

    From a program ‘maturity’ point of view, all modules are now fully pluggable, meaning that they are dynamically added at runtime etc. Everything that the program does (Including the actual TV playback) exists as a discrete module, using the shared Gloss resources (Eg input mgt, video controller etc) where required, but otherwise living in its own world. This was a big step towards making it simple for new modules to be added in the future.
    The only other minor change of interest is a splash screen. This is hamstrung a little bit by some threading issues that I should hopefully be able to fix with the newest SVN of Clutter, however due to the large number of changes occurring on their trunk at the moment I am holding off on this front.

    So that’s about it for now. Expect a new screencast with some funky cover viewer effects in the very near future.
    P.S. I’ve also submitted a proposal to do a brief introductory talk about Gloss at the multimedia mini-conf at linux.conf.au in January, so here’s hoping that comes through.

    So time for another Gloss update. I’ve put in a lot of effort lately to adding new feature so its highly unstable at the moment but most of the things that were working continue to do so and there’s even been the odd bug fixed.

    As far as new features go, the big ticket items are:

    • A video plugin! Its been under development for a little while but now its in place and seemingly working, albeit rather buggy
    • Full screen video now works.
    • All video playback now runs through a central controller that ensures a consistent on screen display

    It doesn’t sound like much but there’s been a bit to get it all running together. I need to pause now I think and start fixing bugs. The final big plugin to be written is an audio player which hasn’t even been started at this stage.

    As usual, the screencast is up on YouTube:
    YouTube Preview Image

    Well as promised I’ve produced a second demo screencast for Gloss. It doesn’t contain everything I’d wanted to get in it as many of these features simply haven’t been finished.

    I’ve been struggling a lot with gstreamer and bending it to my will. This is shown by the simple fact that the videos shown in the screencast are not fullscreen, nor do they feature a deinterlacer (Something that is absolutely required for DVB transmissions). The TV stream that is shown however is live and being streamed across a wireless network from my main myth backend.
    So without further stalling, enjoy:

    YouTube Preview Image

    More Gloss

    No comments

    Well things have been progressing on the Gloss front, not with massive steps, but constant. I’m hoping to have a second webcast up later this week that will demo the new features such as Live TV and DVD watching.

    Gloss has also been given a more permanent home on Google Code. It can be found at http://code.google.com/p/gloss-mc/ and has an SVN repo that is getting about 1 revision a day at the moment. It also has a set of instructions for getting it up and running on Ubuntu. These instructions require further testing so if anyone wants to try them out and let me know how you go I’d appreciate it.

    I’ve also made the decision the make Gloss purely a drop-in replacement for Myth frontend. Its now heavily reliant on a Myth server being present as it will look for both the MySQL db and a backend server for Live TV. With these changes a lot of the nasty hardcoded paths and things have been removed and if you run Gloss on a machine with that is already setup as a mythfrontend, it should pickup the relevant config files for your server.

    So here’s what’s been done since the last post:

    • VERY basic implementation of the Myth backend/frontend streaming protocol. Doesn’t yet have the ability to change channels etc, but DOES show live TV over a network. Its also using a very ugly buffering method that will have to change in some way, but I’ve been unable to get gstreamer reading directly from a tcp socket so its all I’ve got so far.
    • DVD player module. Very early stages. Can play chapters but no menus etc
    • Slideshow module is now nearly complete. It can also reference mythgallery settings for paths and also play music over the slideshow
    • Video module is started. Pulls video metadata from the Myth DB and display covers etc but palying is pretty raw
    • ‘Rolling’ menus. Previously a menu would simply show as many items as it contained which could lead to items being offscreen. Now the menu display size can be set and when moving onto items that are not shown, the menu will ‘roll’ to bring them into view. Still a little buggy though.

    The next few things I’m hoping to get done are more media centric. I want to get the functionality into the modules before I start going around polishing things up. So the TODO list goes:

    • Channel changing of live tv. Shouldn’t be too difficult but requires cleaning up of the protocol code.
    • On screen display. I want to try and use a universal OSD that can be used across modules for pausing, skipping etc. Its getting to the point where this is needed.
    • Advance the video player module a bit. Its currently very rough and incomplete (Mainly because I got a little bored with it) but shouldn’t take much to get it functional. I’m just a little unsure of how I want the interface for this to work at the moment.

    So anyway, that’s where things are today. Like I said, hopefully there should be another screencast later this week.

    Well its been a while between updates, things have been out of control busy (You know, getting engaged and all), but I have been keeping busy.

    A little while ago I discovered the Clutter project which is a OpenGl accelerated 2D framework for linux and decided that I’d have a crack at producing something with it. Seeing that I’d always wanted to learn a bit of Python and there were appropriate bindings, I dived in.

    So, I give you Gloss, a basic but fairly pretty media centre type frontend. Currently its not a frontend to anything and its pretty buggy, but checkout the screencast below and it wil give you a rough idea of where the project is heading:

    YouTube Preview Image
    Ideally this will get hooked up to something like Myth, but thats a fair bit down the track at this stage.

    This picture was posted on the Linux Australia mailing list today and I thought it was great:

    Its a scratchy that has been issues by South Australian Lotteries, the official site for which is http://www.salotteries.sa.gov.au/games/InstantScratchiesType.aspx?p=73

    I guess someone just went looking for a good looking penguin, comforting to know that Tux is the first one they found (Or at least the best one). If there’s anyone in SA who feels like sending me one of these, I’d love to have it, I’d somehow feel that it would have to be lucky, even if there are another billion of them floating around