All pastes #607102 Raw Edit

Zeug

public text v1 · immutable
·published 2007-07-07 10:52 UTC
rendered paste body
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;
  }
}