1b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber/* ------------------------------------------------------------------ 2b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * Copyright (C) 1998-2009 PacketVideo 3b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * 4b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * you may not use this file except in compliance with the License. 6b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * You may obtain a copy of the License at 7b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * 8b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * 10b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * Unless required by applicable law or agreed to in writing, software 11b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * express or implied. 14b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * See the License for the specific language governing permissions 15b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * and limitations under the License. 16b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * ------------------------------------------------------------------- 17b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber */ 18b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber/**************************************************************************************** 19b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas HuberPortions of this file are derived from the following 3GPP standard: 20b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 21b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 3GPP TS 26.073 22b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec 23b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Available from http://www.3gpp.org 24b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 25b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber(C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC) 26b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas HuberPermission to distribute, modify and use this file under the standard license 27b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huberterms listed above has been obtained from the copyright holder. 28b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber****************************************************************************************/ 29b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber/* 30b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber------------------------------------------------------------------------------ 31b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 32b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 33b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 34b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Filename: /audio/gsm-amr/c/include/gsmamr_enc.h 35b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 36b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Date: 09/26/2001 37b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 38b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber------------------------------------------------------------------------------ 39b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber REVISION HISTORY 40b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 41b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: Changing code as per review comments. These changes include 42b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber removing unnecessary tables and changing function descriptions. 43b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber The comments were changed to "slash-star" rather than double 44b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber slash, and some wordings of comments were corrected. 45b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 46b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: Replaced GSMEncodeFrame function prototype with that of 47b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber AMREncode. Updated copyright year. 48b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 49b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: Added #define for WMF and IF2, and updated function prototype 50b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber of AMREncode. 51b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 52b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: Renamed WMF and IF2 to AMR_WMF and AMR_IF2, respectively. Added 53b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber AMR_ETS, and changed output_type to output_format in the 54b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber function prototype of AMREncode(). Removed function prototypes 55b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber for frame_header_move() and reverse_bits() since they are not 56b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber needed anymore. 57b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 58b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: Moved WMFBytesUsed and IF2BytesUsed tables to 59b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber enc_output_format_tab.c. 60b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 61b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: Added function prototypes for init, reset, and exit functions 62b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber in amrencode.c. Renamed output format #defines so that it it 63b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber unique to the encoder. 64b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 65b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: Added comment to describe L_FRAME. 66b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 67b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: Added Frame_Type_3GPP type definition. 68b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 69b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: Moved _cplusplus #ifdef after Include section. 70b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 71b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Description: 72b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 73b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber------------------------------------------------------------------------------ 74b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber INCLUDE DESCRIPTION 75b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 76b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber This header contains all the necessary information needed to use the 77b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber GSM AMR encoder library. 78b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 79b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber------------------------------------------------------------------------------ 80b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber*/ 81b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#ifndef _GSMAMR_ENC_H_ 82b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#define _GSMAMR_ENC_H_ 83b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 84b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber/*---------------------------------------------------------------------------- 85b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber; INCLUDES 86b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber----------------------------------------------------------------------------*/ 87b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 88b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#include "gsm_amr_typedefs.h" 8988cfb59fde78a07ac8797008cf79b22193e983d9Chia-chi Yeh#include "frame_type_3gpp.h" 90b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 91b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber/*--------------------------------------------------------------------------*/ 92b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#ifdef __cplusplus 93b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huberextern "C" 94b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber{ 95b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#endif 96b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 97b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /*---------------------------------------------------------------------------- 98b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ; MACROS 99b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ----------------------------------------------------------------------------*/ 100b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 101b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 102b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /*---------------------------------------------------------------------------- 103b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ; DEFINES 104b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ----------------------------------------------------------------------------*/ 105b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /* Number of 13-bit linear PCM samples per 20 ms frame */ 106b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /* L_FRAME = (8 kHz) * (20 msec) = 160 samples */ 107b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#define L_FRAME 160 108b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 109b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /* Output format types */ 110b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#define AMR_TX_WMF 0 111b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#define AMR_TX_IF2 1 112b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#define AMR_TX_ETS 2 113b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 114b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /*---------------------------------------------------------------------------- 115b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ; EXTERNAL VARIABLES REFERENCES 116b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ----------------------------------------------------------------------------*/ 117b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 118b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 119b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /*---------------------------------------------------------------------------- 120b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ; SIMPLE TYPEDEF'S 121b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ----------------------------------------------------------------------------*/ 122b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 123b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /*---------------------------------------------------------------------------- 124b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ; ENUMERATED TYPEDEF'S 125b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ----------------------------------------------------------------------------*/ 126b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 127b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber enum Mode 128b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber { 129b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber MR475 = 0,/* 4.75 kbps */ 130b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber MR515, /* 5.15 kbps */ 131b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber MR59, /* 5.90 kbps */ 132b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber MR67, /* 6.70 kbps */ 133b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber MR74, /* 7.40 kbps */ 134b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber MR795, /* 7.95 kbps */ 135b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber MR102, /* 10.2 kbps */ 136b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber MR122, /* 12.2 kbps */ 137b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber MRDTX, /* DTX */ 138b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber N_MODES /* Not Used */ 139b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber }; 140b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 141b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /*---------------------------------------------------------------------------- 142b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ; STRUCTURES TYPEDEF'S 143b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ----------------------------------------------------------------------------*/ 144b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /*---------------------------------------------------------------------------- 145b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ; GLOBAL FUNCTION DEFINITIONS 146b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ----------------------------------------------------------------------------*/ 147b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /* AMREncodeInit initializes the GSM AMR Encoder library by calling 148b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * GSMInitEncode and sid_sync_init. If initialization was successful, 149b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * init_status is set to zero, otherwise, it is set to -1. 150b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber */ 151b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber int AMREncodeInit( 152b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber void **pEncStructure, 153b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber void **pSidSyncStructure, 154b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Flag dtx_enable); 155b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 156b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /* AMREncodeReset resets the state memory used by the Encoder and SID sync 157b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * function. If reset was successful, reset_status is set to zero, otherwise, 158b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * it is set to -1. 159b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber */ 160b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber int AMREncodeReset( 161b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber void *pEncStructure, 162b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber void *pSidSyncStructure); 163b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 164b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /* AMREncodeExit frees up the state memory used by the Encoder and SID 165b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * synchronization function. 166b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber */ 167b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber void AMREncodeExit( 168b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber void **pEncStructure, 169b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber void **pSidSyncStructure); 170b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 171b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber /* 172b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * AMREncode is the entry point to the ETS Encoder library that encodes the raw 173b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * data speech bits and converts the encoded bitstream into either an IF2- 174b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * formatted bitstream, WMF-formatted bitstream, or ETS-formatted bitstream, 175b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber * depending on the the value of output_format. A zero is returned on success. 176b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber */ 177b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber int AMREncode( 178b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber void *pEncState, 179b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber void *pSidSyncState, 180b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber enum Mode mode, 181b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Word16 *pEncInput, 182b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber unsigned char *pEncOutput, 183b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber enum Frame_Type_3GPP *p3gpp_frame_type, 184b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber Word16 output_format 185b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber ); 186b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 187b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#ifdef __cplusplus 188b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber} 189b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#endif 190b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 191b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 192b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber#endif /* _GSMAMR_DEC_H_ */ 193b841f14f8e51f2365945281fbfa54ef6a1b1b5a6Andreas Huber 194