dcahuff.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * DCA compatible decoder - huffman tables
  3. * Copyright (C) 2004 Gildas Bazin
  4. * Copyright (C) 2007 Konstantin Shishkov
  5. *
  6. * This file is part of FFmpeg.
  7. *
  8. * FFmpeg is free software; you can redistribute it and/or
  9. * modify it under the terms of the GNU Lesser General Public
  10. * License as published by the Free Software Foundation; either
  11. * version 2.1 of the License, or (at your option) any later version.
  12. *
  13. * FFmpeg is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  16. * Lesser General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Lesser General Public
  19. * License along with FFmpeg; if not, write to the Free Software
  20. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  21. */
  22. #ifndef AVCODEC_DCAHUFF_H
  23. #define AVCODEC_DCAHUFF_H
  24. #include "libavutil/common.h"
  25. #include "avcodec.h"
  26. #include "get_bits.h"
  27. #include "put_bits.h"
  28. #define DCA_CODE_BOOKS 10
  29. #define DCA_BITALLOC_12_COUNT 5
  30. typedef struct DCAVLC {
  31. int offset; ///< Code values offset
  32. int max_depth; ///< Parameter for get_vlc2()
  33. VLC vlc[7]; ///< Actual codes
  34. } DCAVLC;
  35. extern DCAVLC ff_dca_vlc_bit_allocation;
  36. extern DCAVLC ff_dca_vlc_transition_mode;
  37. extern DCAVLC ff_dca_vlc_scale_factor;
  38. extern DCAVLC ff_dca_vlc_quant_index[DCA_CODE_BOOKS];
  39. extern VLC ff_dca_vlc_tnl_grp[5];
  40. extern VLC ff_dca_vlc_tnl_scf;
  41. extern VLC ff_dca_vlc_damp;
  42. extern VLC ff_dca_vlc_dph;
  43. extern VLC ff_dca_vlc_fst_rsd_amp;
  44. extern VLC ff_dca_vlc_rsd_apprx;
  45. extern VLC ff_dca_vlc_rsd_amp;
  46. extern VLC ff_dca_vlc_avg_g3;
  47. extern VLC ff_dca_vlc_st_grid;
  48. extern VLC ff_dca_vlc_grid_2;
  49. extern VLC ff_dca_vlc_grid_3;
  50. extern VLC ff_dca_vlc_rsd;
  51. av_cold void ff_dca_init_vlcs(void);
  52. uint32_t ff_dca_vlc_calc_quant_bits(int *values, uint8_t n, uint8_t sel, uint8_t abits);
  53. void ff_dca_vlc_enc_quant(PutBitContext *pb, int *values, uint8_t n, uint8_t sel, uint8_t abits);
  54. uint32_t ff_dca_vlc_calc_alloc_bits(int *values, uint8_t n, uint8_t sel);
  55. void ff_dca_vlc_enc_alloc(PutBitContext *pb, int *values, uint8_t n, uint8_t sel);
  56. #endif /* AVCODEC_DCAHUFF_H */