📄 main.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// nWidth & nPitch must be divided 16
// nWidth >= 16
// c
void osd_c(unsigned char* pIn0, unsigned char* pMask, int longth);
// asm
void osd(unsigned char* pIn0, unsigned char* pMask, int longth);
void MyFun(void);
#pragma DATA_ALIGN(g_Image0, 8)
#pragma DATA_ALIGN(g_Image1, 8)
#pragma DATA_ALIGN(g_Image2, 8)
#define LONGTH 6400
unsigned char g_Image0[LONGTH];
unsigned char g_Image1[LONGTH];
unsigned char g_Image2[LONGTH];
void main()
{
int i;
unsigned char bTmp;
int nTmp;
int nErr;
//unsigned char test[64]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,3,6,6,6,6,6,6,6,6,6,6,4,6,6,0,0,0,0,0,0,0,0,0,18,19,20,21,22,23,0,0,0,0,90,1,1,7,8,9,0,1,2};
//MyFun();
srand((unsigned int) time(NULL));
for( i = 0; i < LONGTH; i++)
{
bTmp = rand() % 128;
g_Image0[i] = bTmp;
g_Image1[i] = bTmp;
g_Image2[i] = rand() % 128;
printf("g_Image0[%d]is %d ",i,g_Image0[i]);
printf("g_Image1[%d]is %d ",i,g_Image1[i]);
printf("g_Image2[%d]is %d\n",i,g_Image2[i]);
}
osd_c(g_Image0, g_Image2, LONGTH);
osd(g_Image1, g_Image2, LONGTH);
// test output
nErr = 0;
for( i = 0; i < LONGTH; i++ )
{
printf("g_Image0[%d] is %d ",i,g_Image0[i]);
printf("g_Image1[%d] is %d\n",i,g_Image1[i]);
nTmp = g_Image0[i] - g_Image1[i];
if (nTmp != 0)
{
nErr = 1;
printf("Error !!!, i = %d, Data0 = %d, Data1 = %d \n", i, g_Image0[i], g_Image1[i]);
break;
}
}
if (nErr == 0)
printf(" Good Job, No Error !!!\n");
}
void osd_c(unsigned char* pIn0, unsigned char* pMask, int longth)
{
int i;
//unsigned char* pSrc, *pDst;
//int nTmp;
// pSrc = pIn0;
//pDst = pIn0;
for( i = 0; i < longth; i++ )
{
// nTmp = ((*pMask)==0) ? (*pSrc++): (*pMask++);
//*pDst++ = nTmp;
if(*pMask!=0)
{
*pIn0=*pMask;
}
pMask++;
pIn0++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -