找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于Directshow的H.264解码器的设计与实现

[复制链接]
admin 发表于 2013-3-22 22:50:08 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 为实现视频监控系统中视频的解码,提出了一个H.264视频解码器在Directshow中的实现方案。Directshow应用程序编程接口是一个基于Windows平台的优秀流媒体架构,它为在Windows平台上处理各种格式的媒体文件回放、音视频采集等高性能要求的多媒体应用提供了完整的解决方案。
关键词: H.264; Directshow; 解码器
       网络视频监控是一种基于宽带网络为用户提供图像和各种报警信号远程采集、传输、储存、处理等功能的全新电信业务。这是一个由前端、中间端、后端三部分组成的网络视频监控系统。其中解码模块将收到的完整数据帧放入解码器中进行解码,生成实时视频影像。
     H.264是继MPEG4之后的新一代数字视频压缩格式,它既保留了以往压缩技术的优点和精华,又具有其他压缩技术无法比拟的优点。H.264最具价值的部分是更高的数据压缩比。在同等的图像质量条件下,H.264的数据压缩比能比当前DVD系统中使用的MPEG-2高2~3倍,比MPEG-4高1.5~2倍。正因为如此,经过H.264压缩的视频数据,在网络传输过程中所需要的带宽更少,也更加经济。所以本系统选择采用H.264格式视频。
     DirectX软件开发包是微软公司提供的一套在Windows操作平台上开发高性能图形、声音、输入、输出和网络游戏的编程接口。可以用来开发游戏以及作为其他各类多媒体应用程序的底层API函数集。它是一种基于COM的系统,既不属于驱动程序层,也不属于应用程序层。作为DirectX的一个COM组成元素,Directshow应用程序编程接口是一个Windows平台上的流媒体架构,提供各种格式的高品质多媒体流的捕获、处理、传送和回放。Directshow集成了DirectX其他组件中的先进技术,能做到自动检测、使用视频和音频硬件加速设备。它不仅支持基于WDM驱动程序的硬件设备,也向上兼容Video for Windows驱动程序的硬件设备。Directshow采用多线程多任务的方式,还支持宽松的格式变化。Directshow为播放视频监控中涉及到的各种类型的音频、视频数据提供了非常有效的途径。因此本系统采用Directshow来实现视频监控系统中H.264视频的解码。
1 Directshow体系结构
 Directshow基于模块化结构,每个功能模块都采取COM组件方式,称为Filter。Filter负责执行一些多媒体流的处理过程,采用Filter Graph模型来管理整个数据流的处理过程。Directshow的体系结构图如图1所示。它通过提供各种功能的Filter完成总体应用框架的工作,从而使多媒体应用程序设计变得简单。每个Filter都分别具有一个不同的应用功能,Filter之间通过Pin相互连接。每个过滤器都拥有属于自己的针脚。针脚分为输入针脚和输出针脚,输入针脚把过滤器外部的数据接收到过滤器中进行处理,输出针脚把过滤器中处理后的数据传送到下一个过滤器。经过输入输出针脚的传递,数据从一个过滤器传送到了下一个过滤器中。当两个pin连接的时候,必须有一个pin提供一个allocator。Directshow定义了一系列函数调用来确定由哪个pin提供allocator,以及buffer的数量和大小。在数据流开始之前,allocator会创建一个内存池pool of buffer,在开始发送数据流以后,源Filter就会将数据填充到内存池中一个空闲的buffer中,然后传递给下一个的Filter。
    20121107051648364623353.gif
   1.1 Filter的原理
 Directshow技术的最核心就是作为过滤器的可插入标准组件,它是具有特殊功能的COM对象。过滤器又可分为:源过滤器(Source Filter)、变换过滤器(Trans-form Filter)、提交过滤器(Renderer Filter)等。源过滤器引入数据到过滤器图表中,数据来源可以是文件、网络、照相机等。不同的源过滤器处理不同类型的数据源,然后将数据往下传输;变换过滤器的工作是获取输入流,处理数据,并生成输出流,其对数据的处理包括编解码、格式转换、压缩解压缩等;提交过滤器主要负责数据的最终去向,接收数据并把数据提交给外设。Directshow使Filter Graph Manager中的Filter按一定的顺序连接成一条“流水线”协同工作,Filter Graph的结构如图2所示。过滤器通过文件读写、修改数据和显示数据输出设备来操作流媒体。为了完成整个任务,必须将所有的过滤器Filter连接起来。应用程序只需要通过COM接口访问过滤器图表、控制流媒体或者接收过滤器事件来完成视频的播放。
    20121107051648395873354.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-24 02:28 , Processed in 0.056538 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表