void x264_dct_init( uint32_t cpu, x264_dct_function_t *dctf ) { dctf->sub4x4_dct = sub4x4_dct; dctf->add4x4_idct = add4x4_idct; dctf->sub8x8_dct = sub8x8_dct; dctf->sub8x8_dct_dc = sub8x8_dct_dc; dctf->add8x8_idct = add8x8_idct; dctf->add8x8_idct_dc = ...
void x264_sps_init( x264_sps_t *sps, int i_id, x264_param_t *param ) { int csp = param->i_csp & X264_CSP_MASK; sps->i_id = i_id; sps->i_mb_width = ( param->i_width + 15 ) / 16; // 以宏块为单位的宽 sps->i_mb_height= ( param->i_height + 15 ) / 16; ...
主要包含x264_encoder_open()函数、x264_encoder_headers()函数、x264_encoder_encode()函数与x264_encoder_close()函数四大部分,当中x264_encoder_encode()函数是其核心部分,详细的H.264视频编码算法均在此模块。 上三篇博文主要分析了x264_encoder_open()函数、x264_encoder_headers()函数与x264_encoder_encod...
x264_encoder_encode()函数的核心函数就是x264_slices_write()函数。在x264_slices_write()函数中,最主要的工作就是调用了x264_slice_write()函数(注意“x264_slices_write()”和“x264_slice_write()”名字差了一个“s”),x264_slice_write()函数才是真正完成编码的核心函数,如下图所示。 1、x264_sli...
encode()函数是x264的主干函数,主要包括x264_encoder_open()函数、x264_encoder_headers()函数、x264_encoder_encode()函数与x264_encoder_close()函数四大部分,如下图所示,其中x264_encoder_encode()函数是其核心部分,具体的H.264视频编码算法均在此模块。
3. 编码函数encode分析如下: static int encode( x264_param_t *param, cli_opt_t *opt ) { x264_t *h = NULL;// 结构体x264_t的定义在common/common.h文件中 x264_picture_t pic;// 结构体x264_picture_t的定义在x264.h文件中 cli_pic_t cli_pic;// 结构体cli_pic_t的定义在input/input...
继续深入探讨自定义量化矩阵初始化函数x264_sps_init的实现,代码示例如下:根据sps结构体中参数i_cqm_preset的值,可以决定初始化哪种量化矩阵,当前共有X264_CQM_FLAT、X264_CQM_JVT和X264_CQM_CUSTOM三种量化矩阵。在后续的编码过程中,这些量化矩阵将发挥关键作用。接下来,我们将关注x264_pps_init...
由于main()函数、encode()函数与encode_frame()函数对应的代码已经分析完毕,本文主要分析x264_encoder_encode()函数。x264_encoder_encode()函数编码一帧YUV为H.264码流,对应的函数关系图如下,主要调用了下面的函数: x264_frame_pop_unused():获取1个x264_frame_t类型结构体fenc。如果frames.unused[]队列不为空...
encode()函数是x264的主干函数,主要包括x264_encoder_open()函数、x264_encoder_headers()函数、x264_encoder_encode()函数与x264_encoder_close()函数四大部分,其中x264_encoder_encode()函数是其核心部分,具体的H.264视频编码算法均在此模块。上一篇博文主要分析了x264_encoder_open()函数,本文主要学习x264_en...
上三篇博文主要分析了x264_encoder_open()函数、x264_encoder_headers()函数与x264_encoder_encode()函数(后续会继续深入),本文主要学习x264_encoder_close()函数。 x264_encoder_close()是libx264的一个API函数。该函数用于关闭编码器,同时输出一些统计信息。如下图所示,调用了以下函数: x264_lookahead_delete...