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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? newpred.cpp

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

This software module was originally developed by 

	Hideaki Kimata (NTT)


in the course of development of the MPEG-4 Video (ISO/IEC 14496-2) standard.
This software module is an implementation of a part of one or more MPEG-4 
Video (ISO/IEC 14496-2) tools as specified by the MPEG-4 Video (ISO/IEC 
14496-2) standard. 

ISO/IEC gives users of the MPEG-4 Video (ISO/IEC 14496-2) standard free 
license to this software module or modifications thereof for use in hardware
or software products claiming conformance to the MPEG-4 Video (ISO/IEC 
14496-2) standard. 

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 (ISO/IEC 14496-2) standard conforming 
products. 

NTT 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 (ISO/IEC 14496-2) standard
conforming products. This copyright notice must be included in all copies or
derivative works. 

Copyright (c) 1999.

Module Name:

	newpred.cpp

Abstract:

	Implementation of the CNewPred class.

Revision History:

	Aug.30, 1999:   change position of #ifdef _DEBUG by Hideaki Kimata (NTT)

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

#ifdef __MFC_
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif

#define new DEBUG_NEW
#endif // __MFC_

#include "basic.hpp"
#include "typeapi.h"
#include "codehead.h"
#include "mode.hpp"
#include "global.hpp"
#include "entropy/bitstrm.hpp"
#include "newpred.hpp"
#include <string.h>


#ifdef _DEBUG
#include <crtdbg.h>
#define _CRTDBG_MAP_ALLOC
//CMemoryState CMemOld, CMemNew;
#endif

CNewPred::CNewPred()
{
	m_iVopID = 0;
	m_pDecbufY = NULL;
	m_pDecbufU = NULL;
	m_pDecbufV = NULL;

	m_pchNewPredRefY = NULL;
	m_pchNewPredRefU = NULL;
	m_pchNewPredRefV = NULL;

	m_piSlicePoint = NULL;
}

CNewPred::~CNewPred()
{
	if (m_pchNewPredRefY != NULL) delete []m_pchNewPredRefY; 
	if (m_pchNewPredRefU != NULL) delete []m_pchNewPredRefU;
	if (m_pchNewPredRefV != NULL) delete []m_pchNewPredRefV;

	if (m_piSlicePoint != NULL)	delete[] m_piSlicePoint;
}

Bool CNewPred::CheckSlice(int iMBX, int iMBY, Bool bChkTop)
{
	int iNumMBX = m_iWidth / MB_SIZE;
	int iMBNum = iMBX + (iMBY * iNumMBX);
	for( int iLocal = 0; *(m_piSlicePoint + iLocal) >= 0; iLocal++ ) {
		if( *(m_piSlicePoint + iLocal) > iMBNum )
			break;
		if( *(m_piSlicePoint + iLocal) == iMBNum ) {
			if( bChkTop )
				return TRUE;
			else {
				if( iMBNum )
					return TRUE;
			}
		}
	}
	return FALSE;
}

int CNewPred::GetSliceNum(int iMBX, int iMBY)
{	
	int iNumMBX = m_iWidth / MB_SIZE;
	int iMBNum = iMBX + (iMBY * iNumMBX);
	for( int iLocal = 0; *(m_piSlicePoint + iLocal) >= 0; iLocal++ ) {
		if( iMBNum < *(m_piSlicePoint + iLocal))
			return (iLocal-1);
	}
	return (iLocal-1); // return Slice number
}

void CNewPred::IncrementVopID()
{
	for( int iLocal = 0, iMask = 1; iLocal < m_iNumBitsVopID; iLocal++, iMask <<= 1 ) {
		if( m_iVopID & iMask )
			continue;
		else {
			++m_iVopID;
			return;
		}
	}
	m_iVopID = 1;
}

int CNewPred::NextSliceHeadMBA(int iMBX, int iMBY)
{	
	int iNumMBX = m_iWidth / MB_SIZE;
	int iMBNum = iMBX + (iMBY * iNumMBX);
	for( int iLocal = 0; *(m_piSlicePoint + iLocal) >= 0; iLocal++ ) {
		if( *(m_piSlicePoint + iLocal) > iMBNum ) {	
			return(*(m_piSlicePoint + iLocal));
		}
	}
	return(-1);
}


int CNewPred::NowMBA(int vp_id)
{
	for( int i = 0; *(m_piSlicePoint + i) >= 0; i++ );

	if(vp_id >= i) return(-1);

	return(*(m_piSlicePoint + vp_id));
}

int CNewPred::GetCurrentVOP_id()
{
	return( m_iVopID );
}

void CNewPred::CopyBuftoNPRefBuf(int iSlice, int iBufCnt)
{
	if (m_bShapeOnly == FALSE) {	
		CopyBufUtoNPRefBufY(iSlice, iBufCnt);
		CopyBufUtoNPRefBufU(iSlice, iBufCnt);
		CopyBufUtoNPRefBufV(iSlice, iBufCnt);
	}
	return;
}

void CNewPred::SetQBuf( CVOPU8YUVBA *pRefQ0, CVOPU8YUVBA *pRefQ1 )
{                                                         
	m_pNPvopcRefQ0 = pRefQ0;
	m_pNPvopcRefQ1 = pRefQ1;
	return;
}

void CNewPred::CopyBufUtoNPRefBufY(int iSlice, int iBufCnt)
{
	Int i;
	Int iSize;

	iSize =0;
	for( i=0; i < iSlice; i++ ) {
		if (*(m_piSlicePoint+i+1)%m_iNPNumMBX)
			continue;
		iSize += m_pNewPredControl->NPRefBuf[i][iBufCnt]->iSizeY;
	}
	PixelC* RefpointY = (PixelC*) m_pNPvopcRefQ1->pixelsY () +
		(EXPANDY_REF_FRAME * m_rctNPFrameY.width) + iSize;
	memcpy(m_pNewPredControl->NPRefBuf[iSlice][iBufCnt]->pdata.pchY, RefpointY,
		 m_pNewPredControl->NPRefBuf[iSlice][iBufCnt]->iSizeY);
	return;
}

void CNewPred::CopyBufUtoNPRefBufU(int iSlice, int iBufCnt)
{
	Int i;
	Int iSize;
 
	iSize =0;
 	for( i=0; i < iSlice; i++ ) {
		if (*(m_piSlicePoint+i+1)%m_iNPNumMBX)
			continue;
		iSize += m_pNewPredControl->NPRefBuf[i][iBufCnt]->iSizeUV;
	}
	PixelC* RefpointU = (PixelC*) m_pNPvopcRefQ1->pixelsU () +
		((EXPANDY_REF_FRAME/2) * m_rctNPFrameUV.width) + iSize;
	memcpy(m_pNewPredControl->NPRefBuf[iSlice][iBufCnt]->pdata.pchU, RefpointU,
		 m_pNewPredControl->NPRefBuf[iSlice][iBufCnt]->iSizeUV);
	return;
}

void CNewPred::CopyBufUtoNPRefBufV(int iSlice, int iBufCnt)
{
	Int i;
	Int iSize;

	iSize =0;
 	for( i=0; i < iSlice; i++ ) {
		if (*(m_piSlicePoint+i+1)%m_iNPNumMBX)
			continue;
		iSize += m_pNewPredControl->NPRefBuf[i][iBufCnt]->iSizeUV;
	}
	PixelC* RefpointV = (PixelC*) m_pNPvopcRefQ1->pixelsV () +
		((EXPANDY_REF_FRAME/2) * m_rctNPFrameUV.width) + iSize;
	memcpy(m_pNewPredControl->NPRefBuf[iSlice][iBufCnt]->pdata.pchV, RefpointV,
		 m_pNewPredControl->NPRefBuf[iSlice][iBufCnt]->iSizeUV);
	return;
}

NP_WHO_AM_I CNewPred::Who_Am_I()
{
	return this->m_enumWho;
}

void * CNewPred::aalloc(int col, int row , int size)
{
	int i;
	void **buf1;
	void *buf2;
    
	buf1 = (void **)malloc(col*size);
	if (buf1 == NULL) {
		return ((void *)NULL);
	}
	buf2 = (void *)calloc(size,col*row);
	if (buf2 == NULL) {
		free(buf1);
		return ((void *)NULL);
	}

	for(i=0; i<col;i++){
		buf1[i] = (void *)((char *)buf2+ row*size*i );
	}

	return(buf1);
}

void CNewPred::afree(int **p)
{
	free(p[0]);
	free(p);
}

void CNewPred::SetNPRefBuf(NEWPRED_buf **pNewBuf, int vop_id, int iBufCnt)
{
	pNewBuf[iBufCnt]->vop_id = vop_id;

	CopyBuftoNPRefBuf(pNewBuf[iBufCnt]->iSlice, iBufCnt);

	return;
}

void CNewPred::ChangeRefOfSliceYUV(const PixelC*	ppxlcRef, const PixelC* Refbuf0,
		 Int iMBX, Int iMBY,CRct RefSize, char mode)
{
	Int i=0;
	Int	MBA;
	Int magnification;
	Int flag = 0;         // check whether padding in horizontal direction
	Int	head_x, length_x;
	PixelC  *left_pix, *right_pix, *point;
	Int p, q;

	PixelC*		Refpoint = (PixelC *)ppxlcRef + RefSize.left;

	switch(mode)
	{
	case 'Y':
		CopyBufYtoRefY(Refbuf0, RefSize);
		magnification = 1;
		break;
	case 'U':
		CopyBufUtoRefU(Refbuf0, RefSize);
		magnification = MB_SIZE/BLOCK_SIZE;
		break;
	case 'V':
		CopyBufVtoRefV(Refbuf0, RefSize);
		magnification = MB_SIZE/BLOCK_SIZE;
		break;
	default:
		assert(0);
		break;
	}

	MBA = NextSliceHeadMBA(iMBX, iMBY);

	head_x = iMBX * MB_SIZE / magnification;
	length_x = (((MBA - 1) % (m_iWidth / MB_SIZE)) + 1) * MB_SIZE / magnification - head_x;
	if (length_x < 0)
		length_x = m_iWidth / magnification - head_x;
	if ((head_x == 0) && (length_x == m_iWidth/magnification))
		flag = 1;

	// padding in horizontal direction
	if (flag == 0) {
		for (p = 0; p <	MB_SIZE / magnification; p++) {
			left_pix = Refpoint + (-RefSize.left) + head_x;
			right_pix = left_pix + length_x - 1;
			point = Refpoint;
			for (q = 0; q < head_x + (-RefSize.left); q++) {
				memcpy(point++, left_pix, 1);
			}
			point = right_pix + 1;
			for (q = 0; q < m_iWidth / magnification - head_x - length_x + (-RefSize.left); q++) {
				memcpy(point++, right_pix, 1);
			}
			Refpoint += RefSize.width;
		}
	}

	// padding above
	Refpoint = (PixelC *)ppxlcRef + RefSize.left;
	while(1) {
		Refpoint -= RefSize.width;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区三区忘忧草| 午夜电影久久久| 国产精品国产三级国产三级人妇| 国产精品女主播av| 18涩涩午夜精品.www| 色屁屁一区二区| 欧美在线观看视频一区二区三区| 福利一区二区在线| 91在线无精精品入口| 欧美三区在线视频| 日韩欧美一级特黄在线播放| 久久久久9999亚洲精品| 亚洲欧洲日韩女同| 日本不卡123| 国产大片一区二区| 91亚洲国产成人精品一区二区三 | 91网站在线观看视频| 久久久久国产精品麻豆ai换脸| 欧美成人乱码一区二区三区| 91搞黄在线观看| 免费成人av在线| 日韩综合小视频| 成人av网站免费观看| 在线观看日产精品| 日韩美女视频在线| 亚洲成a人在线观看| 成人小视频在线| 91国偷自产一区二区开放时间 | 91丝袜美女网| 欧美综合一区二区| 日韩欧美高清一区| 亚洲私人黄色宅男| 国产一区二区在线视频| 色8久久精品久久久久久蜜| 欧美精品久久天天躁| 国产日韩欧美精品电影三级在线 | 成人app在线观看| 欧美美女网站色| 亚洲国产精品av| 午夜精品视频在线观看| 国产成人免费在线| 色噜噜狠狠色综合中国| 精品粉嫩超白一线天av| 自拍偷拍亚洲欧美日韩| 九九九精品视频| 色天使色偷偷av一区二区| 99久久精品国产一区二区三区| 91亚洲精品乱码久久久久久蜜桃| 欧美一区二区三区在线视频| 国产精品入口麻豆九色| 久久国产夜色精品鲁鲁99| 一本到高清视频免费精品| 日韩精品一区二区三区老鸭窝| 综合激情成人伊人| 午夜电影网一区| 在线一区二区三区| 中文字幕巨乱亚洲| 国产毛片精品视频| 精品精品欲导航| 麻豆精品视频在线观看免费| 欧美日韩中文字幕一区二区| 亚洲美女一区二区三区| 99国产欧美久久久精品| 亚洲国产经典视频| 国产不卡视频一区二区三区| 久久久一区二区三区| 久久超碰97中文字幕| 精品免费视频.| 国产综合久久久久影院| 欧美刺激脚交jootjob| 天堂一区二区在线| 69久久99精品久久久久婷婷| 亚洲成人精品一区二区| 欧美三级电影网| 午夜久久电影网| 欧美一级在线观看| 精一区二区三区| 久久久久国色av免费看影院| 激情欧美一区二区| 国产喷白浆一区二区三区| 国产精品一线二线三线精华| 国产免费久久精品| 99re这里只有精品视频首页| 亚洲精品乱码久久久久久久久| 在线国产电影不卡| 午夜久久久久久| 日韩女同互慰一区二区| 精品一区二区三区视频| 久久久久国产精品麻豆| 成人黄色在线看| 亚洲人成人一区二区在线观看 | 天堂成人国产精品一区| 日韩欧美成人激情| 国产成人精品一区二区三区四区 | 成人av影视在线观看| 中文字幕视频一区二区三区久| av激情亚洲男人天堂| 一区二区三区精品视频| 欧美一级在线免费| 国产精品影音先锋| 亚洲精品免费在线| 欧美一区二区三区在线观看| 国产一区二区三区免费| 国产精品麻豆视频| 欧美日韩国产123区| 黄网站免费久久| 国产精品国模大尺度视频| 在线视频国内一区二区| 久久国产精品无码网站| 中文一区二区完整视频在线观看| 91网上在线视频| 奇米影视一区二区三区| 国产精品三级久久久久三级| 欧美日韩国产首页在线观看| 国产精品自产自拍| 亚洲综合区在线| wwww国产精品欧美| 日本福利一区二区| 久久99精品国产麻豆不卡| 亚洲欧美在线aaa| 91精品国产综合久久精品麻豆| 国产成人精品免费在线| 亚洲一二三区在线观看| 亚洲小少妇裸体bbw| 欧美大肚乱孕交hd孕妇| 91麻豆精东视频| 久久国产精品区| 一区二区视频在线| 久久众筹精品私拍模特| 欧美在线你懂的| 国产精品亚洲专一区二区三区| 亚洲永久免费av| 国产亚洲综合色| 欧美军同video69gay| 成人午夜视频福利| 免费在线成人网| 亚洲精品日韩专区silk| 久久久久久久久久久99999| 欧美肥妇bbw| 91小视频在线观看| 国产老肥熟一区二区三区| 性久久久久久久久久久久 | 91丨九色丨蝌蚪丨老版| 国产一区二区美女| 午夜精品久久久久久久久久久| 国产精品二区一区二区aⅴ污介绍| 精品久久久网站| 欧美日韩国产一区二区三区地区| 99这里都是精品| 国产精品影视在线| 久久激情五月婷婷| 亚洲国产日韩精品| 日韩美女啊v在线免费观看| 久久综合色天天久久综合图片| 欧美图区在线视频| 91网站在线播放| 成人国产在线观看| 国产69精品久久久久毛片| 老司机免费视频一区二区三区| 一二三四社区欧美黄| 亚洲欧洲无码一区二区三区| 2021国产精品久久精品| 欧美精品在线一区二区| 91精品1区2区| 91网页版在线| 9i看片成人免费高清| 成人福利视频网站| 国产精品99久| 国产九色sp调教91| 精品一区二区三区的国产在线播放| 日韩av电影一区| 日韩精彩视频在线观看| 五月婷婷激情综合网| 亚洲午夜免费视频| 一区二区三区精密机械公司| 亚洲日本护士毛茸茸| 国产精品久久久久7777按摩 | 色一区在线观看| 色综合久久99| 91碰在线视频| 91免费看视频| 在线亚洲人成电影网站色www| 在线影院国内精品| 欧美日韩一区二区在线观看| 欧美日本韩国一区二区三区视频| 欧美日韩一区久久| 88在线观看91蜜桃国自产| 欧美精品日韩一本| 337p亚洲精品色噜噜| 日韩亚洲欧美中文三级| 日韩欧美的一区二区| 久久只精品国产| 久久久国产精品午夜一区ai换脸| 26uuu亚洲| 国产欧美精品日韩区二区麻豆天美| 国产欧美一区二区三区沐欲| 国产精品二三区| 亚洲线精品一区二区三区八戒| 午夜在线成人av| 青青国产91久久久久久|