x264_param_default

void    x264_param_default( x264_param_t *param )

{

    /* 开辟内存空间*/

    memset( param, 0, sizeof( x264_param_t ) );     

 

    /* CPU自动检测 */

    param->cpu = x264_cpu_detect();

    param->i_threads = X264_THREADS_AUTO; /* 并行编码线程为0 */

    param->b_deterministic = 1; /*允许非确定性时线程优化*/

    param->i_sync_lookahead = X264_SYNC_LOOKAHEAD_AUTO;/* 自动选择线程超前缓冲大小-1 */

 

    /* 视频属性 */

    param->i_csp           = X264_CSP_I420; /*设置输入的视频采样的格式0x0001yuv 4:2:0 planar*/

    param->i_width         = 0; /* 宽度*/

    param->i_height        = 0; /* 高度*/

    param->vui.i_sar_width = 0;

    param->vui.i_sar_height= 0; /* 设置长宽比 */

    param->vui.i_overscan  = 0;  /* 过扫描线,默认undef(不设置),可选:show(观看)crop(去除) */

    param->vui.i_vidformat = 5;  /* undef视频格式 */

    param->vui.b_fullrange = 0;  /* off */

    param->vui.i_colorprim = 2;  /* undef原始色度格式*/

    param->vui.i_transfer  = 2;  /* undef 转换方式*/

    param->vui.i_colmatrix = 2;  /* undef 色度矩阵设置*/

    param->vui.i_chroma_loc= 0;  /* left center 色度样本指定,范围0~5,默认0*/

    param->i_fps_num       = 25; /*帧率*/

    param->i_fps_den       = 1; /*用两个整型的数的比值,来表示帧率*/

    param->i_level_idc     = -1; /* level值的设置*/

    param->i_slice_max_size = 0; /* 每片字节的最大数,包括预计的NAL开销. */

    param->i_slice_max_mbs = 0; /* 每片宏块的最大数,重写 i_slice_count */

    param->i_slice_count = 0; /* 每帧的像条数目: 设置矩形像条. */

 

    /* 编码参数 */

    param->i_frame_reference = 3; /*参考帧的最大帧数。*/

    param->i_keyint_max = 250; /* 在此间隔设置IDR关键帧 */

    param->i_keyint_min = 25; /* 场景切换少于次值编码位I, 而不是 IDR. */

    param->i_bframe = 3; /*两个参考帧之间的B帧数目*/

    param->i_scenecut_threshold = 40; /*如何积极地插入额外的I帧 */

    param->i_bframe_adaptive = X264_B_ADAPT_FAST; /*自适应B帧判定1*/

    param->i_bframe_bias = 0; /*控制插入B帧判定,范围-100~+100,越高越容易插入B帧*/

    param->b_bframe_pyramid = 0; /*允许部分B为参考帧 */

 

    param->b_deblocking_filter = 1; /*去块效应相关*/

    param->i_deblocking_filter_alphac0 = 0; /* [-6, 6] -6 亮度滤波器, 6 强 */

    param->i_deblocking_filter_beta = 0; /* [-6, 6]  同上 */

 

    param->b_cabac = 1; /*cabac的开关*/

    param->i_cabac_init_idc = 0;

  

/*码率控制*/

    param->rc.i_rc_method = X264_RC_CRF;;/*恒定码率*/

    param->rc.i_bitrate = 0;/*设置平均码率大小*/

    param->rc.f_rate_tolerance = 1.0;

    param->rc.i_vbv_max_bitrate = 0; /*平均码率模式下,最大瞬时码率,默认0(与-B设置相同) */

    param->rc.i_vbv_buffer_size = 0; /*码率控制缓冲区的大小,单位kbit,默认0 */

    param->rc.f_vbv_buffer_init = 0.9; /* <=1: fraction of buffer_size. >1: kbit码率控制缓冲区数据保留的最大数据量与缓冲区大小之比,范围0~1.0,默认0.9*/

    param->rc.i_qp_constant = 23;;/*最小qp值*/

    param->rc.f_rf_constant = 23;

    param->rc.i_qp_min = 10; /*允许的最小量化值 */

    param->rc.i_qp_max = 51; /*允许的最大量化值*/

    param->rc.i_qp_step = 4; /*帧间最大量化步长 */

    param->rc.f_ip_factor = 1.4;

    param->rc.f_pb_factor = 1.3;

    param->rc.i_aq_mode = X264_AQ_VARIANCE; /* psy adaptive QP. (X264_AQ_*) *//通过减少色度量化偏移量的方法来提高亮度的总体质量。adaptive QP.

    param->rc.f_aq_strength = 1.0;

    param->rc.i_lookahead = 40;

 

    param->rc.b_stat_write = 0; /* Enable stat writing in psz_stat_out */

    param->rc.psz_stat_out = "x264_2pass.log";

    param->rc.b_stat_read = 0;

    param->rc.psz_stat_in = "x264_2pass.log";

param->rc.f_qcompress = 0.6; /* 0.0 => cbr, 1.0 => constant qp */  

 param->rc.f_qblur = 0.5;   /*时间上模糊量化 */

    param->rc.f_complexity_blur = 20; /* 时间上模糊复杂性 */

    param->rc.i_zones = 0; /* number of zone_t's */

    param->rc.b_mb_tree = 1; /* Macroblock-tree ratecontrol. */

 

    /* 日志 */

    param->pf_log = x264_log_default;

    param->p_log_private = NULL;

    param->i_log_level = X264_LOG_INFO;/*默认为“Info”*/

 

    /*分析 */

    param->analyse.intra = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8;

    param->analyse.inter = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8

                         | X264_ANALYSE_PSUB16x16 | X264_ANALYSE_BSUB16x16;

    param->analyse.i_direct_mv_pred = X264_DIRECT_PRED_SPATIAL;/*空间预测模式*/

    param->analyse.i_me_method = X264_ME_HEX;/*运动估计算法HEX*/

    param->analyse.f_psy_rd = 1.0;

    param->analyse.b_psy = 1;

    param->analyse.f_psy_trellis = 0;

    param->analyse.i_me_range = 16;/*运动估计范围*/

    param->analyse.i_subpel_refine = 7; /* 亚像素运动估计质量 */

    param->analyse.b_mixed_references = 1; /*允许每个宏块的分区在P帧有它自己的参考号*/

    param->analyse.b_chroma_me = 1; /* 亚像素色度运动估计和P帧的模式选择 */

    param->analyse.i_mv_range_thread = -1; /* 线程之间的最小空间. -1 = auto, based on number of threads. */

    param->analyse.i_mv_range = -1; /*运动矢量最大长度set from level_idc*/

    param->analyse.i_chroma_qp_offset = 0; /*色度量化步长偏移量 */

    param->analyse.b_fast_pskip = 1; /*快速P帧跳过检测*/

    param->analyse.b_weighted_bipred = 1; /*为b帧隐式加权 */

    param->analyse.b_dct_decimate = 1; /* 在P-frames转换参数域 */

    param->analyse.b_transform_8x8 = 1; /* 帧间分区*/

    param->analyse.i_trellis = 1; /* Trellis量化,对每个8x8的块寻找合适的量化值,需要CABAC,默认0 0:关闭1:只在最后编码时使用2:一直使用*/

    param->analyse.i_luma_deadzone[0] = 21; /*帧间亮度量化中使用的无效区大小*/

    param->analyse.i_luma_deadzone[1] = 11; /*帧内亮度量化中使用的无效区大小*/

    param->analyse.b_psnr = 0;/*是否显示PSNR*/

    param->analyse.b_ssim = 0;/*是否显示SSIM*/

 

/*量化*/

    param->i_cqm_preset = X264_CQM_FLAT; /*自定义量化矩阵(CQM),初始化量化模式为flat 0*/

    memset( param->cqm_4iy, 16, 16 );

    memset( param->cqm_4ic, 16, 16 );

    memset( param->cqm_4py, 16, 16 );

    memset( param->cqm_4pc, 16, 16 );

    memset( param->cqm_8iy, 16, 64 );

    memset( param->cqm_8py, 16, 64 );/*开辟空间*/

    /*muxing*/

    param->b_repeat_headers = 1; /* 在每个关键帧前放置SPS/PPS*/

param->b_aud = 0; /*生成访问单元分隔符*/

}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL基础原创笔记(一)

对表的增删改操作&#xff1a; 创建表&#xff1a; create table student ( id int primary key auto_increment, name varchar(10) character set utf8 not null, sex char(2) default ‘M’, constraint fk_student_score foreign key(id) references score(id)…

C# 修改项目文件夹名称完全版

目录步骤1、打开项目&#xff0c;修改文件名称2、更改命名空间名称3、在解决方案中用txt1000替换所有test5004、使用记事本打开项目文件&#xff08;.sln文件&#xff09;修改路径5、更改项目文件夹名称6、删除之前的残留文件7、大功告成&#xff01;&#xff01;&#xff01;&…

js中遍历注册事件时索引怎么获取

注意&#xff1a;这种写法&#xff0c;是有问题的。注册事件是在页面加载完毕以后就完成了&#xff0c;但此时并没有触发事件。事件触发是由用户在页面上点击时才会触发&#xff0c;所以说当用户点击时&#xff0c;才会执行事件处理函数&#xff0c;那么此时的i已经变成了4&…

spring 优点

spring 的优点&#xff1f;1.降低了组件之间的耦合性 &#xff0c;实现了软件各层之间的解耦 2.可以使用容易提供的众多服务&#xff0c;如事务管理&#xff0c;消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术&#xff0c;利用它很容易实现如权限拦截&#xff0c;运行…

模式对话框与非模式对话框的区别

&#xfeff;&#xfeff;模式对话框就是不处理它就没法处理父窗口,而非模式对话框就是不用先处理此对话框也可以处理父窗口.例子:在桌面上右击我的电脑,选择属性,弹出系统属性窗口,点击下面的技术支持,弹出技术支持信息,现在再对系统属性窗口进行操作就操作不了,这种叫做模式对…

FFMpeg框架代码阅读

简介FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统&#xff0c;但是可以在大多数操作系统中编译和使用。FFmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码&#xff0c;AVI、MPEG、OGG、Matroska、ASF等90…

C#DotNetBar TabControl将水平标签设置成竖直

小哥哥小姐姐觉得有用点个赞呗&#xff01; 首先选中整个TabControl控件 更改属性&#xff1a; 完成

WCF调试异常信息:ServiceHost 仅支持类服务类型

“/CommonHelpServices”应用程序中的server错误。ServiceHost 仅支持类服务类型。说明: 运行当前 Web 请求期间&#xff0c;出现未经处理的异常。请检查堆栈跟踪信息&#xff0c;以了解有关该错误以及代码中导致错误的出处的具体信息。异常具体信息: System.ArgumentException…

使用 Drone 构建 Coding 项目

2019独角兽企业重金招聘Python工程师标准>>> 使用 Drone 构建 Coding 项目 Drone 是一个轻量级的持续集成工具。它具备许多现代持续集成工具的特性&#xff1a;轻巧&#xff08;Docker 镜像不到 10M&#xff09;、部署方便&#xff08;docker-compose 一键部署&…

C++类的构造函数 后单冒号加基类 例如:CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) 比如两个类 class A{A(int *x);...}class B : public A{B(int *x);...}然后B在构造的时候 B::B(int *x) : A(x){...}B是A的子类&#xff0c;B类对象在构造过程中必须先构造出一个A类对象&#xff0c;而A类的构造函数需要一…

C#InI文件读写剖析

C#InI文件读写剖析 1.读取ini文件 StringBuilder stringBuilder new StringBuilder();GetPrivateProfileString(section, key, "err", stringBuilder, 1024, filePath);para_value stringBuilder.ToString();GetPrivateProfileString( LPCTSTR lpAppName, //配置文…

bzoj1385: [Baltic2000]Division expression

欧几里得算法。可以发现规律&#xff0c;a[2]作为分母&#xff0c;其他作为分子&#xff0c;必定是最好的选择。判断是否为整数即可。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define rep(…

成员变量 局部变量 类变量

成员变量和局部变量的区别 成员变量&#xff1a; 1、成员变量定义在类中&#xff0c;在整个类中都可以被访问。 2、成员变量随着对象的建立而建立&#xff0c;随着对象的消失而消失&#xff0c;存在于对象所在的堆内存中。 3、成员变量有默认初始化值。 局部变量&#xff1a; 1…

从DevOps到Cloud Native,应用上云姿势全解锁

本文由网易云 发布作者&#xff1a;林帆序文伴随着IaaS、PaaS等云端基础设施技术的成熟&#xff0c;“应用上云”成为许多企业软件部门的心头大事。通过把传统软件系统搬到云上&#xff0c;一方面可以让业务方获得更多的资源灵活性&#xff0c;另一方面也可以缓解运营方的成本压…

foreach

foreach 遍历数组内每个元素&#xff0c;迭代一次执行一次循环语句。 相当于增前后的for循环

深入理解C++对象模型-对象的内存布局,vptr,vtable

vtpr的位置: 为了支持多态,C引入了vtpr和vtable这两个概念.对于每个有虚函数的类,C都会为其生成一个vtable,并在类中添加一个隐含的数据成员vptr. 对于vptr在对象中的位置,跟类的数据成员的布局一样,C标准里面并没有做出任何的规定.但是对于特定的编译器,我们还是可以通…

Visual Studio Code 常用插件整理

常用插件说明&#xff1a; 一、HTML Snippets 超级使用且初级的H5代码片段以及提示 二、HTML CSS Support 让HTML标签上写class智能提示当前项目所支持的样式 三、Debugger for Chrome 让vscode映射chrome的debug功能&#xff0c;静态页面都可以用vscode来打断点调试、配饰稍…

sublime 正则搜索日语字符

sublime 正则搜索日语字符 [\x{3041}-\x{3096}\x{30A0}-\x{30FF}\x{3400}-\x{4DB5}\x{4E00}-\x{9FCB}\x{F900}-\x{FA6A}\x{2E80}-\x{2FD5}\x{FF5F}-\x{FF9F}\x{3000}-\x{303F}\x{31F0}-\x{31FF}\x{3220}-\x{3243}\x{3280}-\x{337F}\x{FF01}-\x{FF5E}] 参考: http://www.localiz…

函数域中申请堆空间出函数后不会自动释放

#include<iostream> using std::cout; using std::endl; char *scat(char *s1,char *s2) { char *snew char[strlen(s1)strlen(s2)1]; strcpy(s,s1); strcat(s,s2); return s;//返回刚申请的堆空间的首址&#xff0c;出了函数后变量s就不复存在了&#xff0c;但申请的…

/home文件夹重新划分独立分区

1. 备份home文件夹&#xff0c;数据丢失的时候可以使用cp -av /home/* /data/2. 磁盘分区2.1 虚拟机中添加磁盘并让系统识别&#xff0c;使用# echo - - - >> /sys/class/scsi_host/host0/scan# echo - - - >> /sys/class/scsi_host/host1/scan# echo - - - >…