psy-rd:Psychovisual optimization strength for RDO:在rdo中使用psy算法(一种心理视觉模型)

这是两个参数:f_psy_rd (psy rdo 强度 0-10 i_subpel_refine >= 6 才有效 )和 f_psy_trellis (/* Psy trellis strength*/)

Psy Trellis量化,可以提高细节,但是会大幅度提高码率。

x264代码中使用这个参数的地方。

解析参数:

sscanf( value, "%f:%f", &p->analyse.f_psy_rd, &p->analyse.f_psy_trellis)//默认是不开启的

使用i_psy_rd 在计算宏块的satd的时候,乘以一个系数,这个系数是通过psy_rd计算得到的。

static inline int ssd_plane( x264_t *h, int size, int p, int x, int y )

{

satd = (satd * h->mb.i_psy_rd * h->mb.i_psy_rd_lambda + 128) >> 8;

}

i_psy_rd_lambda 值得由来 ,

static void x264_mb_analyse_init_qp( x264_t *h, x264_mb_analysis_t *a, int qp )

{

a->i_lambda = x264_lambda_tab[qp];//每一个qp对应一个拉姆达乘子

h->mb.i_psy_rd_lambda = a->i_lambda;

}

/* lambda = pow(2,qp/6-2) */
const uint16_t x264_lambda_tab[QP_MAX_MAX+1] =
{
   1,   1,   1,   1,   1,   1,   1,   1, /*  0- 7 */
   1,   1,   1,   1,   1,   1,   1,   1, /*  8-15 */
   2,   2,   2,   2,   3,   3,   3,   4, /* 16-23 */
   4,   4,   5,   6,   6,   7,   8,   9, /* 24-31 */
  10,  11,  13,  14,  16,  18,  20,  23, /* 32-39 */
  25,  29,  32,  36,  40,  45,  51,  57, /* 40-47 */
  64,  72,  81,  91, 102, 114, 128, 144, /* 48-55 */
 161, 181, 203, 228, 256, 287, 323, 362, /* 56-63 */
 406, 456, 512, 575, 645, 724, 813, 912, /* 64-71 */
1024,1149,1290,1448,1625,1825,2048,2299, /* 72-79 */
2580,2896,                               /* 80-81 */

};

f_psy_trellis 的使用

参数转换为i_psy_trellis

h->mb.i_psy_trellis = h->param.analyse.i_trellis ? FIX8( h->param.analyse.f_psy_trellis / 4 ) : 0;//设置了trellis psy-rd才有效

ssd_plane()函数调用过程

x264_rd_cost_subpart()

x264_rd_cost_part()

x264_mb_analyse_p_rd()   COST_MV_RD()  x264_me_refine_qpel_rd()

x264_macroblock_analyse()

总结上面就是两条调用路线

1 模式选择 2 7运动补偿计算

x264源码分析-psy-rd参数相关推荐

  1. x264源码分析与应用示例(一)——视频编码基本流程

    本文包含以下内容 1.H.264编码流程详述与对应x264源码解析 首先简单介绍一下x264源码调试与修改的基本方法.就是基本的conifigure和make,configure命令使用最简单的就可以 ...

  2. IPVS(也叫LVS)的源码分析之persistent参数

    最近在用 LVS做 LB,发现一个问题客户端总是出现session丢失问题,采用常用配置,均衡策略使用wlc, 看了一下wlc的策略相同的客户端都有可能轮训到不同的后台机器,在后台服务器上并没有对se ...

  3. x264源码分析--bluray-compat蓝光兼容

    参数解析: OPT("bluray-compat") p->b_bluray_compat = atobool(value);//bool 类型 bluray-compat蓝 ...

  4. x264源码分析--overscan

    参数解析: OPT("overscan")         b_error |= parse_enum( value, x264_overscan_names, &p-&g ...

  5. GCC源码分析(十七) — rtl expand之后

    版权声明:本文为CSDN博主「ashimida@」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/lidan1 ...

  6. 【Linux】mjpg-streamer 源码分析

    文章目录 1.总体流程 2.主进程的源码分析 2.1 参数接收与解析 2.2 获取参数 2.3 调用输入函数 2.3.1 程序手动中断信号 2.3.2 strchr()函数 2.3.3 strndup ...

  7. Flink ParameterTool fromArgs源码分析

    一.源码路径 java/org/apache/flink/streaming/examples/socket/SocketWindowWordCount.java 二.源码 /** Licensed ...

  8. s-sgdisk源码分析 “--set-alignment=value分区对齐参数”

    文章目录 边界对齐子命令使用 源码分析 sgdisk.cc main函数入口 gptcl.cc DoOptions解析并执行具体命令函数 gpt.cc CreatePartition创建分区函数,设置 ...

  9. 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]

    目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...

最新文章

  1. 网络爬虫流程与注意事项
  2. c++ 调用 ffmpeg 编程
  3. 虚拟化系列-VMware vSphere 5.1 简介与安装
  4. myeclipse hbm2java_myeclipse试用小记----Hibernate多对一双向关联(2)
  5. 一个简洁、有趣的无限下拉方案
  6. rust面向对象_面向初学者的Rust操作员综合教程
  7. C语言试题二十三之编写一个函数void function(int tt[m][n],int pp[n]),tt指向一个m行n列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中
  8. 推荐系统学习(三)SVD奇异值分解做推荐与python代码
  9. php mysql 降_php fork太多进程导致整体性能下降,mysql down掉的解决._PHP教程
  10. Discuz搜索模块解析
  11. 在GitHub中上传本地项目
  12. 基于yolov3 v4 v5的电梯轿厢下的电动车目标检测
  13. java爬虫(爬取豆瓣电影排行榜)
  14. WIN11添加我的电脑图标等的方法
  15. 上海创蓝253董事长_从世界记忆大师到互联网百强企业CEO:创蓝253钛牛哥的传奇之路...
  16. eclipse 使用maven打包 包含非java文件时报错
  17. 6-5图-图的基本操作
  18. inspect的使用
  19. 线性回归、岭回归和Lasso回归
  20. tensorflow环境安装(及tensorflow虚拟环境中配置jupyter)

热门文章

  1. rust最美建筑_[资料整理]动物之森的美丽物语 (多图;补完)
  2. 纯前端实现—满天星效果
  3. 从零到十亿,创业企业家如何迈向成功?
  4. 通俗的集线器、交换机、路由器功能原理入门
  5. 解决“ImportError: cannot import name 'imresize'”
  6. java抠图边框颜色处理_【图】绝密!抠图去黑边的方法 抠图去黑边框的处理技巧...
  7. 怎样处理部门之间相互推诿责任
  8. vb ping 计算机名称,vb实现ping
  9. 关于京牌“以家庭为单位摇号”“京牌可以继承”的不合理性分析
  10. pytest--fixture的使用(前置、后置)