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

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

?? block.c

?? 經過開源的H.264壓縮算法代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*****************************************************************************
*
*  T264 AVC CODEC
*
*  Copyright(C) 2004-2005 llcc <lcgate1@yahoo.com.cn>
*               2004-2005 visionany <visionany@yahoo.com.cn>
*   2005.2.24 CloudWu<sywu@sohu.com>	added support for B-frame MB16x16 support 
*   2005.3.2 CloudWu<sywu@sohu.com>	added support for B-frame MB16x8 and MB8x16,MB8x8 support
*
*  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-1307 USA
*
****************************************************************************/

#include "stdio.h"
#include "T264.h"
#include "utility.h"
#include "memory.h"
#include "assert.h"
#include "block.h"

/* intra */

static void __inline
T264dec_mb_decode_predict_i16x16_y(T264_t* t, uint8_t mode, uint8_t* pred, uint8_t* src)
{
    DECLARE_ALIGNED_MATRIX(topcache, 1, 16 + CACHE_SIZE, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX(leftcache, 1, 16 + CACHE_SIZE, uint8_t, CACHE_SIZE);

    uint8_t* p;
    int32_t i;
    uint8_t* top, *left;

    top  =  &topcache[CACHE_SIZE];
    left = &leftcache[CACHE_SIZE];

    if (mode == Intra_16x16_DC)
    {
        if ((t->mb.mb_neighbour & (MB_LEFT | MB_TOP)) == (MB_LEFT | MB_TOP))
        {
            mode = Intra_16x16_DC;

            p = src - t->edged_stride;
            for(i = 0 ; i < 16 ; i ++)
            {
                top[i] = p[i];
            }

            p = src - 1;
            for(i = 0 ; i < 16 ; i ++)
            {
                left[i] = p[0];
                p += t->edged_stride;
            }
        }
        else if(t->mb.mb_neighbour & MB_LEFT)
        {
            mode = Intra_16x16_DCLEFT;

            p = src - 1;

            for(i = 0 ; i < 16 ; i ++)
            {
                left[i] = p[0];
                p += t->edged_stride;
            }
        }
        else if(t->mb.mb_neighbour & MB_TOP)
        {
            mode = Intra_16x16_DCTOP;

            p = src - t->edged_stride;
            for(i = 0 ; i < 16 ; i ++)
            {
                top[i] = p[i];
            }
        }
        else
        {
            mode = Intra_16x16_DC128;
        }
    }
    else
    {
        switch(mode)
        {
        case Intra_16x16_TOP:
            p = src - t->edged_stride;
            for(i = 0 ; i < 16 ; i ++)
            {
                top[i] = p[i];
            }
            break;
        case Intra_16x16_LEFT:
            p = src - 1;

            for(i = 0 ; i < 16 ; i ++)
            {
                left[i] = p[0];
                p += t->edged_stride;
            }
            break;
        case Intra_16x16_PLANE:
            p = src - t->edged_stride;
            for(i = -1 ; i < 16 ; i ++)
            {
                top[i] = p[i];
            }

            p -= 1;
            for(i = -1 ; i < 16 ; i ++)
            {
                left[i] = p[0];
                p += t->edged_stride;
            }
            break;
        default:
            assert(0);
            break;
        }
    }

    t->pred16x16[mode](pred, 16, top, left);
}


static void __inline
T264dec_mb_decode_predict_i4x4_y(T264_t* t, uint8_t idx, uint8_t mode, uint8_t* pred, uint8_t* src)
{
    DECLARE_ALIGNED_MATRIX(topcache,  8 + CACHE_SIZE, 1, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX(leftcache, 4 + CACHE_SIZE, 1, uint8_t, CACHE_SIZE);

    static const int32_t neighbour[] =
    {
        0, MB_LEFT, MB_LEFT, MB_LEFT,
        MB_TOP| MB_TOPRIGHT, MB_LEFT| MB_TOP,              MB_LEFT |MB_TOP| MB_TOPRIGHT, MB_LEFT| MB_TOP,
        MB_TOP| MB_TOPRIGHT, MB_LEFT| MB_TOP| MB_TOPRIGHT, MB_LEFT |MB_TOP| MB_TOPRIGHT, MB_LEFT| MB_TOP,
        MB_TOP| MB_TOPRIGHT, MB_LEFT| MB_TOP,              MB_LEFT |MB_TOP| MB_TOPRIGHT, MB_LEFT| MB_TOP
    };
    static const int32_t fix[] =
    {
        ~0, ~0, ~0, ~0,
        ~0, ~MB_TOPRIGHT, ~0, ~MB_TOPRIGHT,
        ~0, ~0, ~0, ~MB_TOPRIGHT,
        ~0, ~MB_TOPRIGHT, ~0, ~MB_TOPRIGHT
    };

    uint8_t* p;
    int32_t i;
    uint8_t* top  = &topcache[CACHE_SIZE];
    uint8_t* left = &leftcache[CACHE_SIZE];

    if (mode == Intra_4x4_DC)
    {
        int32_t mb_neighbour = (t->mb.mb_neighbour| neighbour[idx]) & fix[idx];
        if ((mb_neighbour & (MB_LEFT | MB_TOP)) == (MB_LEFT | MB_TOP))
        {
            mode = Intra_4x4_DC;

            p = src - t->edged_stride;
            for(i = 0 ; i < 4 ; i ++)
            {
                top[i] = p[i];
            }

            p = src - 1;
            for(i = 0 ; i < 4 ; i ++)
            {
                left[i] = p[0];
                p += t->edged_stride;
            }
        }
        else if(mb_neighbour & MB_LEFT)
        {
            mode = Intra_4x4_DCLEFT;

            p = src - 1;

            for(i = 0 ; i < 4 ; i ++)
            {
                left[i] = p[0];
                p += t->edged_stride;
            }
        }
        else if(mb_neighbour & MB_TOP)
        {
            mode = Intra_4x4_DCTOP;

            p = src - t->edged_stride;
            for(i = 0 ; i < 4 ; i ++)
            {
                top[i] = p[i];
            }
        }
        else
        {
            mode = Intra_4x4_DC128;
        }
    }
    else
    {
        switch(mode)
        {
        case Intra_4x4_TOP:
            p = src - t->edged_stride;
            for(i = 0 ; i < 4 ; i ++)
            {
                top[i] = p[i];
            }
            break;
        case Intra_4x4_LEFT:
        case Intra_4x4_HORIZONTAL_UP:
            p = src - 1;
            for(i = 0 ; i < 4 ; i ++)
            {
                left[i] = p[0];
                p += t->edged_stride;
            }
            break;
        case Intra_4x4_DIAGONAL_DOWNLEFT:
        case Intra_4x4_VERTICAL_LEFT:
            {
                int32_t mb_neighbour = (t->mb.mb_neighbour| neighbour[idx]) & fix[idx];
            
                p = src - t->edged_stride;
                if((idx & 3) == 3 && t->mb.mb_x == t->mb_width - 1)    //if is the right-most sub-block, if is th last MB in horizontal, no top-right exist
                    mb_neighbour &= ~MB_TOPRIGHT;

                if (mb_neighbour & MB_TOPRIGHT)
                {
                    for(i = 0 ; i < 8 ; i ++)
                    {
                        top[i] = p[i];
                    }
                }
                else
                {
                    for(i = 0 ; i < 4 ; i ++)
                    {
                        top[i] = p[i];
                    }
                    top[4] = p[3];
                    top[5] = p[3];
                    top[6] = p[3];
                    top[7] = p[3];
                }
            }
            break;
        case Intra_4x4_DIAGONAL_DOWNRIGHT:
        case Intra_4x4_VERTICAL_RIGHT:
        case Intra_4x4_HORIZONTAL_DOWN:
            p = src - t->edged_stride;
            for(i = -1 ; i < 4 ; i ++)
            {
                top[i] = p[i];
            }

            p -= 1;
            for(i = -1 ; i < 4 ; i ++)
            {
                left[i] = p[0];
                p += t->edged_stride;
            }
            break;
        default:
            assert(0);
            break;
        }
    }

    t->pred4x4[mode](pred, 4, top, left);
}

static void __inline
T264dec_mb_decode_predict_i8x8_y(T264_t* t, uint8_t mode, uint8_t* pred_u, uint8_t* pred_v)
{
    DECLARE_ALIGNED_MATRIX(topcacheu, 1, 8 + CACHE_SIZE, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX(leftcacheu, 1, 8 + CACHE_SIZE, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX(topcachev, 1, 8 + CACHE_SIZE, uint8_t, CACHE_SIZE);
    DECLARE_ALIGNED_MATRIX(leftcachev, 1, 8 + CACHE_SIZE, uint8_t, CACHE_SIZE);

    uint8_t* p_u, *p_v;
    int32_t i;
    uint8_t* top_u, *left_u;
    uint8_t* top_v, *left_v;

    top_u  = &topcacheu[CACHE_SIZE];
    top_v  = &topcachev[CACHE_SIZE];

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产91久久久久久最新毛片 | av在线一区二区| 国产精品66部| 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩不卡在线观看日韩不卡视频| 亚洲欧美激情插| 国产精品高清亚洲| 国产精品久久久久国产精品日日| 久久网站最新地址| 欧美国产成人精品| 亚洲天堂网中文字| 亚洲男人电影天堂| 亚洲www啪成人一区二区麻豆| 亚洲第一成人在线| 美女被吸乳得到大胸91| 激情欧美日韩一区二区| 国产成人啪免费观看软件| 国v精品久久久网| 色域天天综合网| 69堂亚洲精品首页| 久久精品这里都是精品| 久久久久久一二三区| 久久蜜臀中文字幕| 亚洲伦在线观看| 午夜精品久久久久久久| 久国产精品韩国三级视频| 国产精品一二三在| 日本高清视频一区二区| 欧美唯美清纯偷拍| 精品国产免费人成电影在线观看四季| 久久色成人在线| 综合激情成人伊人| 亚洲成人精品影院| 国产福利一区二区三区| 欧美体内she精高潮| 精品久久久影院| 亚洲欧美韩国综合色| 蜜桃av一区二区三区| 99久久精品国产麻豆演员表| 欧美精品日韩精品| 亚洲欧洲av色图| 美女在线视频一区| 在线免费观看日本一区| 久久综合99re88久久爱| 亚洲午夜激情网站| 成人一区二区三区| 91.麻豆视频| ●精品国产综合乱码久久久久| 婷婷国产v国产偷v亚洲高清| 成人av在线播放网址| 91精品国产综合久久久久| 成人欧美一区二区三区| 极品美女销魂一区二区三区免费| 一本久道久久综合中文字幕| 久久久久久97三级| 日日夜夜精品视频免费| 色婷婷精品大视频在线蜜桃视频| 欧美精品一区男女天堂| 婷婷成人综合网| 欧美在线综合视频| 国产精品污网站| 国产一区二区三区综合| 7777精品伊人久久久大香线蕉| 一区二区三区四区精品在线视频| 国产一区二区三区在线观看免费视频| 欧美丝袜丝交足nylons| 亚洲欧美一区二区三区国产精品 | 久久国内精品视频| 欧美日韩精品久久久| 亚洲伦理在线免费看| 成人av网在线| 中文字幕一区二区三区不卡| 高清av一区二区| 久久久无码精品亚洲日韩按摩| 久久se这里有精品| 2020国产精品自拍| 国产伦精品一区二区三区视频青涩| 欧美精品自拍偷拍动漫精品| 亚洲成人av福利| 欧美亚洲国产bt| 亚洲成人av电影| 91精品国产综合久久精品性色| 日韩精品免费专区| 欧美一区日韩一区| 久久99精品国产麻豆婷婷| 日韩亚洲欧美中文三级| 精品在线视频一区| 久久久不卡网国产精品二区| 国产精品亚洲а∨天堂免在线| 久久免费视频一区| 波多野结衣一区二区三区 | 五月天精品一区二区三区| 在线电影一区二区三区| 美女国产一区二区三区| 国产女人18毛片水真多成人如厕 | 色偷偷88欧美精品久久久| 亚洲午夜精品在线| 26uuu国产日韩综合| 精品一区二区在线观看| 国产精品毛片久久久久久久| 色偷偷久久一区二区三区| 午夜精品一区二区三区免费视频| 日韩欧美一二三区| 国产91富婆露脸刺激对白| 亚洲女子a中天字幕| 欧美电影影音先锋| 国产精品69毛片高清亚洲| 亚洲综合免费观看高清完整版| 欧美日韩一二三| 国产一区二区电影| 亚洲黄色性网站| 精品国产一区二区三区四区四| 成人永久免费视频| 日韩av电影天堂| 中文字幕亚洲不卡| 精品入口麻豆88视频| 99精品久久只有精品| 天天综合日日夜夜精品| 国产精品污污网站在线观看| 欧美美女直播网站| 不卡区在线中文字幕| 三级欧美在线一区| 自拍偷拍亚洲欧美日韩| 精品国产乱码久久| 欧美日韩一级视频| 99视频精品免费视频| 老司机精品视频线观看86| 一区二区三区久久| 国产精品丝袜一区| 精品国产99国产精品| 欧美午夜精品免费| 99久精品国产| 国产馆精品极品| 美女一区二区久久| 亚洲成人免费观看| 一区二区三区免费看视频| 国产日韩欧美一区二区三区乱码| 91精品一区二区三区在线观看| 91丨九色丨国产丨porny| 国产精品一级片| 国产在线不卡一区| 久久99精品久久久久| 日韩激情av在线| 亚洲不卡av一区二区三区| 一区二区三区在线视频免费观看| 中文字幕欧美三区| 久久久久久免费| 中文字幕欧美日本乱码一线二线| 久久欧美中文字幕| 久久久精品免费免费| 久久综合国产精品| 欧美激情在线看| 国产欧美一区二区精品秋霞影院| 久久亚洲免费视频| 国产欧美精品区一区二区三区| 久久久久97国产精华液好用吗| 久久婷婷成人综合色| 国产欧美一区视频| 国产精品久久久久9999吃药| 国产精品每日更新| 亚洲精品免费在线播放| 亚洲一区二区偷拍精品| 亚洲国产精品久久艾草纯爱| 性做久久久久久免费观看欧美| 午夜精品一区二区三区三上悠亚 | 国产乱妇无码大片在线观看| 国产综合久久久久影院| 国产精品一区二区久激情瑜伽| 国产成人免费9x9x人网站视频| 成人午夜视频免费看| 波多野结衣在线aⅴ中文字幕不卡| 91香蕉视频污| 91麻豆精品91久久久久久清纯| 日韩精品中文字幕一区二区三区| 精品国产精品网麻豆系列| 久久色.com| 亚洲丝袜另类动漫二区| 亚洲国产cao| 国产原创一区二区| 色狠狠色噜噜噜综合网| 欧美夫妻性生活| 国产日韩欧美精品电影三级在线| 国产精品毛片高清在线完整版| 一区二区三区视频在线观看| 奇米在线7777在线精品| 成人午夜视频在线| 欧美一区二区三区在线看| 久久精品亚洲一区二区三区浴池| 亚洲欧美一区二区三区极速播放 | 欧美久久久久中文字幕| 精品国一区二区三区| 国产精品成人免费| 亚洲成人久久影院| 岛国一区二区三区| 91麻豆精品国产自产在线观看一区| 中文无字幕一区二区三区| 亚洲国产cao| 一本久久精品一区二区| 久久久一区二区三区捆绑**| 亚洲国产中文字幕在线视频综合|