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

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

?? libmp3dec.c

?? 能解壓幾乎所有mp3
?? C
?? 第 1 頁 / 共 5 頁
字號:
        for(i=0;i<6;i++) {
            out[i] = 0;
            out[6 + i] = 0;
            out[30+i] = 0;
        }
        /* select frequency inversion */
        win = mdct_win[2] + ((4 * 36) & -(j & 1));
        buf2 = out + 6;
        for(k=0;k<3;k++) {
            /* reorder input for short mdct */
            ptr1 = ptr + k;
            for(i=0;i<6;i++) {
                in[i] = *ptr1;
                ptr1 += 3;
            }
            imdct12(out2, in);
            /* apply 12 point window and do small overlap */
            for(i=0;i<6;i++) {
                buf2[i] = MULL(out2[i], win[i]) + buf2[i];
                buf2[i + 6] = MULL(out2[i + 6], win[i + 6]);
            }
            buf2 += 6;
        }
        /* overlap */
        out_ptr = sb_samples + j;
        for(i=0;i<18;i++) {
            *out_ptr = out[i] + buf[i];
            buf[i] = out[i + 18];
            out_ptr += SBLIMIT;
        }
        ptr += 18;
        buf += 18;
    }
    /* zero bands */
    for(j=sblimit;j<SBLIMIT;j++) {
        /* overlap */
        out_ptr = sb_samples + j;
        for(i=0;i<18;i++) {
            *out_ptr = buf[i];
            buf[i] = 0;
            out_ptr += SBLIMIT;
        }
        buf += 18;
    }
}

/* main layer3 decoding function */
static int mp_decode_layer3(MPADecodeContext *s)
{
    int nb_granules, main_data_begin, private_bits;
    int gr, ch, blocksplit_flag, i, j, k, n, bits_pos, bits_left;
    GranuleDef granules[2][2], *g;
    int16_t exponents[576];

    /* read side info */
    if (s->lsf) {
        main_data_begin = get_bits(&s->gb, 8);
        if (s->nb_channels == 2)
            private_bits = get_bits(&s->gb, 2);
        else
            private_bits = get_bits(&s->gb, 1);
        nb_granules = 1;
    } else {
        main_data_begin = get_bits(&s->gb, 9);
        if (s->nb_channels == 2)
            private_bits = get_bits(&s->gb, 3);
        else
            private_bits = get_bits(&s->gb, 5);
        nb_granules = 2;
        for(ch=0;ch<s->nb_channels;ch++) {
            granules[ch][0].scfsi = 0; /* all scale factors are transmitted */
            granules[ch][1].scfsi = get_bits(&s->gb, 4);
        }
    }
    
    for(gr=0;gr<nb_granules;gr++) {
        for(ch=0;ch<s->nb_channels;ch++) {
            g = &granules[ch][gr];
            g->part2_3_length = get_bits(&s->gb, 12);
            g->big_values = get_bits(&s->gb, 9);
            g->global_gain = get_bits(&s->gb, 8);
            /* if MS stereo only is selected, we precompute the
               1/sqrt(2) renormalization factor */
            if ((s->mode_ext & (MODE_EXT_MS_STEREO | MODE_EXT_I_STEREO)) == 
                MODE_EXT_MS_STEREO)
                g->global_gain -= 2;
            if (s->lsf)
                g->scalefac_compress = get_bits(&s->gb, 9);
            else
                g->scalefac_compress = get_bits(&s->gb, 4);
            blocksplit_flag = get_bits(&s->gb, 1);
            if (blocksplit_flag) {
                g->block_type = get_bits(&s->gb, 2);
                if (g->block_type == 0)
                    return -1;
                g->switch_point = get_bits(&s->gb, 1);
                for(i=0;i<2;i++)
                    g->table_select[i] = get_bits(&s->gb, 5);
                for(i=0;i<3;i++) 
                    g->subblock_gain[i] = get_bits(&s->gb, 3);
                /* compute huffman coded region sizes */
                if (g->block_type == 2)
                    g->region_size[0] = (36 / 2);
                else {
                    if (s->sample_rate_index <= 2) 
                        g->region_size[0] = (36 / 2);
                    else if (s->sample_rate_index != 8) 
                        g->region_size[0] = (54 / 2);
                    else
                        g->region_size[0] = (108 / 2);
                }
                g->region_size[1] = (576 / 2);
            } else {
                int region_address1, region_address2, l;
                g->block_type = 0;
                g->switch_point = 0;
                for(i=0;i<3;i++)
                    g->table_select[i] = get_bits(&s->gb, 5);
                /* compute huffman coded region sizes */
                region_address1 = get_bits(&s->gb, 4);
                region_address2 = get_bits(&s->gb, 3);
                g->region_size[0] = 
                    band_index_long[s->sample_rate_index][region_address1 + 1] >> 1;
                l = region_address1 + region_address2 + 2;
                /* should not overflow */
                if (l > 22)
                    l = 22;
                g->region_size[1] = 
                    band_index_long[s->sample_rate_index][l] >> 1;
            }
            /* convert region offsets to region sizes and truncate
               size to big_values */
            g->region_size[2] = (576 / 2);
            j = 0;
            for(i=0;i<3;i++) {
                k = g->region_size[i];
                if (k > g->big_values)
                    k = g->big_values;
                g->region_size[i] = k - j;
                j = k;
            }

            /* compute band indexes */
            if (g->block_type == 2) {
                if (g->switch_point) {
                    /* if switched mode, we handle the 36 first samples as
                       long blocks.  For 8000Hz, we handle the 48 first
                       exponents as long blocks (XXX: check this!) */
                    if (s->sample_rate_index <= 2)
                        g->long_end = 8;
                    else if (s->sample_rate_index != 8)
                        g->long_end = 6;
                    else
                        g->long_end = 4; /* 8000 Hz */
                    
                    if (s->sample_rate_index != 8)
                        g->short_start = 3;
                    else
                        g->short_start = 2; 
                } else {
                    g->long_end = 0;
                    g->short_start = 0;
                }
            } else {
                g->short_start = 13;
                g->long_end = 22;
            }
            
            g->preflag = 0;
            if (!s->lsf)
                g->preflag = get_bits(&s->gb, 1);
            g->scalefac_scale = get_bits(&s->gb, 1);
            g->count1table_select = get_bits(&s->gb, 1);
        }
    }

    /* now we get bits from the main_data_begin offset */
    seek_to_maindata(s, main_data_begin);

    for(gr=0;gr<nb_granules;gr++) {
        for(ch=0;ch<s->nb_channels;ch++) {
            g = &granules[ch][gr];
            
            bits_pos = get_bits_count(&s->gb);
            
            if (!s->lsf) {
                uint8_t *sc;
                int slen, slen1, slen2;

                /* MPEG1 scale factors */
                slen1 = slen_table[0][g->scalefac_compress];
                slen2 = slen_table[1][g->scalefac_compress];
                if (g->block_type == 2) {
                    n = g->switch_point ? 17 : 18;
                    j = 0;
                    for(i=0;i<n;i++)
                        g->scale_factors[j++] = get_bitsz(&s->gb, slen1);
                    for(i=0;i<18;i++)
                        g->scale_factors[j++] = get_bitsz(&s->gb, slen2);
                    for(i=0;i<3;i++)
                        g->scale_factors[j++] = 0;
                } else {
                    sc = granules[ch][0].scale_factors;
                    j = 0;
                    for(k=0;k<4;k++) {
                        n = (k == 0 ? 6 : 5);
                        if ((g->scfsi & (0x8 >> k)) == 0) {
                            slen = (k < 2) ? slen1 : slen2;
                            for(i=0;i<n;i++)
                                g->scale_factors[j++] = get_bitsz(&s->gb, slen);
                        } else {
                            /* simply copy from last granule */
                            for(i=0;i<n;i++) {
                                g->scale_factors[j] = sc[j];
                                j++;
                            }
                        }
                    }
                    g->scale_factors[j++] = 0;
                }
            } else {
                int tindex, tindex2, slen[4], sl, sf;

                /* LSF scale factors */
                if (g->block_type == 2) {
                    tindex = g->switch_point ? 2 : 1;
                } else {
                    tindex = 0;
                }
                sf = g->scalefac_compress;
                if ((s->mode_ext & MODE_EXT_I_STEREO) && ch == 1) {
                    /* intensity stereo case */
                    sf >>= 1;
                    if (sf < 180) {
                        lsf_sf_expand(slen, sf, 6, 6, 0);
                        tindex2 = 3;
                    } else if (sf < 244) {
                        lsf_sf_expand(slen, sf - 180, 4, 4, 0);
                        tindex2 = 4;
                    } else {
                        lsf_sf_expand(slen, sf - 244, 3, 0, 0);
                        tindex2 = 5;
                    }
                } else {
                    /* normal case */
                    if (sf < 400) {
                        lsf_sf_expand(slen, sf, 5, 4, 4);
                        tindex2 = 0;
                    } else if (sf < 500) {
                        lsf_sf_expand(slen, sf - 400, 5, 4, 0);
                        tindex2 = 1;
                    } else {
                        lsf_sf_expand(slen, sf - 500, 3, 0, 0);
                        tindex2 = 2;
                        g->preflag = 1;
                    }
                }

                j = 0;
                for(k=0;k<4;k++) {
                    n = lsf_nsf_table[tindex2][tindex][k];
                    sl = slen[k];
                    for(i=0;i<n;i++)
                        g->scale_factors[j++] = get_bitsz(&s->gb, sl);
                }
                /* XXX: should compute exact size */
                for(;j<40;j++)
                    g->scale_factors[j] = 0;
            }

            exponents_from_scale_factors(s, g, exponents);

            /* read Huffman coded residue */
            if (huffman_decode(s, g, exponents,
                               bits_pos + g->part2_3_length) < 0)
                return -1;

            /* skip extension bits */
            bits_left = g->part2_3_length - (get_bits_count(&s->gb) - bits_pos);
            if (bits_left < 0) {
                return -1;
            }
            while (bits_left >= 16) {
                skip_bits(&s->gb, 16);
                bits_left -= 16;
            }
            if (bits_left > 0)
                skip_bits(&s->gb, bits_left);
        } /* ch */

        if (s->nb_channels == 2)
            compute_stereo(s, &granules[0][gr], &granules[1][gr]);

        for(ch=0;ch<s->nb_channels;ch++) {
            g = &granules[ch][gr];

            reorder_block(s, g);
            s->compute_antialias(s, g);
            compute_imdct(s, g, &s->sb_samples[ch][18 * gr][0], s->mdct_buf[ch]); 
        }
    } /* gr */
    return nb_granules * 18;
}

static int mp_decode_frame(MPADecodeContext *s, 
                           short *samples)
{
    int i, nb_frames, ch;
    short *samples_ptr;

    init_get_bits(&s->gb, s->inbuf + HEADER_SIZE, 
                  (s->inbuf_ptr - s->inbuf - HEADER_SIZE)*8);
    
    /* skip error protection field */
    if (s->error_protection)
        get_bits(&s->gb, 16);

    switch(s->layer) 
	{
    case 1:
        nb_frames = mp_decode_layer1(s);
        break;
    case 2:
        nb_frames = mp_decode_layer2(s);
        break;
    case 3:
    default:
        nb_frames = mp_decode_layer3(s);
        break;
    }
    /* apply the synthesis filter */
    for(ch=0;ch<s->nb_channels;ch++) 
	{
        samples_ptr = samples + ch;
        for(i=0;i<nb_frames;i++) 
		{
            synth_filter(s, ch, samples_ptr, s->nb_channels,
                         s->sb_samples[ch][i]);
            samples_ptr += 32 * s->nb_channels;
        }
    }
    return nb_frames * 32 * sizeof(short) * s->nb_channels;
}

HMP3DEC MP3_decode_init()
{
	AVCodecContext * avctx;
    MPADecodeContext *s;
    static int init=0;
    int i, j, k;
	avctx = (AVCodecContext*)malloc(sizeof(AVCodecContext));
	if(avctx == NULL)
	{
		return NULL;
	}
	memset(avctx, 0, sizeof(AVCodecContext));
	avctx->priv_data = malloc(sizeof(MPADecodeContext));
	if(avctx->priv_data == NULL)
	{
		free(avctx);
		return NULL;
	}
	memset(avctx->priv_data, 0, sizeof(MPADecodeContext));
	
	s = (MPADecodeContext *)avctx->priv_data;

//    if(avctx->antialias_algo == FF_AA_INT)
        s->compute_antialias= compute_antialias_integer;
 //   else
//        s->compute_antialias= compute_antialias_float;

    if (!init && !avctx->parse_only) {
        /* scale factors table for layer 1/2 */
        for(i=0;i<64;i++) {
            int shift, mod;
            /* 1.0 (i = 3) is normalized to 2 ^ FRAC_BITS */
            shift = (i / 3);
            mod = i % 3;
            scale_factor_modshift[i] = mod | (shift << 2);
        }

        /* scale factor multiply for layer 1 */
        for(i=0;i<15;i++) {
            int n, norm;
            n = i + 2;
            norm = ((int64_t_C(1) << n) * FRAC_ONE) / ((1 << n) - 1);
            scale_factor_mult[i][0] = MULL(FIXR(1.0 * 2.0), norm);
            scale_factor_mult[i][1] = MULL(FIXR(0.7937005259 * 2.0), norm);
            scale_factor_mult[i][2] = MULL(FIXR(0.6299605249 * 2.0), norm);
        }
        
        /* window */
        /* max = 18760, max sum over all 16 coefs : 44736 */
        for(i=0;i<257;i++) {
            int v;
            v = mpa_enwindow[i];
#if WFRAC_BITS < 16
            v = (v + (1 << (16 - WFRAC_BITS - 1))) >> (16 - WFRAC_BITS);
#endif
            window[i] = v;
            if ((i & 63) != 0)
                v = -v;
            if (i != 0)
                window[512 - i] = v;
        }
        
        /* huffman decode tables */
        huff_code_table[0] = NULL;
        for(i=1;i<16;i++) {
            const HuffTable *h = &mpa_huff_tables[i];
	    int xsize, x, y;
            unsigned int n;
            uint8_t *code_table;

            xsize = h->xsize;
            n = xsize * xsize;
            /* XXX: fail test */
            init_vlc(&huff_vlc[i], 8, n, 
                     h->bits, 1, 1, h->codes, 2, 2);
            
            code_table = av_mallocz(n);
            j = 0;
            for(x=0;x<xsize;x++) {
                fo

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线播放不卡| 亚洲国产精品综合小说图片区| 国产网站一区二区三区| 欧美经典三级视频一区二区三区| ㊣最新国产の精品bt伙计久久| 亚洲一区在线观看免费| 蜜桃av噜噜一区二区三区小说| 国产成人av电影在线| 欧美性色综合网| 久久这里只精品最新地址| 国产精品福利影院| 日本欧美肥老太交大片| av在线播放不卡| 91精品国产入口| 中文字幕欧美激情一区| 日韩精品三区四区| 粉嫩嫩av羞羞动漫久久久| 欧美日本一区二区三区| 中文字幕乱码日本亚洲一区二区 | 国产一二三精品| 91在线看国产| 欧美不卡一区二区三区四区| 亚洲视频一区二区免费在线观看| 轻轻草成人在线| 成人免费视频视频| 91精品国产乱码久久蜜臀| 国产精品美女久久久久久久| 日韩成人一区二区三区在线观看| 国产v日产∨综合v精品视频| 69p69国产精品| 亚洲美女屁股眼交3| 韩国欧美国产一区| 欧美日韩一区三区四区| 久久亚洲欧美国产精品乐播 | 欧美视频你懂的| 日本一区二区三区免费乱视频| 日韩av网站免费在线| 91蝌蚪porny九色| 久久青草欧美一区二区三区| 亚洲www啪成人一区二区麻豆| 波多野结衣一区二区三区| 精品日韩在线观看| 亚洲国产日韩在线一区模特| 91在线国产福利| 久久久蜜桃精品| 久久精品国产一区二区三区免费看| 欧洲精品视频在线观看| 成人欧美一区二区三区| 粉嫩绯色av一区二区在线观看| 精品sm在线观看| 青椒成人免费视频| 6080国产精品一区二区| 一区二区三区在线免费观看| 成人av在线播放网址| 久久精品综合网| 国产伦精品一区二区三区免费 | 久久精品国产一区二区三区免费看 | 宅男噜噜噜66一区二区66| 一区二区三区不卡视频在线观看| 成人免费高清在线观看| 国产三级欧美三级日产三级99| 精品一区二区三区视频在线观看 | 亚洲第一二三四区| 欧美视频三区在线播放| 亚洲一区在线观看免费观看电影高清| 99久久国产综合精品色伊| 国产精品污网站| 成人动漫视频在线| 欧美激情一区二区三区| 国产成人免费视| 国产欧美1区2区3区| 成人激情免费视频| 国产精品国模大尺度视频| zzijzzij亚洲日本少妇熟睡| 中文字幕一区在线观看| caoporn国产一区二区| 国产精品国产三级国产aⅴ无密码| 成人免费毛片a| 国产精品久久久久久久久免费樱桃 | 欧美一级一区二区| 男男gaygay亚洲| 日韩精品影音先锋| 国产综合久久久久久久久久久久| 精品国产乱码久久久久久久| 国产综合色视频| 中文字幕+乱码+中文字幕一区| 成人激情校园春色| 亚洲综合在线第一页| 欧美日本在线视频| 理论电影国产精品| 国产日韩欧美精品一区| 91亚洲精品久久久蜜桃网站| 亚洲精品你懂的| 这里只有精品视频在线观看| 黄一区二区三区| 中文字幕在线免费不卡| 日本道色综合久久| 青椒成人免费视频| 国产亚洲污的网站| 色婷婷av一区二区三区gif| 香蕉久久夜色精品国产使用方法 | 久久国产精品色婷婷| 国产人成一区二区三区影院| www.一区二区| 亚洲国产cao| 久久一夜天堂av一区二区三区| 99在线热播精品免费| 亚洲成a人片综合在线| 精品国产一区二区精华| 成人美女视频在线观看18| 亚洲一区二区三区中文字幕| 精品久久五月天| 94-欧美-setu| 日韩av电影免费观看高清完整版 | 国产精品一区二区三区乱码| 国产精品盗摄一区二区三区| 欧美日韩国产系列| 国产成人精品综合在线观看| 夜色激情一区二区| 日韩免费视频线观看| caoporn国产一区二区| 秋霞电影网一区二区| 成人免费一区二区三区在线观看| 91麻豆精品国产91久久久 | 国产亚洲一区二区在线观看| 欧美午夜精品一区二区三区 | 国产欧美精品在线观看| 欧美日韩精品一区二区天天拍小说| 寂寞少妇一区二区三区| 亚洲色图丝袜美腿| 日韩三级视频在线看| 91视视频在线观看入口直接观看www | 日本麻豆一区二区三区视频| 欧美激情自拍偷拍| 日韩欧美一级二级三级| 色哟哟一区二区三区| 国产精品一区二区三区四区| 午夜激情久久久| 亚洲色图色小说| 久久精品日产第一区二区三区高清版| 欧美午夜理伦三级在线观看| 成人毛片老司机大片| 免费人成在线不卡| 亚洲在线一区二区三区| 国产日韩欧美制服另类| 日韩欧美www| 欧美私人免费视频| 成人app网站| 国产精品一线二线三线| 奇米777欧美一区二区| 玉足女爽爽91| 欧美激情一区二区三区在线| 精品国产一区二区三区久久久蜜月 | 国产精品福利一区二区三区| 日韩精品中文字幕一区二区三区 | 日本网站在线观看一区二区三区| 中文字幕一区二区三区在线不卡 | 久久国产精品99精品国产| 亚洲福利视频一区| 国产区在线观看成人精品| 日韩欧美不卡一区| 9191成人精品久久| 欧洲精品视频在线观看| 91麻豆自制传媒国产之光| 国产精品综合在线视频| 男人操女人的视频在线观看欧美| 亚洲国产精品一区二区尤物区| 中文字幕色av一区二区三区| 国产清纯在线一区二区www| 久久亚洲一区二区三区四区| 精品久久久久久久久久久久久久久久久 | 欧美丝袜自拍制服另类| 色视频成人在线观看免| 91日韩一区二区三区| 不卡视频一二三四| 成人免费看视频| 成人aa视频在线观看| 99re这里只有精品视频首页| 粉嫩蜜臀av国产精品网站| 成人综合婷婷国产精品久久免费| 国产不卡视频一区二区三区| 国产91精品露脸国语对白| 东方aⅴ免费观看久久av| 国产美女一区二区三区| 精品在线观看视频| 国产精品99久久久久久久女警| 国产在线不卡一区| 国产高清视频一区| 韩国三级电影一区二区| 国产精品456| 高潮精品一区videoshd| 不卡av免费在线观看| 成人精品一区二区三区中文字幕| 风间由美一区二区av101| 国产91在线|亚洲| a美女胸又www黄视频久久| 色婷婷av一区二区| 69精品人人人人| 精品成人私密视频| 中文字幕国产精品一区二区|