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

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

?? h263pars.c

?? 基于intel ipp的h263_decoder
?? C
字號:
/******************************************************************************
//               INTEL CORPORATION PROPRIETARY INFORMATION
//  This software is supplied under the terms of a license agreement or
//  nondisclosure agreement with Intel Corporation and may not be copied
//  or disclosed except in accordance with the terms of that agreement.
//        Copyright (c) 2003 Intel Corporation. All Rights Reserved.
//
//  Description:
//    Intel(R) Integrated Performance Primitives Sample Code H263 Decoder
//
//  Function List:
//    parse_picture_header_h263()
//    parse_gob_header_h263()
//    parse_mb_header_h263()
//
******************************************************************************/
#include "samph263.h"
   
/******************************************************************************
// Function Name:   parse_picture_header_h263
//
// Description:     Parse picture header informations from input stream.
//
// Parameter:
// Input:
//        stream:   Pointer to sample_bitstream structure holding input stream
//         state:   Pointer to h263_dec_state structure holding decode status
// Output:
//        stream:   Pointer to sample_bitstream structure holding input stream
//                  Stream position pointer is updated to next available byte
//         state:   Pointer to h263_dec_state structure holding decode status
//
// Return:
// sample_status:   
//  [SAMPLE_STATUS_NOERR]:            Succeeds
//  [SAMPLE_STATUS_BITSTREAM_ERR]:    Stream parsing error occurs
//  [SAMPLE_STATUS_NOTSUPPORTED_ERR]: Stream syntax is not supported.
//
// Notes:   
//                  1) Currently any syntax indicating using annex will return 
//                     [SAMPLE_STATUS_NOTSUPPORTED_ERR]. 
//                  2) PSUPP is not supported but discarded.
******************************************************************************/
sample_status parse_picture_header_h263(sample_bitstream  *stream, 
                                        h263_dec_state    *state)
{
    unsigned int data_reg = 0;
    
    /* Read PSC -- should be byte aligned */
    if(!STREAM_CHECK_BYTE_ALIGN(stream)) {
        STREAM_BYTE_ALIGN(stream);
    }
    if(!read_stream_bits(stream, H263_STREAM_PSC_LEN, &data_reg)
        || H263_STREAM_PSC != data_reg)  {
        return SAMPLE_STATUS_BITSTREAM_ERR; 
    }

    /* Read TR */
    data_reg = 0;
    if(!read_stream_bits(stream, H263_STREAM_TR_LEN, &data_reg)) {
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }
    state->tr = (int)data_reg;

    /* PTYPE */
    data_reg = 0;
    if(!read_stream_bits(stream, H263_STREAM_PTYPE_LEN, &data_reg)) {
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }
    
    if(0x2 != ((data_reg>>(H263_STREAM_PTYPE_LEN-2))&0x3)) {
        /* First 2 bits of PTYPE should be 10 */
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }

    /* skip Bit 3-5 of PTYPE */

    /* PTYPE bit 6~8: Source format */
    state->source_format = (data_reg>>(H263_STREAM_PTYPE_LEN-8))&7;
    if(H263_SOURCE_FORBIDDEN == state->source_format) {
        /* 0 is forbidden */
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }
    if(H263_SOURCE_CIF < state->source_format) {
        /* PLUSPTYPE not supported */
        return SAMPLE_STATUS_NOTSUPPORTED_ERR;
    }

    /* PTYPE bit 9: Code Type (INTRA/INTER) */
    state->coding_type = (data_reg>> (H263_STREAM_PTYPE_LEN-9)) & 0x1;

    /* PTYPE bit 10~13: Annex D/E/F/G, not supported */
    if((data_reg>>(H263_STREAM_PTYPE_LEN-13)) & 0xf) {
        return SAMPLE_STATUS_NOTSUPPORTED_ERR;
    }

    /* Read PQUANT */
    data_reg = 0;
    if(!read_stream_bits(stream, H263_STREAM_PQUANT_LEN, &data_reg)) {
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }
    state->pquant = (int)data_reg;

    /* Read CPM: CPM==1 not supported */
    data_reg = 0;
    if(!read_stream_bits(stream, H263_STREAM_CPM_LEN, &data_reg)) {
        return SAMPLE_STATUS_NOTSUPPORTED_ERR;
    }
        
    /* Read PEI */
    do {
        data_reg = 0;
        if(!read_stream_bits(stream, H263_STREAM_PEI_LEN, &data_reg)) {
            return SAMPLE_STATUS_BITSTREAM_ERR;
        }

        if(1 == data_reg) {
            /* Discard PSUPP: not supported */
            if(!read_stream_bits(stream, H263_STREAM_PSUPP_LEN, &data_reg)) {
                return SAMPLE_STATUS_BITSTREAM_ERR;
            }
        }

    } while(1 == data_reg);

    return SAMPLE_STATUS_NOERR;
}

/******************************************************************************
// Function Name:   parse_gob_header_h263
//
// Description:     Parse GOB header informations from input stream
//
// Parameter:
// Input:
//        stream:   Pointer to sample_bitstream structure holding input stream
//         state:   Pointer to h263_dec_state structure holding decode status
// Output:
//        stream:   Pointer to sample_bitstream structure holding input stream
//                  Stream position pointer is updated to next available byte
//         state:   Pointer to h263_dec_state structure holding decode status
//
// Return:
// sample_status:   
//  [SAMPLE_STATUS_NOERR]:            Succeeds
//  [SAMPLE_STATUS_BITSTREAM_ERR]:    Stream parse error occurs
//  [SAMPLE_STATUS_NOTSUPPORTED_ERR]: Stream syntax is not supported
//
// Notes:   None
******************************************************************************/
sample_status parse_gob_header_h263(sample_bitstream  *stream, 
                                    h263_dec_state    *state)
{
    unsigned int data_reg = 0;

    /* Read GBSC */
    if(!read_stream_bits(stream, H263_STREAM_GBSC_LEN, &data_reg)) {
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }

    if(H263_STREAM_GBSC != data_reg) {
        if(!STREAM_CHECK_BYTE_ALIGN(stream)) {
            /* Discard GSTUF */
            STREAM_BYTE_ALIGN(stream);
            if(!read_stream_bits(stream, H263_STREAM_GBSC_LEN, &data_reg) 
                || H263_STREAM_GBSC != data_reg) {
                return SAMPLE_STATUS_SYNCNOTFOUND_ERR;
            }
        } else {
            return SAMPLE_STATUS_SYNCNOTFOUND_ERR;
        }
    }

    /* Read GN */
    if(!read_stream_bits(stream, H263_STREAM_GN_LEN, &data_reg)||0==data_reg) {
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }
    
    /* No GSBI, GSBI only exists when CPM=1, not supported here */

    /* Skip GFID */
    if(!skip_stream_bits(stream, H263_STREAM_GFID_LEN)) {
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }

    /* Read GQUANT */
    if(!read_stream_bits(stream,H263_STREAM_GQUANT_LEN, &data_reg)) {
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }
    state->quant = data_reg;

    return SAMPLE_STATUS_NOERR;
}

/******************************************************************************
// Function Name:   parse_mb_header_h263
//
// Description:     Parse MB header informations from input stream
//
// Parameter:
// Input:
//        stream:   Pointer to sample_bitstream structure holding input stream
//         state:   Pointer to h263_dec_state structure holding decode status
// Output:
//        stream:   Pointer to sample_bitstream structure holding input stream
//                  Stream position pointer is updated to next available byte
//         state:   Pointer to h263_dec_state structure holding decode status
//
// Return:
// sample_status:   
//  [SAMPLE_STATUS_NOERR]:            Succeeds
//  [SAMPLE_STATUS_BITSTREAM_ERR]:    Stream parsing error occurs
//  [SAMPLE_STATUS_NOTSUPPORTED_ERR]: Stream syntax is not supported by 
//									  current sample decoder
//
// Notes:   None
******************************************************************************/
sample_status parse_mb_header_h263(sample_bitstream    *stream, 
                                   h263_dec_state      *state)
{
    unsigned int data_reg = 0;
    short mcbpc = 0, cbpy = 0;

    /* Read COD -- only exists in non-I Picture  */
    if(H263_I_PICTURE != state->coding_type) {

        if(!read_stream_bits(stream, H263_STREAM_COD_LEN, &data_reg)) {
            return SAMPLE_STATUS_BITSTREAM_ERR;
        }

        state->cod = data_reg;

        if(state->cod) { /* Not Coded */
            return SAMPLE_STATUS_NOERR;
        }
    }

    /* Read MCBPC */
    data_reg = 0;
    if(H263_I_PICTURE == state->coding_type) {  

        /* I-Picture */
        if(!preview_stream_bits(stream, 6, &data_reg)) {
            return SAMPLE_STATUS_BITSTREAM_ERR;
        }

        mcbpc = mcbpc_tbl_ipic_h263[data_reg];

        if(data_reg == 0) {

            /* Stuffing bits */
            if(!skip_stream_bits(stream, 9)) {
                return SAMPLE_STATUS_BITSTREAM_ERR;
            }

        } else {
            skip_stream_bits(stream, MCBPC_NUMBITS(mcbpc));
        }

    } else {

        /* P-Picture */
        if(!preview_stream_bits(stream, 9, &data_reg)) {
            return SAMPLE_STATUS_BITSTREAM_ERR;
        }

        if(0 == data_reg) {
            /* More than 9 bits, continue reading */
            skip_stream_bits(stream, 9);
            if(!preview_stream_bits(stream, 4, &data_reg)) {
                return SAMPLE_STATUS_BITSTREAM_ERR;
            }
            mcbpc = mcbpc_tbl2_ppic_h263[data_reg];

            if(mcbpc == 0) {  /* Invalid code */
                return SAMPLE_STATUS_BITSTREAM_ERR;
            }

            skip_stream_bits(stream, MCBPC_NUMBITS(mcbpc)-9);

        } else {
            mcbpc = mcbpc_tbl1_ppic_h263[data_reg];
            skip_stream_bits(stream, MCBPC_NUMBITS(mcbpc));
        }
    }

    state->mb_type = MCBPC_MBTYPE(mcbpc);
    state->cbpc    = MCBPC_CBPC(mcbpc);
    if(H263_STUFFING == state->mb_type) {
        /* MB-type is stuffing, no more header info */
        return SAMPLE_STATUS_NOERR;
    }

    /* MODB, CBPB not supported */

    /* CBPY */
    data_reg = 0;
    if(!preview_stream_bits(stream, 6, &data_reg)) {
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }
    cbpy = cbpy_tbl_h263[data_reg];
    if(0 == cbpy)  { /* Invalid Code */
        return SAMPLE_STATUS_BITSTREAM_ERR;
    }
    if(H263_INTRA == state->mb_type || H263_INTRA_Q == state->mb_type) {
        state->cbpy = CBPY_INTRA(cbpy);
    } else {
        state->cbpy = CBPY_INTER(cbpy);
    }
    skip_stream_bits(stream, CBPY_NUMBITS(cbpy));

    /* DQUANT -- only exists in +Q mode */
    if(H263_INTER_Q == state->mb_type || H263_INTRA_Q  == state->mb_type || 
       H263_INTER4V_Q == state->mb_type) {
        data_reg = 0;
        if(!read_stream_bits(stream, H263_STREAM_DQUANT_LEN, &data_reg)) {
            return SAMPLE_STATUS_BITSTREAM_ERR;
        }
        state->dquant = dquant_mb_h263[data_reg];
    }

    return SAMPLE_STATUS_NOERR;
}


/* EOF */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
337p亚洲精品色噜噜| 日韩欧美视频一区| 日本欧美肥老太交大片| 欧美国产亚洲另类动漫| 欧美亚一区二区| 成人午夜碰碰视频| 日本中文字幕一区| 亚洲精品国产无天堂网2021| 精品国产91亚洲一区二区三区婷婷| 一本色道a无线码一区v| 国产一区二区三区久久久| 亚洲电影中文字幕在线观看| 欧美激情一区二区三区不卡| 欧美成人一区二区三区| 欧美日韩一区 二区 三区 久久精品| 丁香网亚洲国际| 看片的网站亚洲| 偷拍与自拍一区| 亚洲欧美乱综合| 亚洲国产精品传媒在线观看| 欧美精品一区二区在线播放| 777欧美精品| 欧美三级电影在线看| eeuss鲁片一区二区三区在线观看| 韩国成人精品a∨在线观看| 午夜精品福利一区二区蜜股av| 尤物在线观看一区| 亚洲色图在线看| 国产精品久久久久久久岛一牛影视 | 亚洲成人一区二区| 亚洲欧美国产毛片在线| 国产欧美日韩视频在线观看| 久久综合色综合88| 精品国偷自产国产一区| 日韩欧美一区中文| 日韩午夜中文字幕| 欧美一级二级在线观看| 91精品午夜视频| 日韩丝袜美女视频| 日韩午夜在线观看| 欧美mv日韩mv亚洲| 精品国产乱码久久久久久老虎 | 欧美日韩久久久久久| 欧美影院午夜播放| 欧美日韩一区二区三区视频 | 欧美性感一类影片在线播放| 欧洲精品在线观看| 欧美色中文字幕| 欧美美女视频在线观看| 欧美丰满一区二区免费视频| 欧美一区中文字幕| 精品国产青草久久久久福利| 久久综合视频网| 中文字幕不卡一区| 亚洲欧美区自拍先锋| 亚洲黄色片在线观看| 亚洲va欧美va人人爽| 男人操女人的视频在线观看欧美| 麻豆精品久久久| 国产成人丝袜美腿| 色呦呦国产精品| 884aa四虎影成人精品一区| 欧美大片日本大片免费观看| 久久久久久久久久美女| 国产精品视频一二三| 亚洲精品美腿丝袜| 日韩影院免费视频| 国产精品综合久久| 日本福利一区二区| 欧美一卡二卡在线观看| 国产日韩欧美电影| 一区二区三区不卡视频在线观看| 日韩制服丝袜先锋影音| 国产麻豆精品久久一二三| jizz一区二区| 91精品国产一区二区三区蜜臀| 久久久www免费人成精品| 国产原创一区二区三区| 成人app软件下载大全免费| 欧美色视频一区| 久久久久亚洲综合| 亚洲午夜免费视频| 国产在线国偷精品产拍免费yy| av一区二区三区| 欧美一区二区三区在线观看视频 | 97久久超碰国产精品| 欧美日韩国产首页| 国产三级一区二区三区| 精品动漫一区二区三区在线观看| 亚洲精品日韩一| 国产在线精品不卡| 欧美三级电影网| 国产精品久久久久四虎| 丝袜美腿亚洲色图| 91丨porny丨蝌蚪视频| 欧美成人aa大片| 一个色在线综合| 国产91清纯白嫩初高中在线观看| 精品污污网站免费看| 日本一区二区免费在线观看视频| 肉丝袜脚交视频一区二区| 91亚洲精品久久久蜜桃网站| 久久伊人中文字幕| 五月综合激情婷婷六月色窝| 成人18精品视频| 久久综合资源网| 日韩黄色片在线观看| 在线免费观看一区| 国产精品国产三级国产普通话三级| 免费在线观看精品| 欧美日韩国产精选| 亚洲乱码精品一二三四区日韩在线| 国产一区欧美二区| 欧美一二区视频| 天天亚洲美女在线视频| 91福利社在线观看| 综合在线观看色| 成人精品视频一区二区三区尤物| 日韩精品一区二区三区视频播放| 午夜精品久久久久久久久久久| 色婷婷香蕉在线一区二区| 国产精品福利电影一区二区三区四区 | 久久久久久久久蜜桃| 美女网站在线免费欧美精品| 欧美高清你懂得| 亚洲成人激情自拍| 精品视频全国免费看| 夜夜夜精品看看| 色呦呦日韩精品| 亚洲男同1069视频| 91老司机福利 在线| 亚洲四区在线观看| 成人网页在线观看| 一区在线中文字幕| 91在线云播放| 伊人色综合久久天天| 色婷婷激情久久| 亚洲综合色视频| 欧美日韩亚洲综合在线| 无码av免费一区二区三区试看| 欧美久久一区二区| 日韩成人免费电影| 日韩精品一区二区三区在线| 精品在线一区二区三区| 久久一二三国产| 成人网在线播放| 亚洲精品日韩一| 欧美精品丝袜中出| 日本成人在线一区| 亚洲精品一区二区三区香蕉| 国产麻豆91精品| 中文字幕一区免费在线观看| 91日韩一区二区三区| 亚洲综合丝袜美腿| 欧美一区二区三区视频免费| 久久66热偷产精品| 国产精品全国免费观看高清| 91蝌蚪porny成人天涯| 亚洲一二三区在线观看| 欧美一区二区三区四区久久| 极品尤物av久久免费看| 国产精品拍天天在线| 91搞黄在线观看| 免费成人在线播放| 国产欧美日韩另类视频免费观看| 91在线一区二区| 午夜国产精品一区| 欧美成人精品高清在线播放| 成人永久aaa| 婷婷亚洲久悠悠色悠在线播放| 欧美r级在线观看| 91免费国产视频网站| 日本不卡在线视频| 中文在线免费一区三区高中清不卡| 色婷婷久久99综合精品jk白丝| 五月激情六月综合| 国产欧美精品一区| 欧洲国产伦久久久久久久| 免费黄网站欧美| 亚洲柠檬福利资源导航| 欧美一区二区成人| 91麻豆免费观看| 精品一区中文字幕| 亚洲精品成人在线| 欧美成人福利视频| 色噜噜狠狠色综合中国| 韩国av一区二区三区在线观看| 亚洲欧美日韩电影| 337p粉嫩大胆噜噜噜噜噜91av| 一本久道久久综合中文字幕| 国内成人免费视频| 亚洲一区二区精品视频| 国产日韩欧美不卡| 6080日韩午夜伦伦午夜伦| a美女胸又www黄视频久久| 男人的j进女人的j一区| 一区二区在线看| 国产精品日产欧美久久久久| 日韩精品一区二区三区四区| 欧美视频日韩视频在线观看|