⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 motioncompute.h

📁 DM642的mpeg4编码
💻 H
字号:
#ifndef _MOTIONCOMPUTE_H_
#define _MOTIONCOMPUTE_H_

#    include <stdio.h>
#include "../mpeg4/mpeg4.h"
#include "../mpeg4/framecode.h"

typedef struct 
{
    int max_rangeX, max_rangeY, min_rangeX, min_rangeY;      /*  mv range  */
 
    short iFcode;

	int chromaX, chromaY, chromaSAD; 

	int chroma;

	int LumTempBlockSad[4];  	

	int iMinSad[5];             /*  sad for four Y block */

	short iQuant;

    short iExtWidth;

	VECTOR PredMV;				
	/*
	short* RefP[6];	           
	short* CurY;		       
	short* CurU, *CurV;	      
	
	short* RefQuarl;
	*/
//lvxu080326*****************************
	unsigned char* RefP[6];	           
	unsigned char* CurY;		       
	unsigned char* CurU, *CurV;	      
	
	unsigned char* RefQuarl;
//*****************************


	unsigned int onemvbit;	
	unsigned int fourmvbit;		

	unsigned int dir;			

	VECTOR CurrentMv[5];	

	short rounding;			    
	
	VECTOR DirMvFor[4];
    VECTOR DirMvBack[4];

	VECTOR * referencemv;      

	short* dctSpace;

	short* mpeg_quant_matrices;

}MvSearchData;

//static unsigned int ComputBlockSad(unsigned char * pCur, unsigned char* pRef, short iStride)

/*
typedef int (ComputBlockSadPtr) (unsigned char * pCur, unsigned char* pRef, int iStride);

//typedef ComputBlockSad *ComputBlockSadPtr;

ComputBlockSadPtr *ComputBlockSad;
*/



typedef void(CheckFunc)(int x, int y, MvSearchData* Data, short Direction);

int SearchBlockBi_C(unsigned char* cur, unsigned char* ref1, unsigned char* ref2, short stride);

unsigned int SearchMacroBlock_C(unsigned char* cur, unsigned char* ref, unsigned int stride, unsigned int best_sad);

unsigned int SearchMacroBlockBi_C(unsigned char* cur, unsigned char* ref1, unsigned char* ref2, unsigned int stride);

void MEPre(VECTOR* pMv, short x, short y, short iMBWidth, short iMBHeight, MacroBlock* pRefMBs);

int ComputeChromaSAD(int dx, int dy, MvSearchData* pData);

void DiaSearch1(short x, short y, MvSearchData* pData, short bDirection, CheckFunc* CheckMember);

void DiaSearch2(int x, int y, MvSearchData* pData, short bDirection, CheckFunc* CheckMember);

void SubpixelSearch(VECTOR centerMV, MvSearchData* pData, short dir, CheckFunc* CheckMember);

void SearchBlock(MvSearchData* pOldData,
				 int x, int y,
				 short  iMBWidth,
				 short  iWidth, short iHeight,
				 MacroBlock* pCurMB,
				 MacroBlock* Mbs,
				 short block,
				 MvSearchData* pData);

int SkipModeDecision(const Image8 * Current, const Image8 * Reference,
					 const int x, const int y,
					 const short iStride, const unsigned int iQuant);

void GetMBParameter(Encoder* pEncoder, 
					Image8* pCurImage,
				    Image8* pRefImage,
				    MacroBlock* pCurMB, 
				    MvSearchData* pData, 
				    short x, 
				    short y);


void GetMBCodeType(MvSearchData* pData,
				   MacroBlock * pCurMB,
				   int x, int y,
				   short iMBWidth,
				   short coding_type,
				   int skip_sad);

void pFrame_ME(Encoder* pEncoder);

unsigned int getMinFcode(int MVmax);

void CheckMacroBlockMember(int x, int y, MvSearchData* pData, unsigned int Direction);

void pFrameEncode(Encoder* pEncoder,Stream* bs);
void pFrameEncode8(Encoder* pEncoder,Stream* bs);

void pFrameEncode8EDMA(Encoder* pEncoder,Stream* bs);
#endif


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -