📄 memc_test.c
字号:
/******************************************************************************
Filename: memc_test.c
Descriptions
- MPEG4 MC block routines
History
-19.Dec.2003
draft
Copyright (c) 2003 SAMSUNG Electronics.
# However, Anybody can use this code without our permission.
******************************************************************************/
#include "2460addr.h"
#include "fim20_def.h"
#include "mc_test.h"
#include "me_test.h"
#include "memc_test.h"
#if (FIMVTEST_IMAGE_SIZE==QCIF)
#define FIMV_IMAGE_WIDTH (176)
#define FIMV_IMAGE_HEIGHT (144)
#define FIMV_DISPLAY_IMAGE_WIDTH (176+32)
#define FIMV_DISPLAY_IMAGE_HEIGHT (144+32)
#define TEST_PREV_IMAGE ((unsigned int)image_a1p)
#define TEST_CURR_IMAGE ((unsigned int)image_a2)
#elif (FIMVTEST_IMAGE_SIZE==CIF)
#define FIMV_IMAGE_WIDTH (352)
#define FIMV_IMAGE_HEIGHT (288)
#define FIMV_DISPLAY_IMAGE_WIDTH (240)
#define FIMV_DISPLAY_IMAGE_HEIGHT (196)
#define TEST_PREV_IMAGE ((unsigned int)image_b1p)
#define TEST_CURR_IMAGE ((unsigned int)image_b2)
#elif (FIMVTEST_IMAGE_SIZE==VGA)
#define FIMV_IMAGE_WIDTH (640)
#define FIMV_IMAGE_HEIGHT (480)
#define FIMV_DISPLAY_IMAGE_WIDTH (240)
#define FIMV_DISPLAY_IMAGE_HEIGHT (180)
#define TEST_PREV_IMAGE ((unsigned int)image_c1p)
#define TEST_CURR_IMAGE ((unsigned int)image_c2)
#endif
#define FIMV_MBLK_NUM ((FIMV_IMAGE_WIDTH/16)*(FIMV_IMAGE_HEIGHT/16))
#if (FIMVTEST_IMAGE_SIZE==QCIF)
extern const unsigned char image_a1p[];
extern const unsigned char image_a2[];
#endif
#if (FIMVTEST_IMAGE_SIZE==CIF)
extern const unsigned char image_b1p[];
extern const unsigned char image_b2[];
#endif
#if (FIMVTEST_IMAGE_SIZE==VGA)
extern unsigned char image_c1p[];
extern const unsigned char image_c2[];
#endif
static ME_VECTOR meVector[(FIMV_IMAGE_WIDTH/16)*(FIMV_IMAGE_HEIGHT/16)];
void TestMeMc(void)
{
IMAGE420 currImage; //no-padded image YCbCr420
IMAGE420 prevImage; //padded image YCbCr420
IMAGE420 mcedImage; //padded image YCbCr420
unsigned int imageWidth=FIMV_IMAGE_WIDTH;
unsigned int imageHeight=FIMV_IMAGE_HEIGHT;
unsigned int freeBufStartAddr=_NONCACHE_STARTADDRESS;
int i;
//currImage has already been in the read-only area.
AllocImage420(&currImage,TEST_CURR_IMAGE,imageWidth,imageHeight,IMAGE420_NO_PADDED);
printf("currImage addr(read only): %x\n",TEST_CURR_IMAGE);
//printf("The picture is the currImage. Press any key!\n");
//getchar();
//previous mcedImage has already been in the read-only area.
AllocImage420(&prevImage,TEST_PREV_IMAGE,imageWidth,imageHeight,IMAGE420_PADDED);
printf("prevImage addr(read only): %x\n",TEST_PREV_IMAGE);
//printf("The picture is the prevImage. Press any key!\n");
//getchar();
//mcedImage is used for MC output.
printf("mced Image addr(read only): %x\n",freeBufStartAddr);
freeBufStartAddr=
AllocImage420(&mcedImage,freeBufStartAddr,imageWidth,imageHeight,
IMAGE420_PADDED);
MeInitIsr();
McInitIsr();
#if ME_MC_GOB_OPERATION
for(i=0;i<(imageHeight/16);i++)
{
//Timer_Start(0);
MeEngineGob(&currImage,&prevImage,meVector,(imageWidth/16),
((i==0)? ME_FRAME_START_MODE : 0));
while(meDone==0);
//printf("ME(gob=%d) completed,",i);
//Timer_Start(0);
McEngineGob(&prevImage,&mcedImage,meVector,(imageWidth/16),
((i==0)? MC_FRAME_START_MODE : 0));
while(mcDone==0);
//printf("MC(gob=%d) completed.\n",i);
}
#else
//mtimer_start();
MeEngine(&currImage,&prevImage,meVector,0);
//printf("Wait until M.E. is completed.\n");
while(meDone==0);
printf("M.E. is completed!\n");
//Uart_TxEmpty(0);
//mtimer_start();
McEngine(&prevImage,&mcedImage,meVector,0);
//printf("Wait until M.C. is completed.\n");
while(mcDone==0);
printf("M.C. is completed!\n");
#endif
//printf("The picture is the mcedImage. Press any key!\n");
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -