Maybe you're right...but I've checked, the bytes_read is always >0 on on_rx_rtp/rtcp callbacks. First I create two media transports, one for each UA. I initialize the rtp/rtcp session with pjmedia_rtp_session_init / pjmedia_rtcp_init. I call pjmedia_transport_attach() to attach my RTP/RTCP RX callbacks, one for each UA. Then I create 2 worker threads, one for each UA in which I call pjmedia_rtp_encode_rtp and then pjmedia_transport_send_rtp/rtcp() to send the packet with the other transport. Am I missing something? Bye, AFAIK, the pjmedia_transport doesn't modify any part of the packet. So perhaps some 'logic error' in the code (buffer sharing, etc). And please make sure you check the "bytes_read" on on_rx_rtp/rtcp callback, because it can be < 0. nanang