;-------------------------------------------------- ; HSP ヘルプ ソースファイル (hs 形式) ; hs ファイルの書式については、HS_BIBLE.txt を参照してください。 ;-------------------------------------------------- ; この hs ファイルのデフォルトのフィールド値を設定 %dll ; プラグイン/モジュール名 を記入 hspdsc.dll %ver ; バージョン を記入 2.12 %date ; 日付 を記入 2014/09/15 %author ; 著作者 を記入 イノビア(inovia) %url ; 関連 URL を記入 https://hsp.moe/ %note ; 備考 (補足情報等) を記入 HSP向け DirectShow キャプチャプラグイン hspdsc.asをインクルード %type ; タイプ を記入 %port ; 対応環境 を記入 Windows Vista 以降、DirectX 10以上 %portinfo ; 移植のヒント を記入 Windows %index dsc_AvgFrame ; 見出し を記入 必要なビデオ フレームの平均表示時間(マクロ) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 %inst ; 解説文 を記入 ビデオ フレームの平均表示時間を取得できます。 単位は100 ナノ秒で返ってきますのでご注意ください。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetCapInfo %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_CapH ; 見出し を記入 デバイス解像度の現在の高さ(マクロ) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 %inst ; 解説文 を記入 デバイス解像度の現在の高さを取得します。 dsc_CapYマクロと同等です。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetCapInfo %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_CapW ; 見出し を記入 デバイス解像度の現在の幅(マクロ) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 %inst ; 解説文 を記入 デバイス解像度の現在の幅を取得します。 dsc_CapXマクロと同等です。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetCapInfo %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_CapX ; 見出し を記入 デバイス解像度の現在の幅(マクロ) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 %inst ; 解説文 を記入 デバイス解像度の現在の幅を取得します。 dsc_CapWマクロと同等です。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetCapInfo %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_CapY ; 見出し を記入 デバイス解像度の現在の高さ(マクロ) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 %inst ; 解説文 を記入 デバイス解像度の現在の高さを取得します。 dsc_CapHマクロと同等です。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetCapInfo %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_Close ; 見出し を記入 dsc_Open で 指定されたデバイスをクローズします %prm %inst ; 解説文 を記入 正常終了時には stat に 0 が返ります。 クローズした後、再度表示するには、 dsc_Open -> dsc_Play の順に命令を実行してください。 ※この命令は先に dsc_Open , dsc_Play を使う必要があります。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_Init dsc_Open dsc_Play dsc_Play2 %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_close "dsc_close" %index dsc_CodecDialog ; 見出し を記入 コーデックの設定画面を表示 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1,p2 p1 : ウィンドウハンドル p2 : モード %inst ; 解説文 を記入 p1 にはウィンドウハンドルをいれます。必要なければ0を入れてください。 p2 のモードは 1 = 設定ダイアログ 2 = Aboutダイアログ 4 = 設定ダイアログが使用可能か問い合わせ(statに結果が返る) 8 = Aboutダイアログが使用可能か問い合わせ(statに結果が返る) が指定可能です。 statが-1のときはdsc_Open命令でAVIを作成する状態になっていません。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_DevPinProp ; 見出し を記入 デバイスの解像度プロパティページを表示します。 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 : ウィンドウのハンドル( hwnd ) %inst ; 解説文 を記入 デバイスの解像度プロパティページを表示します。 正常終了時には stat に 0 が返ります。 エラー一覧(stat) -1 = 初期化されていません -2 = ピンが見つかりません -3 = ピンのリセットできません -4 = ピンの検索できません -5 = プロパティがありません(ダイアログがない) -6 = デバイスフィルタが見つかりません ※この命令は先に dsc_Open 命令、dsc_Play 命令の前に使用する必要があります。 dsc_Playの後でもかまいませんが、設定が反映されません。 ※順序通りに本命令を使用してもカメラによっては設定が反映されない場合があります。 dsc_GetDevCapConfig、dsc_SetDevCapConfig 命令を参照して 手動で解像度・フレームレートを設定してあげるとうまくいく場合があります。 %sample ; サンプルスクリプト を記入 dsc_DevPinProp hwnd //こういう順序ならOK dsc_Init dsc_Open 0,0,0,0,0 dsc_DevPinProp hwnd //これは設定に失敗します dsc_Init dsc_Open 0,0,0,0,0 dsc_Play2 //<-これがダメ dsc_DevPinProp hwnd %href ; 関連項目 を記入 dsc_FilterProp dsc_Init dsc_Open dsc_Play dsc_Play2 %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_ERate ; 見出し を記入 データ エラー レート(マクロ) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 %inst ; 解説文 を記入 データ エラー レートを取得します。(ビット エラー/秒) %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetCapInfo %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_Exit ; 見出し を記入 HSPDSCで使用した内部変数を開放します %prm %inst ; 解説文 を記入 HSPDSCで使用した内部変数を開放します HSPを終了する際、この命令を実行してください。 通常は自動で終了時にこの命令が実行されますので気にする必要はありません。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_exit onexit "dsc_exit" %index dsc_FilterProp ; 見出し を記入 デバイスなどのプロパティページを表示します %prm p1, p2 p1 : ウィンドウのハンドル( hwnd ) p2 : デバイス(フィルタ)名 (文字列) %inst ; 解説文 を記入 デバイスなどのプロパティページを表示します p1にウィンドウハンドルを指定します。 p2にはデバイス(フィルタ)名を指定します。 例えば、カメラのなどのデバイスのプロパティページの場合は 「Device Filter」、 ビデオレンダラーのプロパティページは「Video Renderer」、 環境依存になりますが、ffdshowのプロパティページは「ffdshow Video Decoder」となります。 この命令を実行しますと、プロパティを閉じるまでHSPの命令を実行しませんのでご注意ください。 (※どうしても実行する必要がある場合は『HSP ウィンドウタイマー』などでググってみてください。) もしくは p1 に 0 を入れるとよいかもしれません。 正常終了時には stat に 0 が返ります。 エラー一覧(stat) -1 = 初期化されていません -2 = プロパティがありません(ダイアログがない) -3 = キャプチャビルダーが見つかりません 例: dsc_FilterProp hwnd, "Device Filter" ※この命令は先に dsc_Open, dsc_Play を使う必要があります。 %sample ; サンプルスクリプト を記入 dsc_FilterProp hwnd, "Device Filter" %href ; 関連項目 を記入 dsc_StreamFilterList dsc_DevPinProp dsc_Open dsc_Play dsc_Play2 %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_devstreamprop "dsc_devstreamprop" int,wptr %index dsc_FourCC ; 見出し を記入 現在のFourCCを返します(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 () %inst ; 解説文 を記入 現在のFourCCを返します 「MJPG」や「YUYV」などが取得できます 失敗した場合は何も表示されません ※この命令は先に dsc_Open を使用する必要があります。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetCapInfo %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetActiveSel ; 見出し を記入 現在のアクティブな操作IDを取得(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 () 引数なし %inst ; 解説文 を記入 現在のアクティブな操作IDを取得します。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_SetActiveSel %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetBufferSize ; 見出し を記入 文字列のバッファサイズ取得 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 : モード %inst ; 解説文 を記入 文字列のバッファサイズを取得できる命令です。 p1 のモードには以下のものが指定でき、statにサイズが返ります。 0 = デバイスリスト(ビデオ) dsc_GetDeviceListSize(0) 1 = デバイスリスト(オーディオ) dsc_GetDeviceListSize(1) 2 = ストリームリスト dsc_GetStreamFilterListSize() 3 = コーデックリスト(ビデオ) dsc_GetCodecListSize(0) 4 = コーデックリスト(オーディオ) dsc_GetCodecListSize(1) 5 = キャプチャ命令のメモリに格納するバッファサイズ dsc_GetImageMemSize(0) 6 = キャプチャ命令のメモリに格納するDIBヘッダサイズ dsc_GetImageMemSize(1) 7 = フレームレート dsc_GetDevCapConfigSize(0) 8 = 幅 dsc_GetDevCapConfigSize(1) 9 = 高さ dsc_GetDevCapConfigSize(2) %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetCapInfo ; 見出し を記入 デバイスなどの情報を取得します(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 (p1) p1 = 0〜5(0) : デバイス情報のモード %inst ; 解説文 を記入 デバイスの情報を取得します。 p1 には以下の値を指定可能です。 0 : デバイス解像度の現在のXサイズ 1 : デバイス解像度の現在のYサイズ 2 : ビデオ ストリームのおおよそのデータ レート (ビット/秒) 3 : データ エラー レート (ビット エラー/秒) 4 : 必要なビデオ フレームの平均表示時間 (100 ナノ秒単位) 5 : FourCC(INT型 リトルエンディアンの数値で返却されます) またマクロでも提供されています。 #define dsc_CapX dsc_GetCapInfo(0) #define dsc_CapY dsc_GetCapInfo(1) #define dsc_VRate dsc_GetCapInfo(2) #define dsc_ERate dsc_GetCapInfo(3) #define dsc_AvgFrame dsc_GetCapInfo(4) #define dsc_FourCC dsc_GetCapInfo(5) ※この命令は先に dsc_Open , dsc_Play を使う必要があります。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_CapX dsc_CapY dsc_VRate dsc_ERate dsc_AvgFrame dsc_FourCC %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetCodecList ; 見出し を記入 インストールされているコーデックの一覧を取得 %prm p1,p2 ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 : コーデックの一覧を入れる文字列型変数 p2 : モード(0〜1) %inst ; 解説文 を記入 インストールされているコーデックの一覧を取得する命令です。 p1にコーデック一覧を格納する変数を指定します。 p1で指定する変数はsdimなどであらかじめ確保しておくことが必要です。 確保に必要なサイズは dsc_GetCodecListSize() で取得できます。 p2に 0 を指定した場合はビデオ、1 の場合はオーディオコーデックの一覧が取得されます。 データはメモリノートパッド形式で返ります。 %sample ; サンプルスクリプト を記入 // ビデオコーデックの一覧取得 size = dsc_GetCodecListSize(0) sdim buf, size dsc_GetCodecList buf, 0 mes buf // オーディオコーデックの一覧取得 size = dsc_GetCodecListSize(1) sdim buf, size dsc_GetCodecList buf, 1 mes buf %href ; 関連項目 を記入 dsc_GetCodecListSize %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetCodecListSize ; 見出し を記入 インストールされているコーデックの一覧のサイズを取得(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 (p1) p1 : モード(0〜1) %inst ; 解説文 を記入 インストールされているコーデックの一覧のサイズを取得する関数です。 dsc_GetCodecList 命令と一緒に使います。 p1に0を指定した場合はビデオ、1の場合はオーディオコーデックの一覧のサイズが返ります。 %sample ; サンプルスクリプト を記入 // ビデオコーデックの一覧取得 size = dsc_GetCodecListSize(0) sdim buf, size dsc_GetCodecList buf, 0 mes buf // オーディオコーデックの一覧取得 size = dsc_GetCodecListSize(1) sdim buf, size dsc_GetCodecList buf, 1 mes buf %href ; 関連項目 を記入 dsc_GetCodecList %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetDevCapConfig ; 見出し を記入 キャプチャデバイスの能力を取得します %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1,p2,p3 p1 : サポートするフレームレート一覧を格納する文字列型変数 p2 : サポートする幅一覧を格納する文字列型変数 p3 : サポートする高さ一覧を格納する文字列型変数 %inst ; 解説文 を記入 キャプチャデバイスの能力を取得する命令です。 サポートしているフレームレートや解像度を取得できます。 p1,p2,p3に各情報を格納する変数を指定します。 指定する変数はsdimなどであらかじめ確保しておくことが必要です。 確保に必要なサイズは dsc_GetDevCapConfigSize() で取得できます。 データはメモリノートパッド形式で返ります。 %sample ; サンプルスクリプト を記入 // 0 やマイナスの値を返すことがあるので limit関数で制限しています。 sdim fps, limit(dsc_GetDevCapConfigSize(0)*2, 64, 2147483647) sdim w, limit(dsc_GetDevCapConfigSize(1)*2, 64, 2147483647) sdim h, limit(dsc_GetDevCapConfigSize(2)*2, 64, 2147483647) dsc_GetDevCapConfig fps, w, h notesel fps repeat notemax notesel w noteget _w, cnt notesel h noteget _h, cnt notesel fps noteget _fps, cnt mes ""+_w+"x"+_h+" "+_fps+"fps" loop %href ; 関連項目 を記入 dsc_GetDevCapConfigSize dsc_SetDevCapConfig %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetDevCapConfigSize ; 見出し を記入 キャプチャデバイスの能力一覧のサイズ取得します(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 (p1) p1 : モード(0〜2) %inst ; 解説文 を記入 キャプチャデバイスの能力一覧のサイズ取得する関数です。 dsc_GetDevCapConfig 命令と一緒に使います。 p1 には0〜2の値が指定できます。 0 = キャプチャデバイスがサポートするフレームレート一覧 1 = キャプチャデバイスがサポートする幅一覧 2 = キャプチャデバイスがサポートする高さ一覧 戻り値はp1で指定した一覧のサイズが返ります。 %sample ; サンプルスクリプト を記入 // 0 やマイナスの値を返すことがあるので limit関数で制限しています。 sdim fps, limit(dsc_GetDevCapConfigSize(0)*2, 64, 2147483647) sdim w, limit(dsc_GetDevCapConfigSize(1)*2, 64, 2147483647) sdim h, limit(dsc_GetDevCapConfigSize(2)*2, 64, 2147483647) dsc_GetDevCapConfig fps, w, h notesel fps repeat notemax notesel w noteget _w, cnt notesel h noteget _h, cnt notesel fps noteget _fps, cnt mes ""+_w+"x"+_h+" "+_fps+"fps" loop %href ; 関連項目 を記入 dsc_GetDevCapConfig %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetDeviceList ; 見出し を記入 キャプチャデバイスの一覧を取得 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1,p2 p1 : キャプチャデバイスの一覧を入れる文字列型変数 p2 : モード(0〜1) %inst ; 解説文 を記入 p1 にキャプチャデバイスの一覧を入れる文字列型変数を指定します。 事前に sdim などで 十分にバッファーを確保してから実行してください。 バッファサイズは dsc_GetDeviceListSize()で取得できます。 p2 には モードが指定でき、0はビデオ、1はオーディオデバイスの一覧となります。 正常終了時には stat に デバイスの数 が返ります。 システムに利用可能なデバイスがない場合は -2 もしくは 0 が返ります。 エラー一覧(stat) -1 = 初期化されていません -2 = デバイスが見つかりません %sample ; サンプルスクリプト を記入 // 0 やマイナスの値を返すことがあるので limit関数で制限しています。 sdim list, limit(dsc_GetDeviceListSize(0)*2, 64, 2147483647) dsc_GetDeviceList list, 0 mes list %href ; 関連項目 を記入 dsc_Open dsc_GetDeviceListSize %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetDeviceListSize ; 見出し を記入 キャプチャデバイスの一覧のサイズを取得(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 (p1) p1 : モード(0〜1) %inst ; 解説文 を記入 キャプチャデバイスの一覧のサイズを取得する関数です。 dsc_GetDeviceList 命令と一緒に使います。 p1 には0〜1の値が指定できます。 0はビデオ、1はオーディオデバイスの一覧となります。 戻り値は一覧のサイズが返ります。 %sample ; サンプルスクリプト を記入 // 0 やマイナスの値を返すことがあるので limit関数で制限しています。 sdim list, limit(dsc_GetDeviceListSize(0)*2, 64, 2147483647) dsc_GetDeviceList list, 0 mes list %href ; 関連項目 を記入 dsc_GetDeviceList %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetImage ; 見出し を記入 静止画キャプチャし画像をウィンドウに転送 %prm p1, p2, p3, p4, p5 p1 : ウィンドウのデバイスコンテキスト( hdc ) p2 : キャプチャした画像を表示する 左上X座標 p3 : キャプチャした画像を表示する 左上Y座標 p4 : キャプチャした画像を表示する Xサイズ p5 : キャプチャした画像を表示する Yサイズ %inst ; 解説文 を記入 dsc_Openで指定されたデバイスを静止画キャプチャし、画像をウィンドウに転送します。 p1 には ウィンドウのデバイスコンテキスト(hdc)を指定してください。 この命令の実行後は redraw 1 を必ず実行してください。 正常終了時には stat に 0 が返ります。 エラー一覧(stat) -1 = 初期化されていません -2 = メディアタイプが取得できませんでした -3 = パラメータが正しくありません -4 = メモリ範囲が異常です -5 = ポインタが不正です -6 = 接続を確立する中間フィルタの組み合わせが見つかりませんでした -7 = 状態が異常です -8 = 画像の転送に失敗しました -9 = サンプルグラバーが見つかりません ※この命令は先に dsc_Open , dsp_Play を使う必要があります。 %sample ; サンプルスクリプト を記入 dsc_GetImage hdc, 0, 0, 320, 240 // 座標 (0, 0)に 320x240のサイズでHSPの画面に転送します。 redraw 1 %href ; 関連項目 を記入 dsc_SaveBMP dsc_GetImageMem dsc_GetImageMemSize dsc_SetCapConfig %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_imgget "dsc_imgget" int,int,int,int,int %index dsc_GetImageMem ; 見出し を記入 静止画キャプチャデータをDIB形式でメモリに格納 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 data,size,head data : DIBを格納する変数 size : DIBサイズを格納する変数 head : ヘッダを格納する変数 %inst ; 解説文 を記入 静止画キャプチャデータをDIB形式でメモリに格納します。 あらかじめ、DIBとヘッダのメモリをsdim などで確保してください。 サイズは dsc_GetImageMemSize() 関数で調べることができます。 ヘッダは BITMAPINFO 構造体と同じです。 %sample ; サンプルスクリプト を記入 // SetDIBitsToDevice は gdi32.as に記述されています。 sdim dibdata, dsc_GetImageMemSize(0)+1 ; 下の対策のため +1 sdim dibhead, dsc_GetImageMemSize(1) dibsize = dsc_GetImageMemSize(0) dsc_GetImageMem dibdata, dibsize, dibhead // 取得した画像の X ,Y サイズ x=lpeek(dibhead,4) y=lpeek(dibhead,8) // 元の画像 screen 2,x,y : title "元の画像" SetDIBitsToDevice hdc,0,0,x,y,0,0,0,y,varptr(dibdata),varptr(dibhead),0 redraw // 白黒化処理 repeat dibsize/3 /* 24bit Color */ // 閾値 チェック if peek(dibdata,cnt*3+2) > 160 { /* DIB は RGB ではなく BGR 順 */ // 4byte ずつ 書き込みするため 確保バッファあらかじめ +1 する lpoke dibdata,cnt*3,16777215 }else{ lpoke dibdata,cnt*3,0 } loop // 加工後の画像 screen 3,x,y : title "加工後の画像" SetDIBitsToDevice hdc,0,0,x,y,0,0,0,y,varptr(dibdata),varptr(dibhead),0 redraw %href ; 関連項目 を記入 dsc_GetImageMemSize dsc_GetImage dsc_SaveBMP dsc_SetCapConfig %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetImageMemSize ; 見出し を記入 DIB および ヘッダ のデータサイズを取得(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 (p1) p1 : モード %inst ; 解説文 を記入 p1 を 0 にすると DIBデータサイズが、 1 にすると ヘッダサイズ が取得できます。 このヘッダは BITMAPINFO 構造体と同じです。 %sample ; サンプルスクリプト を記入 sdim dibdata, dsc_GetImageMemSize(0) // DIBデータ sdim dibhead, dsc_GetImageMemSize(1) // ヘッダ dibsize = dsc_GetImageMemSize(0) dsc_GetImageMem dibdata, dibsize, dibhead // 取得した画像の X, Y サイズ x = lpeek(dibhead, 4) y = lpeek(dibhead, 8) %href ; 関連項目 を記入 dsc_GetImageMem %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetRef ; 見出し を記入 HSPDSCの状態を取得します(関数) %prm () 引数なし %inst ; 解説文 を記入 戻り値に以下の値が入ります。 HSPDSC側が管理している値なので、実際には再生されていないことがあります。 0 = 未初期化 1 = レンダラは接続済み(停止中) 2 = 停止中 3 = 再生中 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetState %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_ref "dsc_ref" %index dsc_GetState ; 見出し を記入 HSPDSCの状態を取得します(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 () 引数なし %inst ; 解説文 を記入 DirectShow が返すストリームの状態を取得します。 戻り値に以下の値が入ります。 0 = 停止 1 = 一時停止 2 = 再生中 -1 = 初期化されていません -2 = エラー %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetRef %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetStreamFilterList ; 見出し を記入 再生中のDirectShowフィルターの一覧を取得 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 : フィルターの一覧を入れる文字列型変数 %inst ; 解説文 を記入 内部的には dsc_StreamFilterList 命令が呼び出されます。 詳しくはそちらをご覧ください。 %sample ; サンプルスクリプト を記入 // 0 やマイナスの値を返すことがあるので limit関数で制限しています。 sdim list, limit(dsc_GetStreamFilterListSize()*2, 64, 2147483647) dsc_StreamFilterList list, 0 mes list %href ; 関連項目 を記入 dsc_StreamFilterList dsc_GetStreamFilterListSize %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetStreamFilterListSize ; 見出し を記入 再生中のDirectShowフィルターの一覧のサイズを取得(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 () 引数なし %inst ; 解説文 を記入 再生中のDirectShowフィルターの一覧のサイズを取得する関数です。 dsc_StreamFilterList、dsc_GetStreamFilterListと一緒に使用して使います。 %sample ; サンプルスクリプト を記入 // 0 やマイナスの値を返すことがあるので limit関数で制限しています。 sdim list, limit(dsc_GetStreamFilterListSize()*2, 64, 2147483647) dsc_StreamFilterList list, 0 mes list %href ; 関連項目 を記入 dsc_StreamFilterList dsc_GetStreamFilterList %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_Init ; 見出し を記入 HSPDSCを初期化します %prm %inst ; 解説文 を記入 引数なし HSPDSCを利用するには最初に一度だけこの命令を必ず実行する必要があります。 正常終了時には stat に 0 が返ります。 既に実行済みの場合は -1 が返ります。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_Open dsc_Play dsc_Play2 dsc_Close dsc_GetDeviceList %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_init "dsc_init" %index dsc_Open ; 見出し を記入 指定されたインデックスのデバイスをオープンします %prm p1,p2,p3,p4,p5 p1 : デバイスのインデックス( 1 〜) p2 : 使用するビデオレンダラーモード p3 :(予約引数) 常に0を代入 p4 : レンダラーモード(数値) -> 『VMR7,9(1 or 2)』 のとき AVIファイル名(文字列) -> 『AVI保存モード(300 or 301)』のとき それ以外のモードのときは 0 を代入 p5 : オープンするピンの数(数値) -> 『VMR7,9(1 or 2)』 のとき コーデック名(文字列) -> 『AVI保存モード(300 or 301)』のとき それ以外のモードのときは 0 を代入 %inst ; 解説文 を記入 インデックス は 0 から始まります。 ( p1 ) 利用可能なデバイスの数を超えた数値の場合は、stat に -1 が返ります。 この命令ではデバイスをオープンするだけですので実際に表示されません。 表示するには dsc_Play 命令を実行する必要があります。 p2 には 使用するビデオレンダラー・モードを指定できます。 0 = VideoRenderer 1 = VMR7 2 = VMR9 6 = NullRenderer(表示なし) 300 = AVIファイルに保存(プレビューなし) 301 = AVIファイルに保存(プレビューあり) VMR7はWindows XP以降、 VMR9 はDirectX9以降が入っていないと使えません。 どのPCでも利用できるのはVideo Rendererになります。 Intel(R) 82815 Graphics Controller などの古いグラフィックチップは VMR7やVMR9が正しく機能しません。(場合によってはブルースクリーンになる。) 色数を16bitに下げるとうまく動くこともあるようです。 また一部NVIDIA社製グラフィックボード、NeoMagic 社製シリーズで再生できないものもあります。 システムエラー(1)になる場合 グラフィックボードを疑った方がよいです。 VMR7とVMR9の場合、ffdshowが入っている環境下だと強制終了する問題があります。 ffdshowの設定画面で該当プロセスを呼び出さないよう設定してください。 ■ p2 に 1 = VMR7, 2 = VMR9 を指定している場合は、 p4, p5 には以下の値を入れてください。 VMR7 や VMR9 を利用する際は、p4, p5 に 通常は 1 を代入します。 [p4] 1 = ウィンドウモード 2 = ウィンドウレスモード 4 = レンダーレスモード [p5] 0 = ミキシング不使用 1 = ミキシング使用 2以上を設定しても使用できません。 ■ p2 に 300 or 301 (AVIファイル保存モード)を指定している場合は、 p4 , p5 には以下の値を入れてく ださい。 [p4] p4 = 保存するAVIファイル名(文字列) [p5] p5 = コーデック名(文字列) or 0(数値) コーデック名の一覧は dsc_GetCodecList 命令で取得できます。 完全一致しないとエラー -49 が返ってきます。 無圧縮にする場合は 0 を指定します。 例:プレビューありで、HogeHogeというコーデックを使用 dsc_Open 0, 301, 0, "test.avi", "HogeHoge" 例:プレビューなしで、無圧縮で保存 dsc_Open 0, 300, 0, "test.avi", 0 また、システムに利用可能なデバイスがない場合は stat に -3 が返ります。 正常終了時には stat に 0 が返ります。 dsc_Open エラーコード一覧 1 = カメラの解像度・フレームレートの設定に失敗したので、デフォルトの値で動作中(続行可能なエラー) 0 = エラーなし -1 = 未初期化(dsc_Init) -2 = 使用中 -3 = 利用可能なデバイスが見つからない -4 = デバイスが見つからない -5 = 読み取りエラー -6 = 引数に問題があります -30= FilterGraph の生成に失敗(CoCreateInstance) -31= SampleGrabberFilter の生成に失敗(CoCreateInstance) -32= ISampleGrabber インターフェース取得失敗(QueryInterface) -33= メディアタイプの指定に失敗(SetMediaType) -34= Sample Grabber フィルタの挿入に失敗(AddFilter) -35= CaptureGraphBuilder2 の生成に失敗(CoCreateInstance) -36= FilterGraph のセットに失敗 (SetFiltergraph) -37= MediaControl インターフェース取得失敗(QueryInterface) -38= CreateDevEnum の生成に失敗(CoCreateInstance) -39= Video Renderer の生成に失敗(CoCreateInstance) -40= VideoMixingRenderer の生成に失敗(CoCreateInstance) -41= IVMRFilterConfig インターフェース取得失敗(QueryInterface) -42= VideoMixingRenderer9 の生成に失敗(CoCreateInstance) -43= IVMRFilterConfig9 インターフェース取得失敗(QueryInterface) -44= NullRenderer の生成に失敗(CoCreateInstance) -45= ファイル名の指定に失敗(SetOutputFileName) -46= AVIMUX グラフの追加に失敗(ICaptureGraphBuilder2::RenderStream) -47= CreateDevEnum の生成に失敗(CoCreateInstance) -48= 有効な VideoCompressorCategory が見つからない -49= 指定されたコーデックが見つかりません -50= ファイル名の指定に失敗(SetOutputFileName) -51= AVIMUX グラフの追加に失敗(ICaptureGraphBuilder2::RenderStream) -52= (AVI300) NullRenderer の生成に失敗(CoCreateInstance) -53= (AVI300) NullRenderer フィルタの挿入に失敗(AddFilter) -54= (AVI300) AVIMUX グラフの追加に失敗(ICaptureGraphBuilder2::RenderStream) -55= (AVI301) AVIMUX グラフの追加に失敗(ICaptureGraphBuilder2::RenderStream) -56= NR グラフの追加に失敗(ICaptureGraphBuilder2::RenderStream) -57= カメラの解像度・フレームレートの設定失敗(致命的なエラー) -58= IVideoWindow インターフェース取得失敗(QueryInterface) -59= NR レンダラフィルタ追加に失敗 -76= VR グラフの追加に失敗(ICaptureGraphBuilder2::RenderStream) -79= VR レンダラフィルタ追加に失敗 -86= VMR7 グラフの追加に失敗(ICaptureGraphBuilder2::RenderStream) -87= VMR7 レンダリングモード設定失敗 (IVMRFilterConfig::SetRenderingMode) -88= VMR7 ピンの設定失敗 (IVMRFilterConfig::SetNumberOfStreams) -89= VMR7 レンダラフィルタ追加に失敗(IGraphBuilder::AddFilter) -96= VMR9 グラフの追加に失敗 -97= VMR9 レンダリングモード設定失敗 -98= VMR9 ピンの設定失敗 -99= VMR9 レンダラフィルタ追加に失敗 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_Init dsc_Play dsc_Play2 dsc_Close dsc_FilterProp dsc_DevPinProp dsc_GetDeviceList %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_open "dsc_open" int %index dsc_Play ; 見出し を記入 dsc_Open で 指定されたデバイスを表示します %prm p1, p2, p3, p4, p5 p1 : 貼り付けるウィンドウのウィンドウハンドル( hwnd ) p2 : 表示画面の左上X座標 p3 : 表示画面の左上Y座標 p4 : 表示画面のXサイズ p5 : 表示画面のYサイズ %inst ; 解説文 を記入 dsc_Play hwnd, 0, 0, 320, 240 // 座標 (0, 0)に 320x240のサイズで表示します。 p1 を 0 にしますと、デスクトップに貼り付きますのでご注意ください。 正常終了時には stat に 0 が返ります。 dsc_Open が実行されていない場合などは stat に -1 が返ります。 dsc_Play エラーコード一覧 1 = レンダラの再生でエラーが発生しましたが続行可能 0 = 成功 -1 = 初期化されていません -2 = 既に再生済み -3 = IMediaControlインターフェースの取得に失敗 ※この命令は先に dsc_Open を使う必要があります。 %href ; 関連項目 を記入 dsc_Play2 dsc_Init dsc_Open dsc_Close %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_play "dsc_play" int,int,int,int,int %index dsc_Play2 ; 見出し を記入 dsc_Open で 指定されたデバイスを表示します %prm %inst ; 解説文 を記入 dsc_Open で 指定されたデバイスを表示します dsc_Playと違いDirectShowが自動で用意したウィンドウに表示します。 正常終了時には stat に 0 が返ります。 dsc_Open が実行されていない場合などは stat に -1 が返ります。 dsc_Play2 エラーコード一覧 1 = レンダラの再生でエラーが発生しましたが続行可能 0 = 成功 -1 = 初期化されていません -2 = 既に再生済み -3 = ISampleGrabberインターフェースの取得に失敗 -4 = IMediaControlインターフェースの取得に失敗 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_Play dsc_Init dsc_Open dsc_Close %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_play2 "dsc_play2" %index dsc_ReSize ; 見出し を記入 dsc_Play で 表示中の画面をリサイズします。 %prm p1, p2, p3, p4, p5 p1 : 対象ウィンドウのウィンドウハンドル( hwnd ) p2 : 表示画面の左上X座標 p3 : 表示画面の左上Y座標 p4 : 表示画面のXサイズ p5 : 表示画面のYサイズ %inst ; 解説文 を記入 dsc_Play で 表示中の画面をリサイズします。 正常終了時には stat に 0 が返ります。 エラーコード一覧 -1 = 初期化されていません -2 = ビデオウィンドウがありません ※この命令は先に dsc_Open, dsc_Playを使う必要があります。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_resize "dsc_resize" int,int,int,int,int %index dsc_SaveBMP ; 見出し を記入 静止画キャプチャ画像をBMPで保存します %prm p1 p1 : 保存先ファイル名(文字列) %inst ; 解説文 を記入 dsc_Open で 指定されたデバイスを静止画キャプチャし、画像BMP形式で保存します。 フルカラー24bitBMPで保存されます。 正常終了時には stat に 0 が返ります。 エラー一覧(stat) -1 = 初期化されていません -2 = メディアタイプが取得できませんでした -3 = パラメータが正しくありません -4 = メモリ範囲が異常です -5 = ポインタが不正です -6 = 接続を確立する中間フィルタの組み合わせが見つかりませんでした -7 = 状態が異常です -8 = ファイルの作成に失敗しました -9 = サンプルグラバーが見つかりません -10 = BITMAPのヘッダ書き込み失敗 -11 = BITMAPINFOHEADERの書き込み失敗 -12 = 画像の書き込み失敗 ※この命令は先に dsc_Open, dsc_Play を使う必要があります。 %sample ; サンプルスクリプト を記入 dsc_SaveBMP "test.bmp" //test.bmpを保存します %href ; 関連項目 を記入 dsc_GetImage dsc_SetCapConfig dsc_GetImageMem %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_savebmp "dsc_savebmp" str %index dsc_SetActiveSel ; 見出し を記入 アクティブにする操作するIDを指定 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 = アクティブにする操作ID(0〜31) %inst ; 解説文 を記入 Version 2.00 より複数のデバイスの同時表示・同時操作が可能になったため、 この命令が追加されました。 HSP標準命令の gsel とほぼ同じものと考えてかまいません。 最大32のデバイスを制御可能です。 dsc_Openなどで指定できるデバイスインデックスと操作IDは別物ですのでご注意ください。 %sample ; サンプルスクリプト を記入 //デバイスが4つある場合 dsc_Init dsc_SetActiveSel 0 // 操作ID は 0 dsc_Open 1,0 // デバイスインデックスは1 dsc_Play2 dsc_SetActiveSel 1 // 操作ID は 1 dsc_Open 3,0 // デバイスインデックスは3 dsc_Play2 wait 500 // 5秒待つ dsc_SetActiveSel 0 //操作ID は 0 dsc_Close dsc_SetActiveSel 1 //操作ID は 1 dsc_Close %href ; 関連項目 を記入 dsc_GetActiveSel %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_SetCapConfig ; 見出し を記入 静止画キャプチャーを利用可能にします %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 = モード %inst ; 解説文 を記入 dsc_SetCapConfig で実際に静止画キャプチャーを利用可能にします。 0 = 利用しない 1 = 利用する 利用しない設定にすると若干軽くなります。 利用するときだけ 1 にするといいかもれません。 デフォルトでは 1 にセットされています。 ※この命令は先に dsc_Open, dsc_Play を使う必要があります。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetImage dsc_SaveBMP dsc_GetImageMem %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_SetDevCapConfig ; 見出し を記入 キャプチャデバイスのフレームレートや解像度を指定 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 %inst ; 解説文 を記入 キャプチャデバイスのフレームレートや解像度を指定します。 フレームレートや解像度は、dsc_SetDevFrameRate、dsc_SetDevWidth、dsc_SetDevHeight命令であらかじめ指定しておきます。 正常終了時は stat に 0 が返ります。 エラー一覧(stat) 1 = 設定失敗 -1 = 初期化されていません -2 = キャプチャグラフビルダーが見つかりません -3 = デバイスフィルターが見つかりません -4 = インターフェースが見つかりません %sample ; サンプルスクリプト を記入 // フレームレートや解像度を指定 dsc_SetDevFrameRate 30.00 dsc_SetDevWidth 640 dsc_SetDevHeight 480 // 反映 dsc_SetDevCapConfig %href ; 関連項目 を記入 dsc_GetDevCapConfig dsc_SetDevFrameRate dsc_SetDevWidth dsc_SetDevHeight %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_SetDevFrameRate ; 見出し を記入 キャプチャデバイスのフレームレートを指定 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 : フレームレート(実数) %inst ; 解説文 を記入 キャプチャデバイスのフレームレートを指定します。 %sample ; サンプルスクリプト を記入 // フレームレートや解像度を指定 dsc_SetDevFrameRate 30.00 dsc_SetDevWidth 640 dsc_SetDevHeight 480 // 反映 dsc_SetDevCapConfig %href ; 関連項目 を記入 dsc_SetDevCapConfig dsc_SetDevWidth dsc_SetDevHeight %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_SetDevHeight ; 見出し を記入 キャプチャデバイスの高さを指定 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 : 高さ %inst ; 解説文 を記入 キャプチャデバイスの高さを指定します。 %sample ; サンプルスクリプト を記入 // フレームレートや解像度を指定 dsc_SetDevFrameRate 30.00 dsc_SetDevWidth 640 dsc_SetDevHeight 480 // 反映 dsc_SetDevCapConfig %href ; 関連項目 を記入 dsc_SetDevCapConfig dsc_SetDevFrameRate dsc_SetDevWidth %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_SetDevWidth ; 見出し を記入 キャプチャデバイスの幅を指定 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 : 幅 %inst ; 解説文 を記入 キャプチャデバイスの幅を指定します。 %sample ; サンプルスクリプト を記入 // フレームレートや解像度を指定 dsc_SetDevFrameRate 30.00 dsc_SetDevWidth 640 dsc_SetDevHeight 480 // 反映 dsc_SetDevCapConfig %href ; 関連項目 を記入 dsc_SetDevCapConfig dsc_SetDevFrameRate dsc_SetDevHeight %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_Stop ; 見出し を記入 ストリームを停止させます %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 引数なし %inst ; 解説文 を記入 ストリームを停止させます。 再開させるには、dsc_Play か dsc_Play2 を実行させます。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_Close dsc_Play dsc_Play2 %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_StreamFilterList ; 見出し を記入 再生中のDirectShowフィルターの一覧を取得 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 = フィルターの一覧を入れる文字列型変数 %inst ; 解説文 を記入 事前に sdim などで 十分にバッファーを確保してから実行してください。 確保に必要なサイズは dsc_GetStreamFilterListSize() で取得できます。 正常終了時には stat に フィルターの数 が返ります。 エラー一覧(stat) -1 = 初期化されていません -2 = キャプチャビルダーが見つかりません また、dsc_GetStreamFilterList命令がありますが、本命令と同等のものです。 互換性維持のため残してあります。 ※この命令は先に dsc_Open , dsc_Play を使う必要があります。 %sample ; サンプルスクリプト を記入 // 0 やマイナスの値を返すことがあるので limit関数で制限しています。 sdim list, limit(dsc_GetStreamFilterListSize()*2, 64, 2147483647) dsc_StreamFilterList list, 0 mes list %href ; 関連項目 を記入 dsc_DevPinProp dsc_FilterProp dsc_GetStreamFilterList dsc_GetStreamFilterListSize %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_Version ; 見出し を記入 HSPDSCのバージョンを取得します(関数) %prm () %inst ; 解説文 を記入 HSPDSCのバージョンが返ります %sample ; サンプルスクリプト を記入 mes strf("Version %2.2f",1.0*dsc_Version()/100) %href ; 関連項目 を記入 %group ; グループ を記入 DirectShowキャプチャ命令 ; 定義 : [hspdsc.as] #func dsc_ver "dsc_ver" var %index dsc_VMRMixImage ; 見出し を記入 VMRのミキシングを行います %prm ; パラメータリスト を記入 p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14 ; パラメータ説明文 を記入 p1 = コピー元のデバイスコンテキスト(HDC) p2, p3 = コピー元の左上X座標,Y座標 (整数値) p4, p5 = コピー元の大きさX,Y (整数値) p6 = 透明度(アルファブレンド値) (浮動小数点float) p7, p8 = 合成空間の転送先矩形 (通常 0.0f,0.0f) p9, p10 = 合成空間の転送先矩形 (通常 1.0f,1.0f) p11 = 透過するかどうか(0〜1) (整数値) p12, p13, p14 = 透過色 R,G,B (整数値) %inst ; 解説文 を記入 dsc_Open でVMR,VMR9を選択場合のみ使用可能です。VMRのミキシングを行います。 エラー一覧(stat) -1 = 初期化されていません -2 = VMR,VMR9が使用されていません -3 = インターフェースが見つかりません -4 = パラメータが正しくありません -5 = ポインタが不正です -6 = メモリ範囲が異常です -7 = 失敗しました %sample ; サンプルスクリプト を記入 // サンプル x = dsp_info(0) y = dsp_info(1) screen 2, x, y, 2 color 0, 0, 255 : boxf pos x-80, 0 picload ""+cd+"\\logo3.bmp",1 mhdc = hdc // 青色(0,0,255)がすけるようになります。 dsc_VMRMixImage mhdc, 0, 0, x, y, 0.3f, 0.0f, 0.0f, 1.0f, 1.0f, 1, 0, 0, 255 %href ; 関連項目 を記入 dsc_Open dsc_FilterProp %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_VRate ; 見出し を記入 ビデオ ストリームのおおよそのデータ レート(マクロ) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 %inst ; 解説文 を記入 ビデオ ストリームのおおよそのデータ レート を取得します(ビット/秒) %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_GetCapInfo %group ; グループ を記入 DirectShowキャプチャ命令 %index GetBarCodeStart ; 見出し を記入 バーコード画像の読み込み %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1,p2,p3 p1 : DIBデータ もしくは HSPのVRAMデータ p2 : 幅 p3 : 高さ %inst ; 解説文 を記入 バーコード画像の読み込みを行います。 p1 には DIBデータ もしくは HSPのVRAMデータを指定します。 mref や dsc_GetImageMem命令で本命令に渡せるデータが取得できます。 p2、p3には画像の幅と高さを指定します。 %sample ; サンプルスクリプト を記入 #include "libzbar.as" title "ファイルからバーコードを読み取るサンプル" dialog "jpg;*.gif;*.bmp",16 if stat == 0 : end buffer 2 picload refstr mref vram, 66 x = ginfo_winx // 幅 y = ginfo_winy // 高さ gsel 0, 1 // libzbar.as にて定義 GetBarCodeStart vram, x, y n = stat if n < 0 : stop // エラー title ""+n+" 個見つかりました" // 検出した数だけループ repeat n // バーコードのデータを取得 GetBarCodeData cnt, buf iTyp = stat // バーコードの種類を取得 GetBarCodeType iTyp mes "["+refstr+"]\n"+buf loop // 解放コード BarCodeDestroy %href ; 関連項目 を記入 GetBarCodeData GetBarCodeType BarCodeDestroy %group ; グループ を記入 Zbar %index GetBarCodeData ; 見出し を記入 バーコードデータ取得 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1,p2 p1 : インデックス(0〜) p2 : バーコードのデータを格納する変数 %inst ; 解説文 を記入 バーコードデータ取得する命令です。 インデックスは0から始まり、GetBarCodeStart命令で返ってくるstatの値が、データの総数です。 データの総数分ループして本命令を使います。 詳しくは、GetBarCodeStart命令のサンプルスクリプトを参考にしてください。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 GetBarCodeStart GetBarCodeType BarCodeDestroy %group ; グループ を記入 Zbar %index GetBarCodeType ; 見出し を記入 バーコードの種類を判定 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 : タイプ %inst ; 解説文 を記入 GetBarCodeData命令で返ってきたstatの値が、バーコードの種類(数値)になっています。 GetBarCodeType命令はバーコードの種類(数値)から文字列に変換する命令です。 文字列はrefstrに返ります。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 GetBarCodeStart GetBarCodeData BarCodeDestroy %group ; グループ を記入 Zbar %index BarCodeDestroy ; 見出し を記入 読み込みデータの解放 %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 %inst ; 解説文 を記入 読み取りが完了しましたら最後はこの命令で解放してください。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 GetBarCodeStart GetBarCodeData GetBarCodeType %group ; グループ を記入 Zbar %index dsc_SetLogLevel ; 見出し を記入 ログ記録レベルを指定します %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1 p1 : ログレベル(0〜2) %inst ; 解説文 を記入 p1 には以下の値を指定します。 0 = 取得しない(デフォルト) 1 = エラーのみ取得 2 = 全部取得 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_SetLogBuffer dsc_SetErrorCallbackHwnd dsc_GetLastError %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_SetLogBuffer ; 見出し を記入 ログを記録するバッファーを指定します %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1, p2 p1 : 変数 p2 : 変数のサイズ %inst ; 解説文 を記入 p1 にログを記録する変数を指定します。 sdimであらかじめ領域を確保してください。 p2 に変数のサイズを指定します。 バッファが足りなくなるとログの書き込みを停止しますので大きめに確保するか、定期的にsdimなどでクリアしてください。 %sample ; サンプルスクリプト を記入 sdim log, 4096*10 dsc_SetLogLevel 1 dsc_SetLogBuffer log, 4096*10 %href ; 関連項目 を記入 dsc_SetLogLevel dsc_SetErrorCallbackHwnd dsc_GetLastError %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_SetErrorCallbackHwnd ; 見出し を記入 エラー発生時通知するウィンドウハンドルを指定します %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 p1, p2 p1 : ウィンドウハンドル p2 : メッセージコード %inst ; 解説文 を記入 p1には受け取るウィンドウハンドルを指定します。 p1を0にした場合は通知されなくなります。 p2にはメッセージコード WM_APP(0x8000)〜0xBFFF を指定します。 0にした場合は、0x8765 が指定されます。 %sample ; サンプルスクリプト を記入 dsc_SetErrorCallbackHwnd hwnd, 0x8765 oncmd gosub *e ,0x8765 stop *e dialog "エラーが発生しました" return %href ; 関連項目 を記入 dsc_SetLogLevel dsc_SetLogBuffer dsc_GetLastError %group ; グループ を記入 DirectShowキャプチャ命令 %index dsc_GetLastError ; 見出し を記入 一番最後のエラーコード(DirectShow)を取得します(関数) %prm ; パラメータリスト を記入 ; パラメータ説明文 を記入 () 引数なし %inst ; 解説文 を記入 一番最後のエラーコード(DirectShow)を取得します。 hspdsc.dll 内部で使用されているDirectShow系の関数のエラーコードが取得できます。 %sample ; サンプルスクリプト を記入 %href ; 関連項目 を記入 dsc_SetLogLevel dsc_SetLogBuffer dsc_SetErrorCallbackHwnd %group ; グループ を記入 DirectShowキャプチャ命令