亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bf_sdk.cpp

?? ADI blackfin DSP的基于device friver的jpeg壓縮算法
?? CPP
字號:
#include "EJ_BBS.h"
#include "utility.h"
#include <string.h>
#include <stdio.h>			
#include <stdlib.h>
#define   DO_CYCLE_COUNTS
#include <cycle_count.h>

#include "install_codec_heap.h"
#include "jpeg.h"

cycle_t g_s[15];
cycle_t g_x[15];

#define DMA_CHANNEL_NUM		(5)	//one for ppi, 4 for mem dma
#define SEC_HANDLER_NUM		(0)
#define DCB_CALLBACK_NUM	(0)
#define DEV_NUM				(1)


//#define     ENTIRE_FIELD_MODE
#define		ACTIVE_FIELD_MODE   // uncomment for Active Field 

#if defined ACTIVE_FIELD_MODE
#define FRAME_SIZE   (2 * ADI_ITU656_PAL_WIDTH * ADI_ITU656_PAL_ACTIVE_FLINES)		// only get one field , 2 bytes per pixel for uyvy
#else
#define FRAME_SIZE	(ADI_ITU656_PAL_LINE_WIDTH * ADI_ITU656_PAL_HEIGHT)		
#endif


//extern "asm" int ldf_slow_heap_space;
extern "asm" int ldf_slow_heap_space; 
extern "asm" int ldf_L1_heap_space, ldf_L1_heap_length;
extern "asm" int ldf_L2_heap_space, ldf_L2_heap_length;

u8 *pField		 	= (u8*)NULL;		// in ppi, this var set to ppi dst mem pool

u8 *pFrame_U 			= (u8*)NULL;
u8 *pFrame_Y 			= (u8*)NULL;
u8 *pFrame_V 			= (u8*)NULL;


ADI_DMA_2D_TRANSFER		src_info_Y_1 = {0}, dst_info_Y_1 = {0};
ADI_DMA_2D_TRANSFER		src_info_Y_2 = {0}, dst_info_Y_2 = {0};
ADI_DMA_2D_TRANSFER		src_info_U = {0}, dst_info_U = {0};
ADI_DMA_2D_TRANSFER		src_info_V = {0}, dst_info_V = {0};


bool g_field_in = false;
bool g_Y 		= false;
bool g_UV		= false;

//  This is the callback function for the DMA.
static void Memory_Callback_Y(
	void *AppHandle,
	u32  Event,
	void *pArg)
{
	
	// watch for errors
	if (Event == ADI_DMA_EVENT_ERROR_INTERRUPT) {
		Event = Event;
	}

	g_Y = true;
}


static void Memory_Callback_V(
	void *AppHandle,
	u32  Event,
	void *pArg)
{
	
	// watch for errors
	if (Event == ADI_DMA_EVENT_ERROR_INTERRUPT) {
		Event = Event;
	}

	g_UV = true;
}

static void Memory_Callback_U(
	void *AppHandle,
	u32  Event,
	void *pArg)
{
	
	// watch for errors
	if (Event == ADI_DMA_EVENT_ERROR_INTERRUPT) {
		Event = Event;
	}

#if defined(__ADSP_TETON__)	
	((EJ_BBS *)AppHandle)->start_memdma(ADI_DMA_MDMA1_1, &dst_info_V, &src_info_V, 1, Memory_Callback_V);
#else
		
#endif

}


static void ppiCallback(
	void *AppHandle,
	u32  Event,
	void *pArg)
{
	
	static unsigned int Counter = 0;	// count the number of input buffers processed
	
	// CASEOF (event type)
	switch (Event) {
		
		// CASE (buffer processed)
		case ADI_DEV_EVENT_BUFFER_PROCESSED:
			//((EJ_BBS *)AppHandle)->set_dev_stop(DEV_PPI1);
			// point to the buffer
			if((u32)pArg == 0x1)
			{
			   g_field_in = true;
			   
			   ((EJ_BBS *)AppHandle)->start_memdma(ADI_DMA_MDMA1_0, &dst_info_Y_1, &src_info_Y_1, 1, (ADI_DCB_CALLBACK_FN)Memory_Callback_Y);
			   ((EJ_BBS *)AppHandle)->start_memdma(ADI_DMA_MDMA1_1, &dst_info_U, &src_info_U, 1, Memory_Callback_U);
			}
			if((u32)pArg == 0x2)
			{
			    g_field_in = true;

			}
			// increment our counter
			//Counter++;
			break;
			
		// CASE (an error)
		case ADI_DEV_EVENT_DMA_ERROR_INTERRUPT:
		case ADI_PPI_EVENT_ERROR_INTERRUPT:
		
			// turn on all LEDs and wait for help
//			ezTurnOnAllLEDs();
			while (1) ;
			
	// ENDCASE
	}
	
	// return
}




/*
unsigned long file_size(FILE *fp)

{

	unsigned long pos_start, pos_end, pos_cur;

	pos_cur = ftell(fp);

	fseek(fp,0,SEEK_SET);

	pos_start = ftell(fp);

	fseek(fp,0,SEEK_END);

	pos_end = ftell(fp);

	fseek(fp, pos_cur, SEEK_SET);

	return (pos_end - pos_start);

} 

*/

void main(void)
{
	u8 *mem_sys        	= (u8*)NULL;
    u32 sysMemUsed = 0,
    	ddrMemUsed = 0;
    RESULT rst = EJ_ERR_NONE;
    FILE *fp ;
    
    int heap_space ;
    int heap_L3, heap_L2, heap_L1;
    
    // table of configuration values for the PPI on input	
	ADI_DEV_CMD_VALUE_PAIR InboundConfigurationTable [] = {
		{ ADI_DEV_CMD_SET_DATAFLOW_METHOD, 		(void *)ADI_DEV_MODE_CHAINED	},
		{ ADI_PPI_CMD_SET_CONTROL_REG,	 		(void *)0x00c0					},
		{ ADI_PPI_CMD_SET_LINES_PER_FRAME_REG,	(void *)288	},
		{ ADI_DEV_CMD_END,						NULL						    },
	};
	
	ADI_DEV_2D_BUFFER buffer2D;
	
	EJ_BBS  bbs ; 
	
			
	HANDLE session = NULL;
	
	
	bbs.init_core();
	
	mem_sys = (u8 *)malloc(1024);
	heap_space = heap_space_unused(0);
	

	rst = bbs.init_system_service(mem_sys, &sysMemUsed, DMA_CHANNEL_NUM, SEC_HANDLER_NUM, DCB_CALLBACK_NUM);
	if(EJ_ERR_NONE != rst)
		return;
		
	rst = bbs.init_device_driver(mem_sys + sysMemUsed, &ddrMemUsed, DEV_NUM);
	if(EJ_ERR_NONE != rst)
		return;
	
	// creat my own heap 
	heap_L3 = bbs.creat_alternate_heap((void*)&ldf_slow_heap_space, 0x00400000); // 4M bytes
	heap_L2 = bbs.creat_alternate_heap((void*)&ldf_L2_heap_space, 0x1a000);		// 104K
	heap_L1 = bbs.creat_alternate_heap((void*)&ldf_L1_heap_space, 0x4000);		// 16K
//
	// allocate video_in frame memory from my own heap
	//pField = (u8*)heap_malloc(heap_L3, 4*720*288);
	pField = (u8*)heap_malloc(heap_L3, 2*720*288);
//	pFiled2 = (u8*)heap_malloc(heap_index1, 2*720*288);
	
	pFrame_U  = (u8*)heap_malloc(heap_L3, 3*360*288);
	pFrame_Y  = pFrame_U + 360 * 288;
	pFrame_V  = pFrame_Y + 360 * 288;
	heap_space = heap_space_unused(heap_L3);

	//prepqre buffer for the ppi
	// field buffer 1

	buffer2D.Data = (void*)pField;
	buffer2D.ElementWidth = 2;
	
#ifdef	ENTIRE_FIELD_MODE
	buffer2D.XCount = ADI_ITU656_PAL_LINE_WIDTH / buffer2D.ElementWidth;
	buffer2D.YCount = ADI_ITU656_PAL_HEIGHT;
#endif
#ifdef ACTIVE_FIELD_MODE //one field
	buffer2D.XCount = ADI_ITU656_PAL_WIDTH*2 / buffer2D.ElementWidth;
	buffer2D.YCount = 576; //ADI_ITU656_PAL_ACTIVE_FLINES;
#endif
	
	buffer2D.XModify					= 2;
	buffer2D.YModify					= 2;
	buffer2D.CallbackParameter 			= (void *)0x1;		// never set CallbackParameter to 0, sys will take for granted that no need to make callback
	buffer2D.ProcessedFlag 				= FALSE;
	buffer2D.ProcessedElementCount 		= 0;
	buffer2D.pNext						= (adi_dev_2d_buffer *)NULL;//&buffer2D[1];
	buffer2D.pAdditionalInfo			= NULL;

	
	// configuration the ppi device
#if defined(__ADSP_TETON__)
	rst = bbs.config_device(DEV_PPI1, InboundConfigurationTable, ppiCallback);
#else
	rst = bbs.config_device(DEV_PPI, InboundConfigurationTable, ppiCallback);
#endif
	if(EJ_ERR_NONE != rst)
		return;	
	

		
	// set the buffer to ppi
#if defined(__ADSP_TETON__)
	rst = bbs.set_dev_buffer(DEV_PPI1, (ADI_DEV_BUFFER *)(&buffer2D), ADI_DEV_2D);
#else
	rst = bbs.set_dev_buffer(DEV_PPI, (ADI_DEV_BUFFER *)(&buffer2D), ADI_DEV_2D);
#endif
	if(EJ_ERR_NONE != rst)
		return;

	// config and open memory dma stream
#if defined(__ADSP_TETON__)
	rst = bbs.config_memdma(ADI_DMA_MDMA1_0);
	rst = bbs.config_memdma(ADI_DMA_MDMA1_1);
#else
	rst = bbs.config_memdma(ADI_DMA_MDMA_0);
#endif
	if(EJ_ERR_NONE != rst)
		return;
			
	// set the memory dma buffer 
	// 	IYU2_Y
	src_info_Y_1.StartAddress = (void *)((u8* )pField + 1);
	src_info_Y_1.XCount  = 360 ;
	src_info_Y_1.XModify = 4;				
	src_info_Y_1.YCount  = 288;
	src_info_Y_1.YModify = 4;				

	dst_info_Y_1.StartAddress = (void *)pFrame_Y;  
	dst_info_Y_1.XCount  = 360;
	dst_info_Y_1.XModify = 1;				
	dst_info_Y_1.YCount  = 288;
	dst_info_Y_1.YModify = 1;
	
	// IYU2_U
	src_info_U.StartAddress = (void *)((u8* )pField);
	src_info_U.XCount  = 360 ;
	src_info_U.XModify = 4;				
	src_info_U.YCount  = 288;
	src_info_U.YModify = 4;					
	
	dst_info_U.StartAddress = (void*)pFrame_U;  
	dst_info_U.XCount  = 360;
	dst_info_U.XModify = 1;					
	dst_info_U.YCount  = 288;
	dst_info_U.YModify = 1;			
	
	// IYU2_U
	src_info_V.StartAddress = (void *)((u8* )pField + 2);
	src_info_V.XCount  = 360 ;
	src_info_V.XModify = 4;				
	src_info_V.YCount  = 288;
	src_info_V.YModify = 4;				
	
	
	dst_info_V.StartAddress = (void*)pFrame_V;  
	dst_info_V.XCount  = 360;
	dst_info_V.XModify = 1;					
	dst_info_V.YCount  = 288;
	dst_info_V.YModify = 1;		
	
	fp = fopen( "encode_jpeg.jpg", "wb+" );
		
	// start ppi data transfer
#if defined(__ADSP_TETON__)
	bbs.set_dev_start(DEV_PPI1);
#else
	bbs.set_dev_start(DEV_PPI);
#endif


//	g_field_in = true;
	while(1)
	{
	    g_field_in = g_field_in;
	    if(g_UV && g_Y)
	    {	
	        g_field_in = false;
	        g_UV = false;
	        g_Y  = false;
	
	        session = init_jpeg_enc(fp, pFrame_U, IYU2, 360, 288, heap_L1,heap_L2,heap_L3);
	        if(session == NULL)
	        	return;
	                START_CYCLE_COUNT(g_s[0]);
	        jpg_encode();//test
                    STOP_CYCLE_COUNT(g_x[0],g_s[0]);
	        
	        fclose(fp);
	             
		
	    }
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区激情在线| 欧美国产日韩精品免费观看| 国产精品18久久久久久vr| 亚洲国产美国国产综合一区二区| 国产精品看片你懂得| 久久欧美中文字幕| 久久综合久久综合久久综合| 91精品婷婷国产综合久久竹菊| 欧美三级电影网| 欧美日韩精品一区二区在线播放| 在线观看亚洲成人| 欧美精品久久99久久在免费线 | 欧美性生活久久| 成人做爰69片免费看网站| 99久久综合国产精品| 国产aⅴ精品一区二区三区色成熟| 久久精品噜噜噜成人88aⅴ| 国模一区二区三区白浆| 国产高清不卡一区| gogogo免费视频观看亚洲一| 91免费小视频| 在线观看免费成人| 欧美一区二区大片| 久久色视频免费观看| 国产精品青草久久| 亚洲福利国产精品| 精品一区二区久久| 国产米奇在线777精品观看| 国产一区美女在线| 一本色道久久综合亚洲精品按摩 | 午夜天堂影视香蕉久久| 热久久久久久久| 成人黄色免费短视频| 在线观看视频一区| 日韩美一区二区三区| 中文字幕一区av| 亚洲成av人影院在线观看网| 韩国av一区二区三区四区| 99re这里只有精品6| 欧美一区二区在线播放| 日本一区二区动态图| 午夜精品福利一区二区三区av| 国产一区视频网站| 欧美日韩精品系列| 国产女同互慰高潮91漫画| 亚洲成av人影院| 成人精品视频网站| 精品乱人伦小说| 亚洲日本欧美天堂| 国产精品一区二区不卡| 欧美精品三级日韩久久| 亚洲图片另类小说| 国产一区二区三区免费在线观看 | 日韩av一二三| 一本到三区不卡视频| 2024国产精品| 日韩黄色一级片| 91传媒视频在线播放| 欧美国产日韩在线观看| 久草精品在线观看| 91精品黄色片免费大全| 欧美激情一区二区在线| 久久91精品久久久久久秒播 | 国产不卡在线一区| 欧美变态tickling挠脚心| 亚洲二区在线观看| 色国产综合视频| 中文字幕一区二区不卡 | 欧美综合一区二区| 亚洲人快播电影网| 丁香婷婷深情五月亚洲| 久久久蜜桃精品| 久久99九九99精品| 精品人在线二区三区| 日本特黄久久久高潮| 欧美视频日韩视频| 亚洲精品视频在线看| 成人一道本在线| 久久免费视频一区| 国产精品自拍毛片| 亚洲国产精品黑人久久久| 精品一区二区免费视频| 91精品免费观看| 麻豆一区二区99久久久久| 日韩欧美国产综合一区| 麻豆精品久久精品色综合| 精品国产区一区| 国产精品911| 国产精品美女视频| 99久久婷婷国产精品综合| 国产精品卡一卡二卡三| 91一区一区三区| 久久久久久久综合日本| 成人精品免费网站| 一区二区三区丝袜| 欧美日韩精品一区二区在线播放| 日本一区中文字幕| 久久综合资源网| 亚洲国产wwwccc36天堂| 日韩一级大片在线观看| 国产乱人伦精品一区二区在线观看 | 色综合久久天天| 亚洲一区二区三区爽爽爽爽爽 | 久久97超碰色| 国产精品美女一区二区在线观看| 色婷婷综合中文久久一本| 亚洲v中文字幕| 久久久久久免费| 91色porny在线视频| 日韩avvvv在线播放| 精品三级av在线| 色综合欧美在线| 人妖欧美一区二区| 亚洲欧洲精品一区二区精品久久久 | 蜜臀av国产精品久久久久| 国产婷婷一区二区| 欧美日韩一级二级| 国产精品一二二区| 性久久久久久久久| 国产精品亲子乱子伦xxxx裸| 在线91免费看| 99视频有精品| 国产麻豆精品95视频| 亚洲一区二区成人在线观看| 久久久久久97三级| 欧美精品精品一区| 一本大道久久a久久综合婷婷| 麻豆91精品视频| 亚洲成人777| 亚洲欧美日韩国产综合| 久久久久久久精| 91精品一区二区三区久久久久久| 91在线视频播放地址| 久久er精品视频| 视频一区视频二区中文| 亚洲另类在线一区| 亚洲人成网站色在线观看| 久久五月婷婷丁香社区| 欧美一区二区三区在线| 91精品福利视频| 91色综合久久久久婷婷| 国产91富婆露脸刺激对白| 免费成人在线播放| 亚洲va韩国va欧美va精品 | 欧美久久免费观看| 91亚洲资源网| 91天堂素人约啪| 成人福利视频网站| a4yy欧美一区二区三区| 国产一区二区美女诱惑| 56国语精品自产拍在线观看| 一本到三区不卡视频| 丁香六月久久综合狠狠色| 国产精品1区2区3区在线观看| 奇米影视7777精品一区二区| 午夜精品久久久久久久久 | 欧美日韩国产首页| 欧美在线啊v一区| 欧美日韩一区中文字幕| 欧美视频自拍偷拍| 91精品麻豆日日躁夜夜躁| 91精品国产综合久久久蜜臀粉嫩 | 激情都市一区二区| 极品美女销魂一区二区三区免费| 蜜臀av一区二区在线免费观看| 热久久国产精品| 国产一区二区在线视频| 精品夜夜嗨av一区二区三区| 国产成人午夜精品影院观看视频| 国产酒店精品激情| 成人夜色视频网站在线观看| 成人免费高清视频在线观看| 波多野结衣中文字幕一区 | 国产成人免费9x9x人网站视频| 国产精品乡下勾搭老头1| 丁香婷婷综合激情五月色| 91性感美女视频| 91精品国产综合久久福利软件| 日韩欧美一区二区在线视频| 久久久久久99精品| 亚洲精品五月天| 久久不见久久见免费视频7| a级精品国产片在线观看| 91福利精品第一导航| 日韩免费性生活视频播放| 久久尤物电影视频在线观看| 国产日韩成人精品| 日韩美女啊v在线免费观看| 亚洲精品中文在线观看| 美女免费视频一区| 成人午夜激情视频| 欧美亚洲动漫精品| 日韩免费一区二区三区在线播放| 国产清纯白嫩初高生在线观看91| 欧美国产乱子伦| 奇米影视7777精品一区二区| 国产成人免费在线| 色综合天天视频在线观看| 久久综合色8888| 国产精品国产三级国产aⅴ原创|