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

📄 buffer_init.c

📁 ADI的ADSP-BF561下实现多媒体开发的通用框架。
💻 C
字号:
//buffer_init
#include <services/services.h>
#include <ezkitutilities.h>
#include <drivers/adi_dev.h>
#include <drivers/ppi/adi_ppi.h>
#include "../Buffer.h"
/************************************************************************
*Description:Initialises the video in/out peripheral DMA buffers and also 
*			 the MEMDMA buffers
*			 TRANSFER_LENGTH is 4 (32-bit). On BF561 the maximum data width transfer
*			 is 32 bit.  
************************************************************************/


/************************************************************************
	Function:buffer_init
	
	Description:Maintain four buffers in L3 memory. The number can be 
				increased but correspondingly case statements should be
				added. The buffers are managed as seperate variables to 
				allow explicit placements in the memory
************************************************************************/


void buffer_init()
{
	int i;
	for (i = 0; i < NUM_BUFFERS; i++) {
		switch (i)
		{		
			case 0:
				Buffer2D_IN[i].Data = sFrame0IN;
				break;
			case 1: 
				Buffer2D_IN[i].Data = sFrame1IN;
				break;
			case 2: 
				Buffer2D_IN[i].Data = sFrame2IN;
				break;
			case 3: 
				Buffer2D_IN[i].Data = sFrame3IN;
				break;
		}
		Buffer2D_IN[i].ElementWidth = TRANSFER_LENGTH;
		Buffer2D_IN[i].XCount = 1716/TRANSFER_LENGTH;
		Buffer2D_IN[i].XModify = TRANSFER_LENGTH;
		Buffer2D_IN[i].YCount = NUMROWS;
		Buffer2D_IN[i].YModify = TRANSFER_LENGTH;
		Buffer2D_IN[i].CallbackParameter =&Buffer2D_IN[0];
		Buffer2D_IN[i].pNext = &Buffer2D_IN[i+1];
	}
	Buffer2D_IN[NUM_BUFFERS-1].pNext = NULL;
	
	for (i = 0; i < NUM_BUFFERS; i++) {
		switch (i)
		{		
			case 0:
				Buffer2D_OUT[i].Data = sFrame0OUT;
				break;
			case 1: 
				Buffer2D_OUT[i].Data = sFrame1OUT;
				break;
			case 2: 
				Buffer2D_OUT[i].Data = sFrame2OUT;
				break;
			case 3: 
				Buffer2D_OUT[i].Data = sFrame3OUT;
				break;	
		}
		Buffer2D_OUT[i].ElementWidth = TRANSFER_LENGTH;
		Buffer2D_OUT[i].XCount = 1716/TRANSFER_LENGTH;
		Buffer2D_OUT[i].XModify = TRANSFER_LENGTH;
		Buffer2D_OUT[i].YCount = NUMROWS;
		Buffer2D_OUT[i].YModify = TRANSFER_LENGTH;
		Buffer2D_OUT[i].CallbackParameter =NULL;//&Buffer2D_IN[0];
		Buffer2D_OUT[i].pNext = &Buffer2D_OUT[i+1];
	}
	Buffer2D_OUT[NUM_BUFFERS-1].pNext = NULL;
}

/************************************************************************
	Function:L3BufferInit
	
	Description:
************************************************************************/
void L3BufferInit(ADI_DMA_2D_TRANSFER * buffer, char * startaddress)
{
		buffer->StartAddress = startaddress;
		buffer->XCount = 1716/TRANSFER_LENGTH;
		buffer->XModify = TRANSFER_LENGTH;
		buffer->YCount =  L2NUMROWS;
		buffer->YModify = TRANSFER_LENGTH;
}

/************************************************************************
	Function:L3Buffer_FullFrameInit
	
	Description:
************************************************************************/
void L3Buffer_FullFrameInit(ADI_DMA_2D_TRANSFER * buffer, char * startaddress)
{
		buffer->StartAddress = startaddress;
		buffer->XCount = 1716/TRANSFER_LENGTH;
		buffer->XModify = TRANSFER_LENGTH;
		buffer->YCount =  NUMROWS;
		buffer->YModify = TRANSFER_LENGTH;
}

/************************************************************************
	Function:L2BufferInit
	
	Description:
************************************************************************/

void L2BufferInit(ADI_DMA_2D_TRANSFER * buffer, char * startaddress)
{
		buffer->StartAddress = startaddress;
		buffer->XCount = 1716/TRANSFER_LENGTH;
		buffer->XModify = TRANSFER_LENGTH;
		buffer->YCount =  L2NUMROWS;
		buffer->YModify = TRANSFER_LENGTH;
}

⌨️ 快捷键说明

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