summaryrefslogtreecommitdiff
path: root/pjmedia/src/pjmedia/stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjmedia/src/pjmedia/stream.c')
-rw-r--r--pjmedia/src/pjmedia/stream.c40
1 files changed, 23 insertions, 17 deletions
diff --git a/pjmedia/src/pjmedia/stream.c b/pjmedia/src/pjmedia/stream.c
index c7c0db73..ba5fad5c 100644
--- a/pjmedia/src/pjmedia/stream.c
+++ b/pjmedia/src/pjmedia/stream.c
@@ -2121,28 +2121,11 @@ PJ_DEF(pj_status_t) pjmedia_stream_create( pjmedia_endpt *endpt,
stream->rtp_rx_ts_len_per_frame = stream->port.info.samples_per_frame /
stream->codec_param.info.channel_cnt;
- /* Init RTCP session: */
-
- /* Special case for G.722 */
if (info->fmt.pt == PJMEDIA_RTP_PT_G722) {
- pjmedia_rtcp_init(&stream->rtcp, stream->port.info.name.ptr,
- 8000,
- 160,
- info->ssrc);
stream->has_g722_mpeg_bug = PJ_TRUE;
/* RTP clock rate = 1/2 real clock rate */
stream->rtp_tx_ts_len_per_pkt >>= 1;
- } else {
- pjmedia_rtcp_init(&stream->rtcp, stream->port.info.name.ptr,
- info->fmt.clock_rate,
- stream->port.info.samples_per_frame,
- info->ssrc);
}
-#else
- pjmedia_rtcp_init(&stream->rtcp, stream->port.info.name.ptr,
- info->fmt.clock_rate,
- stream->port.info.samples_per_frame,
- info->ssrc);
#endif
/* Init jitter buffer parameters: */
@@ -2198,6 +2181,29 @@ PJ_DEF(pj_status_t) pjmedia_stream_create( pjmedia_endpt *endpt,
goto err_cleanup;
+ /* Init RTCP session: */
+
+ {
+ pjmedia_rtcp_session_setting rtcp_setting;
+
+ pjmedia_rtcp_session_setting_default(&rtcp_setting);
+ rtcp_setting.name = stream->port.info.name.ptr;
+ rtcp_setting.ssrc = info->ssrc;
+ rtcp_setting.rtp_ts_base = pj_ntohl(stream->enc->rtp.out_hdr.ts);
+ rtcp_setting.clock_rate = info->fmt.clock_rate;
+ rtcp_setting.samples_per_frame = stream->port.info.samples_per_frame;
+
+#if defined(PJMEDIA_HANDLE_G722_MPEG_BUG) && (PJMEDIA_HANDLE_G722_MPEG_BUG!=0)
+ /* Special case for G.722 */
+ if (info->fmt.pt == PJMEDIA_RTP_PT_G722) {
+ rtcp_setting.clock_rate = 8000;
+ rtcp_setting.samples_per_frame = 160;
+ }
+#endif
+
+ pjmedia_rtcp_init2(&stream->rtcp, &rtcp_setting);
+ }
+
/* Only attach transport when stream is ready. */
status = pjmedia_transport_attach(tp, stream, &info->rem_addr,
&info->rem_rtcp,