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

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

?? oggparsevorbis.c.svn-base

?? ffmpeg最新源碼
?? SVN-BASE
字號:
/**      Copyright (C) 2005  Michael Ahlberg, M?ns Rullg?rd      Permission is hereby granted, free of charge, to any person      obtaining a copy of this software and associated documentation      files (the "Software"), to deal in the Software without      restriction, including without limitation the rights to use, copy,      modify, merge, publish, distribute, sublicense, and/or sell copies      of the Software, and to permit persons to whom the Software is      furnished to do so, subject to the following conditions:      The above copyright notice and this permission notice shall be      included in all copies or substantial portions of the Software.      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,      EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF      MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND      NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT      HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,      WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,      OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER      DEALINGS IN THE SOFTWARE.**/#include <stdlib.h>#include "libavutil/avstring.h"#include "libavutil/bswap.h"#include "libavcodec/bitstream.h"#include "libavcodec/bytestream.h"#include "avformat.h"#include "oggdec.h"extern intvorbis_comment(AVFormatContext * as, uint8_t *buf, int size){    const uint8_t *p = buf;    const uint8_t *end = buf + size;    unsigned s, n, j;    if (size < 8) /* must have vendor_length and user_comment_list_length */        return -1;    s = bytestream_get_le32(&p);    if (end - p < s)        return -1;    p += s;    n = bytestream_get_le32(&p);    while (p < end && n > 0) {        const char *t, *v;        int tl, vl;        s = bytestream_get_le32(&p);        if (end - p < s)            break;        t = p;        p += s;        n--;        v = memchr(t, '=', s);        if (!v)            continue;        tl = v - t;        vl = s - tl - 1;        v++;        if (tl && vl) {            char tt[tl + 1];            char ct[vl + 1];            for (j = 0; j < tl; j++)                tt[j] = toupper(t[j]);            tt[tl] = 0;            memcpy(ct, v, vl);            ct[vl] = 0;            // took from Vorbis_I_spec            if (!strcmp(tt, "AUTHOR") || !strcmp(tt, "ARTIST"))                av_strlcpy(as->author, ct, sizeof(as->author));            else if (!strcmp(tt, "TITLE"))                av_strlcpy(as->title, ct, sizeof(as->title));            else if (!strcmp(tt, "COPYRIGHT"))                av_strlcpy(as->copyright, ct, sizeof(as->copyright));            else if (!strcmp(tt, "DESCRIPTION"))                av_strlcpy(as->comment, ct, sizeof(as->comment));            else if (!strcmp(tt, "GENRE"))                av_strlcpy(as->genre, ct, sizeof(as->genre));            else if (!strcmp(tt, "TRACKNUMBER"))                as->track = atoi(ct);            else if (!strcmp(tt, "ALBUM"))                av_strlcpy(as->album, ct, sizeof(as->album));        }    }    if (p != end)        av_log(as, AV_LOG_INFO, "%ti bytes of comment header remain\n", p-end);    if (n > 0)        av_log(as, AV_LOG_INFO,               "truncated comment header, %i comments not found\n", n);    return 0;}/** Parse the vorbis header * Vorbis Identification header from Vorbis_I_spec.html#vorbis-spec-codec * [vorbis_version] = read 32 bits as unsigned integer | Not used * [audio_channels] = read 8 bit integer as unsigned | Used * [audio_sample_rate] = read 32 bits as unsigned integer | Used * [bitrate_maximum] = read 32 bits as signed integer | Not used yet * [bitrate_nominal] = read 32 bits as signed integer | Not used yet * [bitrate_minimum] = read 32 bits as signed integer | Used as bitrate * [blocksize_0] = read 4 bits as unsigned integer | Not Used * [blocksize_1] = read 4 bits as unsigned integer | Not Used * [framing_flag] = read one bit | Not Used *    */typedef struct {    unsigned int len[3];    unsigned char *packet[3];} oggvorbis_private_t;static unsigned intfixup_vorbis_headers(AVFormatContext * as, oggvorbis_private_t *priv,                     uint8_t **buf){    int i,offset, len;    unsigned char *ptr;    len = priv->len[0] + priv->len[1] + priv->len[2];    ptr = *buf = av_mallocz(len + len/255 + 64);    ptr[0] = 2;    offset = 1;    offset += av_xiphlacing(&ptr[offset], priv->len[0]);    offset += av_xiphlacing(&ptr[offset], priv->len[1]);    for (i = 0; i < 3; i++) {        memcpy(&ptr[offset], priv->packet[i], priv->len[i]);        offset += priv->len[i];    }    *buf = av_realloc(*buf, offset);    return offset;}static intvorbis_header (AVFormatContext * s, int idx){    ogg_t *ogg = s->priv_data;    ogg_stream_t *os = ogg->streams + idx;    AVStream *st = s->streams[idx];    oggvorbis_private_t *priv;    if (os->seq > 2)        return 0;    if (os->seq == 0) {        os->private = av_mallocz(sizeof(oggvorbis_private_t));        if (!os->private)            return 0;    }    if (os->psize < 1)        return -1;    priv = os->private;    priv->len[os->seq] = os->psize;    priv->packet[os->seq] = av_mallocz(os->psize);    memcpy(priv->packet[os->seq], os->buf + os->pstart, os->psize);    if (os->buf[os->pstart] == 1) {        const uint8_t *p = os->buf + os->pstart + 7; /* skip "\001vorbis" tag */        unsigned blocksize, bs0, bs1;        if (os->psize != 30)            return -1;        if (bytestream_get_le32(&p) != 0) /* vorbis_version */            return -1;        st->codec->channels = bytestream_get_byte(&p);        st->codec->sample_rate = bytestream_get_le32(&p);        p += 4; // skip maximum bitrate        st->codec->bit_rate = bytestream_get_le32(&p); // nominal bitrate        p += 4; // skip minimum bitrate        blocksize = bytestream_get_byte(&p);        bs0 = blocksize & 15;        bs1 = blocksize >> 4;        if (bs0 > bs1)            return -1;        if (bs0 < 6 || bs1 > 13)            return -1;        if (bytestream_get_byte(&p) != 1) /* framing_flag */            return -1;        st->codec->codec_type = CODEC_TYPE_AUDIO;        st->codec->codec_id = CODEC_ID_VORBIS;        st->time_base.num = 1;        st->time_base.den = st->codec->sample_rate;    } else if (os->buf[os->pstart] == 3) {        if (os->psize > 8)            vorbis_comment (s, os->buf + os->pstart + 7, os->psize - 8);    } else {        st->codec->extradata_size =            fixup_vorbis_headers(s, priv, &st->codec->extradata);    }    return os->seq < 3;}ogg_codec_t vorbis_codec = {    .magic = "\001vorbis",    .magicsize = 7,    .header = vorbis_header};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品免费看片| 91精品国产综合久久久久久久| 久久亚洲私人国产精品va媚药| 麻豆精品视频在线观看视频| 日韩三区在线观看| 久久激情综合网| 久久夜色精品一区| 波多野结衣中文字幕一区二区三区 | 国产高清不卡一区二区| 久久久精品tv| 91偷拍与自偷拍精品| 亚洲激情成人在线| 欧美日韩国产另类不卡| 蜜臀av性久久久久蜜臀aⅴ| 久久久91精品国产一区二区三区| 成人av综合一区| 亚洲第一综合色| 久久久久久久久久久久久夜| 99久久99久久久精品齐齐| 亚洲mv在线观看| 久久先锋影音av| 色综合一区二区| 美女www一区二区| 国产精品电影院| 91精品国产一区二区人妖| 国产高清亚洲一区| 亚洲精品水蜜桃| 欧美成人女星排名| 在线中文字幕不卡| 国产在线精品一区在线观看麻豆| 亚洲欧美日韩在线| 91精品欧美综合在线观看最新| 国产一二精品视频| 亚洲制服丝袜在线| 久久久91精品国产一区二区三区| 欧美性大战久久久久久久蜜臀| 久久av中文字幕片| 亚洲一二三四在线观看| 久久久久久电影| 欧美绝品在线观看成人午夜影视| 国产精品主播直播| 三级不卡在线观看| 亚洲日本在线天堂| 久久嫩草精品久久久精品一| 欧美无人高清视频在线观看| 国产丶欧美丶日本不卡视频| 日韩精彩视频在线观看| 亚洲四区在线观看| 国产日韩欧美一区二区三区乱码 | 91精品国产综合久久久蜜臀粉嫩| 国产 欧美在线| 精品中文字幕一区二区小辣椒 | 日韩精品视频网| 亚洲激情在线激情| 欧美精彩视频一区二区三区| 日韩欧美国产系列| 欧美精品久久久久久久多人混战| 成人高清免费观看| 国产一区二区三区黄视频 | 日本伊人午夜精品| 亚洲一区二区视频在线观看| 中文字幕av一区二区三区| 欧美精品一区二区三区久久久 | 免费看黄色91| 男人的j进女人的j一区| 亚洲成人动漫在线免费观看| 夜夜嗨av一区二区三区四季av| 国产精品萝li| 国产精品免费视频网站| 久久久久99精品一区| 日韩欧美123| 日韩免费电影网站| 欧美一区二区三区的| 欧美日韩精品欧美日韩精品一| 91久久免费观看| 色婷婷精品大在线视频| a亚洲天堂av| 成人97人人超碰人人99| 波多野结衣一区二区三区| 成人av电影在线观看| av不卡在线播放| 色综合天天性综合| 欧美在线色视频| 欧美精选在线播放| 日韩一区二区免费在线电影| 欧美mv日韩mv国产网站app| 精品电影一区二区| 国产午夜精品久久久久久免费视| 久久精品免费在线观看| 中文字幕中文字幕中文字幕亚洲无线| 国产精品丝袜91| 亚洲精品国产品国语在线app| 一区二区三区在线视频免费| 亚洲成人动漫在线免费观看| 免费不卡在线观看| 国内欧美视频一区二区 | 视频一区二区不卡| 日韩在线a电影| 裸体一区二区三区| 国产精品538一区二区在线| 成人午夜碰碰视频| 在线中文字幕一区| 日韩一区二区免费电影| 久久免费美女视频| 亚洲日本在线观看| 日韩精品午夜视频| 国产999精品久久久久久| 91欧美一区二区| 91精品国产高清一区二区三区蜜臀 | 麻豆精品一区二区三区| 国产成人精品影视| 欧美又粗又大又爽| 精品日韩欧美在线| 最近中文字幕一区二区三区| 日韩精品国产精品| 不卡影院免费观看| 91精品国产福利在线观看| 久久久.com| 男人操女人的视频在线观看欧美| 成人免费看的视频| 日韩一二在线观看| 日韩一区欧美小说| 捆绑紧缚一区二区三区视频 | 国产精品99久久久久久似苏梦涵 | 国产精品天干天干在观线| 亚洲一区二区三区中文字幕在线| 精品一区二区三区久久久| 91色|porny| 国产欧美一区二区三区沐欲| 亚洲不卡在线观看| 99久久综合精品| 欧美成人aa大片| 亚洲va天堂va国产va久| 99国产精品久久久久| 欧美va日韩va| 肉丝袜脚交视频一区二区| 99精品久久99久久久久| 欧美成人精品二区三区99精品| 亚洲影院理伦片| 成人av高清在线| 久久免费的精品国产v∧| 偷拍亚洲欧洲综合| 一本色道久久综合亚洲精品按摩| 久久精品免视看| 久久成人免费电影| 6080yy午夜一二三区久久| 夜夜嗨av一区二区三区网页| 波多野结衣中文一区| 国产亚洲欧美日韩在线一区| 裸体一区二区三区| 在线成人免费视频| 亚洲国产综合在线| 色综合亚洲欧洲| 亚洲婷婷综合久久一本伊一区| 丰满少妇在线播放bd日韩电影| 精品少妇一区二区三区| 青青草原综合久久大伊人精品| 欧美午夜一区二区三区免费大片| 中文字幕一区二区日韩精品绯色| 国产精品一区二区你懂的| 精品国产一区二区三区四区四| 日本欧美一区二区三区| 欧美精品aⅴ在线视频| 性感美女极品91精品| 欧美日韩一级片在线观看| 亚洲福利视频三区| 欧美日韩一区二区在线视频| 亚洲一区视频在线| 欧美精品三级日韩久久| 日韩极品在线观看| 日韩你懂的在线播放| 蜜臀av亚洲一区中文字幕| 欧美草草影院在线视频| 久久黄色级2电影| 精品国产伦一区二区三区观看体验 | 国产精品久久久久影院| av网站一区二区三区| 亚洲女与黑人做爰| 欧美日韩一区在线观看| 日韩av电影免费观看高清完整版在线观看 | 国产免费观看久久| 不卡av在线免费观看| 亚洲一区二区3| 9191久久久久久久久久久| 免费看精品久久片| 国产午夜三级一区二区三| 色综合色综合色综合色综合色综合| 一卡二卡三卡日韩欧美| 欧美一级片免费看| 国产传媒一区在线| 亚洲乱码国产乱码精品精的特点 | 色狠狠av一区二区三区| 视频一区二区三区入口| 国产亚洲欧美色| 色哟哟国产精品| 久久精品国产亚洲高清剧情介绍| 国产欧美日韩亚州综合| 日本久久精品电影| 激情小说欧美图片| 亚洲欧美日韩国产手机在线 |