pure sdk for main
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
#include "sys_config.h"
|
||||
#include "typesdef.h"
|
||||
#include "dev.h"
|
||||
#include "devid.h"
|
||||
#include "stream_frame.h"
|
||||
#include "utlist.h"
|
||||
#include "osal/task.h"
|
||||
#include "jpg_decode_stream.h"
|
||||
#include "osal/string.h"
|
||||
#include "osal_file.h"
|
||||
#include "custom_mem/custom_mem.h"
|
||||
void read_file_thread(void*d)
|
||||
{
|
||||
os_printf("%s:%d\n",__FUNCTION__,__LINE__);
|
||||
stream *s = (stream *)d;
|
||||
//struct data_structure *data;
|
||||
void *fp = osal_fopen("0:0.jpg","rb");
|
||||
uint32_t filesize = 0;
|
||||
uint8_t *tmp = (uint8_t*)os_malloc(4096);
|
||||
uint8_t *sd_buf = NULL;
|
||||
uint32_t offset = 0;
|
||||
uint32_t readlen;
|
||||
if(fp)
|
||||
{
|
||||
filesize = osal_fsize(fp);
|
||||
}
|
||||
os_printf("%s:%d\ttmp:%X\n",__FUNCTION__,__LINE__,tmp);
|
||||
if(filesize)
|
||||
{
|
||||
sd_buf = (uint8_t*)custom_malloc_psram(filesize);
|
||||
if(sd_buf)
|
||||
{
|
||||
while(filesize)
|
||||
{
|
||||
if(filesize < 4096)
|
||||
{
|
||||
readlen = osal_fread(tmp,filesize,1,fp);
|
||||
}
|
||||
else
|
||||
{
|
||||
readlen = osal_fread(tmp,4096,1,fp);
|
||||
}
|
||||
if(readlen)
|
||||
{
|
||||
hw_memcpy(sd_buf+offset,tmp,readlen);
|
||||
}
|
||||
offset += readlen;
|
||||
filesize -= readlen;
|
||||
}
|
||||
}
|
||||
}
|
||||
while(1)
|
||||
{
|
||||
struct data_structure *data = get_src_data_f(s);
|
||||
if(data)
|
||||
{
|
||||
os_printf("data:%X\n",data);
|
||||
if(sd_buf)
|
||||
{
|
||||
data->data = (void*)custom_malloc_psram(offset);
|
||||
if(data->data)
|
||||
{
|
||||
//配置显示的参数
|
||||
struct jpg_decode_arg_s *msg = data->priv;
|
||||
msg->yuv_arg.out_w = 320;
|
||||
msg->yuv_arg.out_h = 240;
|
||||
msg->rotate = 0;
|
||||
msg->decode_w = 640;
|
||||
msg->decode_h = 480;
|
||||
msg->step_w = 320;
|
||||
msg->step_h = 240;
|
||||
hw_memcpy(data->data,sd_buf,offset);
|
||||
set_stream_real_data_len(data,offset);
|
||||
os_printf("%s:%d\n",__FUNCTION__,__LINE__);
|
||||
data->type = SET_DATA_TYPE(JPEG,JPEG_FILE);
|
||||
int success = send_data_to_stream(data);
|
||||
os_printf("success:%d\n",success);
|
||||
data = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
force_del_data(data);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
force_del_data(data);
|
||||
}
|
||||
|
||||
}
|
||||
os_sleep_ms(1000);
|
||||
}
|
||||
}
|
||||
static int opcode_func(stream *s,void *priv,int opcode)
|
||||
{
|
||||
int res = 0;
|
||||
switch(opcode)
|
||||
{
|
||||
case STREAM_OPEN_ENTER:
|
||||
break;
|
||||
case STREAM_OPEN_EXIT:
|
||||
{
|
||||
s->priv = priv;
|
||||
stream_data_dis_mem_custom(s);
|
||||
streamSrc_bind_streamDest(s,S_JPG_DECODE);
|
||||
enable_stream(s,1);
|
||||
//创建一个线程
|
||||
os_task_create("aaa", read_file_thread, s, OS_TASK_PRIORITY_NORMAL, 0, NULL, 1024);
|
||||
}
|
||||
break;
|
||||
case STREAM_OPEN_FAIL:
|
||||
break;
|
||||
case STREAM_DATA_DIS:
|
||||
{
|
||||
struct data_structure *data = (struct data_structure *)priv;
|
||||
data->priv = (void *)custom_zalloc(sizeof(struct jpg_decode_arg_s));
|
||||
data->data = NULL;
|
||||
}
|
||||
break;
|
||||
|
||||
case STREAM_DATA_FREE:
|
||||
{
|
||||
struct data_structure *data = (struct data_structure *)priv;
|
||||
os_printf("%s:%d\tdata:%X\n",__FUNCTION__,__LINE__,data);
|
||||
if(data->data)
|
||||
{
|
||||
custom_free_psram(data->data);
|
||||
data->data = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case STREAM_FILTER_DATA:
|
||||
{
|
||||
}
|
||||
break;
|
||||
|
||||
case STREAM_DATA_FREE_END:
|
||||
break;
|
||||
|
||||
|
||||
//数据发送完成,可以选择唤醒对应的任务
|
||||
case STREAM_SEND_DATA_FINISH:
|
||||
break;
|
||||
|
||||
|
||||
case STREAM_SEND_DATA_START:
|
||||
{
|
||||
}
|
||||
break;
|
||||
|
||||
case STREAM_DATA_DESTORY:
|
||||
{
|
||||
struct data_structure *data = (struct data_structure *)priv;
|
||||
if(data->priv)
|
||||
{
|
||||
custom_free(data->priv);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
//默认都返回成功
|
||||
break;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
void *read_jpg_file_stream()
|
||||
{
|
||||
os_printf("%s:%d\n",__FUNCTION__,__LINE__);
|
||||
stream *s = open_stream_available("read_jpg", 3, 0, opcode_func,NULL);
|
||||
os_printf("%s:%d\n",__FUNCTION__,__LINE__);
|
||||
return s;
|
||||
}
|
||||
Reference in New Issue
Block a user