/*==================================================================================== EVS Codec 3GPP TS26.443 Jun 30, 2015. Version CR 26.443-0006 ====================================================================================*/ #include "options.h" #include "cnst.h" #include "prot.h" /*-------------------------------------------------------------------* * get_next_coeff_mapped() * * *-------------------------------------------------------------------*/ int get_next_coeff_mapped( /* o : index of next coefficient */ int ii[2], /* i/o: coefficient indexes */ int *pp, /* o : peak(1)/hole(0) indicator */ int *idx, /* o : index in unmapped domain */ CONTEXT_HM_CONFIG *hm_cfg /* i : HM configuration */ ) { unsigned int p; p = (ii[1] - hm_cfg->numPeakIndices) & (hm_cfg->indexBuffer[ii[1]] - hm_cfg->indexBuffer[ii[0]]); p >>= sizeof(p)*8-1; *pp = p; *idx = ii[p]; ii[p]++; return hm_cfg->indexBuffer[*idx]; } /*-------------------------------------------------------------------* * get_next_coeff_unmapped() * * *-------------------------------------------------------------------*/ int get_next_coeff_unmapped(/* o : index of next coefficient */ int *ii, /* i/o: coefficient indexes */ int *idx /* o : index in unmapped domain */ ) { *idx = *ii; (*ii)++; return *idx; } /*-------------------------------------------------------------------* * update_mixed_context() * * *-------------------------------------------------------------------*/ int update_mixed_context( int ctx, int a ) { int t; t = 1-13 + (a & ~1)*((a>>2)+1); if (t > 0) { t = min((a>>3), 2); } return (ctx & 0xf) * 16 + t + 13; }