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

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

?? vlc_block_helper.h

?? mips版本的VLC視頻服務器
?? H
字號:
/***************************************************************************** * vlc_block_helper.h: Helper functions for data blocks management. ***************************************************************************** * Copyright (C) 2003 the VideoLAN team * $Id: 376c2b4d751d861a3cb33324834fb37e324a4eab $ * * 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. *****************************************************************************/#ifndef VLC_BLOCK_HELPER_H#define VLC_BLOCK_HELPER_H 1#include <vlc_block.h>typedef struct block_bytestream_t{    block_t             *p_chain;    block_t             *p_block;    size_t              i_offset;} block_bytestream_t;/***************************************************************************** * block_bytestream_t management *****************************************************************************/static inline block_bytestream_t block_BytestreamInit( void ){    block_bytestream_t bytestream;    bytestream.i_offset = 0;    bytestream.p_chain = bytestream.p_block = NULL;    return bytestream;}static inline void block_BytestreamRelease( block_bytestream_t *p_bytestream ){    while( p_bytestream->p_chain )    {        block_t *p_next;        p_next = p_bytestream->p_chain->p_next;        p_bytestream->p_chain->pf_release( p_bytestream->p_chain );        p_bytestream->p_chain = p_next;    }    p_bytestream->i_offset = 0;    p_bytestream->p_chain = p_bytestream->p_block = NULL;}static inline void block_BytestreamFlush( block_bytestream_t *p_bytestream ){    while( p_bytestream->p_chain != p_bytestream->p_block )    {        block_t *p_next;        p_next = p_bytestream->p_chain->p_next;        p_bytestream->p_chain->pf_release( p_bytestream->p_chain );        p_bytestream->p_chain = p_next;    }    while( p_bytestream->p_block &&           (p_bytestream->p_block->i_buffer - p_bytestream->i_offset) == 0 )    {        block_t *p_next;        p_next = p_bytestream->p_chain->p_next;        p_bytestream->p_chain->pf_release( p_bytestream->p_chain );        p_bytestream->p_chain = p_bytestream->p_block = p_next;        p_bytestream->i_offset = 0;    }}static inline void block_BytestreamPush( block_bytestream_t *p_bytestream,                                         block_t *p_block ){    block_ChainAppend( &p_bytestream->p_chain, p_block );    if( !p_bytestream->p_block ) p_bytestream->p_block = p_block;}LIBVLC_USEDstatic inline block_t *block_BytestreamPop( block_bytestream_t *p_bytestream ){    block_t *p_block;    block_BytestreamFlush( p_bytestream );    p_block = p_bytestream->p_block;    if( p_block == NULL )    {        return NULL;    }    else if( !p_block->p_next )    {        p_block->p_buffer += p_bytestream->i_offset;        p_block->i_buffer -= p_bytestream->i_offset;        p_bytestream->i_offset = 0;        p_bytestream->p_chain = p_bytestream->p_block = NULL;        return p_block;    }    while( p_block->p_next && p_block->p_next->p_next )        p_block = p_block->p_next;    {        block_t *p_block_old = p_block;        p_block = p_block->p_next;        p_block_old->p_next = NULL;    }    return p_block;}static inline int block_SkipByte( block_bytestream_t *p_bytestream ){    /* Most common case first */    if( p_bytestream->p_block->i_buffer - p_bytestream->i_offset )    {        p_bytestream->i_offset++;        return VLC_SUCCESS;    }    else    {        block_t *p_block;        /* Less common case which is also slower */        for( p_block = p_bytestream->p_block->p_next;             p_block != NULL; p_block = p_block->p_next )        {            if( p_block->i_buffer )            {                p_bytestream->i_offset = 1;                p_bytestream->p_block = p_block;                return VLC_SUCCESS;            }        }    }    /* Not enough data, bail out */    return VLC_EGENERIC;}static inline int block_PeekByte( block_bytestream_t *p_bytestream,                                  uint8_t *p_data ){    /* Most common case first */    if( p_bytestream->p_block->i_buffer - p_bytestream->i_offset )    {        *p_data = p_bytestream->p_block->p_buffer[p_bytestream->i_offset];        return VLC_SUCCESS;    }    else    {        block_t *p_block;        /* Less common case which is also slower */        for( p_block = p_bytestream->p_block->p_next;             p_block != NULL; p_block = p_block->p_next )        {            if( p_block->i_buffer )            {                *p_data = p_block->p_buffer[0];                return VLC_SUCCESS;            }        }    }    /* Not enough data, bail out */    return VLC_EGENERIC;}static inline int block_GetByte( block_bytestream_t *p_bytestream,                                 uint8_t *p_data ){    /* Most common case first */    if( p_bytestream->p_block->i_buffer - p_bytestream->i_offset )    {        *p_data = p_bytestream->p_block->p_buffer[p_bytestream->i_offset];        p_bytestream->i_offset++;        return VLC_SUCCESS;    }    else    {        block_t *p_block;        /* Less common case which is also slower */        for( p_block = p_bytestream->p_block->p_next;             p_block != NULL; p_block = p_block->p_next )        {            if( p_block->i_buffer )            {                *p_data = p_block->p_buffer[0];                p_bytestream->i_offset = 1;                p_bytestream->p_block = p_block;                return VLC_SUCCESS;            }        }    }    /* Not enough data, bail out */    return VLC_EGENERIC;}static inline int block_WaitBytes( block_bytestream_t *p_bytestream,                                   size_t i_data ){    block_t *p_block;    size_t i_offset, i_copy, i_size;    /* Check we have that much data */    i_offset = p_bytestream->i_offset;    i_size = i_data;    i_copy = 0;    for( p_block = p_bytestream->p_block;         p_block != NULL; p_block = p_block->p_next )    {        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );        i_size -= i_copy;        i_offset = 0;        if( !i_size ) break;    }    if( i_size )    {        /* Not enough data, bail out */        return VLC_EGENERIC;    }    return VLC_SUCCESS;}static inline int block_SkipBytes( block_bytestream_t *p_bytestream,                                   size_t i_data ){    block_t *p_block;    size_t i_offset, i_copy;    /* Check we have that much data */    i_offset = p_bytestream->i_offset;    i_copy = 0;    for( p_block = p_bytestream->p_block;         p_block != NULL; p_block = p_block->p_next )    {        i_copy = __MIN( i_data, p_block->i_buffer - i_offset );        i_data -= i_copy;        if( !i_data ) break;        i_offset = 0;    }    if( i_data )    {        /* Not enough data, bail out */        return VLC_EGENERIC;    }    p_bytestream->p_block = p_block;    p_bytestream->i_offset = i_offset + i_copy;    return VLC_SUCCESS;}static inline int block_PeekBytes( block_bytestream_t *p_bytestream,                                   uint8_t *p_data, size_t i_data ){    block_t *p_block;    size_t i_offset, i_copy, i_size;    /* Check we have that much data */    i_offset = p_bytestream->i_offset;    i_size = i_data;    i_copy = 0;    for( p_block = p_bytestream->p_block;         p_block != NULL; p_block = p_block->p_next )    {        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );        i_size -= i_copy;        i_offset = 0;        if( !i_size ) break;    }    if( i_size )    {        /* Not enough data, bail out */        return VLC_EGENERIC;    }    /* Copy the data */    i_offset = p_bytestream->i_offset;    i_size = i_data;    i_copy = 0;    for( p_block = p_bytestream->p_block;         p_block != NULL; p_block = p_block->p_next )    {        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );        i_size -= i_copy;        if( i_copy )        {            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );            p_data += i_copy;        }        i_offset = 0;        if( !i_size ) break;    }    return VLC_SUCCESS;}static inline int block_GetBytes( block_bytestream_t *p_bytestream,                                  uint8_t *p_data, size_t i_data ){    block_t *p_block;    size_t i_offset, i_copy, i_size;    /* Check we have that much data */    i_offset = p_bytestream->i_offset;    i_size = i_data;    i_copy = 0;    for( p_block = p_bytestream->p_block;         p_block != NULL; p_block = p_block->p_next )    {        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );        i_size -= i_copy;        i_offset = 0;        if( !i_size ) break;    }    if( i_size )    {        /* Not enough data, bail out */        return VLC_EGENERIC;    }    /* Copy the data */    i_offset = p_bytestream->i_offset;    i_size = i_data;    i_copy = 0;    for( p_block = p_bytestream->p_block;         p_block != NULL; p_block = p_block->p_next )    {        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );        i_size -= i_copy;        if( i_copy )        {            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );            p_data += i_copy;        }        if( !i_size ) break;        i_offset = 0;    }    /* No buffer given, just skip the data */    p_bytestream->p_block = p_block;    p_bytestream->i_offset = i_offset + i_copy;    return VLC_SUCCESS;}static inline int block_PeekOffsetBytes( block_bytestream_t *p_bytestream,    size_t i_peek_offset, uint8_t *p_data, size_t i_data ){    block_t *p_block;    size_t i_offset, i_copy, i_size;    /* Check we have that much data */    i_offset = p_bytestream->i_offset;    i_size = i_data + i_peek_offset;    i_copy = 0;    for( p_block = p_bytestream->p_block;         p_block != NULL; p_block = p_block->p_next )    {        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );        i_size -= i_copy;        i_offset = 0;        if( !i_size ) break;    }    if( i_size )    {        /* Not enough data, bail out */        return VLC_EGENERIC;    }    /* Find the right place */    i_offset = p_bytestream->i_offset;    i_size = i_peek_offset;    i_copy = 0;    for( p_block = p_bytestream->p_block;         p_block != NULL; p_block = p_block->p_next )    {        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );        i_size -= i_copy;        if( !i_size ) break;        i_offset = 0;    }    /* Copy the data */    i_offset += i_copy;    i_size = i_data;    i_copy = 0;    for( ; p_block != NULL; p_block = p_block->p_next )    {        i_copy = __MIN( i_size, p_block->i_buffer - i_offset );        i_size -= i_copy;        if( i_copy )        {            memcpy( p_data, p_block->p_buffer + i_offset, i_copy );            p_data += i_copy;        }        i_offset = 0;        if( !i_size ) break;    }    return VLC_SUCCESS;}static inline int block_FindStartcodeFromOffset(    block_bytestream_t *p_bytestream, size_t *pi_offset,    const uint8_t *p_startcode, int i_startcode_length ){    block_t *p_block, *p_block_backup = 0;    int i_size = 0;    size_t i_offset, i_offset_backup = 0;    int i_caller_offset_backup = 0, i_match;    /* Find the right place */    i_size = *pi_offset + p_bytestream->i_offset;    for( p_block = p_bytestream->p_block;         p_block != NULL; p_block = p_block->p_next )    {        i_size -= p_block->i_buffer;        if( i_size < 0 ) break;    }    if( i_size >= 0 )    {        /* Not enough data, bail out */        return VLC_EGENERIC;    }    /* Begin the search.     * We first look for an occurrence of the 1st startcode byte and     * if found, we do a more thorough check. */    i_size += p_block->i_buffer;    *pi_offset -= i_size;    i_match = 0;    for( ; p_block != NULL; p_block = p_block->p_next )    {        for( i_offset = i_size; i_offset < p_block->i_buffer; i_offset++ )        {            if( p_block->p_buffer[i_offset] == p_startcode[i_match] )            {                if( !i_match )                {                    p_block_backup = p_block;                    i_offset_backup = i_offset;                    i_caller_offset_backup = *pi_offset;                }                if( i_match + 1 == i_startcode_length )                {                    /* We have it */                    *pi_offset += i_offset - i_match;                    return VLC_SUCCESS;                }                i_match++;            }            else if ( i_match )            {                /* False positive */                p_block = p_block_backup;                i_offset = i_offset_backup;                *pi_offset = i_caller_offset_backup;                i_match = 0;            }        }        i_size = 0;        *pi_offset += i_offset;    }    *pi_offset -= i_match;    return VLC_EGENERIC;}#endif /* VLC_BLOCK_HELPER_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色手机在线观看| 日韩精品中文字幕在线不卡尤物| 日韩高清不卡一区二区| 欧美激情中文字幕一区二区| 欧美一区二区免费观在线| 成人黄色电影在线| 另类专区欧美蜜桃臀第一页| 亚洲激情在线播放| 国产亚洲视频系列| 欧美一区二区三区系列电影| 91麻豆swag| 不卡一区在线观看| 国产精品一区二区在线看| 亚洲欧美色图小说| 久久精品一区二区三区不卡| 日韩欧美不卡一区| 欧美亚洲日本一区| 成人av电影在线网| 国产精品中文字幕日韩精品| 麻豆国产一区二区| 婷婷国产v国产偷v亚洲高清| 亚洲一区中文日韩| 亚洲欧洲www| 国产精品色婷婷| 久久久久久99精品| 欧美videossexotv100| 91麻豆精品久久久久蜜臀| 欧美在线制服丝袜| aa级大片欧美| 国产成人av一区二区| 韩日精品视频一区| 免费在线观看视频一区| 日韩精品1区2区3区| 亚洲大尺度视频在线观看| 亚洲精品视频在线看| 国产精品免费观看视频| 欧美国产一区二区| 中文字幕乱码一区二区免费| 国产片一区二区三区| 欧美激情在线一区二区| 中文字幕精品在线不卡| 久久久亚洲欧洲日产国码αv| 精品国产三级电影在线观看| 日韩女优av电影在线观看| 欧美mv日韩mv国产网站app| 精品电影一区二区| 久久久精品一品道一区| 国产三区在线成人av| 国产精品美女久久久久久久| 亚洲婷婷综合色高清在线| 综合婷婷亚洲小说| 亚洲在线观看免费| 视频在线观看91| 老司机免费视频一区二区| 久99久精品视频免费观看| 国产福利不卡视频| jlzzjlzz亚洲日本少妇| 日本精品视频一区二区三区| 91国产视频在线观看| 91麻豆精品国产自产在线观看一区 | 欧美美女直播网站| 日韩一区二区三区在线视频| 日韩精品一区二区三区在线播放| 337p粉嫩大胆噜噜噜噜噜91av| 国产香蕉久久精品综合网| 亚洲欧美在线高清| 亚洲福利一区二区| 久久国产欧美日韩精品| 成人免费视频视频在线观看免费 | 亚洲婷婷国产精品电影人久久| 亚洲国产日韩一级| 另类调教123区 | 狠狠色丁香婷婷综合久久片| 粉嫩一区二区三区性色av| 色综合色综合色综合色综合色综合| 欧洲一区二区三区在线| 精品福利二区三区| 亚洲色图在线视频| 蜜桃一区二区三区在线观看| 国产成人精品综合在线观看| 91久久久免费一区二区| 日韩免费视频一区| 国产精品国产馆在线真实露脸 | 99精品在线免费| 在线不卡免费欧美| 欧美国产成人在线| 日本在线观看不卡视频| jlzzjlzz欧美大全| 日韩美女视频在线| 亚洲综合色区另类av| 国产在线精品免费| 欧美日韩一级二级三级| 国产精品免费视频一区| 免费人成在线不卡| 色综合久久久久| 久久久精品国产免费观看同学| 亚洲一级二级三级| 成人性生交大片免费看在线播放| 制服丝袜av成人在线看| 亚洲天堂网中文字| 久久国产麻豆精品| 欧美午夜精品久久久久久孕妇| 久久精品无码一区二区三区| 天使萌一区二区三区免费观看| 成人高清免费观看| 久久久99精品免费观看| 日本午夜精品视频在线观看| 在线观看不卡一区| 国产精品久久久久aaaa樱花| 国产精品亚洲第一区在线暖暖韩国| 91精品国产丝袜白色高跟鞋| 亚洲精品成人a在线观看| 成人一区二区三区在线观看| 日韩一区二区三区精品视频| 欧美丰满嫩嫩电影| 久久久99久久| 久久99久久久欧美国产| 欧美酷刑日本凌虐凌虐| 亚洲人成网站影音先锋播放| 成人免费视频视频| 日本一区二区成人| 国产福利一区二区三区在线视频| 日韩一级高清毛片| 日产精品久久久久久久性色| 色婷婷综合久久久中文一区二区| 国产精品理论片在线观看| 国产成人免费视| 国产无遮挡一区二区三区毛片日本| 老司机精品视频导航| 欧美一区二区视频观看视频| 日韩高清在线不卡| 91麻豆精品国产自产在线观看一区| 亚洲国产精品久久久久婷婷884 | 欧洲视频一区二区| 一区二区不卡在线视频 午夜欧美不卡在 | www.久久精品| 中文字幕精品—区二区四季| 岛国一区二区在线观看| 亚洲国产欧美在线人成| 色天使久久综合网天天| 亚洲综合色婷婷| 欧美精品自拍偷拍| 日韩经典一区二区| 精品久久一二三区| 国产麻豆精品在线观看| 国产丝袜美腿一区二区三区| 福利电影一区二区| 中文字幕一区日韩精品欧美| 91视频免费播放| 一区二区三区视频在线看| 欧美三区免费完整视频在线观看| 婷婷开心久久网| 精品久久久久99| 成人久久18免费网站麻豆 | ...xxx性欧美| 91伊人久久大香线蕉| 亚洲午夜av在线| 欧美一级在线免费| 国产成人精品免费一区二区| 亚洲摸摸操操av| 在线观看91av| 国产成人在线观看免费网站| 亚洲人快播电影网| 91精品国产免费| 成人黄页毛片网站| 亚洲图片欧美色图| 精品久久久久久久久久久久久久久久久| 国产成人精品www牛牛影视| 一区二区三区91| 日韩久久久久久| av电影天堂一区二区在线| 亚洲国产sm捆绑调教视频 | 久久久一区二区三区| 91麻豆产精品久久久久久| 蜜臀久久99精品久久久画质超高清| 久久免费的精品国产v∧| 在线一区二区观看| 久久国产精品99久久久久久老狼| 国产精品大尺度| 91精品国产乱码| 97久久超碰国产精品| 蜜桃视频一区二区| 1000部国产精品成人观看| 欧美精品色综合| 国产成人精品免费网站| 天天色 色综合| 国产精品欧美一级免费| 3751色影院一区二区三区| 成人免费视频免费观看| 日韩在线a电影| 欧美激情一区二区三区四区 | 国产亚洲精品7777| 欧美疯狂做受xxxx富婆| 成人福利视频网站| 美女视频黄a大片欧美| 一区二区免费视频| 国产精品网站一区| 欧美变态凌虐bdsm| 欧美日韩国产不卡| 91丨九色丨蝌蚪丨老版|