Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b9252ba authored by Amy Zhang's avatar Amy Zhang Committed by Android (Google) Code Review
Browse files

Merge "Fix Tuner 1.0 default implementation Demux and Frontend mapping"

parents 1868aa0c 45c1263a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -163,6 +163,7 @@ Return<Result> Demux::close() {
    mRecordFilterIds.clear();
    mFilters.clear();
    mLastUsedFilterId = -1;
    mTunerService->removeDemux(mDemuxId);

    return Result::SUCCESS;
}
@@ -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(
+1 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ Return<Result> Frontend::close() {
    // Reset callback
    mCallback = nullptr;
    mIsLocked = false;
    mTunerService->removeFrontend(mId);

    return Result::SUCCESS;
}
+15 −2
Original line number Diff line number Diff line
@@ -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);
@@ -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;
@@ -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;
+6 −4
Original line number Diff line number Diff line
@@ -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.