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

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

?? libmp3dec.c

?? 能解壓幾乎所有mp3
?? C
?? 第 1 頁 / 共 5 頁
字號:
            break;
        default:
        case 3:
            frame_size = (frame_size * 144000) / (sample_rate << s->lsf);
            frame_size += padding;
            break;
        }
        s->frame_size = frame_size;
    } else {
        /* if no frame size computed, signal it */
        if (!s->free_format_frame_size)
            return 1;
        /* free format: compute bitrate and real frame size from the
           frame size we extracted by reading the bitstream */
        s->frame_size = s->free_format_frame_size;
        switch(s->layer) {
        case 1:
            s->frame_size += padding  * 4;
            s->bit_rate = (s->frame_size * sample_rate) / 48000;
            break;
        case 2:
            s->frame_size += padding;
            s->bit_rate = (s->frame_size * sample_rate) / 144000;
            break;
        default:
        case 3:
            s->frame_size += padding;
            s->bit_rate = (s->frame_size * (sample_rate << s->lsf)) / 144000;
            break;
        }
    }
    
    return 0;
}

/* useful helper to get mpeg audio stream infos. Return -1 if error in
   header, otherwise the coded frame size in bytes */
int mpa_decode_header(AVCodecContext *avctx, uint32_t head)
{
	uint32_t nHead = SWAP32(head);
    MPADecodeContext s1,  *s = &s1;
    memset( s, 0, sizeof(MPADecodeContext));

    if (check_header(nHead) != 0)
	{
		printf("check_header Error\n");
        return -1;
	}

    if (decode_header(s, nHead) != 0) 
	{
        return -1;
    }

    switch(s->layer) {
    case 1:
        avctx->frame_size = 384;
        break;
    case 2:
        avctx->frame_size = 1152;
        break;
    default:
    case 3:
        if (s->lsf)
            avctx->frame_size = 576;
        else
            avctx->frame_size = 1152;
        break;
    }

    avctx->sample_rate = s->sample_rate;
    avctx->channels = s->nb_channels;
    avctx->bit_rate = s->bit_rate;
    avctx->sub_id = s->layer;
    return s->frame_size;
}


/* return the number of decoded frames */
static int mp_decode_layer1(MPADecodeContext *s)
{
    int bound, i, v, n, ch, j, mant;
    uint8_t allocation[MPA_MAX_CHANNELS][SBLIMIT];
    uint8_t scale_factors[MPA_MAX_CHANNELS][SBLIMIT];

    if (s->mode == MPA_JSTEREO) 
        bound = (s->mode_ext + 1) * 4;
    else
        bound = SBLIMIT;

    /* allocation bits */
    for(i=0;i<bound;i++) {
        for(ch=0;ch<s->nb_channels;ch++) {
            allocation[ch][i] = get_bits(&s->gb, 4);
        }
    }
    for(i=bound;i<SBLIMIT;i++) {
        allocation[0][i] = get_bits(&s->gb, 4);
    }

    /* scale factors */
    for(i=0;i<bound;i++) {
        for(ch=0;ch<s->nb_channels;ch++) {
            if (allocation[ch][i])
                scale_factors[ch][i] = get_bits(&s->gb, 6);
        }
    }
    for(i=bound;i<SBLIMIT;i++) {
        if (allocation[0][i]) {
            scale_factors[0][i] = get_bits(&s->gb, 6);
            scale_factors[1][i] = get_bits(&s->gb, 6);
        }
    }
    
    /* compute samples */
    for(j=0;j<12;j++) {
        for(i=0;i<bound;i++) {
            for(ch=0;ch<s->nb_channels;ch++) {
                n = allocation[ch][i];
                if (n) {
                    mant = get_bits(&s->gb, n + 1);
                    v = l1_unscale(n, mant, scale_factors[ch][i]);
                } else {
                    v = 0;
                }
                s->sb_samples[ch][j][i] = v;
            }
        }
        for(i=bound;i<SBLIMIT;i++) {
            n = allocation[0][i];
            if (n) {
                mant = get_bits(&s->gb, n + 1);
                v = l1_unscale(n, mant, scale_factors[0][i]);
                s->sb_samples[0][j][i] = v;
                v = l1_unscale(n, mant, scale_factors[1][i]);
                s->sb_samples[1][j][i] = v;
            } else {
                s->sb_samples[0][j][i] = 0;
                s->sb_samples[1][j][i] = 0;
            }
        }
    }
    return 12;
}

/* bitrate is in kb/s */
int l2_select_table(int bitrate, int nb_channels, int freq, int lsf)
{
    int ch_bitrate, table;
    
    ch_bitrate = bitrate / nb_channels;
    if (!lsf) {
        if ((freq == 48000 && ch_bitrate >= 56) ||
            (ch_bitrate >= 56 && ch_bitrate <= 80)) 
            table = 0;
        else if (freq != 48000 && ch_bitrate >= 96) 
            table = 1;
        else if (freq != 32000 && ch_bitrate <= 48) 
            table = 2;
        else 
            table = 3;
    } else {
        table = 4;
    }
    return table;
}

static int mp_decode_layer2(MPADecodeContext *s)
{
    int sblimit; /* number of used subbands */
    const unsigned char *alloc_table;
    int table, bit_alloc_bits, i, j, ch, bound, v;
    unsigned char bit_alloc[MPA_MAX_CHANNELS][SBLIMIT];
    unsigned char scale_code[MPA_MAX_CHANNELS][SBLIMIT];
    unsigned char scale_factors[MPA_MAX_CHANNELS][SBLIMIT][3], *sf;
    int scale, qindex, bits, steps, k, l, m, b;

    /* select decoding table */
    table = l2_select_table(s->bit_rate / 1000, s->nb_channels, 
                            s->sample_rate, s->lsf);
    sblimit = sblimit_table[table];
    alloc_table = alloc_tables[table];

    if (s->mode == MPA_JSTEREO) 
        bound = (s->mode_ext + 1) * 4;
    else
        bound = sblimit;


    /* sanity check */
    if( bound > sblimit ) bound = sblimit;

    /* parse bit allocation */
    j = 0;
    for(i=0;i<bound;i++) {
        bit_alloc_bits = alloc_table[j];
        for(ch=0;ch<s->nb_channels;ch++) {
            bit_alloc[ch][i] = get_bits(&s->gb, bit_alloc_bits);
        }
        j += 1 << bit_alloc_bits;
    }
    for(i=bound;i<sblimit;i++) {
        bit_alloc_bits = alloc_table[j];
        v = get_bits(&s->gb, bit_alloc_bits);
        bit_alloc[0][i] = v;
        bit_alloc[1][i] = v;
        j += 1 << bit_alloc_bits;
    }

   /* scale codes */
    for(i=0;i<sblimit;i++) {
        for(ch=0;ch<s->nb_channels;ch++) {
            if (bit_alloc[ch][i]) 
                scale_code[ch][i] = get_bits(&s->gb, 2);
        }
    }
    
    /* scale factors */
    for(i=0;i<sblimit;i++) {
        for(ch=0;ch<s->nb_channels;ch++) {
            if (bit_alloc[ch][i]) {
                sf = scale_factors[ch][i];
                switch(scale_code[ch][i]) {
                default:
                case 0:
                    sf[0] = get_bits(&s->gb, 6);
                    sf[1] = get_bits(&s->gb, 6);
                    sf[2] = get_bits(&s->gb, 6);
                    break;
                case 2:
                    sf[0] = get_bits(&s->gb, 6);
                    sf[1] = sf[0];
                    sf[2] = sf[0];
                    break;
                case 1:
                    sf[0] = get_bits(&s->gb, 6);
                    sf[2] = get_bits(&s->gb, 6);
                    sf[1] = sf[0];
                    break;
                case 3:
                    sf[0] = get_bits(&s->gb, 6);
                    sf[2] = get_bits(&s->gb, 6);
                    sf[1] = sf[2];
                    break;
                }
            }
        }
    }

    /* samples */
    for(k=0;k<3;k++) 
	{
        for(l=0;l<12;l+=3) 
		{
            j = 0;
            for(i=0;i<bound;i++)
			{
                bit_alloc_bits = alloc_table[j];
                for(ch=0;ch<s->nb_channels;ch++) 
				{
                    b = bit_alloc[ch][i];
                    if (b) 
					{
                        scale = scale_factors[ch][i][k];
                        qindex = alloc_table[j+b];
                        bits = quant_bits[qindex];
                        if (bits < 0) {
                            /* 3 values at the same time */
                            v = get_bits(&s->gb, -bits);
                            steps = quant_steps[qindex];
                            s->sb_samples[ch][k * 12 + l + 0][i] = 
                                l2_unscale_group(steps, v % steps, scale);
                            v = v / steps;
                            s->sb_samples[ch][k * 12 + l + 1][i] = 
                                l2_unscale_group(steps, v % steps, scale);
                            v = v / steps;
                            s->sb_samples[ch][k * 12 + l + 2][i] = 
                                l2_unscale_group(steps, v, scale);
                        } else {
                            for(m=0;m<3;m++) {
                                v = get_bits(&s->gb, bits);
                                v = l1_unscale(bits - 1, v, scale);
                                s->sb_samples[ch][k * 12 + l + m][i] = v;
                            }
                        }
                    } else {
                        s->sb_samples[ch][k * 12 + l + 0][i] = 0;
                        s->sb_samples[ch][k * 12 + l + 1][i] = 0;
                        s->sb_samples[ch][k * 12 + l + 2][i] = 0;
                    }
                }
                /* next subband in alloc table */
                j += 1 << bit_alloc_bits; 
            }
            /* XXX: find a way to avoid this duplication of code */
            for(i=bound;i<sblimit;i++) {
                bit_alloc_bits = alloc_table[j];
                b = bit_alloc[0][i];
                if (b) {
                    int mant, scale0, scale1;
                    scale0 = scale_factors[0][i][k];
                    scale1 = scale_factors[1][i][k];
                    qindex = alloc_table[j+b];
                    bits = quant_bits[qindex];
                    if (bits < 0) {
                        /* 3 values at the same time */
                        v = get_bits(&s->gb, -bits);
                        steps = quant_steps[qindex];
                        mant = v % steps;
                        v = v / steps;
                        s->sb_samples[0][k * 12 + l + 0][i] = 
                            l2_unscale_group(steps, mant, scale0);
                        s->sb_samples[1][k * 12 + l + 0][i] = 
                            l2_unscale_group(steps, mant, scale1);
                        mant = v % steps;
                        v = v / steps;
                        s->sb_samples[0][k * 12 + l + 1][i] = 
                            l2_unscale_group(steps, mant, scale0);
                        s->sb_samples[1][k * 12 + l + 1][i] = 
                            l2_unscale_group(steps, mant, scale1);
                        s->sb_samples[0][k * 12 + l + 2][i] = 
                            l2_unscale_group(steps, v, scale0);
                        s->sb_samples[1][k * 12 + l + 2][i] = 
                            l2_unscale_group(steps, v, scale1);
                    } else {
                        for(m=0;m<3;m++) {
                            mant = get_bits(&s->gb, bits);
                            s->sb_samples[0][k * 12 + l + m][i] = 
                                l1_unscale(bits - 1, mant, scale0);
                            s->sb_samples[1][k * 12 + l + m][i] = 
                                l1_unscale(bits - 1, mant, scale1);
                        }
                    }
                } else {
                    s->sb_samples[0][k * 12 + l + 0][i] = 0;
                    s->sb_samples[0][k * 12 + l + 1][i] = 0;
                    s->sb_samples[0][k * 12 + l + 2][i] = 0;
                    s->sb_samples[1][k * 12 + l + 0][i] = 0;
                    s->sb_samples[1][k * 12 + l + 1][i] = 0;
                    s->sb_samples[1][k * 12 + l + 2][i] = 0;
                }
                /* next subband in alloc table */
                j += 1 << bit_alloc_bits; 
            }
            /* fill remaining samples to zero */
            for(i=sblimit;i<SBLIMIT;i++) {
                for(ch=0;ch<s->nb_channels;ch++) {
                    s->sb_samples[ch][k * 12 + l + 0][i] = 0;
                    s->sb_samples[ch][k * 12 + l + 1][i] = 0;
                    s->sb_samples[ch][k * 12 + l + 2][i] = 0;
                }
            }
        }
    }
    return 3 * 12;
}

/*
 * Seek back in the stream for backstep bytes (at most 511 bytes)
 */
static void seek_to_maindata(MPADecodeContext *s, unsigned int backstep)
{
    uint8_t *ptr;

    /* compute current position in stream */
    ptr = (uint8_t *)(s->gb.buffer + (get_bits_count(&s->gb)>>3));

    /* copy old data before current one */
    ptr -= backstep;
    memcpy(ptr, s->inbuf1[s->inbuf_index ^ 1] + 
           BACKSTEP_SIZE + s->old_frame_size - backstep, backstep);
    /* init get bits again */
    init_get_bits(&s->gb, ptr, (s->frame_size + backstep)*8);

    /* prepare next buffer */
    s->inbuf_index ^= 1;
    s->inbuf = &s->inbuf1[s->inbuf_index][BACKSTEP_SIZE];
    s->old_frame_size = s->frame_size;
}

static void lsf_sf_expand(int *slen,
                                 int sf, int n1, int n2, int n3)
{
    if (n3) {
        slen[3] = sf % n3;
        sf /= n3;
    } else {
        slen[3] = 0;
    }
    if (n2) {
        slen[2] = sf % n2;
        sf /= n2;
    } else {
        slen[2] = 0;
    }
    slen[1] = sf % n1;
    sf /= n1;
    slen[0] = sf;
}

static void exponents_from_scale_factors(MPADecodeContext *s, 
                                         GranuleDef *g,
                                         int16_t *exponents)
{
    const uint8_t *bstab, *pretab;
    int len, i, j, k, l, v0, shift, gain, gains[3];
    int16_t *exp_ptr;

    exp_ptr = exponents;
    gain = g->global_gain - 210;
    shift = g->scalefac_scale + 1;

    bstab = band_size_long[s->sample_rate_index];
    pretab = mpa_pretab[g->preflag];
    for(i=0;i<g->long_end;i++) {
        v0 = gain - ((g->scale_factors[i] + pretab[i]) << shift);
        len = bstab[i];
        for(j=len;j>0;j--)
            *exp_ptr++ = v0;
    }

    if (g->short_start < 13) {
        bstab = band_size_short[s->sample_rate_index];
        gains[0] = gain - (g->subblock_gain[0] << 3);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线影院国内精品| 亚洲国产一区在线观看| 亚洲欧美日韩小说| 美女视频黄免费的久久| 成人小视频在线| 欧美影院一区二区三区| 国产色产综合色产在线视频| 肉肉av福利一精品导航| eeuss鲁片一区二区三区 | 精品国产乱码久久久久久牛牛| 中文字幕一区三区| 国产激情精品久久久第一区二区 | 久久一留热品黄| 亚洲第一电影网| 一本一道久久a久久精品综合蜜臀| www一区二区| 精品一区二区综合| 91精品国产综合久久久久久 | 中文字幕视频一区| 福利一区在线观看| 久久久久国色av免费看影院| 日韩电影一二三区| 欧美日韩dvd在线观看| 亚洲综合激情小说| 色老汉av一区二区三区| 中文字幕一区免费在线观看 | 欧美日韩一本到| 亚洲精品免费在线观看| 99久久精品免费精品国产| 国产精品网站在线观看| 成人天堂资源www在线| 国产区在线观看成人精品| 极品少妇xxxx精品少妇| 精品国产一区二区精华 | 午夜久久久久久久久久一区二区| 91国偷自产一区二区三区成为亚洲经典| 中文成人综合网| 99re视频精品| 亚洲一区二区中文在线| 欧美精品vⅰdeose4hd| 日本不卡高清视频| 久久综合九色综合97婷婷女人| 久久99精品久久久久久久久久久久| 欧美成人乱码一区二区三区| 国产一区二区成人久久免费影院| 国产亚洲成av人在线观看导航| 成人黄色免费短视频| 亚洲婷婷国产精品电影人久久| 色8久久精品久久久久久蜜| 亚洲一区二区免费视频| 欧美一区二区三区在线观看视频| 另类综合日韩欧美亚洲| 久久久久久久久久美女| 色综合久久综合中文综合网| 性欧美疯狂xxxxbbbb| 精品日韩一区二区| 不卡一区中文字幕| 亚洲第一av色| 国产三级欧美三级日产三级99| 91色综合久久久久婷婷| 欧美aaa在线| 欧美激情一区二区三区蜜桃视频| 在线中文字幕一区二区| 国产呦精品一区二区三区网站| 亚洲欧洲一区二区在线播放| 777a∨成人精品桃花网| 大尺度一区二区| 日日噜噜夜夜狠狠视频欧美人| 亚洲国产精品精华液ab| 欧美日韩午夜影院| 丁香六月综合激情| 日本aⅴ免费视频一区二区三区 | 成人丝袜视频网| 天天操天天综合网| 中文字幕一区二区三区在线观看 | 久久久av毛片精品| 欧美吻胸吃奶大尺度电影| 国产一区二区三区| 午夜一区二区三区在线观看| 久久久久久黄色| 91精品国产aⅴ一区二区| 99久久国产综合精品色伊| 免费一区二区视频| 亚洲精品成人在线| 久久精品人人做人人爽97| 欧美久久久久久蜜桃| 99热精品国产| 国产99久久久精品| 奇米色777欧美一区二区| 亚洲特级片在线| 国产偷国产偷亚洲高清人白洁| 欧美一区二区三区在线视频| 欧洲一区在线电影| 93久久精品日日躁夜夜躁欧美| 韩国精品主播一区二区在线观看 | 国产一区二区三区电影在线观看| 亚洲电影在线免费观看| 亚洲色图制服丝袜| 一区在线观看免费| 中文字幕av一区二区三区高| 久久这里只有精品视频网| 欧美一区二区在线免费播放| 99re视频精品| 99精品视频在线播放观看| 9久草视频在线视频精品| 国产精品一二三在| 韩国av一区二区三区在线观看| 另类专区欧美蜜桃臀第一页| 日本亚洲免费观看| 麻豆久久一区二区| 美女视频一区在线观看| 日韩av电影免费观看高清完整版在线观看| 亚洲国产精品久久艾草纯爱| 一区二区三区四区乱视频| 一区二区三区免费在线观看| 亚洲综合色婷婷| 悠悠色在线精品| 午夜成人免费视频| 午夜视黄欧洲亚洲| 欧美a级理论片| 国产一区二区三区四区五区美女| 国内成人免费视频| 国产精品亚洲а∨天堂免在线| 国产一区在线观看麻豆| 国产成人午夜视频| 91在线码无精品| 欧美三级韩国三级日本一级| 7777女厕盗摄久久久| 精品国免费一区二区三区| 国产欧美一区二区精品性| ●精品国产综合乱码久久久久| 亚洲欧美国产高清| 日精品一区二区三区| 加勒比av一区二区| 成人动漫av在线| 欧美日韩一区久久| 精品黑人一区二区三区久久| 久久精品一区八戒影视| 国产精品福利影院| 亚洲国产成人va在线观看天堂| 日韩avvvv在线播放| 福利一区二区在线| 欧美在线观看视频在线| 欧美mv日韩mv国产网站| 国产精品麻豆久久久| 天天操天天干天天综合网| 国产一区二区三区视频在线播放| 99久久er热在这里只有精品15| 欧美日韩国产经典色站一区二区三区 | 欧美一级夜夜爽| 欧美激情一二三区| 肉肉av福利一精品导航| 国产成人8x视频一区二区| 欧美色男人天堂| 欧美国产成人在线| 日韩成人免费看| 99v久久综合狠狠综合久久| 日韩三级av在线播放| 亚洲欧美日韩国产综合| 极品少妇xxxx偷拍精品少妇| 91久久国产综合久久| 久久久99精品免费观看| 亚洲国产综合在线| eeuss影院一区二区三区| 精品日本一线二线三线不卡| 一区二区成人在线视频| 国产丶欧美丶日本不卡视频| 欧美三级视频在线观看| 国产精品黄色在线观看| 精品一区二区三区视频| 欧美无人高清视频在线观看| 国产精品免费网站在线观看| 青青草一区二区三区| 欧美三级蜜桃2在线观看| 中文字幕亚洲精品在线观看| 国产在线不卡一区| 91精品国产欧美日韩| 一区二区在线电影| av一区二区不卡| 精品国产91乱码一区二区三区 | 8x8x8国产精品| 亚洲综合一区二区三区| www.欧美.com| 国产亚洲短视频| 国产一本一道久久香蕉| 欧美电影免费观看高清完整版| 五月激情综合网| 欧美色爱综合网| 一区二区三区免费网站| av午夜精品一区二区三区| 国产日韩亚洲欧美综合| 国产精品18久久久| 欧美大肚乱孕交hd孕妇| 免费观看30秒视频久久| 6080午夜不卡| 蜜桃视频第一区免费观看| 91精品国模一区二区三区| 日韩电影在线观看一区| 欧美一级生活片| 久久精品国产久精国产爱|