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

Commit ac8f96b9 authored by Hongguang's avatar Hongguang Committed by Hongguang Chen
Browse files

Use reference or pointer in tuner vts.

Bug: 188709323
Bug: 191825295
Test: VtsHalTvTunerV1_0TargetTest and VtsHalTvTunerV1_1TargetTest.
Change-Id: I93f2c9639033f8cb0f48de035e1c6ba488ea83e0
parent d9245431
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@

#include "FilterTests.h"

void FilterCallback::startFilterEventThread(DemuxFilterEvent event) {
void FilterCallback::startFilterEventThread(DemuxFilterEvent& event) {
    struct FilterThreadArgs* threadArgs =
            (struct FilterThreadArgs*)malloc(sizeof(struct FilterThreadArgs));
    threadArgs->user = this;
@@ -69,9 +69,8 @@ void FilterCallback::filterThreadLoop(DemuxFilterEvent& /* event */) {
    // end thread
}

bool FilterCallback::readFilterEventData() {
bool FilterCallback::readFilterEventData(const DemuxFilterEvent& filterEvent) {
    bool result = false;
    DemuxFilterEvent filterEvent = mFilterEvent;
    ALOGW("[vts] reading from filter FMQ or buffer %d", mFilterId);
    // todo separate filter handlers
    for (auto event : filterEvent.events) {
@@ -107,7 +106,7 @@ bool FilterCallback::readFilterEventData() {
    return result;
}

bool FilterCallback::dumpAvData(DemuxFilterMediaEvent event) {
bool FilterCallback::dumpAvData(DemuxFilterMediaEvent& event) {
    uint32_t length = event.dataLength;
    uint64_t dataId = event.avDataId;
    // read data from buffer pointed by a handle
@@ -127,7 +126,7 @@ bool FilterCallback::dumpAvData(DemuxFilterMediaEvent event) {
    return true;
}

bool FilterCallback::readRecordData(DemuxFilterTsRecordEvent event) {
bool FilterCallback::readRecordData(DemuxFilterTsRecordEvent& event) {
    ALOGD("[vts] got DemuxFilterTsRecordEvent with pid=%d.", event.pid.tPid());
    return true;
}
+5 −7
Original line number Diff line number Diff line
@@ -77,8 +77,7 @@ class FilterCallback : public IFilterCallback {
        android::Mutex::Autolock autoLock(mMsgLock);
        // Temprarily we treat the first coming back filter data on the matching pid a success
        // once all of the MQ are cleared, means we got all the expected output
        mFilterEvent = filterEvent;
        readFilterEventData();
        readFilterEventData(filterEvent);
        mPidFilterOutputCount++;
        // mFilterIdToMQ.erase(filterEvent.filterId);

@@ -96,15 +95,15 @@ class FilterCallback : public IFilterCallback {

    void testFilterDataOutput();

    void startFilterEventThread(DemuxFilterEvent event);
    void startFilterEventThread(DemuxFilterEvent& event);
    static void* __threadLoopFilter(void* threadArgs);
    void filterThreadLoop(DemuxFilterEvent& event);

    void updateFilterMQ(MQDesc& filterMQDescriptor);
    void updateGoldenOutputMap(string goldenOutputFile);
    bool readFilterEventData();
    bool dumpAvData(DemuxFilterMediaEvent event);
    bool readRecordData(DemuxFilterTsRecordEvent event);
    bool readFilterEventData(const DemuxFilterEvent& filterEvent);
    bool dumpAvData(DemuxFilterMediaEvent& event);
    bool readRecordData(DemuxFilterTsRecordEvent& event);

  private:
    struct FilterThreadArgs {
@@ -120,7 +119,6 @@ class FilterCallback : public IFilterCallback {
    sp<IFilter> mFilter;
    std::unique_ptr<FilterMQ> mFilterMQ;
    EventFlag* mFilterMQEventFlag;
    DemuxFilterEvent mFilterEvent;

    android::Mutex mMsgLock;
    android::Mutex mFilterOutputLock;
+8 −7
Original line number Diff line number Diff line
@@ -370,10 +370,11 @@ AssertionResult FrontendTests::tuneFrontend(FrontendConfig config, bool testWith
    mIsSoftwareFe = config.isSoftwareFe;
    bool result = true;
    if (mIsSoftwareFe && testWithDemux) {
        result &= mDvrTests.openDvrInDemux(mDvrConfig.type, mDvrConfig.bufferSize) == success();
        result &= mDvrTests.configDvrPlayback(mDvrConfig.settings) == success();
        result &= mDvrTests.getDvrPlaybackMQDescriptor() == success();
        mDvrTests.startPlaybackInputThread(mDvrConfig.playbackInputFile,
        result &=
                getDvrTests()->openDvrInDemux(mDvrConfig.type, mDvrConfig.bufferSize) == success();
        result &= getDvrTests()->configDvrPlayback(mDvrConfig.settings) == success();
        result &= getDvrTests()->getDvrPlaybackMQDescriptor() == success();
        getDvrTests()->startPlaybackInputThread(mDvrConfig.playbackInputFile,
                                                mDvrConfig.settings.playback());
        if (!result) {
            ALOGW("[vts] Software frontend dvr configure failed.");
@@ -397,8 +398,8 @@ AssertionResult FrontendTests::stopTuneFrontend(bool testWithDemux) {
    Result status;
    status = mFrontend->stopTune();
    if (mIsSoftwareFe && testWithDemux) {
        mDvrTests.stopPlaybackThread();
        mDvrTests.closeDvrPlayback();
        getDvrTests()->stopPlaybackThread();
        getDvrTests()->closeDvrPlayback();
    }
    return AssertionResult(status == Result::SUCCESS);
}
+8 −3
Original line number Diff line number Diff line
@@ -103,7 +103,7 @@ class FrontendTests {

    void setService(sp<ITuner> tuner) {
        mService = tuner;
        mDvrTests.setService(tuner);
        getDvrTests()->setService(tuner);
        getDefaultSoftwareFrontendPlaybackConfig(mDvrConfig);
    }

@@ -124,8 +124,8 @@ class FrontendTests {
    void tuneTest(FrontendConfig frontendConf);
    void scanTest(FrontendConfig frontend, FrontendScanType type);

    void setDvrTests(DvrTests dvrTests) { mDvrTests = dvrTests; }
    void setDemux(sp<IDemux> demux) { mDvrTests.setDemux(demux); }
    void setDvrTests(DvrTests* dvrTests) { mExternalDvrTests = dvrTests; }
    void setDemux(sp<IDemux> demux) { getDvrTests()->setDemux(demux); }
    void setSoftwareFrontendDvrConfig(DvrConfig conf) { mDvrConfig = conf; }

  protected:
@@ -147,11 +147,16 @@ class FrontendTests {
        dvrConfig.settings.playback(playbackSettings);
    }

    DvrTests* getDvrTests() {
        return (mExternalDvrTests != nullptr ? mExternalDvrTests : &mDvrTests);
    }

    sp<IFrontend> mFrontend;
    FrontendInfo mFrontendInfo;
    sp<FrontendCallback> mFrontendCallback;
    hidl_vec<FrontendId> mFeIds;

    DvrTests* mExternalDvrTests = nullptr;
    DvrTests mDvrTests;
    bool mIsSoftwareFe = false;
    DvrConfig mDvrConfig;
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ void TunerRecordHidlTest::recordSingleFilterTest(FilterConfig filterConf,
            mFrontendTests.setSoftwareFrontendDvrConfig(dvrMap[record.dvrSoftwareFeId]);
        }
        ASSERT_TRUE(mDemuxTests.setDemuxFrontendDataSource(feId));
        mFrontendTests.setDvrTests(mDvrTests);
        mFrontendTests.setDvrTests(&mDvrTests);
    } else {
        dvrSourceConfig = dvrMap[record.dvrSourceId];
        ASSERT_TRUE(mDvrTests.openDvrInDemux(dvrSourceConfig.type, dvrSourceConfig.bufferSize));
Loading