QuickTime (Part 3)

Background

I have an iBook G4, that has a 32 meg Radeon 9200 mobile video card, that is below the minimal requirements for CoreImage. Technically CoreImage is supposed to be scalable, and if it can’t do a particular efffect on the video card GPU, it should try doing it on AltiVec unit of the processor, and, in event that the system lacks an AltiVec unit, it should fall back to the CPU.

In reality lack of CoreImage support doesn’t cramp one’s style all that much. I miss some graphical features of the GUI, which is cosmetics. However, occasionally it interferes with productivity, and pisses me off.

Consider the following example:

QuickTime 7 Pro and video adjustments

QuickTime have been coming in “free” and “pro” variety for a long while. The features that 29.95 USD Pro version has are numerous, but amongst the most notorious are:

  • ability to save some of the streamed media to hard drive
  • ability to export files to different formats
  • ability to do some rudimentary merging of video tracks using cut and paste
  • ability to adjust brightness, tint, contrast and colors of the video
  • ability to correct audio balance, etc.

All of the above features work reasonably well under QuickTime Pro 6.5.2, although color corrections are rather clunky and are represented as a slider on screen. However you can see the adjustments as the movie plays. Here is what it looks like (220K).

Tiger came with QuickTime 7, and once I entered the QT7Pro license key, one of the things that didn’t work on my iBook was color corrections. Apple-K presented me with options to modify the audio settings, but not the video settings.

Technically you can get video adjustments to work by performing the following steps: Export -> Options -> Video Filter and doing a bunch of adjustments there, however there is no fun in waiting for a few minutes in order to see if your guesswork was correct.

This is Broken[TM].

So I did some digging. Inside QuickTime Player.app there are two files: AvControls.nib and AVcontrolsMinimal.nib. One gets used when the system detects CoreImage supported video card, and the other one when it doesn’t.

My hypothesis was that if I were to swap the two around, I’ll get access to video controls:

First I copied QuickTime Player to a different directory, and then dropped to command line:

stany@gilva:~[05:11 PM]$ cd /Applications/extras/QuickTime Player.app/Contents/Resources/English.lproj/
stany@gilva:/Applications/extras/QuickTime Player.app/Contents/Resources/English.lproj[05:11 PM]$ ls -dal AV*
drwxrwxr-x   5 root  admin  170 Jun  5 08:09 AVControls.nib
drwxrwxr-x   5 root  admin  170 Jun  5 08:09 AVControlsMinimal.nib
stany@gilva:/Applications/extras/QuickTime Player.app/Contents/Resources/English.lproj[05:11 PM]$ 
stany@gilva:/Applications/extras/QuickTime Player.app/Contents/Resources/English.lproj[05:14 PM]$ sudo /bin/bash
Password:
root@gilva:/Applications/QuickTime Player.app/Contents/Resources/English.lproj[05:14 PM]#  
mv AVControls.nib AVControls.nib_ && mv AVControlsMinimal.nib AVControls.nib && mv 
AVControls.nib_ AVControlsMinimal.nib
root@gilva:/Applications/QuickTime Player.app/Contents/Resources/English.lproj[05:14 PM]#

After adjustment, on a non-CoreImage enabled system Apple-K menu looked like this.

Sadly, under Tiger the sliders for video correction still do not work, as they are dependent on CoreImage. However, I wonder if they do work on Panther (10.3). If they do, then likely this is the solution that would work for folks who haven’t upgraded yet. You see, there might be a reason to be a struggler. Comments, please.

Lastly, I wanted to give my modified version of QuickTime Player.app a different version string, so that I could see it when I ctrl-click on the movie, and select “Open with”. In order to do that, I ctrl-clicked on the QuickTime Player.app, and selected “show package contents”. Inside Contents folder, I’ve opened version.plist and Info.plist in Property List Editor. In Info.plist Root, I’ve changed CFBundleGetInfoString so that I know it was changed by me when I get info on the application, CFBundleShortVersionString and CFBundleVersion both to 7.0.1-stany and saved Info.plist. In version.plist I’ve modified CFBundleShortVersionString and CFBundleVersion to match the changes I did in Info.plist, leaving the rest of the properties the same.

Now, If I ctrl-click on a file QT recognizes, and scroll to “Open with”, it looks like this.

Last paragraph is the usual step needed to change a version of any application as recognized by the operating system. I should probably do something like this to all of those pesky Real Players, that I’ve been dealing with.

In closing, inside Info.plist it’s also possible to adjust the filename extensions and the icons that QuickTime is supposed to be able to handle. So you can rename your .mp3 files to, say, .jd, and associate just QT with these files (Barring presence of resource fork, etc, of course).