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

📄 psy.h

📁 fix point版本的Ogg Vorbis decoder
💻 H
字号:
/******************************************************************** *                                                                  * * THIS FILE IS PART OF THE OggVorbis SOFTWARE 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 SOURCE CODE IS (C) COPYRIGHT 1994-2001             * * by the XIPHOPHORUS Company http://www.xiph.org/                  * *                                                                  * ******************************************************************** function: random psychoacoustics (not including preecho) last mod: $Id: psy.h,v 1.28 2002/03/29 07:10:39 xiphmont Exp $ ********************************************************************/#ifndef _V_PSY_H_#define _V_PSY_H_#include "smallft.h"#include "backends.h"#include "envelope.h"#ifndef EHMER_MAX#define EHMER_MAX 56#endif/* psychoacoustic setup ********************************************/#define MAX_BARK 27#define P_BANDS 17#define P_LEVELS 11typedef struct vp_couple{  int limit;        /* sample post */  int outofphase_redundant_flip_p;  float outofphase_requant_limit;  float amppost_point;  } vp_couple;typedef struct vp_couple_pass{    float granulem;  float igranulem;  vp_couple couple_pass[8];} vp_couple_pass;typedef struct vp_attenblock{  float block[P_BANDS][P_LEVELS];} vp_attenblock;#define NOISE_COMPAND_LEVELS 40typedef struct vorbis_info_psy{  float  ath[27];  float  ath_adjatt;  float  ath_maxatt;  float tone_masteratt;  float tone_guard;  float tone_abs_limit;  vp_attenblock toneatt;  int peakattp;  int curvelimitp;  vp_attenblock peakatt;  int noisemaskp;  float noisemaxsupp;  float noisewindowlo;  float noisewindowhi;  int   noisewindowlomin;  int   noisewindowhimin;  int   noisewindowfixed;  float noiseoff[P_BANDS];  float noisecompand[NOISE_COMPAND_LEVELS];  float max_curve_dB;  vp_couple_pass couple_pass[8];} vorbis_info_psy;typedef struct{  int       eighth_octave_lines;  /* for block long/short tuning; encode only */  float     preecho_thresh[VE_BANDS];  float     postecho_thresh[VE_BANDS];  float     stretch_penalty;  float     preecho_minenergy;  float     ampmax_att_per_sec;  /* delay caching... how many samples to keep around prior to our     current block to aid in analysis? */  int       delaycache;} vorbis_info_psy_global;typedef struct {  float   ampmax;  int     channels;  vorbis_info_psy_global *gi;} vorbis_look_psy_global;typedef struct {  int n;  struct vorbis_info_psy *vi;  float ***tonecurves;  float *noisethresh;  float *noiseoffset;  float *ath;  long  *octave;             /* in n.ocshift format */  long  *bark;  long  firstoc;  long  shiftoc;  int   eighth_octave_lines; /* power of two, please */  int   total_octave_lines;    long  rate; /* cache it */} vorbis_look_psy;extern void   _vp_psy_init(vorbis_look_psy *p,vorbis_info_psy *vi,			   vorbis_info_psy_global *gi,int n,long rate);extern void   _vp_psy_clear(vorbis_look_psy *p);extern void  *_vi_psy_dup(void *source);extern void   _vi_psy_free(vorbis_info_psy *i);extern vorbis_info_psy *_vi_psy_copy(vorbis_info_psy *i);extern void _vp_remove_floor(vorbis_look_psy *p,			     float *mdct,			     float *codedflr,			     float *residue);extern void   _vp_compute_mask(vorbis_look_psy *p,			       float *fft, 			       float *mdct, 			       float *mask, 			       float global_specmax,			       float local_specmax,			       float bitrate_noise_offset);extern void _vp_quantize_couple(vorbis_look_psy *p,			 vorbis_info_mapping0 *vi,			 float **pcm,			 float **sofar,			 float **quantized,			 int   *nonzero,			 int   passno);extern float _vp_ampmax_decay(float amp,vorbis_dsp_state *vd);#endif

⌨️ 快捷键说明

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