Загрузка данных


void media_reinit_worker(struct k_work *work)
{
    pj_status_t status;
    pjsua_call_info call_info;

    printf("[WORKER] Safe async media sub-system swap to %u Hz started...\n", target_codec_rate);
    zephyr_i2s_stop(1);
    zephyr_i2s_stop(0);
    k_msleep(10); 

    printf("Destroying pjsua media bridge...\n");
    pjsua_media_subsys_destroy(0);

    printf("Reconfiguring MCUX SAI and Audio Codec hardware clocks...\n");
    int ret = zephyr_i2s_set_rate(target_codec_rate);
    if (ret < 0) {
        printf("CRITICAL ERROR: Hardware failed to transition to %u Hz! Retrying init at old rate...\n", target_codec_rate);
        zephyr_i2s_set_rate(current_bridge_rate);
    } else {
        current_bridge_rate = target_codec_rate;
    }
    printf("Re-initializing pjsua media with native clock_rate=%u\n", current_bridge_rate);
    pjsua_media_config media_cfg;
    pjsua_media_config_default(&media_cfg);
    media_cfg.clock_rate = current_bridge_rate;
    media_cfg.snd_clock_rate = current_bridge_rate; 
    status = pjsua_media_subsys_init(&media_cfg);
    if (status != PJ_SUCCESS) {
        printf("[MEDIA] CRITICAL: Subsys init failed: %d\n", status);
        return;
    }
    status = pjsua_media_subsys_start();
    if (status != PJ_SUCCESS) {
        printf("[MEDIA] CRITICAL: Subsys start failed: %d\n", status);
        return;
    }
    if (status != PJ_SUCCESS) {
        printf("CRITICAL ERROR: pjsua_media_init failed: %d\n", status);
        return;
    }
    pjsua_call_get_info(media_call_id, &call_info);
    pjsua_conf_connect(call_info.conf_slot, 0);
    pjsua_conf_connect(0, call_info.conf_slot);
    printf("SUCCESS: Call media bridged natively at %u Hz without any software resampling!\n\n", current_bridge_rate);
}

Pressed: *
create_conf_port(491) high_quality=1 large_filter=1 Rate_in:8000 Rate_out:16000 samples_per_frame=160

============ MEDIA CHANNELS ACTIVE ============
Negotiated Codec Sample Rate: 8000 Hz
Current Active Bridge Rate  : 16000 Hz
===============================================
[MEDIA] Scheduling async rate switch to 8000 kHz
[WORKER] Safe async media sub-system swap to 8000 Hz started...
zephyr_i2s_stop(274) start_stream=0
zephyr_i2s_stop(274) start_stream=0
[CONNECTING]
[CONDestroying pjsua media bridge...
FIRMED]
create_conf_port(491) high_quality=1 large_filter=1 Rate_in:8000 Rate_out:16000 samples_per_frame=160

============ MEDIA CHANNELS ACTIVE ============
Negotiated Codec Sample Rate: 8000 Hz
Current Active Bridge Rate  : 16000 Hz
===============================================
[MEDIA] Scheduling async rate switch to 8000 kHz
Acquiring transport type=UDP, sel=ip_ver[0], reuse=1 remote=192.168.0.76:5060 
(192.168.0.76)Acquiring transport got the lock
Search transport by remote address
Search loop & datagram transports with address zero
Search loop & datagram transports found one
Transport udp0x800895b0 acquired
Reconfiguring MCUX SAI and Audio Codec hardware clocks...
Re-initializing pjsua media with native clock_rate=8000
mode=0 col=0 row=1 text=CONNECStart add zephyr audio IN
Start add zephyr audio OUT
pj_thread_create(821) Set media thread stacksize=4096 current=0x8000c458
Created pthread 0x8000ac30 stack_size=4096 stack=0x8002e380
pj_thread_create(821) Set ev_thread thread stacksize=1024 current=0x8000c458
Created pthread 0x8000ad90 stack_size=1024 stack=0x8003c380

Зависает