HWB-DVR数字视频录像机设计
发布时间:2008/6/5 0:00:00 访问次数:392
关键词:数字录像机(dvr);mpeg-2;mpeg-4;ps;ts
概述
hwb-dvr数字视频录像机是基于mpeg-1、mpeg-2/dvb、mpeg-4标准的家庭应用多媒体处理和存储平台,可以对模拟和数字电视信号进行mpeg-1、mpeg-2或mpeg-4格式的编码录像和回放,是集机顶盒与录像机于一体的数字化家用电器。本文就硬件和软件两方面说明其设计思路。
硬件设计
由图1可以看出dvr系统主要由两大功能部分组成:编/解码部分和cpu部分。
编/解码部分的功能是将输入的模拟音/视频信号转换成mpeg-1、mpeg-2或mpeg-4格式的数据流,可以将数据流进行存储,也可以再将其转换成模拟音/视频信号输出。
编/解码部分的核心芯片是ht2010。它是音/视频系统数字信号编/解码器,支持mpeg-1,mpeg-2和mpeg-4三种格式的编/解码,并且可以在编/解码的过程中进行三种格式之间的转换。ht2010具有编码和解码双重功能,对数据流的编码和解码过程可以同时进行。ht2010可以将数据流编/解码成mpeg格式的ts流或ps流。
视频信号的处理过程如图2所示。
编/解码部分的输入视频信号可以是以下两种形式:
?复合电视信号(cvbs)
?分离电视信号(s-video)
输出为cvbs信号,系统可以扩展s-video输入/输出。
输入的模拟视频信号通过视频adc,将模拟的视频信号解码成itu-656格式的视频数据流,该视频数据流经过ht2010芯片编码后可以转换成mpeg-1、mpeg-2或mpeg-4格式的数据流,将这种格式的数据流输入到硬盘中存储起来,就完成了dvr的存储功能。硬盘存储的编码后的mpeg数据流经过ht2010解码后,输出itu-656格式的视频数据流到视频dac,经转换后输出cvbs信号和s-video信号。通过dvr的视频输出端子将电视信号连接到电视机上,就完成了dvr的播放功能。如果同时进行以上两个过程,就完成了dvr的同时录播功能。
音频信号的处理过程与视频处理过程类似:输入的音频信号经过音频adc转换成数字的音频信号,再经过ht2010编码成mpeg格式。mpeg格式的音频信号经过音频dac转换成模拟音频输出。dvr支持音/视频同步采集、处理。
ht2010提供了标准pci接口,可以通过pci总线与 cpu进行数据交换。主控制芯片采用嵌入式x86 cpu,它集成了32位pci总线控制器、支持多种类型的外部存储器接口、2个usb1.1控制器、10/100mbps自适应以太网控制器、串口通信控制器,以及直接访问存储控制器、时钟发生器、电源管理器、中断控制器和通用i/o端口等大量外围模块。cpu通过i2c接口与系统的其它芯片进行数据传送,发送命令。
通过ht2010编/解码后的数据流通过pci总线与cpu进行数据交换,可以将数据通过cpu送到硬盘中存储起来。通过cpu提供的外围接口,dvr可以与多种设备进行连接,用户可以通过usb接口、串行接口等外部接口来获得硬盘中存储的节目信息。用户还可以通过外部接口与摄像机连接,这样摄像机录制的节目就通过dvr存储起来,也可以通过dvr进行播放。用户还可以通过通用i/o端口与计算机连接,还可以通过以太网接口与internet网络连接,实现远程控制。在本dvr系统中预留了这些接口用于将来系统扩展。
系统软件设计
软件总体设计
dvr系统软件依据模块化、功能化、可扩展性原则设计,整体使用的4层体系结构如图3所示。各模块和硬件的关系如图4所示。
pci驱动程序
核心cpu和编/解码ic之间使用pci总线通信,pci驱动程序实现编/解码ic与操作系统内核的数据通信及控制。pci驱动程序设计的优化关系到系统运行的可靠程度。pci驱动程序以模块方式设计,便于加载与调试。pci驱动程序的设计分为两个过程:1. 模块加载过程。操作系统通过运行insmod命令加载驱动程序,驱动程序通过一系列过程完成对设备的初始化和系统资源分配。应用程序调用分配的资源控制设备正常工作。2. 设备卸载过程。操作系统通过调用rmmod命令卸载驱动程序。驱动程序释放系统资源,解除系统对硬件的控制。工作流程如图5所示。
pci驱动程序中主要实现以下内容:
static int card_open(struct inode *, struct file *);
static int card_close(struct inode *, struct file *);
static int card_ioctl(struct inode *, struct file *, u_int, u_long);
static void card_isr(int, void *, struct pt_regs *);
其中,card_open实现打开pci设备,增加访问计数,为读写设备做准备工作。card_close实现关闭设备的功能,释放访问计数,并将设备状态标志标记为关闭状态。card_ioctl实现对pci设备的基本控制,主要包括读设备、写设备、设置设备工作参数等。card_isr实现pci设备的中断处理,数据发送完成或数据接收就绪时都将引发中断并调用该函数。因为中断的调用速度很快,该函数的调用效率要求很高。
数据在用户空间与内核空间中的传递采用iobuffer机制,使用map_user_
关键词:数字录像机(dvr);mpeg-2;mpeg-4;ps;ts
概述
hwb-dvr数字视频录像机是基于mpeg-1、mpeg-2/dvb、mpeg-4标准的家庭应用多媒体处理和存储平台,可以对模拟和数字电视信号进行mpeg-1、mpeg-2或mpeg-4格式的编码录像和回放,是集机顶盒与录像机于一体的数字化家用电器。本文就硬件和软件两方面说明其设计思路。
硬件设计
由图1可以看出dvr系统主要由两大功能部分组成:编/解码部分和cpu部分。
编/解码部分的功能是将输入的模拟音/视频信号转换成mpeg-1、mpeg-2或mpeg-4格式的数据流,可以将数据流进行存储,也可以再将其转换成模拟音/视频信号输出。
编/解码部分的核心芯片是ht2010。它是音/视频系统数字信号编/解码器,支持mpeg-1,mpeg-2和mpeg-4三种格式的编/解码,并且可以在编/解码的过程中进行三种格式之间的转换。ht2010具有编码和解码双重功能,对数据流的编码和解码过程可以同时进行。ht2010可以将数据流编/解码成mpeg格式的ts流或ps流。
视频信号的处理过程如图2所示。
编/解码部分的输入视频信号可以是以下两种形式:
?复合电视信号(cvbs)
?分离电视信号(s-video)
输出为cvbs信号,系统可以扩展s-video输入/输出。
输入的模拟视频信号通过视频adc,将模拟的视频信号解码成itu-656格式的视频数据流,该视频数据流经过ht2010芯片编码后可以转换成mpeg-1、mpeg-2或mpeg-4格式的数据流,将这种格式的数据流输入到硬盘中存储起来,就完成了dvr的存储功能。硬盘存储的编码后的mpeg数据流经过ht2010解码后,输出itu-656格式的视频数据流到视频dac,经转换后输出cvbs信号和s-video信号。通过dvr的视频输出端子将电视信号连接到电视机上,就完成了dvr的播放功能。如果同时进行以上两个过程,就完成了dvr的同时录播功能。
音频信号的处理过程与视频处理过程类似:输入的音频信号经过音频adc转换成数字的音频信号,再经过ht2010编码成mpeg格式。mpeg格式的音频信号经过音频dac转换成模拟音频输出。dvr支持音/视频同步采集、处理。
ht2010提供了标准pci接口,可以通过pci总线与 cpu进行数据交换。主控制芯片采用嵌入式x86 cpu,它集成了32位pci总线控制器、支持多种类型的外部存储器接口、2个usb1.1控制器、10/100mbps自适应以太网控制器、串口通信控制器,以及直接访问存储控制器、时钟发生器、电源管理器、中断控制器和通用i/o端口等大量外围模块。cpu通过i2c接口与系统的其它芯片进行数据传送,发送命令。
通过ht2010编/解码后的数据流通过pci总线与cpu进行数据交换,可以将数据通过cpu送到硬盘中存储起来。通过cpu提供的外围接口,dvr可以与多种设备进行连接,用户可以通过usb接口、串行接口等外部接口来获得硬盘中存储的节目信息。用户还可以通过外部接口与摄像机连接,这样摄像机录制的节目就通过dvr存储起来,也可以通过dvr进行播放。用户还可以通过通用i/o端口与计算机连接,还可以通过以太网接口与internet网络连接,实现远程控制。在本dvr系统中预留了这些接口用于将来系统扩展。
系统软件设计
软件总体设计
dvr系统软件依据模块化、功能化、可扩展性原则设计,整体使用的4层体系结构如图3所示。各模块和硬件的关系如图4所示。
pci驱动程序
核心cpu和编/解码ic之间使用pci总线通信,pci驱动程序实现编/解码ic与操作系统内核的数据通信及控制。pci驱动程序设计的优化关系到系统运行的可靠程度。pci驱动程序以模块方式设计,便于加载与调试。pci驱动程序的设计分为两个过程:1. 模块加载过程。操作系统通过运行insmod命令加载驱动程序,驱动程序通过一系列过程完成对设备的初始化和系统资源分配。应用程序调用分配的资源控制设备正常工作。2. 设备卸载过程。操作系统通过调用rmmod命令卸载驱动程序。驱动程序释放系统资源,解除系统对硬件的控制。工作流程如图5所示。
pci驱动程序中主要实现以下内容:
static int card_open(struct inode *, struct file *);
static int card_close(struct inode *, struct file *);
static int card_ioctl(struct inode *, struct file *, u_int, u_long);
static void card_isr(int, void *, struct pt_regs *);
其中,card_open实现打开pci设备,增加访问计数,为读写设备做准备工作。card_close实现关闭设备的功能,释放访问计数,并将设备状态标志标记为关闭状态。card_ioctl实现对pci设备的基本控制,主要包括读设备、写设备、设置设备工作参数等。card_isr实现pci设备的中断处理,数据发送完成或数据接收就绪时都将引发中断并调用该函数。因为中断的调用速度很快,该函数的调用效率要求很高。
数据在用户空间与内核空间中的传递采用iobuffer机制,使用map_user_
上一篇:人性化的用户界面