From: Caisking Date: Fri, 26 Sep 2025 06:32:35 +0000 (+0800) Subject: 增加帧率相关at X-Git-Tag: V1.0.9_20251128_194606_LN~250^2~45^2~8 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=2f6acd04f1743296d64462528ada0e252117c1e3;p=mirrors%2FFD230.git 增加帧率相关at --- diff --git a/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c b/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c index b511f4a4f..3ec78cbfc 100644 --- a/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c +++ b/code/sdk/zhihui/leiniao/imsl_ln/leiniao_api_at.c @@ -8,6 +8,7 @@ #include #include #include +#include "errcode.h" #include "imsl_vad.h" #include "media_thread_adapt.h" #include "ln_api.h" @@ -49,6 +50,10 @@ static uint32_t ln_factory_at(uint8_t *para, uint32_t paraLen, char *strCommonCm static uint32_t ln_memory_info_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd); static uint32_t ln_folder_size_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd); +//帧率控制相关AT命令函数声明 +static uint32_t ln_set_fps_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd); +static uint32_t ln_get_fps_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd); + /* 内存查看辅助函数 - 使用MemoryManager接口 */ /* 将 PCM 文件按 10ms(160点) 分帧喂给 VAD 并打印结果 */ @@ -1347,6 +1352,60 @@ static uint32_t ln_get_device_version_at(uint8_t *para, uint32_t paraLen, char * printf("deviceVersion: %s\n", deviceVersion); return ERRCODE_SUCC; } + +/* AT^LN_SET_FPS - 设置帧率 */ +static uint32_t ln_set_fps_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) +{ + VAD_UNUSED(strCommonCmd); + + if (para == NULL || paraLen == 0) { + printf("[LN][SET_FPS] Error: No parameter provided\n"); + printf("Usage: AT^LN_SET_FPS=\n"); + printf("Example: AT^LN_SET_FPS=60\n"); + return ERRCODE_FAIL; + } + + // 解析参数 + char fps_str[16] = {0}; + if (paraLen >= sizeof(fps_str)) { + printf("[LN][SET_FPS] Error: Parameter too long\n"); + return ERRCODE_FAIL; + } + + memcpy(fps_str, para, paraLen); + fps_str[paraLen] = '\0'; + + // 转换为整数 + int fps_value = atoi(fps_str); + + // 验证帧率范围 (1-120 FPS) + if (fps_value < 1 || fps_value > 120) { + printf("[LN][SET_FPS] Error: FPS value must be between 1 and 120, got: %d\n", fps_value); + return ERRCODE_FAIL; + } + + printf("[LN][SET_FPS] Setting FPS to: %d\n", fps_value); + + // 调用统一的C接口设置帧率 + do_set_fps((uint32_t)fps_value); + printf("[LN][SET_FPS] Successfully set FPS to: %d\n", fps_value); + return ERRCODE_SUCC; +} + +/* AT^LN_GET_FPS - 获取当前帧率 */ +static uint32_t ln_get_fps_at(uint8_t *para, uint32_t paraLen, char *strCommonCmd) +{ + VAD_UNUSED(para); + VAD_UNUSED(paraLen); + VAD_UNUSED(strCommonCmd); + + printf("[LN][GET_FPS] Getting current FPS...\n"); + + // 调用统一的C接口获取帧率 + uint32_t current_fps = do_get_fps(); + printf("[LN][GET_FPS] Current FPS: %u\n", current_fps); + return ERRCODE_SUCC; +} static const at_cmd_table_t g_ln_api_cmd[] = { /* ----------------------------------- VAD ---------------------------------- */ {(char *)"AT^VAD_INIT", vad_init, (char *)"初始化 VAD"}, @@ -1412,6 +1471,10 @@ static const at_cmd_table_t g_ln_api_cmd[] = { {(char *)"AT^LN_GET_DEVICE_MODEL", ln_get_device_model_at, (char *)"获取设备model: AT^LN_GET_DEVICE_MODEL"}, //获取设备version {(char *)"AT^LN_GET_DEVICE_VERSION", ln_get_device_version_at, (char *)"获取设备version: AT^LN_GET_DEVICE_VERSION"}, + + //帧率控制 + {(char *)"AT^LN_SET_FPS", ln_set_fps_at, (char *)"设置帧率: AT^LN_SET_FPS="}, + {(char *)"AT^LN_GET_FPS", ln_get_fps_at, (char *)"获取当前帧率: AT^LN_GET_FPS"}, }; diff --git a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp index b86054204..940067212 100644 --- a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp +++ b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.cpp @@ -64,6 +64,18 @@ void do_restore_factory_setting(void) OHOS::ThunderBirdModel::GetInstance()->restore_factory_settings(); } +// 设置帧率 +void do_set_fps(uint32_t fps) +{ + OHOS::ThunderBirdModel::GetInstance()->at_set_fps(fps); +} + +// 获取帧率 +uint32_t do_get_fps(void) +{ + return OHOS::ThunderBirdModel::GetInstance()->at_get_fps(); +} + // 推送日程提醒通知 void push_schedule_reminder_notification(const char *title, const char *content) { diff --git a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h index 4e3c757e4..128632f12 100644 --- a/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h +++ b/code/sdk/zhihui/leiniao/ln_api_cpp/ln_api_interface.h @@ -42,6 +42,10 @@ void push_ota_progress(int progress); //恢复出厂操作 void do_restore_factory_setting(void); + +//帧率控制操作 +void do_set_fps(uint32_t fps); +uint32_t do_get_fps(void); // 推送日程提醒通知 void push_schedule_reminder_notification(const char *title, const char *content);