Development and design of video features for iChat & Photo Booth.
One new feature introduced in Mac OS X 10.5 was called "iChat Theater." The concept of the feature was simple: allow users to share content during video conferences. The feature allows users to share their slide shows, presentations, and movies with their friends in real time, without transferring any files.
It has a simple workflow and an attractive design, with your friend's video in the corner and the shared content in the main window.
There is one slight problem with the design, though. While viewing a slide show using iChat Theater, there is no way to advance through the slide show. A secondary window is also visible that provides a preview of the shared content, and provides controls in a tool bar.
Altogether, with both windows visible, the UI is cluttered with more windows, and a significant amount of information is duplicated over both windows. The interface ends up being confusing to users, since control is shared between several applications and interfaces.
For Mac OS X 10.6, I took another look at the feature to see if any improvements could be made. The result is a simple toolbar that takes the elements out of the secondary window that are duplicated from the main window.
The new toolbar was small enough that it could be moved into the main window without any additional modifications.
The result is a simple, elegant toolbar that centralizes the iChat Theater feature into already-existing video chat window. For users, the feature is simpler to understand and to use, and window clutter is reduced.
On top of that, the new toolbar has been made available as public API. Any Mac OS X application is already capable of providing video content for iChat Theater. The new API allows them to specify controls so that the content can be directly controlled from iChat. I presented this new API, called IMAVControl, to developers at Apple WWDC in 2008.
In Mac OS X 10.5, a new feature was added to Photo Booth that lets users record movies with one click. Its implementation, however, performs slowly on some hardware and was based on technology that was going to be obsolete by the time time the next operating system was released. For users, the problem was that recording was not performing as well as it could, and recordings were sometimes of poor quality.
For Mac OS X 10.6, I rewrote the video recorder in Photo Booth to take advantage of newer technology. To do this, I had to work closely with video engineers at Apple to figure out how to adopt this newer technology, and to build in any improvements I needed. I had to learn how compression/decompression software worked and how to write it in software.
One requirement of the feature was that the interface should not change. There are several approaches to recording video, but Photo Booth's interface implies several technical challenges as compared to other interfaces.
The feature is accessed via a button switch in the lower left hand corner.
Upon clicking the red button in the center, the application counts down and starts recording a movie.
While the video is being recorded, a timer shows the duration of the movie. The user can press the stop button to finish the recording.
The user can immediately play the movie back directly in Photo Booth.
A significant amount of effort goes into the feature to make sure that it's invisible to the user. No options are provided for codec, bit rate, resolution, or any other recording features. There is simply one button to push, and the recording is ready immediately when the stop button is pushed. The real-time recording requirement is among the most difficult problems to solve, particularly when the computer is processing image effects.
Additionally, the new components work in a 64 bit environment, and take advantage of graphics processing hardware that the previous component could not.
My reimplementation of recording was lean, fast, and flexible. It was later used for the based of audio/video recording in iChat, and was the first major example of the new components in use by a real application. For users, recording works better while using the same interface.