X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=sip.cpp;h=4c81f11766d98459e7a914fbf7327a57711c7d79;hp=4def0a1cbeb3b35141c315a8376205051337cf22;hb=9e6a068f252adab72e05fa732de363fc1cc98fe0;hpb=cde9a763b10ce9fb98be413ded983fb1816ea258 diff --git a/sip.cpp b/sip.cpp index 4def0a1..4c81f11 100644 --- a/sip.cpp +++ b/sip.cpp @@ -257,6 +257,12 @@ we only support alaw and ulaw! return 0; } + /* record audio */ + if (psip->p_record) + psip->record(payload, payload_len, 0); // from down + if (psip->p_tap) + psip->tap(payload, payload_len, 0); // from down + n = payload_len; from = payload; to = payload; @@ -387,8 +393,9 @@ int Psip::rtp_open(void) if (rc != 0) goto try_next_port; - rc = rtp_sub_socket_bind(p_s_rtcp_fd.fd, &p_s_rtcp_sin_local, ip, next_udp_port+1); + rc = rtp_sub_socket_bind(p_s_rtcp_fd.fd, &p_s_rtcp_sin_local, ip, next_udp_port + 1); if (rc == 0) { + p_s_rtp_port_local = next_udp_port; next_udp_port = (next_udp_port + 2 > RTP_PORT_MAX) ? RTP_PORT_BASE : next_udp_port + 2; break; } @@ -415,7 +422,6 @@ try_next_port: rtp_close(); return rc; } - p_s_rtp_port_local = next_udp_port; p_s_rtp_ip_local = ntohl(p_s_rtp_sin_local.sin_addr.s_addr); PDEBUG(DEBUG_SIP, "local ip %08x port %d\n", p_s_rtp_ip_local, p_s_rtp_port_local); PDEBUG(DEBUG_SIP, "remote ip %08x port %d\n", p_s_rtp_ip_remote, p_s_rtp_port_remote); @@ -487,6 +493,12 @@ int Psip::rtp_send_frame(unsigned char *data, unsigned int len, uint8_t payload_ int duration; /* in samples */ unsigned char buffer[256]; + /* record audio */ + if (p_record) + record(data, len, 1); // from up + if (p_tap) + tap(data, len, 1); // from up + if (!p_s_rtp_is_connected) { /* drop silently */ return 0;