📄 sample.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 + -