Loading tv/tuner/1.0/default/Demux.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -163,6 +163,7 @@ Return<Result> Demux::close() { mRecordFilterIds.clear(); mFilters.clear(); mLastUsedFilterId = -1; mTunerService->removeDemux(mDemuxId); return Result::SUCCESS; } Loading Loading @@ -318,6 +319,12 @@ void Demux::frontendInputThreadLoop() { std::lock_guard<std::mutex> lock(mFrontendInputThreadLock); mFrontendInputThreadRunning = true; if (!mDvrPlayback) { ALOGW("[Demux] No software Frontend input configured. Ending Frontend thread loop."); mFrontendInputThreadRunning = false; return; } while (mFrontendInputThreadRunning) { uint32_t efState = 0; status_t status = mDvrPlayback->getDvrEventFlag()->wait( Loading tv/tuner/1.0/default/Frontend.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ Return<Result> Frontend::close() { // Reset callback mCallback = nullptr; mIsLocked = false; mTunerService->removeFrontend(mId); return Result::SUCCESS; } Loading tv/tuner/1.0/default/Tuner.cpp +15 −2 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ Tuner::Tuner() { // Static Frontends array to maintain local frontends information // Array index matches their FrontendId in the default impl mFrontendSize = 8; mFrontends.resize(mFrontendSize); mFrontends[0] = new Frontend(FrontendType::DVBT, 0, this); mFrontends[1] = new Frontend(FrontendType::ATSC, 1, this); mFrontends[2] = new Frontend(FrontendType::DVBC, 2, this); Loading @@ -48,7 +47,6 @@ Tuner::Tuner() { mFrontends[7] = new Frontend(FrontendType::ATSC, 7, this); FrontendInfo::FrontendCapabilities caps; mFrontendCaps.resize(mFrontendSize); caps = FrontendInfo::FrontendCapabilities(); caps.dvbtCaps(FrontendDvbtCapabilities()); mFrontendCaps[0] = caps; Loading Loading @@ -236,6 +234,21 @@ void Tuner::setFrontendAsDemuxSource(uint32_t frontendId, uint32_t demuxId) { } } void Tuner::removeDemux(uint32_t demuxId) { map<uint32_t, uint32_t>::iterator it; for (it = mFrontendToDemux.begin(); it != mFrontendToDemux.end(); it++) { if (it->second == demuxId) { it = mFrontendToDemux.erase(it); break; } } mDemuxes.erase(demuxId); } void Tuner::removeFrontend(uint32_t frontendId) { mFrontendToDemux.erase(frontendId); } void Tuner::frontendStopTune(uint32_t frontendId) { map<uint32_t, uint32_t>::iterator it = mFrontendToDemux.find(frontendId); uint32_t demuxId; Loading tv/tuner/1.0/default/Tuner.h +6 −4 Original line number Diff line number Diff line Loading @@ -65,14 +65,16 @@ class Tuner : public ITuner { void frontendStartTune(uint32_t frontendId); void frontendStopTune(uint32_t frontendId); void removeDemux(uint32_t demuxId); void removeFrontend(uint32_t frontendId); private: virtual ~Tuner(); // Static mFrontends array to maintain local frontends information vector<sp<Frontend>> mFrontends; vector<FrontendInfo::FrontendCapabilities> mFrontendCaps; std::map<uint32_t, uint32_t> mFrontendToDemux; std::map<uint32_t, sp<Demux>> mDemuxes; map<uint32_t, sp<Frontend>> mFrontends; map<uint32_t, FrontendInfo::FrontendCapabilities> mFrontendCaps; map<uint32_t, uint32_t> mFrontendToDemux; map<uint32_t, sp<Demux>> mDemuxes; // To maintain how many Frontends we have int mFrontendSize; // The last used demux id. Initial value is -1. Loading Loading
tv/tuner/1.0/default/Demux.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -163,6 +163,7 @@ Return<Result> Demux::close() { mRecordFilterIds.clear(); mFilters.clear(); mLastUsedFilterId = -1; mTunerService->removeDemux(mDemuxId); return Result::SUCCESS; } Loading Loading @@ -318,6 +319,12 @@ void Demux::frontendInputThreadLoop() { std::lock_guard<std::mutex> lock(mFrontendInputThreadLock); mFrontendInputThreadRunning = true; if (!mDvrPlayback) { ALOGW("[Demux] No software Frontend input configured. Ending Frontend thread loop."); mFrontendInputThreadRunning = false; return; } while (mFrontendInputThreadRunning) { uint32_t efState = 0; status_t status = mDvrPlayback->getDvrEventFlag()->wait( Loading
tv/tuner/1.0/default/Frontend.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ Return<Result> Frontend::close() { // Reset callback mCallback = nullptr; mIsLocked = false; mTunerService->removeFrontend(mId); return Result::SUCCESS; } Loading
tv/tuner/1.0/default/Tuner.cpp +15 −2 Original line number Diff line number Diff line Loading @@ -37,7 +37,6 @@ Tuner::Tuner() { // Static Frontends array to maintain local frontends information // Array index matches their FrontendId in the default impl mFrontendSize = 8; mFrontends.resize(mFrontendSize); mFrontends[0] = new Frontend(FrontendType::DVBT, 0, this); mFrontends[1] = new Frontend(FrontendType::ATSC, 1, this); mFrontends[2] = new Frontend(FrontendType::DVBC, 2, this); Loading @@ -48,7 +47,6 @@ Tuner::Tuner() { mFrontends[7] = new Frontend(FrontendType::ATSC, 7, this); FrontendInfo::FrontendCapabilities caps; mFrontendCaps.resize(mFrontendSize); caps = FrontendInfo::FrontendCapabilities(); caps.dvbtCaps(FrontendDvbtCapabilities()); mFrontendCaps[0] = caps; Loading Loading @@ -236,6 +234,21 @@ void Tuner::setFrontendAsDemuxSource(uint32_t frontendId, uint32_t demuxId) { } } void Tuner::removeDemux(uint32_t demuxId) { map<uint32_t, uint32_t>::iterator it; for (it = mFrontendToDemux.begin(); it != mFrontendToDemux.end(); it++) { if (it->second == demuxId) { it = mFrontendToDemux.erase(it); break; } } mDemuxes.erase(demuxId); } void Tuner::removeFrontend(uint32_t frontendId) { mFrontendToDemux.erase(frontendId); } void Tuner::frontendStopTune(uint32_t frontendId) { map<uint32_t, uint32_t>::iterator it = mFrontendToDemux.find(frontendId); uint32_t demuxId; Loading
tv/tuner/1.0/default/Tuner.h +6 −4 Original line number Diff line number Diff line Loading @@ -65,14 +65,16 @@ class Tuner : public ITuner { void frontendStartTune(uint32_t frontendId); void frontendStopTune(uint32_t frontendId); void removeDemux(uint32_t demuxId); void removeFrontend(uint32_t frontendId); private: virtual ~Tuner(); // Static mFrontends array to maintain local frontends information vector<sp<Frontend>> mFrontends; vector<FrontendInfo::FrontendCapabilities> mFrontendCaps; std::map<uint32_t, uint32_t> mFrontendToDemux; std::map<uint32_t, sp<Demux>> mDemuxes; map<uint32_t, sp<Frontend>> mFrontends; map<uint32_t, FrontendInfo::FrontendCapabilities> mFrontendCaps; map<uint32_t, uint32_t> mFrontendToDemux; map<uint32_t, sp<Demux>> mDemuxes; // To maintain how many Frontends we have int mFrontendSize; // The last used demux id. Initial value is -1. Loading