⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mat_scale_tf_requantize_spectrum.c

📁 语音压缩算法
💻 C
字号:
/*****************************************************************************//* This software module was originally developed by                          *//*   Takeshi Norimatsu,                                                      *//*   Mineo Tsushima,                                                         *//*   and Tomokazu Ishikawa (Matsushita Electric Industrial Co Ltd.)          *//* and edited by                                                             *//*   Akio Jin (NTT),                                                         *//*   Mineo Tsushima, (Matsushita Electric Industrial Co Ltd.)                *//*   and Tomokazu Ishikawa (Matsushita Electric Industrial Co Ltd.)          *//*   on 1997-10-23,                                                          *//* and edited by                                                             *//*   Mineo Tsushima,(Matsushita) on 1998-02-20,                              *//*   Takehito Moriya,(NTT)       on 1998-05-01,                              *//* in the course of development of the                                       *//* MPEG-2 NBC/MPEG-4 Audio standard ISO/IEC 13818-7, 14496-1,2 and 3.        *//* This software module is an implementation of a part of one or more        *//* MPEG-2 NBC/MPEG-4 Audio tools as specified by the MPEG-2 NBC/MPEG-4 Audio *//* standard. ISO/IEC  gives users of the MPEG-2 NBC/MPEG-4 Audio standards   *//* free license to this software module or modifications thereof for use in  *//* hardware or software products claiming conformance to the MPEG-2 NBC/     *//* MPEG-4 Audio  standards. Those intending to use this software module in   *//* hardware or software products are advised that this use may infringe      *//* existing patents. The original developer of this software module and      *//* his/her company, the subsequent editors and their companies, and ISO/IEC  *//* have no liability for use of this software module or modifications        *//* thereof in an implementation. Copyright is not released for non           *//* MPEG-2 NBC/MPEG-4 Audio conforming products. The original developer       *//* retains full right to use the code for his/her  own purpose, assign or    *//* donate the code to a third party and to inhibit third party from using    *//* the code for non MPEG-2 NBC/MPEG-4 Audio conforming products.             *//* This copyright notice must be included in all copies or derivative works. *//* Copyright (c)1996.                                                        *//*****************************************************************************/#include <stdio.h>#include "block.h"               /* handler, defines, enums */#include "buffersHandle.h"       /* handler, defines, enums */#include "interface.h"           /* handler, defines, enums */#include "mod_bufHandle.h"       /* handler, defines, enums */#include "resilienceHandle.h"    /* handler, defines, enums */#include "tf_mainHandle.h"       /* handler, defines, enums */#include "nok_ltp_common.h"      /* structs */#include "tf_mainStruct.h"       /* structs */#include "tns.h"                 /* structs */#include "common_m4a.h"#include "ntt_conf.h"#include "ntt_scale_conf.h"#include "mat_def_ntt.h"void mat_scale_tf_requantize_spectrum(/* Input */				      ntt_INDEX *indexp,				      /* Output */				      double flat_spectrum[],				      /* scalable layer ID */				      int iscl){  int    vq_bits = 0, n_sf = 0, cb_len_max = 0, nfr = 0, isf, subtop, subtopq;  double *sp_cv0 = NULL, *sp_cv1 = NULL, spec_buf[ntt_T_FR_MAX];  int qsample[ntt_N_SUP_MAX], bias[ntt_N_SUP_MAX];  int i_ch;  /*--- Parameter settings ---*/  switch(indexp->w_type){  case ONLY_LONG_SEQUENCE:  case LONG_START_SEQUENCE:  case LONG_STOP_SEQUENCE:    /* available bits */    vq_bits = indexp->nttDataScl->ntt_VQTOOL_BITS_SCL[iscl];    /* codebooks */    sp_cv0 = indexp->nttDataScl->ntt_codev0_scl;    sp_cv1 = indexp->nttDataScl->ntt_codev1_scl;    cb_len_max = ntt_CB_LEN_READ_SCL + ntt_CB_LEN_MGN;    /* number of subframes in a frame */    n_sf = indexp->numChannel;    nfr = indexp->block_size_samples;    break;  case EIGHT_SHORT_SEQUENCE:    /* available bits */    vq_bits = indexp->nttDataScl->ntt_VQTOOL_BITS_S_SCL[iscl];    /* codebooks */    sp_cv0 = indexp->nttDataScl->ntt_codev0s_scl;    sp_cv1 = indexp->nttDataScl->ntt_codev1s_scl;    cb_len_max = ntt_CB_LEN_READ_S_SCL + ntt_CB_LEN_MGN;    /* number of subframes in a frame */    n_sf = indexp->numChannel * ntt_N_SHRT;    nfr = indexp->block_size_samples/8;    break;  default:    CommonExit (1, "ntt_scale_tf_requantize_spectrum(): %d: No such window type.",                indexp->w_type);  }  /*--- Reconstruction ---*/     ntt_zerod(indexp->block_size_samples*indexp->numChannel,spec_buf);  /* Tsushima */     for(i_ch = 0; i_ch<indexp->numChannel; i_ch++){	float tmp;	tmp =	 (float)(indexp->nttDataScl->ac_top[iscl][i_ch][mat_shift[iscl][i_ch]])	-(float)(indexp->nttDataScl->ac_btm[iscl][i_ch][mat_shift[iscl][i_ch]]);	tmp *= (float)nfr;	qsample[i_ch]=(int)tmp;	tmp = 	(float)(indexp->nttDataScl->ac_btm[iscl][i_ch][mat_shift[iscl][i_ch]]);        tmp *= (float)nfr;	bias[i_ch] =  (int)tmp;     }     ntt_vex_pn(indexp->wvq,	     sp_cv0, sp_cv1, cb_len_max,	     n_sf, 	     qsample[0]*n_sf,	     vq_bits,	     flat_spectrum);      for(isf=0;isf<n_sf;isf++){        subtop= isf*nfr;	i_ch = subtop/indexp->block_size_samples;        subtopq= isf*qsample[i_ch];        ntt_movdd(qsample[i_ch],flat_spectrum+subtopq,				spec_buf+subtop+bias[i_ch]);      }      ntt_movdd(indexp->block_size_samples*indexp->numChannel,spec_buf,flat_spectrum); /* Tsushima */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -