Retired Document
Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid.
Movie Import Components - MovieImportDataRef Invoked For File Import Operations
Q: Did QuickTime 7.4 change the way Movie Import Components are called when importing from files?
A: Yes, QuickTime 7.4 changed how the Movie Toolbox invokes Movie Import Components when specifically importing from files. With the release of QuickTime 7.4, the Movie Toolbox directly calls MovieImportDataRef
with an 'alis'
(rAliasType
) Data Reference when importing from files instead of calling MovieImportFile
with an FSSpec
.
Component Developers
There are two APIs clients of Movie Import Components may call to invoke an import operation from a file; MovieImportFile
and MovieImportDataRef
.
MovieImportFile
MovieImportFile
is defined to take a File System Specification Record, or FSSpec
, as the parameter specifying the name and location of a file. Since the time MovieImportFile
was defined, use of the FSSpec
with the Carbon File Manager has been deprecated and superseded by the FSRef
.
pascal ComponentResult MyComponent_MovieImportFile(My_Globals glob, |
const FSSpec *theFile, |
Movie theMovie, |
Track targetTrack, |
Track *usedTrack, |
TimeValue atTime, |
TimeValue *durationAdded, |
long inFlags, |
long *outFlags) |
MovieImportDataRef
MovieImportDataRef
is defined to use the standard QuickTime Data Reference abstraction, this is the general way QuickTime describes the location of media data.
pascal ComponentResult MyComponent_MovieImportDataRef(My_Globals glob, |
Handle dataRef, |
OSType dataRefType, |
Movie theMovie, |
Track targetTrack, |
Track *usedTrack, |
TimeValue atTime, |
TimeValue *durationAdded, |
long inFlags, |
long *outFlags) |
Developers writing Movie Import Components should implement both selectors to accommodate both older and newer behavior. MovieImportDataRef
may be considered the designated import API and therefore MovieImportFile
can simply be implemented by calling MovieImportDataRef
as shown in Listing 1.
Listing 1 Example MovieImportFile
Component Implementation.
pascal ComponentResult MyComponent_MovieImportFile(My_Globals glob, |
const FSSpec *theFile, |
Movie theMovie, |
Track targetTrack, |
Track *usedTrack, |
TimeValue atTime, |
TimeValue *durationAdded, |
long inFlags, |
long *outFlags) |
{ |
ComponentResult err = noErr; |
AliasHandle alias = NULL; |
*outFlags = 0; |
err = NewAliasMinimal(theFile, &alias); |
if (err) return err; |
err = MovieImportDataRef(glob->self, |
(Handle)alias, |
rAliasType, |
theMovie, |
targetTrack, |
usedTrack, |
atTime, |
durationAdded, |
inFlags, |
outFlags); |
if (alias) DisposeHandle((Handle)alias); |
return err; |
} |
Application Developers
Application developers calling Movie Import Components directly to import from files should not call MovieImportFile
and move to MovieImportDataRef
. For further details about Data Reference based QuickTime APIs see Updating Applications for QuickTime 6.
References
Document Revision History
Date | Notes |
---|---|
2008-03-11 | New document that discusses how QuickTime 7.4+ invokes Movie Import Components when specifically importing from files. |
Copyright © 2008 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2008-03-11