ネットワークビデオ伝送評価ボード
本製品はネットワークによるマルチメディアコンテンツ伝送の開発プラットフォームです。
共通 | 画面解像度 | VGA, SVGA, XGA, SXGA |
---|---|---|
アルファ層 | 色数 | 65,536色,透明色使用時4,096色 |
ダブルバッファリング | 不可 | |
ビデオアルファ層 | 色数 | 65,536色,透明色使用時4,096色 |
ダブルバッファリング | 不可 | |
ビデオ層 | 色数 | 65,536色 |
ダブルバッファリング | 可 | |
動画再生支援機能 | スケーリング,色変換 | |
背景層 | 色数 | 16,777,216色,SXGA時は65,536色 |
ダブルバッファリング | 可 |
ビデオ入力 | S端子, RCAコンポジット | 図1左面下 |
---|---|---|
オーディオ入力 | RCAステレオ | 図1左面下 |
ビデオ出力 | S端子, RCAコンポジット | 図1下面左 |
オーディオ出力 | RCAステレオ | 図1下面左 |
アナログRGB出力 | DSUB15(使用不可) | 図1下面左 |
Ethernet | 100BaseTX | 図1右面中 |
シリアルコンソール | RS-232C | 図1右面上 |
電源 | DC 5V | 図1上面中 |
リセットスイッチ | ボタン | 図1右上 |
スイッチ | ボタン x 6 | 図1右上 |
ビデオADC | Philips SAA7115 | |
オーディオADC | Philips UDA1342TS | |
ビデオDAC | Cirrus Logic CS4954 | |
オーディオDAC | Cirrus Logic CS4331 | |
CPU | Renesas 7751R | 図1中央 |
MPEG Codec | Vweb VW2010 | 図1左上 |
Flash ROM | 32MB | |
メインメモリ | 64MB | |
ビデオメモリ | 16MB |
ビデオ出力 | S端子, RCAコンポジット | 図2下面中央 |
---|---|---|
オーディオ出力 | RCAステレオ | 図2下面中央 |
アナログRGB出力 | DSUB15 | 図2下面右 |
Ethernet | 100BaseTX(PCカード) | 図2右面中央 |
シリアルコンソール | USB | 図2下面左 |
電源 | DC 5V | 図2下面左 |
リセットスイッチ | ボタン | 図2下面左 |
スイッチ | ボタン x 3 | 図2上面左 |
CPU | Renesas 7751R | 図2上部中央 |
MPEG Codec | Vweb VW2010 (VW2002モード) | 図2左下 |
ビデオコントローラ | Silicon Motion SM501 | 図2右中央 |
ビデオDAC | Cirrus Logic CS4954 | |
オーディオDAC | Cirrus Logic CS4334 | |
Flash ROM | 16MB | |
メインメモリ | 64MB | |
ビデオメモリ | 8 + 16MB | |
JTAG | 14ピンJTAG(H-UID)コネクタ |
ユーザランドの更新はNFSを通じて行います。
mount -w -o remount /
mount 1.2.3.4:/export /mnt/nfs
cp /mnt/nfs/vwnet_send2 /bin cp /mnt/nfs/libvwStream.so /lib
mount -r -o remount /
umount /mnt/nfs
プログラム名 | 引数 | 機能 |
---|---|---|
vwdecoder | *.ini *.mpg opt... | MPEGファイルを再生してビデオ出力 |
vwencoder | *.ini *.mpg opt... | ビデオ入力を符号化してMPEGファイルに保存 |
vwcodec | *.ini *.mpg opt... | ビデオ入力を符号化しつつ同時に複合化してビデオ出力 |
vwtranscode | *.ini opt... | トランスコード・トランスレート |
vwnet_recv | *.ini opt... | ビデオストリームを受信して再生 |
vwnet_send | *.ini opt... | ビデオ入力を符号化してUDPで送信 |
vwnet_codec | *.ini opt... | |
vwavi2mux | ||
vwgetlog | ||
vwmp42ps | ||
vwps2divx | ||
vwalldemo | ||
vwmenudemo | ||
vwosdclock | ||
vwhelloworld | ||
vwosdview |
# vwdecoder /opt/dec_mp2ps_ntsc.ini /mnt/nfs/hoge.mpg -vw2002
# vwencoder /opt/enc_mp2ps_ntsc_08m_vbr.ini /mnt/nfs/hoge.mpg※保存されたMPEGファイルはパーミッションが000となっていますのでご注意ください。
# vwnet_recv /opt/dec_mp2ts_ntsc.ini do_network=true port=1234
# vwnet_send /opt/enc_mp2ts_ntsc_04m.ini do_network=true hostname=1.2.3.4 port=1234
プログラム名 | 引数 | 機能 |
---|---|---|
wpa_init | 1-4 | 画面解像度を1)VGA 2)SVGA 3)XGA 4)SXGAに設定 5)SXGA 4:3 |
wpa_cls | 0-3, 5 | 対応するフレームバッファを0クリア |
wpa_mod | addr reg32 | MMIO_base + addr番地のレジスタをreg32にセット |
wpa_mod2 | addr | MMIO_base + addr番地の値を表示 |
wpa_view | fb 0/1 | fb番のフレームバッファを 0)非表示 1)表示 |
wpa_vctl | x y scale | ビデオプレーンの表示位置と縦横の倍率 |
wpa_actl | tlx tly brx bry | アルファプレーンの表示領域設定 |
wpa_cap | 0 or 1 | キャプチャの有効化・無効化 |
wpa_vidtune | VGAのタイミング調整 | |
wpa_draw | 0-3 image.ppm | fb番のフレームバッファにppmファイルを表示 |
wpa_sw | 0-4 | dip SWの状態を読む |
# wpa_init 3
# wpa_cls 0
# wpa_mod 0x080000 0x76543210
# wpa_mod2 0x080000
# wpa_view 1 1
# wpa_vctl 100, 100, 1.2
# wpa_actl 100, 100, 199, 199
# wpa_cap 1
# wpa_draw 0 wivicomlogo.ppm
# wpa_vidtune
SM501のレジスタへのアクセスはioctlシステムコールを, VRAMへのアクセスはLinuxのフレームバッファアーキテクチャの一部を用います。
SM501レジスタへのアクセスにはioctlを用います。 ioctlの使用にはターゲットアーキテクチャのヘッダファイルが必要です。
# cp -R linux/include/asm-sh /usr/local/sh4-linux/include/asm
レジスタ値を読み込み,変更し,書き込むサンプルコードを以下に示します。
int reg32; int value = 0xab; int mask = 0x0000ff00; // open device node int fd = open("/dev/fb0", O_RDWR); // set MMIO address ioctl(fd, 0, address); // read register value ioctl(fd, 1, ®32); // change register value reg32 &= ~mask; reg32 |= value << 8; // write register value ioctl(fd, 2, reg32);
レジスタ値変更の際,予約されているビットを変更しないように注意してください。
画面解像度,ビデオタイミング信号,ドットクロック等は SM501レジスタによって完全に制御されます。 レジスタ値を変更することによって画面解像度を動的に変更することが可能です。 画面解像度設定の際には以下の点に留意願います。
SM501は7つのビデオプレーンを持っています。 本製品で使用するのは,以下の4つのプレーンです。
詳細はSM501データシートの1-12,1-23章を参照して下さい。
各プレーンにはフレームバッファのデバイスノードを通じてアクセスします。 フレームバッファの詳細はAppendix-Aを参照して下さい。 RGB565モードのグラフィックプレーン(fb0)にカラー画像data[3][w][h]を 描画するサンプルコードを以下に示します。
int xres, yres, size, i, j, idx, r, g, b; unsigned char *ptr; int fd = open("/dev/fb0", O_RDWR); size = xres * yres * 2; ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); for (j = 0; j < yres; ++j) for (i = 0; i < xres; ++i) { idx = (x + i) * 2 + (y + j) * xres * 2; r = data[0][j][i] >> 3; g = data[1][j][i] >> 2; b = data[2][j][i] >> 3; *((unsigned short int *)(ptr + idx)) = (r << 11) | (g << 5) | b; } munmap(ptr, size);