i_mb_count[B_SKIP] / i_count );
}
+ x264_ratecontrol_summary( h );
+
if( h->stat.i_slice_count[SLICE_TYPE_I] + h->stat.i_slice_count[SLICE_TYPE_P] + h->stat.i_slice_count[SLICE_TYPE_B] > 0 )
{
const int i_count = h->stat.i_slice_count[SLICE_TYPE_I] +
return 0;
}
+void x264_ratecontrol_summary( x264_t *h )
+{
+ x264_ratecontrol_t *rc = h->rc;
+ if( rc->b_abr && !h->param.rc.i_rf_constant && !h->param.rc.i_vbv_max_bitrate )
+ {
+ double base_cplx = h->mb.i_mb_count * (h->param.i_bframe ? 120 : 80);
+ x264_log( h, X264_LOG_INFO, "final ratefactor: %.2f\n",
+ qscale2qp( pow( base_cplx, 1 - h->param.rc.f_qcompress )
+ * rc->cplxr_sum / rc->wanted_bits_window ) );
+ }
+}
+
void x264_ratecontrol_delete( x264_t *h )
{
x264_ratecontrol_t *rc = h->rc;
void x264_ratecontrol_mb( x264_t *, int bits );
int x264_ratecontrol_qp( x264_t * );
void x264_ratecontrol_end( x264_t *, int bits );
+void x264_ratecontrol_summary( x264_t * );
#endif