当前位置: 首页 > news >正文

东莞门户网站建设报价表flash网站模板中心

东莞门户网站建设报价表,flash网站模板中心,响应式个人网站模板,定制品牌排行榜前十名Outline: 1、 CFG文件中有关多参考帧的相关选项 2、 多参考帧涉及到的数据结构和全局变量 3、 保存重建图像为参考帧 4、 编码一帧前#xff0c;设置参考帧列表 5、 多参考帧的使用#xff08;即参考帧的选择策略问题#xff09; 6、 遗留问题 1、CFG文件中有关多参考…Outline: 1、 CFG文件中有关多参考帧的相关选项 2、 多参考帧涉及到的数据结构和全局变量 3、 保存重建图像为参考帧 4、 编码一帧前设置参考帧列表 5、 多参考帧的使用即参考帧的选择策略问题 6、 遗留问题 1、CFG文件中有关多参考帧的相关选项 ############################################################################### #Encoder Control ############################################################################### … NumberReferenceFrames 10 # Number of previous frames used for inter motion search (1-16) 解释: a、 首先通过Configure()转换成input-num_reference_frames b、 input-num_reference_frames再通过parset.c文件中的IdentifyNumRefFrames()返回给同一文件的FillParameterSetStructures()中的sps-num_ref_frames。 c、 FillParameterSetStructures()其实被parset.c文件中的GenerateParameterSets()函数调用所以sps又被赋给了active_spsactive_sps是全局变量。 d、 active_sps-num_ref_frames又会在lencod.c中的init_img()函数中被赋给img-num_reference_frames。 PList0References      0 # P slice List 0 reference override (0 disable, N NumberReferenceFrames) 解释: 用于限制LIST0中参考帧的数目 … ############################################################################### # B Frames ############################################################################### … BList0References      0 # B slice List 0 reference override (0 disable, N NumberReferenceFrames) BList1References      0 # B slice List 1 reference override (0 disable, N NumberReferenceFrames) … 2、 多参考帧涉及到的数据结构和全局变量 a、 概要 多参考帧相关的重要的数据结构都在mbuffer.h文件中。 其中重要的数据结构有StorblePicture, FrameStore, DecodedPictureBuffer 重要的全局变量有 extern DecodedPictureBuffer dpb; extern StorablePicture **listX[6]; extern int listXsize[6]; b、 各数据结构的作用和相互之间的关系 StorblePicture存放的是一帧帧方式或场方式的重建图像 FrameStore嵌套了StorblePicture同时增加了一些标志信息如是否已输出到文件等所以它可以用于通用的表示一帧的数据结构不分场或帧 DecodedPictureBuffer又嵌套了FrameStore它用于保存所有的重建图像应该保存的其中设置很多辅助的参数如used_size用来表示已经保存的重建图像数。 c、 各全局变量的作用 dpb的作用从上面对DecodedPictureBuffer的解释中已经可以看出是用来存储所有的重建图像。值的提醒的是它可能保存了非参考帧重建图像。 listX[6]该变量的作用是用来在每次编码一帧图像时将所要用到的参考帧保存在其中。但真正所要用到的参考帧图像数据是指向到dpb对应的结构元素中。 对于P帧只要用到listX[0]。 对于B帧要用到listX[0]listX[1] 对于Mbaff的编码方式可能还会用到listX[2-5]。 3、   保存重建图像为参考帧 所用到的函数是void store_picture_in_dpb(StorablePicture* p)mbuffer.c 该函数在image.c的encode_one_frame()的后段被调要到。 其中重要的程序段如下 // first try to remove unused frames 当缓冲已满时 if (dpb.used_sizedpb.size) { remove_unused_frame_from_dpb();//只删除一帧。这种策略是否有效呢怀疑 } // then output frames until one can be removed while (dpb.used_sizedpb.size) {     // non-reference frames may be output directly if (!p-used_for_reference) //如果当前帧不作为参卡帧可以直接输出到重建序列文件     {         get_smallest_poc(poc, pos); if ((-1pos) || (p-poc poc)) { direct_output(p, p_dec); return        }     }     // flush a frame     output_one_frame_from_dpb();//输出一帧到文件 } … insert_picture_in_dpb(dpb.fs[dpb.used_size],p); //将当前解码帧插入到dpb尾部 4、 编码一帧前设置参考帧列表 所用到的函数是init_lists(), mbuffer.c 该函数在image.c中的code_a_picture()的开始部分被调用到。 其中重要的程序段如下只举例分析帧模式的情况 … //将dpb中参考帧写入ListX中去 if ((currSliceType I_SLICE)||(currSliceType SI_SLICE)) {    listXsize[0] 0;     listXsize[1] 0;     return; } if ((currSliceType P_SLICE)||(currSliceType SP_SLICE)) {     // Calculate FrameNumWrap and PicNum     if (currPicStructure FRAME)     {         for (i0; idpb.ref_frames_in_buffer; i)         {             if (dpb.fs_ref[i]-is_used3)             {                 if ((dpb.fs_ref[i]-frame-used_for_reference)(!dpb.fs_ref[i]-frame-is_long_term))                 {                     listX[0][list0idx] dpb.fs_ref[i]-frame;                 }             }         }         // order list 0 by PicNum         qsort((void *)listX[0], list0idx, sizeof(StorablePicture*), compare_pic_by_pic_num_desc);         listXsize[0] list0idx; … } else//B_SLICE {     … }5、 多参考帧的使用即参考帧的选择策略问题 所用到的函数是PartitionMotionSearch(), mv_search.c 该函数的作用是对各种尺寸的宏块或亚宏块寻找匹配块。 其中涉及到多参考帧的程序段如下 // LOOP OVER REFERENCE FRAMES for (list0; listnumlists;list) {     for (ref0; ref listXsize[listlist_offset]; ref)//list_offset和场模式有关 { … NOTE:从上面的程序可以看出JM8.5对多参考帧的选择是采用的是一种完全遍历的方式所以其计算复杂度会很高。 6、 遗留问题 a、 在init_lists()对于ListX[0]和ListX[1]中参考帧数相同时会采用一种交换机制不知其目的如何 b、 dpb的参考帧有short_term或long_term这样的属性这属性会影响多参考帧机制的整个过程但不知其具体作用和原理 本文来自CSDN博客转载请标明出处http://blog.csdn.net/zhoujunming/archive/2008/07/31/2747316.aspx PartitionMotionSearch()函数宏块分割 encode_one_macroblock()函数中的运动估计分为两大块对于宏块级的三种模式分块后直接对patition依次调用PartitionMotionSearch()函数而对于亚宏块级的含8x8, 8x4,4x8,4x4模式首先将宏块拆分为4个8×8子宏块针对每个8×8子宏块调用PartitionMotionSearch()函数。 voidPartitionMotionSearch (int    blocktype, //块模式                   int    block8x8, //当前partition在宏块的序号                   double lambda)   // λ{static int bx0[5][4] {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,2,0,2}};static int by0[5][4] {{0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,0,0,0}, {0,0,2,2}}; //参见注释[1]int   **ref_array, ***mv_array; //参考帧列表和运动向量列表int   parttype (blocktype4?blocktype:4);int   step_h0   (input-blc_size[ parttype][0]2); int   step_v0   (input-blc_size[ parttype][1]2); //partition的尺寸用于决定block的边界对非P8×8模式无意义。int   step_h    (input-blc_size[blocktype][0]2); //子块的尺寸int   step_v    (input-blc_size[blocktype][1]2);int   v, h; // BlockMotionSearch()函数要处理的子块在当前宏块中的相对块坐标//以上尺寸全部以4×4block为单位 numlistsbslice?2:1;for (list0; list{for (ref0; ref listXsize[listlist_offset]; ref){ref_array enc_picture-ref_idx[list];    mv_array enc_picture-mv[list];//遍历partition中的每一个for (vby0[parttype][block8x8]; v        {          pic_block_y img-block_y v;// 当前子块在图像中的块坐标当前宏块的块坐标当前子块在宏块中的相对块坐标          for (hbx0[parttype][block8x8]; h          {            pic_block_x img-block_x h; // 当前子块在图像中的块坐标当前宏块的块坐标当前子块在宏块中的相对块坐标            mcost BlockMotionSearch (ref, list, h2, v2, blocktype, search_range, lambda); //对当前子块作运动向量搜索            motion_cost[blocktype][list][ref][block8x8] mcost; //保存代价值                      for (j0; j             for (i0; i             {         mv_array [pic_block_xi][pic_block_yj][0] img-all_mv[h][v][list][ref][blocktype][0];         mv_array [pic_block_xi][pic_block_yj][1] img-all_mv[h][v][list][ref][blocktype][1];//以4×4block为单位保存运动向量         ref_array [pic_block_xi][pic_block_yj]    ref;//保存参考帧序号             }          }       }    }}}[1] static int bx0[5][4] {{0,0,0,0}, {0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,2,0,2}};    static int by0[5][4] {{0,0,0,0}, {0,0,0,0}, {0,2,0,0}, {0,0,0,0}, {0,0,2,2}}; 这里的bx0, by0两个数组分别对应了SKIP模式16×1616×88×16P8×8这四种模式的横坐标和纵坐标。举两个例子如图所示的16×16宏块首先划分为4个8×8子块因为PartitionMotionSearch()函数处理的最小块的尺寸为8×8以4×4block为单位设定坐标图上已标出4个8×8子块左上角的块坐标。SKIP模式实际上并不牵涉到这个函数因此坐标全部置零16×16模式只有第一个坐标起作用后三个置零16×8只有前两个有意义标出两个partition的左上角坐标如图标出了(0,0),(0,2)对照bx0, by0可以看到相应坐标值最多子块情况为4个8×8即最后一组坐标。 本文来自CSDN博客转载请标明出处http://blog.csdn.net/zhoujunming/archive/2008/09/11/2915084.aspx
http://www.pierceye.com/news/588644/

相关文章:

  • 怎么做免费网站如何让百度收录网网站建设设计
  • 河北建设工程信息网官方网站证件在线制作免费
  • 推广网官方推广网站wordpress用户角色权限
  • 电子商务网站模板html淘宝网页版登录
  • 忆达城市建设游戏网站佛山市和城乡建设局网站
  • 备案后的域名改网站名青浦建设机械网站
  • 网站地图怎么做html网络营销论文2000字
  • 武进区城乡建设局网站组建网站建设团队
  • 做淘宝链接模板网站广安网站建设兼职
  • 受欢迎的网站建设平台有用的网站地址
  • 网站建设推广岗位网站建设法规
  • ftp两个网站子域名的绑定郑州网站推广公司
  • 安庆网站设计哈尔滨工程招标信息网
  • 精湛的佛山网站设计太原网站建设培训
  • 邹城市住房和建设局网站深圳比较好的vi设计公司
  • 企业网站建设维护方案一元购物网站怎么做
  • 网站建设优化公司哪家好兰州做网站公司es5188
  • jsp网站开发工资住建网查询
  • 长沙建网站需要多少钱夹江移动网站建设
  • 淄博网站制作高端网站后台任务
  • 营销型网站源码成都网站建设seo
  • 天津网上商城网站建设专业的猎头公司
  • 西平县住房城乡建设局网站西部数码网站管理助手3.0
  • 承德市网站建设WordPress电影资源分享下载站
  • 专注于网络推广及网站建设wordpress离线发布功能
  • 营销型网站案例提高wordpress打开速度
  • 怎么样做一个网站自己个人网站后台怎么做
  • 源码站免费找客户网站
  • idc空间商网站源码知名的网站建设
  • 什么叫网站降权建设网站租服务器