summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/StreamScheduler.cpp70
-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/StreamScheduler.h1
-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
-rw-r--r--test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java20
-rw-r--r--tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcpTest.cpp8
-rw-r--r--tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcpTest.cpp10
17 files changed, 131 insertions, 67 deletions
diff --git a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/StreamScheduler.cpp b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/StreamScheduler.cpp
index e3a59796..9184212c 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/StreamScheduler.cpp
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/StreamScheduler.cpp
@@ -19,11 +19,12 @@
#include <stdint.h>
#include <chrono>
#include <thread>
+#include <algorithm>
using namespace std::chrono;
-#define RUN_WAIT_TIMEOUT 6
-#define STOP_WAIT_TIMEOUT 1000
+#define RUN_WAIT_TIMEOUT_MS 1
+#define STOP_WAIT_TIMEOUT_MS 1000
StreamScheduler::StreamScheduler() {}
@@ -85,7 +86,7 @@ void StreamScheduler::Stop()
{
StopThread();
Awake();
- mConditionExit.wait_timeout(STOP_WAIT_TIMEOUT);
+ mConditionExit.wait_timeout(STOP_WAIT_TIMEOUT_MS);
}
IMLOGD1("[Stop] [%p] exit", this);
@@ -96,63 +97,48 @@ void StreamScheduler::Awake()
mConditionMain.signal();
}
-BaseNode* StreamScheduler::DetermineProcessingNode()
+void StreamScheduler::RunRegisteredNode()
{
- if (IsThreadStopped())
- {
- return nullptr;
- }
-
- BaseNode* pRetNode = nullptr;
- uint32_t nMaxDataInNode = 0;
+ // the list to contain non-source type node
+ std::list<BaseNode*> listNodesToRun;
for (auto& node : mlistRegisteredNode)
{
- if (node != nullptr && !node->IsRunTime() && !node->IsSourceNode())
+ if (node != nullptr && node->GetState() == kNodeStateRunning && !node->IsRunTime())
{
- uint32_t nDataInNode = node->GetDataCount();
-
- if (nDataInNode > 0 && nDataInNode >= nMaxDataInNode)
+ if (node->IsSourceNode()) // process the source node
{
- pRetNode = node;
- nMaxDataInNode = nDataInNode;
+ node->ProcessData();
+ }
+ else if (node->GetDataCount() > 0)
+ {
+ listNodesToRun.push_back(node); // store node to run
}
}
}
- return pRetNode;
-}
-
-void StreamScheduler::RunRegisteredNode()
-{
- // run source nodes
- for (auto& node : mlistRegisteredNode)
- {
- if (node != nullptr && node->GetState() == kNodeStateRunning && !node->IsRunTime() &&
- node->IsSourceNode())
- {
- node->ProcessData();
- }
- }
-
- for (;;)
+ while (!listNodesToRun.empty())
{
- BaseNode* pNode = DetermineProcessingNode();
-
- if (pNode == nullptr)
+ std::list<BaseNode*>::iterator maxNode =
+ std::max_element(listNodesToRun.begin(), listNodesToRun.end(),
+ [=](BaseNode* a, BaseNode* b)
+ {
+ return a->GetDataCount() < b->GetDataCount();
+ });
+
+ if (maxNode == listNodesToRun.end())
{
break;
}
- if (pNode->GetState() == kNodeStateRunning)
- {
- pNode->ProcessData();
- }
+ (*maxNode)->ProcessData(); // process the non runtime node
if (IsThreadStopped())
{
break;
}
+
+ listNodesToRun.remove(*maxNode);
};
}
@@ -188,10 +174,10 @@ void* StreamScheduler::run()
break;
}
- mConditionMain.wait_timeout(RUN_WAIT_TIMEOUT / 2);
+ mConditionMain.wait_timeout(RUN_WAIT_TIMEOUT_MS);
}
mConditionExit.signal();
IMLOGD1("[run] [%p] exit", this);
return nullptr;
-}
+} \ No newline at end of file
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/StreamScheduler.h b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/StreamScheduler.h
index b083096a..f9612c5d 100644
--- a/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/StreamScheduler.h
+++ b/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/include/StreamScheduler.h
@@ -37,7 +37,6 @@ public:
virtual void* run();
private:
- BaseNode* DetermineProcessingNode();
void RunRegisteredNode();
std::list<BaseNode*> mlistRegisteredNode;
ImsMediaCondition mConditionMain;
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;
}
diff --git a/test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java b/test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java
index f68076d5..0a0a6257 100644
--- a/test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java
+++ b/test/app/ImsMediaTestingApp/app/src/main/java/com/example/imsmediatestingapp/MainActivity.java
@@ -1765,27 +1765,37 @@ public class MainActivity extends AppCompatActivity {
PopupMenu mediaDirectionMenu = new PopupMenu(this, findViewById(R.id.mediaDirectionButton));
mediaDirectionMenu.getMenuInflater()
.inflate(R.menu.media_direction_menu, mediaDirectionMenu.getMenu());
+ int[] direction = { 0 };
mediaDirectionMenu.setOnMenuItemClickListener(item -> {
switch (item.getItemId()) {
case R.id.noFlowDirectionMenuItem:
- mAudioConfig.setMediaDirection(AudioConfig.MEDIA_DIRECTION_NO_FLOW);
+ direction[0] = RtpConfig.MEDIA_DIRECTION_NO_FLOW;
break;
case R.id.sendReceiveDirectionMenuItem:
- mAudioConfig.setMediaDirection(AudioConfig.MEDIA_DIRECTION_SEND_RECEIVE);
+ direction[0] = RtpConfig.MEDIA_DIRECTION_SEND_RECEIVE;
break;
case R.id.receiveOnlyDirectionMenuItem:
- mAudioConfig.setMediaDirection(AudioConfig.MEDIA_DIRECTION_RECEIVE_ONLY);
+ direction[0] = RtpConfig.MEDIA_DIRECTION_RECEIVE_ONLY;
break;
case R.id.sendOnlyDirectionMenuItem:
- mAudioConfig.setMediaDirection(AudioConfig.MEDIA_DIRECTION_SEND_ONLY);
+ direction[0] = RtpConfig.MEDIA_DIRECTION_SEND_ONLY;
break;
case R.id.inactiveDirectionMenuItem:
- mAudioConfig.setMediaDirection(AudioConfig.MEDIA_DIRECTION_INACTIVE);
+ direction[0] = RtpConfig.MEDIA_DIRECTION_INACTIVE;
break;
default:
return false;
}
+ mAudioConfig.setMediaDirection(direction[0]);
mAudioSession.modifySession(mAudioConfig);
+ if (mIsVideoSessionOpened) {
+ mVideoConfig.setMediaDirection(direction[0]);
+ mVideoSession.modifySession(mVideoConfig);
+ }
+ if (mIsTextSessionOpened) {
+ mTextConfig.setMediaDirection(direction[0]);
+ mTextSession.modifySession(mTextConfig);
+ }
return true;
});
mediaDirectionMenu.show();
diff --git a/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcpTest.cpp b/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcpTest.cpp
index 4436e429..a292a5f5 100644
--- a/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcpTest.cpp
+++ b/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/text/TextStreamGraphRtcpTest.cpp
@@ -23,7 +23,7 @@
using namespace android::telephony::imsmedia;
// RtpConfig
-const int32_t kMediaDirection = RtpConfig::MEDIA_DIRECTION_NO_FLOW;
+const int32_t kMediaDirection = RtpConfig::MEDIA_DIRECTION_INACTIVE;
const android::String8 kRemoteAddress("127.0.0.1");
const int32_t kRemotePort = 10000;
const int8_t kDscp = 0;
@@ -130,13 +130,11 @@ TEST_F(TextStreamGraphRtcpTest, TestRtcpStreamAndUpdate)
EXPECT_EQ(graph->update(&config), RESULT_SUCCESS);
EXPECT_EQ(graph->getState(), kStreamStateRunning);
- rtcp.setIntervalSec(0);
- config.setRtcpConfig(rtcp);
+ config.setMediaDirection(RtpConfig::MEDIA_DIRECTION_NO_FLOW);
EXPECT_EQ(graph->update(&config), RESULT_SUCCESS);
EXPECT_EQ(graph->getState(), kStreamStateCreated);
- rtcp.setIntervalSec(5);
- config.setRtcpConfig(rtcp);
+ config.setMediaDirection(RtpConfig::MEDIA_DIRECTION_INACTIVE);
EXPECT_EQ(graph->update(&config), RESULT_SUCCESS);
EXPECT_EQ(graph->getState(), kStreamStateRunning);
diff --git a/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcpTest.cpp b/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcpTest.cpp
index 327e42fc..0806fe7d 100644
--- a/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcpTest.cpp
+++ b/tests/native/service/src/com/android/telephony/imsmedia/lib/libimsmedia/core/video/VideoStreamGraphRtcpTest.cpp
@@ -24,7 +24,7 @@
using namespace android::telephony::imsmedia;
// RtpConfig
-const int32_t kMediaDirection = RtpConfig::MEDIA_DIRECTION_SEND_RECEIVE;
+const int32_t kMediaDirection = RtpConfig::MEDIA_DIRECTION_INACTIVE;
const android::String8 kRemoteAddress("127.0.0.1");
const int32_t kRemotePort = 10000;
const int32_t kMtu = 1300;
@@ -163,6 +163,14 @@ TEST_F(VideoStreamGraphRtcpTest, TestRtcpStreamAndUpdate)
EXPECT_EQ(graph->update(&config), RESULT_SUCCESS);
EXPECT_EQ(graph->getState(), kStreamStateRunning);
+ config.setMediaDirection(RtpConfig::MEDIA_DIRECTION_NO_FLOW);
+ EXPECT_EQ(graph->update(&config), RESULT_SUCCESS);
+ EXPECT_EQ(graph->getState(), kStreamStateCreated);
+
+ config.setMediaDirection(RtpConfig::MEDIA_DIRECTION_INACTIVE);
+ EXPECT_EQ(graph->update(&config), RESULT_SUCCESS);
+ EXPECT_EQ(graph->getState(), kStreamStateRunning);
+
EXPECT_EQ(graph->stop(), RESULT_SUCCESS);
EXPECT_EQ(graph->getState(), kStreamStateCreated);
}