1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2016 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __RC_VEPU_H__ 18*437bfbebSnyanmisaka #define __RC_VEPU_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "rk_type.h" 21*437bfbebSnyanmisaka 22*437bfbebSnyanmisaka #define VEPU_BLK_RC_CTRL_LEVELS 7 23*437bfbebSnyanmisaka #define VEPU_BLK_RC_CHECK_POINTS_MAX 10 24*437bfbebSnyanmisaka 25*437bfbebSnyanmisaka typedef struct RcVepuSet_t { 26*437bfbebSnyanmisaka RK_S32 qp_init; 27*437bfbebSnyanmisaka RK_S32 qp_min; 28*437bfbebSnyanmisaka RK_S32 qp_max; 29*437bfbebSnyanmisaka 30*437bfbebSnyanmisaka RK_S32 mad_qp_delta; 31*437bfbebSnyanmisaka RK_S32 mad_threshold; 32*437bfbebSnyanmisaka 33*437bfbebSnyanmisaka /* 34*437bfbebSnyanmisaka * cp = checkpoint 35*437bfbebSnyanmisaka * 36*437bfbebSnyanmisaka * vepu1 and vepu2 use check point to control qp change accoring to runtime 37*437bfbebSnyanmisaka * bit rate change in one frame. 38*437bfbebSnyanmisaka * 39*437bfbebSnyanmisaka * cp_distance_mbs defines how many the mb number between two checkpoints 40*437bfbebSnyanmisaka * 41*437bfbebSnyanmisaka * cp_target define the target bitrate on each checkpoint 42*437bfbebSnyanmisaka * 43*437bfbebSnyanmisaka * target_error and delta_qp define the qp delta value on the checkpoint when 44*437bfbebSnyanmisaka * the bitrate error different to cp_target is happened. 45*437bfbebSnyanmisaka */ 46*437bfbebSnyanmisaka RK_S32 cp_distance_mbs; 47*437bfbebSnyanmisaka RK_S32 cp_target[VEPU_BLK_RC_CHECK_POINTS_MAX]; 48*437bfbebSnyanmisaka RK_S32 target_error[VEPU_BLK_RC_CTRL_LEVELS]; 49*437bfbebSnyanmisaka RK_S32 delta_qp[VEPU_BLK_RC_CTRL_LEVELS]; 50*437bfbebSnyanmisaka } RcVepuSet; 51*437bfbebSnyanmisaka 52*437bfbebSnyanmisaka typedef struct RcVepuRet_t { 53*437bfbebSnyanmisaka RK_S32 stream_size; 54*437bfbebSnyanmisaka 55*437bfbebSnyanmisaka RK_S32 qp_sum; 56*437bfbebSnyanmisaka RK_S32 mad_count; 57*437bfbebSnyanmisaka RK_S32 rlc_count; 58*437bfbebSnyanmisaka 59*437bfbebSnyanmisaka RK_S32 cp_bits[VEPU_BLK_RC_CHECK_POINTS_MAX]; 60*437bfbebSnyanmisaka } RcVepuRet; 61*437bfbebSnyanmisaka 62*437bfbebSnyanmisaka #endif /* __RC_VEPU_H__ */ 63