Ipp32s mp3dec_decode_data_LayerI(MP3Dec *state) { Ipp32s i, ch, sb; Ipp32f *pSampl[2]; Ipp32f scale; Ipp32s (*sample)[32][36] = state->com.sample; Ipp16s (*scalefactor)[32] = state->com.scalefactor_l1; Ipp16s (*allocation)[32] = state->com.allocation; samplefloatrw *smpl_rw = state->smpl_rw; // out of imdct samplefloat *smpl_sb = state->smpl_sb; // out of subband synth Ipp32s stereo = state->com.stereo; Ipp16s *m_pOutSamples = state->com.m_pOutSamples; pSampl[0] = (*smpl_sb)[0]; pSampl[1] = (*smpl_sb)[1]; for (ch = 0; ch < stereo; ch++) { for (sb = 0; sb < 32; sb++) { if (allocation[ch][sb] != 0) { Ipp32s idx = allocation[ch][sb] + 1; Ipp32s xor_coef; Ipp32s *sample_ptr = &sample[ch][sb][0]; xor_coef = (1 << (idx - 1)); scale = mp3dec_scale_values[scalefactor[ch][sb]] * mp3dec_l1_dequant_table[allocation[ch][sb]]; for (i = 0; i < 12; i++) { (*smpl_rw)[ch][i][sb] = ((Ipp32f)(((sample_ptr[i] ^ xor_coef) + 1) << (32 - idx))) * scale; } } else { for (i = 0; i < 12; i++) { (*smpl_rw)[ch][i][sb] = 0; } } } // for sb for (i = 0; i < 12; i++) { ippsSynthesisFilter_PQMF_MP3_32f((*(state->smpl_rw))[ch][i], pSampl[ch] + i * 32, state->pPQMFSpec[ch], 1); } } // for ch ippsJoin_32f16s_D2L((const Ipp32f **)pSampl, stereo, 384, m_pOutSamples); return 1; }
void VM_MallocItemArray::DeleteItem(void* lpv) { for(Ipp32u i=0; i<m_count; i++) { if(m_array[i]->m_lpv == lpv) { #if defined(VM_MALLOC_STATISTIC) m_array[i]->ReportFree(); #endif vm_malloc_array.ChangeMemUsage(-Ipp32s(m_array[i]->m_size)); delete m_array[i]; m_array[i] = m_array[--m_count]; return; } } }