- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mpeg4解码程序框架
解码程序流程:1、初始化解码所需资源。例如:设置输入文件、输出文件,代表解码所需各缓冲区大小的结构DEC_MEM_REQS及其中各对象所占空间大小的分配,缓冲区结构DEC_BUFFERS中对象初始化,解码所需变量的结构DEC_PARAM中各对象的初始化,解码所需资源初始化decore_init()如:MP4_STATE、MP4_TABLES、MP4_STREAM以及MP4_STATE结构中部分代表VOL、VOP头标志的对象的初始化,设置关于图像尺寸的全局变量decore_alloc(),设置YUV格式decore_setoutput()等。2、开始计时startTimer() 。3、代表解码帧的结构DEC_FRAME中对象void *bitstream,void *bmp,long length,int render_flag的初始化。4、取得视频对象层头标志,getvolhdr()。5、取得视频对象平面组头标志,getgophdr()。6、取得视频对象平面头标志,getvophdr()。7、得到Mpeg4图像,get_mp4picture()。8、停止计时,stopTimer()。9、显示解码所用时间、帧数,帧率。displayTimer()。
get_mp4picture()
1)if((.mba mba_size) (nextbits_bytealigned(23) != 0)) ,处理每个宏块macroblock()。
2)为解码的帧增加边。make_edge()
3)为重排帧序而管理帧的缓冲postprocess( )。
4)RGB转换为YUV convert_yuv()。
5)储存YUV到输出文件store_yuv( )。
6)交换当前帧和参考帧位置。
Macroblock()
根据 prediction_type标志判断此帧是否为I帧,不是I帧的话,根据.not_coded判断此宏块是否被编码,即这个宏块有没有进一步的数据包含在码流中。
处理I帧或被编码的宏块
判断宏块类型derived_mb_type,以便后面运动解码和纹理解码使用;
假设宏块类型为1或4,设置量化值quantizer,量化允许值在[1,31]之间;
宏块类型为0或1,求出四个相同的运动向量setMV(-1);
宏块类型为2,求出四个不同运动向量。 for (j = 0; j 4; j++) setMV(j);
如果宏块类型为3,且此帧为P帧时,将运动向量设为0;
如果帧间编码,进行运动补偿reconstruct( ), recon_comp()和纹理解码blockInter(),addblockInter();
如果帧内编码,只进行纹理解码 blockInter(),addblockInter();
处理没有被编码的宏块
置运动向量为0
运动补偿reconstruct( ), recon_comp()
(4) 将量化值quantizer存入量化值表quant_store[mb_ypos+1][ mb_xpos+1]
(5)移动宏块坐标mb_xpos、mb_ypos,定位下一个宏块。
求运动向量setMV()
定义相关变量,hor_mv_data,、ver_mv_data、 hor_mv_res、 ver_mv_res,scale_fac、high、low、range ,并初始化scale_fac、high、low、range,定义差分运动向量 mvd_x,、mvd_y,、运动向量预测值pmv_x,、pmv_y, 解码运动向量mv_x、 mv_y;
根据运动向量表MVtab0[]、MVtab1[]、MVtab2[],通过函数getMVdata(),从码流中获得水平运动向量数据hor_mv_data;
从码流中恢复参数hor_mv_res,根据参数hor_mv_data、scale_fac和hor_mv_res,计算出水平差分运动向量mvd_x;
根据运动向量表,通过函数getMVdata(),从码流中获得垂直运动向量数据ver_mv_data;
从码流中恢复参数ver_mv_res,根据变量ver_mv_data、scale_fac和ver_mv_res、计算出垂直差分运动向量mvd_y;
通过函数find_pmv( ),计算出运动向量预测值pmv_x,、pmv_y;
计算解码水平运动向量mv_x= pmv_x + mvd_x,限制mv_x在范围[low:high]内;
计算解码垂直运动向量mv_y= pmv_y + mvd_y,限制mv_y在范围[low:high]内;
把计算出的运动向量mv_x、mv_y分别存入运动向量的四维数组MV[0][i][mb_ypos+1][ mb_xpos+1], MV[1][i][mb_ypos+1][
您可能关注的文档
- 11西亚和北非.ppt
- C15用户手册.pdf
- ppt模板绿色.pdf
- QP006资源的管理程序.doc
- 中考复习三分式与分式方程.doc
- 运营管理基础期末复习重点范围.pdf
- 11-12读书周活动方案.doc
- 电大本科计算题复习.ppt
- 高二物理小套题.doc
- 3.1认识氧气【精】.ppt
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
最近下载
- 通用学术英语进阶(北京科技大学)中国大学MOOC(慕课)章节测验试题(答案).pdf
- 最新部编版语文期末复习三年级非连续性文本阅读(附参考答案).docx
- 政务服务中心软硬件项目运维服务方案2.doc VIP
- 火力发电厂直接空冷工程技术规范初稿.doc
- 2024年河北省继续医学教育公共选修课参考答案.pdf VIP
- 老友记台词剧本第一季第1集中英双语左右对照.pdf
- 2024-2025学年广东省广州市省实教育集团初三数学试题第一次模拟考试试题含解析.doc VIP
- 【国家标准】国家职业技能标准 (2019年版) 起重装卸机械操作工.pdf
- 肺结核诊疗方案毕业设计.docx
- 2024年广东省职业院校技能大赛(中职组)智慧物流作业赛项考试题库(含答案).docx VIP
文档评论(0)