You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.4KB

  1. /**
  2. * @file mpegaudio.h
  3. * mpeg audio declarations for both encoder and decoder.
  4. */
  5. /* max frame size, in samples */
  6. #define MPA_FRAME_SIZE 1152
  7. /* max compressed frame size */
  8. #define MPA_MAX_CODED_FRAME_SIZE 1792
  9. #define MPA_MAX_CHANNELS 2
  10. #define SBLIMIT 32 /* number of subbands */
  11. #define MPA_STEREO 0
  12. #define MPA_JSTEREO 1
  13. #define MPA_DUAL 2
  14. #define MPA_MONO 3
  15. /* header + layer + bitrate + freq + lsf/mpeg25 */
  16. #define SAME_HEADER_MASK \
  17. (0xffe00000 | (3 << 17) | (0xf << 12) | (3 << 10) | (3 << 19))
  18. int l2_select_table(int bitrate, int nb_channels, int freq, int lsf);
  19. int mpa_decode_header(AVCodecContext *avctx, uint32_t head);
  20. extern const uint16_t mpa_bitrate_tab[2][3][15];
  21. extern const uint16_t mpa_freq_tab[3];
  22. extern const unsigned char *alloc_tables[5];
  23. extern const double enwindow[512];
  24. extern const int sblimit_table[5];
  25. extern const int quant_steps[17];
  26. extern const int quant_bits[17];
  27. extern const int32_t mpa_enwindow[257];
  28. /* fast header check for resync */
  29. static inline int ff_mpa_check_header(uint32_t header){
  30. /* header */
  31. if ((header & 0xffe00000) != 0xffe00000)
  32. return -1;
  33. /* layer check */
  34. if ((header & (3<<17)) == 0)
  35. return -1;
  36. /* bit rate */
  37. if ((header & (0xf<<12)) == 0xf<<12)
  38. return -1;
  39. /* frequency */
  40. if ((header & (3<<10)) == 3<<10)
  41. return -1;
  42. return 0;
  43. }