static VAStatus gen75_vme_constant_setup(VADriverContextP ctx,
struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
+ struct intel_encoder_context *encoder_context,
+ int denom)
{
struct gen6_vme_context *vme_context = encoder_context->vme_context;
unsigned char *constant_buffer;
if (encoder_context->codec == CODEC_H264 ||
encoder_context->codec == CODEC_H264_MVC) {
if (vme_context->h264_level >= 30) {
- mv_num = 16;
+ mv_num = 16 / denom;
if (vme_context->h264_level >= 31)
- mv_num = 8;
+ mv_num = 8 / denom;
}
} else if (encoder_context->codec == CODEC_MPEG2) {
- mv_num = 2;
+ mv_num = 2 / denom;
}
vme_state_message[31] = mv_num;
gen75_vme_surface_setup(ctx, encode_state, is_intra, encoder_context);
gen75_vme_interface_setup(ctx, encode_state, encoder_context);
//gen75_vme_vme_state_setup(ctx, encode_state, is_intra, encoder_context);
- gen75_vme_constant_setup(ctx, encode_state, encoder_context);
+ gen75_vme_constant_setup(ctx, encode_state, encoder_context, (pSliceParameter->slice_type == SLICE_TYPE_B) ? 2 : 1);
/*Programing media pipeline*/
gen75_vme_pipeline_programing(ctx, encode_state, encoder_context);
gen75_vme_interface_setup(ctx, encode_state, encoder_context);
gen75_vme_vme_state_setup(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
intel_vme_mpeg2_state_setup(ctx, encode_state, encoder_context);
- gen75_vme_constant_setup(ctx, encode_state, encoder_context);
+ gen75_vme_constant_setup(ctx, encode_state, encoder_context, 1);
/*Programing media pipeline*/
gen75_vme_mpeg2_pipeline_programing(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
static VAStatus gen8_vme_constant_setup(VADriverContextP ctx,
struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
+ struct intel_encoder_context *encoder_context,
+ int denom)
{
struct gen6_vme_context *vme_context = encoder_context->vme_context;
unsigned char *constant_buffer;
if (encoder_context->codec == CODEC_H264 ||
encoder_context->codec == CODEC_H264_MVC) {
if (vme_context->h264_level >= 30) {
- mv_num = 16;
+ mv_num = 16 / denom;
if (vme_context->h264_level >= 31)
- mv_num = 8;
+ mv_num = 8 / denom;
}
} else if (encoder_context->codec == CODEC_MPEG2) {
- mv_num = 2;
+ mv_num = 2 / denom;
}
vme_state_message[31] = mv_num;
gen8_vme_surface_setup(ctx, encode_state, is_intra, encoder_context);
gen8_vme_interface_setup(ctx, encode_state, encoder_context);
//gen8_vme_vme_state_setup(ctx, encode_state, is_intra, encoder_context);
- gen8_vme_constant_setup(ctx, encode_state, encoder_context);
+ gen8_vme_constant_setup(ctx, encode_state, encoder_context, (pSliceParameter->slice_type == SLICE_TYPE_B) ? 2 : 1);
/*Programing media pipeline*/
gen8_vme_pipeline_programing(ctx, encode_state, encoder_context);
gen8_vme_interface_setup(ctx, encode_state, encoder_context);
//gen8_vme_vme_state_setup(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
intel_vme_mpeg2_state_setup(ctx, encode_state, encoder_context);
- gen8_vme_constant_setup(ctx, encode_state, encoder_context);
+ gen8_vme_constant_setup(ctx, encode_state, encoder_context, 1);
/*Programing media pipeline*/
gen8_vme_mpeg2_pipeline_programing(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
/*Setup all the memory object*/
gen8_vme_vp8_surface_setup(ctx, encode_state, is_intra, encoder_context);
gen8_vme_interface_setup(ctx, encode_state, encoder_context);
- gen8_vme_constant_setup(ctx, encode_state, encoder_context);
+ gen8_vme_constant_setup(ctx, encode_state, encoder_context, 1);
/*Programing media pipeline*/
gen8_vme_vp8_pipeline_programing(ctx, encode_state, is_intra, encoder_context);
static VAStatus gen9_vme_constant_setup(VADriverContextP ctx,
struct encode_state *encode_state,
- struct intel_encoder_context *encoder_context)
+ struct intel_encoder_context *encoder_context,
+ int denom)
{
struct gen6_vme_context *vme_context = encoder_context->vme_context;
unsigned char *constant_buffer;
if (encoder_context->codec == CODEC_H264 ||
encoder_context->codec == CODEC_H264_MVC) {
if (vme_context->h264_level >= 30) {
- mv_num = 16;
+ mv_num = 16 / denom;
if (vme_context->h264_level >= 31)
- mv_num = 8;
+ mv_num = 8 / denom;
}
} else if (encoder_context->codec == CODEC_MPEG2) {
- mv_num = 2;
+ mv_num = 2 / denom;
}else if (encoder_context->codec == CODEC_HEVC) {
if (vme_context->hevc_level >= 30*3) {
mv_num = 16;
gen9_vme_surface_setup(ctx, encode_state, is_intra, encoder_context);
gen9_vme_interface_setup(ctx, encode_state, encoder_context);
//gen9_vme_vme_state_setup(ctx, encode_state, is_intra, encoder_context);
- gen9_vme_constant_setup(ctx, encode_state, encoder_context);
+ gen9_vme_constant_setup(ctx, encode_state, encoder_context, (pSliceParameter->slice_type == SLICE_TYPE_B) ? 2 : 1);
/*Programing media pipeline*/
gen9_vme_pipeline_programing(ctx, encode_state, encoder_context);
gen9_vme_interface_setup(ctx, encode_state, encoder_context);
//gen9_vme_vme_state_setup(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
intel_vme_mpeg2_state_setup(ctx, encode_state, encoder_context);
- gen9_vme_constant_setup(ctx, encode_state, encoder_context);
+ gen9_vme_constant_setup(ctx, encode_state, encoder_context, 1);
/*Programing media pipeline*/
gen9_vme_mpeg2_pipeline_programing(ctx, encode_state, slice_param->is_intra_slice, encoder_context);
/*Setup all the memory object*/
gen9_vme_vp8_surface_setup(ctx, encode_state, is_intra, encoder_context);
gen9_vme_interface_setup(ctx, encode_state, encoder_context);
- gen9_vme_constant_setup(ctx, encode_state, encoder_context);
+ gen9_vme_constant_setup(ctx, encode_state, encoder_context, 1);
/*Programing media pipeline*/
gen9_vme_vp8_pipeline_programing(ctx, encode_state, is_intra, encoder_context);
gen9_vme_hevc_surface_setup(ctx, encode_state, is_intra, encoder_context);
gen9_vme_interface_setup(ctx, encode_state, encoder_context);
//gen9_vme_vme_state_setup(ctx, encode_state, is_intra, encoder_context);
- gen9_vme_constant_setup(ctx, encode_state, encoder_context);
+ gen9_vme_constant_setup(ctx, encode_state, encoder_context, 1);
/*Programing media pipeline*/
gen9_vme_hevc_pipeline_programing(ctx, encode_state, encoder_context);