It's well past time for another update, and of course, the project is well into overtime at this point. I comfort myself that, of the 31 Kickstarters I've backed myself, most are running this late or later, but truthfully I'm still pretty bugged by it. I have made a little progress, though, and I hope things are getting enough less crazy for me personally so that I can make some major steps forward soon.
There are several comments and messages I haven't read yet -- I will go through those and try to respond to any that aren't covered here.
I have been focusing my effort on the player software, although I did do a little bit of work on design issues relating to localization.
It became clear that there were some major problems with the code I was developing before, and I decided to start over, importing the bits I needed. Unfortunately, my Subversion skills are limited, so I did this on-disk, and I haven't published it yet. After I get back from taking the kids trick-or-treating, I'm going to see if I can't create the new branch in the SVN and bring it up to date. This may take me a little time, but it should be up tomorrow or so.
At this point, I have gotten past the main technical obstacle of manipulating both the HTML menus and the VLC-based video playback and getting them to switch back and forth. In other words, I can successfully playback the menu of my test Lib-Ray image and return to menu after playback. All of this is currently under keyboard-controls. Implementing controls through the keyboard is the logical first step, because it's simple and works on general-purpose computers, and because many infrared remotes work by emulating keyboards (some others work through a different protocol which will be added on later).
LibVLC effortlessly solves the problems associated with MKV, VP8, FLAC/OGG, and ASSA integration, so I can't exactly take credit for the fact that video playback with subtitles works exactly as it should -- but it does do that. I did set up the control methods to switch subtitles and so on.
The test fixture I'm using is a very small Lib-Ray image with the "Big Buck Bunny Loves CC" clip produced for renderfarm.fi. It's By-SA licensed, so I can distribute it. It is awkwardly large (much larger than the player code), as any video file long enough to be a useful test is bound to be, so I've decided to create a separate "Lib-Ray test fixture" download / directory so it doesn't bloat up the source tree.
The documentation for LibVLC and the Python module "vlc" is pretty straightforward. Working with Webkit is a little more frustrating -- pywebkitgtk is not nearly so well-documented. However, there are examples to work from around the web, and I've been studying those for help.
The current Webkit challenge is just to hook up to the navigation policy callback correctly. Lib-Ray is not supposed to allow direct-linking off of the disk without an explicit OK from the user, and we need a policy control in our embedded browser to make sure that's how things work.
The other aspect under development is a correct object-model for the Lib-Ray environment itself. The test code works with the test-fixture, but still has lots of hard-coded paths and URLs and they aren't very consistent. All of this will need to be replaced with calls to the 'model.py' module, which will correctly translate URL and path references to the player menu area, volumes archive, and the currently-mounted Lib-Ray volume. This is what I've been working on in the last week.
One piece of the standard I was not entirely sure about was how exactly to do menu localization. HTTP provides a way to serve entire web-pages based on the language of the requesting browser, but that would be a very clumsy solution for Lib-Ray. What we mostly want is something that just substitutes button names and can provide alternate labeling.
I may wind up with a bit of a hybrid solution on this, but the method that seems nicest is to simply label buttons using a limited vocabulary. We'd need something like this:
<a href="?play=1" id="PLAY">Play</a>
The 'href' target is the part that is understood by the player software (this is actually a relative URL with an HTTP GET variable). The text inside the tag is the default value -- what would appear on screen in a regular browser, and what the Lib-Ray menu browser will show when translation is turned off. But when translation is being used, the browser would read the 'id' attribute, look that up in a table, and provide the correct word in the user's preferred language.
I'm still working through a lot of details in the code, and it's very hard to say exactly when it's going to be "ready". I expect to be writing some more updates in the next few days as I upload and/or check-in more of the work. There are also some other issues I need to address -- such as sending out the questionnaires for reward fulfillment and so on. At this point, I'm not sure just how long all this is going to take, so I'm not going to make any rash promises about that just yet.
I had posted earlier about the possibility of bringing someone else in on the project to help with the programming. It was a nice idea, but it didn't quite pan out. So I'm still working on this myself. On the other hand, I got through the roadblocks I was looking for help on. The present problems are quite a bit smaller -- I have good references on the navigation policy stuff.
Finally... it's Halloween today. So here's a Jack O'Lantern made from an old CD-ROM to brighten your day (probably would've been more appropriate if it were a 'obsoleted' Blu-Ray or something, but it's really just a CD-ROM)...