上一页 | 下一页 | 目录

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

这是两个 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 文件名

下表描述命令选项和缺省设定。

表 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=线路、1=话筒)

0

-g 增益

输入增益(0 到 1.0)

.125

-m 监视器增益

监视器增益 (0 到 1.0)

0

-I 信息

音频文件字符串信息

""

-b 大小

缓冲区大小

1000

-h 数量

在数量后打印散列标志

0

音频播放

o1k_audplay 程序是播放音频文件的工具,它是由命令行驱动的。

下面显示 o1k_audplay 实例的命令行语法:
 


hostname% o1k_audplay 选项 -i 文件名

下表描述命令选项和缺省设定。

表 4-3 o1k_audplay 选项

选项
说明和值

缺省值

-D 设备

设备名

/dev/o1k0

-v 增益

输出增益(0 到 1.0)

1.0

-b 大小

缓冲区大小

1000

音频环路

o1k_audloop 程序是用于从音频输入环路到音频输出的工具,它是由命令行驱动的。

下面显示 o1k_audloop 实例的命令行语法:
 


 hostname% 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=线路、1=话筒)

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 软件包分发的演示程序,通常安装在 /usr/demo/SOUND/src/soundtool/ 下。soundtool 使用 libaudio 音频库和一些系统调用(例如 open/close、read/write、ioctl 以及 fcntl) 在 Sun 的标准硬件及音频设备上进行操作。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 实例,其中添加了 H.261(视频)压缩。有关特定 H.261 代码的更改,请参阅源代码注释。该演示程序的 SunVideo 版本不经修改就可以在 SunVideo 二进制兼容模式下运行(SunVideo 版本不包括 H261)。注意:缺省收缩因子为 2 (-s 2),它引起 CIF 大小的图像压缩。要压缩 QCIF 大小的图像,使用 -s 4。

下面显示 xil_compress 实例的命令行语法:
 


hostname% xil_compress 选项 -o 文件名

下表描述命令选项和缺省设定。

表 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 比特率、千比特/秒

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 实例,其中添加了 H.261。对于 H.261 解压缩,SunVideo Plus XIL 分子在缺省情况下使用系统中安装的第一块 SunVideo Plus 卡来进行 H.261 的硬件加速解码。如果要使用另一个 SunVideo Plus 设备进行解码,则必须明确地使用 -D 选项。

下面显示 xil_decompress 实例的命令行语法:
 


hostname% xil_decompress 选项 -i 文件名

下表描述命令选项和缺省设定。

表 4-6 xil_decompress 选项

选项 说明和值 缺省值

-C

压缩类型 (CellB、JPEG、H.261、Cell、MPEG1)

CellB

-s %d %d

CellB 宽度和高度

320, 240

-r %d

回放帧速率(0为尽可能快)

0

H261 选项

 

 

-D

h/w 解压缩的 SunVideo Plus 设备名

NULL

实例用法

要解压缩 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

要使用系统中的第二块 SunVideo Plus 卡解压缩 H261 比特流,键入:
 


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

视频显示

这是经过修改的 XIL 实例,它捕获并显示视频。

对影响图像颜色(亮度、对比度、色调等)的视频属性进行更改也将对控制面板所用的数据库作相应更改。因此,上述设定的缺省值取决于上次设置。如果运行了一次该应用程序,并将亮度设置为某个值,则下次运行视频应用程序时该值就成为缺省设定。

下面显示 xil_display 实例的命令行语法:
 


hostname% 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 窗口位置

(随机)

-y %d

y 窗口位置

(随机)

-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_broadcastxil_video_receiver 这两个程序是经过修改的 XIL 实例,它们在 SunVideo Plus 卡上运行。这些演示程序的 SunVideo 版本不经修改就可以在 SunVideo 二进制兼容模式下运行。

xil_video_broadcast 程序

下面显示 xil_video_broadcast 实例的命令行语法:
 


hostname% xil_video_broadcast 选项

下表描述命令选项和缺省设定。

表 4-8 xil_video_broadcast 选项

合法选项

说明和值

缺省值

-C %s

压缩类型 (CellB、Jpeg、UYVY)

CellB

-H %s

目标主机名

本地子网

-c %d

广播通道 (0-9)

0

-F %s

目标主机名的文件

-D %s

SunVideo Plus 设备名

/dev/o1k0

-I %d

选择输入通道

1

-P %d

每次传输延迟 x 毫秒

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 坐标

(随机)

-y %d

显示窗口的 y 坐标

(随机)

合法开关

 

 

-p

禁止预览

 

-b

启用接收器显示部分 CellB 帧

 

-t

禁止传输

 

-E

遇到第一个错误时退出

 

-v

打印冗长信息

 

xil_video_receiver 程序

下面显示 xil_video_receiver 实例的命令行语法:
 


hostname% 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 坐标

(随机)

-y %d

显示窗口的 y 坐标

(随机)

合法开关

 

 

-b

启用接收器显示部分 CellB 帧

 

-E

遇到第一个错误时退出

 

-v

打印冗长信息

 

实例用法

要广播/接收视频,键入:
 


hostname% xil_video_receiver -C CellB
hostname% xil_video_broadcast -C CellB

H.261 的视频广播和视频接收器

xilh_video_broadcastxilh_video_receiver 这两个程序是经过修改的 XIL 实例,它们在 SunVideo Plus 卡上运行,并使用 H.261 压缩。

xilh_video_broadcast 程序

下面显示 xil_video_broadcast 实例的命令行语法:
 


hostname% xilh_video_broadcast 选项

下表描述命令选项和缺省设定。

表 4-10 xilh_video_broadcast 选项 

合法选项 说明和值 缺省值

-C %s

压缩类型 (CellB、Jpeg、H261、UYVY)

CellB

-H %s

目标主机名

本地子网

-c %d

广播通道 (0-9)

0

-F %s

目标主机名的文件

-D %s

SunVideo Plus 设备名

/dev/o1k0

-I %d

选择输入通道

1

-P %d

每次传输延迟 x 毫秒

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 坐标

(随机)

-y %d

显示窗口的 y 坐标

(随机)

-B %d

H261 比特率

256

-Q %d

H261 最大量化

10

合法开关

 

 

-p

禁止预览

 

-b

启用接收器显示部分 CellB 帧

 

-t

禁止传输

 

-E

遇到第一个错误时退出

 

-v

打印冗长信息

 

xilh_video_receiver 程序

下面显示 xil_video_receiver 实例的命令行语法:
 


hostname% 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 坐标

(随机)

-y %d

显示窗口的 y 坐标

(随机)

合法开关

 

 

-b

启用接收器显示部分 CellB 帧

 

-E

遇到第一个错误时退出

 

-v

打印冗长信息

 

音频视频会议

实例程序 o1k_conf 是用 C++ 语言编写的点对点音频/视频会议,使用 XIL 和 SunVideo Plus 音频 API。它支持 CellB、JPEG 和 H261 视频格式以及各种音频格式。

o1k_conf 命令

下面显示 o1k_conf 实例的命令行语法:
 


hostname% o1k_conf 选项

下表描述命令选项和缺省设定。

表 4-12 o1k_conf 选项 

合法选项 说明和值 缺省值

-u %s

user@host

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”按钮(仅在选择“New”按钮后才显示该按钮)。要保存通讯簿,选择“File”菜单上的“Save”。要选择会议的用户,从列表中选择该用户,然后按一下“Done”按钮。这将关闭弹出式窗口并将 User@Host 名放置在主会议面板( 图 4-3)中。

只有呼叫会议的用户才需要配置主会议面板,因为呼叫会议时远端即被告知呼叫者的配置。o1k_conf 的缺省设定为

要更改会议的配置,按一下“Setup”,然后按菜单和弹出窗口的指令继续操作。

当被另一个用户呼叫时,将打开弹出式窗口通知您呼叫者和呼叫参数(参阅下图)。这样您可以决定是否参加会议。

图 4-5 被呼叫窗口

会议期间可以监视状态信息,例如音频及视频比特率和帧速率以及网络包活动。这可以从主会议面板的视图中获得。然后选择“A/V Panel”,这样可以在音频/视频面板中更改音频和视频参数。

会议呼叫期间,屏幕上将出现两个窗口,即本地视图 (Local View) 和远端视图 (Far View)(会议的另一方)。下图显示了这两个窗口。

图 4-6 本地视图和远端视图窗口

利用 H.261 可以在远端视图窗口中实现画中画,您的视图将嵌在左上角。要减少 CPU 的使用,可以将本地视图转换为图标。建议在 H261 会议中使用此方法。

电话会议结束后,按一下“HangUp”。呼叫接通后,主会议面板上将显示“HangUp”按钮。



上一页 | 下一页 | 目录