亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wmadeci.c

?? wma定點解碼算法
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*************************************************************************** *             __________               __   ___. *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  / *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  < *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \ *                     \/            \/     \/    \/            \/ * $Id: $ * * Copyright (C) 2005 Dave Chapman * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************//* * WMA decoder : Fixed (16.16) point decoding based originally on the ffmpeg * WMA decoder source : http://ffmpeg.sourceforge.net. * This version 01/04/06 Marsdaddy <pajojo@gmail.com> */#include "malloc.h"#include "memory.h"/* size of blocks */#define BLOCK_MIN_BITS 7#define BLOCK_MAX_BITS 11#define BLOCK_MAX_SIZE (1 << BLOCK_MAX_BITS)#define BLOCK_NB_SIZES (BLOCK_MAX_BITS - BLOCK_MIN_BITS + 1)#define HIGH_BAND_MAX_SIZE 16#define NB_LSP_COEFS 10#define MAX_CODED_SUPERFRAME_SIZE 16384#define M_PI_F  0x3243f /* in fixed 32 format */#define MAX_CHANNELS 2#define NOISE_TAB_SIZE 8192#define LSP_POW_BITS 7#define VLC_TYPE int16_ttypedef unsigned char uint8_t;typedef char int8_t;typedef unsigned short uint16_t;typedef short int16_t;typedef long long int64_t;typedef int int32_t;typedef unsigned int uint32_t;typedef unsigned long long uint64_t;#define fixed32         int32_t#define fixed64         int64_t#include "codeccontext.h"#include "wmadeci.h"#define IGNORE_OVERFLOW#define FAST_FILTERS#define PRECISION       16#define PRECISION64     16static fixed64 IntTo64(int x){    fixed64 res = 0;    unsigned char *p = (unsigned char *)&res;    p[2] = x & 0xff;    p[3] = (x & 0xff00)>>8;    p[4] = (x & 0xff0000)>>16;    p[5] = (x & 0xff000000)>>24;    return res;}static int IntFrom64(fixed64 x){    int res = 0;    unsigned char *p = (unsigned char *)&x;    res = p[2] | (p[3]<<8) | (p[4]<<16) | (p[5]<<24);    return res;}static fixed32 Fixed32From64(fixed64 x){  return x & 0xFFFFFFFF;}static fixed64 Fixed32To64(fixed32 x){  return (fixed64)x;}#define itofix64(x)       (IntTo64(x))#define itofix32(x)       ((x) << PRECISION)#define fixtoi32(x)       ((x) >> PRECISION)#define fixtoi64(x)       (IntFrom64(x))static fixed64 fixmul64byfixed(fixed64 x, fixed32 y){    return x * y;}/* Portions of this 32 bit fixed code modified from the GPL Hawksoftsource <http://www.hawkfost.com> by Phil Frisbie, Jr. <phil@hawksoft.com> */static fixed32 fixmul32(fixed32 x, fixed32 y){    fixed64 temp;    temp = x;    temp *= y;    temp >>= PRECISION;#ifndef IGNORE_OVERFLOW    if(temp > 0x7fffffff)    {        return 0x7fffffff;    }    else if(temp < -0x7ffffffe)    {        return -0x7ffffffe;    }#endif    return (fixed32)temp;}static fixed32 fixdiv32(fixed32 x, fixed32 y){    fixed64 temp;    if(x == 0)        return 0;    if(y == 0)        return 0x7fffffff;    temp = x;    temp <<= PRECISION;    return (fixed32)(temp / y);}static fixed64 fixdiv64(fixed64 x, fixed64 y){    fixed64 temp;    if(x == 0)        return 0;    if(y == 0)        return 0x07ffffffffffffffLL;    temp = x;    temp <<= PRECISION64;    return (fixed64)(temp / y);}static fixed32 fixsqrt32(fixed32 x){    unsigned long r = 0, s, v = (unsigned long)x;#define STEP(k) s = r + (1 << k * 2); r >>= 1; \    if (s <= v) { v -= s; r |= (1 << k * 2); }    STEP(15);    STEP(14);    STEP(13);    STEP(12);    STEP(11);    STEP(10);    STEP(9);    STEP(8);    STEP(7);    STEP(6);    STEP(5);    STEP(4);    STEP(3);    STEP(2);    STEP(1);    STEP(0);    return (fixed32)(r << (PRECISION / 2));}__inline fixed32 fixsin32(fixed32 x){    fixed64 x2, temp;    int     sign = 1;    if(x < 0)    {        sign = -1;        x = -x;    }    while (x > 0x19220)    {        x -= M_PI_F;        sign = -sign;    }    if (x > 0x19220)    {        x = M_PI_F - x;    }    x2 = (fixed64)x * x;    x2 >>= PRECISION;    if(sign != 1)    {        x = -x;    }    /**    temp = ftofix32(-.0000000239f) * x2;    temp >>= PRECISION;    **/    temp = 0; /* PJJ */    temp = (temp + 0x0) * x2;    temp >>= PRECISION;    temp = (temp - 0xd) * x2;    temp >>= PRECISION;    temp = (temp + 0x222) * x2;    temp >>= PRECISION;    temp = (temp - 0x2aab) * x2;    temp >>= PRECISION;    temp += 0x10000;    temp = temp * x;    temp >>= PRECISION;    return  (fixed32)(temp);}__inline fixed32 fixcos32(fixed32 x){    return fixsin32(x - (M_PI_F>>1))*-1;}__inline fixed32 fixasin32(fixed32 x){    fixed64 temp;    int     sign = 1;    if(x > 0x10000 || x < 0xffff0000)    {        return 0;    }    if(x < 0)    {        sign = -1;        x = -x;    }    temp = 0xffffffad * (fixed64)x;    temp >>= PRECISION;    temp = (temp + 0x1b5) * x;    temp >>= PRECISION;    temp = (temp - 0x460) * x;    temp >>= PRECISION;    temp = (temp + 0x7e9) * x;    temp >>= PRECISION;    temp = (temp - 0xcd8) * x;    temp >>= PRECISION;    temp = (temp + 0x16c7) * x;    temp >>= PRECISION;    temp = (temp - 0x36f0) * x;    temp >>= PRECISION;    temp = (temp + 0x19220) * fixsqrt32(0x10000 - x);    temp >>= PRECISION;    return sign * ((M_PI_F>>1) - (fixed32)temp);}#define ALT_BITSTREAM_READER#define unaligned32(a) (*(uint32_t*)(a))uint16_t bswap_16(uint16_t x){    uint16_t hi = x & 0xff00;    uint16_t lo = x & 0x00ff;    return (hi >> 8) | (lo << 8);}uint32_t bswap_32(uint32_t x){    uint32_t b1 = x & 0xff000000;    uint32_t b2 = x & 0x00ff0000;    uint32_t b3 = x & 0x0000ff00;    uint32_t b4 = x & 0x000000ff;    return (b1 >> 24) | (b2 >> 8) | (b3 << 8) | (b4 << 24);}/* PJJ : reinstate macro */void CMUL(fixed32 *pre,          fixed32 *pim,          fixed32 are,          fixed32 aim,          fixed32 bre,          fixed32 bim){    fixed32 _aref = are;    fixed32 _aimf = aim;    fixed32 _bref = bre;    fixed32 _bimf = bim;    fixed32 _r1 = fixmul32(_aref, _bref);    fixed32 _r2 = fixmul32(_aimf, _bimf);    fixed32 _r3 = fixmul32(_aref, _bimf);    fixed32 _r4 = fixmul32(_aimf, _bref);    *pre = _r1 - _r2;    *pim = _r3 + _r4;}#ifdef WORDS_BIGENDIAN#define be2me_16(x) (x)#define be2me_32(x) (x)#define be2me_64(x) (x)#define le2me_16(x) bswap_16(x)#define le2me_32(x) bswap_32(x)#define le2me_64(x) bswap_64(x)#else#define be2me_16(x) bswap_16(x)#define be2me_32(x) bswap_32(x)#define be2me_64(x) bswap_64(x)#define le2me_16(x) (x)#define le2me_32(x) (x)#define le2me_64(x) (x)#endif#define NEG_SSR32(a,s) ((( int32_t)(a))>>(32-(s)))#define NEG_USR32(a,s) (((uint32_t)(a))>>(32-(s)))static inline int unaligned32_be(const void *v){#ifdef CONFIG_ALIGN    const uint8_t *p=v;    return (((p[0]<<8) | p[1])<<16) | (p[2]<<8) | (p[3]);#else    return be2me_32( unaligned32(v)); /* original */#endif}typedef struct GetBitContext{    const uint8_t *buffer, *buffer_end;#ifdef ALT_BITSTREAM_READER    int index;#elif defined LIBMPEG2_BITSTREAM_READER    uint8_t *buffer_ptr;    uint32_t cache;    int bit_count;#elif defined A32_BITSTREAM_READER    uint32_t *buffer_ptr;    uint32_t cache0;    uint32_t cache1;    int bit_count;#endif    int size_in_bits;}GetBitContext;typedef struct VLC{    int bits;    VLC_TYPE (*table)[2];    int table_size, table_allocated;}VLC;typedef struct FFTComplex{    fixed32 re, im;}FFTComplex;typedef struct FFTContext{    int nbits;    int inverse;    uint16_t *revtab;    FFTComplex *exptab;    FFTComplex *exptab1; /* only used by SSE code */    void (*fft_calc)(struct FFTContext *s, FFTComplex *z);}FFTContext;typedef struct MDCTContext{    int n;  /* size of MDCT (i.e. number of input data * 2) */    int nbits; /* n = 2^nbits */    /* pre/post rotation tables */    fixed32 *tcos;    fixed32 *tsin;    FFTContext fft;}MDCTContext;typedef struct WMADecodeContext{    GetBitContext gb;    int sample_rate;    int nb_channels;    int bit_rate;    int version; /* 1 = 0x160 (WMAV1), 2 = 0x161 (WMAV2) */    int block_align;    int use_bit_reservoir;    int use_variable_block_len;    int use_exp_vlc;  /* exponent coding: 0 = lsp, 1 = vlc + delta */    int use_noise_coding; /* true if perceptual noise is added */    int byte_offset_bits;    VLC exp_vlc;    int exponent_sizes[BLOCK_NB_SIZES];    uint16_t exponent_bands[BLOCK_NB_SIZES][25];    int high_band_start[BLOCK_NB_SIZES]; /* index of first coef in high band */    int coefs_start;               /* first coded coef */    int coefs_end[BLOCK_NB_SIZES]; /* max number of coded coefficients */    int exponent_high_sizes[BLOCK_NB_SIZES];    int exponent_high_bands[BLOCK_NB_SIZES][HIGH_BAND_MAX_SIZE];    VLC hgain_vlc;    /* coded values in high bands */    int high_band_coded[MAX_CHANNELS][HIGH_BAND_MAX_SIZE];    int high_band_values[MAX_CHANNELS][HIGH_BAND_MAX_SIZE];    /* there are two possible tables for spectral coefficients */    VLC coef_vlc[2];    uint16_t *run_table[2];    uint16_t *level_table[2];    /* frame info */    int frame_len;       /* frame length in samples */    int frame_len_bits;  /* frame_len = 1 << frame_len_bits */    int nb_block_sizes;  /* number of block sizes */    /* block info */    int reset_block_lengths;    int block_len_bits; /* log2 of current block length */    int next_block_len_bits; /* log2 of next block length */    int prev_block_len_bits; /* log2 of prev block length */    int block_len; /* block length in samples */    int block_num; /* block number in current frame */    int block_pos; /* current position in frame */    uint8_t ms_stereo; /* true if mid/side stereo mode */    uint8_t channel_coded[MAX_CHANNELS]; /* true if channel is coded */    fixed32 exponents[MAX_CHANNELS][BLOCK_MAX_SIZE];    fixed32 max_exponent[MAX_CHANNELS];    int16_t coefs1[MAX_CHANNELS][BLOCK_MAX_SIZE];    fixed32 coefs[MAX_CHANNELS][BLOCK_MAX_SIZE];    MDCTContext mdct_ctx[BLOCK_NB_SIZES];    fixed32 *windows[BLOCK_NB_SIZES];    FFTComplex mdct_tmp[BLOCK_MAX_SIZE]; /* temporary storage for imdct */    /* output buffer for one frame and the last for IMDCT windowing */    fixed32 frame_out[MAX_CHANNELS][BLOCK_MAX_SIZE * 2];    /* last frame info */    uint8_t last_superframe[MAX_CODED_SUPERFRAME_SIZE + 4]; /* padding added */    int last_bitoffset;    int last_superframe_len;    fixed32 noise_table[NOISE_TAB_SIZE];    int noise_index;    fixed32 noise_mult; /* XXX: suppress that and integrate it in the noise array */    /* lsp_to_curve tables */    fixed32 lsp_cos_table[BLOCK_MAX_SIZE];    fixed64 lsp_pow_e_table[256];    fixed64 lsp_pow_m_table1[(1 << LSP_POW_BITS)];    fixed64 lsp_pow_m_table2[(1 << LSP_POW_BITS)];#ifdef TRACE    int frame_count;#endif} WMADecodeContext;/*** Prototypes ***/static void wma_lsp_to_curve_init(WMADecodeContext *s, int frame_len);void fft_calc(FFTContext *s, FFTComplex *z);void av_free(void *ptr); /* PJJ found below */static inline int av_log2(unsigned int v){    int n;    n = 0;    if (v & 0xffff0000)    {        v >>= 16;        n += 16;    }    if (v & 0xff00)    {        v >>= 8;        n += 8;    }    n += ff_log2_tab[v];    return n;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久三级| 一本色道**综合亚洲精品蜜桃冫| 国产成人啪午夜精品网站男同| 色婷婷av一区二区三区大白胸| 欧美va天堂va视频va在线| 夜夜嗨av一区二区三区网页| 国产成人一区二区精品非洲| 欧美日韩你懂的| 亚洲欧美偷拍另类a∨色屁股| 国产一区二区91| 欧美一级二级三级蜜桃| 一区二区三区欧美视频| 成人国产一区二区三区精品| 久久久777精品电影网影网| 九一九一国产精品| 欧美一区二区视频网站| 亚洲成a人片综合在线| 欧美在线视频全部完| 最新久久zyz资源站| 国产精品77777| 精品国产乱子伦一区| 久久精品国产澳门| 欧美一区二区精美| 奇米777欧美一区二区| 69堂精品视频| 免费观看一级欧美片| 欧美日韩视频一区二区| 污片在线观看一区二区| 欧美久久久久久久久中文字幕| 亚洲综合久久久| 在线免费一区三区| 亚洲午夜日本在线观看| 欧美年轻男男videosbes| 亚洲电影一级片| 91精品国产综合久久久久久久久久| 亚洲高清免费观看| 91精品国产丝袜白色高跟鞋| 青娱乐精品视频在线| 欧美不卡一二三| 国产.精品.日韩.另类.中文.在线.播放| 2021久久国产精品不只是精品| 久久99久久99小草精品免视看| 日韩免费在线观看| 国产精品亚洲第一| 亚洲欧洲日韩在线| 欧美性色aⅴ视频一区日韩精品| 亚洲电影欧美电影有声小说| 7878成人国产在线观看| 国产一区二区三区在线观看精品| 国产欧美精品区一区二区三区| a在线欧美一区| 亚洲国产日韩av| 精品久久久久一区| jlzzjlzz亚洲女人18| 亚洲国产精品一区二区久久恐怖片| 欧美日韩免费一区二区三区视频| 美日韩一区二区| 1区2区3区欧美| 在线播放欧美女士性生活| 精品一区二区三区免费| 亚洲色图视频网| 日韩欧美的一区二区| www.亚洲免费av| 日韩电影免费在线观看网站| 久久精品一级爱片| 在线观看成人免费视频| 国产精品一品二品| 亚洲成a人片在线不卡一二三区| 26uuu精品一区二区三区四区在线| av电影在线不卡| 久久精品99国产精品| 一区二区三区四区乱视频| 欧美精品一区在线观看| 欧美日韩日日夜夜| 97超碰欧美中文字幕| 免费观看成人av| 一区二区三区**美女毛片| 国产日韩欧美精品综合| 91精品午夜视频| 一本久道久久综合中文字幕| 精品亚洲成a人| 五月婷婷久久丁香| 亚洲精品高清在线| 亚洲国产精品成人综合| 日韩一区二区电影在线| 日本韩国视频一区二区| 粉嫩av一区二区三区粉嫩| 蜜乳av一区二区| 亚洲福利视频一区| 亚洲免费伊人电影| 国产精品三级电影| 26uuu成人网一区二区三区| 欧美日韩一区精品| 一本色道**综合亚洲精品蜜桃冫| 成人一区在线观看| 国产成人精品免费网站| 韩国女主播一区二区三区| 视频在线观看国产精品| 午夜精品福利久久久| 亚洲精品成人悠悠色影视| 国产精品久久久久久久蜜臀| 国产亚洲精品aa午夜观看| 久久蜜臀精品av| 久久久久久一级片| 日本一区二区三区高清不卡| 2023国产精华国产精品| 精品99一区二区三区| 日韩欧美国产综合一区 | 成人毛片视频在线观看| 精品亚洲porn| 久久国产精品72免费观看| 日韩国产精品91| 日韩精品免费视频人成| 日韩国产精品大片| 免费高清成人在线| 国精产品一区一区三区mba视频| 久久精品国产99| 国产激情一区二区三区| 成人污污视频在线观看| 99久久国产免费看| 欧美在线观看视频一区二区| 在线视频欧美区| 欧美一区二区三区的| 精品久久久久久久一区二区蜜臀| 久久久亚洲高清| 国产精品久久久久久久久果冻传媒| 亚洲欧洲国产专区| 亚洲动漫第一页| 九九精品视频在线看| 国产一区二区免费视频| 成人av在线一区二区| 色狠狠av一区二区三区| 制服丝袜中文字幕一区| 久久综合九色综合欧美亚洲| 国产精品国产a| 亚洲成人动漫一区| 久久国产精品99久久久久久老狼 | 天天av天天翘天天综合网色鬼国产| 性做久久久久久久免费看| 久久精品国产精品青草| 成人国产亚洲欧美成人综合网| 色播五月激情综合网| 欧美www视频| 亚洲欧美日韩国产另类专区 | 8x8x8国产精品| 国产日韩欧美麻豆| 亚洲午夜在线视频| 国产在线不卡一卡二卡三卡四卡| 成人av在线播放网站| 69堂国产成人免费视频| 中文字幕精品一区二区精品绿巨人 | 91免费看片在线观看| 欧美高清视频一二三区 | 国内久久婷婷综合| 色悠久久久久综合欧美99| 欧美一区二区三区在线视频| 中文字幕不卡的av| 免费在线观看成人| 91污在线观看| 久久综合九色综合欧美98| 一区二区激情小说| 成人一二三区视频| 欧美电影免费提供在线观看| 亚洲婷婷国产精品电影人久久| 麻豆91精品91久久久的内涵| 色综合天天综合色综合av| 精品成人一区二区三区四区| 夜夜精品浪潮av一区二区三区| 国产 欧美在线| 日韩精品在线网站| 婷婷中文字幕综合| 91免费观看视频| 欧美激情在线观看视频免费| 日韩成人免费看| 欧美日本一区二区| 一区二区三区在线播放| 高清国产午夜精品久久久久久| 日韩精品一区在线观看| 午夜激情综合网| 欧美日韩一级黄| 亚洲综合一二三区| 在线观看一区二区视频| 中文字幕一区二区三区不卡 | 欧美精品日韩精品| 一区二区三区国产豹纹内裤在线| 粉嫩aⅴ一区二区三区四区五区| 精品第一国产综合精品aⅴ| 麻豆精品视频在线观看免费| 欧美男男青年gay1069videost| 一区二区三区欧美日| 一本在线高清不卡dvd| 亚洲婷婷综合久久一本伊一区| 成人福利在线看| 亚洲男人天堂av| 欧美三电影在线| 午夜电影一区二区| 日韩三级高清在线| 久久99久久久欧美国产| 久久久久久一二三区| 粉嫩久久99精品久久久久久夜|