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

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

?? adpcm.c

?? 從FFMPEG轉換而來的H264解碼程序,VC下編譯..
?? C
?? 第 1 頁 / 共 3 頁
字號:
        c->status[0].step_index = src[14];
        c->status[1].step_index = src[15];
        /* sign extend the predictors */
        src += 16;
        diff_channel = c->status[1].predictor;

        /* the DK3_GET_NEXT_NIBBLE macro issues the break statement when
         * the buffer is consumed */
        while (1) {

            /* for this algorithm, c->status[0] is the sum channel and
             * c->status[1] is the diff channel */

            /* process the first predictor of the sum channel */
            DK3_GET_NEXT_NIBBLE();
            adpcm_ima_expand_nibble(&c->status[0], nibble, 3);

            /* process the diff channel predictor */
            DK3_GET_NEXT_NIBBLE();
            adpcm_ima_expand_nibble(&c->status[1], nibble, 3);

            /* process the first pair of stereo PCM samples */
            diff_channel = (diff_channel + c->status[1].predictor) / 2;
            *samples++ = c->status[0].predictor + c->status[1].predictor;
            *samples++ = c->status[0].predictor - c->status[1].predictor;

            /* process the second predictor of the sum channel */
            DK3_GET_NEXT_NIBBLE();
            adpcm_ima_expand_nibble(&c->status[0], nibble, 3);

            /* process the second pair of stereo PCM samples */
            diff_channel = (diff_channel + c->status[1].predictor) / 2;
            *samples++ = c->status[0].predictor + c->status[1].predictor;
            *samples++ = c->status[0].predictor - c->status[1].predictor;
        }
        break;
    case CODEC_ID_ADPCM_IMA_WS:
        /* no per-block initialization; just start decoding the data */
        while (src < buf + buf_size) {

            if (st) {
                *samples++ = adpcm_ima_expand_nibble(&c->status[0],
                    (src[0] >> 4) & 0x0F, 3);
                *samples++ = adpcm_ima_expand_nibble(&c->status[1],
                    src[0] & 0x0F, 3);
            } else {
                *samples++ = adpcm_ima_expand_nibble(&c->status[0],
                    (src[0] >> 4) & 0x0F, 3);
                *samples++ = adpcm_ima_expand_nibble(&c->status[0],
                    src[0] & 0x0F, 3);
            }

            src++;
        }
        break;
    case CODEC_ID_ADPCM_XA:
        c->status[0].sample1 = c->status[0].sample2 =
        c->status[1].sample1 = c->status[1].sample2 = 0;
        while (buf_size >= 128) {
            xa_decode(samples, src, &c->status[0], &c->status[1],
                avctx->channels);
            src += 128;
            samples += 28 * 8;
            buf_size -= 128;
        }
        break;
    case CODEC_ID_ADPCM_EA:
        samples_in_chunk = AV_RL32(src);
        if (samples_in_chunk >= ((buf_size - 12) * 2)) {
            src += buf_size;
            break;
        }
        src += 4;
        current_left_sample = (int16_t)AV_RL16(src);
        src += 2;
        previous_left_sample = (int16_t)AV_RL16(src);
        src += 2;
        current_right_sample = (int16_t)AV_RL16(src);
        src += 2;
        previous_right_sample = (int16_t)AV_RL16(src);
        src += 2;

        for (count1 = 0; count1 < samples_in_chunk/28;count1++) {
            coeff1l = ea_adpcm_table[(*src >> 4) & 0x0F];
            coeff2l = ea_adpcm_table[((*src >> 4) & 0x0F) + 4];
            coeff1r = ea_adpcm_table[*src & 0x0F];
            coeff2r = ea_adpcm_table[(*src & 0x0F) + 4];
            src++;

            shift_left = ((*src >> 4) & 0x0F) + 8;
            shift_right = (*src & 0x0F) + 8;
            src++;

            for (count2 = 0; count2 < 28; count2++) {
                next_left_sample = (((*src & 0xF0) << 24) >> shift_left);
                next_right_sample = (((*src & 0x0F) << 28) >> shift_right);
                src++;

                next_left_sample = (next_left_sample +
                    (current_left_sample * coeff1l) +
                    (previous_left_sample * coeff2l) + 0x80) >> 8;
                next_right_sample = (next_right_sample +
                    (current_right_sample * coeff1r) +
                    (previous_right_sample * coeff2r) + 0x80) >> 8;
                CLAMP_TO_SHORT(next_left_sample);
                CLAMP_TO_SHORT(next_right_sample);

                previous_left_sample = current_left_sample;
                current_left_sample = next_left_sample;
                previous_right_sample = current_right_sample;
                current_right_sample = next_right_sample;
                *samples++ = (unsigned short)current_left_sample;
                *samples++ = (unsigned short)current_right_sample;
            }
        }
        break;
    case CODEC_ID_ADPCM_IMA_SMJPEG:
        c->status[0].predictor = *src;
        src += 2;
        c->status[0].step_index = *src++;
        src++;  /* skip another byte before getting to the meat */
        while (src < buf + buf_size) {
            *samples++ = adpcm_ima_expand_nibble(&c->status[0],
                *src & 0x0F, 3);
            *samples++ = adpcm_ima_expand_nibble(&c->status[0],
                (*src >> 4) & 0x0F, 3);
            src++;
        }
        break;
    case CODEC_ID_ADPCM_CT:
        while (src < buf + buf_size) {
            if (st) {
                *samples++ = adpcm_ct_expand_nibble(&c->status[0],
                    (src[0] >> 4) & 0x0F);
                *samples++ = adpcm_ct_expand_nibble(&c->status[1],
                    src[0] & 0x0F);
            } else {
                *samples++ = adpcm_ct_expand_nibble(&c->status[0],
                    (src[0] >> 4) & 0x0F);
                *samples++ = adpcm_ct_expand_nibble(&c->status[0],
                    src[0] & 0x0F);
            }
            src++;
        }
        break;
    case CODEC_ID_ADPCM_SBPRO_4:
    case CODEC_ID_ADPCM_SBPRO_3:
    case CODEC_ID_ADPCM_SBPRO_2:
        if (!c->status[0].step_index) {
            /* the first byte is a raw sample */
            *samples++ = 128 * (*src++ - 0x80);
            if (st)
              *samples++ = 128 * (*src++ - 0x80);
            c->status[0].step_index = 1;
        }
        if (avctx->codec->id == CODEC_ID_ADPCM_SBPRO_4) {
            while (src < buf + buf_size) {
                *samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
                    (src[0] >> 4) & 0x0F, 4, 0);
                *samples++ = adpcm_sbpro_expand_nibble(&c->status[st],
                    src[0] & 0x0F, 4, 0);
                src++;
            }
        } else if (avctx->codec->id == CODEC_ID_ADPCM_SBPRO_3) {
            while (src < buf + buf_size && samples + 2 < samples_end) {
                *samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
                    (src[0] >> 5) & 0x07, 3, 0);
                *samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
                    (src[0] >> 2) & 0x07, 3, 0);
                *samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
                    src[0] & 0x03, 2, 0);
                src++;
            }
        } else {
            while (src < buf + buf_size && samples + 3 < samples_end) {
                *samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
                    (src[0] >> 6) & 0x03, 2, 2);
                *samples++ = adpcm_sbpro_expand_nibble(&c->status[st],
                    (src[0] >> 4) & 0x03, 2, 2);
                *samples++ = adpcm_sbpro_expand_nibble(&c->status[0],
                    (src[0] >> 2) & 0x03, 2, 2);
                *samples++ = adpcm_sbpro_expand_nibble(&c->status[st],
                    src[0] & 0x03, 2, 2);
                src++;
            }
        }
        break;
    case CODEC_ID_ADPCM_SWF:
    {
        GetBitContext gb;
        const int *table;
        int k0, signmask, nb_bits;
        int size = buf_size*8;

        init_get_bits(&gb, buf, size);

        //read bits & inital values
        nb_bits = get_bits(&gb, 2)+2;
        //av_log(NULL,AV_LOG_INFO,"nb_bits: %d\n", nb_bits);
        table = swf_index_tables[nb_bits-2];
        k0 = 1 << (nb_bits-2);
        signmask = 1 << (nb_bits-1);

        for (i = 0; i < avctx->channels; i++) {
            *samples++ = c->status[i].predictor = get_sbits(&gb, 16);
            c->status[i].step_index = get_bits(&gb, 6);
        }

        while (get_bits_count(&gb) < size)
        {
            int i;

            for (i = 0; i < avctx->channels; i++) {
                // similar to IMA adpcm
                int delta = get_bits(&gb, nb_bits);
                int step = step_table[c->status[i].step_index];
                long vpdiff = 0; // vpdiff = (delta+0.5)*step/4
                int k = k0;

                do {
                    if (delta & k)
                        vpdiff += step;
                    step >>= 1;
                    k >>= 1;
                } while(k);
                vpdiff += step;

                if (delta & signmask)
                    c->status[i].predictor -= vpdiff;
                else
                    c->status[i].predictor += vpdiff;

                c->status[i].step_index += table[delta & (~signmask)];

                c->status[i].step_index = av_clip(c->status[i].step_index, 0, 88);
                c->status[i].predictor = av_clip(c->status[i].predictor, -32768, 32767);

                *samples++ = c->status[i].predictor;
                if (samples >= samples_end) {
                    av_log(avctx, AV_LOG_ERROR, "allocated output buffer is too small\n");
                    return -1;
                }
            }
        }
        src += buf_size;
        break;
    }
    case CODEC_ID_ADPCM_YAMAHA:
        while (src < buf + buf_size) {
            if (st) {
                *samples++ = adpcm_yamaha_expand_nibble(&c->status[0],
                        src[0] & 0x0F);
                *samples++ = adpcm_yamaha_expand_nibble(&c->status[1],
                        (src[0] >> 4) & 0x0F);
            } else {
                *samples++ = adpcm_yamaha_expand_nibble(&c->status[0],
                        src[0] & 0x0F);
                *samples++ = adpcm_yamaha_expand_nibble(&c->status[0],
                        (src[0] >> 4) & 0x0F);
            }
            src++;
        }
        break;

    default:
        return -1;
    }
    *data_size = (uint8_t *)samples - (uint8_t *)data;
    return src - buf;
}

#define ADPCM_DECODER(id,name)                  \
AVCodec name ## _decoder = {                    \
    #name,                                      \
    CODEC_TYPE_AUDIO,                           \
    id,                                         \
    sizeof(ADPCMContext),                       \
    adpcm_decode_init,                          \
    NULL,                                       \
    NULL,                                       \
    adpcm_decode_frame,                         \
};

#define ADPCM_CODEC(id, name)                   \
 ADPCM_DECODER(id,name)

ADPCM_CODEC(CODEC_ID_ADPCM_IMA_QT, adpcm_ima_qt);
ADPCM_CODEC(CODEC_ID_ADPCM_IMA_WAV, adpcm_ima_wav);
ADPCM_CODEC(CODEC_ID_ADPCM_IMA_DK3, adpcm_ima_dk3);
ADPCM_CODEC(CODEC_ID_ADPCM_IMA_DK4, adpcm_ima_dk4);
ADPCM_CODEC(CODEC_ID_ADPCM_IMA_WS, adpcm_ima_ws);
ADPCM_CODEC(CODEC_ID_ADPCM_IMA_SMJPEG, adpcm_ima_smjpeg);
ADPCM_CODEC(CODEC_ID_ADPCM_MS, adpcm_ms);
ADPCM_CODEC(CODEC_ID_ADPCM_4XM, adpcm_4xm);
ADPCM_CODEC(CODEC_ID_ADPCM_XA, adpcm_xa);
ADPCM_CODEC(CODEC_ID_ADPCM_EA, adpcm_ea);
ADPCM_CODEC(CODEC_ID_ADPCM_CT, adpcm_ct);
ADPCM_CODEC(CODEC_ID_ADPCM_SWF, adpcm_swf);
ADPCM_CODEC(CODEC_ID_ADPCM_YAMAHA, adpcm_yamaha);
ADPCM_CODEC(CODEC_ID_ADPCM_SBPRO_4, adpcm_sbpro_4);
ADPCM_CODEC(CODEC_ID_ADPCM_SBPRO_3, adpcm_sbpro_3);
ADPCM_CODEC(CODEC_ID_ADPCM_SBPRO_2, adpcm_sbpro_2);

#undef ADPCM_CODEC

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91富婆露脸刺激对白| 亚洲成人福利片| 久久久精品免费免费| 日韩一区二区麻豆国产| 7777精品伊人久久久大香线蕉超级流畅 | 中文字幕亚洲区| 日韩毛片精品高清免费| 国产精品私房写真福利视频| 国产精品你懂的| 亚洲品质自拍视频| 亚洲午夜av在线| 久草热8精品视频在线观看| 精品在线观看视频| www.欧美日韩| 欧美一区二区黄色| 中文字幕欧美区| 日韩成人免费电影| 成人avav在线| 欧美一区二区三区视频免费播放| 日韩欧美不卡在线观看视频| 中文字幕不卡在线| 青青草国产成人99久久| 国模冰冰炮一区二区| 色综合av在线| 日韩女优制服丝袜电影| 亚洲欧美偷拍卡通变态| 麻豆精品久久精品色综合| 成人黄色一级视频| 亚洲精品一区二区精华| 亚洲五月六月丁香激情| 成人h精品动漫一区二区三区| 欧美精品久久久久久久久老牛影院| 国产精品毛片大码女人| 国产精品一品二品| 2020国产精品| 国产精品综合久久| 久久久久久久久久看片| 美女www一区二区| 91精品国产欧美一区二区18| 亚洲另类在线制服丝袜| 99精品视频在线播放观看| 国产精品亲子乱子伦xxxx裸| 国产专区综合网| 国产日韩精品久久久| 成人精品在线视频观看| 日韩亚洲欧美成人一区| 蜜臀久久久久久久| 欧美成人一区二区三区| 蜜臀久久99精品久久久画质超高清 | 国产精品69毛片高清亚洲| 日韩手机在线导航| 久久99国产乱子伦精品免费| 欧美成人性福生活免费看| 国产真实精品久久二三区| 国产亚洲成av人在线观看导航| fc2成人免费人成在线观看播放| 国产精品久久毛片av大全日韩| 不卡视频一二三| 一区二区三区日韩精品视频| 国产成人亚洲精品青草天美| 欧美国产成人精品| 色av成人天堂桃色av| 日本中文一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w | 日本福利一区二区| 青青青伊人色综合久久| 国产精品狼人久久影院观看方式| 一本色道久久综合精品竹菊| 美女网站色91| 亚洲图片自拍偷拍| 国产精品国产三级国产a| 欧美精选一区二区| yourporn久久国产精品| 视频在线观看一区二区三区| 国产精品青草久久| 精品日韩一区二区三区免费视频| av电影在线观看一区| 国产精品一区二区三区四区 | 欧洲一区在线观看| 国产一区91精品张津瑜| 蜜桃av一区二区三区| 亚洲最大成人综合| 亚洲与欧洲av电影| 一区二区三区不卡视频 | 色综合久久88色综合天天 | 亚洲三级电影网站| 中文字幕制服丝袜一区二区三区| 久久久精品天堂| 欧美草草影院在线视频| 欧美酷刑日本凌虐凌虐| 欧美日韩中文字幕一区| 欧美三级视频在线| 91麻豆精品国产自产在线观看一区| 欧美亚洲国产怡红院影院| 在线视频一区二区三| 欧美乱熟臀69xxxxxx| 日韩一区二区在线看片| 久久亚洲一区二区三区四区| 国产夜色精品一区二区av| 国产精品久久久久久久第一福利| 中文字幕亚洲电影| 人妖欧美一区二区| 丁香天五香天堂综合| 在线观看国产一区二区| 欧美一激情一区二区三区| 久久久国产午夜精品| 中文一区在线播放| 午夜影院久久久| 成人毛片在线观看| 日韩丝袜情趣美女图片| 中文字幕一区二区日韩精品绯色 | 国产一区不卡视频| 欧美视频一区二| 国产欧美日本一区视频| 日韩综合在线视频| 色呦呦国产精品| 国产精品日韩精品欧美在线| 日韩高清不卡一区二区三区| 97久久精品人人爽人人爽蜜臀| 911国产精品| 亚洲激情男女视频| 91视频精品在这里| 亚洲国产精品黑人久久久| 美女一区二区久久| 91精品国产乱码久久蜜臀| 亚洲精品自拍动漫在线| 99精品视频在线播放观看| 久久久高清一区二区三区| 久久国产尿小便嘘嘘尿| 欧美日本一区二区在线观看| 亚洲色图欧洲色图| 成人精品免费视频| 国产女人18毛片水真多成人如厕| 美女精品自拍一二三四| 欧美一区二区在线播放| 日本亚洲一区二区| 日韩欧美一级在线播放| 激情综合五月天| 久久色.com| 国产成人午夜片在线观看高清观看| 国产午夜精品理论片a级大结局| 国产一区中文字幕| 中文字幕在线不卡视频| 在线精品视频一区二区三四| 一区二区三区.www| 精品国产sm最大网站| 粉嫩高潮美女一区二区三区| 亚洲欧洲精品一区二区三区| 欧美色图天堂网| 国产一区二三区| 亚洲欧美偷拍卡通变态| 日韩精品一区二区三区视频| 国产一区二区三区四区五区美女| 日本一区二区三区久久久久久久久不 | 成人午夜电影网站| 天天综合日日夜夜精品| 欧美大片拔萝卜| 在线视频综合导航| 国产成都精品91一区二区三| 一区二区免费看| 国产亚洲一区二区在线观看| 91福利在线免费观看| 懂色av一区二区在线播放| 亚洲国产精品一区二区尤物区| 国产色综合久久| 欧美va天堂va视频va在线| 欧美在线小视频| 一本大道久久a久久精二百| 国产精品影视天天线| 日韩国产在线观看一区| 亚洲va欧美va天堂v国产综合| 自拍偷拍亚洲激情| 日韩理论片中文av| 久久女同性恋中文字幕| 欧美一区二区三区四区高清| 欧美三级日韩在线| 欧美精选午夜久久久乱码6080| 91亚洲精品久久久蜜桃网站| 成人免费毛片app| 暴力调教一区二区三区| 97久久精品人人做人人爽| 成人午夜碰碰视频| 日本精品免费观看高清观看| 色婷婷综合久久久中文字幕| 91视频91自| 欧美日韩一区二区在线观看视频| 色欧美日韩亚洲| 欧美日韩久久久一区| 欧美精品久久99| 久久久久国产精品人| 亚洲欧洲一区二区在线播放| 亚洲一区二区精品久久av| 日本亚洲视频在线| 国产成人精品一区二| 欧美视频一区二区三区四区| 欧美一级国产精品| 国产精品视频一区二区三区不卡| 亚洲欧洲www| 麻豆国产欧美日韩综合精品二区| 精品一区二区三区在线观看|