- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
x264源代码分析(H.264乐园供稿)
相关说明:1.?????使用版本:??? x264-cvs-2004-05-112.?????这次的分析基本上已经将代码中最难理解的部分做了阐释,对代码的主线也做了剖析,如果这个主线理解了,就容易设置几个区间,进行分工阅读,将各个区间击破了.3.?????需要学习的知识:a)???????编码器的工作流程.b)??????? H.264的码流结构,像x264_sps_t,x264_pps_t等参数的定义基本上都完全符合标准文档中参数集的定义,抓住主要参数,次要参数也应该有所了解.c)???????数学知识,对dct变换等与数学相关的知识的编程实现要有较好理解.d)??????? C语言的知识.涉及到c语言的较多不经常用的特性,如函数指针数组,移位运算,结构体的嵌套定义等.e)???????耐心,对h.264的复杂性要有清醒的认识.3.参考资料:a)???????新一代视频压缩编码标准-h.264/avc??毕厚杰主编,人民邮电出版社.b)??????网上的流媒体论坛,百度,google等搜索引擎.4. 阅读代码的方法:a)???????较好的方法是利用vc的调试器,如果对某个函数感兴趣,可以将断点设置在它的前面.然后采用step into,step over等方法进去该函数一步步分析.当然本身要对程序执行流程要有较清楚认识,不然不知道何时step into,何时step over.b)??????建议应该先对照标准弄清各个结构体成员的意义.源代码主要过程分析:1.???????进入x264.c中的main函数.刚开始是读取默认参数,如果你设置了参数的话会修改param的.???? i_ret = Encode( param, fin, fout );这条语句使过程进入x264.c中的Encode函数.2.???????? X.264的encode函数.A.?????? i_frame_total = 0;if( !fseek( fyuv, 0, SEEK_END ) )?????? {????????? int64_t i_size = ftell( fyuv );????????? fseek( fyuv, 0, SEEK_SET );????????? i_frame_total = i_size / ( param-i_width * param-i_height * 3 / 2 )}上面这段计算出输入文件的总帧数.B.??????? h = x264_encoder_open( param )这个函数是对不正确的参数进行修改,并对各结构体参数和cabac编码,预测等需要的参数进行初始化.C.?????? pic = x264_picture_new( h );该函数定义在\CORE\common.c中.首先分给能容纳sizeof(x264_picture_t)字节数的空间,然后进行初始化.??????这里看一下x264_picture_t和x264_frame_t的区别.前者是说明一个视频序列中每帧的特点.后者存放每帧实际的象素值.注意区分.D.?????? for( i_frame = 0, i_file = 0; i_ctrl_c == 0 ; i_frame++ )????? {????????? int?????????? i_nal;????????? x264_nal_t??? *nal;int?????????? i;/* read a frame */????????? if( fread( pic-plane[0], 1, param-i_width * param-i_height, fyuv ) = 0 ||????????????? fread( pic-plane[1], 1, param-i_width * param-i_height / 4, fyuv ) = 0 ||????????????? fread( pic-plane[2], 1, param-i_width * param-i_height / 4, fyuv ) = 0 )????????? {????????????? break;????????? }????? //文件位置指示器自己变化了.????????? if( x264_encoder_encode( h, nal, i_nal, pic ) 0 )????????? {????????????? fprintf( st
您可能关注的文档
最近下载
- 陕西安信显像管循环处理应用有限公司.pdf VIP
- 2025年天津职业技术师范大学单招职业适应性考试必刷测试卷附答案.docx VIP
- 铅锌尾矿综合利用项目可行性研究报告.docx
- 建设工程施工项目每日“防高坠三检”检查记录表.docx VIP
- 《建筑施工高处坠落防治安全技术标准》.pptx VIP
- 天津职业技术师范大学单招物理试题答案2025 .pdf VIP
- 2025数智采购供应链发展报告-亿邦智库&中国物流与采购联合会-2025.pdf
- EPLAN Electric P8软件技能培训课件.ppt VIP
- 食堂消防安全知识培训课件.pptx VIP
- 热电运行部01炉内升降平台及脚手架搭设、拆除施工方案.doc VIP
文档评论(0)