Line data Source code
1 : /****************************************************************************** 2 : * ETSI TS 103 634 V1.5.1 * 3 : * Low Complexity Communication Codec Plus (LC3plus) * 4 : * * 5 : * Copyright licence is solely granted through ETSI Intellectual Property * 6 : * Rights Policy, 3rd April 2019. No patent licence is granted by implication, * 7 : * estoppel or otherwise. * 8 : ******************************************************************************/ 9 : 10 : #include "defines.h" 11 : 12 : #include "constants.h" 13 : #include "functions.h" 14 : 15 : 16 0 : void processReorderBitstream_fx(UWord8 *bytes, Word16 n_pccw, Word16 n_pc, Word16 b_left, Word8 *scratchBuffer) 17 : { 18 : Word16 block_bytes; 19 : UWord8 * bytes_tmp; 20 : 21 : #ifdef DYNMEM_COUNT 22 : struct _dynmem 23 : { 24 : Word16 block_bits, block_bytes; 25 : UWord8 * bytes_tmp; 26 : }; 27 : Dyn_Mem_In("processReorderBitstream_fx", sizeof(struct _dynmem)); 28 : #endif 29 : 30 0 : bytes_tmp = (UWord8 *)scratchAlign(scratchBuffer, 0); /* Size = LC3PLUS_MAX_BYTES */ 31 : 32 0 : if (n_pccw == 0) 33 : { 34 : #ifdef DYNMEM_COUNT 35 : Dyn_Mem_Out(); 36 : #endif 37 0 : return; 38 : } 39 : 40 0 : assert(b_left >= 0); 41 : 42 : /* set block size in bits and full bytes */ 43 0 : block_bytes = shr_sat(add(n_pc, 1), 1); 44 : 45 : /* rearrange bitstream */ 46 0 : basop_memmove(&bytes_tmp[0], &bytes[b_left], block_bytes * sizeof(UWord8)); 47 0 : basop_memmove(&bytes_tmp[block_bytes], &bytes[0], b_left * sizeof(UWord8)); 48 : 49 0 : basop_memmove(&bytes[0], &bytes_tmp[0], add(block_bytes, b_left) * sizeof(UWord8)); 50 : 51 : #ifdef DYNMEM_COUNT 52 : Dyn_Mem_Out(); 53 : #endif 54 : } 55 : 56 :