高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1194
Saving playback hints in a Movie


Q: 「流氷通信 #11」 に記述されているように、SetMoviePlayHints 関数を呼び出すときに hintsHighQuality フラグをセットして、可能な限り最高の品質でムービーをレンダリングするように QuickTime に指定しています。しかし、これはランタイムプロパティのように見えます。つまり実際にはヒントはムービーと一緒に保存されないのです。これらのヒントをムービーと一緒に保存するにはどうすればよいのでしょうか?

A: SetTrackLoadSettings 関数を使用して、再生ヒントを適用したいトラックを指定します (ムービー内に複数のビデオトラックがあり、トラックごとにヒントを適用したい場合は、ループ処理を行い、各トラックに対して SetTrackLoadSettings を呼び出す必要があります)。

注意:
この方法で再生ヒントを設定できるのは、ムービーファイルに限られます。生の DV ストリームファイルのようにムービーファイルでないものに対して、再生ヒントを設定することはできません。

以下に、ムービー内の最初のビデオトラックを見つけて、このトラックに高品質の再生ヒントを適用する短いコードを示します。

 void SavePlaybackHintsToMovie(FSSpecPtr movieFile)
{
    Movie movie     = NULL;
    Track track     = NULL;
    short resRefNum = 0;
    short resId     = movieInDataForkResID;
    Str255          resName;
    OSErr           err;


    err = OpenMovieFile( movieFile, &resRefNum, fsWrPerm );
    if (err != noErr) goto bailError;

    err = NewMovieFromFile( &movie, resRefNum,
        &resId, resName, newMovieActive, NULL );
    if (err != noErr) goto bailError;

        /* 最初のビデオトラックを取得 */
    track = GetMovieIndTrackType( movie, 1,
        VisualMediaCharacteristic,
        movieTrackCharacteristic | movieTrackEnabledOnly );
    if ( track == NULL ) goto bailError;

        /* このムービーに再生ヒントを保存 */
    SetTrackLoadSettings( track, 0, 0, 0, hintsHighQuality );
    err = GetMoviesError();
    if (err != noErr) goto bailError;

        /* このムービーに対する変更を保存 */
    err = UpdateMovieResource( movie,
        resRefNum, movieInDataForkResID, resName );
    if ( movie != NULL )
    {
        DisposeMovie( movie );
    }
    if ( resRefNum != 0 )
    {
        CloseMovieFile( resRefNum );
    }

bailError:
    ;
}

リスト 1 SetTrackLoadSettings を使用した高品質のためのヒントの保存



 


[2002 年 9 月 4 日]