SoC 2007 Project Mac OS X Framework
|This project is part of Google Summer of Code 2007.
If you wish to use the framework refer to the Mac OS X Framework wiki page
More information in my original Proposal.
The simple test app that links to VLC.framework is able to play a given video just fine.
I have been re-working libvlc, so that the OS X framework can be a nice umbrella over it. A vlc application could be rewritten without the need of any other VLC interface than LibVLC.
I have implemented a master-detail-view interface a-la iTunes using Cocoa Bindings, and the framework. It may be a good candidate to replace current VLC.app but it still need a lot of work. Main advantages are code base is very light. It is easily modifiable. It makes uses of Bindings (with its pros and cons).
So far I didn't complete some of my objectives for the Google Summer of Code:
- Some functionality of the framework such as media transcoding, (config) preferences tuning, and vout filter are not implemented.
- The web plugin does not take
|Task Description||Due Date||Accomplished|
|My proposition has been accepted||N/A||Yes 12/04/2007|
|Work on setting up a git server to publish my work.||15/04/2007||Yes 13/04/2007|
|Implement the stub framework and the sample code that links to it.||15/04/2007||Yes 13/04/2007|
|First draft of the headers, plus partial implementation. Events, playlist, vout basic usage demo in the sample code.
|Event structure in place in MediaControl.||no due date||Yes 29/04/2007|
|Auto evalutation, keeping in mind my original Proposal: Would current VLC be able to work with the object defined? Is there any simplification possible? What changes to libvlc are needed?.||29/04/2007||Yes|
|Make delegate callback (events) get called on main thread.||6/05/2007||Yes 03/05/2007|
|Implement my RFC on libvlc (v2).
The RFC v2 is partly implemented. And the work is now on a RFC on libvlc playlist.
|Implement Meta data in VLCMedia.||?||Yes 10/07/2007|
|Implement my new RFC on libvlc playlist.
media_list, media_list_player, media_library, media_discoverer are implemented.
|First draft of Media Library object.||?||Yes|
|First draft of Dynamic playlist object.
for now. We can use the bindings facility plus NSPredicate to imlement that.
|?||No - dumped|
|First draft of transcoding objects.||?||No - not completed for SoC|
|First draft of picture effect objects.||?||No - not completed for SoC|
|First draft of preferences objects.||?||No - not completed for SoC|
|Have VLC/Mac OS X use the Framework.||?||No - VLC.app is implemented, this is a rewrite from scratch, but we still need to get some of the old code back.|
|Make VLC work without interface. (and remove VLC Cocoa hack from core)||?||Yes - already works without intervention.|
|End of the Google summer of code||N/A||20/08/2007|
|Merge the code in trunk, and preserve old VLC.app.||?||No|
- Rename VLCMovieView to VLCMediaView
- Use a 1 sec time frame for the DidChangePosition
- Make mediacontrol uses libvlc
All the code I did for the GSoC is publicly stored on VideoLan's svn trunk (libvlc related changes) and VideoLan's Git Repository for GSoC on the pdherbemont_branch branch. To check it out:
$ git clone git://git.videolan.org/vlc-soc.git $ cd vlc-soc
Now get my branch in a new local osx_framework branch:
$ git checkout -b osx_framework remotes/origin/pdherbemont_branch
And to keep sync-ed, tell git to use remote pdherbemont_branch for osx_framework.
$ git config branch.osx_framework.merge refs/heads/pdherbemont_branch
And tell git the remote repository is named origin.
$ git config branch.osx_framework.remote origin
Now a simple:
$ git pull
Should be enough to get synced.
Building the framework and the test app
- Build VLC as usual. see How to build VLC on Mac OS X.
- Build the framework
$ cd extra/MacOSX/Framework $ make
- Now open extra/MacOSX/Framework/Examples/test/test.xcodeproject with Xcode
- hit command-R