项目展示分类
MATLAB算法仿真 SIMULINK仿真 FPGA工程开发 机器学习 视觉识别系统 网络开发 通信/信号处理 语音智能处理 新算法预研 信息论/编码译码 人工智能 其他项目

微信:HuangL1121
Q Q:1224848052
团队:嘉兴麦特莱博软件开发工作室
地址:嘉兴港区
 
视觉识别系统
基于FPGA的MPEG2视频解码系统设计|FPGA代做|MATLAB代做
来源:本站    日期:2018/3/21    浏览量:24541  

功能描述:

MPEG-2系统是将视频、音频及其它数据基本流组合成一个或多个适宜于存储或传输的数据流的规范,如图1所示。符合ITU-R. 601标准的、帧次序为I1B2B3P4B5B6P7B8B9I10数字视频数据和符合AES/EBU标准的数字音频数据分别通过图像编码和声音编码之后,生成次序为I1P4B2B3 P7B5B6I10 B8B9视频基本流(ES)和音频ES。在视频ES中还要加入一个时间基准,即加入从视频信号中取出的27MHz时钟。然后,再分别通过各自的数据包形成器,将相应的ES打包成打包基本流(PES)包,并由PES包构成PES。最后,节目复用器和传输复用器分别将视频PES和音频PES组合成相应的节目流(PS)包和传输流(TS)包,并由PS包构成PS和由TS包构成TS。显然,不允许直接传输PES,只允许传输PS和TS;PES只是PS转换为TS或TS转换为PS的中间步骤或桥梁,是MPEG数据流互换的逻辑结构,本身不能参与交换和互操作。


将MPEG-2压缩编码的视频基本流(ES-Elementary Stream)数据分组为包长度可变的数据包,称为打包基本流(PES- Packetized Elementary Stream)。广而言之,PES为打包了的专用视频、音频、数据、同步、识别信息数据通道。所谓ES,是指只包含1个信源编码器的数据流。即ES是编码的视频数据流,或编码的音频数据流,或其它编码数据流的统称。每个ES都由若干个存取单元(AU-Access Unit)组成,每个视频AU或音频AU都是由头部和编码数据两部分组成的。将帧顺序为I1P4B2B3P7B5B6 的编码ES,通过打包,就将ES变成仅含有1种性质ES的PES包,如仅含视频ES的PES包,仅含音频ES的PES包,仅含其它ES的PES包。PES包的组成见图2。

由图2可见,1个PES包是由包头、ES特有信息和包数据3个部分组成。由于包头和ES特有信息二者可合成1个数据头,所以可认为1个PES包是由数据头和包数据(有效载荷)两个部分组成的。

包头由起始码前缀、数据流识别及PES包长信息3部分构成。包起始码前缀是用23个连续“0”和1个“1”构成的,用于表示有用信息种类的数据流识别,是1个8 bit的整数。由二者合成1个专用的包起始码,可用于识别数据包所属数据流(视频,音频,或其它)的性质及序号。例如:

比特序1 1 0 ×××××是号码为××××的MPEG-2音频数据流;
比特序1 1 1 0 ××××是号码为××××的MPEG-2视频数据流。

PES包长用于包长识别,表明在此字段后的字节数。如,PES包长识别为2 B ,即2×8 = 16 bit字宽,包总长为216-1=65535 B,分给数据头9 B(包头6 B + ES特有信息3 B ),可变长度的包数据最大容量为65526 B。尽管PES包最大长度可达(216 -1)=65535 B(Byte),但在通常的情况下是组成ES的若干个AU中的由头部和编码数据两部分组成的1个AU长度。1个AU相当于编码的1幅视频图像或1个音频帧,参见图2右上角从ES到PES的示意图。也可以说,每个AU实际上是编码数据流的显示单元,即相当于解码的1幅视频图像或1个音频帧的取样。

ES特有信息是由PES包头识别标志、PES包头长信息、信息区和用于调整信息区可变包长的填充字节4部分组成的PES包控制信息。其中,PES包头识别标志由12个部分组成:PES加扰控制信息、PES优先级别指示、数据适配定位指示符、有否版权指示、原版或拷贝指示、有否显示时间标记(PTS-Presentation Time Stamp)/解码时间标记(DTS-Decode Time Stamp)标志、PES包头有否基本流时钟基准(ESCR-Elementary Stream Clock Reference)信息标志、PES包头有否基本流速率信息标志、有否数字存储媒体(DSM)特技方式信息标志、有否附加的拷贝信息标志、PES包头有否循环冗余校验(CRC-Cyclic Redundancy Check)信息标志、有否PES扩展标志。有扩展标志,表明还存在其它信息。如,在有传输误码时,通过数据包计数器,使接收端能以准确的数据恢复数据流,或借助计数器状态,识别出传输时是否有数据包丢失。

运动补偿是一种大量、单调的运算。为了能实现运动补偿,采用了多级、多个运算单元并行流水运算的方式:



运动补偿模块的控制很复杂。实际设计时将它分成几个子模块:补偿控制、补偿地址产生、差分数据提供以及补偿运算。这几个子模块直接采用硬件逻辑设计。其中补偿控制是完成整个运动补偿的控制,提供输入控制信号、输出控制信号、缓存控制信号、预测数据和差分数据等;补偿地址产生用于生成预测数据在帧缓存中的地址及补偿结果的写地址;差分数据负责接收IDCT的结果,通过缓存在适当时机提供补偿使用;补偿运算则完成最终预测数据的计算。


   上一篇: 基于FPGA的GPS信号收发装置设计|FPGA代做    下一篇:    
   相关阅读
· 基于FPGA的高精度DDS设计和测试 2022/9/30
· MATLAB代做-217维特比译码的FPGA实现 2021/2/11
· MATLAB代做-高精度物体轮廓提取算法 2020/2/16
· 正式承接人工智能相关项目课题以及各类研究型科研任务 2019/12/20
· MATLAB代做-基于深度卷积神经网络的图像去噪方法 2019/10/30
· MATLAB代做-高密度人员检测算法的仿真 2019/8/29
· matlab专业代做★深度学习-人工智能在自动驾驶中的应 2019/8/17
· MATLAB代做|FPGA代做-FPGA击败GPU和GP 2019/8/3
· FPGA代做|MATLAB代做★【转】OPEN AI L 2019/7/28
· matlab专业代做★【转】仿生蚂蚁机器人面世,分工协力 2019/7/13
Copyright 2017-2024 © 嘉兴麦特莱博软件开发工作室
  • 网站备案号:浙ICP备18008591号-1