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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? libmp3dec.c

?? 能解壓幾乎所有mp3
?? C
?? 第 1 頁 / 共 5 頁
字號:

    out[ 1] = tab[16] + tab[24];
    out[17] = tab[17] + tab[25];
    out[ 9] = tab[18] + tab[26];
    out[25] = tab[19] + tab[27];
    out[ 5] = tab[20] + tab[28];
    out[21] = tab[21] + tab[29];
    out[13] = tab[22] + tab[30];
    out[29] = tab[23] + tab[31];
    out[ 3] = tab[24] + tab[20];
    out[19] = tab[25] + tab[21];
    out[11] = tab[26] + tab[22];
    out[27] = tab[27] + tab[23];
    out[ 7] = tab[28] + tab[18];
    out[23] = tab[29] + tab[19];
    out[15] = tab[30] + tab[17];
    out[31] = tab[31];
}

#define OUT_SHIFT (WFRAC_BITS + FRAC_BITS - 15)

#if FRAC_BITS <= 15

static int round_sample(int sum)
{
    int sum1;
    sum1 = (sum + (1 << (OUT_SHIFT - 1))) >> OUT_SHIFT;
    if (sum1 < -32768)
        sum1 = -32768;
    else if (sum1 > 32767)
        sum1 = 32767;
    return sum1;
}

/* signed 16x16 -> 32 multiply add accumulate */
#define MACS(rt, ra, rb) rt += (ra) * (rb)

/* signed 16x16 -> 32 multiply */
#define MULS(ra, rb) ((ra) * (rb))


#else

static int round_sample(int64_t sum) 
{
    int sum1;
    sum1 = (int)((sum + (int64_t_C(1) << (OUT_SHIFT - 1))) >> OUT_SHIFT);
    if (sum1 < -32768)
        sum1 = -32768;
    else if (sum1 > 32767)
        sum1 = 32767;
    return sum1;
}

#define MULS(ra, rb) MUL64(ra, rb)

#endif

#define SUM8(sum, op, w, p) \
{                                               \
    sum op MULS((w)[0 * 64], p[0 * 64]);\
    sum op MULS((w)[1 * 64], p[1 * 64]);\
    sum op MULS((w)[2 * 64], p[2 * 64]);\
    sum op MULS((w)[3 * 64], p[3 * 64]);\
    sum op MULS((w)[4 * 64], p[4 * 64]);\
    sum op MULS((w)[5 * 64], p[5 * 64]);\
    sum op MULS((w)[6 * 64], p[6 * 64]);\
    sum op MULS((w)[7 * 64], p[7 * 64]);\
}

#define SUM8P2(sum1, op1, sum2, op2, w1, w2, p) \
{                                               \
    int tmp;\
    tmp = p[0 * 64];\
    sum1 op1 MULS((w1)[0 * 64], tmp);\
    sum2 op2 MULS((w2)[0 * 64], tmp);\
    tmp = p[1 * 64];\
    sum1 op1 MULS((w1)[1 * 64], tmp);\
    sum2 op2 MULS((w2)[1 * 64], tmp);\
    tmp = p[2 * 64];\
    sum1 op1 MULS((w1)[2 * 64], tmp);\
    sum2 op2 MULS((w2)[2 * 64], tmp);\
    tmp = p[3 * 64];\
    sum1 op1 MULS((w1)[3 * 64], tmp);\
    sum2 op2 MULS((w2)[3 * 64], tmp);\
    tmp = p[4 * 64];\
    sum1 op1 MULS((w1)[4 * 64], tmp);\
    sum2 op2 MULS((w2)[4 * 64], tmp);\
    tmp = p[5 * 64];\
    sum1 op1 MULS((w1)[5 * 64], tmp);\
    sum2 op2 MULS((w2)[5 * 64], tmp);\
    tmp = p[6 * 64];\
    sum1 op1 MULS((w1)[6 * 64], tmp);\
    sum2 op2 MULS((w2)[6 * 64], tmp);\
    tmp = p[7 * 64];\
    sum1 op1 MULS((w1)[7 * 64], tmp);\
    sum2 op2 MULS((w2)[7 * 64], tmp);\
}


/* 32 sub band synthesis filter. Input: 32 sub band samples, Output:
   32 samples. */
/* XXX: optimize by avoiding ring buffer usage */
static void synth_filter(MPADecodeContext *s1,
                         int ch, int16_t *samples, int incr, 
                         int32_t sb_samples[SBLIMIT])
{
    int32_t tmp[32];
    register MPA_INT *synth_buf;
    register const MPA_INT *w, *w2, *p;
    int j, offset, v;
    int16_t *samples2;
#if FRAC_BITS <= 15
    int sum, sum2;
#else
    int64_t sum, sum2;
#endif
    
    dct32(tmp, sb_samples);
    
    offset = s1->synth_buf_offset[ch];
    synth_buf = s1->synth_buf[ch] + offset;

    for(j=0;j<32;j++) {
        v = tmp[j];
#if FRAC_BITS <= 15
        /* NOTE: can cause a loss in precision if very high amplitude
           sound */
        if (v > 32767)
            v = 32767;
        else if (v < -32768)
            v = -32768;
#endif
        synth_buf[j] = v;
    }
    /* copy to avoid wrap */
    memcpy(synth_buf + 512, synth_buf, 32 * sizeof(MPA_INT));

    samples2 = samples + 31 * incr;
    w = window;
    w2 = window + 31;

    sum = 0;
    p = synth_buf + 16;
    SUM8(sum, +=, w, p);
    p = synth_buf + 48;
    SUM8(sum, -=, w + 32, p);
    *samples = round_sample(sum);
    samples += incr;
    w++;

    /* we calculate two samples at the same time to avoid one memory
       access per two sample */
    for(j=1;j<16;j++) {
        sum = 0;
        sum2 = 0;
        p = synth_buf + 16 + j;
        SUM8P2(sum, +=, sum2, -=, w, w2, p);
        p = synth_buf + 48 - j;
        SUM8P2(sum, -=, sum2, -=, w + 32, w2 + 32, p);

        *samples = round_sample(sum);
        samples += incr;
        *samples2 = round_sample(sum2);
        samples2 -= incr;
        w++;
        w2--;
    }
    
    p = synth_buf + 32;
    sum = 0;
    SUM8(sum, -=, w + 32, p);
    *samples = round_sample(sum);

    offset = (offset - 32) & 511;
    s1->synth_buf_offset[ch] = offset;
}

/* cos(pi*i/24) */
#define C1  FIXR(0.99144486137381041114)
#define C3  FIXR(0.92387953251128675612)
#define C5  FIXR(0.79335334029123516458)
#define C7  FIXR(0.60876142900872063941)
#define C9  FIXR(0.38268343236508977173)
#define C11 FIXR(0.13052619222005159154)

/* 12 points IMDCT. We compute it "by hand" by factorizing obvious
   cases. */
static void imdct12(int *out, int *in)
{
    int tmp;
    int64_t in1_3, in1_9, in4_3, in4_9;

    in1_3 = MUL64(in[1], C3);
    in1_9 = MUL64(in[1], C9);
    in4_3 = MUL64(in[4], C3);
    in4_9 = MUL64(in[4], C9);
    
    tmp = FRAC_RND(MUL64(in[0], C7) - in1_3 - MUL64(in[2], C11) + 
                   MUL64(in[3], C1) - in4_9 - MUL64(in[5], C5));
    out[0] = tmp;
    out[5] = -tmp;
    tmp = FRAC_RND(MUL64(in[0] - in[3], C9) - in1_3 + 
                   MUL64(in[2] + in[5], C3) - in4_9);
    out[1] = tmp;
    out[4] = -tmp;
    tmp = FRAC_RND(MUL64(in[0], C11) - in1_9 + MUL64(in[2], C7) -
                   MUL64(in[3], C5) + in4_3 - MUL64(in[5], C1));
    out[2] = tmp;
    out[3] = -tmp;
    tmp = FRAC_RND(MUL64(-in[0], C5) + in1_9 + MUL64(in[2], C1) + 
                   MUL64(in[3], C11) - in4_3 - MUL64(in[5], C7));
    out[6] = tmp;
    out[11] = tmp;
    tmp = FRAC_RND(MUL64(-in[0] + in[3], C3) - in1_9 + 
                   MUL64(in[2] + in[5], C9) + in4_3);
    out[7] = tmp;
    out[10] = tmp;
    tmp = FRAC_RND(-MUL64(in[0], C1) - in1_3 - MUL64(in[2], C5) -
                   MUL64(in[3], C7) - in4_9 - MUL64(in[5], C11));
    out[8] = tmp;
    out[9] = tmp;
}

#undef C1
#undef C3
#undef C5
#undef C7
#undef C9
#undef C11

/* cos(pi*i/18) */
#define C1 FIXR(0.98480775301220805936)
#define C2 FIXR(0.93969262078590838405)
#define C3 FIXR(0.86602540378443864676)
#define C4 FIXR(0.76604444311897803520)
#define C5 FIXR(0.64278760968653932632)
#define C6 FIXR(0.5)
#define C7 FIXR(0.34202014332566873304)
#define C8 FIXR(0.17364817766693034885)

/* 0.5 / cos(pi*(2*i+1)/36) */
static const int icos36[9] = {
    FIXR(0.50190991877167369479),
    FIXR(0.51763809020504152469),
    FIXR(0.55168895948124587824),
    FIXR(0.61038729438072803416),
    FIXR(0.70710678118654752439),
    FIXR(0.87172339781054900991),
    FIXR(1.18310079157624925896),
    FIXR(1.93185165257813657349),
    FIXR(5.73685662283492756461),
};

static const int icos72[18] = {
    /* 0.5 / cos(pi*(2*i+19)/72) */
    FIXR(0.74009361646113053152),
    FIXR(0.82133981585229078570),
    FIXR(0.93057949835178895673),
    FIXR(1.08284028510010010928),
    FIXR(1.30656296487637652785),
    FIXR(1.66275476171152078719),
    FIXR(2.31011315767264929558),
    FIXR(3.83064878777019433457),
    FIXR(11.46279281302667383546),

    /* 0.5 / cos(pi*(2*(i + 18) +19)/72) */
    FIXR(-0.67817085245462840086),
    FIXR(-0.63023620700513223342),
    FIXR(-0.59284452371708034528),
    FIXR(-0.56369097343317117734),
    FIXR(-0.54119610014619698439),
    FIXR(-0.52426456257040533932),
    FIXR(-0.51213975715725461845),
    FIXR(-0.50431448029007636036),
    FIXR(-0.50047634258165998492),
};

/* using Lee like decomposition followed by hand coded 9 points DCT */
static void imdct36(int *out, int *in)
{
    int i, j, t0, t1, t2, t3, s0, s1, s2, s3;
    int tmp[18], *tmp1, *in1;
    int64_t in3_3, in6_6;

    for(i=17;i>=1;i--)
        in[i] += in[i-1];
    for(i=17;i>=3;i-=2)
        in[i] += in[i-2];

    for(j=0;j<2;j++) {
        tmp1 = tmp + j;
        in1 = in + j;

        in3_3 = MUL64(in1[2*3], C3);
        in6_6 = MUL64(in1[2*6], C6);

        tmp1[0] = FRAC_RND(MUL64(in1[2*1], C1) + in3_3 + 
                           MUL64(in1[2*5], C5) + MUL64(in1[2*7], C7));
        tmp1[2] = in1[2*0] + FRAC_RND(MUL64(in1[2*2], C2) + 
                                      MUL64(in1[2*4], C4) + in6_6 + 
                                      MUL64(in1[2*8], C8));
        tmp1[4] = FRAC_RND(MUL64(in1[2*1] - in1[2*5] - in1[2*7], C3));
        tmp1[6] = FRAC_RND(MUL64(in1[2*2] - in1[2*4] - in1[2*8], C6)) - 
            in1[2*6] + in1[2*0];
        tmp1[8] = FRAC_RND(MUL64(in1[2*1], C5) - in3_3 - 
                           MUL64(in1[2*5], C7) + MUL64(in1[2*7], C1));
        tmp1[10] = in1[2*0] + FRAC_RND(MUL64(-in1[2*2], C8) - 
                                       MUL64(in1[2*4], C2) + in6_6 + 
                                       MUL64(in1[2*8], C4));
        tmp1[12] = FRAC_RND(MUL64(in1[2*1], C7) - in3_3 + 
                            MUL64(in1[2*5], C1) - 
                            MUL64(in1[2*7], C5));
        tmp1[14] = in1[2*0] + FRAC_RND(MUL64(-in1[2*2], C4) + 
                                       MUL64(in1[2*4], C8) + in6_6 - 
                                       MUL64(in1[2*8], C2));
        tmp1[16] = in1[2*0] - in1[2*2] + in1[2*4] - in1[2*6] + in1[2*8];
    }

    i = 0;
    for(j=0;j<4;j++) {
        t0 = tmp[i];
        t1 = tmp[i + 2];
        s0 = t1 + t0;
        s2 = t1 - t0;

        t2 = tmp[i + 1];
        t3 = tmp[i + 3];
        s1 = MULL(t3 + t2, icos36[j]);
        s3 = MULL(t3 - t2, icos36[8 - j]);
        
        t0 = MULL(s0 + s1, icos72[9 + 8 - j]);
        t1 = MULL(s0 - s1, icos72[8 - j]);
        out[18 + 9 + j] = t0;
        out[18 + 8 - j] = t0;
        out[9 + j] = -t1;
        out[8 - j] = t1;
        
        t0 = MULL(s2 + s3, icos72[9+j]);
        t1 = MULL(s2 - s3, icos72[j]);
        out[18 + 9 + (8 - j)] = t0;
        out[18 + j] = t0;
        out[9 + (8 - j)] = -t1;
        out[j] = t1;
        i += 4;
    }

    s0 = tmp[16];
    s1 = MULL(tmp[17], icos36[4]);
    t0 = MULL(s0 + s1, icos72[9 + 4]);
    t1 = MULL(s0 - s1, icos72[4]);
    out[18 + 9 + 4] = t0;
    out[18 + 8 - 4] = t0;
    out[9 + 4] = -t1;
    out[8 - 4] = t1;
}

/* fast header check for resync */
static int check_header(uint32_t header)
{
    /* header */
    if ((header & 0xffe00000) != 0xffe00000)
	return -1;
    /* layer check */
    if (((header >> 17) & 3) == 0)
	return -1;
    /* bit rate */
    if (((header >> 12) & 0xf) == 0xf)
	return -1;
    /* frequency */
    if (((header >> 10) & 3) == 3)
	return -1;
    return 0;
}

/* header + layer + bitrate + freq + lsf/mpeg25 */
#define SAME_HEADER_MASK \
   (0xffe00000 | (3 << 17) | (0xf << 12) | (3 << 10) | (3 << 19))

/* header decoding. MUST check the header before because no
   consistency check is done there. Return 1 if free format found and
   that the frame size must be computed externally */
static int decode_header(MPADecodeContext *s, uint32_t header)
{
    int sample_rate, frame_size, mpeg25, padding;
    int sample_rate_index, bitrate_index;
    if (header & (1<<20)) {
        s->lsf = (header & (1<<19)) ? 0 : 1;
        mpeg25 = 0;
    } else {
        s->lsf = 1;
        mpeg25 = 1;
    }
    
    s->layer = 4 - ((header >> 17) & 3);
    /* extract frequency */
    sample_rate_index = (header >> 10) & 3;
    sample_rate = mpa_freq_tab[sample_rate_index] >> (s->lsf + mpeg25);
    sample_rate_index += 3 * (s->lsf + mpeg25);
    s->sample_rate_index = sample_rate_index;
    s->error_protection = ((header >> 16) & 1) ^ 1;
    s->sample_rate = sample_rate;

    bitrate_index = (header >> 12) & 0xf;
    padding = (header >> 9) & 1;
    s->mode = (header >> 6) & 3;
    s->mode_ext = (header >> 4) & 3;

    if (s->mode == MPA_MONO)
        s->nb_channels = 1;
    else
        s->nb_channels = 2;
    
    if (bitrate_index != 0) {
        frame_size = mpa_bitrate_tab[s->lsf][s->layer - 1][bitrate_index];
        s->bit_rate = frame_size * 1000;
        switch(s->layer) {
        case 1:
            frame_size = (frame_size * 12000) / sample_rate;
            frame_size = (frame_size + padding) * 4;
            break;
        case 2:
            frame_size = (frame_size * 144000) / sample_rate;
            frame_size += padding;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区精华| 91麻豆精品国产91久久久久久| 国产日韩三级在线| www.欧美日韩| 爽爽淫人综合网网站| 中文字幕不卡一区| 日韩久久免费av| 欧美日韩一卡二卡三卡 | 91麻豆国产在线观看| 蜜臀久久久99精品久久久久久| 一区二区中文视频| 国产亚洲视频系列| 日韩午夜在线播放| 欧美丰满美乳xxx高潮www| 91麻豆自制传媒国产之光| 成人性生交大片免费看中文| 久久99精品久久久| 日韩成人一区二区三区在线观看| 亚洲精品成人精品456| 1区2区3区精品视频| 久久久亚洲精品一区二区三区| 日韩限制级电影在线观看| 欧美日本乱大交xxxxx| 色中色一区二区| 91美女片黄在线| 97精品国产露脸对白| 成人av在线播放网址| 国产伦精品一区二区三区视频青涩| 免费欧美在线视频| 日韩不卡免费视频| 丝袜诱惑制服诱惑色一区在线观看 | 成人美女视频在线看| 懂色av中文一区二区三区| 韩国午夜理伦三级不卡影院| 久久不见久久见中文字幕免费| 日韩黄色小视频| 日本午夜一区二区| 毛片不卡一区二区| 久久精品二区亚洲w码| 麻豆91精品视频| 国产一区免费电影| 国产成人无遮挡在线视频| 国产九九视频一区二区三区| 国产乱对白刺激视频不卡| 国产一区二区三区免费看| 国产河南妇女毛片精品久久久| 国产成人av电影在线| 国产suv精品一区二区三区| 国产69精品久久99不卡| 91丝袜美腿高跟国产极品老师| 一本色道久久综合精品竹菊| 在线影视一区二区三区| 欧美日韩成人综合天天影院| 日韩欧美国产综合在线一区二区三区| 日韩欧美另类在线| 国产日韩欧美高清| 亚洲欧美国产77777| 亚洲午夜影视影院在线观看| 日韩电影在线一区二区三区| 精品在线免费观看| 成人免费视频播放| 欧美综合在线视频| 日韩一区二区影院| 欧美韩日一区二区三区| 亚洲精品久久7777| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品一区二区久久不卡| 99久久精品久久久久久清纯| 欧美日本在线观看| 久久综合五月天婷婷伊人| 中文字幕一区三区| 亚洲一二三四区| 精彩视频一区二区三区| 99精品黄色片免费大全| 欧美日韩黄色影视| 26uuu亚洲综合色欧美| 亚洲女与黑人做爰| 看电视剧不卡顿的网站| 99久久99精品久久久久久| 欧美日韩第一区日日骚| 欧美国产日韩精品免费观看| 亚洲动漫第一页| 国产二区国产一区在线观看| 91国偷自产一区二区三区成为亚洲经典| 在线不卡中文字幕播放| 国产日韩欧美制服另类| 亚洲123区在线观看| 成人免费看的视频| 欧美女孩性生活视频| 国产午夜一区二区三区| 亚洲福利一区二区| 丁香婷婷综合色啪| 欧美一级一级性生活免费录像| 久久久91精品国产一区二区精品 | 一区二区成人在线| 成人自拍视频在线| 91精品国产免费| 一区二区三区中文免费| 极品少妇xxxx精品少妇偷拍| 欧美三级三级三级爽爽爽| www亚洲一区| 亚洲国产一二三| www.色精品| 精品国产髙清在线看国产毛片| 亚洲午夜影视影院在线观看| 国产精品一区一区三区| 91精品国产综合久久精品app| 自拍偷拍亚洲综合| 国产成人a级片| 精品日韩一区二区| 五月综合激情日本mⅴ| 99久久99久久综合| 久久久www免费人成精品| 亚洲第一成年网| 91一区二区三区在线观看| 国产农村妇女毛片精品久久麻豆 | 日本午夜精品一区二区三区电影| 91丝袜呻吟高潮美腿白嫩在线观看| 久久久99免费| 国产在线麻豆精品观看| 日韩一区二区中文字幕| 午夜精品久久久久久不卡8050| 色哟哟一区二区三区| 亚洲天堂网中文字| www.欧美亚洲| 国产精品久久综合| 成人精品高清在线| 国产精品午夜电影| 国产成人在线视频免费播放| 2021中文字幕一区亚洲| 久久99久久精品| 精品日产卡一卡二卡麻豆| 久久精工是国产品牌吗| 日韩美女视频在线| 蜜桃视频在线观看一区二区| 日韩亚洲欧美在线| 免费在线观看日韩欧美| 欧美一区二区三区在线视频 | 99在线热播精品免费| 久久久久久一二三区| 国产成人精品影视| 欧美激情自拍偷拍| 成人激情黄色小说| 国产精品丝袜91| 97精品久久久久中文字幕 | 国产精品家庭影院| 91色九色蝌蚪| 一区二区三区国产精品| 欧洲精品在线观看| 偷拍自拍另类欧美| 91精品国产综合久久久久久漫画| 久久99热狠狠色一区二区| 久久久夜色精品亚洲| 9色porny自拍视频一区二区| 亚洲美女淫视频| 欧美久久免费观看| 精品一区二区综合| 久久综合九色综合欧美98| 懂色av一区二区夜夜嗨| 亚洲欧美日韩中文播放| 日本精品裸体写真集在线观看| 午夜激情久久久| 久久久激情视频| 一本大道综合伊人精品热热| 奇米精品一区二区三区在线观看一| 精品嫩草影院久久| caoporn国产一区二区| 亚洲精品国产视频| 日韩一区二区三区av| 成人晚上爱看视频| 亚洲www啪成人一区二区麻豆| 日韩精品在线一区二区| www..com久久爱| 日本在线不卡视频| 欧美激情一区在线观看| 欧美日韩不卡在线| 国产精品影音先锋| 欧美日韩色综合| 国产91高潮流白浆在线麻豆| 亚洲va欧美va国产va天堂影院| 26uuu色噜噜精品一区| 色悠久久久久综合欧美99| 麻豆精品视频在线观看视频| 中文字幕一区二区三区在线不卡| 欧美精品粉嫩高潮一区二区| 国产91综合一区在线观看| 一区二区欧美在线观看| 久久久精品一品道一区| 欧美群妇大交群的观看方式| 不卡一二三区首页| 蜜桃一区二区三区四区| 一区二区免费视频| 国产网红主播福利一区二区| 欧美日韩国产综合一区二区三区| 高清视频一区二区| 蜜桃av一区二区三区| 一区二区三区中文字幕| 国产精品久久久久一区二区三区共| 日韩视频在线你懂得| 欧美综合欧美视频|