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

📄 sample.c

📁 h.264 算法 ti dm642
💻 C
字号:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <csl.h>
#include <csl_cache.h>
#include <csl_dat.h>


void processingTskFxn(void);
/****************************************************************************
 * main:
 ****************************************************************************/
int main( int argc, char **argv )
{

	CSL_init();                                             
    CACHE_clean(CACHE_L2ALL, 0, 0);
    CACHE_setL2Mode(CACHE_32KCACHE);       
    CACHE_enableCaching(CACHE_EMIFA_CE00);
	CACHE_enableCaching(CACHE_EMIFA_CE01);

}
#include "h264.h"
#define HIGHT (768)
#define WEIGHT	(1024)

void processingTskFxn(void)
{//注意task(encoding)分配stack要在isram中,h264只需要1KB的stack大小,heap看头文件说明
//要注意sdram的_extHeap的大小,这个大小决定类似malloc函数的空间申请成败
//在实际工程中,建议参考这个sample工程cdb的定义方法
//当然,效率高低,有一部分取决应用者想法
	User_parameter User_param;
    H264_Handle h;
	H264_Handle h1;
	int		len;
	int		i_p;
	int 		seqlen[4];//modified by vimc
	char		*buf=NULL;
	char		*y=NULL,*u=NULL,*v=NULL;
	
char *p = NULL;
FILE *pf=NULL;
	buf = memalign(8,HIGHT*HIGHT);
	y = memalign(8,HIGHT*WEIGHT);
	u = memalign(8,HIGHT*WEIGHT/2);
	v = memalign(8,HIGHT*WEIGHT/2);
	User_param.cbr = 0;
	User_param.bitrate = 7;
	User_param.iframe_interval = 100;//(>25)
	User_param.width = 	 WEIGHT;
	User_param.height =  HIGHT;
	h = H264_encoder_open( &User_param ) ;//New handle,
	if(h <= 0)
		printf("print errer!\n");
	
	h1 = H264_encoder_open( &User_param ) ;//new next handle 
	
	{//通过jtag读取文件,得到y,u,v,4:2:2 buffer,当然,实时要应用者把驱动的yuv数据传送过来
	FILE *pf=NULL;
	pf=fopen("c:/sample/yuv422_1024x768.yuv","r+b");
	fread(y,WEIGHT*HIGHT, 1, pf);
	fread(u,WEIGHT*HIGHT/2,1,pf);
	fread(v,WEIGHT*HIGHT/2,1,pf);
	fclose(pf);
	
	}
	
	User_param.bufferY = (unsigned char*)y;
    User_param.bufferU =(unsigned char*)u;
    User_param.bufferV = (unsigned char*)v; 
	H264_Encoding(h,User_param,buf, &len, &i_p, seqlen,0);
 	
	pf=fopen("c:/sample/test.264","w+b");
	{
		
		fwrite(buf,1, len, pf);
	
	}
	fclose(pf);

   if(buf)
   	free(buf);
   	if(y)
   		free(y);
   		if(u)
   			free(u);
   			if(v)
   				free(v);
	if(h != 0)
		H264_close(h);
	if(h1 != 0)
		H264_close(h1);
}

⌨️ 快捷键说明

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