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

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

?? mcpad.cpp

?? 小波圖像變換
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/*************************************************************************

This software module was originally developed by 

	Ming-Chieh Lee (mingcl@microsoft.com), Microsoft Corporation
	Simon Winder (swinder@microsoft.com), Microsoft Corporation
	(date: June, 1997)
and edited by
        Wei Wu (weiwu@stallion.risc.rockwell.com) Rockwell Science Center

in the course of development of the MPEG-4 Video (ISO/IEC 14496-2). 
This software module is an implementation of a part of one or more MPEG-4 Video tools 
as specified by the MPEG-4 Video. 
ISO/IEC gives users of the MPEG-4 Video free license to this software module or modifications 
thereof for use in hardware or software products claiming conformance to the MPEG-4 Video. 
Those intending to use this software module in hardware or software products are advised that its use may infringe existing patents. 
The original developer of this software module and his/her company, 
the subsequent editors and their companies, 
and ISO/IEC have no liability for use of this software module or modifications thereof in an implementation. 
Copyright is not released for non MPEG-4 Video conforming products. 
Microsoft retains full right to use the code for his/her own purpose, 
assign or donate the code to a third party and to inhibit third parties from using the code for non MPEG-4 Video conforming products. 
This copyright notice must be included in all copies or derivative works. 

Copyright (c) 1996, 1997.


Module Name:

	mcPad.cpp

Abstract:

	MB Padding (for motion estimation and compensation).

Revision History:
        May. 9   1998:  add field based MC padding  by Hyundai Electronics
                                  Cheol-Soo Park (cspark@super5.hyundai.co.kr)

*************************************************************************/

#include "typeapi.h"
#include "codehead.h"
#include "mode.hpp"
#include "vopses.hpp"

// size of image for ppxlcAlphaBase is (uiBlkSize X uiBlkSize)


#define invalidColour -1

// Added for field based MC padding by Hyundai(1998-5-9)
#define MB_FIELDY       1
#define MB_FIELDC       3
// End of Hyundai(1998-5-9)

Void CVideoObject::mcPadCurrMB (
	PixelC* ppxlcRefMBY, 
	PixelC* ppxlcRefMBU, PixelC* ppxlcRefMBV,
	PixelC** pppxlcRefMBA 
)
{
	mcPadCurr (ppxlcRefMBY, m_ppxlcCurrMBBY, MB_SIZE, m_iFrameWidthY);
	mcPadCurr (ppxlcRefMBU, m_ppxlcCurrMBBUV, BLOCK_SIZE, m_iFrameWidthUV);
	mcPadCurr (ppxlcRefMBV, m_ppxlcCurrMBBUV, BLOCK_SIZE, m_iFrameWidthUV);
  if (m_volmd.fAUsage == EIGHT_BIT) {
    for(Int iAuxComp=0;iAuxComp<m_volmd.iAuxCompCount;iAuxComp++) // MAC (SB) 29-Nov-99
		  mcPadCurr (pppxlcRefMBA[iAuxComp], m_ppxlcCurrMBBY, MB_SIZE, m_iFrameWidthY);
  }
}

Void CVideoObject::mcPadCurr (
	PixelC *ppxlcTextureBase, // (uiStride X ???)
	const PixelC *ppxlcAlphaBase, // uiBlkSize X uiBlkSize
	UInt uiBlkSize, UInt uiStride
)
{
	Int iUnit = sizeof(PixelC); // NBIT: memcpy
	CoordI iX,iY,iJ,iLeftX = 0;
	Bool bEmptyRow = FALSE;
	Bool bInVop;
	Int iLeftColour;

	PixelC *ppxlcTexture = ppxlcTextureBase;
	const PixelC *ppxlcAlpha = ppxlcAlphaBase;

	for (iY=0; iY < (CoordI) uiBlkSize; iY++, ppxlcTexture+=uiStride)
    {
		bInVop = TRUE;
		iLeftColour = invalidColour;
		m_pbEmptyRowArray[iY]=0;

		for(iX=0;iX<(CoordI)uiBlkSize;iX++,ppxlcAlpha++)
		{
			if(bInVop==TRUE && *ppxlcAlpha==transpValue)
		    {
				// start of stripe or left border 
				bInVop=FALSE;
				iLeftX=iX;
				if(iX>0)
					iLeftColour=ppxlcTexture[iLeftX-1];
		    }
			else if(bInVop==FALSE && *ppxlcAlpha!=transpValue)
		    {
				// end of stripe not right border 
				bInVop=TRUE;
				if(iLeftColour==invalidColour)
					iLeftColour=ppxlcTexture[iX];
				else
					iLeftColour=(iLeftColour+ppxlcTexture[iX]+1)>>1;
				
				// fill stripe 
				for(iJ=iLeftX;iJ<iX;iJ++)
					ppxlcTexture[iJ]=(PixelC)iLeftColour;
		    }
		}

        if(bInVop==FALSE)
		{
			// end of stripe at right border 
			if(iLeftX==0)
			{
				// blank stripe so mark
				m_pbEmptyRowArray[iY]=TRUE;
				bEmptyRow=TRUE;
			}
			else
	        {
				// fill trailing stripe 
	            for(iJ=iLeftX;iJ<iX;iJ++)
					ppxlcTexture[iJ]=(PixelC)iLeftColour;	      
	        }
 	    }
    }

	// fill remaining holes 
	if(bEmptyRow)
	{
		ppxlcTexture=ppxlcTextureBase;
		PixelC *ppxlcUpperRow = NULL;
		for(iY=0;iY<(CoordI)uiBlkSize;iY++,ppxlcTexture+=uiStride)
			if(!m_pbEmptyRowArray[iY])
				ppxlcUpperRow = ppxlcTexture;
			else
			{
				// empty row, find lower row
				PixelC *ppxlcLowerRow = ppxlcTexture+uiStride;
				CoordI iYY;
				for(iYY=iY+1;iYY<(CoordI)uiBlkSize;iYY++,ppxlcLowerRow+=uiStride)
					if(!m_pbEmptyRowArray[iYY])
						break;
				if(iYY<(CoordI)uiBlkSize)
				{
					if(ppxlcUpperRow==NULL)
					{
						// just lower row
						for(;ppxlcTexture<ppxlcLowerRow;ppxlcTexture+=uiStride)
							memcpy(ppxlcTexture,ppxlcLowerRow,uiBlkSize*iUnit);
					}
					else
					{
						// lower row, upper row
						for(;ppxlcTexture<ppxlcLowerRow;ppxlcTexture+=uiStride)
							for(iX=0;iX<(CoordI)uiBlkSize;iX++)
								ppxlcTexture[iX]=
									(ppxlcUpperRow[iX]+ppxlcLowerRow[iX]+1)>>1;
					}
				}
				else
				{
					// just upper row
					assert(ppxlcUpperRow!=NULL);
					for(iYY=iY;iYY<(CoordI)uiBlkSize;iYY++,ppxlcTexture+=uiStride)
						memcpy(ppxlcTexture,ppxlcUpperRow,uiBlkSize*iUnit);
				}
				iY=iYY-1;
				ppxlcTexture -= uiStride;
			}	
	}
}

Void CVideoObject::padNeighborTranspMBs (
	CoordI xb, CoordI yb,
	CMBMode* pmbmd,
	PixelC* ppxlcY, PixelC* ppxlcU, PixelC* ppxlcV, PixelC **pppxlcA
)
{
	if (xb > 0) {
		if ((pmbmd - 1)->m_rgTranspStatus [0] == ALL) {
			if (!((pmbmd - 1)->m_bPadded)) {
				mcPadLeftMB (ppxlcY, ppxlcU, ppxlcV, pppxlcA);
				(pmbmd - 1)->m_bPadded = TRUE;
			}
		}
	}
	if (yb > 0) {
		if ((pmbmd - m_iNumMBX)->m_rgTranspStatus [0] == ALL) {
			if (!((pmbmd - m_iNumMBX)->m_bPadded)) {
				mcPadTopMB (ppxlcY, ppxlcU, ppxlcV, pppxlcA);
				(pmbmd - m_iNumMBX)->m_bPadded = TRUE;
			}
		}
	}
}

Void CVideoObject::padCurrAndTopTranspMBFromNeighbor (
	CoordI xb, CoordI yb,
	CMBMode* pmbmd,
	PixelC* ppxlcY, PixelC* ppxlcU, PixelC* ppxlcV, PixelC** pppxlcA
)
{
	if (xb > 0) {
		if ((pmbmd - 1)->m_rgTranspStatus [0] != ALL) {
			mcPadCurrMBFromLeft (ppxlcY, ppxlcU, ppxlcV, pppxlcA);
			pmbmd->m_bPadded = TRUE;
		}
	}
	if (yb > 0) {
		if ((pmbmd - m_iNumMBX)->m_rgTranspStatus [0] != ALL) {
			if (!(pmbmd->m_bPadded)) {
				mcPadCurrMBFromTop (ppxlcY, ppxlcU, ppxlcV, pppxlcA);
				pmbmd->m_bPadded = TRUE;
			}
		}
		else
			if (!(pmbmd - m_iNumMBX)->m_bPadded)
				mcSetTopMBGray (ppxlcY, ppxlcU, ppxlcV, pppxlcA);
	}
	if(yb == m_iNumMBY-1)
	{
		if(xb > 0 && (pmbmd-1)->m_rgTranspStatus [0] == ALL && !((pmbmd-1)->m_bPadded))
			mcSetLeftMBGray(ppxlcY, ppxlcU, ppxlcV, pppxlcA);
		if(xb == m_iNumMBX-1 && !(pmbmd->m_bPadded))
			mcSetCurrMBGray(ppxlcY, ppxlcU, ppxlcV, pppxlcA);
	}
}


Void CVideoObject::mcPadLeftMB (PixelC* ppxlcMBY, PixelC* ppxlcMBU, PixelC* ppxlcMBV, PixelC** pppxlcMBA)
{
	UInt iy;
	for (iy = 0; iy < BLOCK_SIZE; iy++) {
		pxlcmemset (ppxlcMBY - MB_SIZE, *ppxlcMBY, MB_SIZE);
		pxlcmemset (ppxlcMBU - BLOCK_SIZE, *ppxlcMBU, BLOCK_SIZE);
		pxlcmemset (ppxlcMBV - BLOCK_SIZE, *ppxlcMBV, BLOCK_SIZE);
		ppxlcMBY += m_iFrameWidthY;
		ppxlcMBU += m_iFrameWidthUV;
		ppxlcMBV += m_iFrameWidthUV;
	
		pxlcmemset (ppxlcMBY - MB_SIZE, *ppxlcMBY, MB_SIZE);
		ppxlcMBY += m_iFrameWidthY;
	}
	if(m_volmd.fAUsage == EIGHT_BIT)
    for(Int iAuxComp=0;iAuxComp<m_volmd.iAuxCompCount;iAuxComp++) { // MAC (SB) 29-Nov-99
      PixelC* ppxlcMBA = pppxlcMBA[iAuxComp];
      for (iy = 0; iy < BLOCK_SIZE; iy++) {
        pxlcmemset (ppxlcMBA - MB_SIZE, *ppxlcMBA, MB_SIZE);
        ppxlcMBA += m_iFrameWidthY;
        pxlcmemset (ppxlcMBA - MB_SIZE, *ppxlcMBA, MB_SIZE);
        ppxlcMBA += m_iFrameWidthY;
      }
    }
}

Void CVideoObject::mcPadTopMB (PixelC* ppxlcMBY, PixelC* ppxlcMBU, PixelC* ppxlcMBV, PixelC** pppxlcMBA)
{
	UInt ix, iy;
	for (ix = 0; ix < MB_SIZE; ix++) {
		PixelC* ppxlcYCol = ppxlcMBY;
		for (iy = 0; iy < MB_SIZE; iy++) {
			ppxlcYCol -= m_iFrameWidthY;
			*ppxlcYCol = *ppxlcMBY;
		}
		ppxlcMBY++;
	}

	for (ix = 0; ix < BLOCK_SIZE; ix++) {
		PixelC* ppxlcUCol = ppxlcMBU;
		PixelC* ppxlcVCol = ppxlcMBV;
		for (iy = 0; iy < BLOCK_SIZE; iy++) {
			ppxlcUCol -= m_iFrameWidthUV;
			ppxlcVCol -= m_iFrameWidthUV;
			*ppxlcUCol = *ppxlcMBU;
			*ppxlcVCol = *ppxlcMBV;
		}
		ppxlcMBU++;
		ppxlcMBV++;
	}
	if(m_volmd.fAUsage == EIGHT_BIT)
    for(Int iAuxComp=0;iAuxComp<m_volmd.iAuxCompCount;iAuxComp++) { // MAC (SB) 29-Nov-99
      PixelC* ppxlcMBA = pppxlcMBA[iAuxComp];
      for (ix = 0; ix < MB_SIZE; ix++) {
        PixelC* ppxlcACol = ppxlcMBA;
        for (iy = 0; iy < MB_SIZE; iy++) {
          ppxlcACol -= m_iFrameWidthY;
          *ppxlcACol = *ppxlcMBA;
        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合网av| 成人午夜短视频| 欧美浪妇xxxx高跟鞋交| 国产精品成人网| 亚洲综合一二区| 国产精品国产三级国产aⅴ原创| 欧美不卡一二三| 国产精品你懂的| 日韩电影在线免费| 91尤物视频在线观看| 国产精品久久久久影院| 国产精品资源在线看| 视频在线观看一区| 欧美日韩高清一区二区| 亚洲chinese男男1069| 欧美猛男gaygay网站| 亚洲综合在线观看视频| 欧美无人高清视频在线观看| 亚洲精品成人在线| 欧美性欧美巨大黑白大战| 亚洲成人免费观看| 日韩三区在线观看| 奇米精品一区二区三区在线观看| 久久一区二区三区四区| 日本少妇一区二区| 精品日韩欧美在线| 国产白丝精品91爽爽久久| 中文久久乱码一区二区| 色综合一个色综合亚洲| 午夜精品福利视频网站| 欧美大肚乱孕交hd孕妇| 不卡一区二区三区四区| 欧美aaaaa成人免费观看视频| 欧美在线短视频| 蜜臂av日日欢夜夜爽一区| 久久久久久综合| 色香蕉久久蜜桃| 久久精品国产澳门| 亚洲欧美日韩在线播放| 欧美精品乱码久久久久久按摩| 韩国v欧美v亚洲v日本v| 一区二区三区成人| 欧美国产在线观看| 国产一区二区调教| 中文字幕在线视频一区| 欧美一区二区三区爱爱| 一本一道波多野结衣一区二区| 日韩经典中文字幕一区| 亚洲日本乱码在线观看| 欧美丰满嫩嫩电影| 97se亚洲国产综合自在线| 国产成人精品一区二区三区网站观看| 日韩三级视频在线看| 亚洲一区二区中文在线| 国产精品污网站| 欧美成人精品1314www| 久久久99久久精品欧美| 欧美色成人综合| 91视频在线看| 97精品电影院| 91在线播放网址| 91视频精品在这里| 成人免费毛片高清视频| 国产精品99久久久久久久女警| 欧美va亚洲va国产综合| 色综合av在线| 欧洲另类一二三四区| 色菇凉天天综合网| 欧美色窝79yyyycom| 欧美影视一区在线| 在线亚洲+欧美+日本专区| 91在线码无精品| 91极品视觉盛宴| 日韩一区二区免费高清| 欧美日韩成人综合天天影院| 欧美精品第1页| 欧美一区二区在线不卡| 在线视频国产一区| 欧美中文一区二区三区| 91精品免费观看| 精品国产伦一区二区三区观看方式 | 久久精品亚洲乱码伦伦中文| 狠狠色丁香婷婷综合久久片| 日本亚洲欧美天堂免费| 蜜桃传媒麻豆第一区在线观看| 日韩高清在线观看| 国产一区二区三区香蕉| 国产精品夜夜爽| 一道本成人在线| 欧美人伦禁忌dvd放荡欲情| 5566中文字幕一区二区电影| 欧美精品一区二区三区在线播放| 国产精品天天看| 一区二区欧美精品| 日韩二区三区四区| 日韩在线观看一区二区| 午夜成人免费电影| 国产电影一区在线| 成人av一区二区三区| av电影在线观看不卡| 日韩女优av电影在线观看| 亚洲国产日日夜夜| 92国产精品观看| 国产精品久久久久久久久快鸭| 狠狠久久亚洲欧美| 精品国产欧美一区二区| 另类中文字幕网| 亚洲国产成人在线| 国产在线播放一区三区四| 久久国产精品72免费观看| 欧美日韩美女一区二区| 午夜欧美电影在线观看| 欧美精品自拍偷拍| 午夜精品久久久久久久99樱桃| 欧美日免费三级在线| 亚洲sss视频在线视频| 欧美一级二级三级蜜桃| 久久精品久久精品| 久久九九久久九九| 国产成人精品免费| 精品成人免费观看| 国产成人av影院| 国产精品国模大尺度视频| 成人av网址在线| 亚洲精品日日夜夜| 91国产成人在线| 亚洲伦理在线精品| 色诱视频网站一区| 午夜久久久久久久久| 欧美精品免费视频| 美女一区二区三区| 久久免费午夜影院| 国产激情视频一区二区三区欧美| 欧美大片顶级少妇| 韩国中文字幕2020精品| 精品人在线二区三区| 国产精品影视在线| 一区二区三区欧美久久| 亚洲国产精品精华液ab| 欧美日韩国产综合一区二区 | 国产精品美女www爽爽爽| 国产精品1区2区3区| 国产精品人人做人人爽人人添| 国产69精品久久777的优势| 中文一区在线播放| 91国产免费看| 秋霞电影网一区二区| 国产欧美日韩在线| 欧美中文字幕一区二区三区| 日韩精品乱码免费| 亚洲精品在线一区二区| 91麻豆国产香蕉久久精品| 免费三级欧美电影| 中文字幕亚洲一区二区av在线| 欧美男男青年gay1069videost| 国产又黄又大久久| 亚洲午夜成aⅴ人片| 久久你懂得1024| 制服丝袜亚洲播放| 成人免费观看视频| 国产老肥熟一区二区三区| 欧美大片在线观看一区| 欧美性视频一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 一区二区三区成人| 中文字幕在线播放不卡一区| wwwwww.欧美系列| 5月丁香婷婷综合| 精品视频在线看| 色综合久久中文字幕| 91亚洲精品乱码久久久久久蜜桃 | 666欧美在线视频| 欧美性做爰猛烈叫床潮| 在线看国产一区| 欧美午夜片在线观看| 在线精品观看国产| 欧美主播一区二区三区美女| 欧美亚洲禁片免费| 欧美三级乱人伦电影| 91精品欧美综合在线观看最新| 69久久99精品久久久久婷婷| 欧美三区在线视频| 欧美色大人视频| 欧美日韩国产一区| 91麻豆精品久久久久蜜臀| 亚洲成人资源在线| 日韩av一区二| 成人视屏免费看| 欧美三级电影一区| 日韩精品综合一本久道在线视频| 久久综合色8888| 亚洲色图在线播放| 亚洲成a天堂v人片| 国产精品一二三在| 在线观看不卡一区| 久久人人97超碰com| 亚洲色图色小说| 亚洲欧美在线aaa| 欧美精品777| 日本精品视频一区二区三区|