Video for WindowsのAVI API一覧

ライブラリ

VOID AVIFileInit(VOID)

機能 ライブラリの初期化


VOID AVIFileExit(VOID)

機能 ライブラリの解放


ファイル

STDAPI AVIFileOpen(PAVIFILE FAR *ppfile,LPCTSTR szFile,UINT mode,CLSID FAR *pclsidHandler)

機能 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標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。
RET0ならば成功。

STDAPI AVIMakeFileFromStreams(PAVIFILE *ppfile,int nStreams,PAVISTREAM *ppavi)

機能 ストリームからファイルインターフェイスポインタを作る

ppfileファイルインターフェイスポインタを受け取るアドレス。
nStreamsストリームの数。
ppaviストリームインターフェイスポインタを格納する配列へのポインタ。配列はnStreams分の大きさが必要です。
RET0ならば成功。

ULONG AVIFileRelease(PAVIFILE pfile)

機能 AVIファイルを閉じる

pfileファイルインターフェイスポインタ。
RETファイルの参照カウンタを返す。(デバック目的に使用)

STDAPI AVIFileInfo(PAVIFILE pfile,LPAVIFILEINFO pfi,LONG lSize)

機能 ファイルの情報を取得する

pfileファイルインターフェイスポインタ。
pfiAVIFILEINFO構造体へのポインタ。
lSizeAVIFILEINFO構造体のバイトサイズ。
RET0ならば成功。

ストリーム

STDAPI AVIFileGetStream(PAVIFILE pfile,PAVISTREAM FAR *ppavi,DWORD fccType,LONG lParam)

機能 ストリームを開く

pfileファイルインターフェイスポインタ。
ppaviストリームインターフェイスポインタを受け取るアドレス。
fccType開くストリームタイプを示す4文字のコードです。0の場合、すべてのストリームタイプが対象になります。下記の4種類が既に定義されています。
streamtypeAUDIOオーディオストリーム
streamtypeMIDIMIDIストリーム
streamtypeTEXTテキストストリーム
streamtypeVIDEOビデオストリーム
lParamストリームタイプのカウンタです。0からストリーム数-1の範囲です。
RET0ならば成功。

STDAPI AVIStreamOpenFromFile(PAVISTREAM FAR *ppavi,LPCTSTR szfile,DWORD fccType,LONG lParam,UINT mode,CLSID FAR *pclsidHandler)

機能 ストリームをファイルから開く

ppaviストリームインターフェイスポインタを受け取るアドレス。
szFileファイル名。
fccType開くストリームタイプを示す4文字のコードです。0の場合、すべてのストリームタイプが対象になります。下記の4種類が既に定義されています。
streamtypeAUDIOオーディオストリーム
streamtypeMIDIMIDIストリーム
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標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。
RET0ならば成功。

STDAPI AVIFileCreateStream(PAVIFILE pfile,PAVISTREAM FAR *ppavi,LPAVISTREAMINFO psi)

機能 ストリームを新規作成する

pfileファイルインターフェイスポインタ。
ppaviストリームインターフェイスポインタを受け取るアドレス。
psiAVISTREAMINFO構造体へのポインタ。
RET0ならば成功。

STDAPI AVIMakeCompressedStream(PAVISTREAM *ppsCompressed,PAVISTREAM psSource,LPAVICOMPRESSOPTIONS lpOptions,CLSID *pclsidHandler)

機能 圧縮ストリームを作る

ppsCompressed圧縮ストリームインターフェイスポインタを受け取るアドレス。
psSource圧縮ストリームインターフェイスポインタの元になるストリームインターフェイスポインタです。
lpOptions圧縮オプションを格納するAVICOMPRESSOPTIONS構造体へのポインタです。
pclsidhandler標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。
RET0ならば成功。

LONG AVIStreamRelease(PAVISTREAME pavi)

機能 ストリームを閉じる

paviストリームインターフェイスポインタ。
RETストリームの参照カウンタを返す。(デバック目的に使用)

STDAPI AVIStreamInfo(PAVISTREAM pavi,LPAVISTREAMINFO psi,LONG lSize)

機能 ストリームの情報を取得する

paviストリームインターフェイスポインタ。
psiAVISTREAMINFO構造体へのポインタ。
lSizeAVISTREAMINFO構造体のバイトサイズ。
RET0ならば成功。

STDAPI AVIStreamReadFormat(PAVISTREAM pavi,LONG lPos,LPVOID lpFormat,LONG FAR *lpcbFormat)

機能 ストリームのフォーマットを読み込む

paviストリームインターフェイスポインタ。
lPosサンプル番号。
lpFormatフォーマットデータを格納するバッファへのポインタ。NULLのときにはlpcbFormatにフォーマットのバイト数が返されます。
lpcbFormat読み込んだフォーマットのバイト数。
RET0ならば成功。

STDAPI AVIStreamSetFormat(PAVISTREAM pavi,LONG lPos,LPVOID lpFormat,LONG cbFormat)

機能 ストリームのフォーマットを設定する

paviストリームインターフェイスポインタ。
lPosサンプル番号。
lpFormatフォーマットデータを格納するバッファへのポインタ。
cbFormatフォーマットのバイト数。
RET0ならば成功。

STDAPI AVIStreamRead(PAVISTREAM pavi,LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,LONG FAR *plBytes,LONG FAR *plSamples)

機能 ストリームのデータを読み込む

paviストリームインターフェイスポインタ。
lStart読み込みをはじめるサンプル番号。
lSamplesサンプル数。
lpBufferデータを格納するバッファへのポインタ。
cbBufferデータのバイト数。
plBytes読み込んだデータのバイト数。NULLにすることができる。
plSamples読み込んだデータのサンプル数。NULLにすることができる。
RET0ならば成功。

STDAPI AVIStreamWrite(PAVISTREAM pavi,LONG lStart,LONG lSamples,LPVOID lpBuffer,LONG cbBuffer,DWORD dwFlags,LONG FAR *plSamples,LONG FAR *plBytes)

機能 ストリームにデータを書き込む

paviストリームインターフェイスポインタ。
lStart書き込みをはじめるサンプル番号。
lSamplesサンプル数。
lpBufferデータを格納するバッファへのポインタ。
cbBufferデータのバイト数。
dwFlagsビデオストリームの場合、AVIIF_KEYFRAMEのみが定義されている。AVIIF_KEYFRAMEを指定したとき、フレームはキーフレームになる。
plSamples書き込んだデータのサンプル数。NULLにすることができる。
plBytes書き込んだデータのバイト数。NULLにすることができる。
RET0ならば成功。

サンプル

LONG AVIStreamStart(PAVISTREAM pavi)

機能 ストリームの先頭のサンプル番号を求める

paviストリームインターフェイスポインタ。
RETストリームの先頭のサンプル番号。エラーの場合は-1が返される。

LONG AVIStreamLength(PAVISTREAM pavi)

機能 ストリームの長さを求める

paviストリームインターフェイスポインタ。
RETストリームのサンプル数。エラーの場合は-1が返される。

LONG AVIStreamSampleToTime(PAVISTREAM pavi,LONG lSample)

機能 ストリームのサンプル番号から時間を求める

paviストリームインターフェイスポインタ。
lSampleサンプル番号。
RETサンプルの時間(ミリ秒単位)。エラーの場合は-1が返される。

LONG AVIStreamTimeToSample(PAVISTREAM pavi,LONG lTime)

機能 ストリームの時間からサンプル番号を求める

paviストリームインターフェイスポインタ。
lTime時間(ミリ秒単位)。
RETサンプル番号。エラーの場合は-1が返される。

ビデオストリーム/フレーム関係

LOGN AVIStreamFindSample(PAVISTREAM pavi,LONG lPos,LONG lFlags)

機能 ビデオストリームを検索する

paviストリームインターフェイスポインタ。
lPos検索をはじめるフレーム。
lFlagsフレームの種類と検索する方向を指定するフラグ。フォーマットの種類のいずれかと検索する方向のいずれか1つづつを指定します。
フォーマットの種類
FIND_ANY空でないフレーム。
FIND_FORMATフォーマット変更。
FIND_KEYキーフレーム。
検索する方向
FIND_FROM_STARTストリームの先頭から検索する。
FIND_PREV前方。(検索を始めるフレームを含む)
FIND_NEXT後方。(検索を始めるフレームを含む)
RET見つかったフレーム。見つからない場合は-1が返される。

PGETFRAME AVIStreamGetFrameOpen(PAVISTREAM pavi,LPBITMAPINFOHEADER pbmih)

機能 ビデオストリームからGetFrameオブジェクトを取得する

paviストリームインターフェイスポインタ。
pbmihBITMAPINFOHEADER構造体へのポインタ。フレームはBITMAPINFOHEADER構造体で指定されたフォーマットで展開されます。AVIGETFRAMEF_BESTDISPLAYFMTのときには表示に最適なフォーマットで展開されます。NULLのときはデフォルトのフォーマットで展開されます。
RETGetFrameオブジェクト。エラーの場合はNULLが返される。

LPVOID AVIStreamGetFrame(PGETFRAME pget,LONG lPos)

機能 DIBに展開されたフレームを取得する

pgetGetFrameオブジェクト。
lPos取得するフレーム。(サンプル番号)
RETパックDIBへのポインタ。この値は次にAVIStreamGetFrameを呼び出すかAVIStreamGetFrameCloseを呼び出すまで有効です。

STDAPI AVIStreamGetFrameClose(PGETFRAME pget)

機能 ビデオストリームから取得したGetFrameオブジェクトを解放する

pgetGetFrameオブジェクト。
RET0ならば成功。

ストリームの保存

HRESULT AVISave(LPCTSTR szFile,CLSID FAR *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM pavi,LPAVICOMPRESSOPTIONS lpOptions,...)

機能 ストリームを保存する

szFileファイル名。
pclsidhandler標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。
lpfnCallbackコールバック関数へのポインタ。コールバック関数を使用しない場合NULLを指定できる。
nStreamsストリームの数。
paviストリームインターフェイスポインタ。
lpOptionsAVICOMPRESSOPTIONS構造体へのポインタ。
RETAVIERR_OKならば成功。

備考 引数のpaviとlpOptionsはnStreamsの数だけ繰り返されます。

コールバック関数
LONG FAR PASCAL SaveCallback(int nPercent)

nPercent保存処理の進行状況をパーセントで示します。
RET保存処理を継続するときにはAVIERR_OK、中断するときにはAVIERR_USERABORTを返します。

STDAPI AVISaveV(LPCTSTR szFile,CLSID FAR *pclsidHandler,AVISAVECALLBACK lpfnCallback,int nStreams,PAVISTREAM FAR *ppavi,LPAVICOMPRESSOPTIONS FAR *plpOptions)

機能 ストリームを保存するV

szFileファイル名。
pclsidhandler標準ハンドラまたはカスタムハンドラのクラス識別子のアドレス。
lpfnCallbackコールバック関数へのポインタ。コールバック関数を使用しない場合NULLを指定できる。
nStreamsストリームの数。
ppaviストリームインターフェイスポインタを格納する配列へのポインタ。配列はnStreams分の大きさが必要です。
plpOptions圧縮オプションを格納するためのAVICOMPRESSOPTIONS構造体へのポインタを格納する配列へのポインタです。配列はnStreams分の大きさが必要です。
RETAVIERR_OKならば成功。

コールバック関数
LONG FAR PASCAL SaveCallback(int nPercent)

nPercent保存処理の進行状況をパーセントで示します。
RET保存処理を継続するときにはAVIERR_OK、中断するときにはAVIERR_USERABORTを返します。

BOOL AVISaveOptions(HWND hWnd,UINT uiFlags,int nStreams,PAVISTREAM FAR *ppavi,LPAVICOMPRESSOPTIONS FAR *plpOptions)

機能 保存オプションを取得する

hWndダイアログボックスの親ウインドウ。
uiFlagsダイアログボックスの表示に関するフラグを指定します。
ICMF_CHOOSE_KEYFRAMEキーフレームの項目を表示する。
ICMF_CHOOSE_DATARATEデータ比率の項目を表示する。
ICMF_CHOOSE_PREVIEWプレビューボタンを表示する。
nStreamsストリームの数。
ppaviストリームインターフェイスポインタを格納する配列へのポインタ。配列はnStreams分の大きさが必要です。
plpOptions圧縮オプションを格納するためのAVICOMPRESSOPTIONS構造体へのポインタを格納する配列へのポインタです。配列はnStreams分の大きさが必要です。
RETユーザーがOKボタンを押したときTRUE、キャンセルボタンを押したときFALSEが返されます。

LONG AVISaveOptionsFree(int nStreams,LPAVICOMPRESSOPTIONS FAR *plpOptions)

機能 保存オプションのリソースを解放する

nStreamsAVICOMPRESSOPTIONS構造体へのポインタの数。
plpOptions圧縮オプションを格納するためのAVICOMPRESSOPTIONS構造体へのポインタを格納する配列へのポインタです。配列はnStreams分の大きさが必要です。
RETAVIERR_OKが返されます。

編集ストリーム

STDAPI CreateEditableStream(PAVISTREAM FAR *ppsEditable,PAVISTREAM psSource)

機能 編集ストリームを作成する

ppsEditable編集ストリームインターフェイスポインタを受け取るアドレス。
psSource編集ストリームインターフェイスポインタの元になるストリームインターフェイスポインタです。NULLを指定すると空の編集ストリームを作成します。
RET0ならば成功。

STDAPI EditStreamClone(PAVISTREAM pavi,PAVISTREAM FAR *ppResult)

機能 編集ストリームの複写を作成する

pavi編集ストリームインターフェイスポインタ。
ppResult複写された編集ストリームインターフェイスポインタを受け取るアドレス。
RET0ならば成功。

STDAPI EditStreamCopy(PAVISTREAM pavi,LONG FAR *plStart,LONG FAR *plLength,PAVISTREAM FAR *ppResult)

機能 編集ストリームをコピーする

pavi編集ストリームインターフェイスポインタ。
plStartコピーをはじめるストリームの位置(サンプル番号)を格納する変数へのポインタです。実際にコピーをはじめた位置が返されます。
plLengthコピーするサンプル数を格納する変数へのポインタです。実際にコピーされたサンプル数が返されます。
ppResultコピーされた編集ストリームインターフェイスポインタを受け取るアドレス。
RET0ならば成功。

STDAPI EditStreamCut(PAVISTREAM pavi,LONG FAR *plStart,LONG FAR *plLength,PAVISTREAM FAR *ppResult)

機能 編集ストリームをカットする

pavi編集ストリームインターフェイスポインタ。
plStartカットをはじめるストリームの位置(サンプル番号)を格納する変数へのポインタです。実際に削除をはじめた位置が返されます。
plLengthカットするサンプル数を格納する変数へのポインタです。実際にカットされたサンプル数が返されます。
ppResultカットされた編集ストリームインターフェイスポインタを受け取るアドレス。カットされた部分が不要な場合、アプリケーションはこれをAVIStreamReleaseで解放する必要があります。
RET0ならば成功。

STDAPI EditStreamPaste(PAVISTREAM pavi,LONG FAR *plPos,LONG FAR *plLength,PAVISTREAM pstream,LONG lStart,LONG lLength)

機能 編集ストリームに貼り付ける

pavi編集ストリームインターフェイスポインタ。
plPost挿入されるストリームの位置(サンプル番号)を格納する変数へのポインタです。実際に挿入された位置が返されます。
plLength実際に貼り付けられたサンプル数が返されます。
pstream貼り付けるストリームインターフェイスポインタ。編集ストリームインターフェイスポインタである必要ありません。
lStartpstreamの貼り付けを開始する位置(サンプル番号)です。
lLengthpstreamの貼り付けるサンプル数です。-1を指定した場合、ストリーム全体を貼り付けます。
RET0ならば成功。

STDAPI EditStreamSetInfo(PAVISTREAM pavi,LPAVISTREAMINFO lpInfo,LONG cbInfo)

機能 編集ストリームの情報を設定する

pavi編集ストリームインターフェイスポインタ。
lpInfoAVISTREAMINFO構造体へのポインタ。
cbInfoAVISTREAMINFO構造体のバイトサイズ。
RET0ならば成功。

備考 このAPIで設定できるAVISTREAMINFO構造体のメンバは下記のとおりです。

fccType不可
fccHandler不可
dwFlags不可
dwCaps不可
wPriority
wLanguage
dwScale
dwRate
dwStart
dwLength不可
dwInitialFrames不可
dwSuggestedBufferSize不可
dwQuality
dwSampleSize不可
rcFrame
dwEditCount不可
dwFormatChangeCount不可
szName

STDAPI EditStreamSetName(PAVISTREAM pavi,LPCSTR lpszName)

機能 編集ストリームの説明文を設定する

pavi編集ストリームインターフェイスポインタ。
lpszNameストリームを説明するNULLで終わる文字列です。
RET0ならば成功。

備考 このAPIはAVISTREAMINFO構造体のszNameメンバを変更します。


クリップボード

STDAPI AVIClearClipboard(VOID)

機能 クリップボードのAVIファイルを削除する

RET0ならば成功。

STDAPI AVIGetFromClipboard(PAVIFILE *lppf)

機能 クリップボードのAVIファイルをコピーする

lppfファイルインターフェイスポインタを受け取るアドレス。
RET0ならば成功。

備考 クリップボードにAVIファイルがない場合、CF_DIBまたはCF_WAVE形式のクリップボードデータから、ビデオストリームまたはオーディオストリームを作ります。


STDAPI AVIPutFileOnClipboard(PAVIFILE pf)

機能 クリップボードにAVIファイルをコピーする

pfファイルインターフェイスポインタ。
RET0ならば成功。

STDAPI AVIMakeStreamFromClipboard(UINT cfFormat,HANDLE hGlobal,PAVISTREAM FAR *ppstream)

機能 クリップボードのストリームデータから編集ストリームを作成する

cfFormatクリップボード形式。
hGlobalクリップボードのストリームデータのハンドル。
ppstream編集ストリームインターフェイスポインタを受け取るアドレス。
RET0ならば成功。

構造体

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;
fccType開くストリームタイプを示す4文字のコードです。下記の4種類が既に定義されています。
streamtypeAUDIOオーディオストリーム
streamtypeMIDIMIDIストリーム
streamtypeTEXTテキストストリーム
streamtypeVIDEOビデオストリーム
fccHandlerビデオストリームを保存する時に圧縮するハンドラの4文字のコードです。(例えばmmioFOURCC('M','S','V','C'))
ビデオストリームでのみ使われます。
dwKeyFrameEveryキーフレームの周期です。AVICOMPRESSF_KEYFRAMESフラグを指定したときのみこの値は使われます。それ以外ではすべてのフレームがキーフレームです。
dwQualityビデオストリームの品質。
dwBytesPerSecondデータ比率。AVICOMPRESSF_DATARATEフラグを指定したときのみこの値は使われます。
dwFlags圧縮フラグ。
AVICOMPRESSF_DATARATEdwBytesPerSecondのデータ比率を使ってビデオストリームを圧縮する。
AVICOMPRESSF_INTERLEAVEdwInterleaveEveryフレームごとにインターリーブする。
AVICOMPRESSF_KEYFRAMESdwKeyFrameEveryフレームごとにキーフレームを設定する。このフラグが指定されていないときにはすべてのフレームがキーフレームになります。
AVICOMPRESSF_VALIDこの構造体のデータを使ってAVISaveOptionsの初期値を設定します。このフラグが指定されていないときにはデフォルトの値が使われます。
lpFormatデータフォーマット構造体へのポインタ。オーディオストリームではWAVEFORMAT構造体へのポインタです。
cbFormatlpFormatで指定したデータフォーマット構造体のバイト数。
lpParamsビデオ圧縮用のデータ。
cbParamslpParamsで指定したデータのバイト数。
dwInterleaveEveryインターリーブ値。AVICOMPRESSF_INTERLEAVEフラグを指定したときのみこの値は使われます。

AVIFIELDINDEX構造体


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です。
nEntriesInUseaIndexの要素数。
dwChunkIdチャンクID、??dbまたは??dcです。
qwBaseOffsetAVISTDINDEX_ENTRY構造体のdwOffsetとこの値の合計が実際のオフセットになります。
dwReserved_3予約。
aIndex.dwOffsetチャンクのデータのqwBaseOffsetに対する相対オフセットです。
aIndex.dwSizeチャンクのバイト数です。
aIndex.dwOffsetField2チャンクのデータの第2フィールドへのqwBaseOffsetに対する相対オフセットです。

AVIFILEINFO構造体


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_HASINDEXAVIファイルはファイルの最後にインデックスをもっている。処理速度の向上のためにすべてのAVIファイルはインデックスを含まなければならない。
AVIFILEINFO_MUSTUSEINDEXファイルのインデックスにはファイルのチャンクを再生する順番が含まれている。データを再生するときにはこのインデックスが使われる。
AVIFILEINFO_ISINTERLEAVEDAVIファイルはインターリーブされている。
AVIFILEINFO_WASCAPTUREFILEAVIファイルはリアルタイムビデオをキャプチャーするために使われる。
AVIFILEINFO_COPYRIGHTEDAVIファイルは著作権をともなう。アプリケーションはデータを複写してはいけない。
dwCaps機能フラグ。
AVIFILECAPS_CANREADアプリケーションは読み取り専用で開くことができる。
AVIFILECAPS_CANWRITEアプリケーションは書き込み可能で開くことができる。
AVIFILECAPS_ALLKEYFRAMESすべてのフレームはキーフレームである。
AVIFILECAPS_NOCOMPRESSION圧縮されていない。
dwStreamsファイルに含まれるストリームの数。
dwSuggestedBufferSizeファイルを読み込むときに適したバッファサイズです。この値は0のときもある。
dwWidthビットマップの幅。
dwHeightビットマップの高さ。
dwScaleファイルの時間単位です。
dwRateファイルのレートです。
dwLengthファイルの長さ。dwScaleとdwRateで単位が定義される。
dwEditCountファイルを編集(追加または削除)した回数です。
szFileTypeファイルタイプを説明するNULLで終わる文字列です。

AVIINDEXENTRY構造体


typedef struct
{
    DWORD ckid;
    DWORD dwFlags;
    DWORD dwChunkOffset;
    DWORD dwChunkLength;
} AVIINDEXENTRY;
ckidチャンクID。先頭の2文字はストリーム番号を示す大文字16進数で、後の2文字はチャンクのタイプを示します。
??db未圧縮DIB
??dc圧縮されたDIB
??pcパレットの変更を示すAVIPALCHANGE構造体
??wbWAVEオーディオ
dwFlagsフラグ。
AVIIF_LISTチャンクはリストチャンクである。
AVIIF_KEYFRAMEチャンクはキーフレームである。
dwChunkOffsetチャンクの4文字コードのオフセット。LISTチャンクmoviのmoviからの相対オフセット。
dwChunkLengthチャンクのバイト数。

AVIPALCHANGE構造体


typedef struct
{
    BYTE         bFirstEntry;
    BYTE         bNumEntries;
    WORD         wFlags;
    PALETTEENTRY peNew[];
} AVIPALCHANGE;
bFirstEntry変更するパレットの最初のエントリー番号。
bNumEntries変更するパレットのエントリー数。0ならば256。
wFlags未使用。
peNew[]新しいパレット。

AVIStreamHeader構造体


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オーディオストリーム
streamtypeMIDIMIDIストリーム
streamtypeTEXTテキストストリーム
streamtypeVIDEOビデオストリーム
fccHandlerビデオストリームを保存する時に圧縮するハンドラの4文字のコードです。(例えばmmioFOURCC('M','S','V','C'))
ビデオストリームでのみ使われます。
dwFlagsストリームフラグ。
AVISF_DISABLEDユーザーが使用可能にしたときにストリームはレンダされる。
AVISF_VIDEO_PALCHANGESビデオストリームはパレット変更を含む。このフラグは再生ソフトにパレットをアニメーションさせる必要があることを警告する。
dwCaps機能フラグ。(現在は未使用)
wPriorityストリームの優先順位。
wLanguageストリームの言語。
dwScaleストリームの時間単位です。
dwRateストリームのレートです。
dwStartAVIファイルの最初のフレームのサンプル番号です。dwScaleとdwRateで単位が定義される。通常は0です。
dwLengthストリームの長さ。dwScaleとdwRateで単位が定義される。
dwInitialFramesオーティオスキュー。インターリーブファイル内のビデオストリームの前方へオーディオストリームをどの程度ずらすかを指定する。通常は0.75秒。
dwSuggestedBufferSizeストリームを読み込むときに適したバッファサイズです。この値は0のときもある。
dwQualityビデオストリームの品質です。0〜10000の範囲で-1のときはデフォルトの品質です。
dwSampleSize1つのデータサンプルのバイトサイズです。0の場合、サンプルのサイズは可変です。
rcFrame表示を行う矩形です。ビデオストリームでのみ使われます。

AVISTREAMINFO構造体


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オーディオストリーム
streamtypeMIDIMIDIストリーム
streamtypeTEXTテキストストリーム
streamtypeVIDEOビデオストリーム
fccHandlerビデオストリームを保存する時に圧縮するハンドラの4文字のコードです。(例えばmmioFOURCC('M','S','V','C'))
ビデオストリームでのみ使われます。
dwFlagsストリームフラグ。
AVISTREAMINFO_DISABLEDユーザーが使用可能にしたときにストリームはレンダされる。
AVISTREAMINFO_FORMATCHANGESビデオストリームはパレット変更を含む。このフラグは再生ソフトにパレットをアニメーションさせる必要があることを警告する。
dwCaps機能フラグ。(現在は未使用)
wPriorityストリームの優先順位。
wLanguageストリームの言語。
dwScaleストリームの時間単位です。
dwRateストリームのレートです。
dwStartAVIファイルの最初のフレームのサンプル番号です。dwScaleとdwRateで単位が定義される。通常は0です。
dwLengthストリームの長さ。dwScaleとdwRateで単位が定義される。
dwInitialFramesオーティオスキュー。インターリーブファイル内のビデオストリームの前方へオーディオストリームをどの程度ずらすかを指定する。通常は0.75秒。
dwSuggestedBufferSizeストリームを読み込むときに適したバッファサイズです。この値は0のときもある。
dwQualityビデオストリームの品質です。0〜10000の範囲で-1のときはデフォルトの品質です。
dwSampleSize1つのデータサンプルのバイトサイズです。0の場合、サンプルのサイズは可変です。
rcFrame表示を行う矩形です。ビデオストリームでのみ使われます。
dwEditCountファイルを編集(追加または削除)した回数です。
dwFormatChangeCountフォーマットの変更回数。
szNameストリームを説明するNULLで終わる文字列です。

AVISTDINDEX構造体


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です。
nEntriesInUseaIndexの要素数。
dwChunkIdチャンクID、例えば??db、??dc、??wbなどです。
qwBaseOffsetAVISTDINDEX_ENTRY構造体のdwOffsetとこの値の合計が実際のオフセットになります。
dwReserved_3予約。
aIndex.dwOffsetチャンクのデータのqwBaseOffsetに対する相対オフセットです。
aIndex.dwSizeチャンクのバイト数です。

AVISUPERINDEX構造体


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です。
bIndexSubTypeAVISTDINDEX構造体のインデックスの時には0、AVIFIELDINDEX構造体のインデックスの時にはAVI_INDEX_2FIELDです。
bIndexType必ずAVI_INDEX_OF_INDEXSです。
nEntriesInUseaIndexの要素数。
dwChunkIdチャンクID、例えば??db、??dc、??wbなどです。
dwReserved予約。
aIndex.qwOffsetチャンクIDのファイルオフセットです。
aIndex.dwSizeチャンクのバイト数です。
aIndex.dwDurationチャンクが占めるストリーム単位の時間。

MainAVIHeader構造体


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;
dwMicroSecPerFrame1フレームのミリ秒単位の表示時間、または0です。
dwMaxBytesPerSec近似の最大レート。
dwPaddingGranularityアライメントのバイト数、通常は2048バイトです。
dwFlagsアプリケーションフラグ。
AVIF_HASINDEXAVIファイルはファイルの最後にインデックスをもっている。処理速度の向上のためにすべてのAVIファイルはインデックスを含まなければならない。
AVIF_MUSTUSEINDEXファイルのインデックスにはファイルのチャンクを再生する順番が含まれている。データを再生するときにはこのインデックスが使われる。
AVIF_ISINTERLEAVEDAVIファイルはインターリーブされている。
AVIF_WASCAPTUREFILEAVIファイルはリアルタイムビデオをキャプチャーするために使われる。
AVIF_COPYRIGHTEDAVIファイルは著作権をともなう。アプリケーションはデータを複写してはいけない。
dwTotalFramesファイルの中のフレーム数。
dwInitialFramesオーティオスキュー。インターリーブファイル内のビデオストリームの前方へオーディオストリームをどの程度ずらすかを指定する。通常は0.75秒。
dwStreamsファイルに含まれるストリームの数。
dwSuggestedBufferSizeファイルを読み込むときに適したバッファサイズです。この値は0のときもある。
dwWidthビットマップの幅。
dwHeightビットマップの高さ。
dwReserved予約。

索引