To answer my own question:
The contents of a track's edit list (if any), i.e. the edits/segments present in a track may be determined via the GetTrackNextInterestingTime()
API function (code ripped from Movies.h):
/*
* GetTrackNextInterestingTime()
*
* Availability:
* Non-Carbon CFM: in QuickTimeLib 2.5 and later
* CarbonLib: in CarbonLib 1.0 and later
* Mac OS X: in version 10.0 and later
* Windows: in qtmlClient.lib 3.0 and later
*/
EXTERN_API( void )
GetTrackNextInterestingTime(
Track theTrack,
short interestingTimeFlags,
TimeValue time,
Fixed rate,
TimeValue * interestingTime,
TimeValue * interestingDuration);
by passing nextTimeTrackEdit
(to look for track edits) and nextTimeEdgeOK
(to include borderline cases) in interestingTimeFlags
.
For most cases in which you may be interested into the edits being present in a track you will have to map the returned interestingTime
from track time to media time (f.e. if you've been examining the track's edits to determine a possible track offset).
This is accomplished via the TrackTimeToMediaTime()
API function:
/*
* TrackTimeToMediaTime()
*
* Availability:
* Non-Carbon CFM: in QuickTimeLib 2.5 and later
* CarbonLib: in CarbonLib 1.0 and later
* Mac OS X: in version 10.0 and later
* Windows: in qtmlClient.lib 3.0 and later
*/
EXTERN_API( TimeValue )
TrackTimeToMediaTime(
TimeValue value,
Track theTrack);
Edit
The state of the art way to convert track time to media time would be TrackTimeToMediaDisplayTime()
:
/*
* TrackTimeToMediaDisplayTime()
*
* Summary:
* Converts a track's time value to a display time value that is
* appropriate to the track's media, using the track's edit list.
* This is a 64-bit replacement for TrackTimeToMediaTime.
*
* Discussion:
* This function maps the track time through the track's edit list
* to come up with the media time. This time value contains the
* track's time value according to the media's time coordinate
* system. If the time you specified lies outside of the movie's
* active segment or corresponds to empty space in the track, this
* function returns a value of -1. Hence you can use it to determine
* whether a specified track edit is empty.
*
* Parameters:
*
* value:
* The track's time value; must be expressed in the time scale of
* the movie that contains the track.
*
* theTrack:
* The track for this operation. Your application obtains this
* track identifier from such functions as NewMovieTrack and
* GetMovieTrack.
*
* Result:
* The corresponding time in media display time, in the media's time
* coordinate system. If the track time corresponds to empty space,
* this function returns a value of -1.
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: in version 10.4 (or QuickTime 7.0) and later
* Windows: in qtmlClient.lib version 10.4 (or QuickTime 7.0) and later
*/
EXTERN_API( TimeValue64 )
TrackTimeToMediaDisplayTime(
TimeValue64 value,
Track theTrack);
Best Answer
I'm afraid there is no standard key for this kind of metadata. You might try to use a reasonably fitting standard key like
kQTMetaDataCommonKeyInformation,
kQTMetaDataCommonKeyDescription or
kQTMetaDataCommonKeyProducer
although this wouldn't be 'standard' (i.e. would most likely only be processed correctly by your application).
On the question which value format to use this sample code and Q&A article (although it is not exactly fitting) might set you on the right track:
http://developer.apple.com/qa/qa2007/qa1515.html http://developer.apple.com/samplecode/QTMetaData/listing1.html