网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: AnalogCN安诺电子 >> 文章 >> 技术交流 >> 文章正文
  ADV601视频多媒体数字信号编解码器常问问题         ★★★ 【字体:
ADV601视频多媒体数字信号编解码器常问问题
作者:David St…    文章来源:Internet    点击数:    更新时间:2006-12-19    

 

ADV601视频多媒体数字信号编解码器常问问题


David Starr

ADV601现有供货吗?

是的。现在我们的仓库和分销商处都有ADV601。并不是所有分销商都知道,但我们的确已向分销商大量出货。价格以每10,000颗计算。

在网站上提供什么技术信息?

用浏览器指向Analog Devices 主页ww.analog.com。在搜索引擎中输入“ADV601”进入特定的ADV601页面。在这里可以下载你所需的数据页。

在Norwood Literature Center可以得取ADV60数据页,美国(800-262-5643,按2);英国(01932 266 000)。ADV601网页上也同时以Adobe Acrobat格式提供。

找到贴有以下ADV601数据的ftp站点的链接。

Ontheair.doc:提示与操作指南(同时开始运行Videolab板卡)。

Dspbinwd.doc:利用ADSP-21xx系利DSP控制ADV601比特率。

Binwidth.zip:比特率控制和bin width量化参数计算理论与实践。

以icm.zip文件提供的一个纯软件演示。

下载文件,在Windows95计算机上解压缩并运行setup.exe。它提供了很好的对静态图像的软件压缩与解压缩程序。它让你随心所欲地进行压缩,并列显示压缩前后的图像,以评估压缩图像的质量。其中还包括了演示程序的源代码。它基于与标准Windows 视频程序,如Mediaplayer和 Adobe Premiere兼容的Video-for-Windows软件Codec。使用小波(Wavelet)图像压缩以及你所喜爱的Video-for-Windows工具。

MS-DOS应用是进行新硬件调测的理想环境。非常易于适应新硬件设计。

Windows 95 驱动程序 601rpman和601cman

我们提供了Windows 95即插即用中断服务程序(601rpman.vxd)和比特率控制程序(601cman.dll)。这是一套相匹配的低级驱动程序,并附有源代码。

Raw2avi文件转换器

这是一个将原ADV601视频转换为标准Windows视频程序可接受的“音频-视觉交互”.avi视频的Windows 95工具。用Videolab板卡捕获视频并采用你所喜爱的Windows应用程序进行编辑。

有评估板吗?

是的,请拨打Momentum Data Systems (714-557-6884)订购。此外,我们还提供基于ADV601的PC的非线性编辑板。请拨打Quadrant International (610-251-9999 x215)联系David Brott。

压缩后的视频效果如何?

以10:1压缩的视频看起来效果如同你在家观看图像品质很好的节目(比如在阳光明媚的下午进行的一场球赛)。以30:1压缩的视频看来效果如同VHS出租磁带。以200:1压缩的视频尚可辨认足球运动员运动衣上的号码。从ftp站点下载软件模拟器,自已看一下就知道了。

把VIDEOLAB CD-ROM放入PC会怎样?

Videolab 97 CD-ROM安装盘消除了“低级安装”与“高级安装”的困惑。Windows 95会识别安装后需要重新启动的“低级”(硬件驱动程序)软件以及不需重新启动的“高级”(.exe文件)软件。Videolab中即包括低级驱动程序,也包括高级应用程序。完整的安装(或重新安装升级软件)高级安装和低级安装都要进行。CD-ROM自动执行。

我们对此关注是因为高级安装很容易,却无法成功进行低级安装。低级安装(complete.inf文件)会问你是否想要重新启动,而你必须回答“是”以进行安装。低级安装在重新启动后即使高级安装(setup.exe文件)启动。如果Windows重新启动偶然失败,就需要手工重新启动。你最好选择点除自动低级安装,(方法1)如果你“首先安装硬件”。如果失败(鼠标点击不慎可能可引起Windows 95跳过低级安装,或寻找CD-ROM驱动器失败),那么可以使用方法2,“添加新硬件”,给你第二次机会。

低级安装以下述三种方案之一开始:

Windows 95检测硬件

你将看到“Windows检测到新硬件”消息。一旦Windows 95发现硬件,就会永远记住那块卡,不再询问。假设在1号插槽有一块卡,以此说明为什么在2号、3号插槽的情况。在所有三种情况下,总是点击“有磁盘”表签。否则,Windows 95将检查硬盘上现有的驱动程序。有时会找到老版本驱动程序,或是其他产品的驱动程序。你并不希望如此。查看CD-ROM驱动器上的活动指示LED。在Windows从其中装载驱动程序时它应该闪烁。不要让Windows绕过驱动程序软件安装,因为以后将很难安装驱动程序。Windows一定会提供“完全安装”和“简单安装”选择,一定要选择“完全安装”。

点击控制面板中的“添加新硬件”;

点击 “设备管理器”中的 “更改驱动程序”;

点击开始按钮进入设备管理器,然后点击“设置”、“系统”(带绿色屏幕的计算机图标),然后点击设备管理器表签。寻找“视频捕获和压缩”设备。如果设备存在,可以“改变驱动程序”;如果设备不存在,意味着不会进入低级安装。尝试“控制面板”中的“添加新硬件”程序。

怎样辨别已经进行过哪些安装?

低级安装很快且几乎不可见。在完成时将“ADV601 Video Lab Card”加入设备管理器。如果设备丢失,就需要低级安装。在ADV601 Video Lab Card词条黄色感叹号(!)意味运行低级安装,但是存在资源冲突(见下文)。

高级安装推出带有20点白色“ADV601 Videolab 97”字体的漂亮的蓝色屏幕,文字下带有阴影。安装程序还在<开始>按钮的程序菜单中添加了“Videolab”图标,在桌面添加了“To the Videolab”快捷图标。

在设备管理器中的黄色感叹号代表什么?

Windows 95配置管理器试图向数块挑剔的即插即用卡提供有限的硬件资源。这四类资源是:

1. 内存地址

2. IO端口地址

3. DMA通道

4. 中断请求线(IRQ)

Video lab仅需要一些内存和1个 IRQ。平均而言,PC有许多内存,但仅有15个中断(IRQ)线,所以IRQ会被占用完。在Windows 95中称之为“资源冲突”。设备管理器将在冲突的设备中标上黄色感叹号,并在属性页中标识“该设备引起资源冲突”或“该设备无法工作”,或其他类似的注释。

通过从计算机中删除发生冲突的设备(IRQ占用者)之一,或将其中之一移至空闲的IRQ,可以解决IRQ资源冲突问题。如果点击设备管理树上方的“电脑”图标,你就可以看到所有IRQ。如果0~15(所有的)都被占用了,就必须删除一些,占用了所有IRS就没有其他办法了。比如在我的计算机中,我删除了并口(LPT1)空出IRQ7,删除了第二IDE磁盘控制器空出IRQ15。

LPT端口或IDE磁盘控制器通常被集成于主板中,而你只能软件中删除它们。如果它们是真实的插卡,你可以通过从计算机中拔出而删除设备。在软件删除的情况下,你必须进入作为BIOS一部分的“CMOS设置程序”。在Gateway后来的型号,上电时按下F1键。其他计算机大致相同,只是需要按不同的键。“CMOS设置程序”是菜单驱动的,你可有开启或关闭不需要的外围设备。

有一些活动余地(1个或2个空闲IRQ)后启动Windows 95。进入设备管理器(点击<开始>,点击<设置>,点击<控制面板>,点击<系统>,点击<设备管理器表签>)。检查一下你刚才删除的设备。如果它们还出现在设备管理器窗口,一定是设备管理器太过智能了,它在启动时“发现”了被关闭的设备并为它加载了驱动程序,恢复了你试图空闲下来的资源。要让设备管理明白谁做主,“删除”设备。他还会发发牢骚,“警告:你将从系统统删除该设备”,你要与它确认并点击。

现在,从<开始>按钮点击“帮助”。在帮助菜单点击<内容>表签,然后打开常见故障,点击“如果你有硬件冲突”。这将开始一个一步一步教你解决冲突IRQ、直到不再发生冲突的“向导”。在设备属性页的“资源”表签中IRQ分配会发生变化。在设备管理器允许你进行任何修改之前,你常常必须在“基本设置”窗口将“基本配置0001”改成别的什么,如“基本配置0002”。

做完这些后设备管理器将提供重新启动。让它这样做,重新启动。如果设备管理器忘记问你是否重启,你也一定要重启计算机保存所做的修改。在重新启动过程中,设备管理器也许会“发现”你刚刚“删除”的硬件,并装载你刚刚删除的驱动程序。这也无所谓,因为你所关心的设备(Videolab)有优先权占用资源,而新发现的设备无法占用资源。在一些计算机中,不使用的并口会带有资源冲突感叹号(最后加入计算机的板卡无法占用资源)。我的音卡、传真调制解调器和Video lab卡显示“OK”,并且工作正常。

我能只将.EXE文件拷贝到C: 盘,并运行VIDEOLAB 卡吗?

不行。在Windows 95环境中,普通程序(.exe文件)不能执行I/O指令或改变CPU的内存管理硬件。在程序能够在地址空间中“看到”Videolab卡之前,Videolab卡要进行内存映射并要求内存管理的改变。

只有特别创建的(具有特权的)程序(就Windows 95而言为vxd文件)被允许进行必须的Videolab操作。Videolab带有vxd (601rpman.vxd)文件,但是它必须以特别的方法进行安装,否则无法工作。“vxd”和Windows 95必须互相正式引入。引入脚本为安装盘上一个文件名为Complete.inf的文件。脚本要告诉系统:

1. 删除老版本的vxd和DLL文件;

2. 在注册表中建创项,以建立硬件设备0601与驱动程序601rpman.vxd的连接;

3. 将新版本从软盘复制到硬盘中。

脚本仅在Windows 95第一次发现新硬件时运行,或在开始菜单“设置”按钮中“控制面板”上选择“添加新硬件”时,或在设备管理器中选择“更改驱动程序”时运行。

在所有这些情况下,你想要Windows 95获得驱动程序并安装CD-ROM脚本,一定要选选“有磁盘”选项。要注意,Windows 95将从软盘装载新驱动程序,而不是从硬盘重新装载老的驱动程序。Windows 95会在硬盘的隐蔽位置保存安装脚本(也许还有老的驱动程序)。

安装完驱动程序(采用complete.inf),在新vxd生效前必须重新引导启动Windows 95。老版vxd在启动时已被装载至内存中,直至重新启动。Windows 95有时提示你重新引导启动,而有时不做提示。你一定要重新引导启动。

complete.inf脚本仅仅向系统装载vxd文件。应用程序(601Test、SOFTVCR 和其他程序)通过运行安装盘中的setup.exe装载。如果Windows 95的“自动插入通知”功能被激活,当你将安装盘插入驱动器时,CD-ROM将自动运行setup.exe。作为选择,你还可以从“控制面板”的“添加/删除程序”中启动setup.exe,或在Explorer中点击setup.exe,或从开始按钮运行D:setup.exe。

在一台新PC上运行VideoLab的要点如下:

1. 取得最新的Videolab软件安装盘。我们每天都在对软件进行改进,所以应该拿到最好的;

2. 关掉CPU,插入Videolab卡并重新开机;

3. Windows将报告“检测到新硬件”并要求插入安装盘;

4. 在执行完complete.inf脚本,从随机CD-ROM 运行setup.exe程序安装应用程序。在vxd和应用程序都完成安装后,重新引导启动。

什么是软件模拟器?

我们提供了用户可以用来评估压缩图像质量的软件模拟器。它运行于Windows 95,并可从FTP站点下载(icm.zip文件)。

将icm.zip复制到Windows 95计算机,采用pkunzip对其进行解压缩,然后执行从压缩文件中得到的setup.exe文件。它将安装软件ADV601 Codec和一个将任意图像压缩前后并列比较的测试程序。它可以处理一定大小的Windows .bmp文件。你的计算机必须已安装了Windows 95。

模拟器软件包包括一个Video-for-Windows兼容软件Codec (adv601.dll)和一个简单应用程序(icmapp.exe)。必须运行setup文件安装软件Codec。一旦安装好,Codec对所有如Mediaplayer和Adobe Premiere的Video-for-Windows应用都可以使用。你可以采用Codec压缩.avi文件,然后采用Videolab硬件进行播放。

VIDEOLAB软件CODEC处理多大的图形?

全分辨率 720 × 486

CIF 360 × 243

QCIF 180 × 122

我们将软件Codec限制在硬件能够处理的尺寸。你们必须找到正确尺寸的.bmp文件,或采用如Adobe Premiere的图形处理程序,将非标准图形调整为一种标准尺寸。

为什么在软件模拟器编辑菜单中没有“模拟设备WAVELET压缩”?

你采用的.bmp文件尺寸错误。如果图形不是上述之一的尺寸,Wavelet Codec则退出icmapp.exe中的Codec拾取列表。

通过ADV601的视频延迟是多长时间?

通过ADV601的延迟是一个半帧时间(对于NTSC视频为16毫秒,对于PAL视频为20毫秒)。ADV601在DRAM中有一个半帧缓冲区。小波转换输出被缓存于DRAM,并计算转换图像的统计(平方和)值。在主机有时间更新Bin Width寄存器以控制将要进行的压缩量之前,不并启动Huffman编码。统计在v同步开始后占用一行时间,主机还有其余19行时间(约1.2 ms)计算和装载新的Bin Width值。然后,Huffman编码器开始对DRAM中的小波转换视频进行处理,而小波转换器开始对下一个半帧进行处理。这些比我们看到要快。视觉滞留使肉眼无法察觉这么短时间内发生的事件。

必须将下半帧推入缓存区以推出前面的半帧。在下半帧开始推入VDATA总线之前,已转换的半帧不会离开DATA总线。在小波转换后、在运行长度和Huffman编码器之前,每个半帧都会被缓存于DRAM。缓存使主机在编码控制比特率之前有时间进行统计及量化设置。在捕获实况视频影像时,你并不真正关心。你只想要在摄像师获得足够画面并用手指关掉摄像机之前持续进行压缩。在利用缓存区对磁盘上捕获的视频压缩和解压缩以进行非线性编辑时,只需要将另外的半帧推入这部分缓存区,迫使最不需要的半帧离开缓存区。

要压缩一个静止帧(2个半帧),必须将半帧1 和半帧2推入缓存区。在半帧2要进入缓存区时,压缩半帧1就要退出。然后必须推入一个虚拟半帧,以将迫使压缩半帧2退出。

运行VIDEOLAB卡要求什么样的PC?

为成功运行ADV601 VideoLab板,要求计算机具有以下配置。购买新计算机要确保它至少包括:

1. Pentium CPU 133 MHz

2. 6 Meg RAM

3. SCSI硬盘驱动器。由于需要1G空闲容量捕获视频,所以硬盘容量最好不低于2G

4. 具有一个空闲总线控制插槽的PCI总线

5. Windows 95

6. CD-ROM,用以装载软件

7. Intel Triton芯片组。在主板上有一对大方形扁平封装芯片,标有Intel PCI Chipset SB82471和SB82371

我们已成功运行于Gateway P5-133s。Adaptec 2940 SCSI可有以使用,硬件能够进行8:1压缩率的视频处理。如IDE等较低速硬盘驱动器也可以使用,但是就要比较辛苦地将视频速率降到硬盘驱动能够处理的视频速率,以进行压缩。

怎样使用FIFO?

在FIFO业务请求(FIFO_SRQ)激动时一直进行数据传输。不要使用FIFO_STOP终止传输,再激活就太迟了,你将不可避免地要再进行一次传输大量数据,因为FIFO_STOP不能立即激活及时停止数据传输。

在FIFO中保留2个字节。如果完全清空FIFO(读出其中所有字节)缓存区就有问题了。例如,如果FIFO业务请求被程序设备为半满,你可能从FIFO中读出256字节。不要这样,读出254字节,留下2个字节。

或者,一直进行数据传输至直FIFO业务请求中止,这彻底避免问题的发生,因为FIFO业务请求中止时在FIFO中总会留有16字节或者更多。

在Interrupt Mask和Status寄存器中的FIFO_SRQ位不再粘着(sticky)。它简单地遵从来自Huffman FIFO的HCD_FF_SRQ状态信号。这表示读取Interrupt Mask和Status寄存器并不对该位进行重置。所有其他粘着位将如平常一样被重置,但FIFO_SRQ位不被重置。它总是反映来自FIFO的HCD_FF_SRQ信号的状态。同样的,如果在粘着寄存器读取操作之前HCD_FF_SRQ信号中止,FIFO_SRQ位也将失效。

这种变化对于ADV601 HIRQ*输出也有相应影响。由于srq位不被粘着寄存器读取操作重置,粘着寄存器读取操作后HIRQ*并不一定失效。如果来自FIFO的HCD_FF_SRQ状态信号保持为高,那么在粘着寄存器读取操作后,HIRQ*仍然存在,假设那一位没有掩码。同样地,如果HCD_FF_SRQ状态信号中止,那么HIRQ*将立即失效(假设没有其他中断挂起),而不会等待粘着寄存器的读取操作。

“RAW2AVI”做什么?

Raw2avi将由ADV601捕获的原始视频数据,转换为如Mediaplayer和Adobe Premiere等Windows视频程序所要求的“音频-影像交互”.avi格式。ADV601捕获驱动程序不会计算并向播放着的视频数据流插入半帧开始标志的特殊窗口,因此需要由Raw2avi程序进行。你必须对捕获的每个视频素材(clip)运行Raw2avi,以在Windows程序中使用该素材。基本上,Raw2avi拾取原始视频文件,并在每个视频帧之间插入特殊的帧头。Raw2avi是一个双向程序,它能够将原始视频文件转换为.avi格式,也能够进行反向转换,处理.avi文件使它适于ADV601播放。如果你已经将视频作为.avi文件进行过编辑,而后想用Videolab卡进行播放,你就需要进行反向转换。

统计说明了什么?

检查原始数据的半帧类型和位置以及每个半帧中视频子带(sub-bands,即Mallat 块)是否合适。在捕获过程中的数据错误和数据丢失会导致丢失换码顺序。合法的换码顺序(半帧开始的开始位、块的开始位、VITC等,在ADV601数据页表 XVI中定义)。Raw2avi读取整个捕获视频文件(这也是为什么操作迟缓的原因),并对所有换码顺序进行计数。如果整个文件半帧头的开始位为“半帧1、半帧2、半帧1、半帧2……”,半帧顺序就是“正确的”。如果Raw2avi发现在一行中出现成对的半帧1,在一行中出现成对的半帧2,或者以半帧2开始的文件,半帧顺序就“反”了,这意味着视频文件可能无法正确播放。每个半帧必须包括41个块开始头。如果探测到丢失了1个或者有多出来的,该半帧就被标识为“坏的”,出现一个消息窗口,可以在.avi文件之外进行编辑。坏的半帧可能无法正确播放。每个换码顺序“引导”(0xFFFFFFFF标志)必须跟着一个列于数据页表XVII中的代码。如果出现了未知代码,就会被计数并显示。文件中不应该出现未知换码顺序。

Raw2avi运行进会打印状态。你可见如下显示:发现的半帧1数,发现的半帧2数,从文件中读取的字节数,坏半帧数,在每半帧中Mallat块数,在每半帧中字节数。

在.601中的错误提示在ADV601和磁盘文件之间有视频数据丢失。

每一帧都有一个半帧1和一个半帧2,所以半帧1和半帧2的数目要一致。如果不一致,一定有丢失的半帧。每个半帧应该包括42个Mallat块。更新每一半帧的每半帧字节数作为对每一半帧压缩的统计。在理想情况下,bin width计算器将保持比特率恒定,且每一压缩半帧有相同的尺寸。在实际情况中,半帧与半帧之间的比特率略有不同。每半帧字节的波动显示,是对bin width计算器效力的一种评测。

Raw2avi显示的统计用于视频捕获故障警告。即使是原始视频出现问题,Raw2avi也会创建一个.avi文件,以允许用户查看视频素材,或者可以了解视频素材的问题所在。

我怎样才能知道Raw2avi在工作?

将一个.601文件转换为.avi文件,所得到的.avi文件必须比输入文件略长。然后再将.avi转换回原始文件(.601为原始视频文件的扩展名)。新的原始文件将与原来的文件完全一致。利用DOS fcw命令确认。自然,.601文件应该是一个没有坏半帧的好文件。如果Raw2Avi发现坏半帧,它将把坏半帧从.avi文件中删除,这样最终的.601文件也会比原来的文件短一些。

我怎样在ADV601中运行“PHILLIPS模式”视频?

要以复合同步运行,通过模式控制寄存器视频接口格式位,设置为“多元Phillips视频模式(Multiplexed Phillips Video Mode)”。数据页图27的时序图,显示了其中必须出现H同步和V同步。详细地讲,HSYNC对一个视频时钟必须是好的,换句话说,在NTSC或PAL中每720像素必须有一个HSYNC。如果有时多出像素或漏掉一个像素,ADV601就不明其意了。第49页表VIII要求有相对视频时钟有10 ns设置时间和3 ns保持时间。水平同步只持续1个像素时间。在HSYNC的上升边将产生垂直同步,并且保持至少5行时间。设置时间和保持时间是相对于视频时钟的,对于HSYNC也是如此。在编码过程中,HSYNC和VSYNC 释放(deasserted)半帧的标识像素(0,0)。通过模式控制寄存器中的PHSYNC 位,可以编程设定HSYNC极性,所以HSYNC产生(水平折回时间)可以是“走低”或“走高”,无论哪个更方便即可。视频区域寄存器是“剪切”寄存器。在活动视频区域外的视频被设置为黑(0),这样编码非常紧凑。它们并不转换图像或变改图像尺寸,只是节省信息位,否则这些数据会扩大无用信息传输。这些仅仅影响编码,而并不会影响HSYNC和VSYNC时序。

怎样在从属PHILLIPS 模式下操作ADV601?

在从属模式下操作时,设备对预期视频格式有真实的认知吗?例如,在我的应用中,视频输入不是直接来自视频设备,但不需要实时处理?为此,我们将制造出一个逻辑,以欺骗进入ADV601的Hsync信号和Vsync信号。在这种情况下,同步信号需要满足“正统”格式信号时序要求,或者同步信号只是设定为彼此相对的正确顺序(例如,它们单纯地重置内部计数器)?

你必须将VCLK速率很好地保持在接近于数据页第32页给出的数值。这部分运行于VCLK并采用.pll创建DRAM时序,所以不可以仅仅改变VCLK。这就是VCLK有1 ns抖动的原因。你必须达到每行720次取样,不能多,也不能少,否则设备就被搞糊涂,视频失去同步。你可以制造水平行消隐。正常消隐长度为138像素。

消隐长度略长也没有问题。设备利用1024滚动复位计数器对每行(活动的和不活动的)总像素计数。只要消隐间隔不超过304 (= 1024–720)像素,都将工作正常。还要进行一些行尾处理,所以水平消隐间隔不能过短。我们还设计并测试了对以正常速率运行的视频进行处理,所以认为一切正常。

在WINDOWS 95下有多长的中断延迟?

偶然情况下,可能遇到长达127 μs的中断延迟。通常,在中断5 μs后FIFO服务启动(在程序控制下进行数据传输),FIFO在15 μs内达到饱和。假设我们能看到迎面而来的Windows 95时钟和调度器中断业务程序,并我们无法在计时器和调度器处理并发出IRET指令之前取得控制。

怎样才能改善WINDOWS 95实时性能?

Windows 95中有两件事会带来很大好处。关闭CD ROM自动检测功能,在Windows 95开始按钮/设置/系统/设备管理器中进行。点击CD-ROM驱动器,点击<属性>,点击<设置>表签,点除“自动插入通知”选择框中的对勾。这将抑制系统周期性地、费时地检查CD-ROM驱动器,查看是否有CD-ROM插入驱动器。检查代码占用大量CPU资源,关闭中断时间太长。

在设置页进入“添加/删除程序”,Windows设置,去掉“accessibility选项”(轮椅图标)并关闭“自动重新设置”功能。它抑制了其他一些在24秒后运行、以中止某些用户关闭功能的大量CPU资源占用。在两种情况下,Windows 95功能基本上获得CPU,并在外部中断处理器获得CPU控制以服务于ADV601 FIFO之前, FIFO 无法被备份也无法释放时,保持CPU占用。一旦消耗CPU资源的功能被关闭,我们得到5 μs中断延迟,采用PCI总线突发模式,可以在不超过25 μs内装载FIFO。

硬件测试程序(601test)能做些什么?

在601test程序的主菜单上有以下选择:

选择循环选项

你可以使601测试程序重复进行任何一个、一组或所有测试。该选项旨在标准模拟示波镜中给出良好轨迹。这项功能在寻找间歇性故障时十分有用。

设定磁盘日志标志

磁盘记录日志(log-to-disk)将所有屏幕显示写入文件名为601test.dat的磁盘文件。当错误消息过快地滚出屏幕上方而无法阅读时,或交付的每块板卡都想随附打印测试数据页时,这项功能十分有用。磁盘记录日志缺省为OFF。在磁盘记录日志激活状态进行循环时要小心,磁盘迟早会占满。

设定视频格式[NTSC/PAL]

这里设置了所有三个芯版初始化程序(ADV7175, ADV601和SAA7111)都要查看的全局标志。该标志为粘着型,缺省设置为NTSC。采用这种设置,色彩映射(color ramp)仅针对NTSC,且只有NTSC压缩数据可以用于播放。当设置为PAL时要播放NTSC压缩数据,或是相反情况下,将导致不可预知的结果。如果有什么奇怪的事情发生,请检查视频格式设置。

设定视频方向[录制/播放]

这里设置了芯片初始化程序的第二个全局标志。通常,该标志控制方向,除了在如色彩映射等显见的情况下必须进行播放外。如果选择了色彩映射或内存播放,芯片初始化程序将不理会所设置的R/P标志,被设置为播放。

设置逻辑分析仪触发点

这项不是很显而易见的设置仅在一些特殊情况下十分有用。在FIFO读回错误数据之前,FIFO测试并不知道出现了问题。在进行满FIFO装载操作时,程序发现错误与错误发生之间可能已经过相当一段时间,逻辑分析仪无法向触发点之前回溯很远。该选项是一种告诉程序仅对FIFO的一小部分进行测试的途径,这样在故障出现后,很快找到触发点。如果过早设置触发点,整个FIFO尚未进行测试,在某些情况下,程序会认为故障板卡是好的。如果不使用这一特殊功能,最好将触发点恢复设置为满(7FFFH)。

抑制操作成功的消息以得到更快的循环速度

该选项关闭了不必要的写屏操作以使循环运行速度更快。操作失败消息总是打印出来,操作成功消息则被关闭。如果日志文件被激活,所有操作均打印至日志文件。当然,写磁盘比写屏速度慢,所以,如果想要有最佳的循环速度,就应该关闭磁盘记录日志功能。

Bin Width寄存器控制

ADV601测试程序现在可以将所有bin width和倒数bin width寄存器设置为相同数值。这样不会得到良好的压缩效果,但是在测量定位芯片故障时十分有用。最终的bin width机制要求主机读取统计数据,并计算42个小波子带每一子带的bin width (比例因子)。这种机制十分复杂,并且统计硬件故障、到主机的统计寄存器接口故障、主机程序中的bug、或者是错误的bin width或倒数bin width寄存器,都将导致视频信号出错、不连续或者没有画面。在这种情况下,601测试程序允许你将所有bin width和倒数bin width寄存器设置为相同数值。给程序输入“1”,将使bin width寄存器设置为100 Hex,倒数bin width寄存器设置为400 Hex。程序输入浮点值(允许小数)并乘以8.8计算十六进制bin width,乘以6.10计算倒数bin width。这种机制无法得到良好的压缩效果,但可以得到尚可观看的画面。如果得不到尚可观看的视频,一定是有什么地方出了问题,而出问题的不在于统计寄存器、计算或主机对bin width的计算过程。

选择2让你装载在测试画面工作良好的三组bin width数值。这样可以得到合理的压缩和观看效果良好的视频,而不需要那么麻烦地一帧一帧地进行持续比特率调整。比特率也许随景场不同而有所不同,但是我们应该能够观看到视频图像。

选择3读回并显示十六进制bin width寄存器设置。你可以利用这一选项检查是否所有位被装载至601寄存器,没有位未被处理。

什么是停止模式?

ADV601 工作于“停止模式”或“虚拟FIFO模式”。如果FIFO占满,在FIFO中出现空闲空间前,ADV601将一直保持视频数据。当FIFO占满(或为空)时,仍然设置FIFO ERR位,但是这一功能同时将视频保持于DRAM。直到设置Memory Error位之前,不会释放视频数据。

如果数据传输被暂时延迟(也许由于意外寻找磁盘),停止模式将有所帮助。在解码过程中,Huffman解码器从FIFO中读取压缩数据,进行解码并将原始(经过小波转换的)视频数据放入DRAM。小波管道(Wavelet pipe)从DRAM中取得转换后视频数据,并对其进行反向转换为原视频数据。在DRAM中有数据,小波管道将有一直运行。当DRAM中没有数据时,它只输出一个黑半帧。解码中FIFO_ERR表示Huffman解码器输入已经完成,也是警示必须采取措施;它并不表示视频数据已经丢失。如果板卡迅速装载FIFO(进行512字的写操作)对FIFO_ERR做出反应,Huffman解码器将会拾取,小波道管将不会无数据处理,输出视频也很完美。如果在出现FIFO_ERR后,板卡不能及时向FIFO装载数据,Huffman解码器将停止,DRAM中不再有数据,ADV601将输出一个黑半帧。在PAL制式中,这需要25毫秒,给板卡提供了充足的时间将其余半帧装载至FIFO。接着,将输出延迟的半帧。这将引起输出视频监视器的闪烁,而不是完全黑屏。这里,我们板卡以Norwood模式进行。

你也许需要修改驱动程序以忽略FIFO错误位,并一直按下直至发生内存错误。假设驱动程序检查所有状态位并在发现时报告错误。如果注释掉FIFO ERR检查码,对于好的视频信号,运行能够更快。

在芯片测试器上对停止模式功能进行了测试,它确定工作正常。开启该模式不需要额外的控制位。

顺序结尾码做什么?

在解码过程中,ADV601将在数据结尾输出一帧黑屏。EOS码提示ADV601开始输出黑屏。当FIFO数据运行完时,它可以智能地开始输出黑屏,但人们也许可添加EOS代码仅为作安全警示。

内核中的BIN WIDTH计算

ADV601包括两个主要部分:小波转换器和运行长度/ Huffman编码器。在压缩(编码)过程中,视频被转换为小波域,而后运行长度/ Huffman编码。小波转换与傅利叶变换类似具有可逆性,小波域将输入信号划分为“子带”。每个子带中的信号好似经过带通滤波的输入信号。可以将小波转换看作是一系列的带通滤波器。

要进行逆向小波转换并恢复原始信号,简单地汇加所有子带在一起即可。如果保存了所有子带中的所有位,就是一个无损转换,可以完整恢复原来的信号。这是一种“无视觉损失”压缩,并提供3:1的压缩,这对许多应用而言还是不够的。

如果看一下最高频率子带中的信号,你可发现主要是高频噪声的小幅摆动和表示画面中利边的高振幅尖峰。如果我们丢弃高频子带中的低位,就可以得到更高的压缩比。它可以通过信号修整真正改善画面。

我们通过将每个子带的数据点乘以分数进行信号修整,后者被称为“倒数bin width”。这是一个位于小波转换器和运行长度/Huffman编码器之间的自适应量化器。有42个不同的bin,各每一个都有一个倒数bin width寄存器,允许对每个子带进行独立量化。在解码过程中,通过将每个数据点乘以一个被称为“bin width”的系数,将量化信号恢复到适当的振幅。这里,还有42个bin width寄存器。

“bin width计算器”程序的职责是在42个bin width和42个倒数bin width寄存器中设置适当的分数,以达到想要的压缩率。目前,我们有两个bin width计算器程序。其中之一负责对每个子带平方寄存器加总,并选择量化强度足以达到目标比特率的一系列bin width数值。程序基于主机以C语言编写。你可以在互联网ftp.analog.com/pub/dsp/adv601/software/601cman找到其源代码。

另一种程序负责压缩半帧的尺寸,并上下调整bin width寄存器(负反馈)以达到目标比特率。程序基于ADSP-2104以汇编语言编写。其源代码可以在互联网tp.analog.com/pub/dsp/adv601/ software/dspbinwd找到。

我可以从DSP串口读写ADV601模式控制寄存器吗?

不行。DSP串口仅向统计和bin width寄存器提供DSP访问。你不能访问模式控制寄存器,FIFO控制寄存器或剪切(cropping)寄存器。如果DSP是系统中唯一的处理器,则通过主机端口(并口)而不是DSP串口作为接口。

我可以用ADV601处理CIF和QCIF图像吗?

可以,但是不是以你所想的方式进行。缩写CIF代表“普通图像格式”并意味着352 × 240 (NSTC)。其本质上是半尺寸图像。全CCIR 601分辨率为720 × 486。CIF图像只包括全尺寸图像的四分之一像素,所以在不牺牲图像质量的条件下,占四分之一磁盘空间或者比全分辨率图像传输快4倍。

为了对CIF图像进行编码,我们不得不丢弃原来全尺寸图像中一半行和一半像素。丢弃交替视频的半帧2就可很容易地去掉一半的行信息。控制微处理器可以简单地把压缩视频半帧2直接丢到位桶(bit bucket)中,而只传输或存储压缩半帧1。然后,通过将ADV601的最高子带(Luma,CR 和CB)的倒数bin width寄存器设置为0,丢弃3个子带中的所有位,而丢掉一半像素。高子带运行于6.75 MHz至 3.375 MHz,或者说视频频谱的上半部。结果,我们将最高视频频率降低一半,节省了对这些信息进行编码所需的位。根据Shannon取样法则,这相当于丢弃了一半像素。哇!不需要额外硬件、通过ADV601得到的CIF压缩图像。我们做到了保存CIF图像,并及ADV601对残存图像的小波压缩。

要在ADV601上播放CIF图像,只要简单地两次把每个半帧输入解码芯片,ADV601将产生60半帧/秒、用于普通电视播放的CIF分辨率图像。图像将恢复为全尺寸(覆盖整个电视屏幕),但是分辨率仅为CIF。换句话说,你得到了全尺寸但是有点模糊的画面。

要在计算机监视器上得到较小的图像(看起来起清晰),只水平扫描半帧1的243行以及每个像素就好了。这可以软件或硬件方式实现。

QCIF是“四分之一CIF”或180 × 122。它可以通过对形成CIF图像的技术进行扩展而实现。丢弃半帧2,将最高两个子带而不只是最高的一个带设为0。这将使视频频率再降低一半,或者说降到1.75 MHz。


 

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    uclinux-2008R1-RC8(bf561)到
    基于DDS芯片AD9851的精密跳频
    基于Blackfin DSP的函数_任意
    DSP芯片外围电路典型设计
    放大器输入保护的利与弊
    隔离式电压/电流传感器1B21的
    仪表放大器:怎样构建与何时
    AD8369,10,7M 两级AD8369做1
    请教一个关于AD8310功耗的问
    差错和不足:ADI《仪表放大器
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    版权所有:AnalogCN安诺电子 湘ICP备06016315号