int AmRtpStream::ping() { // TODO: // - we'd better send an empty UDP packet // for this purpose. unsigned char ping_chr[2]; ping_chr[0] = 0; ping_chr[1] = 0; AmRtpPacket rp; rp.payload = payload; rp.marker = true; rp.sequence = sequence++; rp.timestamp = 0; rp.ssrc = l_ssrc; rp.compile((unsigned char*)ping_chr,2); rp.setAddr(&r_saddr); if(rp.send(l_sd) < 0){ ERROR("while sending RTP packet.\n"); return -1; } return 2; }
int AmRtpStream::send( unsigned int ts, unsigned char* buffer, unsigned int size ) { if ((mute) || (hold)) return 0; if(!size) return -1; AmRtpPacket rp; rp.payload = payload; rp.marker = false; rp.sequence = sequence++; rp.timestamp = ts; rp.ssrc = l_ssrc; rp.compile((unsigned char*)buffer,size); rp.setAddr(&r_saddr); #ifdef WITH_ZRTP if (session->zrtp_audio) { zrtp_status_t status = zrtp_status_fail; unsigned int size = rp.getBufferSize(); status = zrtp_process_rtp(session->zrtp_audio, (char*)rp.getBuffer(), &size); switch (status) { case zrtp_status_drop: { DBG("ZRTP says: drop packet! %u - %u\n", size, rp.getBufferSize()); return 0; } case zrtp_status_ok: { // DBG("ZRTP says: ok!\n"); if (rp.getBufferSize() != size) // DBG("SEND packet size before: %d, after %d\n", // rp.getBufferSize(), size); rp.setBufferSize(size); } break; default: case zrtp_status_fail: { DBG("ZRTP says: fail!\n"); // DBG("(f)"); return 0; } } } #endif if(rp.send(l_sd) < 0){ ERROR("while sending RTP packet.\n"); return -1; } return size; }
int AmRtpStream::send_raw( char* packet, unsigned int length ) { if ((mute) || (hold)) return 0; AmRtpPacket rp; rp.compile_raw((unsigned char*)packet, length); rp.setAddr(&r_saddr); if(rp.send(l_sd) < 0){ ERROR("while sending raw RTP packet.\n"); return -1; } return length; }
int AmRtpStream::send( unsigned int ts, unsigned char* buffer, unsigned int size ) { if ((mute) || (hold)) return 0; if(!size) return -1; AmRtpPacket rp; rp.payload = payload; rp.marker = false; rp.sequence = sequence++; rp.timestamp = ts; rp.ssrc = l_ssrc; rp.compile((unsigned char*)buffer,size); rp.setAddr(&r_saddr); if(rp.send(l_sd) < 0){ ERROR("while sending RTP packet.\n"); return -1; } return size; }