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

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

?? dpcm.c

?? 君正早期ucos系統(只有早期的才不沒有打包成庫),MPLAYER,文件系統,圖片解碼,瀏覽,電子書,錄音,想學ucos,識貨的人就下吧 russblock fmradio explore set
?? C
字號:
/* * Assorted DPCM codecs * Copyright (c) 2003 The ffmpeg Project. * * 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: dpcm.c * Assorted DPCM (differential pulse code modulation) audio codecs * by Mike Melanson (melanson@pcisys.net) * Xan DPCM decoder by Mario Brito (mbrito@student.dei.uc.pt) * for more information on the specific data formats, visit: *   http://www.pcisys.net/~melanson/codecs/simpleaudio.html * SOL DPCMs implemented by Konstantin Shishkov * * Note about using the Xan DPCM decoder: Xan DPCM is used in AVI files * found in the Wing Commander IV computer game. These AVI files contain * WAVEFORMAT headers which report the audio format as 0x01: raw PCM. * Clearly incorrect. To detect Xan DPCM, you will probably have to * special-case your AVI demuxer to use Xan DPCM if the file uses 'Xxan' * (Xan video) for its video codec. Alternately, such AVI files also contain * the fourcc 'Axan' in the 'auds' chunk of the AVI header. */#include "avcodec.h"typedef struct DPCMContext {    int channels;    short roq_square_array[256];    long sample[2];//for SOL_DPCM    const int *sol_table;//for SOL_DPCM} DPCMContext;#define SE_16BIT(x)  if (x & 0x8000) x -= 0x10000;static int interplay_delta_table[] = {         0,      1,      2,      3,      4,      5,      6,      7,         8,      9,     10,     11,     12,     13,     14,     15,        16,     17,     18,     19,     20,     21,     22,     23,        24,     25,     26,     27,     28,     29,     30,     31,        32,     33,     34,     35,     36,     37,     38,     39,        40,     41,     42,     43,     47,     51,     56,     61,        66,     72,     79,     86,     94,    102,    112,    122,       133,    145,    158,    173,    189,    206,    225,    245,       267,    292,    318,    348,    379,    414,    452,    493,       538,    587,    640,    699,    763,    832,    908,    991,      1081,   1180,   1288,   1405,   1534,   1673,   1826,   1993,      2175,   2373,   2590,   2826,   3084,   3365,   3672,   4008,      4373,   4772,   5208,   5683,   6202,   6767,   7385,   8059,      8794,   9597,  10472,  11428,  12471,  13609,  14851,  16206,     17685,  19298,  21060,  22981,  25078,  27367,  29864,  32589,    -29973, -26728, -23186, -19322, -15105, -10503,  -5481,     -1,         1,      1,   5481,  10503,  15105,  19322,  23186,  26728,     29973, -32589, -29864, -27367, -25078, -22981, -21060, -19298,    -17685, -16206, -14851, -13609, -12471, -11428, -10472,  -9597,     -8794,  -8059,  -7385,  -6767,  -6202,  -5683,  -5208,  -4772,     -4373,  -4008,  -3672,  -3365,  -3084,  -2826,  -2590,  -2373,     -2175,  -1993,  -1826,  -1673,  -1534,  -1405,  -1288,  -1180,     -1081,   -991,   -908,   -832,   -763,   -699,   -640,   -587,      -538,   -493,   -452,   -414,   -379,   -348,   -318,   -292,      -267,   -245,   -225,   -206,   -189,   -173,   -158,   -145,      -133,   -122,   -112,   -102,    -94,    -86,    -79,    -72,       -66,    -61,    -56,    -51,    -47,    -43,    -42,    -41,       -40,    -39,    -38,    -37,    -36,    -35,    -34,    -33,       -32,    -31,    -30,    -29,    -28,    -27,    -26,    -25,       -24,    -23,    -22,    -21,    -20,    -19,    -18,    -17,       -16,    -15,    -14,    -13,    -12,    -11,    -10,     -9,        -8,     -7,     -6,     -5,     -4,     -3,     -2,     -1};static const int sol_table_old[16] =    { 0x0,  0x1,  0x2 , 0x3,  0x6,  0xA,  0xF, 0x15,    -0x15, -0xF, -0xA, -0x6, -0x3, -0x2, -0x1, 0x0};static const int sol_table_new[16] =    { 0x0,  0x1,  0x2,  0x3,  0x6,  0xA,  0xF,  0x15,      0x0, -0x1, -0x2, -0x3, -0x6, -0xA, -0xF, -0x15};static const int sol_table_16[128] = {    0x000, 0x008, 0x010, 0x020, 0x030, 0x040, 0x050, 0x060, 0x070, 0x080,    0x090, 0x0A0, 0x0B0, 0x0C0, 0x0D0, 0x0E0, 0x0F0, 0x100, 0x110, 0x120,    0x130, 0x140, 0x150, 0x160, 0x170, 0x180, 0x190, 0x1A0, 0x1B0, 0x1C0,    0x1D0, 0x1E0, 0x1F0, 0x200, 0x208, 0x210, 0x218, 0x220, 0x228, 0x230,    0x238, 0x240, 0x248, 0x250, 0x258, 0x260, 0x268, 0x270, 0x278, 0x280,    0x288, 0x290, 0x298, 0x2A0, 0x2A8, 0x2B0, 0x2B8, 0x2C0, 0x2C8, 0x2D0,    0x2D8, 0x2E0, 0x2E8, 0x2F0, 0x2F8, 0x300, 0x308, 0x310, 0x318, 0x320,    0x328, 0x330, 0x338, 0x340, 0x348, 0x350, 0x358, 0x360, 0x368, 0x370,    0x378, 0x380, 0x388, 0x390, 0x398, 0x3A0, 0x3A8, 0x3B0, 0x3B8, 0x3C0,    0x3C8, 0x3D0, 0x3D8, 0x3E0, 0x3E8, 0x3F0, 0x3F8, 0x400, 0x440, 0x480,    0x4C0, 0x500, 0x540, 0x580, 0x5C0, 0x600, 0x640, 0x680, 0x6C0, 0x700,    0x740, 0x780, 0x7C0, 0x800, 0x900, 0xA00, 0xB00, 0xC00, 0xD00, 0xE00,    0xF00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x3000, 0x4000};static int dpcm_decode_init(AVCodecContext *avctx){    DPCMContext *s = avctx->priv_data;    int i;    short square;    s->channels = avctx->channels;    s->sample[0] = s->sample[1] = 0;    switch(avctx->codec->id) {    case CODEC_ID_ROQ_DPCM:        /* initialize square table */        for (i = 0; i < 128; i++) {            square = i * i;            s->roq_square_array[i] = square;            s->roq_square_array[i + 128] = -square;        }        break;    case CODEC_ID_SOL_DPCM:        switch(avctx->codec_tag){        case 1:            s->sol_table=sol_table_old;            s->sample[0] = s->sample[1] = 0x80;            break;        case 2:            s->sol_table=sol_table_new;            s->sample[0] = s->sample[1] = 0x80;            break;        case 3:            s->sol_table=sol_table_16;            break;        default:            av_log(avctx, AV_LOG_ERROR, "Unknown SOL subcodec\n");            return -1;        }        break;    default:        break;    }    return 0;}static int dpcm_decode_frame(AVCodecContext *avctx,                             void *data, int *data_size,                             uint8_t *buf, int buf_size){    DPCMContext *s = avctx->priv_data;    int in, out = 0;    int predictor[2];    int channel_number = 0;    short *output_samples = data;    int shift[2];    unsigned char byte;    short diff;    if (!buf_size)        return 0;    // almost every DPCM variant expands one byte of data into two    if(*data_size/2 < buf_size)        return -1;    switch(avctx->codec->id) {    case CODEC_ID_ROQ_DPCM:        if (s->channels == 1)            predictor[0] = AV_RL16(&buf[6]);        else {            predictor[0] = buf[7] << 8;            predictor[1] = buf[6] << 8;        }        SE_16BIT(predictor[0]);        SE_16BIT(predictor[1]);        /* decode the samples */        for (in = 8, out = 0; in < buf_size; in++, out++) {            predictor[channel_number] += s->roq_square_array[buf[in]];            predictor[channel_number] = av_clip_int16(predictor[channel_number]);            output_samples[out] = predictor[channel_number];            /* toggle channel */            channel_number ^= s->channels - 1;        }        break;    case CODEC_ID_INTERPLAY_DPCM:        in = 6;  /* skip over the stream mask and stream length */        predictor[0] = AV_RL16(&buf[in]);        in += 2;        SE_16BIT(predictor[0])        output_samples[out++] = predictor[0];        if (s->channels == 2) {            predictor[1] = AV_RL16(&buf[in]);            in += 2;            SE_16BIT(predictor[1])            output_samples[out++] = predictor[1];        }        while (in < buf_size) {            predictor[channel_number] += interplay_delta_table[buf[in++]];            predictor[channel_number] = av_clip_int16(predictor[channel_number]);            output_samples[out++] = predictor[channel_number];            /* toggle channel */            channel_number ^= s->channels - 1;        }        break;    case CODEC_ID_XAN_DPCM:        in = 0;        shift[0] = shift[1] = 4;        predictor[0] = AV_RL16(&buf[in]);        in += 2;        SE_16BIT(predictor[0]);        if (s->channels == 2) {            predictor[1] = AV_RL16(&buf[in]);            in += 2;            SE_16BIT(predictor[1]);        }        while (in < buf_size) {            byte = buf[in++];            diff = (byte & 0xFC) << 8;            if ((byte & 0x03) == 3)                shift[channel_number]++;            else                shift[channel_number] -= (2 * (byte & 3));            /* saturate the shifter to a lower limit of 0 */            if (shift[channel_number] < 0)                shift[channel_number] = 0;            diff >>= shift[channel_number];            predictor[channel_number] += diff;            predictor[channel_number] = av_clip_int16(predictor[channel_number]);            output_samples[out++] = predictor[channel_number];            /* toggle channel */            channel_number ^= s->channels - 1;        }        break;    case CODEC_ID_SOL_DPCM:        in = 0;        if (avctx->codec_tag != 3) {            if(*data_size/4 < buf_size)                return -1;            while (in < buf_size) {                int n1, n2;                n1 = (buf[in] >> 4) & 0xF;                n2 = buf[in++] & 0xF;                s->sample[0] += s->sol_table[n1];                 if (s->sample[0] < 0) s->sample[0] = 0;                if (s->sample[0] > 255) s->sample[0] = 255;                output_samples[out++] = (s->sample[0] - 128) << 8;                s->sample[s->channels - 1] += s->sol_table[n2];                if (s->sample[s->channels - 1] < 0) s->sample[s->channels - 1] = 0;                if (s->sample[s->channels - 1] > 255) s->sample[s->channels - 1] = 255;                output_samples[out++] = (s->sample[s->channels - 1] - 128) << 8;            }        } else {            while (in < buf_size) {                int n;                n = buf[in++];                if (n & 0x80) s->sample[channel_number] -= s->sol_table[n & 0x7F];                else s->sample[channel_number] += s->sol_table[n & 0x7F];                s->sample[channel_number] = av_clip_int16(s->sample[channel_number]);                output_samples[out++] = s->sample[channel_number];                /* toggle channel */                channel_number ^= s->channels - 1;            }        }        break;    }    *data_size = out * sizeof(short);    return buf_size;}AVCodec roq_dpcm_decoder = {    "roq_dpcm",    CODEC_TYPE_AUDIO,    CODEC_ID_ROQ_DPCM,    sizeof(DPCMContext),    dpcm_decode_init,    NULL,    NULL,    dpcm_decode_frame,};AVCodec interplay_dpcm_decoder = {    "interplay_dpcm",    CODEC_TYPE_AUDIO,    CODEC_ID_INTERPLAY_DPCM,    sizeof(DPCMContext),    dpcm_decode_init,    NULL,    NULL,    dpcm_decode_frame,};AVCodec xan_dpcm_decoder = {    "xan_dpcm",    CODEC_TYPE_AUDIO,    CODEC_ID_XAN_DPCM,    sizeof(DPCMContext),    dpcm_decode_init,    NULL,    NULL,    dpcm_decode_frame,};AVCodec sol_dpcm_decoder = {    "sol_dpcm",    CODEC_TYPE_AUDIO,    CODEC_ID_SOL_DPCM,    sizeof(DPCMContext),    dpcm_decode_init,    NULL,    NULL,    dpcm_decode_frame,};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久免费看少妇高潮| 五月婷婷综合激情| 亚洲一区二区三区四区的| 全国精品久久少妇| 99国产精品视频免费观看| 91精品综合久久久久久| 国产精品国产三级国产有无不卡 | 亚洲成a人v欧美综合天堂下载| 国产精品系列在线播放| 欧美色国产精品| 成人欧美一区二区三区白人| 韩国女主播成人在线观看| 欧美性xxxxx极品少妇| 最新成人av在线| 顶级嫩模精品视频在线看| 欧美电影免费观看高清完整版在线| 亚洲日本va午夜在线影院| 国产成人免费在线观看不卡| 日韩免费观看2025年上映的电影| 夜夜夜精品看看| 91老师国产黑色丝袜在线| 国产色综合久久| 蜜臂av日日欢夜夜爽一区| 91精品婷婷国产综合久久 | 一级做a爱片久久| 成人免费高清在线| 久久久91精品国产一区二区精品| 日韩av电影免费观看高清完整版| 在线观看一区二区视频| 亚洲综合久久久久| 91久久国产综合久久| 亚洲天堂网中文字| 91麻豆国产自产在线观看| 中文字幕日本不卡| 在线一区二区三区做爰视频网站| 亚洲欧美成人一区二区三区| 91原创在线视频| 国产精品国产三级国产aⅴ原创| 国产.欧美.日韩| 中文字幕av一区二区三区免费看| 成人免费av网站| 亚洲欧美另类久久久精品| 在线观看不卡一区| 五月天网站亚洲| 日韩视频一区二区在线观看| 裸体在线国模精品偷拍| 欧美精品一区二区三区视频| 国产伦精品一区二区三区视频青涩 | 欧美亚洲综合在线| 日本不卡一区二区三区高清视频| 日韩一区二区在线看| 国模冰冰炮一区二区| 国产欧美一区二区精品婷婷| 99久久精品国产一区二区三区| 亚洲人成精品久久久久久| 欧美日韩国产一级| 蜜桃av一区二区在线观看| 国产日产欧美一区| 日本二三区不卡| 日本成人中文字幕| 国产精品少妇自拍| 欧美揉bbbbb揉bbbbb| 久久精品久久综合| 国产精品国产三级国产专播品爱网 | 国产美女一区二区三区| 亚洲人成影院在线观看| 日韩欧美一区电影| 成人免费av网站| 午夜视频在线观看一区二区三区| 欧美一区二区三区免费视频| 国产精品中文字幕日韩精品 | 日韩电影在线免费| 久久久久国产精品厨房| 欧美性欧美巨大黑白大战| 国产专区欧美精品| 亚洲国产综合人成综合网站| 26uuu国产一区二区三区 | www.欧美日韩国产在线| 蜜臀久久99精品久久久久宅男| 国产精品麻豆网站| 精品欧美久久久| 色婷婷国产精品综合在线观看| 国内精品伊人久久久久影院对白| 亚洲综合精品自拍| 久久精品日韩一区二区三区| 欧美日韩国产三级| 91色porny在线视频| 国产一区二区三区四区五区入口 | 亚洲高清不卡在线观看| 亚洲国产精品高清| 欧美videos中文字幕| 欧美日韩高清一区| 色综合天天综合网天天看片| 国产成人亚洲综合a∨婷婷 | 一区二区三区在线免费| 中文字幕va一区二区三区| 欧美xxxxx牲另类人与| 欧美日韩国产免费| 欧美在线观看一二区| 成人av手机在线观看| 国内久久精品视频| 久久激情综合网| 日韩成人免费电影| 天堂精品中文字幕在线| 一区二区三区.www| 亚洲丝袜另类动漫二区| 国产精品二区一区二区aⅴ污介绍| 久久精品视频一区二区三区| 精品久久久久99| 欧美一区二区黄| 欧美一三区三区四区免费在线看| 欧美日韩久久不卡| 欧美色国产精品| 欧美日韩高清不卡| 91精品免费观看| 6080午夜不卡| 91精品国产色综合久久不卡蜜臀| 欧美亚一区二区| 欧美中文字幕一区| 欧美日韩中文字幕一区二区| 欧美日韩国产bt| 欧美精品第1页| 91精品国产麻豆| 欧美成人伊人久久综合网| 精品久久一区二区| 国产亚洲一区二区三区四区 | 成人欧美一区二区三区黑人麻豆| 中文字幕一区av| 一级日本不卡的影视| 亚洲国产中文字幕| 免费成人结看片| 国产一区二区美女诱惑| 成人av在线资源网| 色哟哟日韩精品| 欧美精品 国产精品| 日韩欧美一区中文| 久久久蜜臀国产一区二区| 欧美美女黄视频| 精品美女一区二区| 国产精品不卡一区| 性做久久久久久免费观看欧美| 久草这里只有精品视频| 成人爱爱电影网址| 7777女厕盗摄久久久| 久久久久9999亚洲精品| 一区二区三区在线不卡| 日本中文在线一区| 粉嫩一区二区三区性色av| 欧美视频在线一区| 精品国产人成亚洲区| 中文字幕在线不卡一区二区三区 | 欧美视频在线观看一区二区| 精品久久久久久久久久久久久久久| 国产精品欧美综合在线| 天天影视色香欲综合网老头| 国产福利一区二区三区| 91成人网在线| 精品电影一区二区| 一区二区三区av电影| 国产美女在线精品| 在线成人av网站| 国产精品久久看| 久久精品国产亚洲aⅴ| 色婷婷精品大视频在线蜜桃视频| 精品久久久久久久久久久久包黑料| 亚洲日本一区二区| 国精产品一区一区三区mba视频| 91成人在线观看喷潮| 国产欧美日韩中文久久| 日本美女一区二区| 日本久久一区二区三区| 国产欧美日韩综合精品一区二区| 五月天一区二区三区| 972aa.com艺术欧美| 久久综合一区二区| 日韩和欧美一区二区| 91浏览器在线视频| 中文字幕久久午夜不卡| 国产一区二区三区综合| 日韩丝袜美女视频| 亚洲成人精品一区| 91精品福利在线| 亚洲欧美日韩小说| 成人午夜私人影院| 久久男人中文字幕资源站| 久久黄色级2电影| 欧美肥妇毛茸茸| 亚洲成人资源在线| 欧美中文字幕不卡| 亚洲永久免费av| 92国产精品观看| 综合久久综合久久| 99国产精品久久| 国产精品情趣视频| av色综合久久天堂av综合| 久久蜜臀精品av| 国产精品亚洲人在线观看| 久久精品视频一区二区三区| 国产激情精品久久久第一区二区| 欧美刺激午夜性久久久久久久|