📄 sp_enc.c
字号:
#include "sp_enc.h"
#include "typedef.h"#include "basic_op.h"
#include "prm2bits.h"
#include "cod_amr.h"#ifdef MMS_IO #include "bitno_tab.h"
#endif
/*************************************************************************
Function: Speech_Encode_Frame_init
Purpose: Allocates memory for filter structure and initializes state memory
Input :
state : pointer of Speech_Encode_FrameState struct pointer
sidstate : pointer of sid_syncState struct pointer
Output :
state : pointer of Speech_Encode_FrameState struct pointer
sidstate : pointer of sid_syncState struct pointer
***************************************************************************/
int Speech_Encode_Frame_init (void **amrcoder , Flag dtx)
{ AmrNBCoder * amrnbcoder;
Speech_Encode_FrameState* s;
Pre_ProcessState* pProState; //cod_amrState * pAmrSate;
sid_syncState* pSidstate;
#if 1
if ((AmrNBCoder**)amrcoder == (AmrNBCoder**) NULL)
{ //fprintf(stderr, "Speech_Encode_Frame_init: invalid parameter\n");
return -1; }
*amrcoder = NULL;
#endif
/* allocate memory */ if ((amrnbcoder = (AmrNBCoder*) malloc(sizeof(AmrNBCoder))) == NULL)
{ //fprintf(stderr, "Speech_Encode_Frame_init: can not malloc state structure\n");
return -1; }
amrnbcoder->SidsyncState = NULL;
amrnbcoder->SpeechEncodeFrameState = NULL;
/* allocate memory */ if ((s= (Speech_Encode_FrameState *) malloc(sizeof(Speech_Encode_FrameState))) == NULL) { //fprintf(stderr, "Speech_Encode_Frame_init: can not malloc state structure\n");
return -1; } s->pre_state = NULL;
s->cod_amr_state = NULL; s->dtx = dtx; /* allocate memory : Pre_Process_init(&s->pre_state)*/ if ((&s->pre_state) == (Pre_ProcessState **) NULL) { //fprintf(stderr, "Pre_Process_init: invalid parameter\n");
return -1; } s->pre_state = NULL; if ((pProState = (Pre_ProcessState *) malloc(sizeof(Pre_ProcessState))) == NULL) { //fprintf(stderr, "Pre_Process_init: can not malloc state structure\n");
return -1; } // Pre_Process_reset(s); pProState->y2_hi = 0; pProState->y2_lo = 0; pProState->y1_hi = 0; pProState->y1_lo = 0; pProState->x0 = 0; pProState->x1 = 0; s->pre_state = pProState; if (cod_amr_init(&s->cod_amr_state, s->dtx)) { //Speech_Encode_Frame_exit((void**)&s, (void**)&pSidstate );
Speech_Encode_Frame_exit(amrcoder);
return -1; } Speech_Encode_Frame_reset(s);
// *state = (void*)s;
amrnbcoder->SpeechEncodeFrameState = s;
#if 0
if (sidstate == (sid_syncState **) NULL)
{ //fprintf(stderr, "sid_sync_init:invalid state parameter\n");
return -1; } *sidstate = NULL;
#endif
// sidstate = NULL;
/* allocate memory */ if ((pSidstate = (sid_syncState *)malloc(sizeof(sid_syncState))) == NULL)
{ // fprintf(stderr,"sid_sync_init: " "can not malloc state structure\n");
return -1; } pSidstate->sid_update_rate = 8;
pSidstate->sid_update_counter = 3;
pSidstate->sid_handover_debt = 0;
pSidstate->prev_ft = TX_SPEECH_GOOD;
//*sidstate = (void*)pSidstate;
amrnbcoder->SidsyncState = pSidstate;
*amrcoder = amrnbcoder;
#if 0
Speech_Encode_FrameState* s; Pre_ProcessState* pProState; cod_amrState * pAmrSate;
sid_syncState* pSidstate;
#if 1
if (state == (Speech_Encode_FrameState **) NULL) { //fprintf(stderr, "Speech_Encode_Frame_init: invalid parameter\n");
return -1; }
*state = NULL;
#endif
// state = NULL;
/* allocate memory */ if ((s= (Speech_Encode_FrameState *) malloc(sizeof(Speech_Encode_FrameState))) == NULL) { //fprintf(stderr, "Speech_Encode_Frame_init: can not malloc state structure\n");
return -1; } s->pre_state = NULL;
s->cod_amr_state = NULL; s->dtx = dtx; /* allocate memory : Pre_Process_init(&s->pre_state)*/ if ((&s->pre_state) == (Pre_ProcessState **) NULL) { //fprintf(stderr, "Pre_Process_init: invalid parameter\n");
return -1; } s->pre_state = NULL; if ((pProState = (Pre_ProcessState *) malloc(sizeof(Pre_ProcessState))) == NULL) { //fprintf(stderr, "Pre_Process_init: can not malloc state structure\n");
return -1; } // Pre_Process_reset(s); pProState->y2_hi = 0; pProState->y2_lo = 0; pProState->y1_hi = 0; pProState->y1_lo = 0; pProState->x0 = 0; pProState->x1 = 0; s->pre_state = pProState; if (cod_amr_init(&s->cod_amr_state, s->dtx)) { Speech_Encode_Frame_exit((void**)&s, (void**)&pSidstate );
return -1; } Speech_Encode_Frame_reset(s);
*state = (void*)s;
#if 1
if (sidstate == (sid_syncState **) NULL)
{ //fprintf(stderr, "sid_sync_init:invalid state parameter\n");
return -1; } *sidstate = NULL;
#endif
// sidstate = NULL;
/* allocate memory */ if ((pSidstate = (sid_syncState *)malloc(sizeof(sid_syncState))) == NULL)
{ // fprintf(stderr,"sid_sync_init: " "can not malloc state structure\n");
return -1; } pSidstate->sid_update_rate = 8;
pSidstate->sid_update_counter = 3;
pSidstate->sid_handover_debt = 0;
pSidstate->prev_ft = TX_SPEECH_GOOD;
*sidstate = (void*)pSidstate;
#endif
return 0;
} /*************************************************************************
Function: Speech_Encode_Frame_reset
Purpose: Resetses state memory
Inputs: state : frame-encoding state pointer
Outputs:
Return:
**************************************************************************/
int Speech_Encode_Frame_reset (Speech_Encode_FrameState *state)
{
Speech_Encode_FrameState *pstate = state;
pstate->pre_state->y2_hi = 0;
pstate->pre_state->y2_lo = 0;
pstate->pre_state->y1_hi = 0;
pstate->pre_state->y1_lo = 0;
pstate->pre_state->x0 = 0;
pstate->pre_state->x1 = 0;
cod_amr_reset(pstate->cod_amr_state);
return 0;
} /*************************************************************************
Function: Speech_Encode_Frame_exit
Purpose: The memory used for state memory is freed
***************************************************************************/
void Speech_Encode_Frame_exit (void **amrcoder)
{
AmrNBCoder **pamrcoder = (AmrNBCoder**)amrcoder;
Speech_Encode_FrameState **pstate;
sid_syncState **psidstate;
if(pamrcoder == NULL || *pamrcoder == NULL)
return;
pstate = (Speech_Encode_FrameState **)(&((*pamrcoder)->SpeechEncodeFrameState));
psidstate = (sid_syncState **)(&((*pamrcoder)->SidsyncState));
if (pstate == NULL || *pstate == NULL)
return; //Pre_Process_exit(&(*state)->pre_state); if (&(*pstate)->pre_state == NULL || (*pstate)->pre_state == NULL)
return; /* deallocate memory */ free( (*pstate)->pre_state);
(*pstate)->pre_state = NULL;
cod_amr_exit(&(*pstate)->cod_amr_state);
/* deallocate memory */ free(*pstate);
*pstate = NULL;
//sid_sync_exit (&sid_state);
if (psidstate == NULL || *psidstate == NULL)
return;
/* deallocate memory */
free(*psidstate);
*psidstate = NULL;
free(*pamrcoder);
*pamrcoder = NULL;
#if 0
Speech_Encode_FrameState **pstate;
sid_syncState **psidstate;
pstate = (Speech_Encode_FrameState **)state;
psidstate = (sid_syncState **)sidstate;
if (pstate == NULL || *pstate == NULL)
return; //Pre_Process_exit(&(*state)->pre_state); if (&(*pstate)->pre_state == NULL || (*pstate)->pre_state == NULL)
return; /* deallocate memory */ free( (*pstate)->pre_state);
(*pstate)->pre_state = NULL;
cod_amr_exit(&(*pstate)->cod_amr_state);
/* deallocate memory */ free(*pstate);
*pstate = NULL;
//sid_sync_exit (&sid_state);
if (psidstate == NULL || *psidstate == NULL)
return;
/* deallocate memory */
free(*psidstate);
*psidstate = NULL;
#endif
return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -