- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
AN75779のデザインを用いてUVCのイメージセンサインタフェースを構築しようとしていますが、
現在、センサからの出力がPC側で表示できておりません。
アプリケーション上(VirtualDubやAmCap)を開くと、デバイスの選択はFX3と表示されますが、
画像としてはまったく表示されず、Blankのままです。
このデザインにおいては、USB3.0でのインタフェース時、フレームレートは30fps固定でしょうか。
いま使用しているセンサの出力が22fps固定なのですが、フレームレートの問題でNGとなっている
のであればFirmを見合う形で変更したいのですが、可能なのでしょうか。
それとも、ISP側でフレームレート変換が必要でしょうか。
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
FX3でのインタフェース時、フレームレートはUVCディスクリプタで設定が可能です。
cyfxuvcdscr.c 内でConfiguration Descriptor がCyFxUSBSSConfigDscr (USB3.0の場合)として定義されており、 "Class specific Uncompressed VS frame descriptor" にて、AN75779のデフォルトですと30 fpsで設定されています。
line 849に書かれた
0x15, 0x16, 0x05, 0x00, /* 30fps */
がDefaultのフレームレートを30fpsにする、という設定です。値はフレームのインターバルが書かれています。
例として、VGAで22fpsを表示する "Class specific Uncompressed VS frame descriptor" を以下に記載します。
/* Class specific Uncompressed VS Frame descriptor for VGA*/ |
---|
0x1E, /* Descriptor size */ 0x24, /* Descriptor type*/ 0x05, /* Subtype: uncompressed frame I/F */ 0x01, /* Frame Descriptor Index */ 0x01, /* Still image capture method 1 supported */ 0x80,0x02, /* Width in pixel: 640-VGA */ 0xE0,0x01, /* Height in pixel 480-VGA */ 0x00,0x00,0x65,0x04, /* Min bit rate bits/s. 640x480x15x16 (bitrate = width x height x frame rate x 16bit/pixel) */ 0x00,0x00,0x94,0x11, /* Max bit rate bits/s. 640x480x60x16 */ 0x00,0x60,0x09,0x00, /* Maximum video or still frame size in bytes(Deprecated) 640x480x2 bytes */ 0x91,0xEF,0x06,0x00, /* Default Frame Interval 22 fps*/ 0x01, /* Frame interval(Frame Rate) types: Only one frame interval supported */ 0x91,0xEF,0x06,0x00, /* Minimum Frame Interval 22 fps */ |
フレームインターバルの早見表を以下に示します:
Frame interval setting reference table |
---|
15 fps = 666666 ns (frame interval) = 0x2A,0x2C,0x0A,0x00 22 fps = 454545 ns (frame interval) = 0x91,0xEF,0x06,0x00 30 fps = 333333 ns (frame interval) = 0x15,0x16,0x05,0x00 60 fps = 166666 ns (frame interval) = 0x0A,0x8B,0x02,0x00 120 fps = 83333 ns (frame interval) = 0x85,0x45,0x01,0x00 |
Class specific VS frame descriptorの設定については、必要に応じて添付のVideo Device Examplesの"2.3.5.1.4 Class-specific VS Frame Descriptor"もご参照いただければと思います。本添付資料はUSB-IFよりダウンロード可能です。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
FX3でのインタフェース時、フレームレートはUVCディスクリプタで設定が可能です。
cyfxuvcdscr.c 内でConfiguration Descriptor がCyFxUSBSSConfigDscr (USB3.0の場合)として定義されており、 "Class specific Uncompressed VS frame descriptor" にて、AN75779のデフォルトですと30 fpsで設定されています。
line 849に書かれた
0x15, 0x16, 0x05, 0x00, /* 30fps */
がDefaultのフレームレートを30fpsにする、という設定です。値はフレームのインターバルが書かれています。
例として、VGAで22fpsを表示する "Class specific Uncompressed VS frame descriptor" を以下に記載します。
/* Class specific Uncompressed VS Frame descriptor for VGA*/ |
---|
0x1E, /* Descriptor size */ 0x24, /* Descriptor type*/ 0x05, /* Subtype: uncompressed frame I/F */ 0x01, /* Frame Descriptor Index */ 0x01, /* Still image capture method 1 supported */ 0x80,0x02, /* Width in pixel: 640-VGA */ 0xE0,0x01, /* Height in pixel 480-VGA */ 0x00,0x00,0x65,0x04, /* Min bit rate bits/s. 640x480x15x16 (bitrate = width x height x frame rate x 16bit/pixel) */ 0x00,0x00,0x94,0x11, /* Max bit rate bits/s. 640x480x60x16 */ 0x00,0x60,0x09,0x00, /* Maximum video or still frame size in bytes(Deprecated) 640x480x2 bytes */ 0x91,0xEF,0x06,0x00, /* Default Frame Interval 22 fps*/ 0x01, /* Frame interval(Frame Rate) types: Only one frame interval supported */ 0x91,0xEF,0x06,0x00, /* Minimum Frame Interval 22 fps */ |
フレームインターバルの早見表を以下に示します:
Frame interval setting reference table |
---|
15 fps = 666666 ns (frame interval) = 0x2A,0x2C,0x0A,0x00 22 fps = 454545 ns (frame interval) = 0x91,0xEF,0x06,0x00 30 fps = 333333 ns (frame interval) = 0x15,0x16,0x05,0x00 60 fps = 166666 ns (frame interval) = 0x0A,0x8B,0x02,0x00 120 fps = 83333 ns (frame interval) = 0x85,0x45,0x01,0x00 |
Class specific VS frame descriptorの設定については、必要に応じて添付のVideo Device Examplesの"2.3.5.1.4 Class-specific VS Frame Descriptor"もご参照いただければと思います。本添付資料はUSB-IFよりダウンロード可能です。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
迅速なご回答ありがとうございます。
フレームレートの設定ですが、DefaultとShortestと2つあり、例えば上記の60fpsの設定ですと15~60fpsの信号であれば受けられる、とも読み取れますが、実際はDefaultの値の固定値なのでしょうか。
30fpsの設定で22fpsが受けられない(つまり画像が出ないのはここのフレームレートの設定が間違っている)のか否かの確認をしたい次第です。
以上です。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
前述の回答に記述したVS Frame Descriptorの例を、22fpsで表示する用に変更しました。
ISP側も22fpsで、FX3のUVCディスクリプタでも22fpsであれば、フレームレートによる問題は発生しないと考えられます。
また、確認した限り、Minimum Frame Intervalの設定に依存するように見えます。そのため、Minimum Frame Intervalが22fpsならば22fpsで送られます。Minimum Frame IntervalとDefault Frame Intervalを同じ値に合わせてご利用いただくのが良いかと存じます。
よろしくお願い致します。
Hirotaka Takayama
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
コメントありがとうございます。
了解しました。