In response to a comment about the LightSampleTest not working, I fixed it and released Platinum 0.3.1. It actually made me realize that the Renderer Test was probably not working in 0.3.0. So that’s good news, it’s all fixed! I also removed all old source code and project files so as to not confuse people. I’ll try to fix/update the HttpClient and HttpServer Tests when I have more time.
-s
Well now that v0.3.0.0 is out, here’s what is in the pipeline:
– Improve Http server with a threadpool to throttle number of connections that can be handled in parallel. Without it, this is becoming a big problem since I only support HTTP 1.0 right now.
– Fix the crash I am seeing on my home machine which I believe is due to a corrupted version of .NET 2003 (How could this happen!!).
– Add Search support to MediaServer (possibly integrate sqlite and start building a small local database).
– Better support for MediaServer update/eventing.
– Make MediaServer visible/accessible to the XBox 360 (almost there already but I need the Search support otherwise it’s a hack).
If time permits:
– Add transcoding capabilities to MediaCrawler.
– Look into DLNA + UPnP v2 specs.
Today I published the latest and greatest of the Platinum SDK. Among a bunch of fixes and improvements, the main cool new thing is full support for Mac OSX (and Linux obviously) thanks to the little Mac mini I bought K. a couple years ago. So the SDK is now available for Windows, Linux, Mac OSX, XBox, PSP. I am also working on some linux-based embedded platforms (gp2x, chumby, …).
Here’s the changelog I put together:
Platinum 0.3.0.0
—————
Fixes/Changes:
– Added MacOSX support.
– Fixed socket abortion problem on Linux (using a pipe).
– Complete rewrite to use threads instead of interrupt driven round-robin. The benefit is that throughput is now greatly improved (for streaming especially).
– Addded a new App: MediaCrawler
– Split up AV MediaServer code. Now the FileMediaServer is one implementation of the AV MediaServer. More to follow.
– Added README, CHANGELOG, LICENSE files
Known issues:
– AV MediaServer Search not implemented yet.
– Http server does not use a thread pool. This can be a problem with hungry ControlPoints like the Intel Tools AV MediaController.
Platinum v0.3.0.0 is around the corner. The new version now supports true multithreading. No more round-robin man-made time sliced threading scheduler crap! While it was cool to have a pure pull system, it had a terrible throughput. Streaming files was terribly slow because I was only checking socket availability/status every 10ms (which means more like 100ms on Windows). So throughput was always capped to a ratio buffersize / sleep time. Anyway, this is all fixed. The Web server is screaming fast now (faster than the Intel Tools!)
More exciting features and bug fixes too!
Finally, this week-end, I was able to find the crazy memory leak that had crippled XBMC. JMarshall was able to constantly reproduce it by connecting his laptop to the same network the xbox was on. Finally, a few ethereal dumps later, I found out that he was running ICS on his laptop and that ICS would respond to the XBMC UPnP M-SEARCH requests that it sends every 6 secs. So it had to be that the response was causing the leak. Of course, somehow it took me 1h to figure out how to set up ICS (you need 2 active network adapters to even see the option in XP!). Even after setting it up, it wouldn’t respond to the M-SEARCH requests for me. Instead, I was able to see what would happen when ICS go alive (and catch the NOTIFY) using the Windows version of Platinum.
After hitting a pretty big race condition bug (2 threads accessing the same device list), I assumed the leak was there. While I was talking to GeminiSer on irc describing what I found, I was also stepping through the code as it was receiving the Device Description and SCPDs and then I saw it. Right there, the leak. Somehow, I made asumptions that the SendEvents attribute in SCPDs was required and was bailing out of my parser when it couldn’t find it. Of course, I was not cleaning up the dom tree in that case!
Now I don’t know if SendEvent is optional but in any case, it’s the first time I see this problem. In any case, the latest xbmc t3ch release is leak free at last!
Ok I have had one comment asking me about this and I responded but it’s worth its own entry so that I don’t have to repeat myself:
Even though Rhapsody is a UPnP Server, they actually use a DRM on top of it. A secure protocol must be established between a device that wants to stream from Rhapsody and Rhapsody for it to let it stream the content. The content is encrypted when it is being streamed to the device and only the device can understand how to decrypt it. A similar but different method is used by Windows Media Connect to stream protected content to ‘compatible’ devices. (A similar method is also used by iTunes and the airport express although this has been hacked).
XBMC cannot and will most likely never (legally) stream Rhapsody content, Windows Media protected content or any Premium content acquired on a Music store for that matter. The reason is that being open source, it cannot meet the robustness requirements imposed on device manufacturers by the Rhapsody service or the WMDRM-ND spec (which is what WMC implements to let you stream to compatble devices content acquired on other stores like Yahoo or Napster).
Sorry.
ps. On the flip side, if you wish to use Platinum in your device and wish to support Rhapsody, this is totally possible (and already supported) if you wish to get a commercial license for Platinum. I released it under a dual license (GPL for open source projects and Commercial for closed source projects). Please contact me directly here for more info.