envelope.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  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-2001 *
  9. * by the XIPHOPHORUS Company http://www.xiph.org/ *
  10. ********************************************************************
  11. function: PCM data envelope analysis and manipulation
  12. last mod: $Id: envelope.h,v 1.16.10.1 2001/12/11 08:19:39 xiphmont Exp $
  13. ********************************************************************/
  14. #ifndef _V_ENVELOPE_
  15. #define _V_ENVELOPE_
  16. #include "iir.h"
  17. #include "smallft.h"
  18. typedef struct {
  19. int ch;
  20. int winlength;
  21. int searchstep;
  22. float minenergy;
  23. IIR_state *iir;
  24. float **filtered;
  25. long storage;
  26. long current;
  27. long mark;
  28. long prevmark;
  29. long cursor;
  30. } envelope_lookup;
  31. extern void _ve_envelope_init(envelope_lookup *e,vorbis_info *vi);
  32. extern void _ve_envelope_clear(envelope_lookup *e);
  33. extern long _ve_envelope_search(vorbis_dsp_state *v);
  34. extern void _ve_envelope_shift(envelope_lookup *e,long shift);
  35. extern int _ve_envelope_mark(vorbis_dsp_state *v);
  36. #endif