mot_est.h

来自「H.263的编码程序,加了CPU指令优化,VC版.」· C头文件 代码 · 共 74 行

H
74
字号
/*!
********************************************************
*\file
*    mot_est.h
*\brief
*    interface for functions which is used for motion estimation.
*\date
*    12/6/2002
*
********************************************************/
#ifndef MOT_EST_H
#define MOT_EST_H

#include "HEnc.h"

//! grab vector
void grabVec(H263VencStatus *encoder, MCParam *MC, int BACKWARD);
//! find predictive MV
void FindPMV(MotionVector *MV[6][MBR+1][MBC+2], int x, int y, int *pmv0, int *pmv1, int block, int newgob, int half_pel);
//! find predictive MV for B picture
void FindPMV_B(MotionVector *MV[6][MBR+1][MBC+2], int x, int y, 
             int *pmv0, int *pmv1, int newgob, int half_pel,int BACKWARD);
//! FS search
void mv_search_fs(H263VencStatus *encoder, MCParam *MC, int x, int y, int blocksize, int BACKWARD);
//! MVFAST search
void mv_search_dmd(H263VencStatus *encoder, MCParam *MC, int x, int y, int blocksize, int BACKWARD);
//! Find half pel values of MV
void findhalfpel(H263VencStatus *encoder, MCParam *MC, int x, int y, int blocksize, int BACKWARD);
//! Set MV to zero
void zeroVec(MotionVector *MV);
//! choose mode
void choose_mode(H263VencStatus *encoder, MCParam *MC, int x, int y);
//! if the MV is zero
int  ZeroVector(MotionVector *mv);
//! find neighbour MV
void FindNbrMV(MotionVector *MV[6][MBR+1][MBC+2], int block, int index, 
			   int mb_x, int mb_y, int *vec_x, int *vec_y, int BACKWARD);
//! print all mv data for a macroblock
void printmv(H263VencStatus *encoder, MCParam *MC, int r, int c, int BACKWARD);
//! find MV for chroma block according to MV(s) of luma block
void findchromMV(H263VencStatus *encoder, MCParam *MC, int x, int y, int *dx, int *dy, int BACKWARD);
//! find both forward and backward MV for chroma block in direct prediction mode of B pictures
void findchromMV_dir(H263VencStatus *encoder, MCParam *MC, int x, int y, 
					 int *dx1, int *dy1, int *dx2, int *dy2);
//! save vectors for the use of following B frames
void saveVec(MCParam *MC, int pels, int lines);


//C language function declare///////////////////////////////////////////////////////

void interpolate_lum_c(H263VencStatus *encoder);

int me_sad_a_c(int lx1, int lx2, int x1, int y1, int x2,  int y2, 
			 unsigned char *P1, unsigned char *P2,  
			 int sad_last, int blocksize);
int me_sad_b_c(int lx1, int lx2,  int x1, int y1, int x2,  int y2, 
			 unsigned char *P1, unsigned char *P2,
			 int sad_last, int blocksize);

//sse function declare//////////////////////////////////////////////////////////////

void interpolate_lum_sse(H263VencStatus *encoder);

int me_sad_a_sse(int lx1, int lx2, int x1, int y1, int x2,  int y2, 
			 unsigned char *P1, unsigned char *P2,  
			 int sad_last, int blocksize);

int me_sad_b_sse(int lx1, int lx2,  int x1, int y1, int x2,  int y2, 
			 unsigned char *P1, unsigned char *P2,
			 int sad_last, int blocksize);



#endif

⌨️ 快捷键说明

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