?? utility.c
字號:
#include "utility.h"
u16 bufferIndex[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
RESULT prepare_buffer(u8* start_addr, ADI_DEV_BUFFER * buffer, u32 bufferNum, ADI_DEV_BUFFER_TYPE bufferType)
{
int i;
ADI_DEV_BUFFER *pWorkingBuffer = buffer;
if(!buffer)
return EJ_ERR_INVALID_PARAM;
switch (bufferType)
{
case ADI_DEV_CIRC:
{
pWorkingBuffer->Circular.Data = NULL; //supply by user
pWorkingBuffer->Circular.SubBufferCount = 4; //just a example
pWorkingBuffer->Circular.SubBufferElementCount = 512;
pWorkingBuffer->Circular.ElementWidth = 2; //total 1024 bytes
pWorkingBuffer->Circular.CallbackType = ADI_DEV_CIRC_FULL_BUFFER;
pWorkingBuffer->Circular.pAdditionalInfo = NULL;
}
break;
case ADI_DEV_1D:
{
for(i = 0; i < bufferNum; i++)
{
pWorkingBuffer->OneD.Data = NULL;
pWorkingBuffer->OneD.ElementCount = 512;
pWorkingBuffer->OneD.ElementWidth = 2;
pWorkingBuffer->OneD.CallbackParameter = (void *)(bufferIndex + i); // indicate which buffer make callback
pWorkingBuffer->OneD.ProcessedFlag = FALSE;
pWorkingBuffer->OneD.ProcessedElementCount = 0;
if(i == bufferNum - 1)
pWorkingBuffer->OneD.pNext = NULL;
else
pWorkingBuffer->OneD.pNext = (ADI_DEV_1D_BUFFER *)pWorkingBuffer + 1;
pWorkingBuffer->OneD.pAdditionalInfo = NULL;
pWorkingBuffer = (ADI_DEV_BUFFER *)pWorkingBuffer->OneD.pNext;
}
}
break;
case ADI_DEV_2D:
{
for(i = 0; i < bufferNum; i++)
{
pWorkingBuffer->TwoD.Data = start_addr + i * FRAME_SIZE;
pWorkingBuffer->TwoD.ElementWidth = 2;
#ifdef ENTIRE_FIELD_MODE
pWorkingBuffer->TwoD.XCount = ADI_ITU656_PAL_LINE_WIDTH / pWorkingBuffer->TwoD.ElementWidth;
pWorkingBuffer->TwoD.YCount = ADI_ITU656_PAL_HEIGHT;
#endif
#ifdef ACTIVE_FIELD_MODE
pWorkingBuffer->TwoD.XCount = ADI_ITU656_PAL_WIDTH*2 / pWorkingBuffer->TwoD.ElementWidth;
pWorkingBuffer->TwoD.YCount = ADI_ITU656_PAL_ACTIVE_LINES;
#endif
pWorkingBuffer->TwoD.XModify = 2;
pWorkingBuffer->TwoD.YModify = 2;
pWorkingBuffer->TwoD.CallbackParameter = (void *)(bufferIndex + i); // indicate which buffer make callback
pWorkingBuffer->TwoD.ProcessedFlag = FALSE;
pWorkingBuffer->TwoD.ProcessedElementCount = 0;
if(i == bufferNum - 1)
pWorkingBuffer->TwoD.pNext = NULL;
else
pWorkingBuffer->TwoD.pNext = (ADI_DEV_2D_BUFFER *)pWorkingBuffer + 1;
pWorkingBuffer->TwoD.pAdditionalInfo = NULL;
pWorkingBuffer = (ADI_DEV_BUFFER *)pWorkingBuffer->TwoD.pNext;
}
}
break;
default:
break;
}
return EJ_ERR_NONE;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -