Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/libvorbis-1.2.0/lib/envelope.h @ 16

Last change on this file since 16 was 16, checked in by landauf, 16 years ago

added libvorbis

File size: 2.1 KB
Line 
1/********************************************************************
2 *                                                                  *
3 * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE.   *
4 * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS     *
5 * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
6 * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING.       *
7 *                                                                  *
8 * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007             *
9 * by the Xiph.Org Foundation http://www.xiph.org/                  *
10 *                                                                  *
11 ********************************************************************
12
13 function: PCM data envelope analysis and manipulation
14 last mod: $Id: envelope.h 13293 2007-07-24 00:09:47Z xiphmont $
15
16 ********************************************************************/
17
18#ifndef _V_ENVELOPE_
19#define _V_ENVELOPE_
20
21#include "mdct.h"
22
23#define VE_PRE    16
24#define VE_WIN    4
25#define VE_POST   2
26#define VE_AMP    (VE_PRE+VE_POST-1)
27
28#define VE_BANDS  7
29#define VE_NEARDC 15
30
31#define VE_MINSTRETCH 2   /* a bit less than short block */
32#define VE_MAXSTRETCH 12  /* one-third full block */
33
34typedef struct {
35  float ampbuf[VE_AMP];
36  int   ampptr;
37
38  float nearDC[VE_NEARDC];
39  float nearDC_acc;
40  float nearDC_partialacc;
41  int   nearptr;
42
43} envelope_filter_state;
44
45typedef struct {
46  int begin;
47  int end;
48  float *window;
49  float total;
50} envelope_band;
51
52typedef struct {
53  int ch;
54  int winlength;
55  int searchstep;
56  float minenergy;
57
58  mdct_lookup  mdct;
59  float       *mdct_win;
60
61  envelope_band          band[VE_BANDS];
62  envelope_filter_state *filter;
63  int   stretch;
64
65  int                   *mark;
66
67  long storage;
68  long current;
69  long curmark;
70  long cursor;
71} envelope_lookup;
72
73extern void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi);
74extern void _ve_envelope_clear(envelope_lookup *e);
75extern long _ve_envelope_search(vorbis_dsp_state *v);
76extern void _ve_envelope_shift(envelope_lookup *e,long shift);
77extern int  _ve_envelope_mark(vorbis_dsp_state *v);
78
79
80#endif
81
Note: See TracBrowser for help on using the repository browser.