From e0422236e2cd2c39961fa3df4b9aaf52b53ca2b5 Mon Sep 17 00:00:00 2001 From: Amy Zhang Date: Fri, 12 Jun 2020 12:53:12 -0700 Subject: [PATCH] Enable frontend input loop when FrontendTune happens before Demux is configured. Test: atest VtsHalTvTunerV1_0TargetTest Bug: 153366959 Change-Id: I6fa98e367a7530e308ea2a74e7efeb6ed4d3a56b --- tv/tuner/1.0/default/Frontend.cpp | 6 +++++- tv/tuner/1.0/default/Frontend.h | 2 ++ tv/tuner/1.0/default/Tuner.cpp | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/tv/tuner/1.0/default/Frontend.cpp b/tv/tuner/1.0/default/Frontend.cpp index 61bbbf8193..0c696a5319 100644 --- a/tv/tuner/1.0/default/Frontend.cpp +++ b/tv/tuner/1.0/default/Frontend.cpp @@ -66,7 +66,7 @@ Return Frontend::tune(const FrontendSettings& /* settings */) { mTunerService->frontendStartTune(mId); mCallback->onEvent(FrontendEventType::LOCKED); - mIsLocked = false; + mIsLocked = true; return Result::SUCCESS; } @@ -276,6 +276,10 @@ bool Frontend::supportsSatellite() { return mType == FrontendType::DVBS || mType == FrontendType::ISDBS || mType == FrontendType::ISDBS3; } + +bool Frontend::isLocked() { + return mIsLocked; +} } // namespace implementation } // namespace V1_0 } // namespace tuner diff --git a/tv/tuner/1.0/default/Frontend.h b/tv/tuner/1.0/default/Frontend.h index c0d1613cfa..200b8c1ba9 100644 --- a/tv/tuner/1.0/default/Frontend.h +++ b/tv/tuner/1.0/default/Frontend.h @@ -68,6 +68,8 @@ class Frontend : public IFrontend { string getSourceFile(); + bool isLocked(); + private: virtual ~Frontend(); bool supportsSatellite(); diff --git a/tv/tuner/1.0/default/Tuner.cpp b/tv/tuner/1.0/default/Tuner.cpp index ae8070c5f7..48ce384e7b 100644 --- a/tv/tuner/1.0/default/Tuner.cpp +++ b/tv/tuner/1.0/default/Tuner.cpp @@ -231,6 +231,9 @@ Return Tuner::openLnbByName(const hidl_string& /*lnbName*/, openLnbByName_ void Tuner::setFrontendAsDemuxSource(uint32_t frontendId, uint32_t demuxId) { mFrontendToDemux[frontendId] = demuxId; + if (mFrontends[frontendId] != nullptr && mFrontends[frontendId]->isLocked()) { + mDemuxes[demuxId]->startFrontendInputLoop(); + } } void Tuner::frontendStopTune(uint32_t frontendId) {