summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorbodamnam <bodamnam@google.com>2023-03-03 08:07:43 +0000
committerbodamnam <bodamnam@google.com>2023-03-09 01:28:55 +0000
commit65a20504555befb4086811fff964331c78e08ef7 (patch)
tree11a5f70a79296de7e818ccb17f6f9f4b628f27a2 /service
parent90cf20d761d2218cb0338b7966696209634b712d (diff)
downloadImsMedia-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')
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtcp.cpp20
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpRx.cpp2
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/audio/AudioStreamGraphRtpTx.cpp2
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/audio/AudioStreamGraphRtcp.h1
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/text/TextStreamGraphRtcp.h1
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/video/VideoStreamGraphRtcp.h1
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcp.cpp25
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpRx.cpp2
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtpTx.cpp2
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcp.cpp29
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpRx.cpp2
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtpTx.cpp2
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;
}