Hello,

I’m having some issues with an iOS application I am currently building using 
the LibLinphone iOS SDK. I am using the oRTP library within the SDK to receive 
an RTP stream from a Raspberry Pi and play this back on the iOS device. I am 
running on an iPad mini iOS 9.3.5. My code using the oRTP library is very 
similar to the rtprecv.c example included within the oRTP library. I’ll include 
this below:

    RtpSession *session;
    unsigned char buffer[160];
    int err;
    uint32_t ts=0;
    int stream_received=0;
    int have_more;
    bool_t adapt=TRUE;

    /* init the lib */

    ortp_init();
    ortp_scheduler_init();

    signal(SIGINT,stop_handler);
    session=rtp_session_new(RTP_SESSION_SENDRECV);
    rtp_session_set_scheduling_mode(session,FALSE);
    rtp_session_set_blocking_mode(session,FALSE);
    rtp_session_set_local_addr(session,"0.0.0.0",3550, 3551);
    rtp_session_enable_adaptive_jitter_compensation(session,adapt);
    rtp_session_set_jitter_compensation(session,40);
    rtp_session_set_payload_type(session,0);
    rtp_session_signal_connect(session,"ssrc_changed",(RtpCallback)ssrc_cb,0);
    
rtp_session_signal_connect(session,"ssrc_changed",(RtpCallback)rtp_session_reset,0);

    while(cond)
    {
        have_more=1;
        while (have_more){
            err= rtp_session_recv_with_ts(session, buffer, 160, ts, &have_more);
            if (err>0) stream_received=1;
            /* this is to avoid to write to disk some silence before the first 
RTP packet is returned*/
            if ((stream_received) && (err>0)) {
                
                //this is where I will write the buffer to audio output

            }
            
        }
        
        /* Follow the RFC, payload 0 has 8kHz reference rate */
        ts+= frame_size * 8000 / sample_rate;
    }

The first issue was found when running this code with 

session=rtp_session_new(RTP_SESSION_RECVONLY);

Xcode gives an lldb error with "Thread 1: EXC_BAD_ACCESS (code=1, address=0x8)” 
given on the line err= rtp_session_recv_with_ts(session, buffer, 160, ts, 
&have_more);

if I change the session to RTP_SESSION_SENDRECV I no longer get this error. 
Instead I now get Thread 1: signal SIGABRT and:

malloc: *** error for object 0x16b22e04: incorrect checksum for freed object - 
object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug

Again, this happens when calling rtp_session_recv_with_ts(session, buffer, 160, 
ts, &have_more);

If anyone can point me in the right direction with this I’d greatly appreciate 
it.

Many thanks,

Ryan




_______________________________________________
Linphone-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/linphone-users

Reply via email to