x264结构体
来源:互联网 发布:查看淘宝账号注册时间 编辑:程序博客网 时间:2024/05/19 20:38
// http://blog.163.com/laorenyuhai126@126/blog/static/1935077920104910410991/
首先解释一下cli_opt_t的这个_t代表结构图可能是type的意思。同时还有很多i_ b_等作为前缀的变量,其中的I_表示int类型的变量b表示bool类型的。依次类推。
正式进入主题。
typedef struct { int b_progress; int i_seek; hnd_t hin; hnd_t hout; FILE *qpfile;} cli_opt_t;
此结构体是记录一些与编码关系较小的设置信息的opt=option。结构体内部的变量都可以通过读取main()的参数获得。也就是argv。
b_progress表示一个bool类型的变量,看参数帮助 也就是x264--help你会知道,他是用来控制是否显示编码进度的一个东西。取值为0,1.
I_seek 整数类型 表示开始从哪一帧编码。因为不一定从这个文件的第一帧开始编码,这是可以控制的。
Hnd_t(hnd=handle)是一个空指针,void *在C语言里空指针是有几个特性的,他是一个一般化指针,可以指向任何一种类型,但却不能解引用,需要解引用的时候,需要进行强制转换。采用空指针的策略,应该是为了声明变量的简便和统一。
Hin 指向输入yuv文件的指针。
Hout 指向编码过后生成的文件的指针。
Qpfile 是一个指向文件类型的指针,他是文本文件,其每一行的格式是framenum frametype QP
用于强制指定某些帧或者全部帧的帧类型和QP(quant param量化参数)的值。
x264_param_default( ¶m );
这部分设置编码参数的缺省值
附结构体param中部分变量的意义:
param->i_csp = X264_CSP_I420; // 设置输入的视频采样的格式param->vui.i_sar_width = 0; //VUI:video usability information param->i_fps_num = 10; //帧率
param->i_fps_den = 1; //用两个整型的数的比值,来表示帧率 param->i_frame_reference = 1; //参考帧的最大帧数。 param->i_bframe = 0; //两个参考帧之间的B帧数目。 param->b_deblocking_filter = 1; //去块效应相关 param->b_cabac = 0; //cabac的开关 param->i_cabac_init_idc = -1; param->rc.b_cbr = 1; //constant bitrate 恒定码率控制模式 param->rc.i_bitrate = 0; //默认的码率 param->rc.i_rc_buffer_size = 0; //buffer的大小 param->rc.i_rc_init_buffer = 0; // param->rc.i_rc_sens = 100; // //整个param的一个log文件 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; //运动估计模式param->analyse.i_me_range = 16; //运动估计范围 param->analyse.i_subpel_refine = 5; param->analyse.b_chroma_me = 1; param->analyse.i_mv_range_thread = -1; param->analyse.i_mv_range = -1; // set from level_idc param->analyse.i_direct_8x8_inference = -1; // set from level_idc param->analyse.i_chroma_qp_offset = 0; param->analyse.b_fast_pskip = 1; param->analyse.b_dct_decimate = 1; param->analyse.i_luma_deadzone[0] = 21; param->analyse.i_luma_deadzone[1] = 11; param->analyse.b_psnr = 1; param->analyse.b_ssim = 1; param->i_cqm_preset = X264_CQM_FLAT; //自定义量化矩阵(CQM),初始化量化模式为flat
typedef struct{
int i_type; int i_qpplus1; int64_t i_pts; x264_image_t img;} x264_picture_t;
具体的含义理解参考了read_frame_yuv()x264_picture_alloc();
I_type 指明被编码图像的类型,有X264_TYPE_AUTO X264_TYPE_IDR X264_TYPE_I X264_TYPE_P X264_TYPE_BREF X264_TYPE_B可供选择,初始化为AUTO,说明由x264在编码过程中自行控制。
I_qpplus1 :此参数减1代表当前画面的量化参数值。
I_pts :program time stamp 程序时间戳,指示这幅画面编码的时间戳。
Img :存放真正一副图像的原始数据。
typedef struct{
int i_csp; int i_plane; int i_stride[4]; uint8_t *plane[4];} x264_image_t;
Csp: color space parameter 色彩空间参数X264只支持I420
i_Plane 代表色彩空间的个数。一般为3,YUV,初始化为
- x264结构体
- x264中重要结构体说明
- X264结构体中的变量解释
- x264中重要结构体说明
- x264中重要结构体说明
- 【H264】x264头文件结构体详解
- X264结构体中的变量解释
- x264中重要结构体参数解释,参数设置,函数说明
- x264中重要结构体参数解释,参数设置,函数说明
- x264中几个重要结构体的说明
- x264中两个重要的结构体x264_param_t和cli_opt_t
- x264重要结构体详细说明(1): x264_param_t
- x264重要结构体详细说明(3): x264_sps_t、x264_pps_t
- x264重要结构体详细说明(4): x264_t
- x264重要结构体详细说明(5): x264_frame_t、x264_sync_frame_list_t
- x264重要结构体详细说明: x264_sps_t、x264_pps_t
- x264中的x264_ratecontrol_t与rc两个速率控制相关的结构体的比较
- x264重要结构体详细说明(2): x264_image_t、x264_picture_t、x264_nal_t
- fork()与vfor()的区别
- C/C++变量编译时运行时分配内存
- UOM Convertion Rate API
- HTML、 XML 、HTTP、 SOAP、 XSLT、 Xpath
- idea 实用插件
- x264结构体
- andengine中的屏幕事件
- V4L2编程实例
- 建一张没有id属性的表,hibernate的映射文件要怎么写
- 算法入门之AC自动机
- C# 中方法参数的传递
- java计算天干地支 十二生肖
- .NET生成常用16、32位MD5加密的两种方法
- eclipse修改默认工作空间