diff options
author | bodamnam <bodamnam@google.com> | 2023-03-03 08:07:43 +0000 |
---|---|---|
committer | bodamnam <bodamnam@google.com> | 2023-03-09 01:28:55 +0000 |
commit | 65a20504555befb4086811fff964331c78e08ef7 (patch) | |
tree | 11a5f70a79296de7e818ccb17f6f9f4b628f27a2 /service | |
parent | 90cf20d761d2218cb0338b7966696209634b712d (diff) | |
download | ImsMedia-65a20504555befb4086811fff964331c78e08ef7.tar.gz |
Fix not to send RTCP in NO_FLOW direction
The CL modifies that the RTCP packets are no longer sent in the NO_FLOW direction. The BaseStreamGraph class's Start method was overridden to ensure that each Audio/Text StreamRtcp instance does not send RTCP packets in the NO_FLOW direction
Bug: 270893749
Test: atest ImsMediaNativeTests, Verified Voice Call, Video Call and RTT call direction changing cases in loopback mode using ImsMediaTestingApp
Change-Id: I361155a4b06cc1fb067844583ebd72371cf7f661
Diffstat (limited to 'service')
12 files changed, 76 insertions, 13 deletions
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtcp.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtcp.cpp index e238f068..fa42bffd 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtcp.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtcp.cpp @@ -92,7 +92,7 @@ ImsMediaResult AudioStreamGraphRtcp::update(RtpConfig* config) if (*reinterpret_cast<AudioConfig*>(mConfig) == *pConfig) { - IMLOGD0("[update] no update"); + IMLOGI0("[update] no update"); return RESULT_SUCCESS; } @@ -104,7 +104,7 @@ ImsMediaResult AudioStreamGraphRtcp::update(RtpConfig* config) if (mConfig->getMediaDirection() == RtpConfig::MEDIA_DIRECTION_NO_FLOW) { - IMLOGD0("[update] pause RTCP"); + IMLOGI0("[update] pause RTCP"); return stop(); } @@ -138,6 +138,22 @@ ImsMediaResult AudioStreamGraphRtcp::update(RtpConfig* config) return ret; } +ImsMediaResult AudioStreamGraphRtcp::start() +{ + if (mConfig == nullptr) + { + return RESULT_NOT_READY; + } + + if (mConfig->getMediaDirection() != RtpConfig::MEDIA_DIRECTION_NO_FLOW) + { + return BaseStreamGraph::start(); + } + + // not started + return RESULT_SUCCESS; +} + bool AudioStreamGraphRtcp::OnEvent(int32_t type, uint64_t param1, uint64_t param2) { IMLOGI3("[onEvent] type[%d], param1[%d], param2[%d]", type, param1, param2); diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpRx.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpRx.cpp index 70963147..233284f5 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpRx.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpRx.cpp @@ -88,7 +88,7 @@ ImsMediaResult AudioStreamGraphRtpRx::update(RtpConfig* config) if (*mConfig == *pConfig) { - IMLOGD0("[update] no update"); + IMLOGI0("[update] no update"); return RESULT_SUCCESS; } diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpTx.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpTx.cpp index ae8624a5..f797c117 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpTx.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpTx.cpp @@ -95,7 +95,7 @@ ImsMediaResult AudioStreamGraphRtpTx::update(RtpConfig* config) if (*reinterpret_cast<AudioConfig*>(mConfig) == *pConfig) { - IMLOGD0("[update] no update"); + IMLOGI0("[update] no update"); return RESULT_SUCCESS; } diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/AudioStreamGraphRtcp.h b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/AudioStreamGraphRtcp.h index 9691826c..7253b035 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/AudioStreamGraphRtcp.h +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/AudioStreamGraphRtcp.h @@ -27,6 +27,7 @@ public: virtual ~AudioStreamGraphRtcp(); virtual ImsMediaResult create(RtpConfig* config); virtual ImsMediaResult update(RtpConfig* config); + virtual ImsMediaResult start(); virtual bool OnEvent(int32_t type, uint64_t param1, uint64_t param2); }; diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/text/TextStreamGraphRtcp.h b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/text/TextStreamGraphRtcp.h index 9832f036..2e5155a1 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/text/TextStreamGraphRtcp.h +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/text/TextStreamGraphRtcp.h @@ -27,6 +27,7 @@ public: virtual ~TextStreamGraphRtcp(); virtual ImsMediaResult create(RtpConfig* config); virtual ImsMediaResult update(RtpConfig* config); + virtual ImsMediaResult start(); virtual bool setMediaQualityThreshold(MediaQualityThreshold* threshold); }; diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/VideoStreamGraphRtcp.h b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/VideoStreamGraphRtcp.h index 2ef9a5b6..f1c6d013 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/VideoStreamGraphRtcp.h +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/VideoStreamGraphRtcp.h @@ -27,6 +27,7 @@ public: virtual ~VideoStreamGraphRtcp(); virtual ImsMediaResult create(RtpConfig* config); virtual ImsMediaResult update(RtpConfig* config); + virtual ImsMediaResult start(); virtual bool setMediaQualityThreshold(MediaQualityThreshold* threshold); virtual bool OnEvent(int32_t type, uint64_t param1, uint64_t param2); }; diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcp.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcp.cpp index 922981e6..db36beda 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcp.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcp.cpp @@ -94,7 +94,7 @@ ImsMediaResult TextStreamGraphRtcp::update(RtpConfig* config) if (*mConfig == *pConfig) { - IMLOGD0("[update] no update"); + IMLOGI0("[update] no update"); return RESULT_SUCCESS; } @@ -105,7 +105,7 @@ ImsMediaResult TextStreamGraphRtcp::update(RtpConfig* config) mConfig = new TextConfig(pConfig); - if (mConfig->getRtcpConfig().getIntervalSec() == 0) + if (mConfig->getMediaDirection() == RtpConfig::MEDIA_DIRECTION_NO_FLOW) { IMLOGI0("[update] pause RTCP"); return stop(); @@ -132,7 +132,8 @@ ImsMediaResult TextStreamGraphRtcp::update(RtpConfig* config) } } - if (mGraphState == kStreamStateCreated && mConfig->getRtcpConfig().getIntervalSec() != 0) + if (mGraphState == kStreamStateCreated && + mConfig->getMediaDirection() != RtpConfig::MEDIA_DIRECTION_NO_FLOW) { IMLOGI0("[update] resume RTCP"); return start(); @@ -147,6 +148,24 @@ ImsMediaResult TextStreamGraphRtcp::update(RtpConfig* config) return ret; } +ImsMediaResult TextStreamGraphRtcp::start() +{ + IMLOGI1("[start] state[%d]", mGraphState); + + if (mConfig == nullptr) + { + return RESULT_INVALID_PARAM; + } + + if (mConfig->getMediaDirection() != RtpConfig::MEDIA_DIRECTION_NO_FLOW) + { + return BaseStreamGraph::start(); + } + + // not started + return RESULT_SUCCESS; +} + bool TextStreamGraphRtcp::setMediaQualityThreshold(MediaQualityThreshold* threshold) { if (threshold != nullptr) diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpRx.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpRx.cpp index fa7eafa8..a4456320 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpRx.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpRx.cpp @@ -89,7 +89,7 @@ ImsMediaResult TextStreamGraphRtpRx::update(RtpConfig* config) if (*mConfig == *pConfig) { - IMLOGD0("[update] no update"); + IMLOGI0("[update] no update"); return RESULT_SUCCESS; } diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpTx.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpTx.cpp index 5976bb00..902709b3 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpTx.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpTx.cpp @@ -98,7 +98,7 @@ ImsMediaResult TextStreamGraphRtpTx::update(RtpConfig* config) if (*mConfig == *pConfig) { - IMLOGD0("[update] no update"); + IMLOGI0("[update] no update"); return RESULT_SUCCESS; } diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcp.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcp.cpp index 28ef246a..03a6f728 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcp.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcp.cpp @@ -94,7 +94,7 @@ ImsMediaResult VideoStreamGraphRtcp::update(RtpConfig* config) if (*reinterpret_cast<VideoConfig*>(mConfig) == *pConfig) { - IMLOGD0("[update] no update"); + IMLOGI0("[update] no update"); return RESULT_SUCCESS; } @@ -105,6 +105,12 @@ ImsMediaResult VideoStreamGraphRtcp::update(RtpConfig* config) mConfig = new VideoConfig(pConfig); + if (mConfig->getMediaDirection() == RtpConfig::MEDIA_DIRECTION_NO_FLOW) + { + IMLOGI0("[update] pause RTCP"); + return stop(); + } + ImsMediaResult ret = ImsMediaResult::RESULT_NOT_READY; // stop scheduler if (mGraphState == kStreamStateRunning) @@ -125,7 +131,8 @@ ImsMediaResult VideoStreamGraphRtcp::update(RtpConfig* config) } } - if (mGraphState == kStreamStateCreated && mConfig->getRtcpConfig().getIntervalSec() != 0) + if (mGraphState == kStreamStateCreated && + mConfig->getMediaDirection() != RtpConfig::MEDIA_DIRECTION_NO_FLOW) { IMLOGI0("[update] resume RTCP"); return start(); @@ -140,6 +147,24 @@ ImsMediaResult VideoStreamGraphRtcp::update(RtpConfig* config) return ret; } +ImsMediaResult VideoStreamGraphRtcp::start() +{ + IMLOGI1("[start] state[%d]", mGraphState); + + if (mConfig == nullptr) + { + return RESULT_INVALID_PARAM; + } + + if (mConfig->getMediaDirection() != RtpConfig::MEDIA_DIRECTION_NO_FLOW) + { + return BaseStreamGraph::start(); + } + + // not started + return RESULT_SUCCESS; +} + bool VideoStreamGraphRtcp::setMediaQualityThreshold(MediaQualityThreshold* threshold) { if (threshold != nullptr) diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpRx.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpRx.cpp index c93bf83a..30912f9e 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpRx.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpRx.cpp @@ -90,7 +90,7 @@ ImsMediaResult VideoStreamGraphRtpRx::update(RtpConfig* config) if (*reinterpret_cast<VideoConfig*>(mConfig) == *pConfig) { - IMLOGD0("[update] no update"); + IMLOGI0("[update] no update"); return RESULT_SUCCESS; } diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpTx.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpTx.cpp index ea3d4654..71a6f050 100644 --- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpTx.cpp +++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpTx.cpp @@ -106,7 +106,7 @@ ImsMediaResult VideoStreamGraphRtpTx::update(RtpConfig* config) if (*reinterpret_cast<VideoConfig*>(mConfig) == *pConfig) { - IMLOGD0("[update] no update"); + IMLOGI0("[update] no update"); return RESULT_SUCCESS; } |