ADC Home > Reference Library > Technical Q&As > QuickTime > Movie Basics >
|
Q
I can't find documentation for the SetMovieDefaultDataRef function.
What does it do, and how do I use it?A SetMovieDefaultDataRef is defined in Movies.h as:pascal OSErr SetMovieDefaultDataRef(Movie theMovie, Handle dataRef, OSType dataRefType);
It allows you to control where data will be written to when added to a movie. For example, if a movie was loaded from a file, the default data reference is initialized to be the file from which the movie was loaded. This example will set the default data reference to be a handle in memory:
OSErr ConvertGeneralMIDIToSoundTrack (void)
{
OSErr err = noErr;
StandardFileReply reply;
short refNum;
long logicalEOF;
Handle dataHandle = nil, tempHandle = nil;
Movie theMovie = nil, tempMovie = nil;
// Specify the General MIDI file to import
StandardGetFilePreview (nil, 0, nil, &reply);
if (reply.sfGood)
{
// Open the data fork and suck everything into a handle
err = FSpOpenDF (&reply.sfFile, fsRdPerm, &refNum);
err = GetEOF (refNum, &logicalEOF);
dataHandle = NewHandleClear (logicalEOF);
HLock (dataHandle);
err = FSRead (refNum, &logicalEOF, *dataHandle);
HUnlock (dataHandle);
FSClose (refNum);
// Create a new movie in memory, set its default data reference
// to be a handle
tempMovie = NewMovie (newMovieActive);
tempHandle = NewHandleClear (4);
SetMovieDefaultDataRef (tempMovie, tempHandle,
HandleDataHandlerSubType);
DisposeHandle (tempHandle);
// Paste the handled data into our movie
err = PasteHandleIntoMovie (dataHandle, 'Midi', tempMovie, 0, nil);
// Save the movie out to a flattened file
StandardPutFile ("\pSave MIDI to:", "\pMIDI movie", &reply);
if (reply.sfGood)
{
theMovie = FlattenMovieData (tempMovie,
flattenAddMovieToDataFork, &reply.sfFile, 'TVOD',
smCurrentScript, createMovieFileDeleteCurFile);
}
}
return err;
}
This method works fine as long as you have enough memory, and don't want to save
the movie to disk. To put data into a file, call this function in order to pass in an
alias to the file as the data reference and
[Mar 14 1997] |
|