QP是在视频采集编码过程中的量化参数,其值与画面质量成反比,即QP值越大画面质量越小,其具体调整方法如下:
typedef struct rkVENC_RC_PARAM_S {
  RK_U32 u32ThrdI[RC_TEXTURE_THR_SIZE]; // [0, 255]
  RK_U32 u32ThrdP[RC_TEXTURE_THR_SIZE]; // [0, 255]
  RK_U32 u32RowQpDeltaI;                // [0, 10]
  RK_U32 u32RowQpDeltaP;                // [0, 10]
  RK_U32 s32FirstFrameStartQp; // RW; Start QP value of the first frame
  union {
    VENC_PARAM_H264_S stParamH264;
    VENC_PARAM_H265_S stParamH265;
    VENC_PARAM_MJPEG_S stParamMjpeg;
  };
} VENC_RC_PARAM_S; 
  RK_U32 u32ThrdI[RC_TEXTURE_THR_SIZE];
   RK_U32 u32ThrdP[RC_TEXTURE_THR_SIZE]; 
        分别表示I帧与P帧的阈值,一般来说不改动,这个数组是控制宏块画面质量,对于一帧图片来说改动其内部宏块的意义其实不大,因此我们通常不改动。
   RK_U32 u32RowQpDeltaI;                // [0, 10]
   RK_U32 u32RowQpDeltaP;                // [0, 10]
分别表示I帧、P帧的宏块的QP值与整个帧的QP值之间的可接受的波动范围。
RK_U32 s32FirstFrameStartQp; // RW; Start QP value of the first frame
第一帧的QP值,默认-1。
下面是H264QP结构体的具体内容:
/* The param of H264e cbr*/
typedef struct rkVENC_PARAM_H264_S {
  RK_U32 u32StepQp;
  RK_U32 u32MaxQp; // RW; Range:[8, 51];the max QP value
  RK_U32 u32MinQp; // RW; Range:[0, 48]; the min QP value,can not be larger than
                   // u32MaxQp
  RK_U32 u32MaxIQp; // RW; max qp for i frame
  RK_U32 u32MinIQp; // RW; min qp for i frame,can not be larger
                    // than u32MaxIQp
  // RK_S32  s32MaxReEncodeTimes;        /* RW; Range:[0, 3]; Range:max number
  // of re-encode times.*/
} VENC_PARAM_H264_S; 
RK_U32 u32StepQp;
        整个是帧的QP的关键的配置项,其越小画面质量越好,通常配置在1-51之间
   RK_U32 u32MaxQp; // RW; Range:[8, 51];the max QP value
   RK_U32 u32MinQp; // RW; Range:[0, 48]; the min QP value,can not be larger than
        P帧最大最小的QP值
   RK_U32 u32MaxIQp; // RW; max qp for i frame
   RK_U32 u32MinIQp;
I帧最大最小的QP值
下面是关于QP的使用,其实我们只需要在VENC下面定义结构体
    VENC_RC_PARAM_S venc_rc_param;
 
配置该结构体后使用该函数进行初始化即可
    ret = RK_MPI_VENC_SetRcParam(0, &venc_rc_param);
 
即可,其不需要单独的进行管道的配置
效果如下:


在文件大小中第一个视频的大小为20m第二个为3m,静态图片从键盘来看,第一个图片的清晰度远大于第二个



















