一种视频解码方法技术

技术编号:11012876 阅读:78 留言:0更新日期:2015-02-05 18:37
本发明专利技术提供了一种视频解码方法,该方法包括:在视频采集阶段申请预定数量的帧缓冲,将申请到的帧缓冲区直接映射到用户空间,将采集到图像数据进行格式转换,对数据进行编码;对视频数据进行拆分和组帧发送,当接收到一帧数据时,接收线程,数据处理线程和解码线程以流水线方式同时运行;对数据进行解码,将解码后的数据进行格式转换和显示。本发明专利技术提出了一种视频解码方法,优化了视频数据读取的实时性,保证了视频的流畅性。以简单的结构、低廉的成本,容易实现的技术完成了高速视频的采集、压缩处理、数字传输和解码。

【技术实现步骤摘要】
一种视频解码方法
本专利技术涉及视频处理,特别涉及一种在无线传输和解码视频的方法。
技术介绍
随着无线通信技术的出现和普及,使得无线网络传输实时视频成为了可能。终端产品丰富使得无线网络视频传输系统得到了广泛的应用,如无线视频监控、无线可视电话、视频点播、智能设备电视直播、移动视频会议等。但无线网络环境下的视频播放机制成本过高,并且受网络稳定性的影响,视频传输和解码的实时性和流畅性也需要进一步优化。
技术实现思路
为解决上述现有技术所存在的问题,本专利技术提出了一种视频解码方法,包括:在视频采集阶段使用统一的API函数,在只读模式下打开摄像头设备文件,然后设置视频设备的采集格式,保存相关参数;向驱动程序申请预定数量的帧缓冲,将申请到的帧缓冲区直接映射到用户空间,由用户直接获取帧数据,将缓冲区保存在采集消息队列,返回每个缓冲区的首地址和长度,并将首地址和长度保存在结构体类型的缓冲对象中,当开始采集视频时,在采集到完整一帧视频后,控制缓冲从消息队列输出,依据地址和帧长度获得采集到的视频数据,将帧缓冲重新入队列,实现循环采集;将采集到的JPEG图像数据进行格式转换,转换成YUV格式,对YUV格式的数据进行编码;通过编码将视频数据压缩,并对视频数据进行拆分和组帧发送,依据缓冲器大小对视频数据进行划分,并定长发送;划分的每一组视频数据加入帧头,数据大小,帧尾的标志位进行组帧;当接收到一帧数据时,通过软中断信号通知应用程序的接收线程读取,接收线程把数据保存在环形拼接缓冲区中的第一缓冲区中,所述环形拼接缓冲区由四个缓冲区组成,用于将接收到的视频数据进行缓存以等待数据处理线程获取数据来拼接,数据处理线程通过所述标志位获得视频数据,并将视频流拷贝到视频暂存区域进行数据的拼接,数据的拼接按照接收顺序和上一帧数据的大小来偏移本次保存视频的地址,当完整的接收到一帧视频数据后,将完整的数据转到环形解码缓冲区,解码线程将接收的视频数据解码并在显示器上显示,接收线程,数据处理线程和解码线程是同时运行的,而且采用信号量机制实现同步共享同一缓冲区进行数据的交互;对数据进行MPEG解码,获得解码后的数据保存地址,解码结束时释放解码器资源,将解码后的数据格式即YUV格式转换成RGB格式在显示器上预览。优选地,所述对视频数据进行编码,进一步包括:读入一组帧视频序列,对其进行奇偶分离得到奇数帧视频序列和偶数帧视频序列;分别对两个序列进行编码,得到奇数帧视频序列的冗余信息以及偶数帧视频序列的冗余信息,通过两个相互独立的信道传送到解码端,在解码端进行双路解码,用得到的两路信息进行奇偶帧排序得到双路解码视频序列;在对每个序列进行解码时,根据对应解码器采用帧内插过程恢复出单路解码视频序列;所述帧内插过程将第k帧fk(p)和第k+1帧fk+1(p)的像素值平均后生成一个初始复原帧f(p)=(fk(p)+fk+1(p))/2,其中f(p)表示复原帧中位置p处的像素值,然后对第k帧fk(p)和第k+1帧fk+1(p)分别通过后向预测和前向预测,取重叠部分的平均值作为运动补偿的最终值:f(p)=(fk(p+MV(p)/2)+fk+1(p+MV(p)/2))/2,其中MV(p)表示像素运动矢量;用所得平均值代替上一步初始化生成的初始复原帧。对于奇数帧构成的视频序列,首先用奇数帧视频序列通过帧内插复原出偶数帧视频序列,对复原得到的偶数帧进行分块,结合真实的偶数帧计算每一块的复原质量值;对于偶数帧视频序列,用偶数帧序列通过帧内插复原出奇数帧序列,然后对复原出的奇数帧进行分块,并结合真实的奇数帧计算每一块的复原质量值;根据计算得到的复原质量值设置两个阈值T1和T2,其中T1>T2,如果块的复原质量值≥T1,则该模式定义为模式1;如果块的复原质量为T2<复原质量值<T1,则该模式定义为模式2;如果块的复原质量复原质量值≤T2,则该模式定义为模式3,其中所述模式定义如下:(1)模式1,当块的复原质量为复原质量值≥T1时,不传送任何冗余信息;(2)模式2,当块的复原质量为T2<复原质量值<T1时,把运动矢量MV作为冗余信息传送到解码端,即用当前块通过运动估计在前一帧中寻找差异最小块,记录其运动矢量MV;(3)模式3,当块的复原质量为复原质量值≤T2时,不仅传送模式2中的运动矢量MV,还传送残差信息,当找到运动矢量MV后,用当前块减去前一帧中差异最小块得到另一部分冗余信息即残差数据,直接对运动矢量信息进行算术编码,对残差数据进行DCT变换并且量化取整,然后进行算术编码,最后传送到解码端进行解码;其中阈值T1和T2的确定是根据信道带宽的大小和所需复原质量确定冗余信息量,进而确定阈值T1和T2。本专利技术相比现有技术,具有以下优点:提出了一种视频解码方法,优化了视频数据读取的实时性,保证了视频的流畅性。以简单的结构、低廉的成本,容易实现的技术完成了无线视频的采集、压缩处理、数字传输和解码。附图说明图1是根据本专利技术实施例的视频解码方法的流程图。具体实施方式下文与图示本专利技术原理的附图一起提供对本专利技术一个或者多个实施例的详细描述。结合这样的实施例描述本专利技术,但是本专利技术不限于任何实施例。本专利技术的范围仅由权利要求书限定,并且本专利技术涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本专利技术的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本专利技术。本专利技术一方面提供了一种视频解码方法,采用多线程方式,优化了视频数据读取的实时性,保证了视频的流畅性。以简单的结构、低廉的成本,容易实现的技术完成了高速视频的采集、压缩处理、数字传输和解码。图1是根据本专利技术实施例的视频解码方法流程图。如图1所示,实施本专利技术的具体步骤如下:视频的采集阶段,应用程序使用统一的API函数来进行操作:1)使用只读模式打开USB摄像头设备文件,然后设置视频设备采集格式,保存相关参数。2)向驱动程序申请预定数量的帧缓冲。3)将申请到的帧缓冲映射到用户空间,用户可直接获取帧数据。4)将申请到的缓冲区保存在采集消息队列,系统返回每个缓冲区的首地址和长度,这些参数保存在结构体类型的缓冲对象中。5)当开始采集视频时,在采集到完整一帧视频后,控制缓冲从消息队列输出,用户依据地址和帧长度就可以获得采集到的视频数据。6)将帧缓冲重新入队列,实现循环采集。本专利技术中在视频编码和解码阶段,处理比特流和控制视频编解码硬件,USB摄像头采集到的图像数据格式是JPEG,需要进行格式转换,将采集的图像格式转换成YUV格式。对YUV格式的数据进行压缩以减小其传输所需要的带宽。首先进行初始化,设置视频分辨率和比特率,获得需要编码的数据地址,对数据进行MPEG编码,获得编码后的数据保存地址,编码结束,释放编码器资源。视频格式的解码同样与编码类似的过程,首先进行初始化,设置视频分辨率和比特率,获得需要解码的数据地址,对数据进行MPEG解码,获得解码后的数据保存地址,解码结束时释放解码器资源。解码后的数据格式是YUV格式,并将该YUV格式转换成RGB格式后才能在显示器上预览。通过编码将视频数据压缩后,对数据进行拆分和组帧发送,依据缓冲器大小对数据进行划分,并定长发送。划分的本文档来自技高网...
一种视频解码方法

【技术保护点】
一种视频解码方法,其特征在于,包括:在视频采集阶段使用统一的API函数,在只读模式下打开摄像头设备文件,然后设置视频设备的采集格式,保存相关参数;向驱动程序申请预定数量的帧缓冲,将申请到的帧缓冲区直接映射到用户空间,由用户直接获取帧数据,将缓冲区保存在采集消息队列,返回每个缓冲区的首地址和长度,并将首地址和长度保存在结构体类型的缓冲对象中,当开始采集视频时,在采集到完整一帧视频后,控制缓冲从消息队列输出,依据地址和帧长度获得采集到的视频数据,将帧缓冲重新入队列,实现循环采集;将采集到的JPEG图像数据进行格式转换,转换成YUV格式,对YUV格式的数据进行编码;通过编码将视频数据压缩,并对视频数据进行拆分和组帧发送,依据缓冲器大小对视频数据进行划分,并定长发送;划分的每一组视频数据加入帧头,数据大小,帧尾的标志位进行组帧;当接收到一帧数据时,通过软中断信号通知应用程序的接收线程读取,接收线程把数据保存在环形拼接缓冲区中的第一缓冲区中,所述环形拼接缓冲区由四个缓冲区组成,用于将接收到的视频数据进行缓存以等待数据处理线程获取数据来拼接,数据处理线程通过所述标志位获得视频数据,并将视频流拷贝到视频暂存区域进行数据的拼接,数据的拼接按照接收顺序和上一帧数据的大小来偏移本次保存视频的地址,当完整的接收到一帧视频数据后,将完整的数据转到环形解码缓冲区,解码线程将接收的视频数据解码并在显示器上显示,接收线程,数据处理线程和解码线程是同时运行的,而且采用信号量机制实现同步共享同一缓冲区进行数据的交互;对数据进行MPEG解码,获得解码后的数据保存地址,解码结束时释放解码器资源,将解码后的数据格式即YUV格式转换成RGB格式在显示器上预览。...

【技术特征摘要】
1.一种视频解码方法,其特征在于,包括:在视频采集阶段使用统一的API函数,在只读模式下打开摄像头设备文件,然后设置视频设备的采集格式,保存相关参数;向驱动程序申请预定数量的帧缓冲,将申请到的帧缓冲区直接映射到用户空间,由用户直接获取帧数据,将缓冲区保存在采集消息队列,返回每个缓冲区的首地址和长度,并将首地址和长度保存在结构体类型的缓冲对象中,当开始采集视频时,在采集到完整一帧视频后,控制缓冲从消息队列输出,依据地址和帧长度获得采集到的视频数据,将帧缓冲重新入队列,实现循环采集;将采集到的JPEG图像数据进行格式转换,转换成YUV格式,对YUV格式的数据进行编码;通过编码将视频数据压缩,并对视频数据进行拆分和组帧发送,依据缓冲器大小对视频数据进行划分,并定长发送;划分的每一组视频数据加入帧头,数据大小,帧尾的标志位进行组帧;当接收到一帧数据时,通过软中断信号通知应用程序的接收线程读取,接收线程把数据保存在环形拼接缓冲区中的第一缓冲区中,所述环形拼接缓冲区由四个缓冲区组成,用于将接收到的视频数据进行缓存以等待数据处理线程获取数据来拼接,数据处理线程通过所述标志位获得视频数据,并将视频流拷贝到视频暂存区域进行数据的拼接,数据的拼接按照接收顺序和上一帧数据的大小来偏移本次保存视频的地址,当完整的接收到一帧视频数据后,将完整的数据转到环形解码缓冲区,解码线程将接收的视频数据解码并在显示器上显示,接收线程,数据处理线程和解码线程是同时运行的,而且采用信号量机制实现同步共享同一缓冲区进行数据的交互;对数据进行MPEG解码,获得解码后的数据保存地址,解码结束时释放解码器资源,将解码后的数据格式即YUV格式转换成RGB格式在显示器上预览;接口参数包括控制模式,起始位停止位数量,接口的参数设置是在操作系统提供的标准接口中;在使用接口来传递二进制表示的视频数据时,关闭软件流控,将发送模式设置为非规范模式;配置好关键参数后,接口的运行环境准备就绪,可以调用写入函数将要发送的数据写入接收设备;串行数据经过调制过后送入发射机无线传输;接收机收到数据经过低噪声放大,下变频到中频,中频放大之后送入解调模块恢复出串行数据。2.根据权利要求1所述的方法,其特征在于,所述对视频数据进行编码,进一步包括:读入一组帧视频序列,对其进行奇偶分离得到...

【专利技术属性】
技术研发人员:高冬
申请(专利权)人:成都瑞博慧窗信息技术有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1