void InitQTables( PB_INSTANCE *pbi ){ memcpy(pbi->quant_info.ac_scale, QThreshTableV1, sizeof(QThreshTableV1)); memcpy(pbi->quant_info.dc_scale, DcScaleFactorTableV1, sizeof(DcScaleFactorTableV1)); memcpy(pbi->quant_info.loop_filter_limits, LoopFilterLimitValuesV1, sizeof(LoopFilterLimitValuesV1)); int *sizes = (int *)malloc(sizeof(int)); sizes[0] = 63; switch(pbi->encoder_profile) { case PROFILE_FULL: memcpy(pbi->QThreshTable, QThreshTableV1, sizeof(pbi->QThreshTable)); memcpy(pbi->DcScaleFactorTable, DcScaleFactorTableV1, sizeof(pbi->DcScaleFactorTable)); memcpy(pbi->Y_coeffs, Y_coeffs, sizeof(pbi->Y_coeffs)); memcpy(pbi->U_coeffs, U_coeffs, sizeof(pbi->U_coeffs)); memcpy(pbi->V_coeffs, V_coeffs, sizeof(pbi->V_coeffs)); memcpy(pbi->InterY_coeffs, Inter_Y_coeffs, sizeof(pbi->InterY_coeffs)); memcpy(pbi->InterU_coeffs, Inter_U_coeffs, sizeof(pbi->InterU_coeffs)); memcpy(pbi->InterV_coeffs, Inter_V_coeffs, sizeof(pbi->InterV_coeffs)); /* Intra Y */ pbi->quant_info.qi_ranges[0][0].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[0][0].base_matrices, Y_coeffs, sizeof(Y_coeffs)); pbi->quant_info.qi_ranges[0][0].sizes = sizes; pbi->quant_info.qi_ranges[0][0].nranges = 0; /* Intra U */ pbi->quant_info.qi_ranges[0][1].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[0][1].base_matrices, U_coeffs, sizeof(U_coeffs)); pbi->quant_info.qi_ranges[0][1].sizes = sizes; pbi->quant_info.qi_ranges[0][1].nranges = 0; /* Intra V */ pbi->quant_info.qi_ranges[0][2].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[0][2].base_matrices, U_coeffs, sizeof(U_coeffs)); pbi->quant_info.qi_ranges[0][2].sizes = sizes; pbi->quant_info.qi_ranges[0][2].nranges = 0; /* Inter Y */ pbi->quant_info.qi_ranges[1][0].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[1][0].base_matrices, Inter_Y_coeffs, sizeof(Inter_Y_coeffs)); pbi->quant_info.qi_ranges[1][0].sizes = sizes; pbi->quant_info.qi_ranges[1][0].nranges = 0; /* Inter U */ pbi->quant_info.qi_ranges[1][1].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[1][1].base_matrices, Inter_U_coeffs, sizeof(Inter_U_coeffs)); pbi->quant_info.qi_ranges[1][1].sizes = sizes; pbi->quant_info.qi_ranges[1][1].nranges = 0; /* Inter V */ pbi->quant_info.qi_ranges[1][2].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[1][2].base_matrices, Inter_V_coeffs, sizeof(Inter_V_coeffs)); pbi->quant_info.qi_ranges[1][2].sizes = sizes; pbi->quant_info.qi_ranges[1][2].nranges = 0; break; default: /* VP3 */ memcpy(pbi->QThreshTable, QThreshTableV1, sizeof(pbi->QThreshTable)); memcpy(pbi->DcScaleFactorTable, DcScaleFactorTableV1, sizeof(pbi->DcScaleFactorTable)); memcpy(pbi->Y_coeffs, Y_coeffsV1, sizeof(pbi->Y_coeffs)); memcpy(pbi->U_coeffs, UV_coeffsV1, sizeof(pbi->U_coeffs)); memcpy(pbi->V_coeffs, UV_coeffsV1, sizeof(pbi->V_coeffs)); memcpy(pbi->InterY_coeffs, Inter_coeffsV1, sizeof(pbi->InterY_coeffs)); memcpy(pbi->InterU_coeffs, Inter_coeffsV1, sizeof(pbi->InterU_coeffs)); memcpy(pbi->InterV_coeffs, Inter_coeffsV1, sizeof(pbi->InterV_coeffs)); /* Intra Y */ pbi->quant_info.qi_ranges[0][0].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[0][0].base_matrices, Y_coeffs, sizeof(Y_coeffs)); pbi->quant_info.qi_ranges[0][0].sizes = sizes; pbi->quant_info.qi_ranges[0][0].nranges = 0; /* Intra U */ pbi->quant_info.qi_ranges[0][1].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[0][1].base_matrices, U_coeffs, sizeof(U_coeffs)); pbi->quant_info.qi_ranges[0][1].sizes = sizes; pbi->quant_info.qi_ranges[0][1].nranges = 0; /* Intra V */ pbi->quant_info.qi_ranges[0][2].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[0][2].base_matrices, U_coeffs, sizeof(U_coeffs)); pbi->quant_info.qi_ranges[0][2].sizes = sizes; pbi->quant_info.qi_ranges[0][2].nranges = 0; /* Inter Y */ pbi->quant_info.qi_ranges[1][0].base_matrices = (th_quant_base *)malloc(sizeof(th_quant_base)); memcpy(&pbi->quant_info.qi_ranges[1][0].base_matrices, Inter_coeffsV1, sizeof(Inter_coeffsV1)); pbi->quant_info.qi_ranges[1][0].sizes = sizes; pbi->quant_info.qi_ranges[1][0].nranges = 0; /* Inter U - same as Inter Y */ pbi->quant_info.qi_ranges[1][1].base_matrices = pbi->quant_info.qi_ranges[1][0].base_matrices; pbi->quant_info.qi_ranges[1][1].sizes = sizes; pbi->quant_info.qi_ranges[1][1].nranges = 0; /* Inter V - same as Inter Y */ pbi->quant_info.qi_ranges[1][2].base_matrices = pbi->quant_info.qi_ranges[1][0].base_matrices; pbi->quant_info.qi_ranges[1][2].sizes = sizes; pbi->quant_info.qi_ranges[1][2].nranges = 0; break; } }