Download 180KB

Transcript
  ビデオキャプチャ
aPCI-8701
ナヌザヌズマニュアル
株匏䌚瀟 保蚌芏定
保蚌の範囲
この保蚌芏定は、匊瀟―株 匏 䌚 瀟 ア ド テ ッ ク シ ス テ ム サ ã‚€ ゚ ン スが補造・出荷し、お客様にご
賌入いただいたハヌドりェア補品に適甚されたす。匊瀟によっお出荷された゜フトりェア補品に
぀いおは、匊瀟所定の゜フトりェア䜿甚蚱諟契玄曞の芏定が適甚されたす。
匊瀟以倖で補造されたハヌドりェア又は゜フトりェア補品に぀いおは、補造元䟛絊元が出荷
した補品そのたたで提䟛いたしたすが、このような補品には、その補造元䟛絊元が独自の保蚌
を芏定するこずがありたす。
保蚌条件
匊瀟は、以䞋の条項に基づき補品を保蚌いたしたす。䞍慮の補品トラブルを未然に防ぐために
も、あらかじめ各条項をご理解のうえ補品をご䜿甚ください。
この保蚌芏定は匊瀟の補品保蚌の根幹をなすものであり、補品によっおは、その取扱説明曞や
保蚌曞などで曎に内容が现分化され個別に芏定されるこずがありたす。したがっお、ここに芏定
する各条項の拡倧解釈による取扱いや特定目的ぞの䜿甚に際しおは十分にご泚意ください。
補品の保蚌期間は、補品に添付される「保蚌曞」に蚘茉された期間ずなり、匊瀟は、保蚌期間
䞭に発芋された䞍具合な補品に぀いお保蚌の責任をもちたす。
保蚌期間䞭の䞍具合な補品に぀いお、匊瀟は䞍具合郚品を無償で修理又は亀換したす。ただし、
次に蚘茉する事項が原因で䞍具合が生じた補品は保蚌の適甚倖ずなりたす。
― 事故、補品の誀甚や乱甚
― 匊瀟以倖が補造又は販売した郚品の䜿甚
― 補品の改造
― 匊瀟が指定した䌚瀟以倖での調敎や保守、修理など
匊瀟から出荷された埌に灜害又は第䞉者の行為や䞍泚意によっおもたらされた䞍具合及び損害
や損倱に぀いおは、いかなる状況に起因するものであっおも匊瀟はその責任を負いたせん。
原子力関連、医療関連、鉄道等運茞関連、ビル管理、その他の人呜に関わるあらゆる事物の斜
蚭・蚭備・噚機など党般にわたり、補品を郚品や機材ずしお䜿甚するこずはできたせん。もし、
これらぞ䜿甚した堎合は保蚌の適甚倖ずなり、いかなる䞍具合及び損害や損倱に぀いおも匊瀟は
責任を負いたせん。
特別な取り扱いに぀いおの泚意
aPCI-8701 回路基板には、静電攟電(ESD)の圱響をうけやすい CMOS 回路が含たれおいたす。
aPCI-8701 の取り扱い、茞送、取り付けに際しおは、静電攟電による回路基板の損傷を防止する
ために特別の泚意が必芁です。ずくに、䞋蚘を順守しおください。
― 回路基板を゚ンクロヌゞャに取り付ける準備ができるたで、静電気防止パッケヌゞから回
路基板を取り出さないでください。
― アヌスグランドを取った静電攟電防止ステヌション以倖では、回路基板を取り扱わな
いでください。
― 回路基板の取り付け、取り倖しの前に、CopmpactPCI バスから電源を切り離しおしおくだ
さい。
目次
1. はじめに............................................................................................................................. 1
2. システム芁件..................................................................................................................... 1
3. 仕様..................................................................................................................................... 2
3.1 コネクタ配眮図 .............................................................................................................2
3.2 汎甚 I/O ポヌトのコネクタのピン配眮...........................................................................3
4. ゜フトりェアレファレンス............................................................................................. 4
5. テクニカルサポヌト......................................................................................................... 6
付録 A SX11.dll デヌタの型ず関数 .................................................................................. 7
デヌタの型 ............................................................................................................................7
フレヌムグラバハンドル HFG............................................................................................................................ 7
むメヌゞバッファハンドル HBUF..................................................................................................................... 7
゚ラヌコヌド ECODE............................................................................................................................................. 7
システムデヌタ構造䜓 PCI.................................................................................................................................. 7
フレヌムデヌタ構造䜓 FRAME........................................................................................................................... 8
むメヌゞバッファデヌタ構造䜓 BUFFER....................................................................................................... 9
オペレヌションモヌドデヌタ構造䜓 MODE................................................................................................10
アドバンストオペレヌションモヌドデヌタ型 MODE_ADVANCED ..................................................... 11
割り蟌みデヌタ型 INT_DATA.............................................................................................................................17
関数..................................................................................................................................... 19
X11_InitSystem..........................................................................................................................................................19
X11_CloseSystem......................................................................................................................................................20
X11_AllocateBuffer ...................................................................................................................................................21
X11_AllocateBufferExternal....................................................................................................................................22
X11_FreeBuffer..........................................................................................................................................................23
X11_Acquire...............................................................................................................................................................24
X11_StartAcquire......................................................................................................................................................26
X11_StopAcquire.......................................................................................................................................................28
X11_GetStatus...........................................................................................................................................................29
X11_ResetStatus........................................................................................................................................................30
X11_GetHFG..............................................................................................................................................................31
X11_WritePort ...........................................................................................................................................................32
X11_ReadPort............................................................................................................................................................32
X11_GetImageSize....................................................................................................................................................33
X11_SetMode.............................................................................................................................................................33
X11_InterruptOn .......................................................................................................................................................34
X11_InterruptOff........................................................................................................................................................37
X11_InterruptMask ...................................................................................................................................................37
X11_InterruptUnmask ..............................................................................................................................................38
1. はじめに
aPCI-8701 CompactPCI ビデオキャプチャを䜿甚しお、倚様なアナログビデオ゜ヌスからコン
ピュヌタのメモリ (RAM) にモノクロ およびカラヌむメヌゞを取り蟌むこずができたす。
CompactPCI バス甚の蚭蚈になっおいたす。IBM PC および互換機甚に蚭蚈された゜フトりェアが
搭茉されおいたす。
aPCI-8701 は、信号゜ヌスの皮類を問わず、入力ビデオ信号をデゞタルに倉換しお、安定した出力
を提䟛したす。入力の 3:1 マルチプレクサにより、2 本のコンポゞット、1 本の Y/C (S-Video)アナ
ログビデオ入力の間で゜ヌス切り替えができたす。぀たり最倧 3 皮類のビデオ゜ヌスをビデオ
キャプチャ以䞋フレヌムグラバに接続するこずができたす。aPCI-8701 は、入力ビデオフォヌ
マット (NTSC、PAL たたは SECAM) を自動的に怜出しお、コンポゞット信号の茝床 (Y) ずクロ
ミナンス (C) 成分を分離したす。それぞれの信号成分は、2 ぀別々の 8 ビット A/D コンバヌタで
デゞタル化されたす。入力信号にロヌパスフィルタリングずダブルオヌバサンプリングをかける
こずで、゚むリアシングアヌチファクトの発生が完党に排陀され、粟密にデゞタル化されたす。
そのあず、デゞタル信号が、必芁に応じお垌望の寞法にスケヌリング/クロッピングされたす。ス
ケヌリングされたむメヌゞはバヌストモヌドを䜿っおホストの RAM に転送されたす。オンボヌ
ドの FIFO で、必芁なバッファリングが確保され、むメヌゞ損倱の確率が最小に抑制されたす。
aPCI-8701 ず 倖郚ハヌドりェア間のむンタフェヌスには 8 ビット汎甚 I/O ポヌトが甚意されおい
たす。これを、たずえばトリガ付きむメヌゞ取り蟌みに利甚するこずもできたす。
2. システム芁件
aPCI-8701 は、3U、32 ビット、33MHz の CompactPCI スロットをスロット必芁ずしたす。486CPU、
8MB の RAM が最䜎芁件ですが、16MB の Pentium 機を䜿甚するこずを掚奚したす。
1
3. 仕様
パラメヌタ
仕様
ビデオ゜ヌス
NTSC、PAL、SECAM、RS-170、CCIR
ビデオ入力
アナログコンポゞットビデオ (BNC) × 2
アナログ Y/C (S-Video) (DIN) × 1
出力フォヌマット
RGB (24 ビット)、Y8 (8 ビット)
出力解像床 (最倧)、ピクセル倀
754 × 480 (NTSC、RS-170)
922 × 576 (PAL、SECAM、CCIR)
A/D 分離
茝床チャンネル
8 ビット
クロミナンスチャンネル
8 ビット
キャプチャレヌト
リアルタむム
30fps (NTSC、RS-170)
25fps (PAL、SECAM、CCIR)
汎甚 I/O ポヌト
入力系統 4、出力系統 4、TTL/CMOS、DB15 雌コネクタ
バス芁件
CompactPCI 3U スロット (33MHz、32 ビット ) × 1
消費電力
200mA (最倧) @ + 5V
100mA (最倧) @ + 12V
動䜜枩床
0∌70℃
3.1 コネクタ配眮図
I/O むンタフェヌス
ビデオ 1
ビデオ 2
S-Video
2
3.2 汎甚 I/O ポヌトのコネクタのピン配眮
ピン番号
信号
ピン番号
信号
1
OUT1
11
OUT3
3
OUT0
13
INP0
5
INP3
15
INP1
7
OUT2
4, 6, 8, 12
GND
10
INP2
2, 9, 14
n/c
3
4. ゜フトりェアレファレンス
aPCI-8701 には、SX11 ゜フトりェア開発キット (SDK) が同梱されおいたす。SDK には、Windows
95 たたは Windows NT 䞊で aPCI-8701 を䜿っおむメヌゞングアプリケヌションを䜜成するのに必
芁な各皮コンポヌネントのほか、゜フトりェアドキュメンテヌション、サンプルアプリケヌショ
ン (゜ヌスコヌド付き) が入っおいたす。コンピュヌタに SX11 SDK をむンストヌルするには、配
垃キットのディスク 1 から setup.exe を実行したす。コンピュヌタに次のファむルがむンストヌ
ルされたす。
\HELP\sx11.hlp - オンラむンヘルプ (デヌタの型ず DLL 関数に぀いおの詳现な説明を含みたす)
\INCLUDE\sx11.h
\INCLUDE\sx11f.h
- C include ファむル (型ず定数)
- C include ファむル (関数のプロトタむプ)
\INCLUDE\sx11.ico - SX11 アむコン
\INCLUDE\sx11_vbi.bas - Visual Basic 甚の "include"ファむル
\LIBRARY\sx11.dll - 32 ビットダむナミックリンクラむブラリ (Windows 95 ず NT 甹)
\LIBRARY\sx11.lib - むンポヌトラむブラリ (C アプリケヌション甚)
\SAMPLES\SAMPLE1\...
\SAMPLES\SAMPLE2\...
\SAMPLES\SAMPLE3\...
これらのディレクトリには、むメヌゞ取り蟌みのテクニックを䟋蚌する 3 皮類のサンプルアプリ
ケヌションの゜ヌスファむルず実行ファむルが入っおいたす。アプリケヌションは C 蚀語で曞か
れおいたす。サンプルアプリケヌションを倉曎するには、project ファむルを䜜成し、(アむコンや
むンポヌトラむブラリファむルを含めお) すべおの必芁なコンポヌネントを指定する必芁があり
たす。サンプルは、Microsoft Visual C++ v.4.0、Watcom C/C++ v.11.0 で正垞コンパむルのテスト枈
みです。
\SAMPLES\VBSAMPLE\SETUP...
Visual Basic サンプルむンストヌル甚セットアップファむル。本䜓のむンストヌルが終了したあず、
このディレクトリから、setup.exe を実行したす (たたは、SK11_SDK フォルダの Setup アむコ
ンをダブルクリックしたす)。VB サンプルアプリケヌションを実行するのに必芁なコンポヌネン
トがコンピュヌタにむンストヌルされたす。Microsoft Visual Basic v.4.0 で曞かれたサンプルアプ
リケヌションの゜ヌスファむルが\SAMPLES\VBSAMPLE\SOURCE にむンストヌルされたす。サン
プルアプリケヌションを倉曎するには、project ファむルを䜜成し、(アむコンや VB "include"ファ
むルを含めお) すべおの必芁なコンポヌネントを指定する必芁がありたす。
4
\SAMPLES\MILSAMPL\...
Matrox Imaging Library (MIL) ぞのむンタフェヌスの䟋ずしおのサンプルアプリケヌション
ダむナミックリンクラむブラリ sx11.dll のむンストヌル先ディレクトリ
\WINDOWS\SYSTEM - Windows 95 甹
\WINNT\SYSTEM32 - Windows NT 甹
sx11.dll のコピヌが \LIBRARY に栌玍されおいたす。
䞊蚘のファむルに加えお、SDK から次のドラむバコンポヌネントがむンストヌルされたす。
\WINDOWS\SYSTEM\VMM32\windrvr.vxd - Windows 95 甹
\WINNT\SYSTEM32\DRIVERS\windrvr.sys - Windows NT 甹
SX11.hlp の内容は付録 A を参照しおください 。
5
5. テクニカルサポヌト
テクニカルサポヌトに぀いおは、匊瀟テクニカルセンタヌにお問い合わせください。
TEL
FAX
E-mail
ホヌムペヌゞ
045-333-0335
045-331-7770
[email protected]
http://www.adtek.co.jp/
6
付録 A SX11.dll デヌタの型ず関数
デヌタの型
フレヌムグラバハンドル HFG
フレヌムグラバ甚のハンドルずしお䜿甚される 32 ビット倀
むメヌゞバッファハンドル HBUF
むメヌゞバッファ甚のハンドルずしお䜿甚される 32 ビット倀
゚ラヌコヌド ECODE
゚ラヌコヌドずしお䜿甚される 32 ビット倀
システムデヌタ構造䜓 PCI
typedef struct {
DWORD boards;
DWORD PCIslot[SYS_GRABBERS];
} PCI;
PCI 構造䜓には、システムの識別したフレヌムグラバボヌドに぀いおの情報が栌玍されたす。
メンバ
蚘述
boards
システムの識別した、サポヌトされおいるフレヌムグラバボヌドの数
PCIslot
スロット番号の配列
PCI 構造䜓は、X11_InitSystem 関数で初期化されたす。システム定数 SYS_GRABBERS は、サ
ポヌトされおいるフレヌムグラバの最倧数を決定したす。倀は SX11.h で定矩されたす。メン
バ PCIslot は、特定ボヌドの PCI スロット番号を衚したす。PCI スロット番号は、PCI BIOS で
生成され、通垞のスロット番号ず同じでない堎合もありたす。
7
フレヌムデヌタ構造䜓 FRAME
typedef struct {
LPBITMAPINFO lpbmi;
void * lpvbits;
} FRAME;
FRAME 構造䜓は、システムにより割り圓おられたむメヌゞバッファの個々のフレヌムに぀い
おの情報が栌玍されたす。
メンバ
蚘述
lpbmi
フレヌムに関連付けされたデバむス独立ビットマップ (DIB) の寞法ず色情
報を定矩する BITMAPINFO 構造䜓ぞのポむンタ
lpvbits
フレヌムのむメヌゞデヌタぞのポむンタ
むメヌゞバッファが割り圓おられるず、すべおのフレヌムが Windows DIB に関連付けされ、察
応するデヌタ構造䜓が䜜成されたす。これは、Windows API を䜿っお、取り蟌たれたむメヌゞ
の衚瀺を単玔化したす。ただし、lpvbits をフレヌムデヌタぞの汎甚ポむンタずしお䜿うこずも
可胜です。ビットマップ、関連デヌタ構造䜓、衚瀺関数の説明に぀いおは Windows API のヘル
プを参照しおください。
泚蚘
バッファが「フラットな」バッファずしお䜜成される堎合でも、BITMAPINFO 構造䜓が䜜成
されたす (MODE 構造䜓の store メンバの説明を参照しおください)。この堎合、Windows API
関数が、むメヌゞを䞊䞋さかさたに衚瀺したす。
8
むメヌゞバッファデヌタ構造䜓 BUFFER
typedef struct {
HBUF hbuf;
DWORD dwFrames;
FRAME frame[SYS_FRAMES];
} BUFFER;
BUFFER 構造䜓は、システムの割り圓おたむメヌゞバッファに぀いおの情報を栌玍したす。む
メヌゞバッファは、1 ぀たたは耇数のむメヌゞフレヌムで構成されたす。取り蟌み関数は、垞
に、連続的に取埗 (grab) されたビデオフレヌムに察応するデヌタで、1 ぀のむメヌゞバッファ
のすべおのフレヌムを埋めたす。
メンバ
蚘述
hbuf
むメヌゞバッファぞのハンドル
dwFrames
むメヌゞバッファ内のフレヌムの数
frame[SYS_FRAMES]
FRAME 構造䜓の配列
BUFFER 構造䜓は、X11_AllocateBuffer 関数で初期化されたす。
9
オペレヌションモヌドデヌタ構造䜓 MODE
typedef struct {
DWORD scale;
DWORD color;
DWORD store;
DWORD input;
MODE_ADVANCED advanced;
} MODE;
MODE 構造䜓は、フレヌムグラバのオペレヌションに぀いおの情報を栌玍したす。ひんぱん
に䜿甚される芋蟌みのないセッティングは、advanced メンバ内郚に隠蔜されたす。
メンバ
蚘述
scale
むメヌゞのスケヌルを定矩したす。次のいずれかになりたす。
倀
SCALE_ADVANCED
蚘述
むメヌゞスケヌルは、MODE_ADVANCED 構造䜓の蚭定で
定矩されたす。
color
store
SCALE8
フルサむズむメヌゞ
SCALE6
3/4 サむズのむメヌゞ
SCALE4
1/2 サむズのむメヌゞ
SCALE2
1/4 サむズのむメヌゞ
むメヌゞの出力カラヌフォヌマットを定矩したす。次のいずれかになりたす。
倀
蚘述
COLOR_MONO
モノクロむメヌゞ、1 バむト/ピクセル
COLOR_RGB
カラヌむメヌゞ、3 バむト/ピクセル
むメヌゞをどのようにメモリに栌玍するかを定矩したす。
次のいずれかになりたす。
倀
蚘述
STORE_DIB
むメヌゞは Windows DIB (ラむンオヌダの䞊䞋反転) ずし
お栌玍されたす。
STORE_FLAT
input
advanced
むメヌゞは通垞のラむンオヌダずしお栌玍されたす。
入力マルチプレクサを制埡したす。次のいずれかになりたす。
倀
蚘述
MUX_0
S-Video 入力
MUX_1
ビデオ 1 入力
MUX_2
ビデオ 2 入力
MODE_ADVANCED 構造䜓。アドバンストモヌドの蚭定を定矩したす。
10
アドバンストオペレヌションモヌドデヌタ型 MODE_ADVANCED
typedef struct {
DWORD interlace;
DWORD xTotal;
DWORD xActive;
DWORD xDelay;
float yFactor;
DWORD yActive;
DWORD yDelay
DWORD FORMAT;
DWORD BRIGHT;
DWORD CONTRAST;
DWORD SAT_U;
DWORD SAT_V;
DWORD HUE;
DWORD LNOTCH;
DWORD LDEC;
DWORD DEC_RAT;
DWORD PEAK;
DWORD CAGC;
DWORD CKILL;
DWORD HFILT;
DWORD RANGE;
DWORD CORE;
DWORD YCOMB;
DWORD CCOMB;
DWORD ADELAY;
DWORD BDELAY;
DWORD SLEEP;
DWORD CRUSH;
DWORD VFILT;
DWORD COLOR_BARS;
DWORD GAMMA;
DWORD PKTP;
} MODE_ADVANCED;
MODE_ADVANCED 構造䜓は、フレヌムグラバのアドバンストオペレヌションモヌドに぀い
おの情報を栌玍したす。
11
メンバ
蚘述
interlace
入力むメヌゞフォヌマットを定矩したす。次のいずれかになりたす。
xTotal
倀
蚘述
IMG_INTERLACED
むンタヌレヌス入力むメヌゞ
IMG_NONINTERLACED
ノンむンタヌレヌス入力むメヌゞ
(氎平ブランキングを含む)出力氎平ピクセルの合蚈数。有効倀は 100∌910
(NTSC) たたは 1135 (PAL) 。フレヌムグラバにより内郚的に生成されるピクセ
ルの数です。
xActive
アクティブ出力氎平ピクセルの合蚈数。有効倀は 80∌900 (NTSC) たたは 1000
(PAL)。出力むメヌゞのピクセル数です。
xDelay
氎平同期に察する、氎平方向のアクティブ領域開始オフセット、ピクセル倀。
垞に、次の条件が充足されなければなりたせん xDelay + xActive <= xTotal
yFactor
垂盎スケヌリング係数。ビデオ゜ヌスが生成する実際のラむン数 (NTSC は
525、PAL は 625) を yFactor で陀した倀が出力むメヌゞのラむン数になりたす。
有効倀は 1.0∌8.0。
yActive
(垂盎スケヌリング係数が適甚される前の)アクティブ出力ラむンの合蚈数。有
効倀は 60∌525 (NTSC) たたは 625 (PAL)。たずえば、係数 2 でスケヌルダりン
した NTSC むメヌゞ党䜓を取埗 (grab) するには、yActive を 525 に、yFactor
を 2.0 に蚭定したす。係数 2 でスケヌルダりンした NTSC むメヌゞの䞊半分を
取埗 (grab) するには、yActive を 262 に、yFactor を 2.0 に蚭定したす。
yDelay
垂盎同期ずの盞察で、垂盎方向のアクティブ領域開始オフセット、(垂盎スケヌ
リングが適甚される前の)ラむン数。垞に、次の条件が充足されなければなりた
せん yDelay + yActive <= (合蚈行数、525 たたは 625)
FORMAT
BRIGHT
入力信号フォヌマット。次のいずれかになりたす。
倀
蚘述
FORMAT_NTSC
NTSC 入力信号
FORMAT_NTSCJ
NTSC (日本) 入力信号
FORMAT_PAL
PAL 入力信号
FORMAT_PALM
PAL (M) 入力信号
FORMAT_PALN
PAL (N) 入力信号
FORMAT_PALNC
PAL (N コンビネヌション) 入力信号
FORMAT_SECAM
SECAM 入力信号
出力信号の明床 (茝床) を制埡したす。0∌0xFF の倀をずりたす。倀は -128
(0×80) ∌ +127 (0×7F) の笊号付きオフセットずみなされたす。茝床倉化の解像
床は 1LSB (フルレンゞの 0.4)。
CONTRAST
この 9 ビット倀に茝床倀を乗じお、コントラスト (ゲむン) 調敎を埗たす。0∌
0×1FF (237) の倀をずりたす。0×0D8 が 100に察応したす。
12
SAT_U
ビデオ信号の U 成分にゲむン調敎を远加するのに䜿甚される 9 ビット倀。同じ
むンクリメント倀ず぀ U および V カラヌ成分を調敎するこずにより、クロミ
ナンスが調敎されたす。0∌0×1FF (201) の倀をずりたす。0×0FE が 100に
察応したす。
SAT_V
ビデオ信号の V 成分にゲむン調敎を远加するために䜿甚される 9 ビット倀。同
じむンクリメント倀ず぀ U および V カラヌ成分を調敎するこずにより、クロ
ミナンスが調敎されたす。0∌0×1FF (284)の倀をずりたす。0×0B4 が 100に
察応したす。
HUE
埩調副搬送波フェヌズの調敎により色盞を制埡したす。0∌0×FF の倀をずりた
す。倀は笊号付きオフセットずみなされたす。0×80 は -90 床、0×7F は +89 床
に察応したす。
LNOTCH
コンポゞット信号を䜿甚するケヌスで、出力むメヌゞの「栌子暡様」パタヌン
を陀去しお、出力信号の副搬送波を枛衰させる内郚茝床ノッチフィルタを制埡
したす。次のいずれかになりたす。
LDEC
倀
蚘述
LNOTCH_OFF
フィルタ無効化
LNOTCH_ON
フィルタ有効化
茝床信号の高呚波数成分を削枛するのに䜿甚される茝床デシメヌション
(decimation) フィルタを制埡したす。より䜎い解像床にスケヌルダりンするず
きに有効です。詳しくは、HFILT を参照しおください。次のいずれかになりた
す。
DEC_RAT
倀
蚘述
LDEC_OFF
フィルタ無効化
LDEC_ON
フィルタ有効化
60 (NTSC) たたは 50 (PAL/SECAM) のドロップアりトフィヌルドたたはフ
レヌム数に察応する 6 ビット倀。倀 0 はデシメヌションを無効にしたす。
PEAK
暙準たたはピヌク茝床ロヌパスフィルタを HFILT 経由で実装するかどうかを
指定したす。次のいずれかになりたす。
CAGC
倀
蚘述
PEAK_OFF
暙準ロヌパスフィルタ
PEAK_ON
ピヌクロヌパスフィルタ
クロミナンス AGC 機胜を制埡したす。有効にするず、入力クロミナンス信号
に 0.5∌2.0 の範囲の倀を倀を乗じるこずにより暙準倖のクロミナンスレベルを
補正したす。次のいずれかになりたす。
倀
蚘述
CAGC_OFF
Chroma AGC 無効化
CAGC_ON
Chroma AGC 有効化
13
CKILL
HFILT
ロヌカラヌの怜出、陀去回路を制埡したす。次のいずれかになりたす。
倀
蚘述
CKILL_OFF
ロヌカラヌの怜出、陀去を有効化
CKILL_ON
ロヌカラヌの怜出、陀去を無効化
LDEC が LDEC_ON に蚭定されおいる堎合に、氎平ロヌパスフィルタリングの
皋床を制埡したす。次のいずれかになりたす。
倀
蚘述
HFILT_AUTO
スケヌルの蚭定に応じお、自動的にフィルタが遞
択されたす。氎平スケヌリングがフルから 1/2 た
でのずき、フィルタリングなしになりたす。ス
ケヌリングが 1/2 から 1/4 のずき、CIF フィルタが
䜿甚されたす。1/4 から 1/8 のずきは、QCIF フィ
ルタが䜿甚されたす。1/8 より小さいスケヌリン
グでは、ICON フィルタが䜿甚されたす。
RANGE
CORE
HFILT_CIF
CIF フィルタ
HFILT_QCIF
QCIF フィルタ
HFILT_ICON
ICON フィルタ
茝床出力の範囲を決定したす。次のいずれかになりたす。
倀
蚘述
RANGE_NORM
暙準オペレヌション (茝床範囲 16∌253)
RANGE_FULL
フルレンゞオペレヌション (茝床範囲 0∌255)
コアリング倀を制埡したす。コアリングを有効にするず、特定倀未満の茝床レ
ベルは切り捚おられお 0 になりたす。次のいずれかになりたす。
YCOMB
倀
蚘述
CORE_OFF
コアリング無効化
CORE_8
コアリング閟倀を 8 に蚭定
CORE_16
コアリング閟倀を 16 に蚭定
CORE_24
コアリング閟倀を 24 に蚭定
茝床コムフィルタリングを制埡したす。次のいずれかになりたす。
倀
蚘述
YCOMB_OFF
垂盎ロヌパスフィルタリングず垂盎補間
YCOMB_ON
垂盎ロヌパスフィルタリングのみ。フィルタタッ
プの数は VFILT の蚭定で指定されたす。
CCOMB
クロミナンスコムフィルタリングを制埡したす。次のいずれかになりたす。
14
ADELAY
倀
蚘述
CCOMB_OFF
クロミナンスフィルタリングを無効化
CCOMB_ON
クロミナンスフィルタリングを有効化
バックポヌチ (耇合画像信号 ) サンプリング遅延。デフォルト倀は 0 × 68
(NTSC) ず 0 × 7F (PAL/SECAM)
BDELAY
副搬送波サンプリング遅延。デフォルト倀は 0 × 5D (NTSC) ず 0 × 73
(PAL/SECAM)
SLEEP
茝床、クロミナンス A/D のスリヌプモヌドを制埡したす。次のいずれかになり
たす。
倀
蚘述
SLEEP_OFF
A/D の䞡方を有効化
Y_SLEEP
茝床の A/D をスリヌプモヌドにする。
C_SLEEP
クロミナンスの A/D をスリヌプモヌドにする。
A/D の䞡方を無効化するには、Y_SLEEP ず
C_SLEEP の論理和を䜿うこずができたす。
CRUSH
AGC モヌドを制埡したす。次のいずれかになりたす。
倀
蚘述
CRUSH_OFF
非適応 AGC
CRUSH_ON
適応 AGC。A/D のオヌバフロヌに察応しお、入力
電圧範囲が䞊昇したす。
VFILT
垂盎スケヌリングフィルタのタップ数を制埡したす。次のいずれかになりたす。
倀
蚘述
YCOMB が YCOMB_ON に蚭定されおいるずき
VFILT_0
2 タップフィルタ
VFILT_1
3 タップフィルタ。385 氎平アクティブピクセル未満の
スケヌリングの堎合のみ利甚可胜
VFILT_2
4 タップフィルタ。193 氎平アクティブピクセル未満の
スケヌリングの堎合のみ利甚可胜
VFILT_3
5 タップフィルタ。193 氎平アクティブピクセル未満の
スケヌリングの堎合のみ利甚可胜
YCOMB が YCOMB_OFF に蚭定されおいるずき
VFILT_0
2 タップ補間のみ
VFILT_1
2 タップフィルタず 2 タップ補間。385 氎平アクティブ
ピクセル未満のスケヌリングの堎合のみ利甚可胜
VFILT_2
3 タップフィルタず 2 タップ補間。193 氎平アクティブ
ピクセル未満のスケヌリングの堎合のみ利甚可胜
VFILT_3
4 タップフィルタず 2 タップ補間。193 氎平アクティブ
ピクセル未満のスケヌリングの堎合のみ利甚可胜
15
COLOR_BARS
GAMMA
PKTP
テストカラヌバヌのパタヌンを制埡したす。次のいずれかになりたす。
倀
蚘述
COLORBARS_OFF
カラヌバヌをオフにしたす。
COLORBARS_ON
カラヌバヌをオンにしたす。
ガンマ補正陀去を制埡したす。次のいずれかになりたす。
倀
蚘述
GAMMA_REMOVE_ON
ガンマ補正陀去をオンにしたす。
GAMMA_REMOVE_OFF
ガンマ補正陀去をオフにしたす。
FIFO トリガポむント。次のいずれかになりたす。
倀
蚘述
PKTP4
4DWORD
PKTP8
8DWORD
PKTP16
16DWORD
PKTP32
32DWORD
16
割り蟌みデヌタ型 INT_DATA
typedef struct {
HFG hfg;
DWORD mask;
DWORD status;
FPTR func;
int priority;
DWORD total;
DWORD lost;
} INT_DATA;
INT_DATA 構造䜓は、割り蟌みのサポヌトに必芁な情報を栌玍したす。
メンバ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
mask
割り蟌みマスク。mask を 0 に蚭定するず割り蟌みが無効になりたす。次の倀
に mask を蚭定するず (論理和を䜿甚できたす)、指定の割り蟌みが有効になり
たす。
倀
蚘述
STATUS_READY
フレヌム取り蟌みが完了
STATUS_VIDEO
入力でビデオステヌタス倉曎
(䟋present から absent ぞ)
STATUS_HLOCK
入力で氎平ロック状態倉曎
STATUS_OFLOW
オヌバフロヌ怜出
STATUS_HSYNC
新しいラむンの開始
STATUS_VSYNC
新しいフィヌルドの開始
STATUS_FMT
ビデオフォヌマット倉曎の怜出
(䟋NTSC から PALぞ)
転送゚ラヌ発生。これはビットの組み合わせです。
STATUS_ERROR
status
フレヌムグラバのステヌタス。個別ビットの意味は、割り蟌みマスクのそれに
察応したす。割り蟌み発生時に status の倀が蚭定されたす。
func
ナヌザ割り蟌み凊理関数ぞのポむンタ。関数の戻り倀は DWORD で、匕数はず
りたせん。
priority
スレッドの優先順䜍レベルを凊理する割り蟌みを指定する敎数。次の倀をずり
たす。
THREAD_PRIORITY_LOWEST
THREAD_PRIORITY_BELOW_NORMAL
THREAD_PRIORITY_NORMAL
THREAD_PRIORITY_ABOVE_NORMAL
THREAD_PRIORITY_HIGHEST
THREAD_PRIORITY_TIME_CRITICAL
17
total
X11_InterruptOn 呌び出し埌に発生した割り蟌みの合蚈数
lost
凊理されなかった割り蟌みの数
泚蚘
割り蟌みマスクのビットはステヌタスワヌドのビットに察応しおいたす。したがっお、個々の
ステヌタス条件の遞択に同じ定数が䜿えたす。
18
関数
X11_InitSystem
__declspec(dllimport) ECODE__stdcall X11_InitSystem (pPCIdata)
/* PCI 構造䜓のアドレス */
PCI * pPCIdata;
X11_InitSystem は、システム初期化関数です。システム䞊でサポヌトされおいるボヌドを識別
し、内郚デヌタ構造を初期化したす。
パラメヌタ
蚘述
pPCIdata
PCI 型倉数ぞのポむンタ。
戻り倀
初期化に成功するず 0、それ以倖ぱラヌコヌドを戻したす。たた、PCI 型構造䜓を倉曎した
す。boards には、識別された、サポヌトされおいるボヌドの数が栌玍されたす。PCIslot 配列
には識別されたボヌドのスロット数が栌玍されおいたす。各ボヌドのフレヌムグラバハンドル
は、X11_GetHFG 関数を䜿っお取埗するこずができたす。
䟋
PCI pci;
ECODE ecode;
int i;
if (!(ecode = X11_InitSystem (&pci))) {
printf (“Boards %d\n”, pci.boards);
for (i = 0; i < pci.boards; i++) {
printf (“Slot %04X\n”, pci.PCIslot[i]);
}
}
else {
return ecode;
}
19
X11_CloseSystem
__declspec(dllimport) void__stdcall X11_InitSystem (void)
X11_CloseSystem 関数は、珟圚のシステムリ゜ヌス割り圓おを解攟したす。アプリケヌション
終了前にかならず呌び出さなければなりたせん。
䟋
PCI pci;
ECODE ecode;
if (!(ecode = X11_InitSystem (&pci))) {
/* application code here */
X11_CloseSystem;
return 0;
}
else {
return ecode;
}
20
X11_AllocateBuffer
__declspec(dllimport) ECODE__stdcall X11_AllocateBuffer (pMode, pBuffer, frames)
MODE * pMode;
BUFFER * pBuffer;
DWORD frames;
/* MODE 構造䜓のアドレス */
/* BUFFER 構造䜓のアドレス */
/* バッファ内のフレヌム数 */
X11_AllocateBuffer 関数は、むメヌゞバッファを割り圓おたす。
パラメヌタ
蚘述
pMode
MODE 型倉数ぞのポむンタ。バッファのサむズずプロパティを定矩するには、
X11_AllocateBuffer 関数の呌び出し前に MODEがセットアップされおいなけれ
ばなりたせん。スケヌリング、カラヌフォヌマット、ストレヌゞタむプに圱響
する MODE の蚭定を倉曎する堎合は、むメヌゞバッファの再割り圓おが必芁
になりたす (MODE、MODE_ADVANCED、X11_FreeBuffer を参照しおくださ
い)。
BUFFER 型倉数ぞのポむンタ。呌び出しに成功するず、X11_AllocateBuffer 関
pBuffer
数により、BUFFER 構造䜓のメンバが蚭定されたす。
むメヌゞバッファ内のフレヌムの数。かならず、1 ∌ SYS_FRAMES の間の敎
frames
数倀です。
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。たた、BUFFER 型構造䜓を倉曎したす。
hbuf には、割り圓おられおいるむメヌゞバッファハンドルが栌玍されたす。dwFrames には、
むメヌゞバッファ内のフレヌム数、frame 配列には、個々のフレヌムのデヌタおよび関連付け
されたビットマップ情報ぞのポむンタが栌玍されたす。
䟋
PCI pci;
ECODE ecode;
MODE mode = {DEF_MODE};
BUFFER buffer;
if (!(ecode = X11_InitSystem (&pci))) {
if (!(ecode = X11_AllocateBuffer (&mode, &buffer, 1))) {
/* application code here */
}
else {
return ecode;
}
}
else {
return ecode;
}
21
X11_AllocateBufferExternal
__declspec(dllimport) ECODE__stdcall X11_AllocateBufferExternal
(pMode, pBuffer, frames, pXbuf)
MODE * pMode;
BUFFER * pBuffer:
DWORD frames;
void * pXbuf;
/* MODE 構造䜓のアドレス */
/* BUFFER 構造䜓のアドレス */
/* バッファ内のフレヌム数 */
/* 倖郚バッファのアドレス */
X11_AllocateBufferExternal 関数は、むメヌゞバッファを倖郚関数が提䟛するバッファにマッ
ピングしたす。
パラメヌタ
蚘述
pMode
MODE 型倉数ぞのポむンタ。バッファのサむズずプロパティを定矩するには、
X11_AllocateBufferExternal 関数の呌び出し前に MODE がセットアップされお
いなければなりたせん。バッファのディメンションずバむト/ピクセル倀が正確
に倖郚バッファのそれに䞀臎しおいなければなりたせん。
pBuffer
BUFFER 型倉数ぞのポむンタ。呌び出しに成功するず、
X11_AllocateBufferExternal 関数により、BUFFER 構造䜓のメンバが蚭定され
たす。
frames
むメヌゞバッファ内のフレヌムの数。かならず、1 ∌ SYS_FRAMES の間の敎
数倀です。ほずんどの堎合、1 です。
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
泚蚘
1. この関数は、SX11.dll ず他のむメヌゞングアプリケヌション高速むンタフェヌスに察応す
るように蚭蚈されおいたす。SX11.dll からアクセス可胜なむメヌゞバッファを、別のアプ
リケヌションたたはラむブラリの割り圓おるバッファにマッピングしたす。たずえば、
デヌタをコピヌする必芁なしに、むメヌゞ凊理アプリケヌションのむメヌゞバッファに盎
接フレヌムを取り蟌むこずができたす。
2.
X11_FreeBuffer ず X11_CloseSystem 関数は、X11_AllocateBufferExternal 関数の割り圓お
たバッファに属するメモリを解攟したせん。メモリを割り圓おたアプリケヌションから解
攟する必芁がありたす。
22
X11_FreeBuffer
__declspec(dllexport) void__stdcall X11_FreeBuffer (hbuf)
/* むメヌゞバッファハンドル */
HBUF hbuf;
X11_FreeBuffer 関数は、むメヌゞバッファに関連付けされたリ゜ヌスを解攟したす。
パラメヌタ
蚘述
hbuf
解攟するむメヌゞバッファのハンドル
泚蚘
(むメヌゞフォヌマットを倉曎するずきなど むメヌゞバッファを再割り圓おする堎合は、
X11_FreeBuffer を 呌 び 出 す 必 芁 が あ り た す 。 ア プ リ ケ ヌ シ ョ ン を 終 了 す る ず き は 、
X11_CloseSystem 関数がバッファリ゜ヌスを解攟するため、X11_FreeBuffer を呌び出す必芁は
ありたせん。
䟋
PCI pci;
ECODE ecode;
MODE mode = {DEF_MODE};
BUFFER buffer;
if (!(ecode = X11_InitSystem (&pci))) {
if (!(ecode = X11_AllocateBuffer (&mode, &buffer, 1))) {
/* application code here */
/* now we change the scaling */
mode.scale = SCALE2;
X11_FreeBuffer (buffer.hbuf);
/* re-allocate the buffer */
if (!(ecode = X11_AllocateBuffer (&mode, &buffer, 1))) {
/* application code here*/
}
else {
return ecode;
}
}
else {
return ecode;
}
}
else {
return ecode;
}
23
X11_Acquire
__declspec(dllimport) ECODE__stdcall X11_Acquire (hfg, hbuf, timeout, pStatus)
HFG hfg;
HBUF hbuf;
float timeout;
DWORD * pStatus;
/*
/*
/*
/*
フレヌムグラバハンドル */
むメヌゞバッファハンドル */
取り蟌みタむムアりト、秒 */
ステヌタス倀を受け取る倉数のアドレス */
X11_Acquire 関数は、むメヌゞバッファのフレヌム数を取埗 (grab) したす。
パラメヌタ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
hbuf
むメヌゞバッファハンドル。むメヌゞバッファを遞択したす。X11_Acquire 呌
び出し埌、むメヌゞバッファのすべおのフレヌムがデヌタで埋められたす。
BUFFER および X11_AllocateBuffer を参照しおください。
取り蟌みタむムアりトの秒数。timeout 秒数埌に取り蟌みが完了しない堎合は、
timeout
戻り倀を返したす。
ステヌタス倀を受け取る倉数のアドレス。むメヌゞバッファのいずれかのフ
pStatus
レヌムの取り蟌み䞭に察応する状態が発生するず、個別ビット倀が蚭定された
す。
戻り倀
取り蟌みの完了埌、たたは timeout の経過埌に戻り倀を返したす。成功するず 0、それ以倖ぱ
ラヌコヌドです。最終フレヌムの取り蟌み終了に察応するステヌタスワヌドの倀で、pStatus
のポむントする倉数が蚭定されたす。各フレヌムの取り蟌みの間で、ステヌタスビットは、自
動的にリセットされたせん。個別ステヌタスビットを遞択するのに䜿甚する定数の説明に぀い
おは X11_GetStatus を参照しおください。
䟋
PCI pci;
ECODE ecode;
MODE mode = {DEF_MODE};
BUFFER buffer;
DWORD frames = THAT_MANY;
HFG hfg;
float timeout = .5;
DWORD status;
if (!(ecode = X11_InitSystem (&pci))) {
/* assume we need the 1st frame grabber */
if (!(ecode = X11_GetHFG (&hfg, pci.PCIslot[0]))) {
if (!(ecode = X11_AllocateBuffer
(&mode, &buffer, frames))) {
24
if (!(ecode = X11_Acquire
(hfg, buffer.hbuf, timeout, &status))) {
/* application code here */
}
else {
return ecode;
}
}
else {
return ecode;
}
}
else {
return ecode;
}
}
else {
return ecode;
}
25
X11_StartAcquire
__declspec(dllimport) ECODE__stdcall X11_SrartAcquire (hfg, hbuf, acqmode)
HFG hfg;
HBUF hbuf;
DWORD acqmode;
/* フレヌムグラバハンドル */
/* むメヌゞバッファハンドル */
/* 取り蟌みモヌド */
X11_StartAcquire 関数は、むメヌゞバッファのフレヌム数の取り蟌みを開始し、即時に戻り倀
を返したす。
パラメヌタ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
hbuf
むメヌゞバッファハンドル。むメヌゞバッファを遞択したす。
X11_StartAcquire
呌び出し埌、むメヌゞバッファのすべおのフレヌムがデヌタで埋められたす。
BUFFER および X11_AllocateBuffer を参照しおください。
acqmode
取り蟌みモヌドスむッチ。次のいずれかになりたす。
倀
蚘述
AMODE_SINGLE
むメヌゞバッファは䞀床だけ埋められたす。
AMODE_CONT
取り蟌みが停止するむメヌゞバッファは連続的に埋め
られたす。
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。取り蟌みの開始埌、即時に返したす。ア
プリケヌションは、ステヌタスビットをポヌリングしお、たたは割り蟌みを䜿っお、取り蟌み
が完了したかどうかを刀定したす。連続モヌドが遞択されおいる堎合、むメヌゞバッファの最
埌のフレヌムが埋められたあず、続いおすぐに、最初のフレヌムが䞊曞きされたす。アプリケヌ
ションは、STATUS_READY ビットをポヌリング (およびリセット) しお、たたは割り蟌みを
䜿っお、各個別フレヌムの完了を刀定したす。AMODE_SINGLE が遞択されおいる堎合、む
メヌゞバッファの最終フレヌムが完了した時点で、STATUS_READY_ALL ビットが蚭定され
たす。AMODE_CONT が遞択されおいる堎合、最初のフレヌムの取り蟌み開始時にリセット
さ れ る の で 、 STATUS_READY_ALL ビ ッ ト の ポ ヌ リ ン グ は ä¿¡ é Œ で き た せ ん 。
STATUS_READY_ALL ビットに関連付けされた割り蟌みはありたせん。
䟋
PCI pci;
ECODE ecode;
MODE mode = {DEF_MODE};
BUFFER buffer;
DWORD frames = THAT_MANY;
HFG hfg;
DWORD status;
26
if (!(ecode = X11_InitSystem (&pci))) {
/* assume we need the 1st frame grabber */
if (!(ecode = X11_GetHFG (&hfg, pci.PCIslot[0]))) {
if (!(ecode = X11_AllocateBuffer
(&mode, &buffer, frames))) {
if (!(ecode = X11_StartAcquire
(hfg, buffer.hbuf, timeout, &status))) {
/* wait until acquisition complete */
while (!(ecode = X11_GetStatus (hfg, &status)) &&
!(status & STATUS_READY_ALL)) {
}
if (!ecode) {
/* application code here */
}
else {
return ecode;
}
}
else {
return ecode;
}
}
else {
return ecode;
}
}
else {
return ecode;
}
}
else {
return ecode;
}
27
X11_StopAcquire
__declspec(dllexport) ECODE__stdcall X11_StopAcquire (hfg)
/* フレヌムグラバハンドル */
HFG hfg;
パラメヌタ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
X11_StopAcquire 関数は、むメヌゞ取り蟌みを停止したす。X11_StartAcquire を呌び出しお取
り蟌みを開始したずきに限り、この関数を䜿甚する必芁がありたす。
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
28
X11_GetStatus
__declspec(dllexport) ECODE__stdcall X11_GetStatus (hfg, pStatus)
HFG hfg;
DWORD * pStatus;
/* フレヌムグラバハンドル */
/* ステヌタス倀を受け取る倉数のアドレス */
X11_GetStatus 関数は、フレヌムグラバステヌタスワヌドの倀を求めたす。
パラメヌタ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
pStatus
ステヌタス倀を受け取る倉数のアドレス。
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。ステヌタスワヌドの個別ビットには、次
の意味がありたす。
倀
蚘述
STATUS_READY
フレヌム取り蟌みが完了。アプリケヌションによりリセットする必芁
がありたす。X11_ResetStatus を参照しおください。
STATUS_READY_ALL
むメヌゞバッファの取り蟌みが完了。最初のフレヌムの取り蟌み開始
時に自動リセットされたす。
STATUS_VIDEO
入力でビデオステヌタス倉曎 (䟋present から absent ぞ)
STATUS_HLOCK
入力で氎平ロック状態倉曎
STATUS_OFLOW
オヌバフロヌ怜出
STATUS_HSYNC
新しいラむンの開始
STATUS_VSYNC
新しいフィヌルドの開始
STATUS_FMT
ビデオフォヌマット倉曎の怜出 (䟋NTSC から PAL ぞ)
STATUS_ERROR
転送゚ラヌ発生。これはビットの組み合わせです。
29
X11_ResetStatus
__declspec(dllexport) ECODE__stdcall X11_ResetStatus (hfg, mask)
/* フレヌムグラバハンドル */
/* リセットマスク */
HFG hfg;
DWORD mask;
X11_ResetStatus 関数は、フレヌムグラバステヌタスレゞスタの個別ビットをリセットしたす。
パラメヌタ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
mask
倀 1 を指定するず、
ステヌタスレゞスタの察応するビットがリセットされたす。
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。ステヌタスワヌドの個別ビットの意味に
぀いおは、X11_GetStatus を参照しおください。
30
X11_GetHFG
__declspec(dllexport) ECODE__stdcall X11_GetHFG (phfg, slot)
/* フレヌムグラバハンドルのアドレス */
/* PCI スロット番号 */
HFG * phfg;
DWORD slot;
X11_GetHFG 関数は、指定された、ボヌドの PCI スロット番号に぀いお、フレヌムグラバハン
ドルの倀を取り出したす。
パラメヌタ
蚘述
phfg
HFG 型倉数ぞのポむンタ
slot
PCI スロット番号
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。phfg のポむントする倉数をフレヌムグラ
バハンドルの倀に蚭定したす。
䟋
PCI pci;
ECODE ecode;
HFG hfg[SYS_GRABBERS];
int i;
if (!(ecode = X11_InitSystem (&pci))) {
for (i = 0; i < pci.boards; i++) {
if ((ecode = X11_GetHFG (&hfg[i], pci.PCIslot[i]))) {
return ecode;
}
}
/* application code here */
}
else {
return ecode;
}
31
X11_WritePort
__declspec(dllexport) ECODE__stdcall X11_WritePort (hfg, data, mask)
/* フレヌムグラバハンドルのアドレス */
/* 出力ポヌトに曞き蟌むデヌタ */
/* 曞き蟌みマスク */
HFG hfg;
DWORD data;
DWORD mask;
X11_WritePort 関数は、フレヌムグラバの 4 ビット出力ポヌトにデヌタを曞き蟌みたす。
パラメヌタ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
data
出力ポヌトに曞き蟌むデヌタ。䞋䜍 4 ビットのみ有意です。
mask
倀 1 を指定するず、察応するビットの修正が可胜になりたす。
他のビットに圱響を䞎えずに個々のビットの修正が可胜になりたす。
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
X11_ReadPort
__declspec(dllexport) ECODE__stdcall X11_ReadPort (hfg, pData)
/* フレヌムグラバハンドルのアドレス */
/* デヌタ倉数のアドレス */
HFG hfg;
DWORD * pData;
X11_ReadPort 関数は、フレヌムグラバの 4 ビット入力ポヌトからデヌタを読み蟌みたす。
パラメヌタ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
pData
䞋䜍 4 ビットにデヌタを受け取る DWORD 倉数ぞのポむンタ
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
32
X11_GetImageSize
__declspec(dllexport) ECODE__stdcall X11_GetImageSize (pMode, pXsize, pYsize)
MODE * pMode;
DWORD * pXsize;
DWORD * pYsize;
/* MODE 型倉数のアドレス */
/* 氎平サむズを受け取る倉数のアドレス */
/* 垂盎サむズを受け取る倉数のアドレス */
X11_GetImageSize 関数は、特定モヌドに察応するむメヌゞの寞法を取り出したす。耇雑な
フォヌマッティングオプションを䜿っおいお、むメヌゞ寞法が取り出せないケヌスで圹に立ち
たす。たずえば、取り出された倀を䜿っお、ディスプレむ・りィンドりを定矩するこずもでき
たす。
パラメヌタ
蚘述
pMODE
モヌドの蚭定を栌玍する MODE 型倉数ぞのポむンタ
pXsize
ピクセル倀でむメヌゞの氎平サむズを受け取る DWORD ぞのポむンタ
pYsize
ピクセル倀でむメヌゞの垂盎サむズを受け取る DWORD ぞのポむンタ
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
X11_SetMode
__declspec(dllexport) ECODE__stdcall X11_SetMode (hfg, pMode)
/* フレヌムグラバハンドルのアドレス */
/* MODE 型倉数のアドレス */
HFG hfg;
MODE * pMode;
X11_SetMODE 倉数は、芁求されたフレヌムグラバモヌドを蚭定したす。
パラメヌタ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
pMODE
モヌドの蚭定を栌玍する MODE 型倉数ぞのポむンタ
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
泚蚘
X11_SetMODE 倉数関数呌び出しの結果ずしお、pMode のポむントする MODE 倉数の倀が倉
曎される堎合がありたす。たずえば、(SCALE8 など)既定のスケヌル蚭定の 1 ぀を䜿甚するず、
MODE の advanced 郚分のメンバはそれに埓っお蚭定されたす。
33
X11_InterruptOn
__declspec(dllexport) ECODE__stdcall X11_InterruptOn (pIntData)
INT_DATA * pIntData;
/* INT_DATA 型倉数のアドレス */
X11_InterruptOn 関数は、特定フレヌムグラバに぀いお割り蟌みを有効にしたす。
パラメヌタ
蚘述
pIntData
割り蟌みの蚭定を栌玍するグロヌバル倉数ぞのポむンタ
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
泚蚘
SX11.dll は、割り蟌みの凊理ずしお、蚱可された割り蟌みが発生したずきにりェヌクアップす
る䞊列スレッドを生成したす。システム偎の割り蟌み凊理プロシヌゞャは、pIntData 型のポむ
ントする INT_DATA 型グロヌバル倉数に必芁なデヌタをコピヌし、INT_DATA の func メンバ
のポむントするナヌザ関数を呌び出したす。INT_DATA 構造䜓は、次のメンバを栌玍したす。
メンバ
蚘述
hfg
フレヌムグラバハンドル。フレヌムグラバを遞択したす。
mask
割り蟌みマスク。mask を 0 に蚭定するず割り蟌みが無効になりたす。次の倀
に mask を蚭定するず(論理和を䜿甚できたす)、指定の割り蟌みが有効になりた
す。
status
倀
蚘述
STATUS_READY
フレヌム取り蟌みが完了
STATUS_VIDEO
入力でビデオステヌタス倉曎 (䟋present から absent ぞ)
STATUS_HLOCK
入力で氎平ロック状態倉曎
STATUS_OFLOW
オヌバフロヌ怜出
STATUS_HSYNC
新しいラむンの開始
STATUS_VSYNC
新しいフィヌルドの開始
STATUS_FMT
ビデオフォヌマット倉曎の怜出 (䟋NTSC から PAL ぞ)
STATUS_ERROR
転送゚ラヌ発生。これはビットの組み合わせです。
フレヌムグラバのステヌタス。個別ビットの意味は、割り蟌みマスクのそれに
察応したす。割り蟌み発生時に status の倀が蚭定されたす。
func
ナヌザ割り蟌み凊理関数ぞのポむンタ。関数の戻り倀は DWORD で、匕数は
ずりたせん。
34
スレッドの優先順䜍レベルを凊理する割り蟌みを指定する敎数。次の倀をずり
priority
たす。
THREAD_PRIORITY_LOWEST
THREAD_PRIORITY_BELOW_NORMAL
THREAD_PRIORITY_NORMAL
THREAD_PRIORITY_ABOVE_NORMAL
THREAD_PRIORITY_HIGHEST
THREAD_PRIORITY_TIME_CRITICAL
total
X11_InterruptOn 呌び出し埌に発生した割り蟌みの合蚈数
lost
凊理されなかった割り蟌みの数。ナヌザ関数の実行䞭に発生した割り蟌み
䞋蚘の䟋に瀺すように、グロヌバル倉数を経由しお、メむンアプリケヌションずナヌザ関数間
でデヌタを盞互に受け枡しするこずができたす。デフォルトで、割り蟌みはすべお、リセット
時にマスクがかけられたす。぀たり、無効化されたす。割り蟌みのマスクを倖しお有効にする
には、X11_InterruptUnmask 関数を呌び出さなければなりたせん。たた、システム偎の割り蟌み
凊理プロシヌゞャが割り蟌みにマスクをかけるので、この関数は、割り蟌み発生埌に呌び出す
必芁がありたす。
䟋
/*
global section */
/*
define USER type to pass data to/from the user interrupt
handling function.
Assume components’ types are defined */
struct USER {
SOMETYPE user1;
ANOTHERTYPE user2;
YETANOTHERTYPE user3;
};
struct USER user;
INT_DATA intdata;
/* end of global section */
ECODE ecode;
HFG hfg;
BUFFER buffer;
BOOL enough;
/* Initialize the system, allocate buffer(s), get handles here */
/* Set up INT_DATA */
intdata.hfg = hfg;
intdata.mask = STATUS_READY;
intdata.func = UserFunc;
//see below;
intdata.priority = THREAD_PRIORITY_NORMAL;
35
/* Set up the necessary user data */
user.user2 = NOT_READY;
//some user flag;
/* Enable interrupt */
if (!(ecode = X11_InterruptOn (&intdata))) {
if (!(ecode = X11_InterruptUnmask (hfg, STATUS_READY))) {
/* start acquisition */
X11_StartAcquire (hfg, buffer.hbuf, AMODE_SINGLE);
/* do whatever is necessary here,
for example:
*/
while (!enough) {
if (user.user2 == READY) {
user.user2 = NOT_READY;
/* start next acquisition */
X11_InterruptUnmask (hfg, STATUS_READY);
X11_StartAcquire (hfg, buffer.hbuf, AMODE_SINGLE);
/* image is ready, do something with it */
}
}
}
else {
return ecode;
}
}
else {
return ecode;
}
DWORD UserFunc (void)
{
/* do what you need to here,
pass the data via USER */
user.user1 = 1;
user.user2 = READY;
// etc.
return 0;
}
36
X11_InterruptOff
__declspec(dllexport) ECODE__stdcall X11_InterruptOff (pIntData)
INT_DATA * pIntData;
/* INT_DATA 型倉数のアドレス */
X11_InterruptOff 関数は、特定フレヌムグラバに぀いお割り蟌みを無効にしたす。
パラメヌタ
蚘述
pIntData
割り蟌みの蚭定を栌玍するグロヌバル倉数ぞのポむンタ
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
泚蚘
X11_InterruptOff 関数の匕数は、X11_InterruptOn の呌び出しに䜿甚した匕数ず同じでなけれ
ばなりたせん。
X11_InterruptMask
__declspec(dllexport) ECODE__stdcall X11_InterruptMask (pIntData)
INT_DATA * pIntData;
/* INT_DATA 型倉数のアドレス */
X11_InterruptMask 関数は、特定フレヌムグラバに぀いお割り蟌みにマスクをかけたす。
パラメヌタ
蚘述
pIntData
割り蟌みの蚭定を栌玍するグロヌバル倉数ぞのポむンタ
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
泚蚘
X11_InterruptMask 関数は、ハヌドりェアレベルで遞択された割り蟌みを無効化したす。割り
蟌み凊理プロシヌゞャ自䜓は匕き続きアクティブのたたです。X11_InterruptMask 関数の匕数
は、X11_InterruptOn の呌び出しに䜿甚した匕数ず同じでなければなりたせん。
37
X11_InterruptUnmask
__declspec(dllexport) ECODE__stdcall X11_InterruptUnmask (pIntData)
INT_DATA * pIntData;
/* INT_DATA 型倉数のアドレス */
X11_InterruptUnmask 関数は、特定フレヌムグラバに぀いお割り蟌みのマスクを倖したす。
パラメヌタ
蚘述
pIntData
割り蟌みの蚭定を栌玍するグロヌバル倉数ぞのポむンタ
戻り倀
成功するず 0、それ以倖ぱラヌコヌドを戻したす。
泚蚘
X11_InterruptUnmask 関数は、ハヌドりェアレベルで遞択された割り蟌みを有効化したす。
X11_InterruptUnmask 関数の匕数は、X11_InterruptOn の呌び出しに䜿甚した匕数ず同じでな
ければなりたせん。
38
Compact PCI シリヌズ
aPCI-8701
取扱説明曞
──────────────────────────────
初版発行 2000 幎 7 月 26 日
第版発行 2000 幎 8 月 23 日
発行所 株匏䌚瀟 アドテック システム サむ゚ンス
〒240-0005 神奈川県暪浜垂保土ヶ谷区神戞町 134
YBP ハむテクセンタヌ 1F
el 045-331-7575 ㈹ Fax 045-331-7770
──────────────────────────────
萜䞁・乱䞁はお取り替えいたしたす。
䞍蚱耇補
CPCI-046-000823
© ADTEK SYSTEM SCIENCE Co.,Ltd. 2000