#include "vp9_probs.h"
#include "gen9_vp9_const_def.h"
+#define MAX_VP9_ENCODER_FRAMERATE 60
#define MAX_VP9_ENCODER_SURFACES 64
#define MAX_URB_SIZE 4096 /* In register */
* the expected, it is unnecessary to allocate it again
*/
if (vp9_surface->dys_frame_width == surface_param->frame_width &&
- vp9_surface->dys_frame_width == surface_param->frame_width)
+ vp9_surface->dys_frame_height == surface_param->frame_height)
return VA_STATUS_SUCCESS;
if (vp9_surface->dys_4x_surface_obj) {
cmd->dw13.init_frame_width = pic_param->frame_width_src;
cmd->dw13.init_frame_height = pic_param->frame_height_src;
- cmd->dw15.min_qp = 0;
+ cmd->dw15.min_qp = 1;
cmd->dw15.max_qp = 255;
cmd->dw16.cq_level = 30;
break;
}
case VP9_MEDIA_STATE_BRC_UPDATE: {
- cmd->dw15.min_qp = 0;
+ cmd->dw15.min_qp = 1;
cmd->dw15.max_qp = 255;
cmd->dw25.frame_number = param->frame_number;
if (vp9_state->hme_enabled) {
dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_width / 4), 16);
- dys_kernel_param.input_width = ALIGN((vp9_priv_surface->frame_height / 4), 16);
+ dys_kernel_param.input_height = ALIGN((vp9_priv_surface->frame_height / 4), 16);
dys_kernel_param.input_surface = vp9_priv_surface->scaled_4x_surface_obj;
dys_kernel_param.output_width = vp9_state->frame_width_4x;
gpe_context->vfe_desc5.scoreboard0.mask = 0x0F;
gpe_context->vfe_desc5.scoreboard0.type = 1;
- gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0x0;
- gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0xF;
+ gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0;
+ gpe_context->vfe_desc6.scoreboard1.delta_y0 = -1;
- gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0;
- gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xE;
+ gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0;
+ gpe_context->vfe_desc6.scoreboard1.delta_y1 = -2;
- gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0xF;
- gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0x3;
+ gpe_context->vfe_desc6.scoreboard1.delta_x2 = -1;
+ gpe_context->vfe_desc6.scoreboard1.delta_y2 = 3;
- gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF;
- gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0x1;
+ gpe_context->vfe_desc6.scoreboard1.delta_x3 = -1;
+ gpe_context->vfe_desc6.scoreboard1.delta_y3 = 1;
} else {
// Scoreboard 0
- gpe_context->vfe_desc6.scoreboard1.delta_x0 = 0xF;
- gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0x0;
+ gpe_context->vfe_desc6.scoreboard1.delta_x0 = -1;
+ gpe_context->vfe_desc6.scoreboard1.delta_y0 = 0;
// Scoreboard 1
- gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0x0;
- gpe_context->vfe_desc6.scoreboard1.delta_y1 = 0xF;
+ gpe_context->vfe_desc6.scoreboard1.delta_x1 = 0;
+ gpe_context->vfe_desc6.scoreboard1.delta_y1 = -1;
// Scoreboard 2
- gpe_context->vfe_desc6.scoreboard1.delta_x2 = 0x1;
- gpe_context->vfe_desc6.scoreboard1.delta_y2 = 0xF;
+ gpe_context->vfe_desc6.scoreboard1.delta_x2 = 1;
+ gpe_context->vfe_desc6.scoreboard1.delta_y2 = -1;
// Scoreboard 3
- gpe_context->vfe_desc6.scoreboard1.delta_x3 = 0xF;
- gpe_context->vfe_desc6.scoreboard1.delta_y3 = 0xF;
+ gpe_context->vfe_desc6.scoreboard1.delta_x3 = -1;
+ gpe_context->vfe_desc6.scoreboard1.delta_y3 = -1;
// Scoreboard 4
- gpe_context->vfe_desc7.scoreboard2.delta_x4 = 0xF;
- gpe_context->vfe_desc7.scoreboard2.delta_y4 = 0x1;
+ gpe_context->vfe_desc7.scoreboard2.delta_x4 = -1;
+ gpe_context->vfe_desc7.scoreboard2.delta_y4 = 1;
// Scoreboard 5
- gpe_context->vfe_desc7.scoreboard2.delta_x5 = 0x0;
- gpe_context->vfe_desc7.scoreboard2.delta_y5 = 0xE;
+ gpe_context->vfe_desc7.scoreboard2.delta_x5 = 0;
+ gpe_context->vfe_desc7.scoreboard2.delta_y5 = -2;
// Scoreboard 6
- gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0x1;
- gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE;
+ gpe_context->vfe_desc7.scoreboard2.delta_x6 = 1;
+ gpe_context->vfe_desc7.scoreboard2.delta_y6 = -2;
// Scoreboard 7
- gpe_context->vfe_desc7.scoreboard2.delta_x6 = 0xF;
- gpe_context->vfe_desc7.scoreboard2.delta_y6 = 0xE;
+ gpe_context->vfe_desc7.scoreboard2.delta_x6 = -1;
+ gpe_context->vfe_desc7.scoreboard2.delta_y6 = -2;
}
}
vp9_state->gop_size = encoder_context->brc.gop_size;
vp9_state->framerate = encoder_context->brc.framerate[0];
+ if ((vp9_state->framerate.num / vp9_state->framerate.den) > MAX_VP9_ENCODER_FRAMERATE) {
+ vp9_state->framerate.num = MAX_VP9_ENCODER_FRAMERATE * vp9_state->framerate.den;
+ i965_log_info(ctx, "gen9_encode_vp9_check_parameter: Too high frame rate(num: %d, den: %d), max supported is %d fps.\n",
+ vp9_state->framerate.num, vp9_state->framerate.den, MAX_VP9_ENCODER_FRAMERATE);
+ }
if (encoder_context->rate_control_mode == VA_RC_CBR ||
!encoder_context->brc.target_percentage[0]) {