mvGetBoundary(3dm) mvGetBoundary(3dm)
mvGetBoundary: mvGetMovieBoundary, mvGetTrackBoundary - get timing
information about movie or track
#include <dmedia/moviefile.h>
DMstatus mvGetMovieBoundary( MVid movie,
MVtime time, MVtimescale timeScale,
MVdirection Direction, MVboundtype BoundType,
int numMedia, DMmedium *medium,
MVtime *returnTime );
DMstatus mvGetTrackBoundary( MVid track,
MVtime time, MVtimescale timeScale,
MVdirection Direction, MVboundtype BoundType,
MVtime *returnTime );
Each track is made up of frames, each of which can be typed. Current
frame types supported are key frames (MV_FRAMETYPE_KEY) or delta frames
(MV_FRAMETYPE_DELTA). Frames can be grouped into chunks and/or edit
atoms. mvGetMovieBoundary and mvGetTrackBoundary allow the user to get
at this information.
Valid values for MVdirection are: MV_FORWARD and MV_BACKWARD. Valid
values for MVboundtype are: MV_FRAME, MV_KEYFRAME, MV_TRACKDATA,
MV_EDITATOM.
mvGetMovieBoundary takes a time cursor, described in user's timeScale, a
Direction for searching, and a boundtype that the user is looking for.
Users also need to specify the media he/she is interested in, passed as
an array in medium, with numMedium specifying the number of medium to
look for in the array. The time for the concerned boundary is returned
in returnTime. If the cursor time passed in to this function happens to
be the boundtype described in BoundType, the time for the next/prev
boundary will be returned.
mvGetTrackBoundary takes a track, a time cursor, a time scale, a
direction, and a boundtype and returns the time for the boundary being
searched for.
If no more valid boundaries can be found between the time passed in and
the end of the track (tail of the track if direction is forward and head
of the track if direction is backward), DM_FAILURE is returned and the
error code will be set to MV_TIME_OUT_OF_RANGE.
These functions return DM_SUCCESS if a valid time boundary could be found
and returned. Otherwise, it returns DM_FAILURE, and the error may be
retrieved by mvGetErrno(3dm).
Page 1
mvGetBoundary(3dm) mvGetBoundary(3dm)
/*
* this piece of code describes how to find all the times for the
* key frames in a track.
*/
#include <moviefile.h>
void ListTrackKeyFrameTimes( MVid track )
{
MVtimescale timeScale;
MVtime lastKeyFrame = 0;
MVtime cursor = 0;
timeScale = mvGetTrackTimeScale( track );
mvGetTrackBoundary( track,
mvGetTrackDuration( track, timeScale ), timeScale,
MV_BACKWARD, MV_KEYFRAME,
&lastKeyFrame );
while( cursor < lastKeyFrame )
{
MVtime tmp;
mvGetTrackBoundary( track, cursor, timeScale,
MV_FORWARD, MV_KEYFRAME, &tmp );
fprintf( stderr, "key frame found at : %lld0, tmp );
cursor = tmp;
}
}
mvIntro(3dm), mvGetTimeScale(3dm), mvGetErrno(3dm).
PPPPaaaaggggeeee 2222 [ Back ]
|