Thoughts and Ramblings

General things I find of interest.

Common Media Player Framework

About 3 weeks ago, Kevin (developer of NitoTV) and I decided it was a bit silly how we were each writing playback mechanisms on the AppleTV with little to no collaboration between us. So, we decided to write a Common Media Player Framework, which is licensed using LGPL. Kevin sent me the code he used for DVD playback inside NitoTV as a place to start. I stripped it down to a smaller piece, and started the framework.

Text Compression Techniques

A friend of mine develops on an Bible application for the iPhone, BibleXpress. Since his application includes several translations with the app, he once mentioned to me the possibility of compressing them to save space. Any compression that is done must achieve a good ratio, but more importantly, decompression must be fast. I took it upon myself to find a compression algorithm that could fit the bill. In my test case, I worked with the NASB translation of the Bible.

Using Newer Subversion in Xcode

I use MacPorts to get a whole host of utilities. In addition, I’ve always used it to obtain later versions of subversion that the one provided with the OS. Xcode, on the other hand, is locked into using the version of Subversion which is installed in /usr (currently version 1.4.4 where as I have 1.6.3). Since I often work in the command line, eventually I will use the newer version of Subversion on a directory which I also use in Xcode.

Working With Core Data

When I redesigned Sapphire, I decided that the metadata back end would be best served by Apple’s Core Data Framework. While the framework has a lot of power, several shortcomings in the implementation hindered its potential. First, I should start with the many things that Apple did correctly in Core Data. The whole data model with relationships and properties is quite powerful. With this data model, one can represent many data sets in a simple manner, such as the example below: core-data-model This example shows part of the data model within Sapphire pertaining to TV shows, where a TV shows contains multiple seasons, each of which contains multiple episodes.

AC3 Passthrough Compatibility Matrix

Since some parts of AC3 passthrough work, and others do not, I decided to create a bit of a compatibility matrix to summarize it. I’ve added the related bug id’s I’ve reported, which have gone unanswered, in parentheses. The latest version of perian (to be released soon), will choose between using the hack method for passthrough, and Apple’s method. Anywhere labeled “Hack” will never work with Apple’s method, so it is bypassed to avoid their broken code.