i2s_stream_reader和i2s_stream_writer为何不能一起初始化

faintonce
Posts: 2
Joined: Sat Oct 12, 2024 9:42 am

i2s_stream_reader和i2s_stream_writer为何不能一起初始化

Postby faintonce » Sat Oct 12, 2024 9:47 am

我用esp32 s3 korvo2 v3开发板,idfV5.3.1,在adf开发中碰到一个诡异的问题,不能同时初始化i2s_stream_reader和writer,单用哪个都非常正常,但如果初始化完reader再初始化writer,reader那边录音声音就变得很慢,难道还不能同时具备 录音和播放功能吗,哪位大神告诉我,这是为啥啊

Code: Select all

i2s_stream_cfg_t i2s_cfg = I2S_STREAM_CFG_DEFAULT_WITH_TYLE_AND_CH(CODEC_ADC_I2S_PORT, 44100, 16, AUDIO_STREAM_READER, 1);
    i2s_cfg.out_rb_size = 16 * 1024; // Increase buffer to avoid missing data in bad network conditions
    i2s_stream_reader = i2s_stream_init(&i2s_cfg);
    
    i2s_stream_cfg_t i2s_cfg1 = I2S_STREAM_CFG_DEFAULT_WITH_TYLE_AND_CH(CODEC_ADC_I2S_PORT, 44100, 16, AUDIO_STREAM_WRITER, 1);    
    i2s_cfg1.out_rb_size = 16 * 1024;
    i2s_stream_writer = i2s_stream_init(&i2s_cfg1);
很明显这俩配置一模一样,不存在不匹配的问题,另外我为什么编译时不会用到i2s_stream_idf5.c,我明明环境是5.3.1

faintonce
Posts: 2
Joined: Sat Oct 12, 2024 9:42 am

Re: i2s_stream_reader和i2s_stream_writer为何不能一起初始化

Postby faintonce » Sat Oct 12, 2024 1:23 pm

嗯,我自己解决了。全试了一遍,发现不管是用i2s_stream_int,或者i2s_stream_set_clk,还是audio_element_setinfo,不管后面要设置的对象是啥,只要和stream有关的,参数全都被改了,比如给i2s_stream_writer设个clk,会惊喜地发现i2s_stream_reader参数也变了,虽然用getinfo打印出来看数字并没变,但实际上就是变了,那感觉就好像你在游戏里面打死头野猪,一回头发现旁边的野狼也死了,可能是我用惯了面向对象语言后就不太能理解C,所以,嗯。

ESP_William
Posts: 131
Joined: Tue Apr 24, 2018 5:54 am

Re: i2s_stream_reader和i2s_stream_writer为何不能一起初始化

Postby ESP_William » Mon Oct 14, 2024 8:33 am

i2s_stream_reader和i2s_stream_writer 应该是可以同时初始化的,请参考[passthru](https://github.com/espressif/esp-adf/bl ... passthru.c)。您说的播放慢的情况能详细描述一下么?

Who is online

Users browsing this forum: No registered users and 12 guests