This repository has been archived by the owner on Feb 17, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
output.h
99 lines (94 loc) · 4.17 KB
/
output.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
//----------------------------------------------------------------------------------
// 出力プラグイン ヘッダーファイル for AviUtl version 0.99g4 以降
// By KENくん
//----------------------------------------------------------------------------------
// 出力情報構造体
typedef struct {
int flag; // フラグ
// OUTPUT_INFO_FLAG_VIDEO : 画像データあり
// OUTPUT_INFO_FLAG_AUDIO : 音声データあり
// OUTPUT_INFO_FLAG_BATCH : バッチ出力中
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; // セーブファイル名へのポインタ
void *(*func_get_video)( int frame );
// DIB形式(RGB24bit)の画像データへのポインタを取得します。
// frame : フレーム番号
// 戻り値 : データへのポインタ
// 画像データポインタの内容は次に外部関数を使うかメインに処理を戻すまで有効
void *(*func_get_audio)( int start,int length,int *readed );
// 16bitPCM形式の音声データへのポインタを取得します。
// start : 開始サンプル番号
// length : 読み込むサンプル数
// readed : 読み込まれたサンプル数
// 戻り値 : データへのポインタ
// 音声データポインタの内容は次に外部関数を使うかメインに処理を戻すまで有効
BOOL (*func_is_abort)( void );
// 中断するか調べます。
// 戻り値 : TRUEなら中断
BOOL (*func_rest_time_disp)( int now,int total );
// 残り時間を表示させます。
// now : 処理しているフレーム番号
// total : 処理する総フレーム数
// 戻り値 : TRUEなら成功
int (*func_get_flag)( int frame );
// フラグを取得します。
// frame : フレーム番号
// 戻り値 : フラグ
// OUTPUT_INFO_FRAME_FLAG_KEYFRAME : キーフレーム推奨
// OUTPUT_INFO_FRAME_FLAG_COPYFRAME : コピーフレーム推奨
BOOL (*func_update_preview)( void );
// プレビュー画面を更新します。
// 最後にfunc_get_videoで読み込まれたフレームが表示されます。
// 戻り値 : TRUEなら成功
void *(*func_get_video_ex)( int frame,DWORD format );
// DIB形式の画像データを取得します。
// frame : フレーム番号
// format : 画像フォーマット( NULL = RGB24bit / 'Y''U''Y''2' = YUY2 / 'Y''C''4''8' = PIXEL_YC )
// ※PIXEL_YC形式 は YUY2フィルタモードでは使用出来ません。
// 戻り値 : データへのポインタ
// 画像データポインタの内容は次に外部関数を使うかメインに処理を戻すまで有効
} OUTPUT_INFO;
#define OUTPUT_INFO_FLAG_VIDEO 1
#define OUTPUT_INFO_FLAG_AUDIO 2
#define OUTPUT_INFO_FLAG_BATCH 4
#define OUTPUT_INFO_FRAME_FLAG_KEYFRAME 1
#define OUTPUT_INFO_FRAME_FLAG_COPYFRAME 2
// 出力プラグイン構造体
typedef struct {
int flag; // フラグ
LPSTR name; // プラグインの名前
LPSTR filefilter; // ファイルのフィルタ
LPSTR information; // プラグインの情報
BOOL (*func_init)( void );
// DLL開始時に呼ばれる関数へのポインタ (NULLなら呼ばれません)
BOOL (*func_exit)( void );
// DLL終了時に呼ばれる関数へのポインタ (NULLなら呼ばれません)
BOOL (*func_output)( OUTPUT_INFO *oip );
// 出力時に呼ばれる関数へのポインタ
BOOL (*func_config)( HWND hwnd,HINSTANCE dll_hinst );
// 出力設定のダイアログを要求された時に呼ばれる関数へのポインタ (NULLなら呼ばれません)
int (*func_config_get)( void *data,int size );
// 出力設定データを取得する時に呼ばれる関数へのポインタ (NULLなら呼ばれません)
// data : 設定データを書き込むバッファへのポインタ (NULLなら設定データサイズを返すだけ)
// size : 設定データを書き込むバッファのサイズ
// 戻り値 : 設定データのサイズ
int (*func_config_set)( void *data,int size );
// 出力設定データを設定する時に呼ばれる関数へのポインタ (NULLなら呼ばれません)
// data : 設定データへのポインタ
// size : 設定データのサイズ
// 戻り値 : 使用した設定データのサイズ
int reserve[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 );