window.c

来自「windows mobile上很好用的音频播放器希望大家会喜欢」· C语言 代码 · 共 85 行

C
85
字号
/******************************************************************** *                                                                  * * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE.   * *                                                                  * * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     * * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       * *                                                                  * * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002    * * BY THE Xiph.Org FOUNDATION http://www.xiph.org/                  * *                                                                  * ******************************************************************** function: window functions ********************************************************************/#include <stdlib.h>#include <math.h>#include "os.h"#include "misc.h"#include "window.h"#include "window_lookup.h"const void *_vorbis_window(int type, int left){  switch(type){  case 0:    switch(left){    case 32:      return vwin64;    case 64:      return vwin128;    case 128:      return vwin256;    case 256:      return vwin512;    case 512:      return vwin1024;    case 1024:      return vwin2048;    case 2048:      return vwin4096;    case 4096:      return vwin8192;    default:      return(0);    }    break;  default:    return(0);  }}void _vorbis_apply_window(ogg_int32_t *d,const void *window_p[2],			  long *blocksizes,			  int lW,int W,int nW){    LOOKUP_T *window[2]={window_p[0],window_p[1]};  long n=blocksizes[W];  long ln=blocksizes[lW];  long rn=blocksizes[nW];  long leftbegin=n/4-ln/4;  long leftend=leftbegin+ln/2;  long rightbegin=n/2+n/4-rn/4;  long rightend=rightbegin+rn/2;    int i,p;  for(i=0;i<leftbegin;i++)    d[i]=0;  for(p=0;i<leftend;i++,p++)    d[i]=MULT31(d[i],window[lW][p]);  for(i=rightbegin,p=rn/2-1;i<rightend;i++,p--)    d[i]=MULT31(d[i],window[nW][p]);  for(;i<n;i++)    d[i]=0;}

⌨️ 快捷键说明

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