x264源码分析 -- x264_slicetype_path
来源:互联网 发布:淘宝otc药货到付款 编辑:程序博客网 时间:2024/05/17 01:02
// char best_paths[N][N]: (char *)best_paths[n]表示当总帧数=n时的最佳类型决策static void x264_slicetype_path( x264_t *h, x264_mb_analysis_t *a, x264_frame_t **frames, int length, int max_bframes, char (*best_paths)[X264_LOOKAHEAD_MAX] ){ char paths[X264_BFRAME_MAX+2][X264_LOOKAHEAD_MAX] = {{0}}; int num_paths = X264_MIN(max_bframes+1, length); // 需要决策帧类型的总帧数 (最多不能超过B帧数目的限制) int suffix_size, loc, path; int best_cost = COST_MAX; int best_path_index = 0; length = X264_MIN(length,X264_LOOKAHEAD_MAX); // 整个frames的总帧数// 只重新决策best_paths的最后num_paths个路径. 因为前面的已经不能再调整了, 已是最优. for( suffix_size = 0; suffix_size < num_paths; suffix_size++ ) { memcpy( paths[suffix_size], best_paths[length - (suffix_size + 1)], length - (suffix_size + 1) ); // 每次决策一个帧的类型时, 会重新计算所有可能的最佳路径 for( loc = 0; loc < suffix_size; loc++ ) strcat( paths[suffix_size], "B" ); // 尽量填充B帧直到最多可容忍的值(i_max_bframes) strcat( paths[suffix_size], "P" ); // 每种决策最后帧一定是个P帧 } /* Calculate the actual cost of each of the current paths */ for( path = 0; path < num_paths; path++ ) { int cost = x264_slicetype_path_cost( h, a, frames, paths[path], best_cost ); if( cost < best_cost ) { best_cost = cost; best_path_index = path; // 计算每种决策的SATD_cost. 取最佳的! } } /* Store the best path. */ memcpy( best_paths[length], paths[best_path_index], length ); // 总帧数为length时的最佳决策}
0 0
- x264源码分析 -- x264_slicetype_path
- x264源码分析
- x264源码分析
- x264 源码分析 (1)
- x264 源码分析 (2)
- x264 源码分析 (3)
- x264 源码分析 (4)
- x264 源码分析 (5)
- x264 源码分析 (6)
- X264源码分析
- x264源码分析 -- get_ref
- x264源码分析 -- x264_slicetype_mb_cost
- x264源码分析 -- frame_init_lowres_core
- x264命令行工具(x264.exe)源码整体分析
- x264源码分析三:x264_slices_write和x264_slice_write函数分析
- X264分析
- x264分析
- x264源码分析一:main函数和encode函数
- 2013年12月 那年的数据导出
- sass揭秘之@mixin,%,@function
- 二叉排序树的基本操作测试
- Uva 10617 Again Palindrome (区间DP+回文串)
- 当Webservice已经绑定了一个IP后再次修改IP时怎么设置
- x264源码分析 -- x264_slicetype_path
- 第九周项目二 分数的累加 第二种做法
- ArcGIS教程:ArcGIS栅格图像矢量配准
- Content Provider的加载
- JFrame
- 阶乘
- iOS: ARC和非ARC下使用Block属性的问题
- pig对null的处理(实际,对空文本处理为两种取值null或‘’)
- C++调用java【转】