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

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

?? macroblock.c

?? 圖象壓縮程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************** * macroblock.c: h264 decoder library ***************************************************************************** * Copyright (C) 2003 Laurent Aimar * $Id: macroblock.c,v 1.3 2003/12/12 22:41:39 fenrir Exp $ * * Authors: Laurent Aimar <fenrir@via.ecp.fr> * * 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., 59 Temple Place - Suite 330, Boston, MA  02111, USA. *****************************************************************************/#include <stdlib.h>#include <stdio.h>#include <string.h>#include <stdint.h>#include "../core/common.h"#include "../core/vlc.h"#include "vlc.h"#include "macroblock.h"static const uint8_t block_idx_x[16] ={    0, 1, 0, 1, 2, 3, 2, 3, 0, 1, 0, 1, 2, 3, 2, 3};static const uint8_t block_idx_y[16] ={    0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3};static const uint8_t block_idx_xy[4][4] ={    { 0, 2, 8,  10},    { 1, 3, 9,  11},    { 4, 6, 12, 14},    { 5, 7, 13, 15}};static const int golomb_to_intra4x4_cbp[48]={    47, 31, 15,  0, 23, 27, 29, 30,  7, 11, 13, 14, 39, 43, 45, 46,    16,  3,  5, 10, 12, 19, 21, 26, 28, 35, 37, 42, 44,  1,  2,  4,     8, 17, 18, 20, 24,  6,  9, 22, 25, 32, 33, 34, 36, 40, 38, 41};static const int golomb_to_inter_cbp[48]={     0, 16,  1,  2,  4,  8, 32,  3,  5, 10, 12, 15, 47,  7, 11, 13,    14,  6,  9, 31, 35, 37, 42, 44, 33, 34, 36, 40, 39, 43, 45, 46,    17, 18, 20, 24, 19, 21, 26, 28, 23, 27, 29, 30, 22, 25, 38, 41};static const int i_chroma_qp_table[52] ={     0,  1,  2,  3,  4,  5,  6,  7,  8,  9,    10, 11, 12, 13, 14, 15, 16, 17, 18, 19,    20, 21, 22, 23, 24, 25, 26, 27, 28, 29,    29, 30, 31, 32, 32, 33, 34, 34, 35, 35,    36, 36, 37, 37, 37, 38, 38, 38, 39, 39,    39, 39};void x264_mb_partition_ref_set( x264_macroblock_t *mb, int i_list, int i_part, int i_ref ){    int x,  y;    int w,  h;    int dx, dy;    x264_mb_partition_getxy( mb, i_part, 0, &x, &y );    if( mb->i_partition == D_16x16 )    {        w = 4; h = 4;    }    else if( mb->i_partition == D_16x8 )    {        w = 4; h = 2;    }    else if( mb->i_partition == D_8x16 )    {        w = 2; h = 4;    }    else    {        /* D_8x8 */        w = 2; h = 2;    }    for( dx = 0; dx < w; dx++ )    {        for( dy = 0; dy < h; dy++ )        {            mb->partition[x+dx][y+dy].i_ref[i_list] = i_ref;        }    }}void x264_mb_partition_mv_set( x264_macroblock_t *mb, int i_list, int i_part, int i_sub, int mv[2] ){    int x,  y;    int w,  h;    int dx, dy;    x264_mb_partition_getxy( mb, i_part, i_sub, &x, &y );    x264_mb_partition_size ( mb, i_part, i_sub, &w, &h );    for( dx = 0; dx < w; dx++ )    {        for( dy = 0; dy < h; dy++ )        {            mb->partition[x+dx][y+dy].mv[i_list][0] = mv[0];            mb->partition[x+dx][y+dy].mv[i_list][1] = mv[1];        }    }}int x264_macroblock_read_cabac( x264_t *h, bs_t *s, x264_macroblock_t *mb ){    return -1;}static int x264_macroblock_decode_ipcm( x264_t *h, bs_t *s, x264_macroblock_t *mb ){    /* TODO */    return -1;}#define BLOCK_INDEX_CHROMA_DC   (-1)#define BLOCK_INDEX_LUMA_DC     (-2)static int bs_read_vlc( bs_t *s, x264_vlc_table_t *table ){    int i_nb_bits;    int i_value = 0;    int i_bits;    int i_index;    int i_level = 0;    i_index = bs_show( s, table->i_lookup_bits );    if( i_index >= table->i_lookup )    {        return( -1 );    }    i_value = table->lookup[i_index].i_value;    i_bits  = table->lookup[i_index].i_size;    while( i_bits < 0 )    {        i_level++;        if( i_level > 5 )        {            return( -1 );        // FIXME what to do ?        }        bs_skip( s, table->i_lookup_bits );        i_nb_bits = -i_bits;        i_index = bs_show( s, i_nb_bits ) + i_value;        if( i_index >= table->i_lookup )        {            return( -1 );        }        i_value = table->lookup[i_index].i_value;        i_bits  = table->lookup[i_index].i_size;    }    bs_skip( s, i_bits );    return( i_value );}static int block_residual_read_cavlc( x264_t *h, bs_t *s, x264_macroblock_t *mb,                                      int i_idx, int *l, int i_count ){    int i;    int level[16], run[16];    int i_coeff;    int i_total, i_trailing;    int i_suffix_length;    int i_zero_left;    for( i = 0; i < i_count; i++ )    {        l[i] = 0;    }    /* total/trailing */    if( i_idx == BLOCK_INDEX_CHROMA_DC )    {        int i_tt;        if( ( i_tt = bs_read_vlc( s, h->x264_coeff_token_lookup[4] )) < 0 )        {            return -1;        }        i_total = i_tt / 4;        i_trailing = i_tt % 4;    }    else    {        /* x264_mb_predict_non_zero_code return 0 <-> (16+16+1)>>1 = 16 */        static const int ct_index[17] = {0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,3 };        int nC;        int i_tt;        if( i_idx == BLOCK_INDEX_LUMA_DC )        {            nC = x264_mb_predict_non_zero_code( h, mb, 0 );        }        else        {            nC = x264_mb_predict_non_zero_code( h, mb, i_idx );        }        if( ( i_tt = bs_read_vlc( s, h->x264_coeff_token_lookup[ct_index[nC]] ) ) < 0 )        {            return -1;        }        i_total = i_tt / 4;        i_trailing = i_tt % 4;    }    if( i_idx >= 0 )    {        mb->block[i_idx].i_non_zero_count = i_total;    }    if( i_total <= 0 )    {        return 0;    }    i_suffix_length = i_total > 10 && i_trailing < 3 ? 1 : 0;    for( i = 0; i < i_trailing; i++ )    {        level[i] = 1 - 2 * bs_read1( s );    }    for( ; i < i_total; i++ )    {        int i_prefix;        int i_level_code;        i_prefix = bs_read_vlc( s, h->x264_level_prefix_lookup );        if( i_prefix == -1 )        {            return -1;        }        else if( i_prefix < 14 )        {            if( i_suffix_length > 0 )            {                i_level_code = (i_prefix << i_suffix_length) + bs_read( s, i_suffix_length );            }            else            {                i_level_code = i_prefix;            }        }        else if( i_prefix == 14 )        {            if( i_suffix_length > 0 )            {                i_level_code = (i_prefix << i_suffix_length) + bs_read( s, i_suffix_length );            }            else            {                i_level_code = i_prefix + bs_read( s, 4 );            }        }        else /* if( i_prefix == 15 ) */        {            i_level_code = (i_prefix << i_suffix_length) + bs_read( s, 12 );            if( i_suffix_length == 0 )            {                i_level_code += 15;            }        }        if( i == i_trailing && i_trailing < 3 )        {            i_level_code += 2;        }        /* Optimise */        level[i] = i_level_code&0x01 ? -((i_level_code+1)/2) : (i_level_code+2)/2;        if( i_suffix_length == 0 )        {            i_suffix_length++;        }        if( abs( level[i] ) > ( 3 << ( i_suffix_length - 1 ) ) && i_suffix_length < 6 )        {            i_suffix_length++;        }    }    if( i_total < i_count )    {        if( i_idx == BLOCK_INDEX_CHROMA_DC )        {            i_zero_left = bs_read_vlc( s, h->x264_total_zeros_dc_lookup[i_total-1] );        }        else        {            i_zero_left = bs_read_vlc( s, h->x264_total_zeros_lookup[i_total-1] );        }        if( i_zero_left < 0 )        {            return -1;        }    }    else    {        i_zero_left = 0;    }    for( i = 0; i < i_total - 1; i++ )    {        if( i_zero_left <= 0 )        {            break;        }        run[i] = bs_read_vlc( s, h->x264_run_before_lookup[X264_MIN( i_zero_left - 1, 6 )] );        if( run[i] < 0 )        {            return -1;        }        i_zero_left -= run[i];    }    if( i_zero_left < 0 )    {        return -1;    }    for( ; i < i_total - 1; i++ )    {        run[i] = 0;    }    run[i_total-1] = i_zero_left;    i_coeff = -1;    for( i = i_total - 1; i >= 0; i-- )    {        i_coeff += run[i] + 1;        l[i_coeff] = level[i];    }    return 0;}static inline void array_zero_set( int *l, int i_count ){    int i;    for( i = 0; i < i_count; i++ )    {        l[i] = 0;    }}int x264_macroblock_read_cavlc( x264_t *h, bs_t *s, x264_macroblock_t *mb ){    int i_mb_i_offset;    int i_mb_p_offset;    int b_sub_ref0 = 0;    int i_type;    int i;    /* read the mb type */    switch( h->sh.i_type )    {        case SLICE_TYPE_I:            i_mb_p_offset = 0;  /* shut up gcc */            i_mb_i_offset = 0;            break;        case SLICE_TYPE_P:            i_mb_p_offset = 0;            i_mb_i_offset = 5;            break;        case SLICE_TYPE_B:            i_mb_p_offset = 23;            i_mb_i_offset = 23 + 5;            break;        default:            fprintf( stderr, "internal error or slice unsupported\n" );            return -1;    }    i_type = bs_read_ue( s );    if( i_type < i_mb_i_offset )    {        if( i_type < i_mb_p_offset )        {            fprintf( stderr, "unsupported mb type(B*)\n" );            /* TODO for B frame */            return -1;        }        else        {            i_type -= i_mb_p_offset;            if( i_type == 0 )            {                mb->i_type = P_L0;                mb->i_partition = D_16x16;            }            else if( i_type == 1 )            {                mb->i_type = P_L0;                mb->i_partition = D_16x8;            }            else if( i_type == 2 )            {                mb->i_type = P_L0;                mb->i_partition = D_8x16;            }            else if( i_type == 3 || i_type == 4 )            {                mb->i_type = P_8x8;                mb->i_partition = D_8x8;                b_sub_ref0 = i_type == 4 ? 1 : 0;            }            else            {                fprintf( stderr, "invalid mb type\n" );                return -1;            }        }    }    else    {        i_type -= i_mb_i_offset;        if( i_type == 0 )        {            mb->i_type = I_4x4;        }        else if( i_type < 25 )        {            mb->i_type = I_16x16;            mb->i_intra16x16_pred_mode = (i_type - 1)%4;            mb->i_cbp_chroma = ( (i_type-1) / 4 )%3;            mb->i_cbp_luma   = ((i_type-1) / 12) ? 0x0f : 0x00;        }        else if( i_type == 25 )        {            mb->i_type = I_PCM;        }        else        {            fprintf( stderr, "invalid mb type (%d)\n", i_type );            return -1;        }    }    if( mb->i_type == I_PCM )    {        return x264_macroblock_decode_ipcm( h, s, mb );    }    if( IS_INTRA( mb->i_type ) )    {        if( mb->i_type == I_4x4 )        {            for( i = 0; i < 16; i++ )            {                int b_coded;                b_coded = bs_read1( s );                if( b_coded )                {                    mb->block[i].i_intra4x4_pred_mode = x264_mb_predict_intra4x4_mode( h, mb, i );                }                else                {                    int i_predicted_mode = x264_mb_predict_intra4x4_mode( h, mb, i );                    int i_mode = bs_read( s, 3 );                    if( i_mode >= i_predicted_mode )                    {                        mb->block[i].i_intra4x4_pred_mode = i_mode + 1;                    }                    else                    {                        mb->block[i].i_intra4x4_pred_mode = i_mode;                    }                }            }        }        mb->i_chroma_pred_mode = bs_read_ue( s );    }    else if( mb->i_type == P_8x8 || mb->i_type == B_8x8)    {        /* FIXME won't work for B_8x8 */        for( i = 0; i < 4; i++ )        {            int i_sub_partition;            i_sub_partition = bs_read_ue( s );            switch( i_sub_partition )            {                case 0:                    mb->i_sub_partition[i] = D_L0_8x8;                    break;                case 1:                    mb->i_sub_partition[i] = D_L0_8x4;                    break;                case 2:                    mb->i_sub_partition[i] = D_L0_4x8;                    break;                case 3:                    mb->i_sub_partition[i] = D_L0_4x4;                    break;                default:                    fprintf( stderr, "invalid i_sub_partition\n" );                    return -1;            }        }        for( i = 0; i < 4; i++ )        {            int i_ref;            i_ref = b_sub_ref0 ? 0 : bs_read_te( s, h->sh.i_num_ref_idx_l0_active - 1 );            x264_mb_partition_ref_set( mb, 0, i, i_ref );        }        for( i = 0; i < 4; i++ )        {            int i_sub;            int i_ref;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男女毛片无遮挡| 亚洲综合在线视频| 亚洲欧洲日韩综合一区二区| 亚洲国产精品自拍| 国产精品白丝jk白祙喷水网站 | 亚洲成人动漫在线观看| 裸体健美xxxx欧美裸体表演| 99久久免费精品高清特色大片| 欧美色男人天堂| 麻豆精品一区二区| 国产精品一区在线观看乱码| 欧美日韩一区二区不卡| 亚洲国产电影在线观看| 免费一级片91| 欧美影视一区二区三区| 国产精品国产成人国产三级| 青青草成人在线观看| 色丁香久综合在线久综合在线观看| 欧美成人激情免费网| 亚洲午夜三级在线| 一本久久a久久免费精品不卡| 日本一区二区三区高清不卡 | 看国产成人h片视频| 欧美性生活影院| 欧美日韩精品福利| 亚洲人xxxx| 成人听书哪个软件好| 精品国产99国产精品| 喷水一区二区三区| 51精品秘密在线观看| 亚洲成a人v欧美综合天堂| 色偷偷久久一区二区三区| 国产精品久久久久久亚洲毛片| 韩国一区二区视频| 欧美成人激情免费网| 美国毛片一区二区三区| 6080yy午夜一二三区久久| 午夜影院久久久| 欧美日韩中文另类| 一级精品视频在线观看宜春院 | 国产真实乱偷精品视频免| 日韩精品最新网址| 久久国产福利国产秒拍| 精品日韩欧美在线| 国产精品一区2区| 久久蜜臀中文字幕| 成人免费不卡视频| 18成人在线观看| 一本色道久久综合亚洲91| 亚洲激情图片qvod| 欧美日韩高清在线播放| 日本不卡的三区四区五区| 日韩欧美国产麻豆| 国产98色在线|日韩| 国产精品久久久久久久久动漫 | 91九色最新地址| 亚洲妇熟xx妇色黄| 91 com成人网| 国产精品中文字幕一区二区三区| 中文成人av在线| 91麻豆免费看片| 亚洲6080在线| www亚洲一区| 成人avav影音| 亚洲h在线观看| 久久夜色精品国产噜噜av| 成人黄色国产精品网站大全在线免费观看 | 久久老女人爱爱| 91亚洲精品久久久蜜桃网站| 亚洲综合成人在线视频| 欧美mv和日韩mv的网站| 97se亚洲国产综合自在线不卡| 午夜伊人狠狠久久| 亚洲日穴在线视频| 午夜精品影院在线观看| 蜜臀久久久99精品久久久久久| 国产在线播精品第三| 亚洲激情欧美激情| 国产综合久久久久久鬼色 | 欧美在线视频你懂得| 精品国产乱码久久久久久图片 | 久久午夜电影网| 成人综合激情网| 天天av天天翘天天综合网色鬼国产| 国产拍欧美日韩视频二区| 欧美无人高清视频在线观看| 韩国理伦片一区二区三区在线播放 | 中文字幕日韩欧美一区二区三区| 91福利视频久久久久| 国产麻豆日韩欧美久久| 亚洲最新在线观看| 欧美激情资源网| 欧美一区二区三区男人的天堂| 99国产精品久| 久久国产视频网| 亚洲地区一二三色| 中文字幕一区二| 国产区在线观看成人精品| 欧美一级专区免费大片| 色琪琪一区二区三区亚洲区| 国产91精品欧美| 精品亚洲免费视频| 亚洲图片一区二区| 亚洲视频一二三| 国产精品网站一区| 久久精品夜夜夜夜久久| 欧美电影免费观看高清完整版在 | a级高清视频欧美日韩| 国精产品一区一区三区mba桃花| 一区二区在线观看av| 国产精品欧美久久久久一区二区| 日韩美女主播在线视频一区二区三区| 欧美人牲a欧美精品| 色狠狠色噜噜噜综合网| 色综合中文字幕国产| 国产剧情一区二区| 国产乱人伦偷精品视频不卡| 理论电影国产精品| 久久国产精品色婷婷| 美国三级日本三级久久99| 日韩国产欧美三级| 亚洲成人动漫在线免费观看| 亚洲国产va精品久久久不卡综合| 香蕉加勒比综合久久 | 国产精品理论片| 中文字幕精品一区二区三区精品| 欧美精品一区二区精品网| 久久综合av免费| 久久亚洲影视婷婷| 国产精品午夜在线| 亚洲丝袜美腿综合| 亚洲综合激情小说| 奇米综合一区二区三区精品视频 | 欧美一区午夜精品| 欧美一区二区三区的| 精品美女一区二区三区| 国产欧美精品一区二区色综合朱莉| 2023国产精品自拍| 国产精品剧情在线亚洲| 一区av在线播放| 久久精品久久综合| 成人福利视频网站| 色综合久久中文字幕综合网| 欧美老肥妇做.爰bbww| 精品少妇一区二区三区| 中文字幕一区二区三区蜜月| 亚洲国产精品嫩草影院| 蜜臀av国产精品久久久久| 国产69精品久久777的优势| 91在线免费视频观看| 在线不卡欧美精品一区二区三区| 精品国产露脸精彩对白| 国产精品嫩草影院com| 亚洲二区视频在线| 国产伦精品一区二区三区视频青涩| 成人av在线影院| 91精品福利在线一区二区三区 | 岛国av在线一区| 在线视频亚洲一区| 精品国产乱码久久久久久闺蜜| 国产精品久久久久天堂| 日本不卡视频在线| 91在线免费看| 久久精品夜夜夜夜久久| 亚洲成人7777| a在线欧美一区| 亚洲精品在线观| 亚洲夂夂婷婷色拍ww47| 国产麻豆精品theporn| 在线精品视频小说1| 国产亚洲精品bt天堂精选| 亚洲一区二区三区影院| 成a人片亚洲日本久久| 精品国偷自产国产一区| 香蕉加勒比综合久久| aa级大片欧美| 26uuu久久综合| 日精品一区二区三区| 91同城在线观看| 国产性做久久久久久| 奇米色一区二区| 欧美日韩综合在线| 亚洲另类在线一区| 国产a精品视频| 精品少妇一区二区三区日产乱码 | 国产精品天干天干在观线| 午夜精品一区二区三区电影天堂 | 成人激情小说乱人伦| 日韩三级在线观看| 亚洲午夜电影网| 91欧美一区二区| 中文字幕的久久| 国产福利91精品一区二区三区| 欧美日韩国产高清一区| 一区二区三国产精华液| 色婷婷国产精品久久包臀| 国产精品乱码一区二三区小蝌蚪| 国产福利一区二区三区| 国产午夜久久久久| 经典一区二区三区|