diff --git a/tv/tuner/1.0/vts/functional/Android.bp b/tv/tuner/1.0/vts/functional/Android.bp index 17659153cf..b752bc81c9 100644 --- a/tv/tuner/1.0/vts/functional/Android.bp +++ b/tv/tuner/1.0/vts/functional/Android.bp @@ -41,6 +41,10 @@ cc_test { shared_libs: [ "libbinder", ], + data: [ + ":tuner_frontend_input_ts", + ":tuner_frontend_input_es", + ], test_suites: [ "general-tests", "vts", diff --git a/tv/tuner/1.0/vts/functional/AndroidTest.xml b/tv/tuner/1.0/vts/functional/AndroidTest.xml new file mode 100644 index 0000000000..3a2db27440 --- /dev/null +++ b/tv/tuner/1.0/vts/functional/AndroidTest.xml @@ -0,0 +1,34 @@ + + + + diff --git a/tv/tuner/1.0/vts/functional/DvrTests.cpp b/tv/tuner/1.0/vts/functional/DvrTests.cpp index 0dfc032d19..ba211894f7 100644 --- a/tv/tuner/1.0/vts/functional/DvrTests.cpp +++ b/tv/tuner/1.0/vts/functional/DvrTests.cpp @@ -55,6 +55,7 @@ void DvrCallback::playbackThreadLoop() { uint8_t* buffer; ALOGW("[vts] playback thread loop start %s", mInputDataFile.c_str()); if (fd < 0) { + EXPECT_TRUE(fd >= 0) << "Failed to open: " + mInputDataFile; mPlaybackThreadRunning = false; ALOGW("[vts] Error %s", strerror(errno)); } @@ -178,7 +179,7 @@ void DvrCallback::recordThreadLoop(RecordSettings* /*recordSettings*/, bool* kee // Our current implementation filter the data and write it into the filter FMQ // immediately after the DATA_READY from the VTS/framework if (!readRecordFMQ()) { - ALOGD("[vts] record data failed to be filtered. Ending thread"); + ALOGW("[vts] record data failed to be filtered. Ending thread"); mRecordThreadRunning = false; break; } diff --git a/tv/tuner/1.0/vts/functional/FilterTests.cpp b/tv/tuner/1.0/vts/functional/FilterTests.cpp index 0ecdf73130..a354c785a5 100644 --- a/tv/tuner/1.0/vts/functional/FilterTests.cpp +++ b/tv/tuner/1.0/vts/functional/FilterTests.cpp @@ -70,6 +70,10 @@ void FilterCallback::filterThreadLoop(DemuxFilterEvent& /* event */) { } bool FilterCallback::readFilterEventData() { + if (mFilterMQ == NULL) { + ALOGW("[vts] FMQ is not configured and does not need to be tested."); + return true; + } bool result = false; DemuxFilterEvent filterEvent = mFilterEvent; ALOGW("[vts] reading from filter FMQ or buffer %d", mFilterId); @@ -218,7 +222,11 @@ AssertionResult FilterTests::configFilter(DemuxFilterSettings setting, uint32_t return AssertionResult(status == Result::SUCCESS); } -AssertionResult FilterTests::getFilterMQDescriptor(uint32_t filterId) { +AssertionResult FilterTests::getFilterMQDescriptor(uint32_t filterId, bool getMqDesc) { + if (!getMqDesc) { + ALOGE("[vts] Filter does not need FMQ."); + return success(); + } Result status; EXPECT_TRUE(mFilters[filterId]) << "Test with getNewlyOpenedFilterId first."; EXPECT_TRUE(mFilterCallbacks[filterId]) << "Test with getNewlyOpenedFilterId first."; @@ -279,16 +287,14 @@ AssertionResult FilterTests::clearTimeStamp() { AssertionResult FilterTests::closeFilter(uint32_t filterId) { EXPECT_TRUE(mFilters[filterId]) << "Test with getNewlyOpenedFilterId first."; Result status = mFilters[filterId]->close(); - if (status == Result::SUCCESS) { - for (int i = 0; i < mUsedFilterIds.size(); i++) { - if (mUsedFilterIds[i] == filterId) { - mUsedFilterIds.erase(mUsedFilterIds.begin() + i); - break; - } + for (int i = 0; i < mUsedFilterIds.size(); i++) { + if (mUsedFilterIds[i] == filterId) { + mUsedFilterIds.erase(mUsedFilterIds.begin() + i); + break; } - mFilterCallbacks.erase(filterId); - mFilters.erase(filterId); } + mFilterCallbacks.erase(filterId); + mFilters.erase(filterId); return AssertionResult(status == Result::SUCCESS); } diff --git a/tv/tuner/1.0/vts/functional/FilterTests.h b/tv/tuner/1.0/vts/functional/FilterTests.h index a76a6b9e2a..75c59b3670 100644 --- a/tv/tuner/1.0/vts/functional/FilterTests.h +++ b/tv/tuner/1.0/vts/functional/FilterTests.h @@ -157,7 +157,7 @@ class FilterTests { AssertionResult getTimeStamp(); AssertionResult getNewlyOpenedFilterId(uint32_t& filterId); AssertionResult configFilter(DemuxFilterSettings setting, uint32_t filterId); - AssertionResult getFilterMQDescriptor(uint32_t filterId); + AssertionResult getFilterMQDescriptor(uint32_t filterId, bool getMqDesc); AssertionResult setFilterDataSource(uint32_t sourceFilterId, uint32_t sinkFilterId); AssertionResult setFilterDataSourceToDemux(uint32_t filterId); AssertionResult startFilter(uint32_t filterId); diff --git a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp index 2be68b8fc0..6e119f9daf 100644 --- a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp +++ b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp @@ -48,7 +48,7 @@ void TunerFilterHidlTest::configSingleFilterInDemuxTest(FilterConfig filterConf, ASSERT_TRUE(mFilterTests.openFilterInDemux(filterConf.type, filterConf.bufferSize)); ASSERT_TRUE(mFilterTests.getNewlyOpenedFilterId(filterId)); ASSERT_TRUE(mFilterTests.configFilter(filterConf.settings, filterId)); - ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId)); + ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId, filterConf.getMqDesc)); ASSERT_TRUE(mFilterTests.startFilter(filterId)); ASSERT_TRUE(mFilterTests.stopFilter(filterId)); ASSERT_TRUE(mFilterTests.closeFilter(filterId)); @@ -57,13 +57,15 @@ void TunerFilterHidlTest::configSingleFilterInDemuxTest(FilterConfig filterConf, } void TunerFilterHidlTest::testTimeFilter(TimeFilterConfig filterConf) { - if (!filterConf.supportTimeFilter) { - return; - } uint32_t demuxId; sp demux; + DemuxCapabilities caps; ASSERT_TRUE(mDemuxTests.openDemux(demux, demuxId)); + ASSERT_TRUE(mDemuxTests.getDemuxCaps(caps)); + if (!caps.bTimeFilter) { + return; + } mFilterTests.setDemux(demux); ASSERT_TRUE(mFilterTests.openTimeFilterInDemux()); ASSERT_TRUE(mFilterTests.setTimeStamp(filterConf.timeStamp)); @@ -75,6 +77,9 @@ void TunerFilterHidlTest::testTimeFilter(TimeFilterConfig filterConf) { void TunerBroadcastHidlTest::broadcastSingleFilterTest(FilterConfig filterConf, FrontendConfig frontendConf) { + if (!frontendConf.enable) { + return; + } uint32_t feId; uint32_t demuxId; sp demux; @@ -99,7 +104,7 @@ void TunerBroadcastHidlTest::broadcastSingleFilterTest(FilterConfig filterConf, ASSERT_TRUE(mFilterTests.openFilterInDemux(filterConf.type, filterConf.bufferSize)); ASSERT_TRUE(mFilterTests.getNewlyOpenedFilterId(filterId)); ASSERT_TRUE(mFilterTests.configFilter(filterConf.settings, filterId)); - ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId)); + ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId, filterConf.getMqDesc)); ASSERT_TRUE(mFilterTests.startFilter(filterId)); // tune test ASSERT_TRUE(mFrontendTests.tuneFrontend(frontendConf, true /*testWithDemux*/)); @@ -116,7 +121,7 @@ void TunerBroadcastHidlTest::broadcastSingleFilterTestWithLnb(FilterConfig filte LnbConfig lnbConf) { vector ids; ASSERT_TRUE(mLnbTests.getLnbIds(ids)); - if (!lnbConf.usingLnb) { + if (ids.size() == 0) { return; } ASSERT_TRUE(ids.size() > 0); @@ -145,7 +150,7 @@ void TunerPlaybackHidlTest::playbackSingleFilterTest(FilterConfig filterConf, Dv ASSERT_TRUE(mFilterTests.openFilterInDemux(filterConf.type, filterConf.bufferSize)); ASSERT_TRUE(mFilterTests.getNewlyOpenedFilterId(filterId)); ASSERT_TRUE(mFilterTests.configFilter(filterConf.settings, filterId)); - ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId)); + ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId, filterConf.getMqDesc)); mDvrTests.startPlaybackInputThread(dvrConf.playbackInputFile, dvrConf.settings.playback()); ASSERT_TRUE(mDvrTests.startDvrPlayback()); ASSERT_TRUE(mFilterTests.startFilter(filterId)); @@ -160,6 +165,9 @@ void TunerPlaybackHidlTest::playbackSingleFilterTest(FilterConfig filterConf, Dv void TunerRecordHidlTest::recordSingleFilterTest(FilterConfig filterConf, FrontendConfig frontendConf, DvrConfig dvrConf) { + if (!frontendConf.enable) { + return; + } uint32_t feId; uint32_t demuxId; sp demux; @@ -184,7 +192,7 @@ void TunerRecordHidlTest::recordSingleFilterTest(FilterConfig filterConf, ASSERT_TRUE(mFilterTests.openFilterInDemux(filterConf.type, filterConf.bufferSize)); ASSERT_TRUE(mFilterTests.getNewlyOpenedFilterId(filterId)); ASSERT_TRUE(mFilterTests.configFilter(filterConf.settings, filterId)); - ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId)); + ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId, filterConf.getMqDesc)); filter = mFilterTests.getFilterById(filterId); ASSERT_TRUE(filter != nullptr); mDvrTests.startRecordOutputThread(dvrConf.settings.record()); @@ -209,10 +217,9 @@ void TunerRecordHidlTest::recordSingleFilterTestWithLnb(FilterConfig filterConf, DvrConfig dvrConf, LnbConfig lnbConf) { vector ids; ASSERT_TRUE(mLnbTests.getLnbIds(ids)); - if (!lnbConf.usingLnb) { + if (ids.size() == 0) { return; } - ASSERT_TRUE(ids.size() > 0); ASSERT_TRUE(mLnbTests.openLnbById(ids[0])); *mLnbId = ids[0]; ASSERT_TRUE(mLnbTests.setLnbCallback()); @@ -247,7 +254,7 @@ void TunerRecordHidlTest::attachSingleFilterToRecordDvrTest(FilterConfig filterC ASSERT_TRUE(mFilterTests.openFilterInDemux(filterConf.type, filterConf.bufferSize)); ASSERT_TRUE(mFilterTests.getNewlyOpenedFilterId(filterId)); ASSERT_TRUE(mFilterTests.configFilter(filterConf.settings, filterId)); - ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId)); + ASSERT_TRUE(mFilterTests.getFilterMQDescriptor(filterId, filterConf.getMqDesc)); filter = mFilterTests.getFilterById(filterId); ASSERT_TRUE(filter != nullptr); ASSERT_TRUE(mDvrTests.attachFilterToDvr(filter)); @@ -265,6 +272,9 @@ void TunerRecordHidlTest::attachSingleFilterToRecordDvrTest(FilterConfig filterC void TunerDescramblerHidlTest::scrambledBroadcastTest(set mediaFilterConfs, FrontendConfig frontendConf, DescramblerConfig descConfig) { + if (!frontendConf.enable) { + return; + } uint32_t feId; uint32_t demuxId; sp demux; @@ -328,21 +338,26 @@ void TunerDescramblerHidlTest::scrambledBroadcastTest(set m TEST_P(TunerFrontendHidlTest, TuneFrontend) { description("Tune one Frontend with specific setting and check Lock event"); - mFrontendTests.tuneTest(frontendArray[DVBT]); + mFrontendTests.tuneTest(frontendArray[defaultFrontend]); } TEST_P(TunerFrontendHidlTest, AutoScanFrontend) { description("Run an auto frontend scan with specific setting and check lock scanMessage"); - mFrontendTests.scanTest(frontendScanArray[SCAN_DVBT], FrontendScanType::SCAN_AUTO); + mFrontendTests.scanTest(frontendScanArray[defaultScanFrontend], FrontendScanType::SCAN_AUTO); } TEST_P(TunerFrontendHidlTest, BlindScanFrontend) { description("Run an blind frontend scan with specific setting and check lock scanMessage"); - mFrontendTests.scanTest(frontendScanArray[SCAN_DVBT], FrontendScanType::SCAN_BLIND); + mFrontendTests.scanTest(frontendScanArray[defaultScanFrontend], FrontendScanType::SCAN_BLIND); } TEST_P(TunerLnbHidlTest, OpenLnbByName) { description("Open and configure an Lnb with name then send a diseqc msg to it."); + vector ids; + ASSERT_TRUE(mLnbTests.getLnbIds(ids)); + if (ids.size() == 0) { + return; + } ASSERT_TRUE(mLnbTests.openLnbByName(lnbArray[LNB_EXTERNAL].name)); ASSERT_TRUE(mLnbTests.setLnbCallback()); ASSERT_TRUE(mLnbTests.setVoltage(lnbArray[LNB_EXTERNAL].voltage)); @@ -356,7 +371,7 @@ TEST_P(TunerLnbHidlTest, SendDiseqcMessageToLnb) { description("Open and configure an Lnb with specific settings then send a diseqc msg to it."); vector ids; ASSERT_TRUE(mLnbTests.getLnbIds(ids)); - if (!lnbArray[LNB0].usingLnb) { + if (ids.size() == 0) { return; } ASSERT_TRUE(ids.size() > 0); @@ -374,7 +389,7 @@ TEST_P(TunerDemuxHidlTest, openDemux) { uint32_t feId; uint32_t demuxId; sp demux; - mFrontendTests.getFrontendIdByType(frontendArray[DVBT].type, feId); + mFrontendTests.getFrontendIdByType(frontendArray[defaultFrontend].type, feId); ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(mFrontendTests.openFrontendById(feId)); ASSERT_TRUE(mFrontendTests.setFrontendCallback()); @@ -394,7 +409,7 @@ TEST_P(TunerDemuxHidlTest, getAvSyncTime) { uint32_t avSyncHwId; sp mediaFilter; - mFrontendTests.getFrontendIdByType(frontendArray[DVBT].type, feId); + mFrontendTests.getFrontendIdByType(frontendArray[defaultFrontend].type, feId); ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(mFrontendTests.openFrontendById(feId)); ASSERT_TRUE(mFrontendTests.setFrontendCallback()); @@ -422,7 +437,7 @@ TEST_P(TunerDemuxHidlTest, getAvSyncTime) { TEST_P(TunerFilterHidlTest, StartFilterInDemux) { description("Open and start a filter in Demux."); // TODO use paramterized tests - configSingleFilterInDemuxTest(filterArray[TS_VIDEO0], frontendArray[DVBT]); + configSingleFilterInDemuxTest(filterArray[TS_VIDEO0], frontendArray[defaultFrontend]); } TEST_P(TunerFilterHidlTest, SetFilterLinkage) { @@ -463,22 +478,22 @@ TEST_P(TunerFilterHidlTest, testTimeFilter) { TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowVideoFilterTest) { description("Test Video Filter functionality in Broadcast use case."); - broadcastSingleFilterTest(filterArray[TS_VIDEO1], frontendArray[DVBT]); + broadcastSingleFilterTest(filterArray[TS_VIDEO1], frontendArray[defaultFrontend]); } TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowAudioFilterTest) { description("Test Audio Filter functionality in Broadcast use case."); - broadcastSingleFilterTest(filterArray[TS_AUDIO0], frontendArray[DVBT]); + broadcastSingleFilterTest(filterArray[TS_AUDIO0], frontendArray[defaultFrontend]); } TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowSectionFilterTest) { description("Test Section Filter functionality in Broadcast use case."); - broadcastSingleFilterTest(filterArray[TS_SECTION0], frontendArray[DVBT]); + broadcastSingleFilterTest(filterArray[TS_SECTION0], frontendArray[defaultFrontend]); } TEST_P(TunerBroadcastHidlTest, IonBufferTest) { description("Test the av filter data bufferring."); - broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendArray[DVBT]); + broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendArray[defaultFrontend]); } TEST_P(TunerBroadcastHidlTest, LnbBroadcastDataFlowVideoFilterTest) { @@ -494,18 +509,20 @@ TEST_P(TunerPlaybackHidlTest, PlaybackDataFlowWithTsSectionFilterTest) { TEST_P(TunerRecordHidlTest, AttachFiltersToRecordTest) { description("Attach a single filter to the record dvr test."); // TODO use paramterized tests - attachSingleFilterToRecordDvrTest(filterArray[TS_RECORD0], frontendArray[DVBT], + attachSingleFilterToRecordDvrTest(filterArray[TS_RECORD0], frontendArray[defaultFrontend], dvrArray[DVR_RECORD0]); } TEST_P(TunerRecordHidlTest, RecordDataFlowWithTsRecordFilterTest) { description("Feed ts data from frontend to recording and test with ts record filter"); - recordSingleFilterTest(filterArray[TS_RECORD0], frontendArray[DVBT], dvrArray[DVR_RECORD0]); + recordSingleFilterTest(filterArray[TS_RECORD0], frontendArray[defaultFrontend], + dvrArray[DVR_RECORD0]); } TEST_P(TunerRecordHidlTest, LnbRecordDataFlowWithTsRecordFilterTest) { description("Feed ts data from Fe with Lnb to recording and test with ts record filter"); - recordSingleFilterTest(filterArray[TS_RECORD0], frontendArray[DVBS], dvrArray[DVR_RECORD0]); + recordSingleFilterTestWithLnb(filterArray[TS_RECORD0], frontendArray[DVBS], + dvrArray[DVR_RECORD0], lnbArray[LNB0]); } TEST_P(TunerDescramblerHidlTest, CreateDescrambler) { @@ -513,7 +530,7 @@ TEST_P(TunerDescramblerHidlTest, CreateDescrambler) { uint32_t feId; uint32_t demuxId; sp demux; - mFrontendTests.getFrontendIdByType(frontendArray[DVBT].type, feId); + mFrontendTests.getFrontendIdByType(frontendArray[defaultFrontend].type, feId); ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(mFrontendTests.openFrontendById(feId)); ASSERT_TRUE(mFrontendTests.setFrontendCallback()); @@ -530,7 +547,7 @@ TEST_P(TunerDescramblerHidlTest, ScrambledBroadcastDataFlowMediaFiltersTest) { set filterConfs; filterConfs.insert(filterArray[TS_AUDIO0]); filterConfs.insert(filterArray[TS_VIDEO1]); - scrambledBroadcastTest(filterConfs, frontendArray[DVBT], descramblerArray[DESC_0]); + scrambledBroadcastTest(filterConfs, frontendArray[defaultFrontend], descramblerArray[DESC_0]); } INSTANTIATE_TEST_SUITE_P( diff --git a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TestConfigurations.h b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TestConfigurations.h index 6c68e3588e..82e318ba45 100644 --- a/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TestConfigurations.h +++ b/tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TestConfigurations.h @@ -55,6 +55,7 @@ using android::hardware::tv::tuner::V1_0::RecordSettings; using namespace std; +const uint32_t FMQ_SIZE_512K = 0x80000; const uint32_t FMQ_SIZE_1M = 0x100000; const uint32_t FMQ_SIZE_4M = 0x400000; const uint32_t FMQ_SIZE_16M = 0x1000000; @@ -134,16 +135,17 @@ struct FilterConfig { uint32_t bufferSize; DemuxFilterType type; DemuxFilterSettings settings; + bool getMqDesc; bool operator<(const FilterConfig& /*c*/) const { return false; } }; struct TimeFilterConfig { - bool supportTimeFilter; uint64_t timeStamp; }; struct FrontendConfig { + bool enable; bool isSoftwareFe; FrontendType type; FrontendSettings settings; @@ -152,7 +154,6 @@ struct FrontendConfig { }; struct LnbConfig { - bool usingLnb; string name; LnbVoltage voltage; LnbTone tone; @@ -191,6 +192,8 @@ static DemuxFilterType filterLinkageTypes[LINKAGE_DIR][FILTER_MAIN_TYPE_BIT_COUN static DvrConfig dvrArray[DVR_MAX]; static DescramblerConfig descramblerArray[DESC_MAX]; static vector goldenOutputFiles; +static int defaultFrontend = DVBT; +static int defaultScanFrontend = SCAN_DVBT; /** Configuration array for the frontend tune test */ inline void initFrontendConfig() { @@ -216,7 +219,9 @@ inline void initFrontendConfig() { frontendArray[DVBT].tuneStatusTypes = types; frontendArray[DVBT].expectTuneStatuses = statuses; frontendArray[DVBT].isSoftwareFe = true; + frontendArray[DVBT].enable = true; frontendArray[DVBS].type = FrontendType::DVBS; + frontendArray[DVBS].enable = false; frontendArray[DVBS].isSoftwareFe = true; }; @@ -239,11 +244,9 @@ inline void initFrontendScanConfig() { /** Configuration array for the Lnb test */ inline void initLnbConfig() { - lnbArray[LNB0].usingLnb = true; lnbArray[LNB0].voltage = LnbVoltage::VOLTAGE_12V; lnbArray[LNB0].tone = LnbTone::NONE; lnbArray[LNB0].position = LnbPosition::UNDEFINED; - lnbArray[LNB_EXTERNAL].usingLnb = true; lnbArray[LNB_EXTERNAL].name = "default_lnb_external"; lnbArray[LNB_EXTERNAL].voltage = LnbVoltage::VOLTAGE_5V; lnbArray[LNB_EXTERNAL].tone = LnbTone::NONE; @@ -283,6 +286,7 @@ inline void initFilterConfig() { .isRaw = false, .streamId = 0xbd, }); + filterArray[TS_PES0].getMqDesc = true; // TS PCR filter setting filterArray[TS_PCR0].type.mainType = DemuxFilterMainType::TS; filterArray[TS_PCR0].type.subType.tsFilterType(DemuxTsFilterType::PCR); @@ -303,6 +307,7 @@ inline void initFilterConfig() { filterArray[TS_SECTION0].settings.ts().filterSettings.section({ .isRaw = false, }); + filterArray[TS_SECTION0].getMqDesc = true; // TS RECORD filter setting filterArray[TS_RECORD0].type.mainType = DemuxFilterMainType::TS; filterArray[TS_RECORD0].type.subType.tsFilterType(DemuxTsFilterType::RECORD); @@ -335,7 +340,6 @@ inline void initFilterConfig() { /** Configuration array for the timer filter test */ inline void initTimeFilterConfig() { - timeFilterArray[TIMER0].supportTimeFilter = true; timeFilterArray[TIMER0].timeStamp = 1; } diff --git a/tv/tuner/assets/Android.bp b/tv/tuner/assets/Android.bp new file mode 100644 index 0000000000..b58b645515 --- /dev/null +++ b/tv/tuner/assets/Android.bp @@ -0,0 +1,17 @@ +genrule { + name: "tuner_frontend_input_es", + srcs: ["tuner_frontend_input.es"], + out: [ + "test.es", + ], + cmd: "cp -f $(in) $(genDir)/test.es", +} + +genrule { + name: "tuner_frontend_input_ts", + srcs: ["tuner_frontend_input.ts"], + out: [ + "segment000000.ts", + ], + cmd: "cp -f $(in) $(genDir)/segment000000.ts", +} diff --git a/tv/tuner/assets/tuner_frontend_input.es b/tv/tuner/assets/tuner_frontend_input.es new file mode 100644 index 0000000000..b53c957350 Binary files /dev/null and b/tv/tuner/assets/tuner_frontend_input.es differ diff --git a/tv/tuner/assets/tuner_frontend_input.ts b/tv/tuner/assets/tuner_frontend_input.ts new file mode 100644 index 0000000000..8992c7b2b5 Binary files /dev/null and b/tv/tuner/assets/tuner_frontend_input.ts differ