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

📄 ntt_extend_pitch.c

📁 MPEG2/MPEG4编解码参考程序(实现了MPEG4的部分功能)
💻 C
字号:
/*****************************************************************************//* This software module was originally developed by                          *//*   Takehiro Moriya (NTT)                                                   *//* and edited by                                                             *//*   Naoki Iwakami and Satoshi Miki (NTT) on 1996-05-01,                     *//*   Naoki Iwakami (NTT) on 1996-08-27,                                      *//*   Naoki Iwakami (NTT) on 1997-04-18,                                      *//*   Takehiro Moriya (NTT) on 1997-08-01,                                    *//*   Naoki Iwakami (NTT) on 1997-08-25,                                      *//*   Takehiro Moriya (NTT) on 1997-10-14,                                    *//* 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.                                                        *//*****************************************************************************//* 25-aug-97   NI   bugfixes */#include <math.h>#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 "ntt_conf.h"void     ntt_extend_pitch(	      /* Input */	      int     index_pit[], 	      double  reconst[], 	      int    numChannel,	      int    block_size_samples,	      int    isampf,	      double  bandUpper,	      /* Output */	      double  pit_seq[]){    /*--- Variables ---*/    int	   i_smp;    float dtmp, pitch;    float tmpnp0, tmpnp1;    int npcount, iscount, top, ptop;    int i_sup, ii,jj;    float fcmin, fcmax, fctmp0, fctmp1;    float bandwidth;    fctmp1 = (float)block_size_samples/(float)isampf;    fctmp0 = 1./(float)log(2.);    fcmin = (float)log(fctmp1*0.2)*fctmp0;    fcmax = (float)log(fctmp1*2.4)*fctmp0;    bandwidth =4.0;    if(isampf==8) bandwidth=1.5;    if(isampf>=11) bandwidth=2.;    if(isampf>=22) bandwidth=4.;    if(bandwidth < (float)(1./bandUpper)) bandwidth = (float)(1./bandUpper);    for(i_sup=0; i_sup< numChannel; i_sup++){        top = i_sup * block_size_samples;	ptop = i_sup * ntt_N_FR_P;	dtmp = (float)index_pit[i_sup] / (float) ntt_BASF_STEP;	fctmp0 =  fcmax-fcmin;	dtmp = dtmp * fctmp0;	dtmp = dtmp  + fcmin;	pitch = (float)pow(2., dtmp);	tmpnp0 = pitch*bandwidth;	tmpnp1 = tmpnp0/(float)block_size_samples;	tmpnp0 = (float)ntt_N_FR_P*tmpnp1;	npcount = (int)tmpnp0;	iscount=0;        for (jj=0; jj<block_size_samples; jj++){		    pit_seq[jj+top] = 0.0;        }        for (jj=0; jj<npcount/2; jj++){		    pit_seq[jj+top] = reconst[jj+ptop];		    iscount ++;        }        for (ii=0; ii<(ntt_N_FR_P )&& (iscount<ntt_N_FR_P); ii++){	    tmpnp0 = pitch*(float)(ii+1);	    tmpnp0 += 0.5;	    i_smp = (int)(tmpnp0);	    if(i_smp+(npcount-1)/2+1>=block_size_samples) continue;            for (jj=-npcount/2; jj<(npcount-1)/2+1; jj++){	       pit_seq[i_smp+jj+top] = reconst[iscount+ptop];               iscount ++;	       if(iscount >= ntt_N_FR_P) break;	    }        }    }}

⌨️ 快捷键说明

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