On Thu, Dec 8, 2016 at 2:57 PM, Mark Thompson <[email protected]> wrote: > Signed-off-by: Mark Thompson <[email protected]> > --- > src/gen6_mfc.h | 6 ------ > src/gen8_mfc.c | 64 > ++++++++++++---------------------------------------------- > 2 files changed, 13 insertions(+), 57 deletions(-) > > diff --git a/src/gen6_mfc.h b/src/gen6_mfc.h > index 290922b..7a5d940 100644 > --- a/src/gen6_mfc.h > +++ b/src/gen6_mfc.h > @@ -235,12 +235,6 @@ struct gen6_mfc_context > double qpf_rounding_accumulator[MAX_TEMPORAL_LAYERS]; > int bits_prev_frame[MAX_TEMPORAL_LAYERS]; > int prev_slice_type[MAX_TEMPORAL_LAYERS]; > - > - double saved_bps; > - double saved_fps; > - int saved_intra_period; > - int saved_ip_period; > - int saved_idr_period; > } brc; > > struct { > diff --git a/src/gen8_mfc.c b/src/gen8_mfc.c > index d1de92c..b0e7b08 100644 > --- a/src/gen8_mfc.c > +++ b/src/gen8_mfc.c > @@ -3324,12 +3324,8 @@ static void gen8_mfc_vp8_brc_init(struct encode_state > *encode_state, > { > struct gen6_mfc_context *mfc_context = encoder_context->mfc_context; > VAEncSequenceParameterBufferVP8 *seq_param = > (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer; > - VAEncMiscParameterBuffer* misc_param_hrd = > (VAEncMiscParameterBuffer*)encode_state->misc_param[VAEncMiscParameterTypeHRD][0]->buffer; > - VAEncMiscParameterHRD* param_hrd = > (VAEncMiscParameterHRD*)misc_param_hrd->data; > - VAEncMiscParameterBuffer* misc_param_frame_rate_buffer = > (VAEncMiscParameterBuffer*)encode_state->misc_param[VAEncMiscParameterTypeFrameRate][0]->buffer; > - VAEncMiscParameterFrameRate* param_frame_rate = > (VAEncMiscParameterFrameRate*)misc_param_frame_rate_buffer->data; > double bitrate = seq_param->bits_per_second; > - unsigned int frame_rate = param_frame_rate->framerate; > + double framerate = (double)encoder_context->brc.framerate_num[0] / > (double)encoder_context->brc.framerate_den[0]; > int inum = 1, pnum = 0; > int intra_period = seq_param->intra_period; > int width_in_mbs = ALIGN(seq_param->frame_width, 16) / 16; > @@ -3340,14 +3336,14 @@ static void gen8_mfc_vp8_brc_init(struct encode_state > *encode_state, > > mfc_context->brc.mode = encoder_context->rate_control_mode; > > - mfc_context->brc.target_frame_size[0][SLICE_TYPE_I] = > (int)((double)((bitrate * intra_period)/frame_rate) / > + mfc_context->brc.target_frame_size[0][SLICE_TYPE_I] = > (int)((double)((bitrate * intra_period) / framerate) / > (double)(inum + > BRC_PWEIGHT * pnum )); > mfc_context->brc.target_frame_size[0][SLICE_TYPE_P] = BRC_PWEIGHT * > mfc_context->brc.target_frame_size[0][SLICE_TYPE_I]; > > mfc_context->brc.gop_nums[0][SLICE_TYPE_I] = inum; > mfc_context->brc.gop_nums[0][SLICE_TYPE_P] = pnum; > > - mfc_context->brc.bits_per_frame[0] = bitrate/frame_rate; > + mfc_context->brc.bits_per_frame[0] = bitrate / framerate; > > mfc_context->brc.qp_prime_y[0][SLICE_TYPE_I] = > gen8_mfc_vp8_qindex_estimate(encode_state, > > mfc_context, > @@ -3358,10 +3354,15 @@ static void gen8_mfc_vp8_brc_init(struct encode_state > *encode_state, > > mfc_context->brc.target_frame_size[0][SLICE_TYPE_P], > > 0); > > - mfc_context->hrd.buffer_size[0] = (double)param_hrd->buffer_size; > - mfc_context->hrd.current_buffer_fullness[0] = > - (double)(param_hrd->initial_buffer_fullness < > mfc_context->hrd.buffer_size[0])? > - param_hrd->initial_buffer_fullness: > mfc_context->hrd.buffer_size[0]/2.; > + if (encoder_context->brc.hrd_buffer_size) > + mfc_context->hrd.buffer_size[0] = > (double)encoder_context->brc.hrd_buffer_size; > + else > + mfc_context->hrd.buffer_size[0] = 2.0 * bitrate; > + if (encoder_context->brc.hrd_initial_buffer_fullness && > + encoder_context->brc.hrd_initial_buffer_fullness < > mfc_context->hrd.buffer_size[0]) > + mfc_context->hrd.current_buffer_fullness[0] = > (double)encoder_context->brc.hrd_initial_buffer_fullness; > + else > + mfc_context->hrd.current_buffer_fullness[0] = > mfc_context->hrd.buffer_size[0] / 2.0; > mfc_context->hrd.target_buffer_fullness[0] = > (double)mfc_context->hrd.buffer_size[0]/2.; > mfc_context->hrd.buffer_capacity[0] = > (double)mfc_context->hrd.buffer_size[0]/max_frame_size; > mfc_context->hrd.violation_noted = 0; > @@ -3509,45 +3510,6 @@ static void gen8_mfc_vp8_hrd_context_update(struct > encode_state *encode_state, > mfc_context->vui_hrd.i_frame_number++; > } > > -/* > - * Check whether the parameters related with CBR are updated and decide > whether > - * it needs to reinitialize the configuration related with CBR. > - * Currently it will check the following parameters: > - * bits_per_second > - * frame_rate > - * gop_configuration(intra_period, ip_period, intra_idr_period) > - */ > -static bool gen8_mfc_vp8_brc_updated_check(struct encode_state *encode_state, > - struct intel_encoder_context *encoder_context) > -{ > - unsigned int rate_control_mode = encoder_context->rate_control_mode; > - struct gen6_mfc_context *mfc_context = encoder_context->mfc_context; > - double cur_fps, cur_bitrate; > - VAEncSequenceParameterBufferVP8 *seq_param = > (VAEncSequenceParameterBufferVP8 *)encode_state->seq_param_ext->buffer; > - VAEncMiscParameterBuffer *misc_param_frame_rate_buf = > (VAEncMiscParameterBuffer*)encode_state->misc_param[VAEncMiscParameterTypeFrameRate][0]->buffer; > - VAEncMiscParameterFrameRate *param_frame_rate = > (VAEncMiscParameterFrameRate*)misc_param_frame_rate_buf->data; > - unsigned int frame_rate = param_frame_rate->framerate; > - > - if (rate_control_mode != VA_RC_CBR) { > - return false; > - } > - > - cur_bitrate = seq_param->bits_per_second; > - cur_fps = frame_rate; > - > - if ((cur_bitrate == mfc_context->brc.saved_bps) && > - (cur_fps == mfc_context->brc.saved_fps) && > - (seq_param->intra_period == mfc_context->brc.saved_intra_period)) { > - /* the parameters related with CBR are not updaetd */ > - return false; > - } > - > - mfc_context->brc.saved_intra_period = seq_param->intra_period; > - mfc_context->brc.saved_fps = cur_fps; > - mfc_context->brc.saved_bps = cur_bitrate; > - return true; > -} > - > static void gen8_mfc_vp8_brc_prepare(struct encode_state *encode_state, > struct intel_encoder_context *encoder_context) > { > @@ -3557,7 +3519,7 @@ static void gen8_mfc_vp8_brc_prepare(struct > encode_state *encode_state, > bool brc_updated; > assert(encoder_context->codec != CODEC_MPEG2); > > - brc_updated = gen8_mfc_vp8_brc_updated_check(encode_state, > encoder_context); > + brc_updated = encoder_context->brc.need_reset; > > /*Programing bit rate control */ > if (brc_updated) {
This patch fails to compile like this i965_encoder_vp8.c:2768:68: error: ‘struct <anonymous>’ has no member named ‘framerate_per_100s’ -- Daniel. > -- > 2.10.2 > _______________________________________________ > Libva mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/libva _______________________________________________ Libva mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libva
