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

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

Merge "Connect TunerTimeFilter/TunerDemux with TimeFilterClient/DemuxClient" into sc-dev

parents baab7768 95279466
Loading
Loading
Loading
Loading
+35 −8
Original line number Diff line number Diff line
@@ -88,12 +88,19 @@ sp<FilterClient> DemuxClient::openFilter(DemuxFilterType type, int bufferSize,
}

sp<TimeFilterClient> DemuxClient::openTimeFilter() {
    // TODO: pending aidl interface
    if (mTunerDemux != NULL) {
        shared_ptr<ITunerTimeFilter> tunerTimeFilter;
        Status s = mTunerDemux->openTimeFilter(&tunerTimeFilter);
        if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
            return NULL;
        }
        return new TimeFilterClient(tunerTimeFilter);
    }

    if (mDemux != NULL) {
        sp<ITimeFilter> hidlTimeFilter = openHidlTimeFilter();
        if (hidlTimeFilter != NULL) {
            sp<TimeFilterClient> timeFilterClient = new TimeFilterClient();
            sp<TimeFilterClient> timeFilterClient = new TimeFilterClient(NULL);
            timeFilterClient->setHidlTimeFilter(hidlTimeFilter);
            return timeFilterClient;
        }
@@ -103,7 +110,14 @@ sp<TimeFilterClient> DemuxClient::openTimeFilter() {
}

int DemuxClient::getAvSyncHwId(sp<FilterClient> filterClient) {
    // pending aidl interface
    if (mTunerDemux != NULL) {
        int hwId;
        Status s = mTunerDemux->getAvSyncHwId(filterClient->getAidlFilter(), &hwId);
        if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
            return INVALID_AV_SYNC_HW_ID;
        }
        return hwId;
    }

    if (mDemux != NULL) {
        uint32_t avSyncHwId;
@@ -119,11 +133,18 @@ int DemuxClient::getAvSyncHwId(sp<FilterClient> filterClient) {
        }
    }

    return -1;
    return INVALID_AV_SYNC_HW_ID;
}

long DemuxClient::getAvSyncTime(int avSyncHwId) {
    // pending aidl interface
    if (mTunerDemux != NULL) {
        int64_t time;
        Status s = mTunerDemux->getAvSyncTime(avSyncHwId, &time);
        if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
            return INVALID_AV_SYNC_TIME;
        }
        return time;
    }

    if (mDemux != NULL) {
        uint64_t time;
@@ -138,7 +159,7 @@ long DemuxClient::getAvSyncTime(int avSyncHwId) {
        }
    }

    return -1;
    return INVALID_AV_SYNC_TIME;
}

sp<DvrClient> DemuxClient::openDvr(DvrType dvbType, int bufferSize, sp<DvrClientCallback> cb) {
@@ -167,7 +188,10 @@ sp<DvrClient> DemuxClient::openDvr(DvrType dvbType, int bufferSize, sp<DvrClient
}

Result DemuxClient::connectCiCam(int ciCamId) {
    // pending aidl interface
    if (mTunerDemux != NULL) {
        Status s = mTunerDemux->connectCiCam(ciCamId);
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mDemux != NULL) {
        return mDemux->connectCiCam(static_cast<uint32_t>(ciCamId));
@@ -177,7 +201,10 @@ Result DemuxClient::connectCiCam(int ciCamId) {
}

Result DemuxClient::disconnectCiCam() {
    // pending aidl interface
    if (mTunerDemux != NULL) {
        Status s = mTunerDemux->disconnectCiCam();
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mDemux != NULL) {
        return mDemux->disconnectCiCam();
+5 −0
Original line number Diff line number Diff line
@@ -31,7 +31,9 @@

using Status = ::ndk::ScopedAStatus;
using ::aidl::android::media::tv::tuner::ITunerDemux;
using ::aidl::android::media::tv::tuner::ITunerTimeFilter;

using ::android::hardware::tv::tuner::V1_0::IDemux;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterType;
using ::android::hardware::tv::tuner::V1_0::DvrType;
using ::android::hardware::tv::tuner::V1_0::IDemux;
@@ -39,6 +41,9 @@ using ::android::hardware::tv::tuner::V1_0::ITimeFilter;

using namespace std;

const int64_t INVALID_AV_SYNC_TIME = -1;
const int INVALID_AV_SYNC_HW_ID = -1;

namespace android {

struct DemuxClient : public RefBase {
+35 −12
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#include <android-base/logging.h>
#include <utils/Log.h>

#include "ClientHelper.h"
#include "TimeFilterClient.h"

using ::android::hardware::tv::tuner::V1_0::Result;
@@ -28,13 +29,12 @@ namespace android {

/////////////// TimeFilterClient ///////////////////////

// TODO: pending aidl interface
TimeFilterClient::TimeFilterClient() {
    //mTunerTimeFilter = tunerTimeFilter;
TimeFilterClient::TimeFilterClient(shared_ptr<ITunerTimeFilter> tunerTimeFilter) {
    mTunerTimeFilter = tunerTimeFilter;
}

TimeFilterClient::~TimeFilterClient() {
    //mTunerTimeFilter = NULL;
    mTunerTimeFilter = NULL;
    mTimeFilter = NULL;
}

@@ -44,7 +44,10 @@ void TimeFilterClient::setHidlTimeFilter(sp<ITimeFilter> timeFilter) {
}

Result TimeFilterClient::setTimeStamp(long timeStamp) {
    // TODO: pending aidl interface
    if (mTunerTimeFilter != NULL) {
        Status s = mTunerTimeFilter->setTimeStamp(timeStamp);
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mTimeFilter != NULL) {
        return mTimeFilter->setTimeStamp(timeStamp);
@@ -54,7 +57,10 @@ Result TimeFilterClient::setTimeStamp(long timeStamp) {
}

Result TimeFilterClient::clearTimeStamp() {
    // TODO: pending aidl interface
    if (mTunerTimeFilter != NULL) {
        Status s = mTunerTimeFilter->clearTimeStamp();
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mTimeFilter != NULL) {
        return mTimeFilter->clearTimeStamp();
@@ -64,7 +70,14 @@ Result TimeFilterClient::clearTimeStamp() {
}

long TimeFilterClient::getTimeStamp() {
    // TODO: pending aidl interface
    if (mTunerTimeFilter != NULL) {
        int64_t timeStamp;
        Status s = mTunerTimeFilter->getTimeStamp(&timeStamp);
        if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
            return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
        }
        return timeStamp;
    }

    if (mTimeFilter != NULL) {
        Result res;
@@ -84,27 +97,37 @@ long TimeFilterClient::getTimeStamp() {
}

long TimeFilterClient::getSourceTime() {
    // TODO: pending aidl interface
    if (mTunerTimeFilter != NULL) {
        int64_t sourceTime;
        Status s = mTunerTimeFilter->getTimeStamp(&sourceTime);
        if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
            return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
        }
        return sourceTime;
    }

    if (mTimeFilter != NULL) {
        Result res;
        long timestamp;
        long sourceTime;
        mTimeFilter->getSourceTime(
                [&](Result r, uint64_t t) {
                    res = r;
                    timestamp = t;
                    sourceTime = t;
                });
        if (res != Result::SUCCESS) {
            return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
        }
        return timestamp;
        return sourceTime;
    }

    return (long)Constant64Bit::INVALID_PRESENTATION_TIME_STAMP;
}

Result TimeFilterClient::close() {
    // TODO: pending aidl interface
    if (mTunerTimeFilter != NULL) {
        Status s = mTunerTimeFilter->close();
        return ClientHelper::getServiceSpecificErrorCode(s);
    }

    if (mTimeFilter != NULL) {
        return mTimeFilter->close();
+5 −6
Original line number Diff line number Diff line
@@ -17,12 +17,13 @@
#ifndef _ANDROID_MEDIA_TV_TIME_FILTER_CLIENT_H_
#define _ANDROID_MEDIA_TV_TIME_FILTER_CLIENT_H_

//#include <aidl/android/media/tv/tuner/ITunerTimeFilter.h>
#include <aidl/android/media/tv/tuner/ITunerTimeFilter.h>
#include <android/hardware/tv/tuner/1.0/ITimeFilter.h>
#include <android/hardware/tv/tuner/1.1/types.h>

//using ::aidl::android::media::tv::tuner::ITunerTimeFilter;
using ::aidl::android::media::tv::tuner::ITunerTimeFilter;

using Status = ::ndk::ScopedAStatus;
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::hidl_vec;
@@ -36,8 +37,7 @@ namespace android {
struct TimeFilterClient : public RefBase {

public:
    // TODO: add TunerTimeFilter as parameter.
    TimeFilterClient();
    TimeFilterClient(shared_ptr<ITunerTimeFilter> tunerTimeFilter);
    ~TimeFilterClient();

    // TODO: remove after migration to Tuner Service is done.
@@ -73,8 +73,7 @@ private:
     * An AIDL Tuner TimeFilter Singleton assigned at the first time the Tuner Client
     * opens an TimeFilter. Default null when time filter is not opened.
     */
    // TODO: pending on aidl interface
    //shared_ptr<ITunerTimeFilter> mTunerTimeFilter;
    shared_ptr<ITunerTimeFilter> mTunerTimeFilter;

    /**
     * A TimeFilter HAL interface that is ready before migrating to the TunerTimeFilter.
+28 −1
Original line number Diff line number Diff line
@@ -200,7 +200,14 @@ sp<DemuxClient> TunerClient::openDemux(int demuxHandle) {
}

shared_ptr<DemuxCapabilities> TunerClient::getDemuxCaps() {
    // pending aidl interface
    if (mTunerService != NULL) {
        TunerDemuxCapabilities aidlCaps;
        Status s = mTunerService->getDemuxCaps(&aidlCaps);
        if (ClientHelper::getServiceSpecificErrorCode(s) != Result::SUCCESS) {
            return NULL;
        }
        return make_shared<DemuxCapabilities>(getHidlDemuxCaps(aidlCaps));
    }

    if (mTuner != NULL) {
        Result res;
@@ -459,6 +466,26 @@ sp<IDescrambler> TunerClient::openHidlDescrambler() {
    return descrambler;
}

DemuxCapabilities TunerClient::getHidlDemuxCaps(TunerDemuxCapabilities& aidlCaps) {
    DemuxCapabilities caps{
        .numDemux = (uint32_t)aidlCaps.numDemux,
        .numRecord = (uint32_t)aidlCaps.numRecord,
        .numPlayback = (uint32_t)aidlCaps.numPlayback,
        .numTsFilter = (uint32_t)aidlCaps.numTsFilter,
        .numSectionFilter = (uint32_t)aidlCaps.numSectionFilter,
        .numAudioFilter = (uint32_t)aidlCaps.numAudioFilter,
        .numVideoFilter = (uint32_t)aidlCaps.numVideoFilter,
        .numPesFilter = (uint32_t)aidlCaps.numPesFilter,
        .numPcrFilter = (uint32_t)aidlCaps.numPcrFilter,
        .numBytesInSectionFilter = (uint32_t)aidlCaps.numBytesInSectionFilter,
        .filterCaps = (uint32_t)aidlCaps.filterCaps,
        .bTimeFilter = aidlCaps.bTimeFilter,
    };
    caps.linkCaps.resize(aidlCaps.linkCaps.size());
    copy(aidlCaps.linkCaps.begin(), aidlCaps.linkCaps.end(), caps.linkCaps.begin());
    return caps;
}

FrontendInfo TunerClient::FrontendInfoAidlToHidl(TunerFrontendInfo aidlFrontendInfo) {
    FrontendInfo hidlFrontendInfo {
        .type = static_cast<FrontendType>(aidlFrontendInfo.type),
Loading