1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/****************************************************************** 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBC Speech Coder ANSI-C Source Code 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org WebRtcIlbcfix_InitEncode.c 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org******************************************************************/ 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include "defines.h" 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include "constants.h" 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*----------------------------------------------------------------* 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Initiation of encoder instance. 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *---------------------------------------------------------------*/ 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 26fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgint16_t WebRtcIlbcfix_InitEncode( /* (o) Number of bytes encoded */ 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBC_Enc_Inst_t *iLBCenc_inst, /* (i/o) Encoder instance */ 28fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t mode) { /* (i) frame size mode */ 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->mode = mode; 30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* Set all the variables that are dependent on the frame size mode */ 32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org if (mode==30) { 33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->blockl = BLOCKL_30MS; 34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->nsub = NSUB_30MS; 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->nasub = NASUB_30MS; 36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->lpc_n = LPC_N_30MS; 37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->no_of_bytes = NO_OF_BYTES_30MS; 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->no_of_words = NO_OF_WORDS_30MS; 39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->state_short_len=STATE_SHORT_LEN_30MS; 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org else if (mode==20) { 42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->blockl = BLOCKL_20MS; 43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->nsub = NSUB_20MS; 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->nasub = NASUB_20MS; 45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->lpc_n = LPC_N_20MS; 46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->no_of_bytes = NO_OF_BYTES_20MS; 47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->no_of_words = NO_OF_WORDS_20MS; 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->state_short_len=STATE_SHORT_LEN_20MS; 49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org else { 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return(-1); 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org } 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* Clear the buffers and set the previous LSF and LSP to the mean value */ 55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org WebRtcSpl_MemSetW16(iLBCenc_inst->anaMem, 0, LPC_FILTERORDER); 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org WEBRTC_SPL_MEMCPY_W16(iLBCenc_inst->lsfold, WebRtcIlbcfix_kLsfMean, LPC_FILTERORDER); 57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org WEBRTC_SPL_MEMCPY_W16(iLBCenc_inst->lsfdeqold, WebRtcIlbcfix_kLsfMean, LPC_FILTERORDER); 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org WebRtcSpl_MemSetW16(iLBCenc_inst->lpc_buffer, 0, LPC_LOOKBACK + BLOCKL_MAX); 59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /* Set the filter state of the HP filter to 0 */ 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org WebRtcSpl_MemSetW16(iLBCenc_inst->hpimemx, 0, 2); 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org WebRtcSpl_MemSetW16(iLBCenc_inst->hpimemy, 0, 4); 63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef SPLIT_10MS 65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org /*Zeroing the past samples for 10msec Split*/ 66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org WebRtcSpl_MemSetW16(iLBCenc_inst->past_samples,0,160); 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org iLBCenc_inst->section = 0; 68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif 69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org return (iLBCenc_inst->no_of_bytes); 71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} 72