作者 ookk303

2.08更新

... ... @@ -40,7 +40,9 @@
"paramterparsing.h": "c",
"megtempcontrol.h": "c",
"jzsdk_uart_send.h": "c",
"espeak_tts.h": "c"
"espeak_tts.h": "c",
"buffersrc.h": "c",
"audiodeal.h": "c"
},
"Codegeex.GenerationPreference": "automatic"
}
\ No newline at end of file
... ...
# 编译链的配置
#1、编译链与设备类型的选择
set(DEVICE_NAME JZ_H1T)
set(DEVICE_NAME JZ_H1E)
#上一行为禁止修改行
if("${DEVICE_NAME}" STREQUAL "JZ_H1E")
... ... @@ -31,6 +31,9 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U3S")
elseif("${DEVICE_NAME}" STREQUAL "JZ_U3D")
set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
set(DEVICE_TYPE MEGAPHONE)
elseif("${DEVICE_NAME}" STREQUAL "JZ_U30")
set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
set(DEVICE_TYPE MEGAPHONE)
elseif("${DEVICE_NAME}" STREQUAL "TF_A1")
set(MAKE_COMPILER ARM_CORTEXA9_LINUX)
set(DEVICE_TYPE MEGAPHONE)
... ...
... ... @@ -146,6 +146,29 @@ elseif("${DEVICE_NAME}" STREQUAL "JZ_U3D")
# 添加FFMPEG及其附属模块
set(FFMPEG_MODULE VERSION_SWITCH_ON)
elseif("${DEVICE_NAME}" STREQUAL "JZ_U30")
# 添加AudioDeal 音频处理模块
set(AUDIODEAL_MODULE VERSION_SWITCH_ON)
# 添加Gimbal 云台处理模块
set(GIMBAL_MODULE VERSION_SWITCH_ON)
# 添加IRCUT 引脚处理模块
set(IRCUT_MODULE VERSION_SWITCH_ON)
# 添加LIGHTING 光源处理模块
set(LIGHTING_MODULE VERSION_SWITCH_ON)
# 添加喊话器模块
set(MEGAPHONE_MODULE VERSION_SWITCH_ON)
# 添加电源管理模块
set(POWER_MANAGER_MODULE VERSION_SWITCH_ON)
# 添加FFMPEG及其附属模块
set(FFMPEG_MODULE VERSION_SWITCH_ON)
elseif("${DEVICE_NAME}" STREQUAL "JZ_C1")
# 添加Gimbal 云台处理模块
... ...
... ... @@ -322,6 +322,29 @@ T_JZsdkReturnCode Main_APP_Psdk()
JZsdk_Uart_Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON);
}
else if (DEVICE_VERSION == JZ_U30)
{
//串口设备1初始化
//JZsdk_Uart_Init(UART_DEV_1);
//串口设备2初始化
JZsdk_Uart_Init(UART_DEV_2);
//喊话器初始化
Megaphone_Init();
//云台初始化
Gimbal_Init();
//灯类初始化
Lighting_Init();
delayMs(1000);
//消息订阅初始化
JZsdk_Uart_Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON);
}
else if (DEVICE_VERSION == JZ_C1)
{
//引脚初始化
... ... @@ -543,6 +566,28 @@ int Main_APP_Uart()
}
else if (DEVICE_VERSION == JZ_U30)
{
//串口设备1初始化
JZsdk_Uart_Init(UART_DEV_1);
//串口设备2初始化
JZsdk_Uart_Init(UART_DEV_2);
//喊话器初始化
Megaphone_Init();
//云台初始化
Gimbal_Init();
//灯类初始化
Lighting_Init();
delayMs(1000);
//消息订阅初始化
JZsdk_Uart_Send_MessageSubcription_Control(UART_DEV_2, JZ_FLAGCODE_ON);
}
if (DEVICE_VERSION == TF_A1)
{
... ...
... ... @@ -177,7 +177,24 @@ extern "C" {
#define NET_WORK_IPADDR NULL
#define NET_WORK_TARGET_IPADDR NULL
#define NET_WORK_NETMASK NULL
#elif DEVICE_VERSION == JZ_U30
#define UART_DEV1_NUM "/dev/ttyS1"
#define UART_DEV1_BITRATE (115200)
#define UART_DEV2_NUM "/dev/ttyS2"
#define UART_DEV2_BITRATE (115200)
#define COMM_4G_UART_NUM NULL
#define COMM_4G_UART_BITRATE (0)
#define GIMBAL_UART_NUM NULL
#define GIMBAL_UART_BITRATE (0)
#define NET_WORK_IPADDR NULL
#define NET_WORK_TARGET_IPADDR NULL
#define NET_WORK_NETMASK NULL
#elif DEVICE_VERSION == TF_A1
#define UART_DEV1_NUM "/dev/ttyS2"
#define UART_DEV1_BITRATE (115200)
... ...
... ... @@ -41,6 +41,7 @@
#define JZ_U3 0x0017
#define JZ_U3S 0x0018
#define JZ_U3D 0x0019
#define JZ_U30 0x001A
#define JZ_H150S 0x0013
#define JZ_H150T 0x0015
... ...
... ... @@ -7,7 +7,7 @@
#define VERSION_CHOOSE_H
#include "./ConfigParams.h"
//1~10行 除了D可以修改版本选择 禁止动任何东西
#define DEVICE_VERSION JZ_H1T
#define DEVICE_VERSION JZ_H1E
//禁止修改行 选择是串口程序 还是 psdk程序
#define APP_VERSION APP_PSDK
... ... @@ -25,7 +25,7 @@
#define FILTERING_TYPE HIGH_PASS_FILTERING
//禁止修改行固件属地 目前 国内版/海外版
#define FIRMWARE_ORIGIN DOMESTIC_VERSION
#define FIRMWARE_ORIGIN OVERSEAS_VERSION
//禁止修改行指定特殊固件
#define SPECIAL_VERSION SPECIAL_NORMAL
... ...
... ... @@ -284,6 +284,27 @@ T_JZsdkReturnCode Pcm_AlsaPlay(struct AudioDealInfo *IndexInfo, unsigned char *b
//当输入的数据长度 》 每次写入音频设备时处理的帧数量384
int UnDeal_samples = num_samples;
// 无论哪种都是暂时不行
// //加入一个降噪
// if (1)
// {
// //降噪处理
// //把数据组成一个数组
// short TempPcm;
// for (int i = 0; i < num_samples; i+=2)
// {
// // TempPcm = (buf[i] & 0xFF) | ((short)buf[i+1] << 8);
// // TempPcm = PcmNoiseReduction(TempPcm);
// // buf[i] = TempPcm & 0xFF;
// // buf[i+1] = (TempPcm >> 8) & 0xFF;
// TempPcm = (buf[i+1] & 0xFF) | ((short)buf[i] << 8);
// TempPcm = PcmNoiseReduction(TempPcm);
// buf[i+1] = TempPcm & 0xFF;
// buf[i] = (TempPcm >> 8) & 0xFF;
// }
// }
while(UnDeal_samples > 0 && IndexInfo->AudioDeal_Alsa_Execute_Flag != JZ_FLAGCODE_OFF)
{
... ...
... ... @@ -22,69 +22,15 @@
#define NOISE_THRESHOLD 0.05 // 降噪阈值
T_JZsdkReturnCode reduce_noise(float* samples, int num_samples) {
for (int i = 0; i < num_samples; i++) {
if (fabs(samples[i]) < NOISE_THRESHOLD) {
samples[i] = 0.0f; // 如果样本小于阈值,则将其置为零
}
}
}
T_JZsdkReturnCode PcmNoiseReduction(short *data, int len)
short PcmNoiseReduction(short data)
{
float float_buffer[len];
// 转换为浮点数并进行降噪
for (size_t i = 0; i < len; i++) {
float_buffer[i] = data[i] / 32768.0f; // 从16-bit转换到 [-1.0, 1.0]
}
reduce_noise(float_buffer, len);
// 转换回16-bit并写入输出文件
for (size_t i = 0; i < len; i++)
short re_data;
float float_buffer = data / 32768.0f;
if (fabs(float_buffer) < NOISE_THRESHOLD)
{
data[i] = (short)(float_buffer[i] * 32767.0f); // 溢出处理
float_buffer = 0.0f; // 如果样本小于阈值,则将其置为零
}
return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
// #define NOISE_THRESHOLD 0.05 // 降噪阈值
// // 字节交换函数
// short swap_endian(short val) {
// return (val >> 8) | (val << 8);
// }
// T_JZsdkReturnCode reduce_noise(float* samples, int num_samples) {
// for (int i = 0; i < num_samples; i++) {
// if (fabs(samples[i]) < NOISE_THRESHOLD) {
// samples[i] = 0.0f; // 如果样本小于阈值,则将其置为零
// }
// }
// }
// T_JZsdkReturnCode PcmNoiseReduction(U16_t *data, int len)
// {
// float float_buffer[len];
// // 将大端格式转换为浮点数
// for (size_t i = 0; i < len; i++) {
// // 字节交换
// short sample = swap_endian(data[i]);
// float_buffer[i] = sample / 32768.0f; // 从16-bit转换到 [-1.0, 1.0]
// }
// reduce_noise(float_buffer, len);
// // 转换回16-bit并写入输出文件
// for (size_t i = 0; i < len; i++)
// {
// data[i] = (U16_t)(float_buffer[i] * 32767.0f); // 溢出处理
// data[i] = swap_endian(data[i]);
// }
// return JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
// }
re_data = (short)(float_buffer * 32767.0f); // 溢出处理
return re_data;
}
\ No newline at end of file
... ...
/**
********************************************************************
* @file FF_FilterParam.h
* FF_FilterParam.h
*
*********************************************************************
*/
/* Define to prevent recursive inclusion 避免重定义 -------------------------------------*/
#ifndef NOISE_REDUCTION_H
#define NOISE_REDUCTION_H
/* Includes ------------------------------------------------------------------*/
#include "JZsdk_Base/JZsdk_Code/JZsdk_Code.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
/* 常亮定义*/
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
short PcmNoiseReduction(short data);
#ifdef __cplusplus
}
#endif
#endif
... ...
... ... @@ -190,7 +190,7 @@ static T_JZsdkReturnCode DeviceMessage_Enter_Default(unsigned char *message)
#endif
//如果为组合版
#if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S ||DEVICE_VERSION == JZ_U3D)
#if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S ||DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
// //组合板写入
// snprintf(new_message,128,"光斑y值%d\n",Widget_GetCenter_ValueY());
... ...
... ... @@ -392,7 +392,7 @@ T_JZsdkReturnCode Gimbal_CheckStatus_Angle(int *PitchAngle, int *YawAngle, int *
T_JZsdkReturnCode Gimbal_Obtain_Gimbal_Pitch(int Pitch)
{
//目前 U3和 H1T会接受到云台返回值
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
//不做处理,避免出现什么问题
}
... ...
... ... @@ -38,7 +38,7 @@ T_JZsdkReturnCode Gimbal_DataDeal_init()
#elif DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_C1
// 不用去特地初始化t60的云台
#elif DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 \
|| DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == TF_A1
|| DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 || DEVICE_VERSION == TF_A1
//设置0度
#else
... ... @@ -94,7 +94,7 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetRealAngle(int angle)
Ircut_PWM_control(PWM_num);
#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D \
#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 \
|| DEVICE_VERSION == TF_A1
//发送角度给串口2
... ... @@ -139,7 +139,7 @@ T_JZsdkReturnCode Gimbal_DataDeal_SetPitchRange(int Range)
//还没想好怎么弄
#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D \
#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 \
|| DEVICE_VERSION == TF_A1
if (Range == 0xFF)
... ...
... ... @@ -52,7 +52,7 @@ extern "C" {
#define MAX_PITCH 0
#define MIN_PITCH -600
#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D \
#elif DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 \
|| DEVICE_VERSION == TF_A1
#define PITCH_PWM_MAX 0
... ...
... ... @@ -12,7 +12,7 @@ static int OutPutPower = JZ_FLAGCODE_OFF;
void Ircut_Init()//引脚初始化
{
if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T ||
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D ||
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30||
DEVICE_VERSION == TF_A1)
{
V3s_Ircut_Init();
... ... @@ -53,7 +53,7 @@ int Ircut_uInit()
void set_amplifier(int amplifier_mode)
{
if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T ||
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D ||
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 ||
DEVICE_VERSION == TF_A1)
{
V3s_set_amplifier(amplifier_mode);
... ... @@ -119,7 +119,7 @@ T_JZsdkReturnCode Ircut_CheckStatus_OutPutPower(int *value)
T_JZsdkReturnCode Ircut_PinControl(int port, int num, int status)
{
if (DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H10T ||
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D ||
DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30 ||
DEVICE_VERSION == TF_A1)
{
V3s_PinControl(port, num, status);
... ...
... ... @@ -69,7 +69,7 @@ T_JZsdkReturnCode Lighting_SearchLightControl(int mode)
SearchLight_Mode = mode;
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
return SearchLight_V3S_U3_SearchLightControl(mode);
}
... ... @@ -122,7 +122,7 @@ T_JZsdkReturnCode Lighting_Set_SearchLightLumen(int LeftLumen, int RightLumen)
{
printf("设置%x探照灯灯光亮度\n",DEVICE_VERSION);
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
SearchLight_RightLumen = RightLumen;
SearchLight_LeftLumen = LeftLumen;
... ... @@ -148,7 +148,7 @@ T_JZsdkReturnCode Lighting_Obtain_SearchLightLumen(int LeftLumen, int RightLumen
printf("接收到%x探照灯灯光亮度 左灯%d 右灯%d\n",DEVICE_VERSION, LeftLumen, RightLumen);
//如果是主喊话器副灯的单一设备
if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
if (DEVICE_VERSION == TF_A1 || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
}
... ... @@ -190,7 +190,7 @@ T_JZsdkReturnCode Lighting_Set_SearchLightFrequency(int value)
{
printf("设置0x%x:探照灯爆闪频率\n",DEVICE_VERSION);
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
return SearchLight_V3S_U3_Set_SearchLightFrequency(value);
}
... ... @@ -248,7 +248,7 @@ T_JZsdkReturnCode Lighting_Obtain_SearchLightTemperature(int LeftTemperature, in
}
//如果是JZ u3
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
//输入温度进温度控制线程
SearchLightTemControl_Set_g_InputTemp(Max_tmeperature);
... ... @@ -302,7 +302,7 @@ T_JZsdkReturnCode Lighting_Set_WarningLight_Status(int status, int mode)
#elif DEVICE_VERSION == TF_A1
return WarningLight_V3S_TFA1_Set_WarningLight_Status(status, mode);
#elif DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D
#elif DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30
return JZsdk_Uart_Send_Set_WarningLight_Status(UART_DEV_2, status, mode);
#else
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
... ... @@ -363,7 +363,7 @@ T_JZsdkReturnCode Lighting_Set_WarningLight_Color(int color1, int color2)
#elif DEVICE_VERSION == TF_A1
return WarningLight_V3S_TFA1_Set_WarningLight_Color(color1, color2);
#elif DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D
#elif DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30
JZsdk_Uart_Send_Set_WarningLight_Color(UART_DEV_2, color1, color2);
#else
return JZ_ERROR_SYSTEM_MODULE_CODE_FAILURE;
... ...
... ... @@ -85,6 +85,10 @@ static int JZsdk_SearchLightGetLimitTemp(int DeviceMode)
return 70;
break;
case JZ_U30:
return 70;
break;
case TF_A1:
return 70;
break;
... ...
... ... @@ -35,6 +35,7 @@ T_JZsdkReturnCode AudioFile_StartPlay_Interface(unsigned char* FilePath)
AVCodecContext *codec_ctx = NULL;
double total_duration = 0; // 累计播放时间(秒)
int last_printed_second = -1; // 上次打印的秒数,初始化为-1表示还没有打印过
//3、创建一个音频上下文
AVFormatContext *fmt_ctx = avformat_alloc_context();
... ... @@ -157,10 +158,15 @@ T_JZsdkReturnCode AudioFile_StartPlay_Interface(unsigned char* FilePath)
// 累计总持续时间
total_duration += frame_duration;
//JZSDK_LOG_INFO("当前播放时间%f",total_duration);
if (Last_duration != (int)total_duration)
{
printf("nb:%d rate:%d duration:%f total_duration:%f\n", frame->nb_samples, codec_ctx->sample_rate, frame_duration, total_duration);
}
// 检查是否需要打印
int current_second = (int)floor(total_duration); // 获取当前总时间的整数秒部分
if (current_second > last_printed_second)
{
printf("nb:%d rate:%d duration:%f total_duration:%f\n", frame->nb_samples, codec_ctx->sample_rate, frame_duration, current_second);
last_printed_second = current_second; // 更新上次打印的秒数
}
AudioFile_Stream_DataInput(frame);
}
... ...
... ... @@ -872,7 +872,7 @@ T_JZsdkReturnCode Megaphone_Init()
int language = 0x01;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
}
else if (OriginValue == ORIGIN_EN)
else
{
int language = 0x11;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
... ... @@ -1317,7 +1317,7 @@ T_JZsdkReturnCode Meg_SetVolumeFun(int volume)
{
snprintf(cmdBuffer,128, "amixer set -c 0 Master %d",volume);
}
else if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
else if (DEVICE_VERSION == JZ_H10T || DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
snprintf(cmdBuffer,128, "amixer sset -c 0 'Headphone' %d unmute",volume);
}
... ...
... ... @@ -26,7 +26,7 @@ T_JZsdkReturnCode Start_voice()
//播放喊话器启动中
Megaphone_TTS_Play("喊话器直连模式启动中", strlen("喊话器直连模式启动中"), JZ_FLAGCODE_OFF);
}
else if (OriginValue == ORIGIN_EN)
else
{
int language = 0x11;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
... ... @@ -56,7 +56,7 @@ T_JZsdkReturnCode Start_up_and_broadcast_voice()
//播放喊话器启动中
Megaphone_TTS_Play("喊话器准备就绪", strlen("喊话器准备就绪"), JZ_FLAGCODE_OFF);
}
else if (OriginValue == ORIGIN_EN)
else
{
int language = 0x11;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
... ... @@ -96,7 +96,7 @@ T_JZsdkReturnCode Start_up_and_broadcast_voice()
//播放喊话器启动中
Megaphone_TTS_Play("喊话器直连模式准备就绪", strlen("喊话器直连模式准备就绪"), JZ_FLAGCODE_OFF);
}
else if (OriginValue == ORIGIN_EN)
else
{
int language = 0x11;
Megaphone_TTS_param(JZ_FLAGCODE_SET, MEGAPHONE_TTS_TONE, &language);
... ...
... ... @@ -56,7 +56,8 @@ static T_JZsdkReturnCode TTS_Synthesis(const char* src_text, const char* params)
while (Megaphone_MegDataGenFlag(JZ_FLAGCODE_GET, 0) == JZ_FLAGCODE_ON)
{
/* 获取合成音频 */
const void* data = QTTSAudioGet(sessionID, &audio_len, &synth_status, &ret);
//const void* data = QTTSAudioGet(sessionID, &audio_len, &synth_status, &ret);
unsigned char *data = QTTSAudioGet(sessionID, &audio_len, &synth_status, &ret);
if (ret != MSP_SUCCESS)
{
break;
... ... @@ -68,6 +69,26 @@ static T_JZsdkReturnCode TTS_Synthesis(const char* src_text, const char* params)
#if TTS_SAVE
fwrite((unsigned char *)data, sizeof(unsigned char), audio_len, fp); // 写入数据
#endif
// //降噪
// if (1)
// {
// //降噪处理
// //把数据组成一个数组
// short TempPcm;
// for (int i = 0; i < audio_len; i+=2)
// {
// TempPcm = ( data[i] & 0xFF) | ((short)data[i+1] << 8);
// TempPcm = PcmNoiseReduction(TempPcm);
// data[i] = TempPcm & 0xFF;
// data[i+1] = (TempPcm >> 8) & 0xFF;
// // TempPcm = (data[i+1] & 0xFF) | ((short)data[i] << 8);
// // TempPcm = PcmNoiseReduction(TempPcm);
// // data[i+1] = TempPcm & 0xFF;
// // data[i] = (TempPcm >> 8) & 0xFF;
// }
// }
//没将数据放入PCM通道
//printf("产生了%d 的数据\n",audio_len);
AudioDeal_PcmDataInput(16000, (unsigned char *)data, audio_len);
... ...
... ... @@ -58,6 +58,9 @@ extern "C" {
#elif DEVICE_VERSION == JZ_U3D
#define MAX_VOLUME (80)
#define MAX_TTS_VOLUME (90)
#elif DEVICE_VERSION == JZ_U30
#define MAX_VOLUME (80)
#define MAX_TTS_VOLUME (90)
#elif DEVICE_VERSION == JZ_U3S
#define MAX_VOLUME (74)
#define MAX_TTS_VOLUME (82)
... ...
... ... @@ -170,9 +170,15 @@ static T_JZsdkReturnCode Opus_RealTimeVoice_PlayData(unsigned char *data,int len
}
//转换
for (i = 0; i < WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * frame_size; i++) {
pcm_bytes[2 * i] = out[i] & 0xFF;
pcm_bytes[2 * i + 1] = (out[i] >> 8) & 0xFF;
opus_int16 TempPcm[WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS];
for (i = 0; i < WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * frame_size; i++)
{
TempPcm [i] = out[i] & 0xFF | (out[i] >> 8) << 8;
TempPcm[i] = PcmNoiseReduction(TempPcm[i]);
pcm_bytes[2 * i] = TempPcm[i] & 0xFF;
pcm_bytes[2 * i + 1] = (TempPcm[i] >> 8) & 0xFF;
}
AudioDeal_PcmDataInput(RealTimeDecodeRate, pcm_bytes, frame_size*2);
... ...
... ... @@ -390,8 +390,9 @@ static T_JZsdkReturnCode Opus_Decode()
while (1)
{
int i;
unsigned char pcm_bytes[OPUS_MAX_FRAME_SIZE * OPUS_CHANNELS * 2];
int i;
opus_int16 TempPcm[OPUS_MAX_FRAME_SIZE * OPUS_CHANNELS];
frame_size = 0;
//读取opus内容
... ... @@ -419,17 +420,14 @@ static T_JZsdkReturnCode Opus_Decode()
//解码完成
printf("decode data to file: %d\r\n", frame_size * OPUS_CHANNELS);
/* Convert to little-endian ordering. */
for (i = 0; i < OPUS_CHANNELS * frame_size; i++)
{
pcm_bytes[2 * i] = out[i] & 0xFF;
pcm_bytes[2 * i + 1] = (out[i] >> 8) & 0xFF;
for (i = 0; i < OPUS_CHANNELS * frame_size; i++) {
TempPcm [i] = out[i] & 0xFF | (out[i] >> 8) << 8;
TempPcm[i] = PcmNoiseReduction(TempPcm[i]);
}
//PcmNoiseReduction(pcm_bytes, frame_size*2 , 1) ;
fwrite(TempPcm, sizeof(short), frame_size * OPUS_CHANNELS, fout);
//保存解码内容
fwrite(pcm_bytes, sizeof(short), frame_size * OPUS_CHANNELS, fout);
}
DecodeFinsh:
... ...
... ... @@ -469,7 +469,7 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_LumenAndVolume_PowerLimitation(int flag, int
//输入亮度
if (flag == 0)
{
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
if (value + widget_volume > 150)
{
... ... @@ -480,7 +480,7 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_LumenAndVolume_PowerLimitation(int flag, int
//输入音量
else if (flag == 1)
{
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
if (DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
{
if (value + widget_lumen > 150 )
{
... ... @@ -617,7 +617,7 @@ int JZsdk_Psdk_UI_io_GetTTSTone_ByValue(int value)
}
if (OriginValue == ORIGIN_EN)
else
{
switch (value)
{
... ... @@ -1007,7 +1007,7 @@ T_JZsdkReturnCode JZsdk_Psdk_UI_io_Set_SearchLightLumen(int wheather_control,int
if (wheather_control == AUTO_CONTROL)
{
//u3比较特殊,单片机拉亮度,u3会亮,所以关闭灯的情况下,不准发给处理模块
if ((DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)&& SearchLightMode == JZ_FLAGCODE_OFF)
if ((DEVICE_VERSION == JZ_U3 || DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)&& SearchLightMode == JZ_FLAGCODE_OFF)
{
Lumen_sync_flag = JZ_FLAGCODE_ON; //打开u3的同步flag
ret = JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
... ...
#更新日志
功能表
U3: 云台+喊话器+探照灯
U3S: 云台+喊话器+探照灯+激光+爆闪灯
U3D:云台+喊话器+探照灯+爆闪灯
U30:云台+喊话器+探照灯+爆闪灯
H10:云台+喊话器
H10T:云台+喊话器+4G+对外供电
H150S:云台+喊话器+摄像头
H150T:云台+喊话器+4G+摄像头
H1E:喊话器
H1T:喊话器+4G
A1:喊话器+探照灯
C1:红外相机+摄像头
\ No newline at end of file
... ...
... ... @@ -239,15 +239,15 @@ T_DjiReturnCode DjiTest_WidgetStartService(void)
{
snprintf(curFileDirPath, WIDGET_DIR_PATH_LEN_MAX, "%s/cn",WIDGET_FILE_DIR);
}
else if (originValue == ORIGIN_EN)
{
snprintf(curFileDirPath, WIDGET_DIR_PATH_LEN_MAX, "%s/en",WIDGET_FILE_DIR);
}
else
{
JZSDK_LOG_ERROR("控件加载错误");
snprintf(curFileDirPath, WIDGET_DIR_PATH_LEN_MAX, "%s/cn",WIDGET_FILE_DIR);
snprintf(curFileDirPath, WIDGET_DIR_PATH_LEN_MAX, "%s/en",WIDGET_FILE_DIR);
}
// else
// {
// JZSDK_LOG_ERROR("控件加载错误");
// snprintf(curFileDirPath, WIDGET_DIR_PATH_LEN_MAX, "%s/cn",WIDGET_FILE_DIR);
// }
//检查是否存在开启测试的文件
if (JZsdk_check_file_exists("/root/ShakedownTest") == JZ_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
... ...
... ... @@ -257,7 +257,8 @@ static void *DecodeAudioData_task(void *arg)
while (1) {
int i;
unsigned char pcm_bytes[WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * 2];
//unsigned char pcm_bytes[WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * 2];
opus_int16 TempPcm[WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS];
int frame_size;
/* Read a 16 bits/sample audio frame. 16000/8000*2 */
... ... @@ -284,36 +285,13 @@ static void *DecodeAudioData_task(void *arg)
USER_LOG_INFO("decode data to file: %d\r\n", frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS);
/* Convert to little-endian ordering. */
opus_int16 TempPcm[WIDGET_SPEAKER_AUDIO_OPUS_MAX_FRAME_SIZE * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS];
for (i = 0; i < WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * frame_size; i++) {
// if (out[i] == 0xFFFF)
// {
// pcm_bytes[2 * i] = 0x00;
// pcm_bytes[2 * i + 1] = 0x00;
// continue;
// }
//方案一
TempPcm [i] = out[i] & 0xFF | (out[i] >> 8) << 8;
PcmNoiseReduction(TempPcm, 1);
//方案二
// TempPcm [i] = ((out[i] & 0xFF) << 8) | (out [i] >> 8);
// PcmNoiseReduction(TempPcm, 1);
// TempPcm [i] = TempPcm[i] & 0xFF | (TempPcm[i] >> 8) << 8;
// pcm_bytes[2 * i] = out[i] & 0xFF;
// pcm_bytes[2 * i + 1] = (out[i] >> 8) & 0xFF;
TempPcm[i] = PcmNoiseReduction(TempPcm[i]);
}
fwrite(TempPcm, sizeof(short), frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS, fout);
//PcmNoiseReduction(pcm_bytes, frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS * 2);
/* Write the decoded audio to file. */
//fwrite(pcm_bytes, sizeof(short), frame_size * WIDGET_SPEAKER_AUDIO_OPUS_CHANNELS, fout);
}
... ...
# cmake 最低版本要求 第三行名字不能动
cmake_minimum_required(VERSION 2.8)
project(JZ_H1T)
project(JZ-H1E)
set(CMAKE_C_FLAGS "-pthread -std=gnu99 -lm -ldl -lstdc++")
#"-pthread":指定在编译时链接POSIX线程库,以支持多线程程序。
... ...
... ... @@ -52,7 +52,7 @@ extern "C" {
#define USER_APP_LICENSE "qHRtELC2A04PRBt1xOJ1pqkowJ2OZqwdAUPqOVc7WcWwVIR3Fnadjakhl0i7F1wnFNUKELlDLaDsCYLIhkzOd0kDPQcCksVk3Dla498xLD3Z1b5BcI+hlZXETwTmi+7Td0k1E3Rnt9OPGdqrA8W9mBg333EGGjARFGDfaK2BHhDexUE8yLoVhwkqk3t/0wV8kbyrlZzKsvo0kMUifbALCoLPoCO622Rdu056z+opYUX1OlXCGhDxVSDD43Oaab5bupcC4CGrmkpfiCvS78H7Uinc9b9Xf5Ocy373Cpoet7blux66DOiH5muSQVcrY3gnVKQVk7GRnO6piQh9mKHDdQ=="
#define USER_DEVELOPER_ACCOUNT "jizhisdk@163.com"
#if (DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_U3|| DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D)
#if (DEVICE_VERSION == JZ_H1T || DEVICE_VERSION == JZ_H1E || DEVICE_VERSION == JZ_U3|| DEVICE_VERSION == JZ_U3S || DEVICE_VERSION == JZ_U3D || DEVICE_VERSION == JZ_U30)
#define USER_BAUD_RATE "921600"
#elif (DEVICE_VERSION == JZ_H150S || DEVICE_VERSION == JZ_H150T || DEVICE_VERSION == JZ_H10 || DEVICE_VERSION == JZ_C1)
#define USER_BAUD_RATE "230400"
... ...
... ... @@ -222,10 +222,6 @@ int main(int argc, char *argv[])
{
memcpy(psdk_name, "JZ_H1T", sizeof("JZ_H1T"));
}
else if (originValue == ORIGIN_EN)
{
memcpy(psdk_name, "JZ-H1T", sizeof("JZ-H1T"));
}
else
{
memcpy(psdk_name, "JZ_H1T", sizeof("JZ_H1T"));
... ... @@ -244,29 +240,16 @@ int main(int argc, char *argv[])
}
else if (DEVICE_VERSION == JZ_U3S)
{
if (originValue == ORIGIN_DEFAULT || originValue == ORIGIN_CN)
{
memcpy(psdk_name, "JZ_U3S", sizeof("JZ_U3S"));
}
else if (originValue == ORIGIN_EN)
{
memcpy(psdk_name, "JZ-U3S", sizeof("JZ-U3S"));
}
else
{
memcpy(psdk_name, "JZ_U3S", sizeof("JZ_U3S"));
}
memcpy(psdk_name, "JZ_U3S", sizeof("JZ_U3S"));
}
else if (DEVICE_VERSION == JZ_U3D)
{
if (FIRMWARE_ORIGIN == OVERSEAS_VERSION)
{
memcpy(psdk_name, "JZ-U3D", sizeof("JZ-U3D"));
}
else if (FIRMWARE_ORIGIN == DOMESTIC_VERSION)
{
memcpy(psdk_name, "JZ_U3D", sizeof("JZ_U3D"));
}
memcpy(psdk_name, "JZ_U3D", sizeof("JZ_U3D"));
}
else if (DEVICE_VERSION == JZ_U30)
{
memcpy(psdk_name, "JZ_U30", sizeof("JZ_U30"));
}
... ...