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


/* Callback called by the library when call's media state has changed */
static void on_call_media_state(pjsua_call_id call_id)
{
    pjsua_call_info ci;
    pjsua_call_get_info(call_id, &ci);

    if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE) {
#ifdef USE_DYNAMIC_AUDIO_RATE
        pjsua_call_media_info *media = &ci.media;
        if (media->type == PJMEDIA_TYPE_AUDIO) {
            pjmedia_port *media_port = NULL;

            media_port = pjsua_var.calls[call_id].media[0].strm.a.media_port;
            if (!media_port) {
                printf("[MEDIA] Error: Failed to get call media port\n");
                return;
            }
            //Set rate from detect sound codec
            pjsua_var.media_cfg.snd_clock_rate = media_port->info.fmt.det.aud.clock_rate;
            printf("Try set snd_clock_rate=%u\n",pjsua_var.media_cfg.snd_clock_rate);
        }
#endif
        // When media is active, connect call to sound device.
        pjsua_conf_connect(ci.conf_slot, 0);
        pjsua_conf_connect(0, ci.conf_slot);
    }
}

[CALLING]
[EARLY]
[INPLACE_SWAP] Mutating fields: 16000 Hz -> 8000 Hz (SPF: 160)
[INPLACE_SWAP] Field modification complete. All layers synced to 8000 Hz!
Try set snd_clock_rate=8000
mode=0 col=0 row=1 text=CALLING
mode=0 col=0 row=0 text=Call to 1004
mode=0 col=0 row=1 text=EARLY

уже в это on_call_media_state можно попробовать reinvite, но только в случае, если не совпал clock_rate