JL703N音箱问题整理
📎 原始文档:https://www.kdocs.cn/l/citAkChzyMoo JL703N音箱问题整理
前言:本文档整理将以各个SDK遇到的共性问题做整理汇总,可直接根据所使用的sdk版本及功能快速索引相关问题点
开发注意点
- (必读)可视化工具项目帮助文档 项目的帮助文档位于:项目——项目帮助文档
2. 编译出现报错:syntax error 如图:
- 原因:

- 解决方法: 设置git config --global core.autocrlf false之后重新拉下来
- 703 maskrom io在rom时的状态设置

- 703 多输出时候的主从设备设置注意事项 例如:
- IIS 和DAC 同时输出,dac 做主设备,就必须挂到分流器的最下面

- 每一个数据流都要设置标签,用以区分不同数据流的多输出


- 媒体流下的蓝牙时钟需要同步修改。


- 703 数据流对应节点参数更新办法及如何修改设置默认参数 703数据流对应节点参数更新办法及如何修改设置默认参数.otl
共性问题
- 蓝牙测试盒子无线升级失败,报KEY错误
测试到以下两个版本的SDK会出现问题:
原因:读key接口有问题
替换cpu.a库:
Le_audio:
leaudio_cpu.rar
soundbar:
sounbar_cpu.rar - 703 soundbox 1.0.0(patch_00.11)版本 SDK,关闭混响使能后 增加 MDRC 节点在媒体音频流中会导致死机问题 处理办法,替换一下media.a库文件:(注意该版本后续正式更新会跟随新版本SDK出来)
JL703N_soundbox_1.0.0(patch_00.11)_media_处理MDRC异常问题.zip
另一种临时处理办法就是:打开混响使能配置
- 703 soundbox 1.0.0(patch_00.11)版本 SDK,tws对箱煲机死机复位问题 处理办法,替换一下media.a库文件:(注意该版本后续正式更新会跟随新版本SDK出来)
【金山文档 | WPS云文档】 JL703N_soundbox_1.0.0(patch_00.11)_media_处理tws煲机异常死机问题
https://kdocs.cn/l/cmVzfdWzsp8q - 703 soundbox 1.0.0(patch_00.11/0.12)版本 SDK,蓝牙播歌时,拔卡卸载SD触发重复删除信号量异常 处理:替换最新编译的cpu.a库
【金山文档 | WPS云文档】 br27_sdk_100_patch0010_修复重复删信号量的问题_20240814_cpu
https://kdocs.cn/l/ckIVR1FByIUu - 703 soundbox 1.0.0(patch_0.12)版本 SDK,苹果手机蓝牙通话时,BLE会自动断连 处理方法:
将config_le_high_priority这个控制变量置为1,使得在esco通话的时候,ble优先级最高。
并替换btctrler.a、cpu.a两个库。
JL703N_soundbox_1.0.0(patch_00.12)_处理苹果手机蓝牙通话时BLE断连问题.rar - 703-soundbox-2.0.0(patch01),关机报 "ASSERT-FAILED:pin portD no pin:0x0 error!"断言死机后,无法唤醒/开机 SDK版本:
问题原因:
- 程序进入软关机之前,默认将IO口都设置成高阻状态
- 其中power_port.c会调用soff_gpio_protect保护SPI0-内部flash的 PD0-PD6引脚
- 因PD组只有 PD0-PD6 引脚,且均被保护。但驱动配置了 GPIO_D组 的参数为 0xffff,即表示有16个引脚,所以复位时设置了除PD0-PD6外的所有PD引脚为高阻状态
- (实际上没有PD7-PD15,所以导致程序错误)
问题修改如下:
- 配置 GPIO_D组 的参数0xffff改为0x007f
- 由于PD组引脚只有PD0-PD6,复位时不设置PD组引脚高阻态即可

- 703-soundbox-2.0.0(patch01),spdif_out 节点和dac 节点同时输出,会出现卡顿问题,在U盘模式和FM模式下spdif_out 无声问题、在提示音数据流播放无声问题。 针对卡顿问题,需要增加多设备输出的主从配置,具体配置如下:




在U盘模式和FM模式下spdif_out 无声问题,需要修改 audio_spdif_master.c
具体修改点对比一下修改好的文件:
audio_spdif_master(703_soundbox_2.0.0_patch1_修复spdif_outU盘模式下输出无声问题).rar
spdif_out在提示音播放无声 问题修改
增加代码
if (in_fmt->channel_mode != AUDIO_CH_LR) {
in_fmt->channel_mode = AUDIO_CH_LR;
ret = NEGO_STA_CONTINUE;
}
spdif_out在使用48K24bit采样输出时候声音卡顿,一直打印“DDDDDDD"
增加buff,修改如下,48K24bit 则修改为 4即可,但是需要 96K24bit 输出,则可以修改为8
在U盘或TF卡模式下,按键PP ,暂停时候概率复现暂停时一直有杂音问题
可按照下面方式处理,处理后会有杂音,但是持续时间很短,不会一直存在杂音。

- 703-soundbox-2.0.0(patch01.01)使能不了外部FM 现象:
处理方法:
- 修改工具缓存配置
if(src.name == '内置FM配置'){
let dest = find('外置FM配置')
if(src.groupEnable && dest.groupEnable) {
dest.groupEnable = 1;
src.groupEnable = 0;
show('内置FM和外置FM互斥');
}
}
if(src.name == '外置FM配置'){
let dest = find('内置FM配置')
if(src.groupEnable && dest.groupEnable) {
dest.groupEnable = 1;
src.groupEnable = 0;
show('内置FM和外置FM互斥');
}
}

- 重新创建项目

- 关掉内置FM之后可打开外置FM

- 703-soundbox-2.0.0(patch01.01)外置FM与linein使用同一组AD通道但io口不同 原因:JLStudio工具没法配置linein与外置FM使用同一组的不同io
方法:在FM时代码中替换配置工具中ADC通道的io
相关知识:
- 工具配置与代码对应关系

- 宏的值与工具引脚配置的关系

- 工具配置



- 代码修改

#include "app_main.h"
u8 ad_ch_talbe[AUDIO_ADC_LINEIN_MAX_NUM]={
1,/*ch0:1(PB9)、2(PB7)、3(PA0)*/
1,/*ch1:1(PB10)、2(PB8)、3(PA1)*/
0,/*ch2:1(PC9)、2(PC10)*/
0/*ch3:1(PA2)、2(PA3)*/
};
if(app_in_mode(APP_MODE_FM) && ad_ch_talbe[ch_index])linein_param.linein_ain_sel=ad_ch_talbe[ch_index];
10. 703-soundbox-2.0.0(patch01和patch01.01)IRKEY功能异常修改 处理方法:
- 可视化工具配置IRKEY引脚不会同步到代码,需自行修改。

- 修改irkey.c和ir_decoder.c文件,可对比修改或直接替换
- IRKEY修改文件.rar
- 703-soundbox-2.0.0(patch01.01)软关机会重启 原因:
- soff_gpio_config初始化与头文件的宏对应不上,在驱动里面会异常复位

- 传了一个非法值给gpio_set_mode导致gpio驱动异常复位
修改方法:
- 修改soff_gpio_config初始化

- 添加非法值判断

if(soff_gpio_config.gpioa )gpio_set_mode(PORTA, soff_gpio_config.gpioa, PORT_HIGHZ);
if(soff_gpio_config.gpiob )gpio_set_mode(PORTB, soff_gpio_config.gpiob, PORT_HIGHZ);
if(soff_gpio_config.gpioc )gpio_set_mode(PORTC, soff_gpio_config.gpioc, PORT_HIGHZ);
if(soff_gpio_config.gpiod )gpio_set_mode(PORTD, soff_gpio_config.gpiod, PORT_HIGHZ);
if(soff_gpio_config.gpiop )gpio_set_mode(PORTP, soff_gpio_config.gpiop, PORT_HIGHZ);
if(soff_gpio_config.gpiousb)gpio_set_mode(PORTUSB, soff_gpio_config.gpiousb, PORT_HIGHZ); //dp dm
- 703-soundbox-2.0.0(patch01.01)软关机RTC不跑时 原因:软关机会关晶振没有保持RTC
处理方法:
power_config_rtc_clk(1);
13. 703-soundbox-2.0.0(patch01)蓝牙模式下人声消除效果差 原因:soundbox_JL703N_2.0.0 (patch_01)这个版本sdk,蓝牙解码器后输出的是假立体声(左右声道混合了),导致人声消除效果异常。
整改方法:软件修改下图位置重新配置为真立体声。
14. 703-soundbox-1.0.0(patch00.13)人声消除节点无法通过按键进行开关切换 原因:
- 应用层缺少bypass配置的命令。 2、media库逻辑不完整。 处理方法:
- 按下面截图修改代码

- 替换media.a库 人声消除bugfix.zip
- 703-soundbox-1.0.0(patch00.13)媒体配置iis输出,在音乐模式下播放音乐一首歌曲结束后会出现异常死机 软件修改如下:
原因是数据流stop 了两次, 这个版本同步节点每次 stop 都会往后面发一个 命令, iis 节点执行这个命令导致死机了。 - 703-soundbox-2.0.0(patch01)SDK 当样机使用2脚晶振蓝牙测试盒无线升级失败问题 修改办法:按照补丁修改替换OTA.bin 即可
【金山文档 | WPS云文档】 2024-11-22_BR27_2脚晶振无法升级_蓝牙连接异常.zip
2024-11-22_BR27_2脚晶振无法升级_蓝牙连接异常.zip - 703-soundbox-2.0.0(patch01.04)SDK JL703N 变声接口异常死机问题 更新变音的参数接口里面
void audio_voice_changer_mode_switch(u16 uuid, char *name, VOICE_CHANGER_MODE mode)
VOICECHANGER_PARM 的定义如下
结果会导致
修改方法:
18. 703-soundbox-2.0.0(patch01.04)SDK JL703N 音量调到0,或从0调到1,蓝牙模式下,上下曲都会有杂音 修改办法:关闭 dac mute
19. 703-soundbox-2.0.0(patch01.04)场景切换函数无效
- 使用effect_scene_set进行媒体音频场景切换,切换效果无效。原因是该函数在修改节点音效时无法正确输入节点名称,需自己手动修改。
2、切换音效后,通过打断方式播放提示音,音效会恢复成默认音效。可通过在节点默认配置中对相应节点进行修改。(通过测试,发现该配置会被保存,重启后会保持关机前设置的状态,若不需要则需自己进行修改逻辑)
- 703-soundbox-1.0.0(patch00.13)蓝牙测试盒升级失败 解决方法:更换ota.bin和ota_debug.bin。
ota_BR27_20241224_修复维持IO.rar - 703 不使用DAC 输出,但是却有ADC输入的功能(linein或者mic)会触发死机问题 原因:ADC 和DAC 的公共电源初始化部分无法完全割裂开,而没有DAC 节点就会缺少 ADC 的初始化
修改办法:直接打开 ADC和DAC 的初始化
- TWS 功能,声道怎么设置不区分左右声道。TWS配对后,单个也要输出立体声

jlstream_ioctl(player->stream, NODE_IOC_SET_CHANNEL, AUDIO_CH_LR);
- local_TWS流程图改IIS输出后没有声音。提示音有声音。 localtws改IIS没声音的是流程图不匹配导致,一个是声道,一个是位宽,去掉了一个声道合并,增加了一个位宽转换

- APE部分格式无法播放,打印FORMAT_OK_BUT_NO_SUPPORT。 APE格式分为几种类型,对应HIGH格式的默认没有打开,复杂度很高,占用内存过大,需要根据实际音效数量评估是否打开。

- 获取歌词死机。
接口不匹配导致,替换这部分内容。
u32 lrc_fseek(FILE *file, int offset, int orig)
{
u32 pos = fseek(file, offset, orig);
return pos;
}
u32 lrc_fread(FILE *file, void *buf, u32 len)
{
u32 rlen = fread(buf, len, 1, file);
return rlen;
}
static LRC_FILE_IO lrc_file_io = {
/* .seek = fseek, */
/* .read = fread, */
.seek = lrc_fseek,
.read = lrc_fread,
};
// static LRC_FILE_IO lrc_file_io = {
// .seek = fseek,
// .read = fread,
// };
- 修复四线模式播放SD卡挂载不上问题。 解决办法:更换cpu.a
AC703_soundbox_2.0.0_patch01.06_4bit_sdmmc_20250314_cpu.rar - 修改IRKEY红外按键快速按一直触发wakeup导致流程异常问题。 如果需要关机之后唤醒,要改下图2,关机前要把唤醒开回来


- 703-soundbox-2.0.0(patch01.07)增加频谱获取节点后触发死机断言 问题点描述:增加频谱获取节点后,U盘播歌第一首结束后会触发断言信息 spec255 info unknow
解决办法:更换下面媒体库
media_JL703N_soundbox_2.0.0(patch_01.07)_修复增加频谱获取节点后播放U盘一首歌曲结束后断言死机问题.rar
相同问题在703-leaudio-2.0.0(patch01)版本sdk 同样能复现到
解决办法:更换下面媒体库
media_JL703N_leaudio_2.0.0(patch_01)_修复增加频谱获取节点后播放U盘一首歌曲结束后断言死机问题.rar - 703-soundbox-2.0.0(patch01.07)MCPWM模块异常 问题原因:由于LSB时钟改变,重新设定频率和占空比函数有问题。
处理办法:
替换以下函数或者固定时钟频率(如果客户要求pwm波形一点都不能抖动,如有电机、升压、舵机等场景,需要让客户固定时钟频率,重新设定寄存器有短暂pwm没有或者不对的情况)
void mcpwm_set_frequency(int mcpwm_cfg_id, mcpwm_aligned_mode_type align, u32 frequency)
{
ASSERT(mcpwm_info[mcpwm_cfg_id] != NULL, "func:%s(), line:%d\n", __func__, __LINE__);
int id = mcpwm_cfg_id;
u32 ch = (u32)mcpwm_info[id]->cfg.ch;
MCPWM_TIMERx_REG *timer_reg = mcpwm_get_timerx_reg(ch);
u32 tmr_con = timer_reg->tmr_con;
u16 tmr_pr = 0;
asm("csync");
u32 i = 0;
u32 mcpwm_div_clk = 0;
u32 mcpwm_tmr_pr = 0;
u32 mcpwm_fre_min;
u32 clk = MCPWM_CLK;
for (i = 0; i < 16; i++) {
mcpwm_fre_min = clk / (65536u << i);
if ((frequency >= mcpwm_fre_min) || (i == 15)) {
break;
}
}
tmr_con &= ~(0x78);
tmr_con |= (i << MCPWM_TMR_CKPS); //div 2^i
mcpwm_div_clk = clk / (1 << i);
if (frequency == 0) {
mcpwm_tmr_pr = 0;
} else {
if (align == MCPWM_CENTER_ALIGNED) { //中心对齐
mcpwm_tmr_pr = mcpwm_div_clk / (frequency * 2) - 1;
} else {
mcpwm_tmr_pr = mcpwm_div_clk / frequency - 1;
}
}
tmr_pr = mcpwm_tmr_pr;
//timer mode
if (align == MCPWM_CENTER_ALIGNED) { //中心对齐
tmr_con |= 0b10; //递增-递降循环模式,中心对齐
} else {
tmr_con |= 0b01; //递增模式,边沿对齐
}
spin_lock(&mcpwm_lock);
timer_reg->tmr_con = tmr_con;
timer_reg->tmr_pr = tmr_pr;
spin_unlock(&mcpwm_lock);
}
static void clock_critical_exit(void)
{
u32 new_mcpwm_clk = MCPWM_CLK;
if (new_mcpwm_clk == old_mcpwm_clk) {
return;
}
MCPWM_CHx_REG *ch_reg;
for (u8 ch = 0; ch < MCPWM_CH_MAX; ch++) {
ch_reg = mcpwm_get_chx_reg(ch);
if (ch_reg->ch_con0 & (BIT(MCPWM_CH_H_EN) | BIT(MCPWM_CH_L_EN))) {
int id = mcpwm_get_cfg_id(ch);
if (id != -1) {
mcpwm_set_frequency(id, mcpwm_info[id]->cfg.aligned_mode, mcpwm_info[id]->cfg.frequency);
mcpwm_set_duty(id,mcpwm_info[id]->cfg.duty);
}
}
}
}
- 703-soundbox-2.0.0(patch01.07)播放U盘/sd卡 MP3 音频时获取id3 信息概率获取失败问题修改 问题原因:获取id3信息时候的seek 后, 另一个解码线程会有可能使得文件重新seek 到0位置了。

#if TCFG_DEC_ID3_V1_ENABLE || TCFG_DEC_ID3_V2_ENABLE
static int file_name_match_mp3(char *file_name)
{
const char *ext_name;
for (int i = 0; file_name[i] != '\0'; i++) {
if (file_name[i] == '.') {
ext_name = file_name + i + 1;
goto __match;
}
}
return 0;
__match:
if (!strncasecmp(ext_name, "mp3", 3)) {
return 1;
}
return 0;
}
#endif
- le_audio 1.0.0(patch_02.08)拔卡死机 当插卡之后打印“sd0 dev entry lowpower !“此时拔掉T卡死机
修复卡驱动删除重复信号量导致死机补丁 - br27PDMMIC 采样只能达到20K的水平。 修改点:


- 703-soundbox-2.0.0(patch01.07)AutoDuck 闪避节点参数更新结构体。 使用参考echo 参数更新自行封装autoduck 的参数更新使用接口。

struct autoduck_update_parm{
int duck_amount; //背景音乐闪避的音量值(dB)
int attack; //启动时间(ms)
int release; //释放时间(ms)
int hold_time; //闪避之后的保持时间 (ms)
};
typedef struct __AutoDuckParam_TOOL_SET__ {
int is_bypass;
struct autoduck_update_parm parm;
}autoduck_param_tool_set;
- JL703N-SOUNDBOX-2.0.0-JL703N-demo-patch_01.07,开TWS本地转发 24BIT,主机插拔U盘,从机较高概率出现无声情况(主机声音正常,无异常打印) 问题流程图:
问题现象:
[DAC_NODE]dac node timestamp error : 4260595998, 3721866394, 0, diff : 16835300
问题原因:
1、switch节点初始丢数据时后续节点状态错误导致时间戳异常问题(对应rx无声)
2、编码器位宽设置问题(对应一直uuuuuu)
处理方法:
jl703_soundbox_200p107_local_tws_24BIT从机时间戳不对问题_media.7z - soundbox 2.0.0P01.07 music模式下获取音频码率、比特率、解码类型 703添加获取文件码率等信息的接口.7z
- leaudio 2.0.0P01开混合录音插设备播放不了
默认没开启《录音》音频流,手动打开即可
- leaudio 2.0.0P01/soundbox 2.0.0P01.07有些设备混合录音时概率丢帧 703leaudio2.0.0P01-录音结束概率死机-录音掉帧-吴泽邦media.7z
soundbox-JL703N-2.0.0-JL703N-demo-patch_01.07-吴泽邦media
丢帧打印:
修改缓存buff大小优化丢帧概率:
注意:缓存大小不能超过u16类型的大小

- leaudio 2.0.0P01混合录音时在结束保存文件时概率死机 原因:文件关闭之后还往文件句柄写数据导致
处理思路:先关闭流在关掉写文件
死机log:
修改方法: - 替换库文件 703leaudio2.0.0P01-录音结束概率死机-录音掉帧-吴泽邦media.7z
- 添加接口

int mix_recorder_close_file(void)
{
struct file_recorder *recorder = (struct file_recorder *)g_rec_hdl.recorder;
printf(">>>>>>>>>>> mix_recorder_close_file\n");
if(recorder) {
if (recorder->fops) {
if (!recorder->fops->close) {
return -EINVAL;
}
putchar('A');
return recorder->fops->close(recorder->file);
}
putchar('B');
return fclose((FILE *)recorder->file);
}
return 0;
}
- 修改接口

void mix_recorder_stop()
{
// 先停掉录音,会有淡出操作
g_rec_hdl.status = 0;
file_recorder_stop(g_rec_hdl.recorder, 50);
// 再关闭音源
// g_rec_hdl.status = 0;
os_time_dly(1);
if (g_rec_hdl.old_file) {
fclose(g_rec_hdl.old_file);
g_rec_hdl.old_file = NULL;
}
if (g_rec_hdl.new_file) {
fdelete(g_rec_hdl.new_file);
g_rec_hdl.new_file = NULL;
}
file_recorder_release(g_rec_hdl.recorder);
g_rec_hdl.recorder = NULL;
}
39. 703_leaudio 2.0.0(patch_01)默认sdk 打开TWS 会无法配对问题 解决办法:
增加切换到TWS mode 代码。
40. 703_leaudio 2.0.0(patch_01) 打开TWS 使能后,设置四声道输出时,单箱连接手机并没有真立体输出问题 在没有连接上TWS处理处加一个四声道输出的判断,也需要设置为 AUDIO_CH_LR
player->channel = ((TCFG_AUDIO_DAC_CONNECT_MODE == DAC_OUTPUT_LR)||(TCFG_AUDIO_DAC_CONNECT_MODE == DAC_OUTPUT_FRONT_LR_REAR_LR)) ? AUDIO_CH_LR : AUDIO_CH_MIX;
- 703 soundbox-JL703N-2.0.0-JL703N-demo-patch_01.07混合录音导致音频、录音卡顿丢帧问题 703_soundbox_200_p107_混合录音卡音问题_media.a.7z
- 703 soundbox-JL703N-2.0.0-JL703N-demo-patch_01.07 AAC格式音频无法播放 使用了TCFG_DEC_M4A_ENABLE的编解码,需要同时打开TCFG_DEC_M4A_ENABLE的宏
- 703 soundbox-JL703N-2.0.0-JL703N-demo-patch_01.07 RTC概率读错写错导致时间丢失的问题(多线程读取时间容易出现): 问题现象:
处理方法:(月德修改读写RTC接口加锁)
jl703_soundbox_200_P107_修改RTC时间异常问题.7z - 703 soundbox-JL703N-2.0.0-JL703N-demo-patch_01.07 TWS 下在linein 模式下打开混合录音关闭录音时候会导致从机无声问题: 问题点:log显示 触发关闭转发命令
处理办法:如下图修改,注释掉关闭的位置
- 703_leaudio 2.0.0(patch_01) 设备跳转升级IO维持只有第一个IO能维持住,其余IO无法维持的问题 问题描述:PB02&1_PB08&1 ,PB2 是可以维持的,PB8 是无法维持的
问题解决:修改INI文件
- 703N_soundbox_2.0.0(patch_01.07)编译没有生成db_update_data.bin 文件 问题描述:打开双备份升级,使能了CONFIG_DB_UPDATE_DATA_GENERATE_EN后没有生成db_update_data.bin 文件
根本原因:isd_download.exe的版本不够,需要更新tools路径下的isd_download.exe
处理方案:替换SDK的tools目录下的isd_download.exe,可以用下载目录工具更新的脚本,把脚本放到SDK isd_download.exe同级目录下,双击运行就可以自动更新isd_download.exe
脚本:下载目录工具更新脚本
45、703_leaudio 2.0.0(patch_01.04) 在扩音器模式下,打断播放提示音后又杂音问题处理:
打断前调用loudspeaker_stop() 关闭音频流,提示音结束后loudspeaker_start 重新打开
47. 703无法进入蓝牙SNIFF低功耗模式 解决方案:换btctrler.a
觉栋_btctrler_703_蓝牙进低功耗.7z
48. le_audio-JL703N-2.0.0-JL703N-demo-patch_01.10 BIG广播从机无声音问题
gitlab:http://192.168.1.245/freebrand/support/visualization/le_audio/JL703Nle_audio_2.0.0/-/tree/bugfix_703_le_01.10_BIG%E5%B9%BF%E6%92%AD%E4%BB%8E%E6%9C%BA%E6%97%A0%E5%A3%B0%E9%97%AE%E9%A2%98
49. le_audio-JL703N-2.0.0-patch_01.08 /le_audio-JL703N-2.0.0-patch_01.10 部分U盘挂载慢问题处理 问题表现:部分U盘挂载慢导致解码慢出声音慢:
打印有以下log:
解决办法:自行对比下面压缩包中修改前的文件和修改后的文件。
e_audio-JL703N-2.0.0-patch_01.10部分U盘挂载慢问题处理.rar
gitlab:
文件 · bugfix_703_le_P01.10_部分U盘挂载解码慢 · 自由品牌 / 客户支持 / JLStudio / le_audio / JL703Nle_audio_2.0.0 · GitLab
50. le_audio_JL703N_2.0.0_patch01.09 广播 24 bit 异常 异常日志:
解决:
同步 patch01.10 三个源文件
51. le_audio_JL703N_2.0.0_patch01.08 、le_audio_JL703N_2.0.0_patch01.09、和le_audio_JL703N_2.0.0_patch01.10 和le_audio_JL703N_2.0.0_patch01.11 版本sdk PC 模式下播放spk无声问题处理,若是16bit无声,24bit有声同样是这个处理办法处理。 替换 _spk_file.c文件,然后添加另外两文件的修改
pc_spk_file.c
// pc spk 数据流 暂停/继续接口,仅挂起stream.
// pc spk 数据流 暂停/继续接口,仅挂起stream.
int pc_spk_player_pp(void)
{
if (g_pc_spk_player && g_pc_spk_player->stream) {
jlstream_pp_toggle(g_pc_spk_player->stream, 0);
return 0;
} else {
return -1;
}
}

int pc_spk_player_pp(void);
demo:JL703Nle_audio_2.0.0-bugfix_703_le_P01.10_PC模式播放spk无声.zip
内部 gitlab链接
52. le_audio_JL703N_2.0.0_patch01.10 广播问题处理 1. 广播主机音乐暂停后,不停开关广播,容易死机 2. 固定主机,在暂停音乐的时候开启广播,之后打开音乐播放,在一段时间之后DAC断断续续播空 补丁:可视化AC703patch10_广播问题处理.7z
内部gitlab:文件 · feature_703_200_P10_BIS · 自由品牌 / 客户支持 / JLStudio / le_audio / JL703Nle_audio_2.0.0 · GitLab
53. le_audio_JL703N_2.0.0_patch01.10 PC模式,在24BIT/96K高码率情况下会死机。
PCSPK给定的buf太小是固定值,后续改为动态lbuf申请的方式。
buf大小需要满足公式计算结果,如9600024/82/1000这个大小。
54. le_audio_JL703N_2.0.0_patch01.05 第二次通话后回音消除失效 修改方法:替换media.a
【金山文档 | WPS云文档】 media_修复通话回音消除失效
https://www.kdocs.cn/l/cvBRcXjPu239
55. le_audio_JL703N_2.0.0_patch01.10 配置linein叠加输出的时候注意事项:
- 改蓝牙同步配置为本地时钟同步:

- 配置linein为数据流为流控

- le_audio_JL703N_2.0.0_patch01.10 local_tws的情况下linein没有声音。 联动失效了,需要手动将流程图中DAC的缓存是100ms,需要在音频配置中将DAC的延时也改成100ms。


- le_audio_JL703N_2.0.0_patch01.10 杰理之家获取到文件目录是空白。

- le_audio_JL703N_2.0.0_patch01.05 TWS本地转发去除EQ等音效,会出现异常 复现环境:
处理方法:
1、localtws 模式,dac/iis 的通道延时要配置100。
2、24bit时,TWS本地音乐转发的编解码位宽也要改为24位
- le_audio_JL703N_2.0.0_patch01.10 串口升级
TX PB7
RX PB10
从机:
Files · feature_串口从机升级 · JL-Studio / Leaudio / 703N / JL703N_le_audio_2.0.0 · GitLab
主机:
Files · feature_串口主机升级 · JL-Studio / Leaudio / 703N / JL703N_le_audio_2.0.0 · GitLab
60. le_audio_JL703N_2.0.0_patch01.10 USB SPK位宽设置24bit,插PC会死机 处理方法:
spk_double_buf的大小没有根据位宽和采样率变化,导致数组越界,按如下公式计算自己需要的buf大小并修改即可,后续新版本会增加公式计算。
61. le_audio_JL703N_2.0.0_patch01.10 连接部分MAC电脑时出现假链接现象(电脑上先显示连上,十几秒后断开回连) btctrler_志英_修改703leaudio连接MAC电脑假链接问题.7z
62. le_audio_JL703N_2.0.0_patch01.10 关闭AAC使能后,播歌拉距远距离会出现异常声音 兆涛_703_leaudio_P10_media_修改关闭AAC后拉距出现滋滋声.7z
63. le_audio_JL703N_2.0.0_patch01.10 先开广播再切换SPDIF光纤输入,会打印‘a’,无法播放和广播。 修改方法:
具体参考git链接对应demo修改。
外网:Files · bugfix_sdk_2.0.0_p01.10_修复SPDIF广播异常问题 · JL-Studio / Leaudio / 703N / JL703N_le_audio_2.0.0 · GitLab
内网:Files · bugfix_sdk_2.0.0_p01.10_修复SPDIF广播异常问题 · 可视化SDK / le_audio / JL703Nle_audio_SDK / JL703Nle_audio_2.0.0 · GitLab
64. le_audio_JL703N_2.0.0_patch01.10 媒体流和mic_effect 数据流同时增加spectrum频谱获取节点导致死机问题。 修改办法:替换media.a
65. le_audio_JL703N_2.0.0_patch01.10 先开广播再进HDMI输入模式,重复切换模式会死机 原因:打开广播后,进入SPDIF模式会多初始化一遍CEC模块。
修改办法:
在CEC初始化模块增加限制,避免重复初始化。
if (__this->time_id != 0 && __this->time_id != -1) {
return;
}
66. le_audio_JL703N_2.0.0_patch01.08 在线调音修改魔音节点EffectV参数无效 原因:相关算法未使能
修改办法:
将相应算法使能即可,后续版本会将该使能放到可视化工具的对应音效节点上。
67. le_audio_JL703N_2.0.0_patch01.09 测试盒连接蓝牙后测试盒直接断开会有杂音出现。 问题描述:测试盒连接703蓝牙后直接断电测试盒703会有杂音出现,且出现下列的异常打印。
修改办法:更换media.a
media_铜霭_703_leaudio_P109_直接断开测试盒有杂音问题.rar
gitlab链接:
68. CIS主从连接,BT模式下连接主从能出声,切换到Linein模式,概率出现只有主机能出声、从机无法出声
一、根本原因:
时序竞争问题:CIG_EVENT_CENTRAL_CONNECT的CIG连接事件 早于linein的LE_AUDIO_APP_OPEN出来,则从机无声。因为没有打开linein的广播发射
二、处理方案:
1、关闭蓝牙后台后,暂不打开CIG。等到LE_AUDIO_APP_OPEN事件后,再执行恢复app_connected_resume();
2、在 app_connected_open_in_other_mode() 中检查是否有挂起的 CIS(模式切换场景),如果有则跳过
69. le_audio-JL703N-2.0.0-JL703N-demo-patch_01.10 PC模式广播会出现哒哒声 处理方案:
Files · bugfix_sdk_p01.10_PC广播 · JL-Studio / Leaudio / 703N / JL703N_le_audio_2.0.0 · GitLab
问题处理
JL703N 音频流程FAQ
PC SPK配置IIS输出配置图 需要把PC的解码链接到音频的媒体输出


DAC四声道输出配置(四声道独立EQ) 框图如下:
注意:如果开了消人声模块,则经过模块处理后,LR的声音会一样。
导入.x6flow文件
【金山文档】 四声道
金山文档
每个EQ对应的声道如下:
播放不了多通道(大于2音轨/声道)的WAV格式音频 现象:直接退出播放
原因:默认sdk设置了不支持播放 大于sdk最大音轨/声道的音频文件
log:
工具自己的需求修改对应宏参数JL703最大支持DEC采样率修改 部分歌曲的采样率有192KHZ,这种歌曲无法播放,需要修改DEC解码库默认支持的最大采样率范围

需要修改解码支持的最大采样率配置
案例分享
- JL703N spdif 信息位给过来的采样率信息不正确兼容性问题处理 问题描述:由于spdif 信号携带的信息位表明采样率与实际波形不相符,所以我们不去解码这种不正规的信号
解决办法:用实际的采样率作为解码的采样率,而不是使用信号位信息给过来的采样率信息作为解码的采样率,对比修改文件:
spdif_file(JL703N_soundbox_处理spdif信息位采样率不正确的兼容性问题)
另外有一些非标准采样率的信号的兼容性措施
例如:信息位给过来的信号采样率为44.1K,但是实际的采样率为93750 ,而93750是非标准的采样率,相对于96K 有较大误差。
这个时候,可以增加多一个采样,同样对比修改文件:
spdif_file(JL703N_soundbox_处理spdif信息位采样率不正确的兼容性问题)
并增加多一组93700采样率设置,这样可以做到在纠错误差为100的时候:
- JL703N 四声道输出,每一个声道音量独立控制的实现 由于默认固定模拟增益,采用调节数字音量方式实现音量调节
所以可以通过调用接口直接对每一个声道设置独立的数字音量
- JL703N 创建IIS 输入dac 输出数据流参考demo 703创建IIS 输入dac输出音频流demo.otl
- JL703N 经典蓝牙连接,需要使用pin_code连接的设置接口

- JL703N 做特殊按键只响应单击事件处理的参考实现办法

- JL703N 做媒体数据流同时上传给到PC的参考实现办法 703将媒体流音频同时上传PC_mic录音demo实现.otl
- JL703N 两路PDMMIC上传PC的参考 jl703_pdmmic改立体声两路demo.7z
- 多文件叠加无缝循环播放 多文件叠加无缝循环播放修改说明.zip
主要看multi_file_play.md 文件(工具主要给提示音节点加了个可配置名字,然后加了 数据流程)
添加流程图
代码上面播放的示例
- 703 le audio 播放提示音文件 注意:
- 多提示音同时播放时需要相同采样率音频文件
- 建议使用le audio 2.0.0P01.11及以后的版本去做
- 测试使用到的提示音0~9时间都是一样长,如果同时播放只有其中一个有声音数据其他都是静音数据 0~9WAV-48K采样
0~9MP3-8K采样
- le audio 2.0.0P01.05同时播放多个提示音 内存、算力足够:测试可以同时播放8个
- demo: Files · feature_播放多路音频文件_sdk_p0105 · JL-Studio / Leaudio / 703N / JL703N_le_audio_2.0.0 · GitLab
内部git - 提示音播放路径设置
- 播放路径设置:
- 注意事项 tone_table.c中chinese_tone_files变量的路径是包含了一层目录“tone_zh/”或者“tone_en/”,需要根据实际情况在SD卡中创建对应的文件夹
//play_ex_dev PLAY_DEV_FLASH:内部flash PLAY_DEV_EX_FLASH:外部flash PLAY_DEV_SD:sd PLAY_DEV_USB:usb
static play_dev_t play_ex_dev = PLAY_DEV_FLASH;
- 代码以及工具修改 默认sdk支持多文件叠加播放


//播放接口
void multifile_play_demo(void);
//停止接口
//指定需要关闭的文件播放器
void fileplay_close(struct tone_player *player);
//关闭所有文件播放器
void fileplay_close_all();
//避免系统播放低电、模式等接口与多文件播放接口添加“互斥” 需要修改接口
struct tone_player *play_fileplay_file(const char *file_name, u8 index)
{
struct tone_player *player;
#ifdef CONFIG_FPGA_ENABLE
/* return -ENOMEM; */
#endif
if(tone_player_runing())tone_player_stop();//播放提示音时播放 多路播放文件死机
....
}
int play_tone_file(const char *file_name)
{
struct tone_player *player;
#ifdef CONFIG_FPGA_ENABLE
/* return -ENOMEM; */
#endif
fileplay_close_all();
player = tone_player_create(file_name);
if (!player) {
return -ENOMEM;
}
return tone_player_add(player);
}
- 测试接口:
case APP_MSG_TONE_PLAYER:
r_printf("APP_MSG_TONE_PLAYER");
u_play_tone_file(get_tone_files()->max_vol);
break;
case APP_MSG_TONE_PLAYER_START:
r_printf("APP_MSG_TONE_PLAYER_START");
u_multifile_play_demo();
break;
case APP_MSG_TONE_PLAYER_STOP:
r_printf("APP_MSG_TONE_PLAYER_STOP");
u_fileplay_close_all();
break;
- le audio 2.0.0P01.11 同时播放多个提示音 注意:
- 内存、算力足够:测试可以同时播放10个
- 支持flash、sd、usb播放路径设置,且在播放结束之后软件切换路径
- 在app_task_loop中添加u_tone_player_init 程序下载地址:Files · feature_同时播放多个提示音_sdk_p0111 · JL-Studio / Leaudio / 703N / JL703N_le_audio_2.0.0 · GitLab
- 修改文件列表: 下载文件地址word/file
- 库文件:media.a
- tone_player.c、tone_player.h
- 工具上在系统模式中添加多文件播放音频流 注意:音频流节点名称必须与代码保持一致

- 避免没有找到任务配置导致断言,需要在app_main.c中增加多个音频流任务配置
{"jlstream_d", 5, 0, 768, 0 },
{"jlstream_e", 5, 0, 768, 0 },
{"jlstream_f", 5, 0, 768, 0 },
{"jlstream_g", 5, 0, 768, 0 },
{"jlstream_h", 5, 0, 768, 0 },
{"jlstream_i", 5, 0, 768, 0 },
{"jlstream_j", 5, 0, 768, 0 },
{"jlstream_k", 5, 0, 768, 0 },
{"jlstream_l", 5, 0, 768, 0 },
{"jlstream_m", 5, 0, 768, 0 },
{"jlstream_n", 5, 0, 768, 0 },
{"jlstream_o", 5, 0, 768, 0 },
{"jlstream_p", 5, 0, 768, 0 },
{"jlstream_q", 5, 0, 768, 0 },
{"jlstream_r", 5, 0, 768, 0 },
{"jlstream_s", 5, 0, 768, 0 },

4. 在app_task_loop中添加u_tone_player_init
static void app_task_loop(void *p){
struct app_mode *mode;
mode = app_task_init();
//添加提示音播放器初始化
u_tone_player_init();
}
- 添加如下接口工外部调用
/**
* @brief 多文件提示音播放接口
*
* @param file_name 提示音文件名
* @param index 提示音节点名索引
* @return struct tone_player* 提示音播放器指针
*/
struct tone_player *u_play_fileplay_file(const char *file_name);
/**
* @brief 多文件提示音播放接口
*
* @param file_name 提示音文件名
* @return true 提示音播放器是否运行中
* @return false 提示音播放器是否未运行中
*/
bool u_play_fileplay_file_runing(const char *file_name);
/**
* @brief 多文件提示音播放测试demo
*
*/
void multifile_play_demo(void);
/**
* @brief 提示音资源存放路径切换接口
*
* @param dev 提示音资源存放设备,
* PLAY_DEV_FLASH flash
* PLAY_DEV_SD sd
*PLAY_DEV_USB usb
*/
void u_set_play_ex_dev(play_dev_t dev);
/**
* @brief 提示音播放器初始化
* 上电开机时判断设备是否上线,上线失败则切换为flash设备播放提示音,避免提示音无法播放
*
*/
void u_tone_player_init(void);
- 添加多个自定义io唤醒 内部git
- 在key_wakeup_init中调用user_wakeup_init

- 唤醒io配置

- 新增代码如下
static struct _p33_io_wakeup_config user_wakeup_port[]={
[0]={
.pullup_down_mode = PORT_KEEP_STATE,
.filter = PORT_FLT_DISABLE,
.edge = FALLING_EDGE,
.gpio = IO_PORTB_07,
.callback = user_wakeup_callback,
},
[1]={
.pullup_down_mode = PORT_KEEP_STATE,
.filter = PORT_FLT_DISABLE,
.edge = FALLING_EDGE,
.gpio = IO_PORTB_08,
.callback = user_wakeup_callback,
},
};
static void user_wakeup_callback(P33_IO_WKUP_EDGE edge)
{
// key_active_set(0);
}
static u8 user_sleep_enter(void)
{
//进入低功耗打开唤醒
for(int i=0;i<ARRAY_SIZE(user_wakeup_port);i++){
p33_io_wakeup_enable(user_wakeup_port[i].gpio, 1);
}
return 0;
}
static u8 user_sleep_exit(void)
{
//退出低功耗打开唤醒
for(int i=0;i<ARRAY_SIZE(user_wakeup_port);i++){
p33_io_wakeup_enable(user_wakeup_port[i].gpio, 0);
}
return 0;
}
SLEEP_TARGET_REGISTER(user_pdown_tag) = {
.name = "userwakeup",
.enter = user_sleep_enter,
.exit = user_sleep_exit,
};
static void user_soff_enter(void)
{
//软关机前打开唤醒使能
r_printf("user_soff_enter");
for(int i=0;i<ARRAY_SIZE(user_wakeup_port);i++){
p33_io_wakeup_enable(user_wakeup_port[i].gpio, 1);
soff_gpio_protect(user_wakeup_port[i].gpio);
}
}
platform_uninitcall(user_soff_enter);
int user_wakeup_init_number(struct _p33_io_wakeup_config *wakeup_port){
if(!wakeup_port)return-1;
switch (wakeup_port->edge){
case FALLING_EDGE:
gpio_set_mode(IO_PORT_SPILT(wakeup_port->gpio), PORT_INPUT_PULLUP_10K);
break;
case RISING_EDGE:
gpio_set_mode(IO_PORT_SPILT(wakeup_port->gpio), PORT_INPUT_PULLDOWN_10K);
break;
default:
break;
}
if(PORT_KEEP_STATE!=wakeup_port->pullup_down_mode){
gpio_set_mode(IO_PORT_SPILT(wakeup_port->gpio), wakeup_port->pullup_down_mode);
}
p33_io_wakeup_port_init(wakeup_port);
p33_io_wakeup_enable(wakeup_port->gpio, 1); //默认adkey、irkey开机唤醒不常开,进入低功耗和关机的时候再打开,避免电压抖动一直触发中断
return 0;
}
int user_is_wakeup(u8 index){
if(index<ARRAY_SIZE(user_wakeup_port)){
return is_gpio_wakeup(user_wakeup_port[index].gpio);
}
return -1;
}
void user_wakeup_init(void){
r_printf("user_wakeup_init %d",ARRAY_SIZE(user_wakeup_port));
for(int i=0;i<ARRAY_SIZE(user_wakeup_port);i++){
g_printf("user is index %d wakeup : %d",i,user_is_wakeup(i));
user_wakeup_init_number(user_wakeup_port+i);
}
reset_source_dump();
}
- 703 le audio 2.0.0P01.05 EQ表切换 内部git
- 默认music eq0节点的eq表切换
case APP_MSG_MUSIC_CHANGE_EQ:
u8 music_eq_preset_index = get_music_eq_preset_index();
music_eq_preset_index ^= 1;
set_music_eq_preset_index(music_eq_preset_index);
eq_update_parm(get_current_scene(), "Eq0Media", music_eq_preset_index);
app_send_message(APP_MSG_EQ_CHANGED, get_music_eq_preset_index() + 1); //显示EQ从1开始
printf("APP_MSG_MUSIC_CHANGE_EQ:%d\n", music_eq_preset_index);
break;
- 自己拉取eq节点的eq表切换
- 添加eq节点

- 编辑eq节点并添加多个eq表



- 切换eq表
- 添加eq节点
static u8 music_eq_preset_index = 0;
music_eq_preset_index=(music_eq_preset_index+1)%3/*eq节点中的序号*/;
eq_update_parm(get_current_scene(), "EQ134"/*节点名称*/, music_eq_preset_index);
printf("APP_MSG_MUSIC_CHANGE_EQ:%d\n", music_eq_preset_index);
- 703 le audio 2.0.0P01.05 场景(分组)表切换 内部git
- 新建多个场景(分组)

- 切换场景(分组)
r_printf("APP_MSG_MUSIC_SCENE_SW 切换场景(分组)");
effect_scene_set((get_current_scene()+1)%get_mode_scene_num());
g_printf("scene loat num =%d cur=%d",get_mode_scene_num(),get_current_scene());
- 703 le audio 2.0.0P01.04/2.0.0P01.05扩音器输入源的选择 内部git
- 扩音器音频流有两条个流程

- 默认选择为iis输入的音频流
- 如果在进LOUDSPEAKER(扩音器)模式,时需要切换可以使用如下接口切换
/**
*source:
*0:ADC MIC
*1:IIS MIC
*/
void set_loudspeaker_source(u8 source);
- 修改默认扩音器模式的音乐流程图
u8 loudspeaker_source_flag = 0;//1:IIS MIC 0:ADC MIC
14. 使用场景切换更新3D 节点参数
内部git
案例使用:APP_MSG_SWITCH_SOUND_EFFECT
修改文件:scene_switch.c
static char *threeD_name[] = {"ThreeD0"};
/*
*媒体模块节点参数更新
* */
static int module_node_update_parm_by_uuid(
int (*node_update)(unsigned short uuid, u8 mode_index, char* node_name, u8 cfg_index), unsigned short uuid,
u8 mode_index, char* son_node_name, u8 cfg_index)
{
int ret;
char tar_name[16];
for (int j = 0; j < ARRAY_SIZE(father_name); j++) {
effects_name_sprintf_to_hash(tar_name, son_node_name, father_name[j]);
if (node_update) {
ret = node_update(uuid, mode_index, tar_name, cfg_index);
if (ret < 0) {
continue;
} else {
break;
}
}
}
return ret;
}
void effect_scene_set(u8 scene)
{
// user add
#if TCFG_THREE_D_EFFECT_NODE_ENABLE
for (int i = 0; i < ARRAY_SIZE(threeD_name); i++) {
effects_name_sprintf(tar_name, threeD_name[i], music_mode[cur_mode]);
ret = node_param_update_parm(NODE_UUID_THREE_D, scene, tar_name, 0);
if (ret < 0) {
#if MEDIA_MODULE_NODE_UPDATE_EN
module_node_update_parm_by_uuid(node_param_update_parm, NODE_UUID_THREE_D, scene, threeD_name[i], 0);
#endif
}
}
#endif
}
- 703 le audio 2.0.0P01.05 写vm之后关机开机时vm数据不是原来写入的数据 内部git
测试代码如下:
#define USER_WRITE_0 0//默认sdk,每次写vm都是写入到ram中,只有在软关机时才会把存在ram中的vm数据写到flash中
#define USER_WRITE_1 1//每次写入vm都需要调用调用类似Linux下的sync命令 写入到flash
#define USER_WRITE_2 2//所有的写vm操作直接操作flash
#define USER_WRITE USER_WRITE_1
#define USER_VM_ID 37//(CFG_USER_DEFINE_BEGIN+4)
void u_wr_vm(void *p){
int ret=0;
u8 data[4]={
4,5,6,7
};
ret=syscfg_read(USER_VM_ID,&data,sizeof(data));
r_printf("------vm_ram=%d--read--ret=%d",get_vm_ram_direct_2_flash_switch() ,ret);
for(int i=0;i<sizeof(data)/sizeof(data[0]);i++){
r_printf("data[%d]=%d",i,data[i]);
}
data[0]=(data[0]+1)%0xff;
data[1]=(data[1]+1)%0xff;
data[2]=(data[2]+1)%0xff;
data[3]=(data[3]+1)%0xff;
ret=syscfg_write(USER_VM_ID,&data,sizeof(data));
g_printf("------vm_ram=%d--write--ret=%d",get_vm_ram_direct_2_flash_switch() ,ret);
for(int i=0;i<sizeof(data)/sizeof(data[0]);i++){
g_printf("data[%d]=%d",i,data[i]);
}
#if(defined(USER_WRITE)&&(USER_WRITE==USER_WRITE_1))
vm_flush2flash(0);//每次写入都需要调用一次
#endif
}
//*----------------------------------------------------------------------------*/
/**@brief 开机启动
@param 无
@return
@note
*/
/*----------------------------------------------------------------------------*/
static void poweron_task_start()
{
#if(defined(USER_WRITE)&&(USER_WRITE==USER_WRITE_2))
vm_ram_direct_2_flash_switch(1);//总的开关
#endif
sys_timer_add(NULL,u_wr_vm,1000);
#if TCFG_APP_BT_EN
app_send_message(APP_MSG_GOTO_MODE, APP_MODE_BT);
#else
/* app_send_message(APP_MSG_GOTO_MODE, APP_MODE_IDLE); */
app_send_message(APP_MSG_GOTO_NEXT_MODE, 0);
#endif
}
- aw32+JL7034_扩音器项目 源码 aw23a_TX链接:
内部git
wireless_mic_aw32n_1.0.0_tx-case_aw32+JL7034_扩音器项目.zip
aw23a_RX链接:
内部git
wireless_mic_aw32n_1.0.0_rx-case_aw32+JL7034_扩音器项目.zip
JL7034A程序链接:
内部git
JL703Nle_audio_2.0.0-case_aw32+JL7034_扩音器项目.zip
标准原理图获取途径:
- JL703N 扩音器iis输入录音 录音的音频流修改如下:
修改下面的内容:
如果全局采样率不是16k,需增加下面的内容:

- 703_le_audio_2.0.0_P01.10_四路IIS输入输出demo 703四路IIS输入输出demo.otl
gitlab:Files · feature_703_le_200_01.10_4路IIS输入输出 · 自由品牌 / 客户支持 / JLStudio / le_audio / JL703Nle_audio_2.0.0 · GitLab - 703_le_audio_2.0.0_P01.11 广播关掉本地同步播放之后获取能量 相关信息:
- LE_AUDIO配置->公共配置->本地同步播放关掉之后
- 广播模式使用的是LE_Aduio音频流,非广播模式使用的是媒体音频流
- 所以获取广播模式与非广播模式Energy(能量节点)的值,需要在两个音频流中添加Energy节点
dmeo:Files · feature_获取广播与非广播模式下的能量值 · JL-Studio / Leaudio / 703N / JL703N_le_audio_2.0.0 · GitLab - 703_le_audio_2.0.0_P01.10 SPDIF+DAC+IIS输出demo 内网:Files · feature_sdk_2.0.0_p01.10_SPDIF+IIS+DAC输出 · 可视化SDK / le_audio / JL703Nle_audio_SDK / JL703Nle_audio_2.0.0 · GitLab
demo:Files · feature_sdk_2.0.0_p01.10_SPDIF+IIS+DAC输出 · JL-Studio / Leaudio / 703N / JL703N_le_audio_2.0.0 · GitLab
修复问题: - 优化U盘、linein、SPDIF模式,SPDIF输出无声
- 优化SPDIF不同采样率兼容性问题
- 优化U盘、linein模式SPDIF输出声道概率异常问题
- 优化音乐模式暂停时SPDIF输出有尾音问题
- 修复先开广播再切光纤输入模式,会出现光纤音频无法播放的问题。
- 修复先开关广播再插入光纤线会打印c且无声的问题
- 修复SPDIF模式PP键异常问题