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

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

?? imc.c

?? 君正早期ucos系統(tǒng)(只有早期的才不沒有打包成庫),MPLAYER,文件系統(tǒng),圖片解碼,瀏覽,電子書,錄音,想學ucos,識貨的人就下吧 russblock fmradio explore set
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * IMC compatible decoder * Copyright (c) 2002-2004 Maxim Poliakovski * Copyright (c) 2006 Benjamin Larsson * Copyright (c) 2006 Konstantin Shishkov * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *//** *  @file imc.c IMC - Intel Music Coder *  A mdct based codec using a 256 points large transform *  divied into 32 bands with some mix of scale factors. *  Only mono is supported. * */#include <math.h>#include <stddef.h>#include <stdio.h>#define ALT_BITSTREAM_READER#include "avcodec.h"#include "bitstream.h"#include "dsputil.h"#include "imcdata.h"#define IMC_BLOCK_SIZE 64#define IMC_FRAME_ID 0x21#define BANDS 32#define COEFFS 256typedef struct {    float old_floor[BANDS];    float flcoeffs1[BANDS];    float flcoeffs2[BANDS];    float flcoeffs3[BANDS];    float flcoeffs4[BANDS];    float flcoeffs5[BANDS];    float flcoeffs6[BANDS];    float CWdecoded[COEFFS];    /** MDCT tables */    //@{    float mdct_sine_window[COEFFS];    float post_cos[COEFFS];    float post_sin[COEFFS];    float pre_coef1[COEFFS];    float pre_coef2[COEFFS];    float last_fft_im[COEFFS];    //@}    int bandWidthT[BANDS];     ///< codewords per band    int bitsBandT[BANDS];      ///< how many bits per codeword in band    int CWlengthT[COEFFS];     ///< how many bits in each codeword    int levlCoeffBuf[BANDS];    int bandFlagsBuf[BANDS];   ///< flags for each band    int sumLenArr[BANDS];      ///< bits for all coeffs in band    int skipFlagRaw[BANDS];    ///< skip flags are stored in raw form or not    int skipFlagBits[BANDS];   ///< bits used to code skip flags    int skipFlagCount[BANDS];  ///< skipped coeffients per band    int skipFlags[COEFFS];     ///< skip coefficient decoding or not    int codewords[COEFFS];     ///< raw codewords read from bitstream    float sqrt_tab[30];    GetBitContext gb;    VLC huffman_vlc[4][4];    int decoder_reset;    float one_div_log2;    DSPContext dsp;    FFTContext fft;    DECLARE_ALIGNED_16(FFTComplex, samples[COEFFS/2]);    DECLARE_ALIGNED_16(float, out_samples[COEFFS]);} IMCContext;static av_cold int imc_decode_init(AVCodecContext * avctx){    int i, j;    IMCContext *q = avctx->priv_data;    double r1, r2;    q->decoder_reset = 1;    for(i = 0; i < BANDS; i++)        q->old_floor[i] = 1.0;    /* Build mdct window, a simple sine window normalized with sqrt(2) */    for(i = 0; i < COEFFS; i++)        q->mdct_sine_window[i] = sin((i + 0.5) / 512.0 * M_PI) * sqrt(2.0);    for(i = 0; i < COEFFS/2; i++){        q->post_cos[i] = cos(i / 256.0 * M_PI);        q->post_sin[i] = sin(i / 256.0 * M_PI);        r1 = sin((i * 4.0 + 1.0) / 1024.0 * M_PI);        r2 = cos((i * 4.0 + 1.0) / 1024.0 * M_PI);        if (i & 0x1)        {            q->pre_coef1[i] =  (r1 + r2) * sqrt(2.0);            q->pre_coef2[i] = -(r1 - r2) * sqrt(2.0);        }        else        {            q->pre_coef1[i] = -(r1 + r2) * sqrt(2.0);            q->pre_coef2[i] =  (r1 - r2) * sqrt(2.0);        }        q->last_fft_im[i] = 0;    }    /* Generate a square root table */    for(i = 0; i < 30; i++) {        q->sqrt_tab[i] = sqrt(i);    }    /* initialize the VLC tables */    for(i = 0; i < 4 ; i++) {        for(j = 0; j < 4; j++) {            init_vlc (&q->huffman_vlc[i][j], 9, imc_huffman_sizes[i],                     imc_huffman_lens[i][j], 1, 1,                     imc_huffman_bits[i][j], 2, 2, 1);        }    }    q->one_div_log2 = 1/log(2);    ff_fft_init(&q->fft, 7, 1);    dsputil_init(&q->dsp, avctx);    return 0;}static void imc_calculate_coeffs(IMCContext* q, float* flcoeffs1, float* flcoeffs2, int* bandWidthT,                                float* flcoeffs3, float* flcoeffs5){    float   workT1[BANDS];    float   workT2[BANDS];    float   workT3[BANDS];    float   snr_limit = 1.e-30;    float   accum = 0.0;    int i, cnt2;    for(i = 0; i < BANDS; i++) {        flcoeffs5[i] = workT2[i] = 0.0;        if (bandWidthT[i]){            workT1[i] = flcoeffs1[i] * flcoeffs1[i];            flcoeffs3[i] = 2.0 * flcoeffs2[i];        } else {            workT1[i] = 0.0;            flcoeffs3[i] = -30000.0;        }        workT3[i] = bandWidthT[i] * workT1[i] * 0.01;        if (workT3[i] <= snr_limit)            workT3[i] = 0.0;    }    for(i = 0; i < BANDS; i++) {        for(cnt2 = i; cnt2 < cyclTab[i]; cnt2++)            flcoeffs5[cnt2] = flcoeffs5[cnt2] + workT3[i];        workT2[cnt2-1] = workT2[cnt2-1] + workT3[i];    }    for(i = 1; i < BANDS; i++) {        accum = (workT2[i-1] + accum) * imc_weights1[i-1];        flcoeffs5[i] += accum;    }    for(i = 0; i < BANDS; i++)        workT2[i] = 0.0;    for(i = 0; i < BANDS; i++) {        for(cnt2 = i-1; cnt2 > cyclTab2[i]; cnt2--)            flcoeffs5[cnt2] += workT3[i];        workT2[cnt2+1] += workT3[i];    }    accum = 0.0;    for(i = BANDS-2; i >= 0; i--) {        accum = (workT2[i+1] + accum) * imc_weights2[i];        flcoeffs5[i] += accum;        //there is missing code here, but it seems to never be triggered    }}static void imc_read_level_coeffs(IMCContext* q, int stream_format_code, int* levlCoeffs){    int i;    VLC *hufftab[4];    int start = 0;    const uint8_t *cb_sel;    int s;    s = stream_format_code >> 1;    hufftab[0] = &q->huffman_vlc[s][0];    hufftab[1] = &q->huffman_vlc[s][1];    hufftab[2] = &q->huffman_vlc[s][2];    hufftab[3] = &q->huffman_vlc[s][3];    cb_sel = imc_cb_select[s];    if(stream_format_code & 4)        start = 1;    if(start)        levlCoeffs[0] = get_bits(&q->gb, 7);    for(i = start; i < BANDS; i++){        levlCoeffs[i] = get_vlc2(&q->gb, hufftab[cb_sel[i]]->table, hufftab[cb_sel[i]]->bits, 2);        if(levlCoeffs[i] == 17)            levlCoeffs[i] += get_bits(&q->gb, 4);    }}static void imc_decode_level_coefficients(IMCContext* q, int* levlCoeffBuf, float* flcoeffs1,                                         float* flcoeffs2){    int i, level;    float tmp, tmp2;    //maybe some frequency division thingy    flcoeffs1[0] = 20000.0 / pow (2, levlCoeffBuf[0] * 0.18945); // 0.18945 = log2(10) * 0.05703125    flcoeffs2[0] = log(flcoeffs1[0])/log(2);    tmp = flcoeffs1[0];    tmp2 = flcoeffs2[0];    for(i = 1; i < BANDS; i++) {        level = levlCoeffBuf[i];        if (level == 16) {            flcoeffs1[i] = 1.0;            flcoeffs2[i] = 0.0;        } else {            if (level < 17)                level -=7;            else if (level <= 24)                level -=32;            else                level -=16;            tmp  *= imc_exp_tab[15 + level];            tmp2 += 0.83048 * level;  // 0.83048 = log2(10) * 0.25            flcoeffs1[i] = tmp;            flcoeffs2[i] = tmp2;        }    }}static void imc_decode_level_coefficients2(IMCContext* q, int* levlCoeffBuf, float* old_floor, float* flcoeffs1,                                          float* flcoeffs2) {    int i;        //FIXME maybe flag_buf = noise coding and flcoeffs1 = new scale factors        //      and flcoeffs2 old scale factors        //      might be incomplete due to a missing table that is in the binary code    for(i = 0; i < BANDS; i++) {        flcoeffs1[i] = 0;        if(levlCoeffBuf[i] < 16) {            flcoeffs1[i] = imc_exp_tab2[levlCoeffBuf[i]] * old_floor[i];            flcoeffs2[i] = (levlCoeffBuf[i]-7) * 0.83048 + flcoeffs2[i]; // 0.83048 = log2(10) * 0.25        } else {            flcoeffs1[i] = old_floor[i];        }    }}/** * Perform bit allocation depending on bits available */static int bit_allocation (IMCContext* q, int stream_format_code, int freebits, int flag) {    int i, j;    const float limit = -1.e20;    float highest = 0.0;    int indx;    int t1 = 0;    int t2 = 1;    float summa = 0.0;    int iacc = 0;    int summer = 0;    int rres, cwlen;    float lowest = 1.e10;    int low_indx = 0;    float workT[32];    int flg;    int found_indx = 0;    for(i = 0; i < BANDS; i++)        highest = FFMAX(highest, q->flcoeffs1[i]);    for(i = 0; i < BANDS-1; i++) {        q->flcoeffs4[i] = q->flcoeffs3[i] - log(q->flcoeffs5[i])/log(2);    }    q->flcoeffs4[BANDS - 1] = limit;    highest = highest * 0.25;    for(i = 0; i < BANDS; i++) {        indx = -1;        if ((band_tab[i+1] - band_tab[i]) == q->bandWidthT[i])            indx = 0;        if ((band_tab[i+1] - band_tab[i]) > q->bandWidthT[i])            indx = 1;        if (((band_tab[i+1] - band_tab[i])/2) >= q->bandWidthT[i])            indx = 2;        if (indx == -1)            return -1;        q->flcoeffs4[i] = q->flcoeffs4[i] + xTab[(indx*2 + (q->flcoeffs1[i] < highest)) * 2 + flag];    }    if (stream_format_code & 0x2) {        q->flcoeffs4[0] = limit;        q->flcoeffs4[1] = limit;        q->flcoeffs4[2] = limit;        q->flcoeffs4[3] = limit;    }    for(i = (stream_format_code & 0x2)?4:0; i < BANDS-1; i++) {        iacc += q->bandWidthT[i];        summa += q->bandWidthT[i] * q->flcoeffs4[i];    }    q->bandWidthT[BANDS-1] = 0;    summa = (summa * 0.5 - freebits) / iacc;    for(i = 0; i < BANDS/2; i++) {        rres = summer - freebits;        if((rres >= -8) && (rres <= 8)) break;        summer = 0;        iacc = 0;        for(j = (stream_format_code & 0x2)?4:0; j < BANDS; j++) {            cwlen = av_clip((int)((q->flcoeffs4[j] * 0.5) - summa + 0.5), 0, 6);            q->bitsBandT[j] = cwlen;            summer += q->bandWidthT[j] * cwlen;            if (cwlen > 0)                iacc += q->bandWidthT[j];        }        flg = t2;        t2 = 1;        if (freebits < summer)            t2 = -1;        if (i == 0)            flg = t2;        if(flg != t2)            t1++;        summa = (float)(summer - freebits) / ((t1 + 1) * iacc) + summa;    }    for(i = (stream_format_code & 0x2)?4:0; i < BANDS; i++) {        for(j = band_tab[i]; j < band_tab[i+1]; j++)            q->CWlengthT[j] = q->bitsBandT[i];    }    if (freebits > summer) {        for(i = 0; i < BANDS; i++) {            workT[i] = (q->bitsBandT[i] == 6) ? -1.e20 : (q->bitsBandT[i] * -2 + q->flcoeffs4[i] - 0.415);        }        highest = 0.0;        do{            if (highest <= -1.e20)                break;            found_indx = 0;            highest = -1.e20;            for(i = 0; i < BANDS; i++) {                if (workT[i] > highest) {                    highest = workT[i];                    found_indx = i;                }            }            if (highest > -1.e20) {                workT[found_indx] -= 2.0;                if (++(q->bitsBandT[found_indx]) == 6)                    workT[found_indx] = -1.e20;                for(j = band_tab[found_indx]; j < band_tab[found_indx+1] && (freebits > summer); j++){                    q->CWlengthT[j]++;                    summer++;                }            }        }while (freebits > summer);    }    if (freebits < summer) {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片一区二区三区 | 欧美在线高清视频| 欧美性xxxxxxxx| 久久这里只有精品视频网| 亚洲欧美综合色| 蜜桃一区二区三区在线| voyeur盗摄精品| wwwwww.欧美系列| 日韩高清欧美激情| 91国在线观看| 国产精品丝袜久久久久久app| 日av在线不卡| 欧美电影一区二区三区| 亚洲你懂的在线视频| 成人夜色视频网站在线观看| 日韩一级片网站| 日韩高清在线观看| 欧美日本韩国一区| 性久久久久久久久久久久| 一本一道久久a久久精品| 亚洲国产精品成人综合| 国产精品亚洲人在线观看| 精品va天堂亚洲国产| 全国精品久久少妇| 91精品国产综合久久精品| 天天影视网天天综合色在线播放 | 国产精品国产三级国产普通话蜜臀| 免费观看日韩电影| 日韩一区二区免费高清| 日韩国产在线观看| 日韩一区二区在线观看视频| 日韩和欧美一区二区三区| 欧美色精品在线视频| 亚洲在线视频网站| 欧美日韩精品免费| 午夜a成v人精品| 日韩一区二区三区免费看 | 2020国产成人综合网| 国产在线视视频有精品| 久久综合网色—综合色88| 国精品**一区二区三区在线蜜桃| 精品国产sm最大网站免费看| 激情图片小说一区| 国产午夜精品久久久久久久| 成人黄色777网| 一区二区三区不卡在线观看| 在线一区二区三区| 亚洲va韩国va欧美va精品| 日韩无一区二区| 激情六月婷婷综合| 亚洲欧洲精品天堂一级| 在线观看日韩高清av| 青青草原综合久久大伊人精品 | 国产一区二区看久久| 中文字幕欧美激情一区| 在线看国产日韩| 老司机午夜精品| 欧美韩日一区二区三区| 91激情五月电影| 日韩二区三区四区| 国产丝袜欧美中文另类| 91日韩精品一区| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久久久久一二三区| 国产91精品在线观看| 亚洲福利一区二区三区| 久久精品在线观看| 欧美午夜精品理论片a级按摩| 老汉av免费一区二区三区| 国产精品久久久久影院亚瑟| 欧美精品一卡二卡| 成人性色生活片免费看爆迷你毛片| 亚洲电影一区二区| 国产无人区一区二区三区| 欧美亚洲丝袜传媒另类| 国产成人免费视频一区| 亚洲国产sm捆绑调教视频| 精品成人一区二区三区四区| 欧美亚洲综合久久| 成人综合激情网| 裸体歌舞表演一区二区| 亚洲影院在线观看| 中文无字幕一区二区三区| 欧美一区国产二区| 日本电影亚洲天堂一区| 国产精品亚洲专一区二区三区| 丝袜美腿亚洲色图| 亚洲欧美日韩国产综合| 精品日韩欧美一区二区| 欧美日韩国产另类一区| 色悠悠亚洲一区二区| 国产精品系列在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲美腿欧美偷拍| 国产欧美日韩另类一区| 久久综合网色—综合色88| 正在播放亚洲一区| 在线免费精品视频| 色综合天天综合给合国产| 国产成人av一区| 国产一区二区美女诱惑| 极品少妇一区二区三区精品视频| 性做久久久久久| 亚洲国产精品久久久久秋霞影院| 亚洲码国产岛国毛片在线| 国产精品美女一区二区| 中文字幕巨乱亚洲| 国产精品天天看| 国产精品久久久久久久久图文区| 久久久久久99久久久精品网站| 日韩欧美中文一区二区| 欧美一区二区网站| 欧美夫妻性生活| 欧美一区二区三区日韩视频| 欧美日韩精品免费| 欧美日韩aaaaa| 欧美一级二级三级蜜桃| 欧美成人a视频| 久久久精品国产免大香伊 | 日韩欧美一区二区免费| 日韩小视频在线观看专区| 精品国产免费一区二区三区香蕉| 日韩欧美一区中文| 日韩丝袜情趣美女图片| 亚洲精品在线三区| 亚洲国产精品ⅴa在线观看| 国产精品福利av| 日本人妖一区二区| 日日嗨av一区二区三区四区| 日韩av中文在线观看| 久久福利视频一区二区| 国产成人av影院| 99久久伊人网影院| 欧美艳星brazzers| 欧美一级淫片007| 国产欧美精品国产国产专区| 成人欧美一区二区三区白人| 亚洲国产三级在线| 精品在线播放午夜| 99riav久久精品riav| 欧美性色黄大片| 久久免费电影网| 亚洲精品视频在线观看网站| 青青草国产成人99久久| 成人黄动漫网站免费app| 欧美色大人视频| www久久精品| 亚洲精品国产一区二区三区四区在线| 视频一区二区不卡| 国产91清纯白嫩初高中在线观看| 欧美优质美女网站| 精品国产1区二区| 一区二区三区免费| 国产一区二区视频在线播放| 色婷婷综合久久| 国产亚洲一二三区| 亚洲h精品动漫在线观看| 国产精品夜夜嗨| 日韩一区二区三区在线| 亚洲九九爱视频| 国产精品亚洲专一区二区三区| 欧美日韩国产综合视频在线观看 | 欧美日韩精品一区视频| 久久午夜老司机| 日韩中文字幕区一区有砖一区| 成人一区二区三区| 日韩美女一区二区三区四区| 亚洲精品久久久蜜桃| 国产一区二区不卡| 91精品免费在线观看| 亚洲精品美国一| 成人黄色在线网站| 精品国产一区二区精华| 一区二区三区中文字幕电影| 国产一区二区精品在线观看| 日韩亚洲电影在线| 香蕉加勒比综合久久| 色偷偷88欧美精品久久久| 国产三级精品三级在线专区| 久久丁香综合五月国产三级网站| 精品视频1区2区| 一区二区三区精品在线| 成人性视频免费网站| 久久精子c满五个校花| 美国十次综合导航| 欧美一区二区三级| 天堂成人免费av电影一区| 在线观看不卡视频| 亚洲少妇屁股交4| 99久久精品免费| 中文字幕一区二区三中文字幕| 国产风韵犹存在线视精品| 久久久久久夜精品精品免费| 国内精品视频一区二区三区八戒| 日韩欧美中文字幕精品| 久久69国产一区二区蜜臀| 欧美一区日韩一区| 裸体一区二区三区| 日韩免费看网站| 韩国毛片一区二区三区|