| | | 目次 |

SunVideo Plus 1.3 ユーザーマニュアル

第 4 章


SunVideo Plus のサンプルプログラム


この章では、SunVideo Plus に付属しているプログラミングツールおよび XIL サンプルプログラムを紹介します。SunVideo Plus ソフトウェアには、いくつかのサンプルプログラムのソースコードが付属しています。下記の表は、付属しているすべてのプログラミングツールとサンプルプログラムの簡単な説明です。構文および関連するオプションの詳細については、表の後で説明します。

表 4-1 SunVideo Plus のサンプルプログラム

サンプルプログラム 説明

swmtool

GUI を使用して SunVideo Plus をインストールするためのツール

o1k_audrec

ファイルにオーディオを記録するためのツール

o1k_audplay

オーディオファイルを再生するためのツール

o1k_audloop

オーディオ入力をオーディオ出力にループさせるためのツール

soundtool

u-law 形式のオーディオファイルを録音、再生、編集するための GUI ツール

xil_compress

ビデオを取得、圧縮して、ファイルに記録する XIL サンプルプログラム

xil_decompress

ファイルから圧縮されたデータを読み取って、圧縮解除し、表示する XIL サンプルプログラム

xil_display

ビデオを取得して、表示する XIL サンプルプログラム

xil_video_broadcast/xil_video_receiver

2 つの XIL サンプルプログラム。broadcast は、取得し、圧縮したビデオを TCP を介して転送し、receiver は、 このビデオストリームを受信し、圧縮解除して、表示します。

xil_video_broadcast/xil_video_receiver

機能的には前のサンプロプログラムと同じですが、圧縮形式リストに H.261 プロトコルが追加されます。

o1k_conf

XIL および SunVideo Plus オーディオライブラリを使用したポイント - ポイントのオーディオ / ビデオテレビ会議サンプルプログラム

o1k_ctl

SunVideo Plus への入力を変更するためのビデオコントローラ

これらのプログラムは、SunVideo Plus カードが正しく動作しているか確認するのにも役立ちます。

オーディオの録音

o1k_audrec プログラムは、ファイルにオーディオを記録するための、コマンド行から使用するツールです。

o1k_audrec のコマンド行構文は、以下のとおりです。


hostname% o1k_audrec オプション -o ファイル名

o1k_audrec コマンドのオプションとデフォルト値は、下記の表に示すとおりです。


表 4-2 o1k_audrec のオプション

オプション 説明と有効な値 デフォルト値

-D デバイス

デバイス名

/dev/o1k0

-f 形式

コード化形式

(0=ULAW, 1=ALAW, 2=PCM8, 3=PCM16, 4=G722)

0

-r レート

サンプルレート (8000, 11025, 16000, 22050)

8000

-c チャネル数

チャネル数 (1, 2)

1

-p ポート

入力ポート (0=LINE, 1=MIC)

0

-g 利得

入力利得 (0 〜 1.0)

.125

-m モニター利得

モニター利得 (0 〜 1.0)

0

-I 情報

オーディオファイル情報を記述した文字列

""

-b サイズ

バッファーサイズ

1000

-h

量の後ろにハッシュ記号を表示します。

0

オーディオの再生

o1k_audplay プログラムは、オーディオファイルを再生するための、コマンド行から使用するツールです。

o1k_audplay のコマンド行構文は、以下のとおりです。


hostname% o1k_audplay オプション -i ファイル名

o1k_audplay コマンドのオプションとデフォルト値は、下記の表に示すとおりです。


表 4-3 o1k_audplay のオプション

オプション


説明と有効な値


デフォルト値


-D デバイス

デバイス名

/dev/o1k0

-v 利得

出力利得 (0 〜 1.0)

1.0

-b サイズ

バッファーサイズ

1000

自動ループ

o1k_audloop プログラムは、オーディオ入力をオーディオ出力にループさせるための、コマンド行から使用するツールです。

o1k_audloop のコマンド行構文は、以下のとおりです。


hostname% o1k_audloop オプション

o1k_audloop コマンドのオプションとデフォルト値は、下記の表に示すとおりです。


表 4-4 o1k_audloop のオプション

オプション

説明と有効な値

デフォルト値

-D デバイス

デバイス名

/dev/o1k0

-f 形式

コード化形式

(0=ULAW, 1=ALAW, 2=PCM8, 3=PCM16, 4=G722)

0

-r レート

サンプルレート (8000, 11025, 16000, 22050)

8000

-c チャネル数

チャネル数 (1, 2)

1

-p ポート

入力ポート (0=LINE, 1=MIC)

0

-g 利得

入力利得 (0 〜 1.0)

.125

-v 利得

出力利得 (0 〜 1.0)

1.0

-b サイズ

バッファーサイズ

1000

soundtool プログラム

soundtool プログラムは、u-law 形式のオーディオファイル (圧縮されたオーディオファイル) を録音、再生、変更するための GUI ツールです。

soundtool のコマンド行構文は、以下のとおりです。


hostname% soundtool [-D デバイス]

下図は、soundtool デモプログラムの画面を示しています。

図 4-1 soundtool の画面

soundtool は、SUNWaudmo パッケージで配布されるデモプログラムの 1 つです。一般的には、/usr/demo/SOUND/src/soundtool/ にインストールします。soundtool は、libaudio オーディオライブラリおよび複数のシステムコール (開く / 閉じる、読み取り / 書き込み、ioctlfcntl など) を使用して、サン標準のハードウェアとオーディオデバイスを操作します。SunVideo Plus に付属している soundtool のソースは、デフォルトでは、O1KHOME のサンプル用のサブディレクトリ (通常は、/opt/SUNWo1kp/examples/soundtool) にインストールされます。

SunVideo Plus コントロールパネルの使用方法

SunVideo Plus コントロールパネル (o1k_ctl) を使用して、システムに取り付けられている SunVideo Plus のいろいろなオーディオ / ビデオ属性 (ビデオ / オーディオ入力の選択、オーディオの音量 / 利得、ビデオの明るさ、コントラストなど) の設定を静的および動的に変更することができます。

       SunVideo Plus コントロールパネルを開きます。


    hostname% o1k_ctl
    

下図は、SunVideo Plus コントロールパネルの画面を示しています。

図 4-2 SunVideo Plus コントロールパネル

各 SunVideo Plus デバイスの設定は、データベースに保管されます。コントロールパネルから選択したデバイスの属性の設定を変更すると、そのデバイスのデータベースが変更されます。SunVideo Plus デバイスを開くと、対応するデータベース内の現在の設定を使用して、デバイスが設定されます。SunVideo Plus が開いている間、コントロールパネルは常に、SunVideo Plus デバイスを使用するプロセスと交信して、動的に設定を変更します。

コントロールパネルには、一部、動的に変更することができない属性があります。そうした属性の設定は、SunVideo Plus デバイスを開いたときにのみ有効になります。コントロールパネル上、それらの属性には、アスタリスク (*) が付いています。

ビデオ方式は、NTSC、PAL、AUTO のいずれかに設定することができます。AUTO が選択されている場合は、SunVideo Plus デバイスを開いたとき、自動的にビデオ方式が検出されます。ただし、自動検出には時間 (最高 1.5 秒) がかかりますから、使用しているビデオ方式がすでに判明している場合は、手動でビデオ方式を選択する方が時間の節約になります。

Query ボタンは、選択した SunVideo Plus デバイスが現在別のプロセスによって開かれているかどうかを動的に調査します。

コントロールパネル上のすべての属性値は、ユーザープログラムから変更することもできます。コントロールパネルが開いているときに別にプロセスによって変更されることがありますから、属性の状態が常に正しいとはかぎらないことに注意してください。コントロールパネルの Update ボタンをクリックすると、コントロールパネルの属性が最新の状態に更新されます。

画像の圧縮

xil_compress は、H.261 (ビデオ) 圧縮機能が追加された、修正版の XIL サンプルプログラムです。具体的な H.261 コードの変更内容については、ソースコードの注意書を参照してください。SunVideo Plus の SunVideo 互換モードでは、xil_compress デモプログラムの SunVideo 版をそのまま修正なしに実行することができます (SunVideo 版には、H261 は含まれていません)。デフォルトの圧縮率は 2 (-s 2) であり、CIF サイズの画像圧縮になります。QCIF サイズに画像を圧縮するには、-s 4 を使用します。

xil_compress のコマンド行構文は、以下のとおりです。


hostname% xil_compress オプション -o ファイル名

xil_compress コマンドのオプションとデフォルト値は、下記の表に示すとおりです。


表 4-5 xil_compress のオプション

有効なオプション

説明と有効な値 デフォルト値
-o %s

ファイルにビットストリームを保存

NULL

-C %s

圧縮形式 (CellB, JPEG, MPEG1, H261)

CellB

-s %d

圧縮率

2

-I %d

入力チャネルの選択

1

-f %d

取得するフレーム数

100

-i %d

取得中にスキップするフレーム数

0

-D %s

デバイス名

/dev/o1k0

-B %d

H261 のビットレート (k ビット / 秒)

2000

-Q %d

H261 の最大量

10

-R %d

H261 のレート制御 (0= 可変、1= 固定)

1

有効なスイッチ

-E

最初のエラーで終了します。

使用例

CIF CellB ビットストリームに圧縮するには、以下のように入力します。


hostname% xil_compress -C CellB -o /tmp/t.clb

CIF JPEG ビットストリームに圧縮するには、以下のように入力します。


hostname% xil_compress -C Jpeg -o /tmp/t.jpeg

CIF H261 ビットストリームに圧縮するには、以下のように入力します。


hostname% xil_compress -C H261 -o /tmp/t.h261

QCIF H261 ビットストリームに圧縮するには、以下のように入力します。


hostname% xil_compress -C H261 -s 4 -o /tmp/t.h261

画像の圧縮解除

xil_decompress は、H.261 機能が追加された、修正版の XIL サンプルプログラムです。H.261 の圧縮解除では、SunVideo Plus XIL 画像分子は、デフォルトでは、システムに最初に取り付けられた SunVideo Plus カードを使用し、ハードウェアによって高速に複合化を行います。デフォルト以外の SunVideo Plus デバイスを複合化に使用するためには、明示的に -D オプションを使用する必要があります。

xil_decompress のコマンド行構文は、以下のとおりです。


hostname% xil_decompress オプション -i ファイル名

xil_compress コマンドのオプションとデフォルト値は、下記の表に示すとおりです。

表 4-6 xil_decompress のオプション

オプション 説明と有効な値 デフォルト値

-C

圧縮形式 (CellB, JPEG, H.261, Cell, MPEG1)

CellB

-s %d %d

CellB の幅と高さ

320, 240

-r %d

再生フレームレート (0 = できるだけ速く)

0

H261 専用のオプション

-D

ハードウェアによる圧縮解除に使用する SunVideo Plus デバイス名

NULL

使用例

CIF CellB ビットストリームを圧縮解除するには、以下のように入力します。


hostname% xil_decompress -C CellB -s 320 240 -i /tmp/t.clb

JPEG ビットストリームを圧縮解除するには、以下のように入力します。


hostname% xil_decompress -C Jpeg -i tmp/t.jpeg

H261 ビットストリームを圧縮解除するには、以下のように入力します。


hostname% xil_decompress -C H261 -i tmp/t.h261

システムの 2 枚目の SunVideo Plus カードを使用して H261 ビットストリームを圧縮解除するには、以下のように入力します。


hostname% xil_decompress -C H261 -i tmp/t.h261 -D /dev/o1k1

ビデオの表示

xil_display は、ビデオを取得して表示する、修正版の XIL サンプルプログラムです。

画像の色に影響を与えるビデオ属性 (明るさ、コントラスト、色合いなど) に加えた変更は、コントロールパネルが使用するデータベースにも反映されます。このため、これらの属性のデフォルト値は、最後の行われた設定によって変化します。たとえば、xil_display を実行した後で、明るさの設定を変更し、ビデオアプリケーションを実行すると、その新しい値がデフォルト値になります。

xil_display のコマンド行構文は、以下のとおりです。


hostname% xil_display オプション

xil_display コマンドのオプションとデフォルト値は、下記の表に示すとおりです。

表 4-7 xil_display のオプション

有効なオプション 説明と有効な値 デフォルト値

-s %d

圧縮率

2

-I %d

入力チャネルの選択

1

-f %d

取得するフレーム数

100

-w %d

取得するサブイメージの幅

640

-h %d

取得するサブイメージの高さ

480

-i %d

取得中にスキップするフレーム数

0

-m %d

バッファリングする最高フレーム数

2

-x %d

x 方向のウィンドウ位置

(random)

-y %d

y 方向のウィンドウ位置

(random)

-D %s

デバイス名

/dev/o1k0

有効なスイッチ

-g

グレースケールモードを有効にします。

-E

最初のエラーで終了します。

-d

取得結果を表示しません。

ビデオ属性

-B %d

明るさ

なし

-C %d

コントラスト

なし

-H %d

色合い

なし

-U %d

飽和 / 利得 U 成分

なし

-V %d

飽和 / 利得 V 成分

なし

-c %d

カラーマップバージョン (0=XIL 標準、1=XIL ガンマ補正)

1

現在の発色数が 24 ビットの場合、カラーマップバージョンオプションは何の働きもしません。8 ビットの発色数では、インストールされているカラーマップはその影響を受けます。XIL 版では、SunVideo Plus は 16 ビットのビデオデータを取得し、そのデータは XIL 画像分子によってソフトウェア的に 8 ビットにディザ処理されます。

使用例

ビデオを表示するには、以下のように入力します。


hostname% xil_display

ビデオの送信と受信

xil_video_broadcast および xil_video_receiver の 2 つのプログラムは、SunVideo Plus カード上で動作する、修正版の XIL サンプルプログラムです。SunVideo Plus の SunVideo 互換モードでは、これらのデモプログラムの SunVideo 版をそのまま修正なしに実行することができます。

xil_video_broadcast プログラム

xil_video_broadcast のコマンド行構文は、以下のとおりです。


hostname% xil_video_broadcast オプション

xil_video_broadcast コマンドのオプションとデフォルト値は、下記の表に示すとおりです。

表 4-8 xil_video_broadcast のオプション

有効なオプション 説明と有効な値 デフォルト値

-C %s

圧縮形式 (CellB, Jpeg, UYVY)

CellB

-H %s

宛先のホスト名

local subnet

-c %d

送信チャネル (0 〜 9)

0

-F %s

宛先のホスト名ファイル

なし

-D %s

SunVideo Plus のデバイス名

/dev/o1k0

-I %d

入力チャネルの選択

1

-P %d

送信ごとの遅延 (単位: ms)

0

-d %s

ファイルにビットストリームを保存

NULL

-f %d

送信するフレーム数

18000

-i %d

取得中にスキップするフレーム数

0

-m %d

バッファリングする最高フレーム数

2

-s %d

圧縮率

2

-w %d

取得ウィンドウの幅

NTSC: 640

PAL: 768

-h %d

取得ウィンドウの高さ

NTSC: 480

PAL: 576

-x %d

表示ウィンドウの x 座標値

(random)

-y %d

表示ウィンドウの y 座標値

(random)

有効なスイッチ

-p

プレビューを無効にします。

-b

受信側の一部 CellB フレームの表示を有効にします。

-t

送信を無効にします。

-E

最初のエラーで終了します。

-v

詳細メッセージを表示します。

xil_video_receiver プログラム

xil_video_receiver のコマンド行構文は、以下のとおりです。


hostname% xil_video_receiver オプション

TABLE 4-9 に、xil_video_receiver コマンドのオプションとデフォルト値を示します。


表 4-9 xil_video_receiver のオプション

有効なオプション

説明と有効な値

デフォルト値

-C %s

圧縮形式 (CellB, Jpeg, UYVY)

CellB

-c %d

送信チャネル (0 〜 9)

0

-f %d

送信するフレーム数

18000

-x %d

表示ウィンドウの x 座標値

(random)

-y %d

表示ウィンドウの y 座標値

(random)

有効なスイッチ

-b

受信側の一部 CellB フレームの表示を有効にします。

-E

最初のエラーで終了します。

-v

詳細メッセージを表示します。

使用例

ビデオを送信 / 受信するには、以下のように入力します。


hostname% xil_video_receiver -C CellB

hostname% xil_video_broadcast -C CellB

H.261 ビデオの送信と受信

xilh_video_broadcast および xilh_video_receiver の 2 つのプログラムは、SunVideo Plus カード上で動作する、H.261 圧縮用の修正版 XIL サンプルプログラムです。

xilh_video_broadcast プログラム

xil_video_broadcast のコマンド行構文は、以下のとおりです。


hostname% xilh_video_broadcast オプション

xilh_video_broadcast コマンドのオプションとデフォルト値は、下記の表に示すとおりです。


表 4-10 xilh_video_broadcast のオプション

有効なオプション

説明と有効な値

デフォルト値

-C %s

圧縮形式 (CellB, Jpeg, H261, UYVY)

CellB

-H %s

宛先のホスト名

local subnet

-c %d

送信チャネル (0 〜 9)

0

-F %s

宛先のホスト名ファイル

なし

-D %s

SunVideo Plus のデバイス名

/dev/o1k0

-I %d

入力チャネルの選択

1

-P %d

送信ごとの遅延 (単位: ms)

0

-d %s

ファイルにビットストリームを保存

NULL

-f %d

送信するフレーム数

18000

-i %d

取得中にスキップするフレーム数

0

-m %d

バッファリングする最高フレーム数

2

-s %d

圧縮率

2

-w %d

取得ウィンドウの幅

NTSC: 640

PAL: 768

-h %d

取得ウィンドウの高さ

NTSC: 480

PAL: 576

-x %d

表示ウィンドウの x 座標値

(random)

-y %d

表示ウィンドウの y 座標値

(random)

-B %d

H261 のビットレート

256

-Q %d

H261 の最大数量化因数

10

有効なスイッチ

-p

プレビューを無効にします。

-b

受信側の一部 CellB フレームの表示を有効にします。

-t

送信を無効にします。

-E

最初のエラーで終了します。

-v

詳細メッセージを表示します。

xilh_video_receiver プログラム

xilh_video_receiver のコマンド行構文は、以下のとおりです。


hostname% xilh_video_receiver オプション

xilh_video_receiver コマンドのオプションとデフォルト値は、下記の表に示すとおりです。


表 4-11 xilh_video_receiver のオプション

有効なオプション

説明と有効な値

デフォルト値

-C %s

圧縮形式 (CellB, Jpeg, H261, UYVY)

CellB

-c %d

送信チャネル (0 〜 9)

0

-f %d

送信するフレーム数

18000

-x %d

表示ウィンドウの x 座標値

(random)

-y %d

表示ウィンドウの y 座標値

(random)

有効なスイッチ

-b

受信側の一部 CellB フレームの表示を有効にします。

-E

最初のエラーで終了します。

-v

詳細メッセージを表示します。

テレビ会議

o1k_conf サンプルプログラムは、XIL およびSunVideo Plus オーディオ API を使用し、C++ で作成されたポイント- ポイントのオーディオ/ ビデオテレビ会議プログラムです。CellB、JPEG、H261 ビデオ形式といろいろなオーディオ形式に対応しています。

o1k_conf コマンド

o1k_conf のコマンド行構文は、以下のとおりです。


hostname% o1k_conf オプション

o1k_conf コマンドのオプションとデフォルト値は、下記の表に示すとおりです。


表 4-12 o1k_conf のオプション

有効なオプション

説明と有効な値

デフォルト値

-u %s

ユーザー@ホスト

NULL

-t

XIL 画像分子を無効にします (Solaris 2.6 のみ)。

-p

PAL 形式で受信します。

-D %s

SunVideo Plus デバイスの名前

/dev/o1k0

下図は、テレビ会議のメインパネルを示しています。

図 4-3 o1k_conf テレビ会議のメインパネル

このパネルから、オーディオ / ビデオパラメータを設定したり、住所録を使用して、接続するユーザーに関する情報を記録したりすることができます。

住所録を開くには、Address ボタンをクリックします。下図は、住所録パネルを示しています。

図 4-4 住所録

ユーザーを追加するには、New ボタンを選択します。住所録で最も重要な情報は、User@Host フィールドです。この情報は、テレビ会議の電話をかけるときに相手に接続するために使用されます。住所録のその他の情報は、省略することができます。ユーザー情報の入力を終えたら、Add ボタンをクリックしてください。(Add ボタンは、New ボタンを選択した後にのみ表示されます。) 住所録を保存するには、Save in File メニューを選択します。テレビ会議する相手を選択するには、リストからその相手を選択し、Done ボタンをクリックします。ポップアップウィンドウが閉じて、メインパネル (図 4-4) に選択した相手のユーザー@ホスト名が表示されます。

テレビ会議では、呼び出さされた側は呼び出した側の設定の通知を受けますから、テレビ会議のメインパネルの設定は、呼び出す側のユーザーだけ行う必要があります。o1k_conf のデフォルトの設定は、以下のとおりです。

テレビ会議の設定を変更するには、Setup をクリックし、メニューおよびポップアップウィンドウに示される指示に従って操作を行います。

テレビ会議に呼び出されると、呼び出した相手と呼び出しパラメータの情報を示すポップアップウィンドウが開き (下図を参照)、このウィンドウから会議に参加するかどうか決定することができます。

図 4-5 呼び出された側のウィンドウ

テレビ会議中、メインパネルの View を選択することにより、オーディオおよびビデオのビットレート、フレームレート、ネットワークパケットの稼働状況などの状態情報を表示することができます。続いて、A/V Panel を選択すると、オーディオ / ビデオパネルでオーディオおよびビデオパラメータの設定を変更することができます。

テレビ会議中は、画面に Local View と Far View (会議の相手の) の 2 つのウィンドウが表示されます。下図は、2 つのウィンドウの表示例です。

図 4-6 Local View と Far View ウィンドウ

H.261 を使用している場合、Far View ウィンドウ内に画像の中に別の画像を表示することができます。その場合、自分の画像はウィンドウの左上に表示されます。CPU の負荷を減らすには、ローカルビューをアイコンにします。H.261 を使用したテレビ会議では特に、アイコン化することをお薦めします。

テレビ会議を終了したら、メインパネルの HangUp ボタンをクリックしてください。HangUp ボタンは、呼び出しを行った後で表示されます。



| | | 目次 |