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

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

?? dts.c

?? VLC Player Source Code
?? C
字號:
/***************************************************************************** * dts.c : raw DTS stream input module for vlc ***************************************************************************** * Copyright (C) 2001-2007 the VideoLAN team * $Id: dc48f719a2b8ec7a766a9d372d91d8a67e98e1f0 $ * * Authors: Gildas Bazin <gbazin@netcourrier.com> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************//***************************************************************************** * Preamble *****************************************************************************/#ifdef HAVE_CONFIG_H# include "config.h"#endif#include <vlc_common.h>#include <vlc_plugin.h>#include <vlc_demux.h>#include <vlc_codec.h>/***************************************************************************** * Module descriptor *****************************************************************************/static int  Open  ( vlc_object_t * );static void Close ( vlc_object_t * );vlc_module_begin();    set_category( CAT_INPUT );    set_subcategory( SUBCAT_INPUT_DEMUX );    set_description( N_("Raw DTS demuxer") );    set_capability( "demux", 155 );    set_callbacks( Open, Close );    add_shortcut( "dts" );vlc_module_end();/***************************************************************************** * Local prototypes *****************************************************************************/static int Demux  ( demux_t * );static int Control( demux_t *, int, va_list );struct demux_sys_t{    bool  b_start;    es_out_id_t *p_es;    /* Packetizer */    decoder_t *p_packetizer;    mtime_t i_pts;    mtime_t i_time_offset;    int i_mux_rate;};static int CheckSync( const uint8_t *p_peek );#define DTS_PACKET_SIZE 16384#define DTS_PROBE_SIZE (DTS_PACKET_SIZE * 4)#define DTS_MAX_HEADER_SIZE 11/***************************************************************************** * Open: initializes ES structures *****************************************************************************/static int Open( vlc_object_t * p_this ){    demux_t     *p_demux = (demux_t*)p_this;    demux_sys_t *p_sys;    const uint8_t *p_peek;    int          i_peek = 0;    /* Check if we are dealing with a WAV file */    if( stream_Peek( p_demux->s, &p_peek, 20 ) == 20 &&        !memcmp( p_peek, "RIFF", 4 ) && !memcmp( &p_peek[8], "WAVE", 4 ) )    {        /* Find the wave format header */        i_peek = 12 + 8;        while( memcmp( p_peek + i_peek - 8, "fmt ", 4 ) )        {            uint32_t i_len = GetDWLE( p_peek + i_peek - 4 );            if( i_len > DTS_PROBE_SIZE || i_peek + i_len > DTS_PROBE_SIZE )                return VLC_EGENERIC;            i_peek += i_len + 8;            if( stream_Peek( p_demux->s, &p_peek, i_peek ) != i_peek )                return VLC_EGENERIC;        }        /* Sanity check the wave format header */        uint32_t i_len = GetDWLE( p_peek + i_peek - 4 );        if( i_len > DTS_PROBE_SIZE )            return VLC_EGENERIC;        i_peek += i_len + 8;        if( stream_Peek( p_demux->s, &p_peek, i_peek ) != i_peek )            return VLC_EGENERIC;        if( GetWLE( p_peek + i_peek - i_len - 8 /* wFormatTag */ ) !=            1 /* WAVE_FORMAT_PCM */ )            return VLC_EGENERIC;        if( GetWLE( p_peek + i_peek - i_len - 6 /* nChannels */ ) != 2 )            return VLC_EGENERIC;        if( GetDWLE( p_peek + i_peek - i_len - 4 /* nSamplesPerSec */ ) !=            44100 )            return VLC_EGENERIC;        /* Skip the wave header */        while( memcmp( p_peek + i_peek - 8, "data", 4 ) )        {            uint32_t i_len = GetDWLE( p_peek + i_peek - 4 );            if( i_len > DTS_PROBE_SIZE || i_peek + i_len > DTS_PROBE_SIZE )                return VLC_EGENERIC;            i_peek += i_len + 8;            if( stream_Peek( p_demux->s, &p_peek, i_peek ) != i_peek )                return VLC_EGENERIC;        }        /* Some DTS wav files don't begin with a sync code so we do a more         * extensive search */        int i_size = stream_Peek( p_demux->s, &p_peek, DTS_PROBE_SIZE );        i_size -= DTS_MAX_HEADER_SIZE;        while( i_peek < i_size )        {            if( CheckSync( p_peek + i_peek ) != VLC_SUCCESS )                /* The data is stored in 16 bits words */                i_peek += 2;            else                break;        }    }    /* Have a peep at the show. */    CHECK_PEEK( p_peek, i_peek + DTS_MAX_HEADER_SIZE * 2  );    if( CheckSync( p_peek + i_peek ) != VLC_SUCCESS )    {        if( !p_demux->b_force )            return VLC_EGENERIC;        /* User forced */        msg_Err( p_demux, "this doesn't look like a DTS audio stream, "                 "continuing anyway" );    }    DEMUX_INIT_COMMON(); p_sys = p_demux->p_sys;    p_sys->b_start = true;    p_sys->i_mux_rate = 0;    p_sys->i_pts = 0;    p_sys->i_time_offset = 0;     INIT_APACKETIZER( p_sys->p_packetizer, 'd','t','s',' ' );    LOAD_PACKETIZER_OR_FAIL( p_sys->p_packetizer, "DTS" );    p_sys->p_es = es_out_Add( p_demux->out, &p_sys->p_packetizer->fmt_in );    return VLC_SUCCESS;}/***************************************************************************** * Close: frees unused data *****************************************************************************/static void Close( vlc_object_t *p_this ){    demux_t     *p_demux = (demux_t*)p_this;    demux_sys_t *p_sys = p_demux->p_sys;    DESTROY_PACKETIZER( p_sys->p_packetizer );    free( p_sys );}/***************************************************************************** * Demux: reads and demuxes data packets ***************************************************************************** * Returns -1 in case of error, 0 in case of EOF, 1 otherwise *****************************************************************************/static int Demux( demux_t *p_demux ){    demux_sys_t *p_sys = p_demux->p_sys;    block_t *p_block_in, *p_block_out;    if( !( p_block_in = stream_Block( p_demux->s, DTS_PACKET_SIZE ) ) )    {        return 0;    }    if( p_sys->b_start )        p_block_in->i_pts = p_block_in->i_dts = 1;    else        p_block_in->i_pts = p_block_in->i_dts = 0;    while( (p_block_out = p_sys->p_packetizer->pf_packetize(                p_sys->p_packetizer, &p_block_in )) )    {        p_sys->b_start = false;        while( p_block_out )        {            block_t *p_next = p_block_out->p_next;            /* We assume a constant bitrate */            if( p_block_out->i_length )            {                p_sys->i_mux_rate =                    p_block_out->i_buffer * INT64_C(1000000) / p_block_out->i_length;            }            /* Correct timestamp */            p_block_out->i_pts += p_sys->i_time_offset;            p_block_out->i_dts += p_sys->i_time_offset;            /* set PCR */            es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_block_out->i_dts );            es_out_Send( p_demux->out, p_sys->p_es, p_block_out );            p_block_out = p_next;        }    }    return 1;}/***************************************************************************** * Control: *****************************************************************************/static int Control( demux_t *p_demux, int i_query, va_list args ){    demux_sys_t *p_sys  = p_demux->p_sys;    bool *pb_bool;    int64_t *pi64;    int i_ret;    switch( i_query )    {    case DEMUX_HAS_UNSUPPORTED_META:        pb_bool = (bool*)va_arg( args, bool* );        *pb_bool = true;        return VLC_SUCCESS;    case DEMUX_GET_TIME:        pi64 = (int64_t*)va_arg( args, int64_t * );        *pi64 = p_sys->i_pts + p_sys->i_time_offset;        return VLC_SUCCESS;    case DEMUX_SET_TIME: /* TODO implement a high precicsion seek */    default:        i_ret = demux_vaControlHelper( p_demux->s,                                       0, -1,                                       8*p_sys->i_mux_rate, 1, i_query, args );        if( !i_ret && p_sys->i_mux_rate > 0 &&            ( i_query == DEMUX_SET_POSITION || i_query == DEMUX_SET_TIME ) )        {            const int64_t i_time = INT64_C(1000000) * stream_Tell(p_demux->s) /                                        p_sys->i_mux_rate;            /* Fix time_offset */            if( i_time >= 0 )                p_sys->i_time_offset = i_time - p_sys->i_pts;        }        return i_ret;    }}/***************************************************************************** * CheckSync: Check if buffer starts with a DTS sync code *****************************************************************************/static int CheckSync( const uint8_t *p_peek ){    /* 14 bits, little endian version of the bitstream */    if( p_peek[0] == 0xff && p_peek[1] == 0x1f &&        p_peek[2] == 0x00 && p_peek[3] == 0xe8 &&        (p_peek[4] & 0xf0) == 0xf0 && p_peek[5] == 0x07 )    {        return VLC_SUCCESS;    }    /* 14 bits, big endian version of the bitstream */    else if( p_peek[0] == 0x1f && p_peek[1] == 0xff &&             p_peek[2] == 0xe8 && p_peek[3] == 0x00 &&             p_peek[4] == 0x07 && (p_peek[5] & 0xf0) == 0xf0)    {        return VLC_SUCCESS;    }    /* 16 bits, big endian version of the bitstream */    else if( p_peek[0] == 0x7f && p_peek[1] == 0xfe &&             p_peek[2] == 0x80 && p_peek[3] == 0x01 )    {        return VLC_SUCCESS;    }    /* 16 bits, little endian version of the bitstream */    else if( p_peek[0] == 0xfe && p_peek[1] == 0x7f &&             p_peek[2] == 0x01 && p_peek[3] == 0x80 )    {        return VLC_SUCCESS;    }    return VLC_EGENERIC;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人亚洲综合a∨婷婷图片| 3d成人动漫网站| 欧美日韩在线一区二区| 久久久久久久综合| 一区二区三区视频在线看| 国产主播一区二区三区| 欧美日韩中文字幕一区| 一色桃子久久精品亚洲| 国产麻豆视频精品| 日韩亚洲欧美成人一区| 五月婷婷另类国产| 91蜜桃视频在线| 日韩精品91亚洲二区在线观看 | 久久久国产精品不卡| 中文字幕巨乱亚洲| 亚洲一区电影777| 国精产品一区一区三区mba桃花| 色呦呦国产精品| 国产精品超碰97尤物18| 亚洲高清中文字幕| 欧美精品丝袜久久久中文字幕| 国产综合成人久久大片91| 亚洲欧洲色图综合| 4438亚洲最大| 不卡的av在线| 久久成人免费网站| 一区二区三区四区亚洲| 精品国产乱码久久久久久闺蜜| 99久久免费精品| 美腿丝袜一区二区三区| 国产精品久久久久久久久免费丝袜 | 91视频www| 精品一区二区三区免费播放| 亚洲乱码一区二区三区在线观看| 欧美一区二区精品| 91久久精品日日躁夜夜躁欧美| 久久国产精品第一页| 亚洲老司机在线| 国产蜜臀97一区二区三区| 欧美乱妇23p| 色综合久久久久综合体桃花网| 国产又黄又大久久| 视频一区中文字幕国产| 1区2区3区欧美| 国产欧美日本一区视频| 欧美一级免费观看| 欧美在线视频日韩| 成人深夜在线观看| 国产一区二区中文字幕| 青青草成人在线观看| 亚洲综合一二区| 国产精品国产三级国产aⅴ原创| 精品国产乱码久久久久久牛牛| 91精品国产麻豆国产自产在线| 色欧美日韩亚洲| 99久久精品99国产精品| 国产福利91精品一区| 狠狠色狠狠色综合系列| 久久国产精品色婷婷| 天天射综合影视| 亚洲午夜久久久久久久久久久 | 在线观看日韩av先锋影音电影院| 国产麻豆成人传媒免费观看| 美日韩一区二区| 日韩精品久久理论片| 国产福利精品导航| 久久国产麻豆精品| 麻豆精品新av中文字幕| 乱中年女人伦av一区二区| 香蕉影视欧美成人| 天天综合色天天| 天堂成人国产精品一区| 日韩国产欧美在线观看| 日韩电影免费一区| 蜜桃视频一区二区三区在线观看| 日韩精品一级中文字幕精品视频免费观看 | 99久久er热在这里只有精品15| 豆国产96在线|亚洲| 成人午夜在线视频| 97久久人人超碰| 91亚洲永久精品| 在线观看www91| 欧美精品 日韩| 精品乱码亚洲一区二区不卡| 国产午夜精品一区二区| 中文一区在线播放| 亚洲精品日韩专区silk| 香蕉成人啪国产精品视频综合网 | 激情五月婷婷综合网| 国产在线一区二区综合免费视频| 国产在线视频不卡二| 成人精品高清在线| 一本色道亚洲精品aⅴ| 欧美色图免费看| 日韩欧美国产电影| 国产日本欧洲亚洲| 亚洲精品成人精品456| 日产欧产美韩系列久久99| 黄网站免费久久| 91丝袜高跟美女视频| 欧美婷婷六月丁香综合色| 欧美大片在线观看一区| 国产日韩精品一区二区三区| 亚洲精品国产品国语在线app| 日韩黄色免费电影| 国产jizzjizz一区二区| 91伊人久久大香线蕉| 91精品国产一区二区三区蜜臀| 久久久精品综合| 亚洲日本成人在线观看| 视频一区视频二区中文字幕| 国产宾馆实践打屁股91| 欧美性猛片xxxx免费看久爱| 精品久久久久av影院| 最新高清无码专区| 美女视频一区二区| 91麻豆高清视频| 日韩精品一区二区在线| 亚洲免费在线电影| 精品无码三级在线观看视频| 一本一道综合狠狠老| 蜜臀va亚洲va欧美va天堂| 97se狠狠狠综合亚洲狠狠| 日韩欧美国产wwwww| 亚洲激情图片qvod| 国产精品性做久久久久久| 欧美日产国产精品| 日韩一区有码在线| 国产精品自在在线| 3d成人动漫网站| 一区二区三区中文免费| 福利一区二区在线| 日韩欧美国产1| 午夜a成v人精品| 91在线码无精品| 国产亚洲欧美中文| 久久99国产精品麻豆| 91精品国产入口在线| 亚洲九九爱视频| 成人精品视频一区二区三区尤物| 欧美成va人片在线观看| 亚洲一区二区在线观看视频 | 日韩一级大片在线| 国产精品国产自产拍在线| 极品少妇一区二区三区精品视频| 91丨九色porny丨蝌蚪| 国产精品美女久久久久久久久| 久久激五月天综合精品| 制服丝袜日韩国产| 亚洲国产aⅴ天堂久久| 国产亚洲欧洲一区高清在线观看| 天堂资源在线中文精品| 在线国产电影不卡| 亚洲激情综合网| 99久久综合精品| 国产精品色哟哟网站| 国产福利一区二区三区视频在线| 精品三级av在线| 久久aⅴ国产欧美74aaa| 在线成人av影院| 日韩一区精品视频| 日韩精品一区二区三区四区视频| 日韩精品亚洲专区| 91精品国产欧美日韩| 免费在线观看一区二区三区| 日韩欧美国产电影| 激情伊人五月天久久综合| 精品动漫一区二区三区在线观看| 国产在线一区观看| 国产三级欧美三级| 高清不卡在线观看| 亚洲青青青在线视频| 色域天天综合网| 亚洲va欧美va国产va天堂影院| 欧美丰满美乳xxx高潮www| 男女男精品视频| 日韩精品一区二区三区在线播放 | 午夜精品成人在线| 欧美美女网站色| 奇米精品一区二区三区四区| 日韩一区二区在线播放| 国内外精品视频| 国产亚洲成年网址在线观看| 不卡的av电影| 亚洲综合色噜噜狠狠| 在线不卡a资源高清| 久久精品国产免费看久久精品| 国产色产综合色产在线视频| a4yy欧美一区二区三区| 亚洲午夜电影网| 26uuu亚洲| 97久久久精品综合88久久| 日韩高清在线一区| 中文字幕免费不卡| 欧美性色aⅴ视频一区日韩精品| 理论片日本一区| 国产精品久久影院| 欧美一区二区三区色| 成人av动漫在线| 偷拍亚洲欧洲综合|