summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShobhit Adlakha <ShobhitAd@users.noreply.github.com>2019-08-28 15:44:40 -0400
committerGitHub <noreply@github.com>2019-08-28 15:44:40 -0400
commit75768a68f8bf22ddfc6a06fac2d799a74da0ce83 (patch)
treeafa825caf38db171d9d4fe5001fa2e60b3f95ce7
parentc42cbc9cf60754baac573193f7f8ca8222157c2e (diff)
parent92e68450a16b70f2c4b11edb3df6f8cd449f6523 (diff)
downloadsdl_core-75768a68f8bf22ddfc6a06fac2d799a74da0ce83.tar.gz
Merge pull request #2956 from smartdevicelink/fix/pipe_audiostream_cutoff
Pipe audio streaming cutoff issue
-rw-r--r--src/components/media_manager/include/media_manager/streamer_adapter.h1
-rw-r--r--src/components/media_manager/src/media_manager_impl.cc28
-rw-r--r--src/components/media_manager/src/streamer_adapter.cc4
-rw-r--r--src/components/media_manager/test/media_manager_impl_test.cc2
4 files changed, 35 insertions, 0 deletions
diff --git a/src/components/media_manager/include/media_manager/streamer_adapter.h b/src/components/media_manager/include/media_manager/streamer_adapter.h
index 16696e81d1..a35e680b6a 100644
--- a/src/components/media_manager/include/media_manager/streamer_adapter.h
+++ b/src/components/media_manager/include/media_manager/streamer_adapter.h
@@ -60,6 +60,7 @@ class StreamerAdapter : public MediaAdapterImpl {
virtual void SendData(int32_t application_key,
const ::protocol_handler::RawMessagePtr msg);
virtual bool is_app_performing_activity(int32_t application_key) const;
+ virtual size_t GetMsgQueueSize();
protected:
// TODO(AN): APPLINK-15203 Use MessageLoopThread
diff --git a/src/components/media_manager/src/media_manager_impl.cc b/src/components/media_manager/src/media_manager_impl.cc
index 90b891133d..bc93f2f764 100644
--- a/src/components/media_manager/src/media_manager_impl.cc
+++ b/src/components/media_manager/src/media_manager_impl.cc
@@ -311,6 +311,34 @@ void MediaManagerImpl::FramesProcessed(int32_t application_key,
if (protocol_handler_) {
protocol_handler_->SendFramesNumber(application_key, frame_number);
}
+
+ application_manager::ApplicationSharedPtr app =
+ application_manager_.application(application_key);
+
+ if (app) {
+ auto audio_stream = std::dynamic_pointer_cast<StreamerAdapter>(
+ streamer_[protocol_handler::ServiceType::kAudio]);
+ auto video_stream = std::dynamic_pointer_cast<StreamerAdapter>(
+ streamer_[protocol_handler::ServiceType::kMobileNav]);
+
+ if (audio_stream.use_count() != 0) {
+ size_t audio_queue_size = audio_stream->GetMsgQueueSize();
+ LOG4CXX_DEBUG(logger_,
+ "# Messages in audio queue = " << audio_queue_size);
+ if (audio_queue_size > 0) {
+ app->WakeUpStreaming(protocol_handler::ServiceType::kAudio);
+ }
+ }
+
+ if (video_stream.use_count() != 0) {
+ size_t video_queue_size = video_stream->GetMsgQueueSize();
+ LOG4CXX_DEBUG(logger_,
+ "# Messages in video queue = " << video_queue_size);
+ if (video_queue_size > 0) {
+ app->WakeUpStreaming(protocol_handler::ServiceType::kMobileNav);
+ }
+ }
+ }
}
const MediaManagerSettings& MediaManagerImpl::settings() const {
diff --git a/src/components/media_manager/src/streamer_adapter.cc b/src/components/media_manager/src/streamer_adapter.cc
index 37cb1426dc..3ef12e3ed5 100644
--- a/src/components/media_manager/src/streamer_adapter.cc
+++ b/src/components/media_manager/src/streamer_adapter.cc
@@ -74,6 +74,10 @@ void StreamerAdapter::StartActivity(int32_t application_key) {
current_application_ = application_key;
}
+size_t StreamerAdapter::GetMsgQueueSize() {
+ return messages_.size();
+}
+
void StreamerAdapter::StopActivity(int32_t application_key) {
LOG4CXX_AUTO_TRACE(logger);
if (!is_app_performing_activity(application_key)) {
diff --git a/src/components/media_manager/test/media_manager_impl_test.cc b/src/components/media_manager/test/media_manager_impl_test.cc
index 9d721fd7cf..cd299d736c 100644
--- a/src/components/media_manager/test/media_manager_impl_test.cc
+++ b/src/components/media_manager/test/media_manager_impl_test.cc
@@ -403,6 +403,8 @@ TEST_F(MediaManagerImplTest,
const int32_t frame_number = 10;
EXPECT_CALL(mock_protocol_handler,
SendFramesNumber(kApplicationKey, frame_number));
+ EXPECT_CALL(app_mngr_, application(kConnectionKey))
+ .WillOnce(Return(mock_app_));
media_manager_impl_->FramesProcessed(kApplicationKey, frame_number);
}