T264_param_t, T264_t结构体

转载 2012年03月21日 22:00:42
 
转载背后:今晚看图像采集应用程序,里面“T264_param_t m_param;  ” //代表编码器所采用的参数,如图像帧宽度、高度、压缩率等等
而程序中经常使用到这个结构体的两个成员:m_param.width,   m_param.height但是T264_param_t是在H264编码库里面定义的无法看到源码,所以网上搜索了一下,结果如下:
 
 
typedef struct 
{
    int32_t width, height;  
//图像的宽和高
    int32_t qp; 
//量化步长
    int32_t bitrate; 
//码率
    float   framerate; 
//帧率
    int32_t iframe;                 
// I 帧间距
    int32_t idrframe;                // idr 间距
    int32_t ref_num;             
// 参考帧数目
    int32_t b_num;                //b frame number between 2 p-frame(0, 1, 2)  
    int32_t flags;     //一些标志

    int32_t cpu;    
    int32_t search_x;
//帧间预测时水平搜索范围上限
    int32_t search_y; //帧间预测时垂直搜索范围上限
    int32_t block_size; //包括

    int32_t disable_filter;  //去块效应滤波器,0表示使用滤波器,1表示不使用
    int32_t aspect_ratio; 
//aspect_ratio, 2 means 720 * 576 4:3
    int32_t video_format; 
//图像制式 1代表pal
    int32_t luma_coeff_cost; 
//计算每个块(最大到16*16)的系数开销。
    int32_t min_qp;    
//最小量化步长
    int32_t max_qp;   //最大量化步长
    int32_t enable_rc; //码率控制
    int32_t enable_stat; 
//统计psnr
    int32_t direct_flag;
 //for CABAC
 int32_t cabac; 
//CABAC使能
    void*   rec_name; 
//重构yuv文件名
} T264_param_t;
 
 
 
 
struct T264_t
{
    T264_frame_t refn[MAX_REFFRAMES]; 
    T264_frame_t* ref[2][MAX_REFFRAMES];
    int32_t refl0_num; 
//用于做预测的前边帧的个数
    int32_t refl1_num;   //用于做预测的后边帧的个数
    T264_frame_t cur;  //暂存当前要处理的一帧数据,不含扩展边界
    T264_frame_t* rec; 
 //重构帧的数据,含扩展边界
    int32_t     width;   //为mb_width<<4
    int32_t     height; 
//mb_height<<4
    int32_t     stride;  //亮度信号的跨度,等于t->width
    int32_t     stride_uv; 
//色差信号的跨度,等于t->width >> 1
    int32_t     edged_stride; //带边缘的亮度信号的跨度,等于t->edged_width
    int32_t     edged_stride_uv;//带边缘的色度信号的跨度,等于t->edged_width >> 1
    int32_t     edged_width;  //T264_open中设为width + 2 * EDGED_WIDTH
    int32_t     edged_height;
//带边缘的亮度信号的跨度,等于t->height + 2 * EDGED_HEIGHT
    int32_t     qp_y, qp_uv;
//亮度、色度量化步长
    void*        bs;  //bit 流,在T264_open中 t->bs = T264_malloc(sizeof(bs_t), CACHE_SIZE);
    uint8_t*    bs_buf; 

    uint32_t    flags; //根T264_param_t中的flag一样的含义
    int32_t     mb_width, mb_height; 
    int32_t  mb_stride;  //每行mb个数
    uint32_t    idr_pic_id; 
//IDR帧的标识号
   
    uint32_t    frame_id;
   
    uint32_t    frame_num;
   
    uint32_t    frame_no;
   
    uint32_t    last_i_frame_id;
    uint32_t    poc;   
//picture order count,图像的播放顺序
    uint32_t    slice_type;  //slice的类型 SLICE_P SLICE_B SLICE_I SLICE_SP SLICE_SI SLICE_IDR
    int32_t     skip; 
//计数一个slice里有多少个skip宏块,每slice清零
    uint32_t    sad_all; //用来计算整个宏块中的sad,累加所有mb的sad
    T264_frame_t pending_bframes[MAX_BREFNUMS]; 
//存储还未编码的b帧数据,不含扩展边界
    int32_t     pending_bframes_num;  // pending_bframes[MAX_BREFNUMS]有效数据的个数
    int32_t     header_bits; //存储每一帧,编码后的数据的头部控制信息
    int32_t     frame_bits;  //一帧数据编码后的大小(bit为单位)
   
   
    uint8_t* src_buf;  
    uint8_t* src_end; 

    uint8_t* nal_buf;  
    int32_t nal_len;   
    uint32_t shift;    
    uint32_t shift1;
    action_t action;
    int32_t need_deblock;  //去块效应滤波器使能
    T264_frame_t* cur_frame; 
//没用
   
    int32_t aspect_ratio; //宽高比
    int32_t video_format;
//图像制式 1代表pal
    T264_frame_t output; //输出变量,T264_frame_t结构体格式
   
    T264_param_t   param; //参数变量,T264_param_t结构体格式
    T264_nal_t     nal;
//NAL变量,T264_nal_t结构体格式
    T264_seq_set_t ss; 
//序列参数集变量,T264_seq_set_t结构体
    T264_pic_set_t ps; //图像参数集变量,T264_pic_set_t结构体
    T264_slice_t   slice; 
//slice参数集变量,T264_slice_t结构体
    T264_stat_t    stat;  //stat参数集变量,T264_stat_t结构体
    T264_mb_t      mb;//mb参数集变量,T264_mb_t结构体
    int16_t        subpel_pts; 
    T264_plugin_t  plugins[MAX_PLUGINS];    //存储一些t264中使用的调用,如统计psnr和rc
 //for CABAC
 T264_cabac_t cabac;
    int32_t        plug_num; //plug+1为plugins[MAX_PLUGINS]有效部分的函数的数量
    T264_predict_16x16_mode_t pred16x16[4 + 3];    //16×16预测函数的函数指针

    T264_predict_8x8_mode_t   pred8x8[4 + 3];           //8×8预测函数的函数指针

    T264_predict_4x4_mode_t   pred4x4[9 + 3];           //4×4预测函数的函数指针


   T264_pia_t pia[9];        //for pixel avearage func
    T264_dct_t fdct4x4;      //求dct4×4变换的函数指针
    T264_dct_t fdct4x4dc;  //求4×4直流系数变换(哈达玛)的函数指针
    T264_dct_t fdct2x2dc;   //求2×2直流系数变换(哈达玛)的函数指针
    T264_dct_t idct4x4;      //求dct4×4逆变换的函数指针
    T264_dct_t idct4x4dc;   //求4×4直流系数逆变换(逆哈达玛)的函数指针
    T264_dct_t idct2x2dc;    //求2×2直流系数逆变换(逆哈达玛)的函数指针

    T264_quant4x4_t   quant4x4;         //求4×4量化的函数指针
    T264_quant4x4dc_t quant4x4dc;     
//求4×4直流系数量化的函数指针
    T264_quant2x2dc_t quant2x2dc;     
//求2×2直流系数量化的函数指针
    T264_iquant_t     iquant4x4;            //求4×4反量化的函数指针
    T264_iquant_t     iquant4x4dc;         
//求4×4直流系数反量化的函数指针
    T264_iquant_t     iquant2x2dc;         //求2×2直流系数反量化的函数指针
    expand8to16_t     expand8to16;       //进行8->16bit的扩展的函数指针
    contract16to8_t   contract16to8;      
//进行16->8bit的缩短的函数指针
   
expand8to16sub_t  expand8to16sub; //进行8->16bit的减法的函数指针
   contract16to8add_t contract16to8add; //进行16->8bit的加法的函数指针
    memcpy_stride_u_t   memcpy_stride_u;//进行u的stride宽度拷贝的函数指针
    T264_eighth_pixel_mc_u_t eighth_pixel_mc_u;   //色度1/8象素插值计算函数指针
    T264_interpolate_halfpel_t interpolate_halfpel_h;   //进行水平方向半像素滤波的函数指针
    T264_interpolate_halfpel_t interpolate_halfpel_v;   
//进行垂直方向半像素滤波的函数指针
    T264_interpolate_halfpel_t interpolate_halfpel_hv; //进行斜向半像素滤波的函数指针

    T264_pixel_avg_t pixel_avg; //未使用,被pia代替
    T264_satd_i16x16_u_t T264_satd_16x16_u; //对16×16采用SATD的函数指针
    T264_search_t   search; //选用不同搜索方法的函数指针

    T264_emms_t emms; //处理器清空指令函数指针,更多的情况用来做延时
};
 

x264_param_t结构体参数注释解析

typedef struct x264_param_t { /* CPU 标志位 */ unsigned int cpu; int         i_threads;       /* 并行...

x264_param_t结构体参数注释解析

typedef struct x264_param_t { /* CPU 标志位 */ unsigned int cpu; int         i_threads;       /* 并行...

x264_t 结构体解析

struct x264_t {     /* encoder parameters */     x264_param_t    param;     x264_t          *t...

x264中两个重要的结构体x264_param_t和cli_opt_t

网上对这两个结构体都有介绍,本人就不具体介绍了,下面的任务是让这两个重要的结构体登台亮相: typedef struct { /* CPU flags */ // cpu 标志...
  • stpeace
  • stpeace
  • 2012年12月14日 10:48
  • 1835

x264中的x264_ratecontrol_t与rc两个速率控制相关的结构体的比较

两个RC结构的比较: 1 x264_t-->x264_ratecontrol_t: structx264_ratecontrol_t { /*constants */ int...

x264_param_t参数注解

typedef struct x264_param_t {     CPU 标志位    unsigned int cpu;    int        i_threads;       并行...
  • maopig
  • maopig
  • 2011年08月25日 13:33
  • 6268

x264_param_t参数注解

typedef struct x264_param_t {     CPU 标志位    unsigned int cpu;    int        i_threads; ...
  • zhubosa
  • zhubosa
  • 2016年04月12日 11:31
  • 542

x264_param_t

typedef struct x264_param_t{    /* CPU 标志位 */    unsigned int cpu;    int         i_threads;       /...
  • yjh0628
  • yjh0628
  • 2011年05月26日 10:26
  • 810

对x264_param_t 的注释

typedef struct x264_param_t { /* CPU 标志位 */ unsigned int cpu; int i_threads; ...
  • fym0512
  • fym0512
  • 2012年12月31日 11:56
  • 875

H264分析源码学习之结构体篇——h264_stream_t结构体

最近学习H264的编解码,因此先学习了解H264的结构。我是通过h264分析开源库的源码进行学习的。首先先从数据结构体入手,通过了解重要的数据结构体来认识H264! 首先,我们需要初略的知道,H...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:T264_param_t, T264_t结构体
举报原因:
原因补充:

(最多只允许输入30个字)