SoC 2008/OS X Integration

From VideoLAN Wiki
Jump to navigation Jump to search
This project is part of Google Summer of Code 2008.
Student: Eric Dudiak
Mentor: Felix Paul Kühne

Mac OS X (Leopard) Integration


Unlike Windows and Linux, Mac OS X does not offer much in terms of alternatives to its built-in QuickTime media player. VLC media player represents the only Mac media player with significant support for various media formats and a tight integration with the OS, including a "Mac-like" user interface. As it is the only full, viable alternative to QuickTime on the Mac OS X platform, it is important that it stay current with various Mac technologies to offer users a comprehensive option for media playback.

Aspects of tighter Mac OS X integration:

  • Quick Look Generator for Leopard (to generate thumbnails and full media previews from the Finder)
  • Making most common preferences accessible in a Mac-style preference window organized with icon tabs across the top such as in Safari and Mail.
  • Moving the Readme document and other help resources into a HelpViewer HTML document to allow better help searching in Leopard.
  • Improvements in steaming server wizard to be more in-line with other Mac wizards and easier to use for personal streaming between Macs.
  • Add better support for package files that contain media VLC can play, such as iMovie Projects and EyeTV recordings.
  • Update the VLC file icons to the 512 by 512 size for Leopard.

Detailed Description

This project will use the libraries provided by Apple for creating a Quick Look Generator. Due to various restrictions placed on these by Apple, the method for generating the live preview may use the mozilla plugin if no better alternative can be found. Creating these enhancements will require a combination of C and Objective-C. The Quick Look function should generate a thumbnail when simply browsing the Finder or viewing with CoverFlow and should provide full playback when the spacebar is pressed (which actually opens the Quick View). For those not familiar with the details of Mac OS X, Apple provides very specific models for Human-Computer Interaction (HCI) defined in documents on their developer site. In addition to providing the Quick Look functionality, I will be attempting to bring VLC more in line with these usability guidelines. This will include updating the preferences window to have a more Mac OS X feel and organization to it for at least the most fundamental set of preferences (with the rest to be accessible in the traditional way). I will also be moving some of the documentation into HelpViewer format to allow easy searching of it directly from the menu bar in Leopard. Also, I will be designing a new Streaming/Transcoding Wizard that better matches the Mac OS X wizard look and feel, such as the in the Bluetooth Setup Assistant or Network Setup Assistant. The new icons should look more like other modern Mac OS X file icons since the current ones more closely resemble icons found in the Mac OS X Public Beta. These new icons should be included for several of the formats that are newer to VLC (and were not supported when the old icons were made) and should differentiate between types (audio vs. video) in the icon style.

Development Plan

  • Research both Apple and community documentation on Quick Look Generators.
  • Attempt to create a simple, dynamic Quick Look Generator to test the ability to create such generators.
  • Failing that, create a simple Quick Look Generator that uses a custom WebKit plugin.
  • Move to developing a Quick Look Generator for VLC that uses whichever method was more successful.
  • Create Quick Look Generator that plays at least one VLC media format (no controls yet, just basic playback).
  • Add support for additional formats.
  • Add thumbnail generation for supported formats.
  • Add basic playback controls (play/pause, possibly mute and scrubber)
  • If ahead of schedule, add support for displaying relevant metadata, such as ID3 tags for MP3 files.
  • Create new Mac OS X icon files.
  • Evaluate icons/Quick View with community and sample end users.