codebook.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /********************************************************************
  2. * *
  3. * THIS FILE IS PART OF THE OggVorbis 'TREMOR' CODEC SOURCE CODE. *
  4. * *
  5. * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
  6. * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
  7. * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
  8. * *
  9. * THE OggVorbis 'TREMOR' SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
  10. * BY THE Xiph.Org FOUNDATION http://www.xiph.org/ *
  11. * *
  12. ********************************************************************
  13. function: basic shared codebook operations
  14. ********************************************************************/
  15. #ifndef _V_CODEBOOK_H_
  16. #define _V_CODEBOOK_H_
  17. #include "ogg.h"
  18. typedef struct codebook{
  19. /* Top 15 used in ARM code */
  20. int dec_maxlength;
  21. void *dec_table;
  22. int dec_method;
  23. int dec_type; /* 0 = entry number
  24. 1 = packed vector of values
  25. 2 = packed vector of column offsets, maptype 1
  26. 3 = scalar offset into value array, maptype 2 */
  27. int q_bits;
  28. long dim; /* codebook dimensions (elements per vector) */
  29. int q_delp;
  30. int q_minp;
  31. ogg_int32_t q_del;
  32. ogg_int32_t q_min;
  33. int q_seq;
  34. int q_pack;
  35. void *q_val;
  36. long used_entries; /* populated codebook entries */
  37. ogg_int32_t *dec_buf;
  38. /* C only */
  39. int dec_nodeb;
  40. int dec_leafw;
  41. long entries; /* codebook entries */
  42. } codebook;
  43. extern void vorbis_book_clear(codebook *b);
  44. extern int vorbis_book_unpack(oggpack_buffer *b,codebook *c);
  45. extern long vorbis_book_decode(codebook *book, oggpack_buffer *b);
  46. extern long vorbis_book_decodevs_add(codebook *book, ogg_int32_t *a,
  47. oggpack_buffer *b,int n,int point);
  48. extern long vorbis_book_decodev_set(codebook *book, ogg_int32_t *a,
  49. oggpack_buffer *b,int n,int point);
  50. extern long vorbis_book_decodev_add(codebook *book, ogg_int32_t *a,
  51. oggpack_buffer *b,int n,int point);
  52. extern long vorbis_book_decodevv_add(codebook *book, ogg_int32_t **a,
  53. long off,int ch,
  54. oggpack_buffer *b,int n,int point);
  55. extern int _ilog(unsigned int v);
  56. #endif