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

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

?? dpcm.c

?? ffmpeg移植到symbian的全部源代碼
?? 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 const 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 av_cold 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,                             const 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;}#ifdef __CW32__#define DPCM_DECODER(id, name, long_name_)      \AVCodec name ## _decoder = {                    \    #name,                                      \    CODEC_TYPE_AUDIO,                           \    id,                                         \    sizeof(DPCMContext),                        \    dpcm_decode_init,                           \    NULL,                                       \    NULL,                                       \    dpcm_decode_frame,                          \    0,\    0,\    0,\    0,\    0,\    NULL_IF_CONFIG_SMALL(long_name_), \};#else#define DPCM_DECODER(id, name, long_name_)      \AVCodec name ## _decoder = {                    \    #name,                                      \    CODEC_TYPE_AUDIO,                           \    id,                                         \    sizeof(DPCMContext),                        \    dpcm_decode_init,                           \    NULL,                                       \    NULL,                                       \    dpcm_decode_frame,                          \    .long_name = NULL_IF_CONFIG_SMALL(long_name_), \};#endifDPCM_DECODER(CODEC_ID_INTERPLAY_DPCM, interplay_dpcm, "Interplay DPCM");DPCM_DECODER(CODEC_ID_ROQ_DPCM, roq_dpcm, "id RoQ DPCM");DPCM_DECODER(CODEC_ID_SOL_DPCM, sol_dpcm, "Sol DPCM");DPCM_DECODER(CODEC_ID_XAN_DPCM, xan_dpcm, "Xan DPCM");

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品乱码一区二三区小蝌蚪| 久久69国产一区二区蜜臀| 视频一区免费在线观看| 国产精品一区二区视频| 欧美视频在线一区二区三区| 中文字幕免费在线观看视频一区| 日日噜噜夜夜狠狠视频欧美人 | 久久精品日韩一区二区三区| 亚洲综合偷拍欧美一区色| 美女mm1313爽爽久久久蜜臀| 日韩视频中午一区| 亚洲福中文字幕伊人影院| 成人国产视频在线观看| www国产成人免费观看视频 深夜成人网| 亚洲一区二三区| 91丝袜国产在线播放| 国产欧美一区二区精品性色| 国精产品一区一区三区mba桃花 | 日韩av中文字幕一区二区三区| 99久久99久久精品国产片果冻| 2023国产精华国产精品| 免费视频一区二区| 欧美人动与zoxxxx乱| 一区二区久久久久| 色94色欧美sute亚洲线路一久| 国产精品久久久99| 成人免费av网站| 国产精品久久久久一区二区三区 | 国产亚洲精品精华液| 久久精品国产一区二区三区免费看| 欧美亚洲动漫制服丝袜| 一区二区三区在线看| 99re66热这里只有精品3直播| 中文字幕va一区二区三区| 国产精品77777竹菊影视小说| 一区二区三区资源| 色偷偷一区二区三区| 亚洲欧洲精品一区二区三区不卡| 91尤物视频在线观看| 综合精品久久久| 欧美亚洲自拍偷拍| 丝瓜av网站精品一区二区| 欧美狂野另类xxxxoooo| 麻豆精品蜜桃视频网站| 久久久久久99精品| www.一区二区| 亚洲1区2区3区视频| 7777精品伊人久久久大香线蕉| 日韩精彩视频在线观看| 日韩视频一区在线观看| 国产一区999| ...xxx性欧美| 欧美日韩激情一区| 老色鬼精品视频在线观看播放| www国产精品av| 色综合色综合色综合色综合色综合 | 国产高清久久久久| 中文字幕一区在线| 欧美日韩二区三区| 韩国欧美国产一区| 一区在线播放视频| 欧美日韩一区二区三区在线| 精品一区二区日韩| 中文字幕在线观看不卡视频| 欧美三级午夜理伦三级中视频| 美女看a上一区| 中文字幕的久久| 欧美日韩精品福利| 高清视频一区二区| 亚洲小说欧美激情另类| 久久久久久久网| 欧美日韩在线免费视频| 国产精品资源网| 亚洲成人在线免费| 欧美激情自拍偷拍| 欧美放荡的少妇| 91日韩一区二区三区| 免费不卡在线观看| 日韩伦理av电影| 久久女同性恋中文字幕| 欧美特级限制片免费在线观看| 国产精品一区久久久久| 亚洲高清视频中文字幕| 日本一区二区三区久久久久久久久不 | 亚洲永久免费视频| 国产日韩v精品一区二区| 欧美人xxxx| 99精品在线观看视频| 国产在线不卡一区| 五月天一区二区| 亚洲女爱视频在线| 国产亚洲视频系列| 欧美成人vps| 在线不卡欧美精品一区二区三区| jizzjizzjizz欧美| 国产乱子伦视频一区二区三区 | 亚洲激情图片一区| 国产亚洲精品福利| 欧美va天堂va视频va在线| 欧美视频一区二| 色视频欧美一区二区三区| 丁香六月久久综合狠狠色| 精品亚洲免费视频| 美女www一区二区| 日本色综合中文字幕| 午夜一区二区三区视频| 一区二区三区四区在线| 国产精品久久久爽爽爽麻豆色哟哟| 日韩欧美久久一区| 欧美一区二区三区成人| 777a∨成人精品桃花网| 在线播放91灌醉迷j高跟美女| 在线观看视频一区二区欧美日韩| 99久久免费视频.com| 国产suv精品一区二区883| 国产成人啪免费观看软件| 国产黄色精品视频| 国产**成人网毛片九色| 国产精品69毛片高清亚洲| 福利一区二区在线| 91在线看国产| 色婷婷综合久久久中文一区二区| 在线视频欧美区| 欧美三日本三级三级在线播放| 欧美日韩一区三区四区| 欧美日韩国产一区二区三区地区| 欧美日韩日本视频| 91精品欧美久久久久久动漫 | 精品视频在线视频| 欧美精品一卡两卡| 日韩一区二区三区视频在线 | 午夜不卡在线视频| 日本强好片久久久久久aaa| 蜜桃一区二区三区四区| 国产中文字幕一区| 成人性生交大合| 色噜噜夜夜夜综合网| 欧美美女bb生活片| 精品国产免费人成电影在线观看四季 | 成人av免费观看| 精品视频123区在线观看| 制服丝袜在线91| 五月婷婷久久综合| 国产尤物一区二区在线| 99精品视频一区二区| 欧美丝袜自拍制服另类| 精品电影一区二区三区 | 五月激情六月综合| 国产又粗又猛又爽又黄91精品| 91免费看`日韩一区二区| 欧美美女bb生活片| 国产三级一区二区三区| 亚洲国产毛片aaaaa无费看| 极品美女销魂一区二区三区 | 国产成人精品亚洲午夜麻豆| 91在线观看一区二区| 欧美另类z0zxhd电影| 久久久久久黄色| 香蕉乱码成人久久天堂爱免费| 国模冰冰炮一区二区| 色婷婷久久一区二区三区麻豆| 欧美本精品男人aⅴ天堂| 亚洲欧美日韩在线不卡| 国内精品不卡在线| 欧美人伦禁忌dvd放荡欲情| 国产精品久久午夜夜伦鲁鲁| 免费成人在线影院| 91福利精品第一导航| 国产日韩v精品一区二区| 午夜精品久久久久影视| 成人avav影音| 精品国产91乱码一区二区三区| 夜夜夜精品看看| 不卡一区二区在线| 久久久久99精品一区| 日本最新不卡在线| 欧美一a一片一级一片| 国产精品丝袜久久久久久app| 日韩国产高清在线| 色噜噜狠狠色综合欧洲selulu| 国产亚洲污的网站| 精品一区二区综合| 欧美一区二区视频观看视频| 一区二区三区日韩精品| 成人a免费在线看| 国产亚洲一本大道中文在线| 捆绑调教美女网站视频一区| 欧美高清激情brazzers| 亚洲精品免费在线| 99国产欧美另类久久久精品| 国产精品乱码妇女bbbb| 国产精品自拍网站| 久久夜色精品国产欧美乱极品| 免费观看日韩av| 欧美精品久久一区二区三区| 亚洲国产一区二区视频| 欧美综合色免费| 亚洲一区二区欧美日韩| 在线观看av不卡| 亚洲风情在线资源站|