■AVIファイル関数・マクロについて
(翻訳:がんぞう)
AVIファイル関数・マクロは、波形音声ファイル(WAVeform-audio、略してWAV)や音声
・映像がインターリーブ(相互挿入)されたファイル(Audio-Video
Interleaved、
略してAVI)などの『Resource Information File Format(RIFFと略す。資源情報ファイ
ルフォーマットのこと)』を用いた時間基調のファイルアクセス環境を提供します。
これらの関数・マクロは、実際のRIFFアーキテクチャを管理・操作することなしにRIFF
ファイルの内在する機能を扱うことが出来ます。
AVIファイル関数・マクロは、時間基調ファイルの中の情報を、明示された「チャンク
(データ集合)」と呼ばれるデータ集合体の変わりに、1ないし複数のデータストリー
ム(データの流れ)として処理します。データストリームは時間基調ファイルの内容を
参照します。AVIファイルは、動画・英語音声トラック・フランス語音声トラックといっ
た、いくつかの違うデータタイプを保持することが出来ます。AVIファイルを使うことで
こういった構成要素を互いに別々にアクセスするアプリケーションが可能になります。
(注釈)AVIファイル関数・マクロはどんなRIFFファイルについても作業することが可能
ですが、この章ではAVIファイルにおける使用方法についてだけ説明します。
AVIファイルは、AVIファイル関数・マクロ上で使用する典型的な時間基調ファ
イルなのです。
AVIファイル関数・マクロはダイナミック・リンク・ライブラリ(動的結合ライブラリ、
DLLと略す)として存在します。ライブラリの初期化には
AVIFileInit 関数を呼び出し
ます。初期化後は全てのAVIファイル関数・マクロが利用可能となります。ライブラリを
解放するには AVIFileExit 関数を呼び出します。AVIファイルライブラリは、アプリケ
ーションがライブラリを呼び出した参照回数を解放されるまで保持します。アプリケー
ションを作成する際は、アプリケーション終了時に完全に解放される様に、AVIFileInit
とAVIFileExitの使用回数を合わせる必要があります。
------------------------------------------------------------------------------
AVICOMPRESSOPTIONS 【構造体】
------------------------------------------------------------------------------
【定義】
typedef struct {
DWORD fccType;
DWORD fccHandler;
DWORD dwKeyFrameEvery;
DWORD dwQuality;
DWORD dwBytesPerSecond;
DWORD dwFlags;
LPVOID lpFormat;
DWORD cbFormat;
LPVOID lpParms;
DWORD cbParms;
DWORD dwInterleaveEvery;
} AVICOMPRESSOPTIONS;
【内容】
ストリームに関する情報や、圧縮・保存の方法などの方法についての情報を保持する。
この構造体は AVIMakeCompressedStream 関数(または、AVIMakeCompressedStream
関
数で用いられる AVISave
関数)にデータを引き渡す。
【メンバ】
fccType
ストリームタイプを示す4キャラクター(4バイト)コード。
AVI
ストリームにおいて一般的なものは、以下の様に定数として定義されている。
streamtypeAUDIO
オーディオ(音声)ストリームを示す
streamtypeMIDI MIDI(演奏データ)ストリームを示す
streamtypeTEXT テキスト(文章)ストリームを示す
streamtypeVIDEO ビデオ(映像)ストリームを示す
fccHandler
圧縮ハンドラーを示す4キャラクター(4バイト)コード。
このビデオストリームが保存されたときに用いられた圧縮形式を示す。
(例として mmioFOURCC('M','S','V','C') など)
このメンバはオーディオストリームでは使用しない。
dwKeyFrameEvery
ビデオのキーフレーム間の最大値。
このメンバは AVICOMPRESSF_KEYFRAMES
フラグが立っている場合のみ使用される。
その他の場合は全てのフレームがキーフレームとなる。
dwQuality
ビデオ圧縮を通す際の品質を示す値。
このメンバはオーディオストリームには使用しない。
dwBytesPerSecond
ビデオ圧縮時のデータレート。このメンバは
AVICOMPRESSF_DATARATE フラグが立っ
ている場合のみ使用される。
dwFlags
圧縮時に用いられるフラグ。
以下の値が定義されている。
AVICOMPRESSF_DATARATE
dwBytesPerSecond
が示すデータ転送レートを用いて圧縮されたビデオスト
リーム
AVICOMPRESSF_INTERLEAVE
このビデオストリームに最初のストリームを
dwInterleaveEvery が示すフ
レーム数ごとに挟み込んでいる
AVICOMPRESSF_KEYFRAME
dwKeyFrameEvery
が示すキーフレーム値を最低キーフレーム数として保存
されたビデオストリーム。通常、全フレームがキーフレームとなる。
AVICOMPRESSF_VALID
AVISaveOptions
で定義された圧縮初期値をこの構造体のデータとして用い
る。このフラグが立っていない空の構造体が渡された場合、一部の初期値
が選択される。
lpFormat
データフォーマットが定義されている構造体のアドレス。オーディオストリームに
用いられ、LPWAVEFORMAT 構造体である。
cbForamt
lpFormat
が参照するデータサイズ(バイト単位)
lpParms
ビデオ圧縮特性データ。内部的に用いられる。
cbParms
lpParms
が参照するデータサイズ(バイト単位)
dwInterleaveEvery
ストリームデータに最初のストリームからのデータを混在させるインターリーブ要
素。AVICOMPRESSF_INTERLEAVE
フラグが立っている場合のみ用いられる。
------------------------------------------------------------------------------
AVIFILEINFO 【構造体】
------------------------------------------------------------------------------
【定義】
typedef struct {
DWORD dwMaxBytesPerSec; //
ファイルのデータレートのほぼ最大値
DWORD dwFlags; // 下記参照
DWORD dwCaps; // 下記参照
DWORD dwStreams; // 下記参照
DWORD dwSuggestedBufferSize; // 下記参照
DWORD dwWidth; // AVIファイル中の幅(ピクセル単位)
DWORD dwHeight; // AVIファイル中の高さ(ピクセル単位)
DWORD dwScale; // 下記参照
DWORD dwRate; // dwScale に併記
DWORD dwLength; // 下記参照
DWORD dwEditCount; // 下記参照
char szFileType[64]; // 下記参照
} AVIFILEINFO;
【内容】
完全なAVIファイルのグローバル情報を保持する。
【メンバ】
dwFlags
拡張可能なフラグ。以下のフラグが定義されている。
AVIFILEINFO_HASINDEX
指定のAVIファイルは、ファイルの末尾にインデックスを持つ。
※より良い実行のためには、全てのAVIファイルはインデックスを持つべき
である。
AVIFILEINFO_MUSTUSEINDEX
指定ファイルのインデックスに、ファイル中のチャンク(データ集合)の
再生順序が含まれている。ファイル最盛時にチャンクの物理順序ではなく
このインデックスを使う。編集時のフレームリストを作成するときなどに
利用できる。
AVIFILEINFO_INTERLEAVED
インターリーブ(複数ストリームが交互に挿入されている)AVIファイル
AVIFILEINFO_WASCAPTUREFILE
リアルタイムビデオのために特別に割り当てられたAVIファイル
アプリケーションは、ユーザーが恐らくこのファイルを整理してしまうこ
とを踏まえて、上書きする際に警告すべきである。
AVIFILEINFO_COPYRIGHTED
著作権情報を含むデータ・プログラムを含むAVIファイル
このフラグが立っている場合、ソフトウェアは複製を許可してはならない。
dwCaps
適応フラグ。以下のフラグが定義されている。
AVIFILECAPS_CANREAD
アプリケーション上で読み込み許可のもとに開くことができる
AVIFILECAPS_CANWRITE
アプリケーション上で書き込み許可のもとに開くことができる
AVIFILECAPS_ALLKEYFRAMES
全てのフレームがキーフレームなAVIファイル
AVIFILECAPS_NOCOMPRESSION
圧縮方式を用いていないAVIファイル
dwStreams
ファイル中のストリーム数。例えば、音声と映像を含むファイルは、少なくとも2
つのストリームを持つ。
dwSuggestedBufferSize
読み込み時に必要となる予想されるバッファサイズ(バイト単位)
一般的には、このサイズはファイル中の最大チャンク(データ集合)よりも充分に
大きいべきである。インターリーブファイルの場合は、このサイズはチャンクでは
なく、読み込む全レコードサイズよりも充分に大きい必要がある。
もしこのバッファサイズが非常に小さい、または0が指定されている場合、再生ソ
フトウェアは再生時にパフォーマンスに応じたメモリを再割り当てしなければなら
ない。
dwScale
全ファイルに適応できるタイムスケール
(dwRate÷dwScale)は秒間サンプル数を表す。
多くのストリームは、ストリーム自身のタイムスケールをファイルのタイムスケー
ルに置き換えて定義することが出来る。
dwLength
AVIファイルサイズ。単位は(dwRate÷dwScale)で表す。
dwEditCount
AVIファイルに追加、またはAVIファイルから削除されたストリームの数
szFileType
ファイルタイプ情報の記述を含む、ヌルで終わる文字列
------------------------------------------------------------------------------
AVIStreamDataSize 【マクロ】
------------------------------------------------------------------------------
【書式】
AVIStreamDataSize(pavi, fcc, plSize);
【機能】
指定ストリームの任意のヘッダーデータを検索するために必要なバッファサイズをバイ
ト単位で算出する。
【戻り値】
成功すれば0を、失敗するとそれ以外が戻る。
戻り値が AVIERR_NODATA
の場合、指定した4文字コードではデータを発見出来なかった
ことを示す。
【引数】
pavi
オープンされたストリームのハンドル。
fcc
ストリームタイプを指定する4文字コード
plSize
任意のヘッダーデータのバッファサイズを入れるアドレス
【補足】
AVIStreamDataSize
マクロは次のように定義されている。
#define AVIStreamDataSize(pavi, fcc, plSize) \
AVIStreamReadData(pavi, fcc, NULL, plSize)
------------------------------------------------------------------------------
AVIStreamEnd 【マクロ】
------------------------------------------------------------------------------
【書式】
AVIStreamEnd(pavi);
【機能】
ストリームの最後に結合されたサンプルを算出する。
【戻り値】
ストリームの最後に結合されたサンプルを戻す。エラーが発生した場合、最初のサンプ
ル、あるいはストリームサイズより1小さい数値を戻す。
【引数】
pavi
オープンされたストリームのハンドル。
【補足】
AVIStreamEnd マクロは次のように定義されている。
#define AVIStreamEnd(pavi) \
(AVIStreamStart(pavi) + AVIStreamLength(pavi))
------------------------------------------------------------------------------
AVIStreamEndTime 【マクロ】
------------------------------------------------------------------------------
【書式】
AVIStreamEndTime(pavi);
【機能】
ストリームの最後を表す時間を戻す。
【戻り値】
成功なら時間を、エラーなら−1を戻す。
【引数】
pavi
オープンされたストリームハンドル
【補足】
AVIStreamEndTime マクロは次のように定義される。
#define AVIStreamEndTime(pavi) \
AVIStreamSampleToTime(pavi, AVIStreamEnd(pavi))
------------------------------------------------------------------------------
AVIBuildFilter 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIBuildFilter(LPTSTR lpszFilter, LONG cbFilter, BOOL
fSaving);
【機能】
フィルターの仕様を設定する。これは
GetOpenFileName 及び GetSaveFileName 関数で
使用する。
【戻り値】
関数の呼び出しが成功すれば AVIERR_OK
が、それ以外なら下記のエラー値が戻る。
AVIERR_BUFFERTOOSMALL
cbFilter
で指定されるバッファサイズが作成されるフィルターのサイズ
よりも小さい
AVIERR_MEMORY
読み込み操作を完了するのに充分なメモリがない
【引数】
lpszFilter
フィルター文字列を代入したバッファのアドレス
cbFilter
lpszFilter
で指定されるバッファのサイズ(バイト単位)
fSaving
フィルターが読み込み型か書き込み型のどちらかを示すフラグ
True なら書き込み型、False
なら読み込み型となる
【補足】
この関数は、全てのフィルター型について、AVIファイルライブラリがマルチメディアフ
ァイルを開く・読む・書くのに使用することが出来るということについてのレジストリ
操作を行う。ハードディスク内のフィルターDLLやフォーマットは検索しない。
------------------------------------------------------------------------------
AVIClearClipboard 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIClearClipboard(VOID);
【機能】
クリップボードからのAVIファイルを解除する。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。
------------------------------------------------------------------------------
AVIFileAddRef 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI_(ULONG) AVIFileAddRef(PAVIFILE pfile);
【機能】
AVIファイルの参照回数を+1する。
【戻り値】
成功すれば更新されたファイルインターフェイスの参照カウンタを戻す。
【引数】
pfile
オープンされたAVIファイルのハンドル
------------------------------------------------------------------------------
AVIFileCreateStream 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIFileCreateStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi,
AVISTREAMINFO FAR *psi);
【機能】
存在するファイルに新しいストリームを作成し、新しいストリームに対するインターフ
ェイスを確立する。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。ファイルが既に開かれていて書き込み許可
されている場合を除き、この関数は AVIERR_READONLY
を戻す。
【引数】
pfile
オープンされたAVIファイルのハンドル
ppavi
新しいストリームインターフェースのアドレス
psi
ストリームの種類やサンプルレートを含む、新しいストリームに関する情報を保持
した構造体のアドレス
【補足】
この関数によって、新しいストリームの参照カウントを開始する。
------------------------------------------------------------------------------
AVIFileEndRecord 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIFileEndRecord(PAVIFILE pfile);
【機能】
映像と音声データを1対1の比率で交互に挿入しているインターリーブファイルの書き
込みを行っているときに、登録終了コードを記録する。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。
【引数】
pfile
オープンされたAVIファイルのハンドル
【補足】
AVIFileSave
関数はこの関数を内部的に呼び出している。一般的には、アプリケーショ
ンからこの関数を直接呼び出す必要はない。
------------------------------------------------------------------------------
AVIFileExit 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI_(VOID) AVIFileExit(VOID);
【機能】
AVIファイルライブラリの使用を終了し、ライブラリ参照カウンタを−1する。
この関数は旧ライブラリの AVIStreamExit
関数を継承している。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。
【引数】
pfile
オープンされたAVIファイルのハンドル
------------------------------------------------------------------------------
AVIFileGetStream 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIFileGetStream(PAVIFILE pfile, PAVISTREAM FAR *ppavi,
DWORD fccType,
LONG lParam);
【機能】
指定されたAVIファイルに結合されたストリームインターフェイスアドレスを取得する。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。
以下のエラー値が戻る可能性がある。
AVIERR_NODATA
指定したファイルは fccType や lParam
の指定に一致するストリームを含
んでいない
AVIERR_MEMORY
メモリが不足している
【引数】
pfile
オープンされたAVIファイルのハンドル
ppavi
新しいストリームインターフェースのアドレス
fccType
ストリームタイプを示す4キャラクター(4バイト)コード。
0なら開かれた任意のストリームを示す。
AVI
ストリームにおいて一般的なものは、以下の様に定数として定義されている。
streamtypeAUDIO
オーディオ(音声)ストリームを示す
streamtypeMIDI MIDI(演奏データ)ストリームを示す
streamtypeTEXT テキスト(文章)ストリームを示す
streamtypeVIDEO ビデオ(映像)ストリームを示す
lParam
ストリームタイプのカウント
特定ストリームタイプの中のどのストリームにアクセスするか指定する。
【用例】
指定ストリームが「VIDEO AUDIO-1 AUDIO-2」となっている場合に
AUDIO-2 を指定する
には、
AVIFileGetStream(pfile, ppavi, streamtypeAUDIO, 1);
とする。
------------------------------------------------------------------------------
AVIFileInfo 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIFileInfo(PAVIFILE pfile, AVIFILEINFO FAR *pfi, LONG
lSize);
【機能】
AVIファイルに関する情報を取得する。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。
【引数】
pfile
オープンされたAVIファイルのハンドル
pfi
ファイル情報を取得するのに使用する構造体のアドレス
通常は AVIFILEINFO 構造体を指す。
lSize
構造体のサイズ(バイト単位)
------------------------------------------------------------------------------
AVIFileInit 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI_(VOID) AVIFileInit(VOID);
【機能】
AVIファイルライブラリを初期化する。
AVIファイルライブラリは初期化の回数は保持するが、解放した回数は保持しない。
AVIFileExit 関数を呼び出して解放した場合、AVIファイルライブラリは参照カウントを
−1する。
AVIFileInit は、AVIFile
関数を使用する前に呼び出す。
【補足】
この関数は、旧式の AVIStreamInit
関数を継承する。
------------------------------------------------------------------------------
AVIFileOpen 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIFileOpen(PAVIFILE FAR *ppfile, LPCTSTR szFile, UINT
mode,
CLSID FAR *pclsidHandler);
【機能】
AVIファイルを開き、アクセス時に使用するファイルインターフェースアドレスを返す。
AVIファイルライブラリは、ファイルを開いた回数を保持するが、解放された回数は保持
しない。AVIFileRelease
関数は、ファイルを解放してカウントを−1する。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。
以下のエラー値が戻る可能性がある。
AVIERR_BADFORMAT
ファイルを読み込むことが出来ない。誤りを含んでいたり認識できないフ
ァイルを示す。
AVIERR_MEMORY
メモリが不充分なためファイルを開くことが出来ない。
AVIERR_FILEREAD
ファイル読み込み中にディスクエラーが発生した。
AVIERR_FILEOPEN
ファイルをオープン中にディスクエラーが発生した。
REGDB_E_CLASSNOTREG
レジストリによると、AVIFileOpen
で指定されたファイルタイプは処理す
るハンドラが存在しない。
【引数】
ppfile
オープンされたAVIファイルのインターフェースポインタを示すアドレス
szFile
オープンするファイルの名前を含む、ヌルで終わる文字列
mode
ファイルを開く際に使用するアクセスモード。
デフォルトアクセスモードは「OF_READ」である。AVIFileOpen
で指定できるモード
は以下の通りである。
OF_CREATE
新しいファイルを作成する。既に存在する場合はファイル長を0にする。
OF_SHARE_DENY_NONE
ファイルを共有モードで開く。他のプロセスからこのファイルを開いて読
み込み・書き込みすることが出来る。
他のプロセスが互換モードで開いている場合、AVIFileOpen
は失敗する。
OF_SHARE_DENY_READ
ファイルを共有モードで開く。他のプロセスからこのファイルを開いて書
き込むことが出来る。
他のプロセスが互換モードで開いていたりファイルを読み込んでいる場合
AVIFileOpen は失敗する。
OF_SHARE_DENY_WRITE
ファイルを共有モードで開く。他のプロセスからこのファイルを開いて読
み込むことが出来る。
他のプロセスが互換モードで開いていたりファイルを書き込んでいる場合
AVIFileOpen は失敗する。
OF_SHARE_EXCLUSIVE
ファイルを開き、他のどんなプロセスからのどの様なアクセスも否定する。
他のプロセスがこのファイルを開いている場合、AVIFileOpenは失敗する。
OF_READ
ファイルを読み込みモードで開く。
OF_READWRITE
ファイルを読み込み・書き込み共用モードで開く。
OF_WRITE
ファイルを書き込みモードで開く。
pclsidHandler
使用したい標準/カスタムハンドルのクラス特性のアドレス。
ヌルが指定された場合、システムはファイル名の拡張子をもとにレジストリ内から
か、またファイル内で指定されている RIFF
タイプを選択する。
------------------------------------------------------------------------------
AVIFileReadData 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIFileReadData(PAVIFILE pfile, DWORD ckid, LPVOID lpData,
LONG FAR *lpcbData);
【機能】
作者や著作権情報といった、全てのファイルについている任意のヘッダーデータを読み
込む。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。
要求されたデータチャンクが存在しない場合、戻り値は
AVIERR_NODATA になる。
【引数】
pfile
オープンされたAVIファイルのハンドル
ckid
データのRIFF
チャンク識別子(4文字コード)
lpData
データを読み込む際に使用するバッファアドレス
lpcbData
lpData
が参照するメモリブロックのサイズを示すアドレス
データ読み込みが成功した場合、この値は読み込まれたデータの実サイズに変更さ
れる。
------------------------------------------------------------------------------
AVIFileRelease 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI_(ULONG) AVIFileRelase(PAVIFILE pfile);
【機能】
AVIファイルインターフェースハンドルの参照カウンタを−1する。カウンタが0になっ
た場合、ファイルを閉じる。
【戻り値】
ファイルの参照カウンタを戻す。
この戻り値は、デバッグ目的に限って使用すべきである。
【引数】
pfile
オープンされたAVIファイルのハンドル
【補足】
この関数は、旧式の AVIFileClose 関数を継承する。
------------------------------------------------------------------------------
AVIFileWriteData 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIFileWriteData(PAVIFILE pfile, DWORD ckid, LPVOID
lpData,
LONG cbData);
【機能】
補足データ(標準的なヘッダー、フォーマット、ストリームデータ以外)を書きこむ。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。
アプリケーションが読み込み専用モードで開いている場合、戻り値は
AVIERR_READONLY
になる。
【引数】
pfile
オープンされたAVIファイルのハンドル
ckid
データのRIFF
チャンク識別子(4文字コード)
lpData
書き込みデータバッファアドレス
cbData
lpData
が示すメモリブロックのサイズ(バイト単位)
【補足】
独自ストリームを挿入したデータを書き出すには
AVIStreamWriteData 関数を用いる。
------------------------------------------------------------------------------
AVIGetFromClipboard 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIGetFromClipboard(PAVIFILE *lppf);
【機能】
クリップボードからAVIファイルをコピーする。
【戻り値】
成功すれば0、失敗するとそれ以外が戻る。
【引数】
lppf
作成されたAVIファイルのハンドルを戻すためのアドレス
【補足】
クリップボード中にAVIファイルが存在しない場合、AVIGetFromClipboard
は CF_DIV や
CF_WAVE といったクリップボードフラグをAVIファイルとしてコピーすることも可能であ
る。この場合、本関数は1つの DIV
ストリームと一つの波形音声ストリームによるAVI
ファイルを作成し、両方のストリームをクリップボードからのデータで埋める。
------------------------------------------------------------------------------
AVIMakeCompressedStream 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIMakeCompressedStream(PAVISTREAM FAR *ppsCompressed,
PAVISTREAM psSource, AVICOMPRESSOPTIONS FAR *lpOptions,
CLSID FAR *pclsidHandler);
【機能】
非圧縮のストリームから圧縮フィルターに基づく圧縮ストリームを作成し、圧縮ストリ
ームアドレスを戻す。本関数は音声と映像の圧縮をサポートする。
【戻り値】
成功すればAVIERR_OKを、失敗するとそれ以外が戻る。
以下のエラー値が戻る可能性がある。
AVIERR_NOCOMPRESSOR
適当な圧縮ルーチンが見つからない
AVIERR_MEMORY
操作を完了するのに充分なメモリが確保できない
AVIERR_UNSUPPORTED
指定した種類のデータの圧縮はサポートされていない。
音声・映像以外のデータを圧縮しようとした場合などに発生する。
【引数】
ppsCompressed
圧縮ストリームのポインタを入れるアドレス
psSource
圧縮対象となるストリームのアドレス
lpOptions
使用する圧縮タイプや用いるオプションなどを示す構造体の存在するアドレス
AVICOMPRESSOPTIONS
構造体中で適当なハンドラが示す映像圧縮を指定することがで
きる。音声圧縮には、圧縮データフォーマットを指定する。
pclsidHandler
ストリーム作成に用いるクラス識別子のアドレス
【補足】
アプリケーションは圧縮ストリームを読み書きすることが出来る。
------------------------------------------------------------------------------
AVIMakeFileFromStream 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIMakeFileFromStream(PAVIFILE FAR *ppfile, int nStreams,
PAVISTREAM FAR *papStreams);
【機能】
複数のストリームから1つのAVIFileインターフェースポインタを作成する。
【戻り値】
成功すれば0を、失敗するとそれ以外が戻る。
【引数】
ppfile
新しいファイルのインターフェースポインタを戻すアドレス
nStreams
papStreamsで参照するストリームインターフェースポインタ配列内のストリーム数
papStreams
ストリームインターフェースポインタ配列アドレス
【補足】
AVIFileRelease 関数でファイルをクローズする。
他の関数からこの関数の作成した AVIFile
インターフェースをコピーしたり、このイン
ターフェースと結合されたストリームを編集することが出来る。
例えば、ファイルインターフェースポインタに対し
AVIFileGetStream を用いて特定の
ストリームを検索することが可能である。
------------------------------------------------------------------------------
AVIMakeStreamFromClipboard 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIMakeStreamFromClipboard(UINT cfFormat, HANDLE hGlobal,
PAVISTREAM FAR *ppStream);
【機能】
クリップボード内のストリームデータから編集可能なストリームを作成する。
【戻り値】
成功すれば0を、失敗するとそれ以外が戻る。
【引数】
cfFormat
クリップボードフラグ
hGlobal
クリップボード内のストリームデータのハンドル
ppStreams
作成されたストリームのハンドル
【補足】
アプリケーション上でこの編集可能なストリームを使い終えたら、ハンドルに結合され
たストリーム資源は解放しなければならない。
------------------------------------------------------------------------------
AVIPutFileOnClipboard 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIPutFileOnClipboard(PAVIFILE pf);
【機能】
AVIファイルをクリップボードにコピーする。
【戻り値】
成功すれば0を、失敗するとそれ以外が戻る。
【引数】
pf
オープンされたAVIファイルのハンドル
【補足】
本関数は、CF_DIV、CF_PALETTE、またはCF_WAVE
クリップボードフラグが立ったデータ
を、最初のフレームに DIV
などの映像ストリームや CF_WAVE
の様な音声ストリームを
用いたクリップボード上にコピーすることも出来る。
------------------------------------------------------------------------------
AVISave 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVISave(LPCTSTR szFile, CLSID FAR *pclsidHandler,
AVISAVECALLBACK lpfnCallback, int nStreams, PAVISTREAM pavi,
LPAVICOMPRESSOPTIONS lpOptions, ...);
【機能】
他ファイルまたはメモリ上にある複数のストリームを結合させてファイルを作成する。
【戻り値】
成功すれば AVIERR_OK
を、失敗するとそれ以外が戻る。
【引数】
szFile
保存するファイルの名前を含む、ヌルで終わる文字列
pclsidHandler
ファイル書き込み時に使用するハンドラアドレス
このファイルは、このハンドラを用いて
AVIFileOpen 関数を呼び出すことにより
作成される。ハンドラを指定しなかった場合は、ファイル拡張子に基づいてレジス
トリからの初期値が選択される。
lpfnCallback
セーブ処理のためのコールバック関数アドレス
nStreams
ファイルに保存するストリーム数
pavi
AVIストリームのアドレス
このパラメータはlpOptionsと共に用いられる。これらパラメータ一組は、nStream
分だけ並べることが出来る。
lpOptions
アプリケーションが定義する、pavi
が示すストリームに関する圧縮オプションを含
む AVICOMPRESSOPTIONS 構造体アドレス
このパラメータは pavi
と共に用いられる。これらパラメータ一組は、nStream
分
だけ並べることが出来る。
【補足】
この関数は(1)ファイルを作成し、(2)ストリームデータをファイルにコピーし、(3)ファ
イルを閉じて、そして(4)新しいファイルによって使われたリソースを解放する。
この関数の最後の2つのパラメータは、ファイルでセーブするべきストリームを識別子
と、そのストリームの圧縮オプションを定義する。
AVI
ファイルで1以上のストリームをセーブするとき、ファイル中のそれぞれのストリ
ームのためにこれらの2つのストリーム特定のパラメータを繰り返す。
(lpfnCallback により参照された)callback
関数はステータス情報を表示することが
可能で、そこでユーザーにセーブオペレーションを中止させることができる。
callback 関数は以下のフォーマットで用いる。
LONG FAR PASCAL SaveCallback(int nPercent);
nPercent
パラメータは、セーブされたファイルのパーセンテージを指定する。
オペレーションを継続したなら、 callback 関数は
AVIERR_OK を、またユーザーがセー
ブオペレーション中止を指定したなら、 callback
関数は AVIERR_USERABORT を返すべ
きである。
------------------------------------------------------------------------------
AVISaveOptions 【関数】
------------------------------------------------------------------------------
【書式】
BOOL AVISaveOptions(HWND hwnd, UINT uiFlags, int nStreams,
PAVISTREAM FAR * ppavi, LPAVICOMPRESSOPTIONS FAR * plpOptions);
【機能】
ファイルのための保存オプションを検索し、バッファからオプションを返す。
【戻り値】
成功すれば AVIERR_OK
を、失敗するとそれ以外が戻る。
【引数】
hwnd
圧縮オプションダイアログボックスのための親ウインドウのハンドル
uiFlags
圧縮オプションダイアログボックスの表示フラグ。
以下のフラグが定義されている。
ICMF_CHOOSE_KEYFRAME
ビデオオプションの全てのダイアログボックスにキーフレームを表示
これは ICCompressorChoose
関数で使われるものと同様である。
ICMF_CHOOSE_DATARATE
ビデオオプションダイアログボックスにデータレートを表示
これは ICCompressorChoose
関数で使われるものと同様である。
ICMF_CHOOSE_PREVIEW
ビデオオプションにプレビューボタンを表示
このボタンはストリーム中のフレームを用いて圧縮プレビューを行う。
これは ICCompressorChoose
関数で使われるものと同様である。
nStreams
ダイアログボックスによって設定されたオプションを持つストリーム数
ppavi
ストリームインタフェースポインタのアドレス配列
nStreams
パラメータは配列中のポインタ数を示す。
plpOptions
AVICOMPRESSOPTIONS 構造のポインタ配列アドレス
これらの構造体はダイアログボックスによって設定された圧縮オプションを保持し
ている。
nStreams
パラメータは配列中のポインタ数を示す。
【補足】
この関数は hwnd
を親ウインドウハンドルとして標準圧縮オプションダイアログボック
スを表示する。ユーザーがそれぞれのストリームの圧縮オプションを設定して終了する
と、オプションは plpOptions の指すアドレスに
AVICOMPRESSOPTIONS 構造体のポイン
タ配列として戻される。
呼び出したアプリケーションは ppavi
によって参照される配列からストリームのインタ
フェースポインタを通さなければならない。
アプリケーションは AVICOMPRESSOPTIONS
構造体と、これらのポインタ配列のためのメ
モリを割り当てなければならない。
------------------------------------------------------------------------------
AVISaveOptionsFree 【関数】
------------------------------------------------------------------------------
【書式】
LONG AVISaveOptionsFree(int nStreams,
LPAVICOMPRESSOPTIONS FAR * plpOptions);
【機能】
AVISaveOptions
機能によって割り当てられたリソースを解放する。
【戻り値】
AVIERR_OK を戻す。
【引数】
nStreams
plpOptions で参照する AVICOMPRESSOPTIONS
構造体の数
plpOptions
AVICOMPRESSOPTIONS
構造体へのポインタアドレス配列
これらの構造体はダイアログボックスによって設定された圧縮オプションを持つ。
AVISaveOptions
によって割り当てられたこれら全ての構造体のリソースは解放され
る。
------------------------------------------------------------------------------
AVISaveV 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVISaveV(LPCTSTR szFile, CLSID FAR * pclsidHandler,
AVISAVECALLBACK lpfnCallback, int nStreams, PAVISTREAM FAR *
ppavi,
LPAVICOMPRESSOPTIONS FAR * plpOptions);
【機能】
他のファイルまたはメモリ上からデータストリームを結合してファイルを構築する。
【戻り値】
成功すれば AVIERR_OK
を、失敗するとそれ以外が戻る。
【引数】
szFile
セーブするファイルの名前を含む、ヌルで終わる文字列
pclsidHandler
ファイルの書き込みに使用するファイルハンドルのアドレス
AVIFileOpen
関数は、このハンドラを用いてファイルを作成する。
もしハンドラを指定しなければ、ファイル拡張子に基づいてレジストリからデフォ
ルトが選択される。
lpfnCallback
ステータス情報を表示したり、ユーザーによるセーブ処理中止を確認するための
callback 関数のアドレス
nStreams
セーブすべきストリームの数
この値はデバッグ作業のためにだけ使われるべきである。
【引数】
オープンしている AVI ストリームのハンドル
------------------------------------------------------------------------------
AVIStreamBeginStreaming 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIStreamBeginStreaming(PAVISTREAM pavi, LONG lStart,
LONG lEnd, LONG lRate);
【機能】
ストリーミングで用いるパラメータを指定し、ストリームハンドラをストリーミング用
に準備する。
【戻り値】
成功すれば0を、失敗するとそれ以外が戻る。
【引数】
pavi
ストリーミングアドレス
lStart
ストリーミング開始フレーム
lEnd
ストリーミング終了フレーム
lRate
ファイル固有の再生スピードに対する読み込み速度
1000を指定すると標準速度になる。1000より少なければ遅く、大きければ
速くなる。
------------------------------------------------------------------------------
AVIStreamCreate 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIStreamCreate(PAVISTREAM FAR * ppavi, LONG lParam1,
LONG lParam2, CLSID FAR * pclsidHandler);
【機能】
どのファイルとも結合されていないストリームを作成する。
【戻り値】
成功すれば0を、失敗するとそれ以外が戻る。
【引数】
ppavi
新しいストリームインターフェースを持つアドレス
lParam1
ストリームハンドラ固有情報
lParam2
ストリームハンドラ固有情報
pclsidHandler
ストリームに用いるクラス識別子のアドレス。
【補足】
この関数は極力使用しないことが望ましい。
CreateEditableStream や AVIMakeCompressedStream
といった幾つかの関数は内部的に
この関数を呼び出す。
------------------------------------------------------------------------------
AVIStreamEndStreaming 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI AVIStreamEndStreaming(PAVISTREAM pavi);
【機能】
ストリーミングを終了する。
【戻り値】
成功すれば0を、失敗するとそれ以外が戻る。
【引数】
pavi
ストリームアドレス
【補足】
多くのストリーム処理はこの関数を無視する。
------------------------------------------------------------------------------
AVIStreamFindSample 【関数】
------------------------------------------------------------------------------
【書式】
STDAPI_(LONG) AVIStreamFindSample(PAVISTREAM pavi, LONG lPos,
LONG lFlags);
【機能】
指定されたポジションに対するサンプルポジション(キーフレーム、空でないフレーム、
あるいはフォーマット変更されたフレーム)を戻す。
【戻り値】
成功なら検出された位置を、エラーなら−1を戻す。
【引数】
pavi
オープンされたストリームのハンドル
lPos
捜索開始フレーム
lFlags
検出するフレームタイプ、ストリームの検索方向、リターン情報の種類を表すフラグ
以下のフラグが定義されている。
FIND_ANY
空でないフレームを検出する。
このフラグは SEARCH_ANY フラグを継承する。
FIND_KEY
キーフレームを検出する。
このフラグは SEARCH_KEY フラグを継承する。
FIND_FORMAT
フォーマット変更を検出する。
FIND_NEXT
現在位置から一番近くにあるサンプル・フレーム・フォーマット変更を正
方向に検索する。現在のサンプルも捜索対象となる。
FIND_ANY・FIND_KEY・FIND_FORMAT
フラグと共に使用する。
このフラグは SEARCH_FORWARD
フラグを継承する。
FIND_PREV
現在位置から一番近くにあるサンプル・フレーム・フォーマット変更を逆
方向に検索する。現在のサンプルも捜索対象となる。
FIND_ANY・FIND_KEY・FIND_FORMAT
フラグと共に使用する。
このフラグは SEARCH_FORWARD・SEARCH_BACKWARD
フラグを継承する。
FIND_FROM_START
ストリームの先頭から一番近くにあるサンプル・フレーム・フォーマット
変更を検索する。
FIND_ANY・FIND_KEY・FIND_FORMAT
フラグと共に使用する。
【補足】
FIND_KEY・FIND_ANY・FIND_FORMAT
は同時に使用できない。
同様に FIND_NEXT と FIND_PREV
も同時に使用できない。
この関数は、旧式の AVIStreamFindKeyFrame
関数を継承する。
------------------------------------------------------------------------------
AVI 【構造体】
------------------------------------------------------------------------------
【定義】
【内容】
【メンバ】
------------------------------------------------------------------------------
AVI 【マクロ】
------------------------------------------------------------------------------
【書式】
【機能】
【戻り値】
【引数】
【補足】
------------------------------------------------------------------------------
AVI 【関数】
------------------------------------------------------------------------------
【書式】
【機能】
【戻り値】
【引数】
【補足】