//------------------------------------------------------------------ // 出力プラグイン ヘッダーファイル for AviUtl version 0.98 以降 // By KENくん //------------------------------------------------------------------ // -Dv096e : 0.96e 以降 0.98以前との互換モード // 出力情報構造体 typedef struct { int flag; // OUTPUT_INFO_FLAG_* int w,h; // 縦横サイズ int rate,scale; // フレームレート int n; // フレーム数 int size; // 1フレームのバイト数 int audio_rate; // 音声サンプリングレート int audio_ch; // 音声チャンネル数 int audio_n; // 音声サンプリング数 int audio_size; // 音声1サンプルのバイト数 LPSTR savefile; // セーブファイル名へのポインタ // AVIutil のサービス関数 void *(*func_get_video)( int frame ); // DIB形式(RGB24bit)の画像データへのポインタを取得 // frame : フレーム番号 // 戻り値 : データへのポインタ void *(*func_get_audio)( int start, int length, int *nbyte ); // 16bitPCM形式の音声データへのポインタを取得 // start : 開始サンプル番号 // length : 読み込むサンプル数 // nbyte : 読み込まれたサンプル数 // 戻り値 : データへのポインタ BOOL (*func_is_abort)( void ); // 中断するか調べます。 // 戻り値 : TRUEなら中断 // 出力プラグインは本体とは別スレッドで実行される。 // ESC を入力されたなど、出力を中断しなくてはならない状況を伝える。 // plugin はこれをときどきポーリングして、指示に従わなくてはならない。 // ...じゃなくて、まさか is_abort で制御を返して貰ってないだろな。 BOOL (*func_rest_time_disp)( int now,int total ); // 残り時間を表示させます。 // now : 処理しているフレーム番号 // total : 処理する総フレーム数 // 戻り値 : TRUEなら成功 int (*func_get_flag)( int frame ); // フレームのフラグを取得 // frame : フレーム番号 // 戻り値 : OUTPUT_INFO_FRAME_FLAG_* BOOL (*func_update_preview)( void ); // プレビュー画面を更新 // 最後にfunc_get_videoで読み込まれたフレームが表示されます。 // 戻り値 : TRUEなら成功 #ifndef v096e void *(*func_get_video_ex)( int frame, DWORD format ); // DIB形式の画像データを取得します。 // frame : フレーム番号 // format : 画像フォーマット( 0 = RGB24bit / 'Y''U''Y''2' = YUY2 ) // 戻り値 : データへのポインタ #endif } OUTPUT_INFO; // ・出力情報フラグ // 画像データあり #define OUTPUT_INFO_FLAG_VIDEO 1 // 音声データあり #define OUTPUT_INFO_FLAG_AUDIO 2 // ・フレームフラグ // キーフレーム推奨 #define OUTPUT_INFO_FRAME_FLAG_KEYFRAME 1 // コピーフレーム推奨 #define OUTPUT_INFO_FRAME_FLAG_COPYFRAME 2 // 出力プラグイン構造体 typedef struct { int flag; // フラグ...定数は? LPSTR name; // プラグインの名前 LPSTR filefilter; // ファイルのフィルタ LPSTR information; // プラグインの情報 // プラグイン本体 // NULL なら呼ばれない BOOL (*func_init)( void ); // DLL開始時に呼ばれる関数 BOOL (*func_exit)( void ); // DLL終了時に呼ばれる関数 BOOL (*func_output)( OUTPUT_INFO *oip ); // 出力時に呼ばれる関数 BOOL (*func_config)( HWND hwnd, HINSTANCE dll_hinst ); // 出力設定のダイアログを要求された時に呼ばれる関数 int (*func_config_get)( void *data, int size ); // 出力設定データを取得する時に呼ばれる関数 // data : 設定データを書き込むバッファへのポインタ // (NULLなら設定データサイズを返すだけ) // size : 設定データを書き込むバッファのサイズ // 戻り値 : 設定データのサイズ int (*func_config_set)( void *data, int size ); // 出力設定データを設定する時に呼ばれる関数 // data : 設定データへのポインタ // size : 設定データのサイズ // 戻り値 : 使用した設定データのサイズ int reserved[16]; // 拡張用に予約 } OUTPUT_PLUGIN_TABLE; // 関数のプロトタイプ BOOL func_init( void ); BOOL func_exit( void ); BOOL func_output( OUTPUT_INFO *oip ); BOOL func_config( HWND hwnd, HINSTANCE hinst ); int func_config_get( void *data, int size ); int func_config_set( void *data, int size );