Difference between revisions of "Mac OS X Porting - Native Audio and Video"
(→Design) |
|||
Line 125: | Line 125: | ||
sal_Int16 Player::getVolumeDB() | sal_Int16 Player::getVolumeDB() | ||
− | Other methods to be implemented ? | + | [FIXME] Other methods to be implemented ? |
Done (using existing Windows implementation) : | Done (using existing Windows implementation) : | ||
Line 131: | Line 131: | ||
- usefull functions are identifed in Apple's API | - usefull functions are identifed in Apple's API | ||
+ | Found in System/Library/Framework/QuickTime.framework/Headers/Movies.h : | ||
+ | |||
+ | '''DisposeMovie()''' | ||
+ | Frees any memory being used by a movie, including the memory used by the movie's tracks and media structures. | ||
+ | '''EnterMovies()''' | ||
+ | Initializes the Movie Toolbox and creates a private storage area for your application. | ||
+ | '''GetMovieDuration()''' | ||
+ | Returns the duration of a movie. | ||
+ | '''GetMovieRate()''' | ||
+ | Returns a movie's playback rate. | ||
+ | '''GetMovieTime''' | ||
+ | Returns a movie's current time both as a time value and in a time structure. | ||
+ | '''GetMovieVolume''' | ||
+ | Returns a movie's current volume setting. | ||
+ | '''IsMovieDone''' | ||
+ | Determines if a particular movie has completely finished playing. | ||
+ | '''SetMovieGWorld''' | ||
+ | Establishes a movie's display coordinate system by setting the graphics world for displaying the movie. | ||
+ | |||
+ | [FIXME] not complete | ||
+ | |||
+ | |||
[To be continued] | [To be continued] | ||
Line 136: | Line 158: | ||
- discuss with ka about new implementation and fix dark points | - discuss with ka about new implementation and fix dark points | ||
- new implementation of -already defined- methods used in the player | - new implementation of -already defined- methods used in the player | ||
− | |||
===Component Context=== | ===Component Context=== |
Revision as of 20:11, 18 September 2006
Contents
Contributors
Eric Bachard (ericb aat openoffice dot org )
Introduction
Page under construction
Work started discussing with Kai Ahrens (author of avmedia). As adviced by Kai we will reuse Windows implementation (copied/pasted from Kai's mail):
"... Beside the 'common' avmedia part, that is the same on all platforms and used from the high level application side, there are several backend (actually two, one for Windows and one for JMF backends) implementations already realized or to be realized like a Xine, GStreamer etc. backend..."
"...What you did so far, is absolutely the right way. Taking the existing Windows implementation and fill it with the appropriate Quicktime or whatever pieces. After finishing your new backend you should adjust the code in MediaWindowBaseImpl::createPlayer (avmedia/source/viewer/mediawindowbase_impl.cxx) accordingly to get your new component initialized instead of the existing ones.
Having a 'status' struct is already realized within mediawindowbase_impl.cxx and the corresponding methods MediaWindowBaseImpl::updateMediaItem and MediaWindowBaseImpl::executeMediaItem , I think, but maybe I didn't get you right here.
Please feel free to ask if you have any detailed questions.
With best regards Kai"
Important links
Starting point : http://developer.apple.com/documentation/QuickTime/APIREF/index.html
http://developer.apple.com/documentation/QuickTime/APIREF/MovieFunctions.htm
- Complete list of usefull functions :
http://developer.apple.com/documentation/QuickTime/APIREF/GettingandPlayingMovies.htm
Design
Use Radek Doulik and Cedric Bosdonnat work
OOoCon presentation : http://eric.bachard.free.fr/mac/OOoCon2006/GStreamer-in-OpenOffice.org.odp
Concerned module : avmedia
The native sound implementation will use already existing windows implementation as model, replacing current avmedia implementation.
[work in progress]
Todo list :
Use existing windows iimplementation.
1) Create new tree in avmedia :
avmedia/source/macosx
Containing :
new makefile.mk
C++ files ( not sure, to be confirmed ) : macosxframegrabber.cxx, macosxmanager.cxx, macosxplayer.cxx, macosxwindow.cxx, macosxuno.cxx
headers will be put into avmedia/inc
(confirmed : is avmedia/inc the best place ?)
macosxframegrabber.hxx, macosxmanager.hxx, macosxplayer.hxx, macosxwindow.hxx, macosxuno.hxx, macosxplayerhelpers.hxx
2) Other modifications :
avmedia/source/xine/makefile.mk
-> not build libxine if defined QUARTZ (maybe MACOSX ?) -> just adding a dummy rule in the makefile
avmedia/prj/build.lst
-> add new part avmedia/source/macosx to be built
Space naming convention :
Use aqua for the new classes, and AquaPlayer as prefix for everything.
- create manager ( using UNO services) [ done ]
- create uno layer [ done ] - implement correct service name / implementation name using UNO [ work in progress ] - create player (using QuickTime API) [ work in progress ] Missing (to be adapted for QuickTime) :
using avmedia::aqua::
Player::Player() // Ctor Player::~PLayer() // Dtor bool Player::create() const Player::getVideoWindow() void Player::setNotifyWnd() void Player::setDDrawParams() long Player::processEvent() void Player::start() void Player::stop() sal_Bool Player::isPlaying() double Player::getDuration() void Player::setMediaTime() double Player::getMediaTime() void Player::setStopTime() double Player::getStopTime() void Player::setRate() void Player::getRate() void Player::setPlaybackLoop() void Player::isPlaybackLoop() void Player::setMute() sal_Bool Player::isMute() void Player::setVolumeDB() sal_Int16 Player::getVolumeDB() [FIXME] Other methods to be implemented ?
Done (using existing Windows implementation) : - all headers are defined - usefull functions are identifed in Apple's API
Found in System/Library/Framework/QuickTime.framework/Headers/Movies.h :
DisposeMovie() Frees any memory being used by a movie, including the memory used by the movie's tracks and media structures. EnterMovies() Initializes the Movie Toolbox and creates a private storage area for your application. GetMovieDuration() Returns the duration of a movie. GetMovieRate() Returns a movie's playback rate. GetMovieTime Returns a movie's current time both as a time value and in a time structure. GetMovieVolume Returns a movie's current volume setting. IsMovieDone Determines if a particular movie has completely finished playing. SetMovieGWorld Establishes a movie's display coordinate system by setting the graphics world for displaying the movie. [FIXME] not complete
[To be continued]
Other work in progress :
- discuss with ka about new implementation and fix dark points - new implementation of -already defined- methods used in the player
Component Context
[FIXME]
Conponent Design
[FIXME]
Ericb 19:32, 4 June 2006 (CEST)