Something I have been playing with recently is an IDE and language called REALbasic. This caught my attention as using REALbasic makes it incredibly easy to develop multi platform applications, however, it is not without limitations.
I must say the IDE it self is very impressive, clean and easy to use. The first application I’ve been using to test REALbasic on is one to connect to a SOAP API. REALbasic does come with it’s own SOAPMethod but a quick look at the language reference shows that you can only pass Strings when invoking methods. As the SOAP API I work with requires integers in almost every method I had to work around this limitation.
If you can’t use the built in SOAPMethod create your own. As SOAP is effectively XML communication you can build your own XML requests and interpret responses quite easily. All you need to do is work out the format of the XML requests and then send whatever requests you want over a HTTPSocket.
I found the easiest way of discovering the XML request format was to packet sniff a working call. I used Ethereal to monitor a SOAP request made in another application and grabbed the correct format from this. Now it was just a matter of passing this as a String to a HTTPSocket in REALbasic. You receive the response from your request in the HTTPSocket’s PageReceived event as "content".
From here you can read the content into an XMLDocument and then use XQL to search for the needed result. Overall I had to do things the long way round but it does work very well.
Right, thought it was about time I started a blog of my own and I’m going to begin with something that I am now immensely happy with. Streaming high def high bit rate 1080p video from any location on my home network to my HD TV all with 6 channel surround sound.
So.. How is this possible?
First you need something to play it. The easiest option for me was to use one of my Xbox 360s. In case you were unaware since a recent update applied automatically over Xbox Live your Xbox can now stream just about any type of media over a home network. However, there are certain restrictions and it has been these which I have been struggling with for some time. See here for more info on what the Xbox can now handle.
When you’re dealing with 1080p content I have found you can not really go lower than 8mbps for your video data rate otherwise you start losing picture quality. The trouble with the Xbox 360 is that only 2 video profiles it supports can handle this and unfortunately the most popular of these (H264) you can only combine with 2 channel audio. Now for me losing surround sound is not an option. This just leaves us with WMV and 5.1 WMA.
Now this immediately put me off streaming anything to the 360. I did not particularly want to use the WMV format and especially WMA as I had no idea how well it would output to my Dolby Digital decoder. Not only this but I could write a book on how much of a pain it was trying to find out how to successfully encode ac3 (Dolby Digital) tracks into 6 channel WMA. Not easy.
Any way after about 2 weeks of playing with video and audio encoders I have now pretty much mastered high definition surround sound WMV encoding of just about any source format. But does it decode into surround sound??!? If you have yet to try it the answer is yes, I have found it does. If you stream your WMV / WMA 5.1 files to the 360 and output audio via optical cable all of my DD decoders interpret this as Dolby.
My advise if you are trying to stream to an Xbox 360:
Take the pain and learn how to encode WMV’s. Once you’ve got it right you get fantastic quality hi def video and 5.1 WMA’s work perfectly fine.
Learning how to encode? One of my favourite sites: here.