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

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

?? ipmovie.c

?? arm平臺下的H264編碼和解碼源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Interplay MVE File Demuxer * Copyright (c) 2003 The ffmpeg Project * * This library 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 of the License, or (at your option) any later version. * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *//** * @file ipmovie.c * Interplay MVE file demuxer * by Mike Melanson (melanson@pcisys.net) * For more information regarding the Interplay MVE file format, visit: *   http://www.pcisys.net/~melanson/codecs/ * The aforementioned site also contains a command line utility for parsing * IP MVE files so that you can get a good idea of the typical structure of * such files. This demuxer is not the best example to use if you are trying * to write your own as it uses a rather roundabout approach for splitting * up and sending out the chunks. */#include "avformat.h"/* debugging support: #define DEBUG_IPMOVIE as non-zero to see extremely * verbose information about the demux process */#define DEBUG_IPMOVIE 0#if DEBUG_IPMOVIE#define debug_ipmovie printf#elsestatic inline void debug_ipmovie(const char *format, ...) { }#endif#define IPMOVIE_SIGNATURE "Interplay MVE File\x1A\0"#define IPMOVIE_SIGNATURE_SIZE 20#define CHUNK_PREAMBLE_SIZE 4#define OPCODE_PREAMBLE_SIZE 4#define CHUNK_INIT_AUDIO   0x0000#define CHUNK_AUDIO_ONLY   0x0001#define CHUNK_INIT_VIDEO   0x0002#define CHUNK_VIDEO        0x0003#define CHUNK_SHUTDOWN     0x0004#define CHUNK_END          0x0005/* these last types are used internally */#define CHUNK_DONE         0xFFFC#define CHUNK_NOMEM        0xFFFD#define CHUNK_EOF          0xFFFE#define CHUNK_BAD          0xFFFF#define OPCODE_END_OF_STREAM           0x00#define OPCODE_END_OF_CHUNK            0x01#define OPCODE_CREATE_TIMER            0x02#define OPCODE_INIT_AUDIO_BUFFERS      0x03#define OPCODE_START_STOP_AUDIO        0x04#define OPCODE_INIT_VIDEO_BUFFERS      0x05#define OPCODE_UNKNOWN_06              0x06#define OPCODE_SEND_BUFFER             0x07#define OPCODE_AUDIO_FRAME             0x08#define OPCODE_SILENCE_FRAME           0x09#define OPCODE_INIT_VIDEO_MODE         0x0A#define OPCODE_CREATE_GRADIENT         0x0B#define OPCODE_SET_PALETTE             0x0C#define OPCODE_SET_PALETTE_COMPRESSED  0x0D#define OPCODE_UNKNOWN_0E              0x0E#define OPCODE_SET_DECODING_MAP        0x0F#define OPCODE_UNKNOWN_10              0x10#define OPCODE_VIDEO_DATA              0x11#define OPCODE_UNKNOWN_12              0x12#define OPCODE_UNKNOWN_13              0x13#define OPCODE_UNKNOWN_14              0x14#define OPCODE_UNKNOWN_15              0x15#define PALETTE_COUNT 256typedef struct IPMVEContext {    unsigned char *buf;    int buf_size;    float fps;    int frame_pts_inc;    unsigned int video_width;    unsigned int video_height;    int64_t video_pts;    unsigned int audio_bits;    unsigned int audio_channels;    unsigned int audio_sample_rate;    unsigned int audio_type;    unsigned int audio_frame_count;    int video_stream_index;    int audio_stream_index;    offset_t audio_chunk_offset;    int audio_chunk_size;    offset_t video_chunk_offset;    int video_chunk_size;    offset_t decode_map_chunk_offset;    int decode_map_chunk_size;    offset_t next_chunk_offset;    AVPaletteControl palette_control;} IPMVEContext;static int load_ipmovie_packet(IPMVEContext *s, ByteIOContext *pb,     AVPacket *pkt) {    int chunk_type;    int64_t audio_pts = 0;    if (s->audio_chunk_offset) {        /* adjust for PCM audio by skipping chunk header */        if (s->audio_type != CODEC_ID_INTERPLAY_DPCM) {            s->audio_chunk_offset += 6;            s->audio_chunk_size -= 6;        }        url_fseek(pb, s->audio_chunk_offset, SEEK_SET);        s->audio_chunk_offset = 0;        /* figure out the audio pts */        audio_pts = 90000;        audio_pts *= s->audio_frame_count;        audio_pts /= s->audio_sample_rate;        if (av_new_packet(pkt, s->audio_chunk_size))            return CHUNK_NOMEM;        pkt->stream_index = s->audio_stream_index;        pkt->pts = audio_pts;        if (get_buffer(pb, pkt->data, s->audio_chunk_size) !=             s->audio_chunk_size) {            av_free_packet(pkt);            return CHUNK_EOF;        }        /* audio frame maintenance */        if (s->audio_type != CODEC_ID_INTERPLAY_DPCM)            s->audio_frame_count +=            (s->audio_chunk_size / s->audio_channels / (s->audio_bits / 8));        else            s->audio_frame_count +=                (s->audio_chunk_size - 6) / s->audio_channels;        debug_ipmovie("sending audio frame with pts %lld (%d audio frames)\n",            audio_pts, s->audio_frame_count);        chunk_type = CHUNK_VIDEO;    } else if (s->decode_map_chunk_offset) {        /* send both the decode map and the video data together */        if (av_new_packet(pkt, s->decode_map_chunk_size + s->video_chunk_size))            return CHUNK_NOMEM;        url_fseek(pb, s->decode_map_chunk_offset, SEEK_SET);        s->decode_map_chunk_offset = 0;        if (get_buffer(pb, pkt->data, s->decode_map_chunk_size) !=             s->decode_map_chunk_size) {            av_free_packet(pkt);            return CHUNK_EOF;        }        url_fseek(pb, s->video_chunk_offset, SEEK_SET);        s->video_chunk_offset = 0;        if (get_buffer(pb, pkt->data + s->decode_map_chunk_size,            s->video_chunk_size) != s->video_chunk_size) {            av_free_packet(pkt);            return CHUNK_EOF;        }        pkt->stream_index = s->video_stream_index;        pkt->pts = s->video_pts;        debug_ipmovie("sending video frame with pts %lld\n",            pkt->pts);        s->video_pts += s->frame_pts_inc;        chunk_type = CHUNK_VIDEO;    } else {        url_fseek(pb, s->next_chunk_offset, SEEK_SET);        chunk_type = CHUNK_DONE;    }    return chunk_type;}/* This function loads and processes a single chunk in an IP movie file. * It returns the type of chunk that was processed. */static int process_ipmovie_chunk(IPMVEContext *s, ByteIOContext *pb,     AVPacket *pkt){    unsigned char chunk_preamble[CHUNK_PREAMBLE_SIZE];    int chunk_type;    int chunk_size;    unsigned char opcode_preamble[OPCODE_PREAMBLE_SIZE];    unsigned char opcode_type;    unsigned char opcode_version;    int opcode_size;    unsigned char scratch[1024];    int i, j;    int first_color, last_color;    int audio_flags;    unsigned char r, g, b;    /* see if there are any pending packets */    chunk_type = load_ipmovie_packet(s, pb, pkt);    if ((chunk_type == CHUNK_VIDEO) && (chunk_type != CHUNK_DONE))        return chunk_type;    /* read the next chunk, wherever the file happens to be pointing */    if (url_feof(pb))        return CHUNK_EOF;    if (get_buffer(pb, chunk_preamble, CHUNK_PREAMBLE_SIZE) !=        CHUNK_PREAMBLE_SIZE)        return CHUNK_BAD;    chunk_size = LE_16(&chunk_preamble[0]);    chunk_type = LE_16(&chunk_preamble[2]);    debug_ipmovie("chunk type 0x%04X, 0x%04X bytes: ", chunk_type, chunk_size);    switch (chunk_type) {    case CHUNK_INIT_AUDIO:        debug_ipmovie("initialize audio\n");        break;    case CHUNK_AUDIO_ONLY:        debug_ipmovie("audio only\n");        break;    case CHUNK_INIT_VIDEO:        debug_ipmovie("initialize video\n");        break;    case CHUNK_VIDEO:        debug_ipmovie("video (and audio)\n");        break;    case CHUNK_SHUTDOWN:        debug_ipmovie("shutdown\n");        break;    case CHUNK_END:        debug_ipmovie("end\n");        break;    default:        debug_ipmovie("invalid chunk\n");        chunk_type = CHUNK_BAD;        break;    }    while ((chunk_size > 0) && (chunk_type != CHUNK_BAD)) {        /* read the next chunk, wherever the file happens to be pointing */       if (url_feof(pb)) {            chunk_type = CHUNK_EOF;            break;        }        if (get_buffer(pb, opcode_preamble, CHUNK_PREAMBLE_SIZE) !=            CHUNK_PREAMBLE_SIZE) {            chunk_type = CHUNK_BAD;            break;        }        opcode_size = LE_16(&opcode_preamble[0]);        opcode_type = opcode_preamble[2];        opcode_version = opcode_preamble[3];        chunk_size -= OPCODE_PREAMBLE_SIZE;        chunk_size -= opcode_size;        if (chunk_size < 0) {            debug_ipmovie("chunk_size countdown just went negative\n");            chunk_type = CHUNK_BAD;            break;        }        debug_ipmovie("  opcode type %02X, version %d, 0x%04X bytes: ",            opcode_type, opcode_version, opcode_size);        switch (opcode_type) {        case OPCODE_END_OF_STREAM:            debug_ipmovie("end of stream\n");            url_fseek(pb, opcode_size, SEEK_CUR);            break;        case OPCODE_END_OF_CHUNK:            debug_ipmovie("end of chunk\n");            url_fseek(pb, opcode_size, SEEK_CUR);            break;        case OPCODE_CREATE_TIMER:            debug_ipmovie("create timer\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产另类不卡| 午夜精品爽啪视频| 国产亚洲欧洲997久久综合| 欧美高清hd18日本| 欧美日韩精品三区| 欧美日韩国产一级片| 欧美吻胸吃奶大尺度电影| 欧洲av在线精品| 欧美日韩免费观看一区二区三区 | 成人免费视频国产在线观看| 国内精品写真在线观看| 老色鬼精品视频在线观看播放| 日韩国产一二三区| 极品销魂美女一区二区三区| 国产自产视频一区二区三区| 国产乱码字幕精品高清av | 国产一区二区福利| 国产91富婆露脸刺激对白| 成人午夜激情影院| 97se狠狠狠综合亚洲狠狠| 91官网在线观看| 欧美精品视频www在线观看| 在线不卡a资源高清| 精品国产精品网麻豆系列| 精品国产sm最大网站免费看| 欧美激情艳妇裸体舞| 亚洲男人的天堂一区二区| 亚洲一二三区视频在线观看| 日韩1区2区日韩1区2区| 国产成人精品免费在线| 91视频免费看| 在线成人av网站| 久久久久久夜精品精品免费| 亚洲欧洲韩国日本视频| 午夜影视日本亚洲欧洲精品| 久色婷婷小香蕉久久| 丁香亚洲综合激情啪啪综合| 色综合久久久久| 91精品国产一区二区三区| 久久久久久亚洲综合| 亚洲欧美日韩精品久久久久| 日韩**一区毛片| 成人动漫在线一区| 欧美精品视频www在线观看| 国产调教视频一区| 亚洲电影一区二区| 国产盗摄精品一区二区三区在线 | 91激情五月电影| 欧美一区二区在线播放| 中文字幕av在线一区二区三区| 樱桃国产成人精品视频| 国内精品写真在线观看| 在线观看一区二区精品视频| 精品国产髙清在线看国产毛片| 国产精品传媒在线| 蜜桃视频在线观看一区| 一本一本大道香蕉久在线精品 | 91成人网在线| 26uuu精品一区二区在线观看| 国产精品久久久久久久蜜臀| 日本成人在线不卡视频| av中文字幕在线不卡| 日韩一二三四区| 亚洲欧洲www| 国产一区二区三区久久久| 欧美伊人精品成人久久综合97| 国产亚洲短视频| 日韩电影免费一区| 色拍拍在线精品视频8848| 久久久亚洲欧洲日产国码αv| 亚洲成人av电影| eeuss鲁片一区二区三区| 精品国产一区a| 亚洲一二三四久久| 99久久亚洲一区二区三区青草| 欧美草草影院在线视频| 亚洲成人av一区| 色94色欧美sute亚洲线路二| 中文字幕精品一区二区精品绿巨人 | 成人午夜激情在线| 欧美精品一区在线观看| 日韩中文字幕1| 在线看日本不卡| 成人欧美一区二区三区在线播放| 国内一区二区视频| 日韩欧美一级二级三级久久久| 亚洲国产视频网站| 色88888久久久久久影院按摩 | 奇米色一区二区| 欧美日精品一区视频| 亚洲图片你懂的| 北条麻妃国产九九精品视频| 久久久不卡网国产精品一区| 久久99久久久久| 欧美成人猛片aaaaaaa| 天天爽夜夜爽夜夜爽精品视频| 在线观看成人小视频| 亚洲人成精品久久久久久| 99久久久国产精品| 国产精品狼人久久影院观看方式| 国产成人av福利| 国产欧美日韩另类视频免费观看| 国产综合久久久久影院| 久久综合av免费| 国产精品一区二区久激情瑜伽| 久久久精品人体av艺术| 国产大陆精品国产| 日本一区二区三区免费乱视频| 国产成人精品免费网站| 国产蜜臀av在线一区二区三区| 国产成人免费xxxxxxxx| 中文字幕电影一区| 91麻豆精品秘密| 一区二区三区四区中文字幕| 欧美亚洲国产一区二区三区| 亚洲一区二区在线免费看| 欧美日韩一区高清| 日韩精品1区2区3区| 欧美变态凌虐bdsm| 国产精品亚洲一区二区三区在线 | 久久综合九色综合欧美就去吻 | 在线一区二区三区四区五区 | 在线免费观看日本一区| 午夜精品久久久久久久99水蜜桃| 7777精品伊人久久久大香线蕉| 免费一级欧美片在线观看| 亚洲精品一区二区三区福利 | 国产婷婷精品av在线| 99热这里都是精品| 亚洲综合在线视频| 欧美福利一区二区| 国产精品456| 亚洲三级电影网站| 制服丝袜在线91| 国产精品一区二区三区99| 国产精品卡一卡二卡三| 欧美日韩精品免费| 国产一区二区三区在线看麻豆| 国产精品久久久久久久久快鸭 | 99精品欧美一区二区三区小说| 亚洲激情综合网| 欧美不卡激情三级在线观看| 不卡视频一二三四| 丝袜诱惑制服诱惑色一区在线观看 | 欧美日韩在线一区二区| 久草精品在线观看| 日韩理论在线观看| 精品日韩一区二区三区| 99久久er热在这里只有精品15| 天堂精品中文字幕在线| 欧美国产精品一区二区三区| 欧美性一级生活| 国产精品一区免费在线观看| 亚洲最大成人网4388xx| 久久影院电视剧免费观看| 色女孩综合影院| 狠狠色丁香九九婷婷综合五月| 一区二区三区四区在线免费观看| 精品久久久久久久久久久院品网| 色婷婷亚洲精品| 国产在线不卡一卡二卡三卡四卡| 亚洲精品欧美激情| 国产亚洲精品aa| 91精品国产综合久久蜜臀| 99在线精品观看| 国产一区二区免费在线| 午夜一区二区三区在线观看| 欧美国产欧美综合| 欧美一级黄色大片| 日本久久电影网| 国产福利一区在线观看| 婷婷综合在线观看| 亚洲理论在线观看| 国产女同互慰高潮91漫画| 欧美变态凌虐bdsm| 欧美精品一卡二卡| 在线亚洲+欧美+日本专区| 国产成人av一区二区三区在线| 另类欧美日韩国产在线| 亚洲亚洲人成综合网络| 国产精品欧美一区喷水| 精品美女在线观看| 欧美巨大另类极品videosbest | 日韩欧美一区中文| 欧美无砖专区一中文字| 91丨porny丨国产| 国产成人av电影在线| 久久精工是国产品牌吗| 亚洲mv在线观看| 亚洲精品免费看| 国产精品午夜久久| 精品国产自在久精品国产| 欧美日韩一区二区三区四区五区 | 精品日韩成人av| 欧美精品第1页| 欧美午夜电影在线播放| 在线观看三级视频欧美| proumb性欧美在线观看| 粉嫩av亚洲一区二区图片| 国产一区二区日韩精品|