Video for WindowsのAVI API一覧
機能 ライブラリの初期化
機能 ライブラリの解放
機能 AVIファイルを開く
| ppfile | ファイルインターフェイスポインタを受け取るアドレス。 |
| szFile | ファイル名。 |
| mode | ファイルを開く時に使用するアクセスモード。
| OF_CREATE | 新規にファイルを作成する、ファイルがすでに存在する場合その大きさは0になる |
| OF_READ | ファイルを読み取り専用で開く |
| OF_WRITE | ファイルを書き込み可能で開く |
| OF_READWRITE | 読み取り/書き込み可能で開く |
| OF_SHARE_DENY_NONE | 他のプロセスから読み書き可能 |
| OF_SHARE_DENY_READ | 他のプロセスから読み取り可能 |
| OF_SHARE_DENY_WRITE | 他のプロセスから書き込み可能 |
| OF_SHARE_EXCLUSIVE | 他のプロセスからアクセス不可 |
|
| pclsidhandler | 標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。 |
| RET | 0ならば成功。 |
機能 ストリームからファイルインターフェイスポインタを作る
| ppfile | ファイルインターフェイスポインタを受け取るアドレス。 |
| nStreams | ストリームの数。 |
| ppavi | ストリームインターフェイスポインタを格納する配列へのポインタ。配列はnStreams分の大きさが必要です。 |
| RET | 0ならば成功。 |
機能 AVIファイルを閉じる
| pfile | ファイルインターフェイスポインタ。 |
| RET | ファイルの参照カウンタを返す。(デバック目的に使用) |
機能 ファイルの情報を取得する
機能 ストリームを開く
| pfile | ファイルインターフェイスポインタ。 |
| ppavi | ストリームインターフェイスポインタを受け取るアドレス。 |
| fccType | 開くストリームタイプを示す4文字のコードです。0の場合、すべてのストリームタイプが対象になります。下記の4種類が既に定義されています。
| streamtypeAUDIO | オーディオストリーム |
| streamtypeMIDI | MIDIストリーム |
| streamtypeTEXT | テキストストリーム |
| streamtypeVIDEO | ビデオストリーム |
|
| lParam | ストリームタイプのカウンタです。0からストリーム数-1の範囲です。 |
| RET | 0ならば成功。 |
機能 ストリームをファイルから開く
| ppavi | ストリームインターフェイスポインタを受け取るアドレス。 |
| szFile | ファイル名。 |
| fccType | 開くストリームタイプを示す4文字のコードです。0の場合、すべてのストリームタイプが対象になります。下記の4種類が既に定義されています。
| streamtypeAUDIO | オーディオストリーム |
| streamtypeMIDI | MIDIストリーム |
| streamtypeTEXT | テキストストリーム |
| streamtypeVIDEO | ビデオストリーム |
|
| mode | ファイルを開く時に使用するアクセスモード。
| OF_CREATE | このAPIではファイルを新規に作ることはできない |
| OF_READ | ファイルを読み取り専用で開く |
| OF_WRITE | ファイルを書き込み可能で開く |
| OF_READWRITE | 読み取り/書き込み可能で開く |
| OF_SHARE_DENY_NONE | 他のプロセスから読み書き可能 |
| OF_SHARE_DENY_READ | 他のプロセスから読み取り可能 |
| OF_SHARE_DENY_WRITE | 他のプロセスから書き込み可能 |
| OF_SHARE_EXCLUSIVE | 他のプロセスからアクセス不可 |
|
| pclsidhandler | 標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。 |
| RET | 0ならば成功。 |
機能 ストリームを新規作成する
| pfile | ファイルインターフェイスポインタ。 |
| ppavi | ストリームインターフェイスポインタを受け取るアドレス。 |
| psi | AVISTREAMINFO構造体へのポインタ。 |
| RET | 0ならば成功。 |
機能 圧縮ストリームを作る
| ppsCompressed | 圧縮ストリームインターフェイスポインタを受け取るアドレス。 |
| psSource | 圧縮ストリームインターフェイスポインタの元になるストリームインターフェイスポインタです。 |
| lpOptions | 圧縮オプションを格納するAVICOMPRESSOPTIONS構造体へのポインタです。 |
| pclsidhandler | 標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。 |
| RET | 0ならば成功。 |
機能 ストリームを閉じる
| pavi | ストリームインターフェイスポインタ。 |
| RET | ストリームの参照カウンタを返す。(デバック目的に使用) |
機能 ストリームの情報を取得する
機能 ストリームのフォーマットを読み込む
| pavi | ストリームインターフェイスポインタ。 |
| lPos | サンプル番号。 |
| lpFormat | フォーマットデータを格納するバッファへのポインタ。NULLのときにはlpcbFormatにフォーマットのバイト数が返されます。 |
| lpcbFormat | 読み込んだフォーマットのバイト数。 |
| RET | 0ならば成功。 |
機能 ストリームのフォーマットを設定する
| pavi | ストリームインターフェイスポインタ。 |
| lPos | サンプル番号。 |
| lpFormat | フォーマットデータを格納するバッファへのポインタ。 |
| cbFormat | フォーマットのバイト数。 |
| RET | 0ならば成功。 |
機能 ストリームのデータを読み込む
| pavi | ストリームインターフェイスポインタ。 |
| lStart | 読み込みをはじめるサンプル番号。 |
| lSamples | サンプル数。 |
| lpBuffer | データを格納するバッファへのポインタ。 |
| cbBuffer | データのバイト数。 |
| plBytes | 読み込んだデータのバイト数。NULLにすることができる。 |
| plSamples | 読み込んだデータのサンプル数。NULLにすることができる。 |
| RET | 0ならば成功。 |
機能 ストリームにデータを書き込む
| pavi | ストリームインターフェイスポインタ。 |
| lStart | 書き込みをはじめるサンプル番号。 |
| lSamples | サンプル数。 |
| lpBuffer | データを格納するバッファへのポインタ。 |
| cbBuffer | データのバイト数。 |
| dwFlags | ビデオストリームの場合、AVIIF_KEYFRAMEのみが定義されている。AVIIF_KEYFRAMEを指定したとき、フレームはキーフレームになる。 |
| plSamples | 書き込んだデータのサンプル数。NULLにすることができる。 |
| plBytes | 書き込んだデータのバイト数。NULLにすることができる。 |
| RET | 0ならば成功。 |
機能 ストリームの先頭のサンプル番号を求める
| pavi | ストリームインターフェイスポインタ。 |
| RET | ストリームの先頭のサンプル番号。エラーの場合は-1が返される。 |
機能 ストリームの長さを求める
| pavi | ストリームインターフェイスポインタ。 |
| RET | ストリームのサンプル数。エラーの場合は-1が返される。 |
機能 ストリームのサンプル番号から時間を求める
| pavi | ストリームインターフェイスポインタ。 |
| lSample | サンプル番号。 |
| RET | サンプルの時間(ミリ秒単位)。エラーの場合は-1が返される。 |
機能 ストリームの時間からサンプル番号を求める
| pavi | ストリームインターフェイスポインタ。 |
| lTime | 時間(ミリ秒単位)。 |
| RET | サンプル番号。エラーの場合は-1が返される。 |
機能 ビデオストリームを検索する
| pavi | ストリームインターフェイスポインタ。 |
| lPos | 検索をはじめるフレーム。 |
| lFlags | フレームの種類と検索する方向を指定するフラグ。フォーマットの種類のいずれかと検索する方向のいずれか1つづつを指定します。
フォーマットの種類
| FIND_ANY | 空でないフレーム。 |
| FIND_FORMAT | フォーマット変更。 |
| FIND_KEY | キーフレーム。 |
検索する方向
| FIND_FROM_START | ストリームの先頭から検索する。 |
| FIND_PREV | 前方。(検索を始めるフレームを含む) |
| FIND_NEXT | 後方。(検索を始めるフレームを含む) |
|
| RET | 見つかったフレーム。見つからない場合は-1が返される。 |
機能 ビデオストリームからGetFrameオブジェクトを取得する
| pavi | ストリームインターフェイスポインタ。 |
| pbmih | BITMAPINFOHEADER構造体へのポインタ。フレームはBITMAPINFOHEADER構造体で指定されたフォーマットで展開されます。AVIGETFRAMEF_BESTDISPLAYFMTのときには表示に最適なフォーマットで展開されます。NULLのときはデフォルトのフォーマットで展開されます。 |
| RET | GetFrameオブジェクト。エラーの場合はNULLが返される。 |
機能 DIBに展開されたフレームを取得する
| pget | GetFrameオブジェクト。 |
| lPos | 取得するフレーム。(サンプル番号) |
| RET | パックDIBへのポインタ。この値は次にAVIStreamGetFrameを呼び出すかAVIStreamGetFrameCloseを呼び出すまで有効です。 |
機能 ビデオストリームから取得したGetFrameオブジェクトを解放する
| pget | GetFrameオブジェクト。 |
| RET | 0ならば成功。 |
機能 ストリームを保存する
| szFile | ファイル名。 |
| pclsidhandler | 標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。 |
| lpfnCallback | コールバック関数へのポインタ。コールバック関数を使用しない場合NULLを指定できる。 |
| nStreams | ストリームの数。 |
| pavi | ストリームインターフェイスポインタ。 |
| lpOptions | AVICOMPRESSOPTIONS構造体へのポインタ。 |
| RET | AVIERR_OKならば成功。 |
備考 引数のpaviとlpOptionsはnStreamsの数だけ繰り返されます。
コールバック関数
LONG FAR PASCAL SaveCallback(int nPercent)
| nPercent | 保存処理の進行状況をパーセントで示します。 |
| RET | 保存処理を継続するときにはAVIERR_OK、中断するときにはAVIERR_USERABORTを返します。 |
機能 ストリームを保存するV
| szFile | ファイル名。 |
| pclsidhandler | 標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。 |
| lpfnCallback | コールバック関数へのポインタ。コールバック関数を使用しない場合NULLを指定できる。 |
| nStreams | ストリームの数。 |
| ppavi | ストリームインターフェイスポインタを格納する配列へのポインタ。配列はnStreams分の大きさが必要です。 |
| plpOptions | 圧縮オプションを格納するためのAVICOMPRESSOPTIONS構造体へのポインタを格納する配列へのポインタです。配列はnStreams分の大きさが必要です。 |
| RET | AVIERR_OKならば成功。 |
コールバック関数
LONG FAR PASCAL SaveCallback(int nPercent)
| nPercent | 保存処理の進行状況をパーセントで示します。 |
| RET | 保存処理を継続するときにはAVIERR_OK、中断するときにはAVIERR_USERABORTを返します。 |
機能 保存オプションを取得する
| hWnd | ダイアログボックスの親ウインドウ。 |
| uiFlags | ダイアログボックスの表示に関するフラグを指定します。
| ICMF_CHOOSE_KEYFRAME | キーフレームの項目を表示する。 |
| ICMF_CHOOSE_DATARATE | データ比率の項目を表示する。 |
| ICMF_CHOOSE_PREVIEW | プレビューボタンを表示する。 |
|
| nStreams | ストリームの数。 |
| ppavi | ストリームインターフェイスポインタを格納する配列へのポインタ。配列はnStreams分の大きさが必要です。 |
| plpOptions | 圧縮オプションを格納するためのAVICOMPRESSOPTIONS構造体へのポインタを格納する配列へのポインタです。配列はnStreams分の大きさが必要です。 |
| RET | ユーザーがOKボタンを押したときTRUE、キャンセルボタンを押したときFALSEが返されます。 |
機能 保存オプションのリソースを解放する
機能 編集ストリームを作成する
| ppsEditable | 編集ストリームインターフェイスポインタを受け取るアドレス。 |
| psSource | 編集ストリームインターフェイスポインタの元になるストリームインターフェイスポインタです。NULLを指定すると空の編集ストリームを作成します。 |
| RET | 0ならば成功。 |
機能 編集ストリームの複写を作成する
| pavi | 編集ストリームインターフェイスポインタ。 |
| ppResult | 複写された編集ストリームインターフェイスポインタを受け取るアドレス。 |
| RET | 0ならば成功。 |
機能 編集ストリームをコピーする
| pavi | 編集ストリームインターフェイスポインタ。 |
| plStart | コピーをはじめるストリームの位置(サンプル番号)を格納する変数へのポインタです。実際にコピーをはじめた位置が返されます。 |
| plLength | コピーするサンプル数を格納する変数へのポインタです。実際にコピーされたサンプル数が返されます。 |
| ppResult | コピーされた編集ストリームインターフェイスポインタを受け取るアドレス。 |
| RET | 0ならば成功。 |
機能 編集ストリームをカットする
| pavi | 編集ストリームインターフェイスポインタ。 |
| plStart | カットをはじめるストリームの位置(サンプル番号)を格納する変数へのポインタです。実際に削除をはじめた位置が返されます。 |
| plLength | カットするサンプル数を格納する変数へのポインタです。実際にカットされたサンプル数が返されます。 |
| ppResult | カットされた編集ストリームインターフェイスポインタを受け取るアドレス。カットされた部分が不要な場合、アプリケーションはこれをAVIStreamReleaseで解放する必要があります。 |
| RET | 0ならば成功。 |
機能 編集ストリームに貼り付ける
| pavi | 編集ストリームインターフェイスポインタ。 |
| plPost | 挿入されるストリームの位置(サンプル番号)を格納する変数へのポインタです。実際に挿入された位置が返されます。 |
| plLength | 実際に貼り付けられたサンプル数が返されます。 |
| pstream | 貼り付けるストリームインターフェイスポインタ。編集ストリームインターフェイスポインタである必要ありません。 |
| lStart | pstreamの貼り付けを開始する位置(サンプル番号)です。 |
| lLength | pstreamの貼り付けるサンプル数です。-1を指定した場合、ストリーム全体を貼り付けます。 |
| RET | 0ならば成功。 |
機能 編集ストリームの情報を設定する
備考 このAPIで設定できるAVISTREAMINFO構造体のメンバは下記のとおりです。
| fccType | 不可 |
| fccHandler | 不可 |
| dwFlags | 不可 |
| dwCaps | 不可 |
| wPriority | 可 |
| wLanguage | 可 |
| dwScale | 可 |
| dwRate | 可 |
| dwStart | 可 |
| dwLength | 不可 |
| dwInitialFrames | 不可 |
| dwSuggestedBufferSize | 不可 |
| dwQuality | 可 |
| dwSampleSize | 不可 |
| rcFrame | 可 |
| dwEditCount | 不可 |
| dwFormatChangeCount | 不可 |
| szName | 可 |
機能 編集ストリームの説明文を設定する
| pavi | 編集ストリームインターフェイスポインタ。 |
| lpszName | ストリームを説明するNULLで終わる文字列です。 |
| RET | 0ならば成功。 |
備考 このAPIはAVISTREAMINFO構造体のszNameメンバを変更します。
機能 クリップボードのAVIファイルを削除する
機能 クリップボードのAVIファイルをコピーする
| lppf | ファイルインターフェイスポインタを受け取るアドレス。 |
| RET | 0ならば成功。 |
備考 クリップボードにAVIファイルがない場合、CF_DIBまたはCF_WAVE形式のクリップボードデータから、ビデオストリームまたはオーディオストリームを作ります。
機能 クリップボードにAVIファイルをコピーする
| pf | ファイルインターフェイスポインタ。 |
| RET | 0ならば成功。 |
機能 クリップボードのストリームデータから編集ストリームを作成する
| cfFormat | クリップボード形式。 |
| hGlobal | クリップボードのストリームデータのハンドル。 |
| ppstream | 編集ストリームインターフェイスポインタを受け取るアドレス。 |
| RET | 0ならば成功。 |
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;
| fccType | 開くストリームタイプを示す4文字のコードです。下記の4種類が既に定義されています。
| streamtypeAUDIO | オーディオストリーム |
| streamtypeMIDI | MIDIストリーム |
| streamtypeTEXT | テキストストリーム |
| streamtypeVIDEO | ビデオストリーム |
|
| fccHandler | ビデオストリームを保存する時に圧縮するハンドラの4文字のコードです。(例えばmmioFOURCC('M','S','V','C')) ビデオストリームでのみ使われます。 |
| dwKeyFrameEvery | キーフレームの周期です。AVICOMPRESSF_KEYFRAMESフラグを指定したときのみこの値は使われます。それ以外ではすべてのフレームがキーフレームです。 |
| dwQuality | ビデオストリームの品質。 |
| dwBytesPerSecond | データ比率。AVICOMPRESSF_DATARATEフラグを指定したときのみこの値は使われます。 |
| dwFlags | 圧縮フラグ。
| AVICOMPRESSF_DATARATE | dwBytesPerSecondのデータ比率を使ってビデオストリームを圧縮する。 |
| AVICOMPRESSF_INTERLEAVE | dwInterleaveEveryフレームごとにインターリーブする。 |
| AVICOMPRESSF_KEYFRAMES | dwKeyFrameEveryフレームごとにキーフレームを設定する。このフラグが指定されていないときにはすべてのフレームがキーフレームになります。 |
| AVICOMPRESSF_VALID | この構造体のデータを使ってAVISaveOptionsの初期値を設定します。このフラグが指定されていないときにはデフォルトの値が使われます。 |
|
| lpFormat | データフォーマット構造体へのポインタ。オーディオストリームではWAVEFORMAT構造体へのポインタです。 |
| cbFormat | lpFormatで指定したデータフォーマット構造体のバイト数。 |
| lpParams | ビデオ圧縮用のデータ。 |
| cbParams | lpParamsで指定したデータのバイト数。 |
| dwInterleaveEvery | インターリーブ値。AVICOMPRESSF_INTERLEAVEフラグを指定したときのみこの値は使われます。 |
typedef struct {
WORD wLongsPerEntry;
BYTE bIndexSubType;
BYTE bIndexType;
DWORD nEntriesInUse;
DWORD dwChunkId;
DWORDLONG qwBaseOffset;
DWORD dwReserved3;
struct {
DWORD dwOffset;
DWORD dwSize;
DWORD dwOffsetField2;
} aIndex[];
} AVIFIELDINDEX;
| wLongsPerEntry | 必ず3です。 |
| bIndexSubType | 必ずAVI_INDEX_2FIELDです。 |
| bIndexType | 必ずAVI_INDEX_OF_CHUNKSです。 |
| nEntriesInUse | aIndexの要素数。 |
| dwChunkId | チャンクID、??dbまたは??dcです。 |
| qwBaseOffset | AVISTDINDEX_ENTRY構造体のdwOffsetとこの値の合計が実際のオフセットになります。 |
| dwReserved_3 | 予約。 |
| aIndex.dwOffset | チャンクのデータのqwBaseOffsetに対する相対オフセットです。 |
| aIndex.dwSize | チャンクのバイト数です。 |
| aIndex.dwOffsetField2 | チャンクのデータの第2フィールドへのqwBaseOffsetに対する相対オフセットです。 |
typedef struct {
DWORD dwMaxBytesPerSec;
DWORD dwFlags;
DWORD dwCaps;
DWORD dwStreams;
DWORD dwSuggestedBufferSize;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwScale;
DWORD dwRate;
DWORD dwLength;
DWORD dwEditCount;
char szFileType[64];
} AVIFILEINFO;
| dwMaxBytesPerSec | 近似の最大レート。 |
| dwFlags | アプリケーションフラグ。
| AVIFILEINFO_HASINDEX | AVIファイルはファイルの最後にインデックスをもっている。処理速度の向上のためにすべてのAVIファイルはインデックスを含まなければならない。 |
| AVIFILEINFO_MUSTUSEINDEX | ファイルのインデックスにはファイルのチャンクを再生する順番が含まれている。データを再生するときにはこのインデックスが使われる。 |
| AVIFILEINFO_ISINTERLEAVED | AVIファイルはインターリーブされている。 |
| AVIFILEINFO_WASCAPTUREFILE | AVIファイルはリアルタイムビデオをキャプチャーするために使われる。 |
| AVIFILEINFO_COPYRIGHTED | AVIファイルは著作権をともなう。アプリケーションはデータを複写してはいけない。 |
|
| dwCaps | 機能フラグ。
| AVIFILECAPS_CANREAD | アプリケーションは読み取り専用で開くことができる。 |
| AVIFILECAPS_CANWRITE | アプリケーションは書き込み可能で開くことができる。 |
| AVIFILECAPS_ALLKEYFRAMES | すべてのフレームはキーフレームである。 |
| AVIFILECAPS_NOCOMPRESSION | 圧縮されていない。 |
|
| dwStreams | ファイルに含まれるストリームの数。 |
| dwSuggestedBufferSize | ファイルを読み込むときに適したバッファサイズです。この値は0のときもある。 |
| dwWidth | ビットマップの幅。 |
| dwHeight | ビットマップの高さ。 |
| dwScale | ファイルの時間単位です。 |
| dwRate | ファイルのレートです。 |
| dwLength | ファイルの長さ。dwScaleとdwRateで単位が定義される。 |
| dwEditCount | ファイルを編集(追加または削除)した回数です。 |
| szFileType | ファイルタイプを説明するNULLで終わる文字列です。 |
typedef struct
{
DWORD ckid;
DWORD dwFlags;
DWORD dwChunkOffset;
DWORD dwChunkLength;
} AVIINDEXENTRY;
| ckid | チャンクID。先頭の2文字はストリーム番号を示す大文字16進数で、後の2文字はチャンクのタイプを示します。
| ??db | 未圧縮DIB |
| ??dc | 圧縮されたDIB |
| ??pc | パレットの変更を示すAVIPALCHANGE構造体 |
| ??wb | WAVEオーディオ |
|
| dwFlags | フラグ。
| AVIIF_LIST | チャンクはリストチャンクである。 |
| AVIIF_KEYFRAME | チャンクはキーフレームである。 |
|
| dwChunkOffset | チャンクの4文字コードのオフセット。LISTチャンクmoviのmoviからの相対オフセット。 |
| dwChunkLength | チャンクのバイト数。 |
typedef struct
{
BYTE bFirstEntry;
BYTE bNumEntries;
WORD wFlags;
PALETTEENTRY peNew[];
} AVIPALCHANGE;
| bFirstEntry | 変更するパレットの最初のエントリー番号。 |
| bNumEntries | 変更するパレットのエントリー数。0ならば256。 |
| wFlags | 未使用。 |
| peNew[] | 新しいパレット。 |
typedef struct {
FOURCC fccType;
FOURCC fccHandler;
DWORD dwFlags;
WORD wPriority;
WORD wLanguage;
DWORD dwInitialFrames;
DWORD dwScale;
DWORD dwRate;
DWORD dwStart;
DWORD dwLength;
DWORD dwSuggestedBufferSize;
DWORD dwQuality;
DWORD dwSampleSize;
RECT rcFrame;
} AVIStreamHeader;
| fccType | 開くストリームタイプを示す4文字のコードです。下記の4種類が既に定義されています。
| streamtypeAUDIO | オーディオストリーム |
| streamtypeMIDI | MIDIストリーム |
| streamtypeTEXT | テキストストリーム |
| streamtypeVIDEO | ビデオストリーム |
|
| fccHandler | ビデオストリームを保存する時に圧縮するハンドラの4文字のコードです。(例えばmmioFOURCC('M','S','V','C')) ビデオストリームでのみ使われます。 |
| dwFlags | ストリームフラグ。
| AVISF_DISABLED | ユーザーが使用可能にしたときにストリームはレンダされる。 |
| AVISF_VIDEO_PALCHANGES | ビデオストリームはパレット変更を含む。このフラグは再生ソフトにパレットをアニメーションさせる必要があることを警告する。 |
|
| dwCaps | 機能フラグ。(現在は未使用) |
| wPriority | ストリームの優先順位。 |
| wLanguage | ストリームの言語。 |
| dwScale | ストリームの時間単位です。 |
| dwRate | ストリームのレートです。 |
| dwStart | AVIファイルの最初のフレームのサンプル番号です。dwScaleとdwRateで単位が定義される。通常は0です。 |
| dwLength | ストリームの長さ。dwScaleとdwRateで単位が定義される。 |
| dwInitialFrames | オーティオスキュー。インターリーブファイル内のビデオストリームの前方へオーディオストリームをどの程度ずらすかを指定する。通常は0.75秒。 |
| dwSuggestedBufferSize | ストリームを読み込むときに適したバッファサイズです。この値は0のときもある。 |
| dwQuality | ビデオストリームの品質です。0〜10000の範囲で-1のときはデフォルトの品質です。 |
| dwSampleSize | 1つのデータサンプルのバイトサイズです。0の場合、サンプルのサイズは可変です。 |
| rcFrame | 表示を行う矩形です。ビデオストリームでのみ使われます。 |
typedef struct {
DWORD fccType;
DWORD fccHandler;
DWORD dwFlags;
DWORD dwCaps;
WORD wPriority;
WORD wLanguage;
DWORD dwScale;
DWORD dwRate;
DWORD dwStart;
DWORD dwLength;
DWORD dwInitialFrames;
DWORD dwSuggestedBufferSize;
DWORD dwQuality;
DWORD dwSampleSize;
RECT rcFrame;
DWORD dwEditCount;
DWORD dwFormatChangeCount;
char szName[64];
} AVISTREAMINFO;
| fccType | 開くストリームタイプを示す4文字のコードです。下記の4種類が既に定義されています。
| streamtypeAUDIO | オーディオストリーム |
| streamtypeMIDI | MIDIストリーム |
| streamtypeTEXT | テキストストリーム |
| streamtypeVIDEO | ビデオストリーム |
|
| fccHandler | ビデオストリームを保存する時に圧縮するハンドラの4文字のコードです。(例えばmmioFOURCC('M','S','V','C')) ビデオストリームでのみ使われます。 |
| dwFlags | ストリームフラグ。
| AVISTREAMINFO_DISABLED | ユーザーが使用可能にしたときにストリームはレンダされる。 |
| AVISTREAMINFO_FORMATCHANGES | ビデオストリームはパレット変更を含む。このフラグは再生ソフトにパレットをアニメーションさせる必要があることを警告する。 |
|
| dwCaps | 機能フラグ。(現在は未使用) |
| wPriority | ストリームの優先順位。 |
| wLanguage | ストリームの言語。 |
| dwScale | ストリームの時間単位です。 |
| dwRate | ストリームのレートです。 |
| dwStart | AVIファイルの最初のフレームのサンプル番号です。dwScaleとdwRateで単位が定義される。通常は0です。 |
| dwLength | ストリームの長さ。dwScaleとdwRateで単位が定義される。 |
| dwInitialFrames | オーティオスキュー。インターリーブファイル内のビデオストリームの前方へオーディオストリームをどの程度ずらすかを指定する。通常は0.75秒。 |
| dwSuggestedBufferSize | ストリームを読み込むときに適したバッファサイズです。この値は0のときもある。 |
| dwQuality | ビデオストリームの品質です。0〜10000の範囲で-1のときはデフォルトの品質です。 |
| dwSampleSize | 1つのデータサンプルのバイトサイズです。0の場合、サンプルのサイズは可変です。 |
| rcFrame | 表示を行う矩形です。ビデオストリームでのみ使われます。 |
| dwEditCount | ファイルを編集(追加または削除)した回数です。 |
| dwFormatChangeCount | フォーマットの変更回数。 |
| szName | ストリームを説明するNULLで終わる文字列です。 |
typedef {
WORD wLongsPerEntry;
BYTE bIndexSubType;
BYTE bIndexType;
DWORD nEntriesInUse;
DWORD dwChunkId;
DWORDLONG qwBaseOffset;
DWORD dwReserved_3;
struct {
DWORD dwOffset;
DWORD dwSize;
} aIndex[];
} AVISTDINDEX;
| wLongsPerEntry | 必ず2です。 |
| bIndexSubType | 必ず0です。 |
| bIndexType | 必ずAVI_INDEX_OF_CHUNKSです。 |
| nEntriesInUse | aIndexの要素数。 |
| dwChunkId | チャンクID、例えば??db、??dc、??wbなどです。 |
| qwBaseOffset | AVISTDINDEX_ENTRY構造体のdwOffsetとこの値の合計が実際のオフセットになります。 |
| dwReserved_3 | 予約。 |
| aIndex.dwOffset | チャンクのデータのqwBaseOffsetに対する相対オフセットです。 |
| aIndex.dwSize | チャンクのバイト数です。 |
typedef struct {
WORD wLongsPerEntry;
BYTE bIndexSubType;
BYTE bIndexType;
DWORD nEntriesInUse;
DWORD dwChunkId;
DWORD dwReserved[3];
struct {
DWORDLONG qwOffset;
DWORD dwSize;
DWORD dwDuration;
} aIndex[];
} AVISUPERINDEX;
| wLongsPerEntry | 必ず4です。 |
| bIndexSubType | AVISTDINDEX構造体のインデックスの時には0、AVIFIELDINDEX構造体のインデックスの時にはAVI_INDEX_2FIELDです。 |
| bIndexType | 必ずAVI_INDEX_OF_INDEXSです。 |
| nEntriesInUse | aIndexの要素数。 |
| dwChunkId | チャンクID、例えば??db、??dc、??wbなどです。 |
| dwReserved | 予約。 |
| aIndex.qwOffset | チャンクIDのファイルオフセットです。 |
| aIndex.dwSize | チャンクのバイト数です。 |
| aIndex.dwDuration | チャンクが占めるストリーム単位の時間。 |
typedef struct
{
DWORD dwMicroSecPerFrame;
DWORD dwMaxBytesPerSec;
DWORD dwPaddingGranularity;
DWORD dwFlags;
DWORD dwTotalFrames;
DWORD dwInitialFrames;
DWORD dwStreams;
DWORD dwSuggestedBufferSize;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwReserved[4];
} MainAVIHeader;
| dwMicroSecPerFrame | 1フレームのミリ秒単位の表示時間、または0です。 |
| dwMaxBytesPerSec | 近似の最大レート。 |
| dwPaddingGranularity | アライメントのバイト数、通常は2048バイトです。 |
| dwFlags | アプリケーションフラグ。
| AVIF_HASINDEX | AVIファイルはファイルの最後にインデックスをもっている。処理速度の向上のためにすべてのAVIファイルはインデックスを含まなければならない。 |
| AVIF_MUSTUSEINDEX | ファイルのインデックスにはファイルのチャンクを再生する順番が含まれている。データを再生するときにはこのインデックスが使われる。 |
| AVIF_ISINTERLEAVED | AVIファイルはインターリーブされている。 |
| AVIF_WASCAPTUREFILE | AVIファイルはリアルタイムビデオをキャプチャーするために使われる。 |
| AVIF_COPYRIGHTED | AVIファイルは著作権をともなう。アプリケーションはデータを複写してはいけない。 |
|
| dwTotalFrames | ファイルの中のフレーム数。 |
| dwInitialFrames | オーティオスキュー。インターリーブファイル内のビデオストリームの前方へオーディオストリームをどの程度ずらすかを指定する。通常は0.75秒。 |
| dwStreams | ファイルに含まれるストリームの数。 |
| dwSuggestedBufferSize | ファイルを読み込むときに適したバッファサイズです。この値は0のときもある。 |
| dwWidth | ビットマップの幅。 |
| dwHeight | ビットマップの高さ。 |
| dwReserved | 予約。 |