⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpegaudiodec.h

📁 au1200 linux2.6.11 硬件解码mae驱动和maiplayer播放器源码
💻 H
📖 第 1 页 / 共 2 页
字号:
    asm volatile ("msub %0, %1"::"r"((w32)[6 * 64]), "r"(pp[6 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[7 * 64]), "r"(pp[7 * 64])); \    asm volatile ("mfhi %0":"=r"(sum));\    asm volatile ("sll %0, %1, 8":"=r"(sum):"r"(sum));\    asm volatile ("mflo %0":"=r"(tmp));\    asm volatile ("srl %0, %1, 24":"=r"(tmp):"r"(tmp));\    asm volatile ("or %0, %1, %2":"=r"(sum):"r"(sum), "r"(tmp));\  }  #define SUM16B(w32) \  { \    int tmp;\    pp = synth_buf + 16 + j; \    tmp = -pp[0 * 64]; \    asm volatile ("mult %0, %1"::"r"((w2)[0 * 64]), "r"(tmp)); \    asm volatile ("msub %0, %1"::"r"((w2)[1 * 64]), "r"(pp[1 * 64])); \    asm volatile ("msub %0, %1"::"r"((w2)[2 * 64]), "r"(pp[2 * 64])); \    asm volatile ("msub %0, %1"::"r"((w2)[3 * 64]), "r"(pp[3 * 64])); \    asm volatile ("msub %0, %1"::"r"((w2)[4 * 64]), "r"(pp[4 * 64])); \    asm volatile ("msub %0, %1"::"r"((w2)[5 * 64]), "r"(pp[5 * 64])); \    asm volatile ("msub %0, %1"::"r"((w2)[6 * 64]), "r"(pp[6 * 64])); \    asm volatile ("msub %0, %1"::"r"((w2)[7 * 64]), "r"(pp[7 * 64])); \    pp = synth_buf + 48 - j; \    asm volatile ("msub %0, %1"::"r"((w32)[0 * 64]), "r"(pp[0 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[1 * 64]), "r"(pp[1 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[2 * 64]), "r"(pp[2 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[3 * 64]), "r"(pp[3 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[4 * 64]), "r"(pp[4 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[5 * 64]), "r"(pp[5 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[6 * 64]), "r"(pp[6 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[7 * 64]), "r"(pp[7 * 64])); \    asm volatile ("mfhi %0":"=r"(sum2));\    asm volatile ("sll %0, %1, 8":"=r"(sum2):"r"(sum2));\    asm volatile ("mflo %0":"=r"(tmp));\    asm volatile ("srl %0, %1, 24":"=r"(tmp):"r"(tmp));\    asm volatile ("or %0, %1, %2":"=r"(sum2):"r"(sum2), "r"(tmp));\  }  #define SUM8M(w32) \  { \    int tmp;\    pp = synth_buf + 32; \    tmp = -pp[0 * 64]; \    asm volatile ("mult %0, %1"::"r"((w32)[0 * 64]), "r"(tmp)); \    asm volatile ("msub %0, %1"::"r"((w32)[1 * 64]), "r"(pp[1 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[2 * 64]), "r"(pp[2 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[3 * 64]), "r"(pp[3 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[4 * 64]), "r"(pp[4 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[5 * 64]), "r"(pp[5 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[6 * 64]), "r"(pp[6 * 64])); \    asm volatile ("msub %0, %1"::"r"((w32)[7 * 64]), "r"(pp[7 * 64])); \    asm volatile ("mfhi %0":"=r"(sum));\    asm volatile ("sll %0, %1, 8":"=r"(sum):"r"(sum));\    asm volatile ("mflo %0":"=r"(tmp));\    asm volatile ("srl %0, %1, 24":"=r"(tmp):"r"(tmp));\    asm volatile ("or %0, %1, %2":"=r"(sum):"r"(sum), "r"(tmp));\  }  #define INT_MULTC4P(rr,aa,bb,cc,dd,ee,ff,gg,hh) \  {\    asm volatile ("mult %0, %1"::"r"(aa), "r"(bb));\    asm volatile ("madd %0, %1"::"r"(cc), "r"(dd));\    asm volatile ("madd %0, %1"::"r"(ee), "r"(ff));\    asm volatile ("madd %0, %1"::"r"(gg), "r"(hh));\    asm volatile ("mfhi %0":"=r"(rr));\    asm volatile ("sll %0, %1, 9":"=r"(rr):"r"(rr));\  }    #define CINT_MULTC4P(rr,aa,bb,cc,dd,ee,ff,gg,hh) \  {\    int tmp;\    asm volatile ("mult %0, %1"::"r"(aa), "r"(bb));\    asm volatile ("madd %0, %1"::"r"(cc), "r"(dd));\    asm volatile ("madd %0, %1"::"r"(ee), "r"(ff));\    asm volatile ("madd %0, %1"::"r"(gg), "r"(hh));\    asm volatile ("mfhi %0":"=r"(rr));\    asm volatile ("sll %0, %1, 9":"=r"(rr):"r"(rr));\    asm volatile ("mflo %0":"=r"(tmp));\    asm volatile ("srl %0, %1, 23":"=r"(tmp):"r"(tmp));\    asm volatile ("or %0, %1, %2":"=r"(rr):"r"(rr), "r"(tmp));\  }    #define INT_MULTC6P(rr,aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll) \  {\    asm volatile ("mult %0, %1"::"r"(aa), "r"(bb));\    asm volatile ("madd %0, %1"::"r"(cc), "r"(dd));\    asm volatile ("madd %0, %1"::"r"(ee), "r"(ff));\    asm volatile ("madd %0, %1"::"r"(gg), "r"(hh));\    asm volatile ("madd %0, %1"::"r"(ii), "r"(jj));\    asm volatile ("madd %0, %1"::"r"(kk), "r"(ll));\    asm volatile ("mfhi %0":"=r"(rr));\    asm volatile ("sll %0, %1, 9":"=r"(rr):"r"(rr));\  }    #define CINT_MULTC6P(rr,aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll) \  {\    int tmpi;\    asm volatile ("mult %0, %1"::"r"(aa), "r"(bb));\    asm volatile ("madd %0, %1"::"r"(cc), "r"(dd));\    asm volatile ("madd %0, %1"::"r"(ee), "r"(ff));\    asm volatile ("madd %0, %1"::"r"(gg), "r"(hh));\    asm volatile ("madd %0, %1"::"r"(ii), "r"(jj));\    asm volatile ("madd %0, %1"::"r"(kk), "r"(ll));\    asm volatile ("mfhi %0":"=r"(rr));\    asm volatile ("sll %0, %1, 9":"=r"(rr):"r"(rr));\    asm volatile ("mflo %0":"=r"(tmpi));\    asm volatile ("srl %0, %1, 23":"=r"(tmpi):"r"(tmpi));\    asm volatile ("or %0, %1, %2":"=r"(rr):"r"(rr), "r"(tmpi));\  }#endif#if FRAC_BITS <= 15  typedef int16_t MPA_INT;#else  typedef int32_t MPA_INT;#endif/****************/#define HEADER_SIZE 4#define BACKSTEP_SIZE 512typedef struct MPEG_codecContext {    struct MPEG_codec *codec;    void *priv_data;    int parse_only; /* - decoding only: if true, only parsing is done                       (function avcodec_parse_frame()). The frame                       data is returned. Only MPEG codecs support this now. */} MPEG_codecContext;typedef struct MPADecodeContext {    uint8_t inbuf1[2][MPA_MAX_CODED_FRAME_SIZE + BACKSTEP_SIZE]; /* input buffer */    int inbuf_index;    uint8_t *inbuf_ptr;    uint8_t *inbuf;    uint8_t *outbuf;    int frame_size;    int keep_frame_size;    int old_frame_size;    int frame_count;    int free_format_frame_size; /* frame size in case of free format (zero if currently unknown) */    /* next header (used in free format parsing) */    uint32_t free_format_next_header;     int error_protection;    int layer;    int sample_rate;    int sample_rate_index; /* between 0 and 8 */    int bit_rate;    int bit_rate_counter;    GetBitContext gb;    int nb_channels;    int mode;    int mode_ext;    int lsf;    int emphasis;    int sbr;    int vbr;    int mpeg25;    MPA_INT synth_buf[MPA_MAX_CHANNELS][512 * 2];    int synth_buf_offset[MPA_MAX_CHANNELS];    int32_t sb_samples[MPA_MAX_CHANNELS][36][SBLIMIT];    int32_t mdct_buf[MPA_MAX_CHANNELS][SBLIMIT * 18]; /* previous samples, for layer 3 MDCT */} MPADecodeContext;typedef struct MPEG_codec {  MPEG_codecContext context;  MPADecodeContext decode_context;} MPEG_codec;/* layer 3 "granule" */typedef struct GranuleDef {    int part2_3_length;    int big_values;    int global_gain;    int scalefac_compress;    int table_select[3];    int subblock_gain[3];    int region_size[3]; /* number of huffman codes in each region */    int preflag;    int short_start, long_end; /* long/short band indexes */    uint32_t scfsi;    uint32_t block_type;    uint32_t switch_point;    uint32_t scalefac_scale;    uint32_t count1table_select;    uint32_t scale_factors[40];    int32_t sb_hybrid[SBLIMIT * 18]; /* 576 samples */} GranuleDef;#define MODE_EXT_MS_STEREO 2#define MODE_EXT_I_STEREO  1/* layer 3 huffman tables */typedef struct HuffTable {    int xsize;    const uint8_t *bits;    const uint16_t *codes;} HuffTable;/* from mpegaudalloc.c */extern int avcodec_close(MPEG_codecContext *avctx);extern int avcodec_open(MPEG_codecContext *avctx, MPEG_codec *codec);/* from mpegaudgentab.c *//* all integer n^(4/3) computation code */#define DEV_ORDER 13#define TABLE_4_3_SIZE (8191 + 16)extern uint32_t scale_factor_modshift[64];extern int32_t scale_factor_mult[15][3];extern int window[512];extern uint32_t band_index_long[9][23];extern int8_t table_4_3_exp[TABLE_4_3_SIZE];extern unsigned int table_4_3_value[TABLE_4_3_SIZE];extern int32_t is_table[2][16];extern int32_t is_table_lsf[2][2][16];extern int32_t csa_table[8][2];extern int32_t mdct_win[8][36];/* from mpegaudtab.c */extern int32_t scale_factor_mult2[3][3];extern const uint16_t mpa_freq_tab[3];extern const uint16_t mpa_bitrate_tab[2][3][15];extern const int sblimit_table[5];extern const unsigned char *alloc_tables[5];extern const int quant_bits[17];extern const int quant_steps[17];extern const uint8_t band_size_long[9][22];extern const uint8_t mpa_pretab[2][22];extern const uint8_t band_size_short[9][13];extern const uint8_t mpa_huff_data[32][2];extern const uint8_t slen_table[2][16];extern const uint8_t lsf_nsf_table[6][3][4];extern uint32_t scale_factor_mult3[4];#define MAX_HUFF_STATIC_SIZE (260)extern uint8_t huff_code_table[16][MAX_HUFF_STATIC_SIZE];extern VLC huff_vlc[16]; extern VLC huff_quad_vlc[2];extern uint8_t mpa_quad_bits[2][16];extern uint8_t mpa_quad_codes[2][16];extern const HuffTable mpa_huff_tables[16];extern MPEG_codec mpeg_decoder;extern int frame_number;  extern int avcodec_decode_audio(MPEG_codecContext *avctx, int16_t *samples, int *frame_size_ptr, uint8_t *buf, int buf_size);/* mpegbits.c */extern void init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size);extern unsigned int get_bits(GetBitContext *s, int n);extern void skip_bits(GetBitContext *s, int n);extern int get_vlc(GetBitContext *s, VLC *vlc);extern unsigned int get_bits1(GetBitContext *s);extern int get_bitsz(GetBitContext *s, int n);/* mpegdct.c */extern int l3_unscale(int value, int exponent);extern int l2_unscale_group(int steps, int mant, int scale_factor);extern int l1_unscale(int n, int mant, int scale_factor);extern void dct32(int32_t *out, int32_t *tab);extern void imdct36(int *out, int *in);extern void imdct12(int *out, int *in);extern void compute_imdct(MPADecodeContext *s, GranuleDef *g, int32_t *sb_samples, int32_t *mdct_buf);/* mpegsynth.c */extern void synth_filter(int *synth_buf, int *offset, int16_t *samples, int incr, int *tmp);extern void init_ignore_buffer_count(int rate, int channels, int absolute);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -