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

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

?? skl_gmc_dsp.cpp

?? mpeg4編解碼器
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************** * Some code. Copyright (C) 2003 by Pascal Massimino.   * * All Rights Reserved.      (http://skal.planet-d.net) * * For Educational/Academic use ONLY. See 'LICENSE.TXT'.* ********************************************************//* * skl_gmc_dsp.cpp * *   level Sprite (MPEG4's GMC) processing ********************************************************/#include "skl.h"#include "skl_syst/skl_dsp.h"#include "skl_syst/skl_bits.h"extern "C" {//////////////////////////////////////////////////////////// Raw-C version#define RDIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b))#define RSHIFT(a,b) ( (a)>0 ? ((a) + (1<<((b)-1)))>>(b) : ((a) + (1<<((b)-1))-1)>>(b))#define MLT(i)  (((16-(i))<<16) + (i))static const SKL_UINT32 MTab[16] = {    MLT( 0), MLT( 1), MLT( 2), MLT( 3), MLT( 4), MLT( 5), MLT( 6), MLT( 7),  MLT( 8), MLT( 9), MLT(10), MLT(11), MLT(12), MLT(13), MLT(14), MLT(15)};#undef MLT//////////////////////////////////////////////////////////// Pts = 2 or 3staticvoid Predict_16x16_C(const SKL_GMC_DSP * const This,                     SKL_BYTE *Dst, const SKL_BYTE *Src,                      int BpS, int x, int y, int Rounding){  const int W   = This->Width;  const int H   = This->Height;  const int Rho = 3-This->Accuracy;  const SKL_INT32 Rounder = ( 128 - (Rounding<<(2*Rho)) ) << 16;  const SKL_UINT32 W2 = W<<(16-Rho);  const SKL_UINT32 H2 = H<<(16-Rho);  Dst += 16;  const SKL_INT32 dUx = This->dU[0];  const SKL_INT32 dVx = This->dV[0];  const SKL_INT32 dUy = This->dU[1];  const SKL_INT32 dVy = This->dV[1];  SKL_INT32 Uo = This->Uo + 16*(dUy*y + dUx*x);  SKL_INT32 Vo = This->Vo + 16*(dVy*y + dVx*x);  for(int j=16; j>0; --j)  {#ifdef USE_ASM//    __asm__ __volatile__ ("prefetcht0 (%0)\n\t" : : "r" (Dst-16));#endif    SKL_INT32 U = Uo, V = Vo;    Uo += dUy; Vo += dVy;    if ( (SKL_UINT32)U<W2 && (SKL_UINT32)(U+15*dUx)<W2 &&         (SKL_UINT32)V<H2 && (SKL_UINT32)(V+15*dVx)<H2 )    {          for(int i=-16; i<0; ++i)      {        SKL_INT32 u = ( U >> 16 ) << Rho;        SKL_INT32 v = ( V >> 16 ) << Rho;        U += dUx;  V += dVx;        int Offset = (u>>4) + (v>>4)*BpS;        const SKL_UINT32 ri = MTab[u&15];        const SKL_UINT32 rj = MTab[v&15];        SKL_UINT32 f0, f1;        f0  = Src[ Offset     +0 ];        f0 |= Src[ Offset     +1 ] << 16;        f1  = Src[ Offset+BpS +0 ];        f1 |= Src[ Offset+BpS +1 ] << 16;        f0 = (ri*f0)>>16;        f1 = (ri*f1) & 0x0fff0000;        f0 |= f1;         f0 = ( rj*f0 + Rounder ) >> 24;        Dst[i] = (SKL_BYTE)f0;      }    }    else {      for(int i=-16; i<0; ++i)      {        int Offset;        SKL_INT32 u = ( U >> 16 ) << Rho;        SKL_INT32 v = ( V >> 16 ) << Rho;        U += dUx; V += dVx;        if ((SKL_UINT32)u<(SKL_UINT32)W) Offset = u>>4;        else {          if (u>=W) Offset = W>>4;          else Offset = 0;          u = 0;        }        if ((SKL_UINT32)v<(SKL_UINT32)H) Offset += (v>>4)*BpS;        else {          if (v>=H) Offset += (H>>4)*BpS;          v = 0;        }        if (u&15) {          const SKL_UINT32 ri = MTab[u&15];          if (v&15) {            const SKL_UINT32 rj = MTab[v&15];            SKL_UINT32 f0, f1;            f0  = Src[ Offset     +0 ];            f0 |= Src[ Offset     +1 ] << 16;            f1  = Src[ Offset+BpS +0 ];            f1 |= Src[ Offset+BpS +1 ] << 16;            f0 = (ri*f0)>>16;            f1 = (ri*f1) & 0x0fff0000;            f0 |= f1;             f0 = ( rj*f0 + Rounder ) >> 24;            Dst[i] = (SKL_BYTE)f0;          }          else {            SKL_UINT32 f0;            f0  = Src[ Offset   ];            f0 |= Src[ Offset+1 ] << 16;            f0 = (ri*f0 + (Rounder>>4))>>20;            Dst[i] = (SKL_BYTE)f0;          }        }        else {          if (v&15) {            const SKL_UINT32 rj = MTab[v&15];            SKL_UINT32 f0;            f0  = Src[ Offset      ];            f0 |= Src[ Offset +BpS ] << 16;            f0 = (rj*f0 + (Rounder>>4))>>20;            Dst[i] = (SKL_BYTE)f0;          }          else {            Dst[i] = Src[Offset];          }        }      }    }    Dst += BpS;  }}staticvoid Predict_8x8_C(const SKL_GMC_DSP * const This,                   SKL_BYTE *uDst, const SKL_BYTE *uSrc,                    SKL_SAFE_INT uv_Coloc,                   int BpS, int x, int y, int Rounding){  const int W   = This->Width >> 1;  const int H   = This->Height>> 1;  const int Rho = 3-This->Accuracy;  const SKL_INT32 Rounder = ( 128 - (Rounding<<(2*Rho)) ) << 16;  const SKL_UINT32 W2 = W<<(16-Rho);     const SKL_UINT32 H2 = H<<(16-Rho);  uDst += 8;  SKL_BYTE       *vDst = uDst + uv_Coloc;  const SKL_BYTE *vSrc = uSrc + uv_Coloc;  const SKL_INT32 dUx = This->dU[0];  const SKL_INT32 dVx = This->dV[0];  const SKL_INT32 dUy = This->dU[1];  const SKL_INT32 dVy = This->dV[1];  SKL_INT32 Uo = This->Uco + 8*(dUy*y + dUx*x);  SKL_INT32 Vo = This->Vco + 8*(dVy*y + dVx*x);  for(int j=8; j>0; --j)  {#ifdef USE_ASM//    __asm__ __volatile__ ("prefetcht0 (%0)\n\t" : : "r" (uDst-8));//    __asm__ __volatile__ ("prefetcht0 (%0)\n\t" : : "r" (vDst-8));#endif    SKL_INT32 U = Uo, V = Vo;    Uo += dUy; Vo += dVy;    if ( (SKL_UINT32)U<W2 && (SKL_UINT32)(U+15*dUx)<W2 &&         (SKL_UINT32)V<H2 && (SKL_UINT32)(V+15*dVx)<H2 )    {      for(int i=-8; i<0; ++i)       {        SKL_INT32 u = ( U >> 16 ) << Rho;        SKL_INT32 v = ( V >> 16 ) << Rho;        U += dUx; V += dVx;        const int Offset = (u>>4) + (v>>4)*BpS;        const SKL_UINT32 ri = MTab[u&15];        const SKL_UINT32 rj = MTab[v&15];        SKL_UINT32 f0, f1;        f0  = uSrc[ Offset     +0 ];        f0 |= uSrc[ Offset     +1 ] << 16;        f1  = uSrc[ Offset+BpS +0 ];        f1 |= uSrc[ Offset+BpS +1 ] << 16;        f0 = (ri*f0)>>16;        f1 = (ri*f1) & 0x0fff0000;        f0 |= f1;         f0 = ( rj*f0 + Rounder ) >> 24;        uDst[i] = (SKL_BYTE)f0;        f0  = vSrc[ Offset     +0 ];        f0 |= vSrc[ Offset     +1 ] << 16;        f1  = vSrc[ Offset+BpS +0 ];        f1 |= vSrc[ Offset+BpS +1 ] << 16;        f0 = (ri*f0)>>16;          f1 = (ri*f1) & 0x0fff0000;        f0 |= f1;         f0 = ( rj*f0 + Rounder ) >> 24;        vDst[i] = (SKL_BYTE)f0;      }    }    else {      for(int i=-8; i<0; ++i)       {        SKL_INT32 u = ( U >> 16 ) << Rho;        SKL_INT32 v = ( V >> 16 ) << Rho;        U += dUx; V += dVx;        int Offset;        if ((SKL_UINT32)u<(SKL_UINT32)W) Offset = u>>4;        else {          if (u>=W) Offset = W>>4;          else      Offset = 0;          u = 0;        }        if ((SKL_UINT32)v<(SKL_UINT32)H) Offset += (v>>4)*BpS;        else {          if (v>=H) Offset += (H>>4)*BpS;          v = 0;        }        if (u&15) {          const SKL_UINT32 ri = MTab[u&15];          if (v&15) {            SKL_UINT32 f0, f1;            const SKL_UINT32 rj = MTab[v&15];            f0  = uSrc[ Offset     +0 ];            f0 |= uSrc[ Offset     +1 ] << 16;            f1  = uSrc[ Offset+BpS +0 ];            f1 |= uSrc[ Offset+BpS +1 ] << 16;            f0 = (ri*f0)>>16;            f1 = (ri*f1) & 0x0fff0000;            f0 |= f1;             f0 = ( rj*f0 + Rounder ) >> 24;            uDst[i] = (SKL_BYTE)f0;            f0  = vSrc[ Offset     +0 ];            f0 |= vSrc[ Offset     +1 ] << 16;            f1  = vSrc[ Offset+BpS +0 ];            f1 |= vSrc[ Offset+BpS +1 ] << 16;            f0 = (ri*f0)>>16;              f1 = (ri*f1) & 0x0fff0000;            f0 |= f1;             f0 = ( rj*f0 + Rounder ) >> 24;            vDst[i] = (SKL_BYTE)f0;          }          else {            SKL_UINT32 f0;            f0  = uSrc[ Offset   ];            f0 |= uSrc[ Offset+1 ] << 16;            f0 = (ri*f0 + (Rounder>>4))>>20;            uDst[i] = (SKL_BYTE)f0;            f0  = vSrc[ Offset   ];            f0 |= vSrc[ Offset+1 ] << 16;            f0 = (ri*f0 + (Rounder>>4))>>20;            vDst[i] = (SKL_BYTE)f0;          }        }        else {          if (v&15) {            const SKL_UINT32 rj = MTab[v&15];            SKL_UINT32 f0;            f0  = uSrc[ Offset      ];            f0 |= uSrc[ Offset +BpS ] << 16;            f0 = (rj*f0 + (Rounder>>4))>>20;            uDst[i] = (SKL_BYTE)f0;            f0  = vSrc[ Offset      ];            f0 |= vSrc[ Offset +BpS ] << 16;            f0 = (rj*f0 + (Rounder>>4))>>20;            vDst[i] = (SKL_BYTE)f0;          }          else {            uDst[i] = uSrc[Offset];            vDst[i] = vSrc[Offset];          }        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频网址| 中文字幕一区二区三区在线不卡 | 亚洲色图清纯唯美| 蜜臀久久99精品久久久久久9| 成人免费电影视频| 日韩一区二区三| 亚洲国产精品综合小说图片区| 国产精品一二三四| 精品日韩在线观看| 亚洲www啪成人一区二区麻豆| www.欧美日韩| 久久久不卡影院| 天堂在线一区二区| 欧美三级中文字| 亚洲日本中文字幕区| 丰满少妇久久久久久久| 亚洲精品一区二区三区影院| 日韩电影免费一区| 欧美色精品天天在线观看视频| 国产精品人成在线观看免费| 国产在线播放一区| 日韩精品专区在线影院观看| 舔着乳尖日韩一区| 欧美日韩一卡二卡三卡| 亚洲最色的网站| 欧美久久久影院| 1000精品久久久久久久久| 日韩av一级片| 日韩一区二区不卡| 精品一区二区三区免费观看| 精品免费日韩av| 国产麻豆精品一区二区| 精品国产乱码久久久久久夜甘婷婷| 喷水一区二区三区| 6080国产精品一区二区| 三级亚洲高清视频| 3atv一区二区三区| 久久精品99国产精品| 欧美xxxxx裸体时装秀| 蜜臀国产一区二区三区在线播放| 日韩亚洲电影在线| 国产精品一卡二卡| 国产精品丝袜一区| 色综合天天狠狠| 一级中文字幕一区二区| 欧美性大战久久久久久久| 夜夜爽夜夜爽精品视频| 欧美人伦禁忌dvd放荡欲情| 免费观看在线色综合| 久久精品日韩一区二区三区| av成人免费在线| 亚洲综合色视频| 日韩欧美亚洲国产另类| 国产一区二区三区视频在线播放| 国产三级精品三级在线专区| 北条麻妃国产九九精品视频| 亚洲成人免费观看| 2024国产精品视频| 99久久免费精品| 美女网站一区二区| 中文字幕一区免费在线观看| 欧美色区777第一页| 国产乱淫av一区二区三区| 亚洲欧美另类小说视频| 日韩免费一区二区三区在线播放| 成人综合日日夜夜| 亚洲国产精品麻豆| 国产色综合久久| 欧美日韩二区三区| 国产69精品久久777的优势| 亚洲精品高清视频在线观看| 欧美videos大乳护士334| 成人精品免费网站| 日韩影院精彩在线| 自拍av一区二区三区| 欧美一区二区美女| 91日韩一区二区三区| 国产精品一级在线| 日韩avvvv在线播放| 亚洲精品一卡二卡| 久久久久国产精品免费免费搜索| 欧美日韩大陆在线| 不卡视频一二三| 国产尤物一区二区在线| 午夜电影一区二区| 欧美国产日韩在线观看| 日韩欧美一区二区免费| 欧美影院午夜播放| 99久久伊人网影院| 精品在线免费视频| 日韩电影免费在线看| 亚洲精品欧美在线| 综合久久久久综合| 国产亚洲精品久| 久久女同互慰一区二区三区| 欧美丰满一区二区免费视频| 91免费国产在线| 成人黄页在线观看| 国产激情一区二区三区四区| 捆绑调教一区二区三区| 五月天一区二区三区| 亚洲国产一二三| 亚洲一区二区精品久久av| 中文欧美字幕免费| 国产欧美日韩不卡免费| 精品国产一区二区三区久久久蜜月| 欧美揉bbbbb揉bbbbb| 欧美自拍偷拍一区| 91黄色免费版| 欧美唯美清纯偷拍| 91福利精品视频| 色嗨嗨av一区二区三区| 91一区二区在线观看| 色综合天天在线| 一本色道a无线码一区v| 99在线精品一区二区三区| 成人97人人超碰人人99| 成人app下载| 91精品1区2区| 欧美日韩一区国产| 91精品国产一区二区| 日韩精品中文字幕在线不卡尤物| 日韩一区二区精品| 久久免费午夜影院| 中文字幕不卡在线播放| 亚洲视频资源在线| 亚洲一区二区精品视频| 日韩极品在线观看| 久久激情五月婷婷| 国产91丝袜在线播放| www.亚洲激情.com| 在线一区二区视频| 91超碰这里只有精品国产| 日韩欧美自拍偷拍| 国产色爱av资源综合区| 樱花草国产18久久久久| 日本视频一区二区| 国产高清不卡一区二区| 日本高清无吗v一区| 欧美一区二区三区啪啪| 亚洲精品在线观看视频| 中文字幕一区二| 亚洲成人激情av| 国产乱国产乱300精品| 色先锋资源久久综合| 538prom精品视频线放| 久久久久久久国产精品影院| 成人免费小视频| 热久久国产精品| 99久久国产免费看| 欧美成人猛片aaaaaaa| 国产精品灌醉下药二区| 免费三级欧美电影| 丁香天五香天堂综合| 69堂国产成人免费视频| 中文字幕av资源一区| 五月天一区二区| aaa欧美大片| 精品久久久久久久一区二区蜜臀| 亚洲另类色综合网站| 国产一区二区三区四区五区入口| 欧美性猛片aaaaaaa做受| 久久久久久综合| 日韩高清不卡一区| 97久久精品人人澡人人爽| 欧美一级爆毛片| 亚洲国产精品一区二区久久恐怖片| 激情六月婷婷久久| 欧美色图在线观看| 国产精品伦一区二区三级视频| 欧美bbbbb| 91麻豆精品国产无毒不卡在线观看 | 精品国产伦一区二区三区观看方式| 亚洲免费av网站| 成人久久久精品乱码一区二区三区 | 欧美三级乱人伦电影| 日韩美女视频19| 国产乱色国产精品免费视频| 欧美一区二区啪啪| 亚洲国产毛片aaaaa无费看 | 国产在线视频一区二区| 欧美精品第1页| 亚洲成人福利片| 日本韩国精品在线| 亚洲四区在线观看| 成人蜜臀av电影| 国产精品久久久爽爽爽麻豆色哟哟| 久久99精品国产麻豆不卡| 制服丝袜日韩国产| 日韩精品每日更新| 在线播放/欧美激情| 日韩精品一区第一页| 欧美日韩国产片| 亚洲不卡一区二区三区| 欧美日韩一卡二卡| 日韩精品久久久久久| 欧美一二三在线| 经典三级在线一区| 久久九九全国免费| 成人国产精品免费观看|