summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2010-06-23 12:30:04 +0000
committerBenny Prijono <bennylp@teluu.com>2010-06-23 12:30:04 +0000
commitfc7d78d6dc115e3f70eb40c3d5cdaba5cce64de9 (patch)
tree574d1690e8b44ae5d4cb29fc7d11b8e22e33b14d
parent6e609cb376bd29ad241c8bffd5571f0f98d128a7 (diff)
Fixed #1094: Transmit RTCP keep alive even when the stream is paused (thanks Johan Lantz for the suggestion)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3218 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/src/pjmedia/stream.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/pjmedia/src/pjmedia/stream.c b/pjmedia/src/pjmedia/stream.c
index 10378ba5..79b67e51 100644
--- a/pjmedia/src/pjmedia/stream.c
+++ b/pjmedia/src/pjmedia/stream.c
@@ -390,22 +390,28 @@ static void send_keep_alive_packet(pjmedia_stream *stream)
/* Keep-alive packet is empty RTP */
pj_status_t status;
- void *rtphdr;
+ void *pkt;
int pkt_len;
+ TRC_((stream->port.info.name.ptr,
+ "Sending keep-alive (RTCP and empty RTP)"));
+ /* Send RTP */
status = pjmedia_rtp_encode_rtp( &stream->enc->rtp,
stream->enc->pt, 0,
1,
0,
- (const void**)&rtphdr,
+ (const void**)&pkt,
&pkt_len);
pj_assert(status == PJ_SUCCESS);
- pj_memcpy(stream->enc->out_pkt, rtphdr, pkt_len);
+ pj_memcpy(stream->enc->out_pkt, pkt, pkt_len);
pjmedia_transport_send_rtp(stream->transport, stream->enc->out_pkt,
pkt_len);
- TRC_((stream->port.info.name.ptr, "Keep-alive sent (empty RTP)"));
+
+ /* Send RTCP */
+ pjmedia_rtcp_build_rtcp(&stream->rtcp, &pkt, &pkt_len);
+ pjmedia_transport_send_rtcp(stream->transport, pkt, len);
#elif PJMEDIA_STREAM_ENABLE_KA == PJMEDIA_STREAM_KA_USER
@@ -413,11 +419,18 @@ static void send_keep_alive_packet(pjmedia_stream *stream)
int pkt_len;
const pj_str_t str_ka = PJMEDIA_STREAM_KA_USER_PKT;
+ TRC_((stream->port.info.name.ptr,
+ "Sending keep-alive (custom RTP/RTCP packets)"));
+
+ /* Send to RTP port */
pj_memcpy(stream->enc->out_pkt, str_ka.ptr, str_ka.slen);
pkt_len = str_ka.slen;
pjmedia_transport_send_rtp(stream->transport, stream->enc->out_pkt,
pkt_len);
- TRC_((stream->port.info.name.ptr, "Keep-alive sent"));
+
+ /* Send to RTCP port */
+ pjmedia_transport_send_rtcp(stream->transport, stream->enc->out_pkt,
+ pkt_len);
#else