修复摄像头、科大讯飞、rcsp、彩屏仓等相关测试问题;
This commit is contained in:
@@ -447,6 +447,8 @@ static void ai_txt_empty_handler(void *priv)
|
||||
char empty_str_copy[50] = "您好像并没有说话";
|
||||
strcpy(empty_str, empty_str_copy);
|
||||
ui_text_set_textu_by_id(AI_DIAL_TXT, (char *)empty_str, strlen((char *)empty_str), FONT_DEFAULT | FONT_SHOW_MULTI_LINE);
|
||||
} else {
|
||||
ui_text_set_textu_by_id(AI_DIAL_TXT, (char *)ai_dial_txt1, strlen((char *)ai_dial_txt1), FONT_DEFAULT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -685,6 +687,30 @@ static int AI_dialogue_ontouch(void *ctr, struct element_touch_event *e)
|
||||
}
|
||||
return true;
|
||||
}
|
||||
static int AI_dial_time_onchange(void *ctr, enum element_change_event e, void *arg)
|
||||
{
|
||||
struct ui_number *ui_num = (struct ui_number *)ctr;
|
||||
struct unumber num;
|
||||
switch (e) {
|
||||
case ON_CHANGE_INIT:
|
||||
cuntdown_flag = 60;
|
||||
num.type = TYPE_NUM;
|
||||
num.numbs = 1;
|
||||
num.number[0] = cuntdown_flag;
|
||||
ui_number_update(ui_num, &num);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
REGISTER_UI_EVENT_HANDLER(AI_DIALOGUE)
|
||||
.onchange = AI_dialogue_onchange,
|
||||
.onkey = NULL,
|
||||
.ontouch = NULL,
|
||||
};
|
||||
|
||||
REGISTER_UI_EVENT_HANDLER(AI_DIALOGUE)
|
||||
.onchange = AI_dialogue_onchange,
|
||||
@@ -696,6 +722,12 @@ REGISTER_UI_EVENT_HANDLER(AI_DIAL_VOICE)
|
||||
.onkey = NULL,
|
||||
.ontouch = AI_dialogue_ontouch,
|
||||
};
|
||||
REGISTER_UI_EVENT_HANDLER(AI_DIAL_TIME)
|
||||
.onchange = AI_dial_time_onchange,
|
||||
.onkey = NULL,
|
||||
.ontouch = NULL,
|
||||
};
|
||||
|
||||
//****************************************************************************************/
|
||||
// layout3-AI表盘 //
|
||||
/****************************************************************************************/
|
||||
|
||||
@@ -128,8 +128,10 @@ void camera_dec_reflush_sync(int status)
|
||||
int msg[3] = {0};
|
||||
|
||||
if (!status) {
|
||||
//正常刷新
|
||||
msg[0] = (int)camera_dec_flush;
|
||||
} else {
|
||||
//异常显示
|
||||
msg[0] = (int) camera_rec_err;
|
||||
}
|
||||
msg[1] = 1;
|
||||
@@ -178,6 +180,9 @@ static int cam_ctrl_view_video(int enable)
|
||||
}
|
||||
static void cam_camera_photo_savc_cb(char *path)
|
||||
{
|
||||
if (jljpeg_stream_src_data_get()) {
|
||||
return;
|
||||
}
|
||||
jljpeg_stream_src_data_save_to_file(path);
|
||||
if (__this && (__this->photo_save_cnt > 0)) {
|
||||
__this->photo_save_cnt--;
|
||||
@@ -357,6 +362,29 @@ static int cam_handler_prepare_cb(void *ctrl, int count, int start)
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//****************************************************************************************//
|
||||
// 消息处理
|
||||
//****************************************************************************************//
|
||||
static int ui_video_show_exit_handler(const char *type, u32 arg)
|
||||
{
|
||||
log_info("[%s]", __func__);
|
||||
|
||||
switch (__this->layout_curr) {
|
||||
case CAM_SHOW_LAYOUT:
|
||||
cam_layout_sw(CAM_PHOTO_LAYOUT);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static const struct uimsg_handl ui_msg_handler[] = {
|
||||
{ "video_show_exit", ui_video_show_exit_handler },
|
||||
{ NULL, NULL}, /* 必须以此结尾! */
|
||||
};
|
||||
|
||||
//****************************************************************************************//
|
||||
// 提醒
|
||||
//****************************************************************************************//
|
||||
@@ -390,6 +418,7 @@ static int cam_layer_onchange(void *ctrl, enum element_change_event event, void
|
||||
//图层初始化变量
|
||||
/* f_format("sd0","fat",0); */
|
||||
cam_ctrl_init();
|
||||
ui_register_msg_handler(ID_WINDOW_CAMERA, ui_msg_handler);
|
||||
break;
|
||||
case ON_CHANGE_RELEASE:
|
||||
cam_ctrl_deinit();
|
||||
@@ -522,6 +551,10 @@ static int cam_camera_layout_onchange(void *ctrl, enum element_change_event even
|
||||
jljpeg_stream_src_data_len_get());
|
||||
break;
|
||||
case ON_CHANGE_RELEASE:
|
||||
if (__this->video_doing) {
|
||||
jlcamera_video_rec_stop();
|
||||
__this->video_doing = 0;
|
||||
}
|
||||
//关闭摄像头
|
||||
jlcamera_video_rec_deinit();
|
||||
//关闭jpeg数据流解码
|
||||
@@ -817,6 +850,8 @@ static int cam_photo_list_ontouch(void *_ctrl, struct element_touch_event *e)
|
||||
if (__this->view_remap[i] == dyn_idx) {
|
||||
if (!__this->view_vaild[i]) {
|
||||
return true;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -912,7 +947,88 @@ static void avi_flush_timer(void *p)
|
||||
jlgpu_scheduler_wait_sync();
|
||||
}
|
||||
void __jpeg_draw_cb_gpu(int id, u8 *dst_buf, struct rect *dst_r, struct rect *src_r, u8 bytes_per_pixel, void *priv, void *matrix);
|
||||
static void camera_video_dec_flush(void)
|
||||
{
|
||||
struct element *elm;
|
||||
elm = ui_core_get_element_by_id(CAM_SHOW_LAYOUT);
|
||||
if (elm != NULL) {
|
||||
/* printf(">>>>>>elm != NULL"); */
|
||||
ui_redraw(CAM_SHOW_LAYOUT);
|
||||
}
|
||||
}
|
||||
|
||||
void video_dec_reflush_sync(int status)
|
||||
{
|
||||
void jlui_malloc_ram_info_dump();
|
||||
/* jlui_malloc_ram_info_dump(); */
|
||||
log_debug("%s status:%d !!\n", __func__, status);
|
||||
|
||||
int msg[3] = {0};
|
||||
|
||||
if (!status) {
|
||||
//正常刷新
|
||||
msg[0] = (int) camera_video_dec_flush;
|
||||
} else {
|
||||
//异常显示
|
||||
}
|
||||
msg[1] = 1;
|
||||
msg[2] = 0;
|
||||
int ret = os_taskq_post_type("ui", Q_CALLBACK, 3, msg);
|
||||
}
|
||||
|
||||
#if 0//使用video_dec解码测试.
|
||||
|
||||
extern int video_dec_init();
|
||||
extern int video_dec_deinit();
|
||||
extern int video_dec_set_path(s8(*path)[64], u8 path_number);
|
||||
extern int video_dec_start(u8 index, u8 mode);
|
||||
extern int video_dec_refresh_cb_register(void (*cb)(int status));
|
||||
extern int video_dec_stop();
|
||||
static int cam_show_layout_onchange(void *ctrl, enum element_change_event event, void *arg)
|
||||
{
|
||||
struct ui_grid *grid = (struct ui_grid *)ctrl;
|
||||
struct element *elm = (struct element *)ctrl;
|
||||
struct draw_context *dc = (struct draw_context *)arg;
|
||||
switch (event) {
|
||||
case ON_CHANGE_INIT:
|
||||
if (!__this->sel_path) {
|
||||
break;
|
||||
}
|
||||
if (__this->view_video) {
|
||||
video_dec_init();
|
||||
video_dec_refresh_cb_register(video_dec_reflush_sync);
|
||||
video_dec_set_path((s8(*)[64])__this->sel_path, 1);
|
||||
video_dec_start(0, 0);
|
||||
}
|
||||
break;
|
||||
case ON_CHANGE_SHOW_POST:
|
||||
if (!__this->sel_path) {
|
||||
break;
|
||||
}
|
||||
ui_custom_draw_clear(dc);
|
||||
if (__this->view_video) {
|
||||
//实时显示画面
|
||||
if (!jljpeg_stream_src_data_len_get()) {
|
||||
//码流数据为空时不显示
|
||||
break;
|
||||
}
|
||||
jpeg_image_ram(dc, 40, 0, 240, 320,
|
||||
jljpeg_stream_src_data_get(),
|
||||
jljpeg_stream_src_data_len_get());
|
||||
}
|
||||
break;
|
||||
case ON_CHANGE_RELEASE:
|
||||
video_dec_stop();
|
||||
video_dec_deinit();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int cam_show_layout_onchange1(void *ctrl, enum element_change_event event, void *arg)
|
||||
{
|
||||
struct ui_grid *grid = (struct ui_grid *)ctrl;
|
||||
struct element *elm = (struct element *)ctrl;
|
||||
@@ -935,11 +1051,11 @@ static int cam_show_layout_onchange(void *ctrl, enum element_change_event event,
|
||||
if (!get_aviplay_handle()) {
|
||||
break;
|
||||
}
|
||||
/* u16 timer_id = 0; */
|
||||
/* if (!avi_get_avi_playtimer_id()) { */
|
||||
/* timer_id = sys_timeout_add((void *)elm->id, (avi_flush_timer), 10); // 强制满帧刷新 */
|
||||
/* avi_set_avi_playtimer_id(timer_id); */
|
||||
/* } */
|
||||
u16 timer_id = 0;
|
||||
if (!avi_get_avi_playtimer_id()) {
|
||||
timer_id = sys_timeout_add((void *)elm->id, (avi_flush_timer), 10); // 强制满帧刷新
|
||||
avi_set_avi_playtimer_id(timer_id);
|
||||
}
|
||||
u32 avip = (u32)get_avi_player_st_handle();
|
||||
log_debug("player->st %x %d %d ", avip, avi_get_width(get_avi_player_st_handle()), avi_get_height(get_avi_player_st_handle()));
|
||||
ui_draw(dc,
|
||||
@@ -970,9 +1086,9 @@ static int cam_show_layout_onchange(void *ctrl, enum element_change_event event,
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
REGISTER_UI_EVENT_HANDLER(CAM_SHOW_LAYOUT)
|
||||
.onchange = cam_show_layout_onchange,
|
||||
/* .onchange = cam_show_layout_onchange, */
|
||||
.onchange = cam_show_layout_onchange1,
|
||||
.onkey = NULL,
|
||||
.ontouch = NULL,
|
||||
};
|
||||
|
||||
@@ -165,6 +165,11 @@ static int show_onchange(void *ctr, enum element_change_event e, void *arg)
|
||||
{
|
||||
switch (e) {
|
||||
case ON_CHANGE_INIT:
|
||||
struct unumber num;
|
||||
num.type = TYPE_NUM;
|
||||
num.numbs = 1;
|
||||
num.number[0] = 20;
|
||||
ui_number_update_by_id(AI_TIME, &num);
|
||||
send_0X09_ENTER();
|
||||
break;
|
||||
case ON_CHANGE_FIRST_SHOW:
|
||||
@@ -254,6 +259,7 @@ static void AI_time1_handler(void *priv)//20秒倒计时,不息屏
|
||||
if (i_flag == 0) { //20倒计时结束后,超时标志位置1
|
||||
i_flag = 20;
|
||||
ai_timeout = true;
|
||||
ui_text_show_index_by_id(AI_TEXT, 0);
|
||||
} else if (flag_button == 0) { //按钮控件按下,开始录音倒计时
|
||||
i_flag = 20;
|
||||
}
|
||||
@@ -391,7 +397,7 @@ static void AI_thinking_handler(void *priv)
|
||||
ui_core_redraw(pic);
|
||||
}
|
||||
flag++;
|
||||
if (flag == 25) { //等待5秒没有获得信号,切到列表
|
||||
if (flag == 100) { //等待5秒没有获得信号,切到列表
|
||||
flag = 0;
|
||||
page_showtxt();
|
||||
}
|
||||
@@ -480,10 +486,10 @@ static void reflash_gettxt_handler(void *priv)
|
||||
static void reflash_gettxtII_handler(void *priv)
|
||||
{
|
||||
if (ai_txt1) {
|
||||
ui_text_set_textu_by_id(AI_TXT1, (char *)ai_txt1, strlen((char *)ai_txt1), FONT_DEFAULT | FONT_SHOW_SCROLL);
|
||||
ui_text_set_textu_by_id(AI_TXT1, (char *)ai_txt1, strlen((char *)ai_txt1), FONT_DEFAULT);
|
||||
} else {
|
||||
ai_txt1 = NULL;
|
||||
ui_text_set_textu_by_id(AI_TXT1, (char *)ai_txt1, 0, FONT_DEFAULT | FONT_SHOW_SCROLL);
|
||||
ui_text_set_textu_by_id(AI_TXT1, (char *)ai_txt1, 0, FONT_DEFAULT);
|
||||
}
|
||||
}
|
||||
void memset_txt(void)
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "vad_main.h"
|
||||
#include "ifly_socket.h"
|
||||
#include "cat1/cat1_common.h"
|
||||
#include "font/language_list.h"
|
||||
|
||||
#if TCFG_IFLYTEK_ENABLE //科大讯飞网络版
|
||||
|
||||
@@ -45,6 +46,7 @@
|
||||
|
||||
// ui参数
|
||||
struct ifly_ui_t {
|
||||
u8 net_fail;
|
||||
u16 time_id; // 定时器
|
||||
u16 task_create_timer;
|
||||
u16 switch_pic_cnt; // 动图循环
|
||||
@@ -184,12 +186,18 @@ REGISTER_UI_EVENT_HANDLER(IFLY_BUTTON_TTS_PLAY)
|
||||
|
||||
static void reflash_gettxt_handler(void *priv)
|
||||
{
|
||||
if (ifly_check_net_connect() == false) {
|
||||
u8 *net_fail = (u8 *)priv;
|
||||
if (ifly_check_net_connect() == false && !(*net_fail)) {
|
||||
UI_MSG_POST("tts_network_no_connect");
|
||||
}
|
||||
|
||||
ui_auto_shut_down_re_run();
|
||||
|
||||
font_lang_set(UnicodeMixRightword);
|
||||
ui_text_set_textu_by_id(AI_4,
|
||||
p_ifly_net->local_text, strlen(p_ifly_net->local_text),
|
||||
FONT_DEFAULT | FONT_SHOW_MULTI_LINE);
|
||||
|
||||
ui_text_set_textu_by_id(IFLY_TEXT_TTS_TXT,
|
||||
p_ifly_net->ai_text, strlen(p_ifly_net->ai_text),
|
||||
FONT_DEFAULT | FONT_SHOW_MULTI_LINE | FONT_VERTICAL_SCROLL);
|
||||
@@ -217,7 +225,12 @@ static int showtxt_onchange(void *ctr, enum element_change_event e, void *arg)
|
||||
sys_timer_del(ifly_ui->time_id);
|
||||
ifly_ui->time_id = 0;
|
||||
}
|
||||
ifly_ui->time_id = sys_timer_add(NULL, reflash_gettxt_handler, 1000);
|
||||
if (ifly_check_net_connect()) {
|
||||
ifly_ui->net_fail = 0;
|
||||
} else {
|
||||
ifly_ui->net_fail = 1;
|
||||
}
|
||||
ifly_ui->time_id = sys_timer_add((void *)&ifly_ui->net_fail, reflash_gettxt_handler, 1000);
|
||||
break;
|
||||
case ON_CHANGE_FIRST_SHOW:
|
||||
break;
|
||||
@@ -502,6 +515,26 @@ REGISTER_UI_EVENT_HANDLER(IFLY_LAYOUT_VAD)
|
||||
.ontouch = NULL,
|
||||
};
|
||||
|
||||
static int no_connect_ontouch(void *ctr, struct element_touch_event *e)
|
||||
{
|
||||
switch (e->event) {
|
||||
case ELM_EVENT_TOUCH_R_MOVE:
|
||||
if (ifly_ui && ifly_ui->cur_layout) {
|
||||
ui_hide(IFLY_LAYOUT_NO_CONNECT);
|
||||
ui_show(ifly_ui->cur_layout);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
REGISTER_UI_EVENT_HANDLER(IFLY_LAYOUT_NO_CONNECT)
|
||||
.onchange = NULL,
|
||||
.onkey = NULL,
|
||||
.ontouch = no_connect_ontouch,
|
||||
};
|
||||
|
||||
static void ifly_no_content_time_deal(void *priv)
|
||||
{
|
||||
|
||||
@@ -87,6 +87,7 @@ static int uvc_layout_onchange(void *ctrl, enum element_change_event event, void
|
||||
|
||||
switch (event) {
|
||||
case ON_CHANGE_INIT:
|
||||
ui_auto_shut_down_disable();
|
||||
jljpeg_stream_init();
|
||||
jluvc_set_refresh_cb(ui_uvc_ui_reflush);
|
||||
break;
|
||||
@@ -97,6 +98,7 @@ static int uvc_layout_onchange(void *ctrl, enum element_change_event event, void
|
||||
}
|
||||
dc = (struct draw_context *)arg;
|
||||
/* ui_custom_draw_clear(dc); */
|
||||
/* put_buf(jljpeg_stream_src_data_get(),128); */
|
||||
jlgpu_scheduler_wait_sync();
|
||||
jlgpu_task_clean_up_by_id(dc->gpu_task_head, dc->elm->id, 0x1);
|
||||
jpeg_image_ram(dc, 0, 0, UVC_JPG_WIDTH , UVC_JPG_HEIGHT,
|
||||
@@ -105,6 +107,7 @@ static int uvc_layout_onchange(void *ctrl, enum element_change_event event, void
|
||||
break;
|
||||
case ON_CHANGE_RELEASE:
|
||||
jljpeg_stream_deinit();
|
||||
ui_auto_shut_down_enable();
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user