ima_oki_adpcm.h
上传用户:shw771010
上传日期:2022-01-05
资源大小:991k
文件大小:2k
源码类别:

Audio

开发平台:

Unix_Linux

  1. /*
  2. ** Copyright (c) 2007 <robs@users.sourceforge.net>
  3. ** Copyright (C) 2007-2009 Erik de Castro Lopo <erikd@mega-nerd.com>
  4. **
  5. ** This library is free software; you can redistribute it and/or modify it
  6. ** under the terms of the GNU Lesser General Public License as published by
  7. ** the Free Software Foundation; either version 2 of the License, or (at
  8. ** your option) any later version.
  9. **
  10. ** This library is distributed in the hope that it will be useful, but
  11. ** WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
  13. ** General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU Lesser General Public License
  16. ** along with this library.  If not, write to the Free Software Foundation,
  17. ** Fifth Floor, 51 Franklin Street, Boston, MA 02111-1301, USA.
  18. */
  19. /* ADPCM: IMA, OKI <==> 16-bit PCM. */
  20. #define IMA_OKI_ADPCM_CODE_LEN 256
  21. #define IMA_OKI_ADPCM_PCM_LEN (IMA_OKI_ADPCM_CODE_LEN *2)
  22. typedef struct
  23. {
  24. /* private: */
  25. int mask ;
  26. int last_output ;
  27. int step_index ;
  28. int max_step_index ;
  29. int const * steps ;
  30. /* public: */
  31. int errors ;
  32. int code_count, pcm_count ;
  33. unsigned char codes [IMA_OKI_ADPCM_CODE_LEN] ;
  34. short  pcm [IMA_OKI_ADPCM_PCM_LEN] ;
  35. } IMA_OKI_ADPCM ;
  36. typedef enum
  37. { IMA_OKI_ADPCM_TYPE_IMA,
  38. IMA_OKI_ADPCM_TYPE_OKI
  39. } IMA_OKI_ADPCM_TYPE ;
  40. void ima_oki_adpcm_init (IMA_OKI_ADPCM * state, IMA_OKI_ADPCM_TYPE type) ;
  41. int adpcm_decode (IMA_OKI_ADPCM * state, int /* 0..15 */ code) ;
  42. int adpcm_encode (IMA_OKI_ADPCM * state, int /* -32768..32767 */ sample) ;
  43. void ima_oki_adpcm_decode_block (IMA_OKI_ADPCM * state) ;
  44. void ima_oki_adpcm_encode_block (IMA_OKI_ADPCM * state) ;