亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
欧美性大战久久久久久久蜜臀| 成人av在线播放网址| 亚洲人成亚洲人成在线观看图片 | 久草精品在线观看| 日韩精品一二三| 看电视剧不卡顿的网站| 久久99精品久久只有精品| 毛片一区二区三区| 国产一级精品在线| 91亚洲男人天堂| 欧美日韩日日夜夜| 精品久久久久久久人人人人传媒 | 日本中文在线一区| 久久99精品视频| 波多野结衣精品在线| 一本色道综合亚洲| 欧美日韩国产a| 日韩欧美国产电影| 欧美激情一区在线| 亚洲免费三区一区二区| 午夜视频一区二区| 国产一区二区三区四区五区美女 | 美日韩一区二区| 国产一区二区网址| 在线一区二区三区四区| 宅男噜噜噜66一区二区66| 久久一二三国产| 亚洲欧美另类久久久精品| 日韩高清在线电影| 成人性色生活片| 欧美视频一区二区三区在线观看| 日韩欧美高清在线| 国产精品久久久久一区二区三区共| 一区二区三区在线免费视频| 免费精品视频在线| 色呦呦国产精品| 精品国产a毛片| 亚洲国产欧美在线| 另类小说色综合网站| 伊人性伊人情综合网| 日本不卡视频一二三区| 国产盗摄女厕一区二区三区| 欧美色电影在线| 国产日韩av一区二区| 午夜精品福利在线| 93久久精品日日躁夜夜躁欧美| 日韩欧美在线影院| 亚洲精品美国一| 不卡影院免费观看| 国产日产欧美一区| 蜜臂av日日欢夜夜爽一区| 在线区一区二视频| 中文字幕色av一区二区三区| 久99久精品视频免费观看| 欧美日韩aaa| 亚洲靠逼com| 91亚洲大成网污www| 国产婷婷色一区二区三区四区| 丝袜美腿亚洲综合| 欧美久久一区二区| 亚洲在线免费播放| 欧美自拍偷拍一区| 洋洋av久久久久久久一区| 97超碰欧美中文字幕| 中文字幕一区二区三区不卡 | 国产精品视频一区二区三区不卡| 日本不卡一二三| 91精品国产麻豆国产自产在线| 亚洲第一在线综合网站| 欧美性猛交xxxx乱大交退制版| 亚洲免费av网站| 欧美在线免费视屏| 五月综合激情日本mⅴ| 欧美这里有精品| 亚洲444eee在线观看| 欧美日本一道本在线视频| 亚洲国产wwwccc36天堂| 欧美日韩亚洲不卡| 日韩电影免费在线| 久久综合网色—综合色88| 国产在线播放一区三区四| 久久久久久影视| 高清免费成人av| 亚洲欧美电影一区二区| 在线日韩av片| 麻豆精品蜜桃视频网站| 欧美电影免费观看完整版| 激情五月婷婷综合| 国产精品成人网| 欧美这里有精品| 久久精品国产99久久6| 国产亚洲精久久久久久| k8久久久一区二区三区| 一区二区三区中文免费| 欧美精品乱码久久久久久| 老司机精品视频在线| 国产精品久久看| 91黄色免费观看| 欧美mv日韩mv亚洲| 成人性生交大片免费看中文| 亚洲色图欧洲色图| 欧美日韩午夜精品| 激情图区综合网| 亚洲乱码国产乱码精品精小说| 欧美三级电影网站| 国产美女久久久久| 亚洲电影第三页| 国产欧美日韩视频在线观看| 欧美午夜视频网站| 国产麻豆精品在线观看| 亚洲综合色区另类av| 久久丝袜美腿综合| 欧美日韩精品电影| 不卡影院免费观看| 老司机午夜精品99久久| 一区二区三区免费观看| 久久久国产综合精品女国产盗摄| 欧美主播一区二区三区美女| 国产伦精品一区二区三区视频青涩 | 国产精品福利一区| 日韩欧美不卡在线观看视频| 99国产一区二区三精品乱码| 久国产精品韩国三级视频| 亚洲制服丝袜在线| 国产精品嫩草影院av蜜臀| 91精品福利在线一区二区三区| 91影院在线观看| 国产91清纯白嫩初高中在线观看| 奇米四色…亚洲| 亚洲国产精品一区二区www在线| 中文字幕不卡的av| 久久久久久久久久久99999| 91精品婷婷国产综合久久竹菊| 色综合久久久久| 97久久人人超碰| 国产不卡免费视频| 激情亚洲综合在线| 精品一区精品二区高清| 亚洲高清免费在线| 亚洲综合一二三区| 亚洲影视在线观看| 樱桃视频在线观看一区| 国产精品护士白丝一区av| 久久久噜噜噜久久人人看| 精品国产91久久久久久久妲己| 91精品婷婷国产综合久久| 欧美日韩高清在线| 欧美三片在线视频观看| 欧美午夜电影在线播放| 欧洲精品视频在线观看| 色偷偷成人一区二区三区91| 成人黄色片在线观看| 成人高清在线视频| 91影院在线观看| 欧美在线免费视屏| 8x8x8国产精品| 欧美大胆一级视频| 久久九九久久九九| 国产精品国产馆在线真实露脸| 国产精品久久久久久妇女6080| 国产欧美一区视频| 国产精品私人自拍| 亚洲国产精品一区二区久久恐怖片 | 久久综合一区二区| 国产午夜精品一区二区三区视频| 久久久噜噜噜久噜久久综合| 国产欧美精品一区| 亚洲一级在线观看| 免费精品视频在线| 成人免费av资源| 欧美在线不卡视频| 91精品国产综合久久久久久漫画| 欧美电影免费观看高清完整版在| 久久精品无码一区二区三区| 国产精品久久一级| 天天亚洲美女在线视频| 九九**精品视频免费播放| 国产精品伊人色| 欧美性生活久久| 2023国产一二三区日本精品2022| 国产免费成人在线视频| 亚洲综合一区在线| 国产精品资源站在线| 色先锋aa成人| 精品国产123| 亚洲综合一二三区| 国产99久久精品| 6080午夜不卡| 亚洲图片欧美激情| 国产一区中文字幕| 欧美中文字幕一区| 中文幕一区二区三区久久蜜桃| 亚洲国产一区二区三区| 国产99久久久国产精品潘金| 欧美日韩一区二区三区在线看| 欧美国产精品久久| 精品一区二区三区的国产在线播放| 成人黄色777网| 欧美精品一区二区三区一线天视频| 一区二区免费看|