Loading tv/tuner/1.0/default/Tuner.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,8 @@ Return<void> Tuner::getDemuxCaps(getDemuxCaps_cb _hidl_cb) { // IP filter can be an MMTP filter's data source. caps.linkCaps = {0x00, 0x00, 0x02, 0x00, 0x00}; // Support time filter testing caps.bTimeFilter = true; _hidl_cb(Result::SUCCESS, caps); return Void(); } Loading tv/tuner/1.0/vts/functional/Android.bp +15 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,15 @@ cc_test { "DescramblerTests.cpp", "LnbTests.cpp", ], generated_headers: [ "tuner_testing_dynamic_configuration_V1_0_enums", "tuner_testing_dynamic_configuration_V1_0_parser", ], generated_sources: [ "tuner_testing_dynamic_configuration_V1_0_enums", "tuner_testing_dynamic_configuration_V1_0_parser", ], header_libs: ["libxsdc-utils"], static_libs: [ "android.hardware.cas@1.0", "android.hardware.cas@1.1", Loading @@ -49,6 +58,12 @@ cc_test { ], shared_libs: [ "libbinder", "libxml2", ], data: [ ":tuner_frontend_input_ts", ":tuner_frontend_input_es", ":tuner_testing_dynamic_configuration_V1_0", ], test_suites: [ "general-tests", Loading tv/tuner/1.0/vts/functional/FrontendTests.cpp +4 −6 Original line number Diff line number Diff line Loading @@ -370,13 +370,11 @@ AssertionResult FrontendTests::tuneFrontend(FrontendConfig config, bool testWith mIsSoftwareFe = config.isSoftwareFe; bool result = true; if (mIsSoftwareFe && testWithDemux) { DvrConfig dvrConfig; getSoftwareFrontendPlaybackConfig(dvrConfig); result &= mDvrTests.openDvrInDemux(dvrConfig.type, dvrConfig.bufferSize) == success(); result &= mDvrTests.configDvrPlayback(dvrConfig.settings) == success(); result &= mDvrTests.openDvrInDemux(mDvrConfig.type, mDvrConfig.bufferSize) == success(); result &= mDvrTests.configDvrPlayback(mDvrConfig.settings) == success(); result &= mDvrTests.getDvrPlaybackMQDescriptor() == success(); mDvrTests.startPlaybackInputThread(dvrConfig.playbackInputFile, dvrConfig.settings.playback()); mDvrTests.startPlaybackInputThread(mDvrConfig.playbackInputFile, mDvrConfig.settings.playback()); if (!result) { ALOGW("[vts] Software frontend dvr configure failed."); return failure(); Loading tv/tuner/1.0/vts/functional/FrontendTests.h +5 −1 Original line number Diff line number Diff line Loading @@ -104,6 +104,7 @@ class FrontendTests { void setService(sp<ITuner> tuner) { mService = tuner; mDvrTests.setService(tuner); getDefaultSoftwareFrontendPlaybackConfig(mDvrConfig); } AssertionResult getFrontendIds(); Loading @@ -125,12 +126,14 @@ class FrontendTests { void setDvrTests(DvrTests dvrTests) { mDvrTests = dvrTests; } void setDemux(sp<IDemux> demux) { mDvrTests.setDemux(demux); } void setSoftwareFrontendDvrConfig(DvrConfig conf) { mDvrConfig = conf; } protected: static AssertionResult failure() { return ::testing::AssertionFailure(); } static AssertionResult success() { return ::testing::AssertionSuccess(); } void getSoftwareFrontendPlaybackConfig(DvrConfig& dvrConfig) { // TODO: replace with customized dvr input void getDefaultSoftwareFrontendPlaybackConfig(DvrConfig& dvrConfig) { PlaybackSettings playbackSettings{ .statusMask = 0xf, .lowThreshold = 0x1000, Loading @@ -151,4 +154,5 @@ class FrontendTests { DvrTests mDvrTests; bool mIsSoftwareFe = false; DvrConfig mDvrConfig; }; tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp +56 −37 Original line number Diff line number Diff line Loading @@ -18,16 +18,15 @@ namespace { AssertionResult TunerBroadcastHidlTest::filterDataOutputTest(vector<string> /*goldenOutputFiles*/) { AssertionResult TunerBroadcastHidlTest::filterDataOutputTest() { return filterDataOutputTestBase(mFilterTests); } AssertionResult TunerPlaybackHidlTest::filterDataOutputTest(vector<string> /*goldenOutputFiles*/) { AssertionResult TunerPlaybackHidlTest::filterDataOutputTest() { return filterDataOutputTestBase(mFilterTests); } AssertionResult TunerDescramblerHidlTest::filterDataOutputTest( vector<string> /*goldenOutputFiles*/) { AssertionResult TunerDescramblerHidlTest::filterDataOutputTest() { return filterDataOutputTestBase(mFilterTests); } Loading Loading @@ -62,8 +61,14 @@ void TunerFilterHidlTest::testTimeFilter(TimeFilterConfig filterConf) { } uint32_t demuxId; sp<IDemux> demux; DemuxCapabilities caps; ASSERT_TRUE(mDemuxTests.openDemux(demux, demuxId)); // TODO: add time filter hardware support checker ASSERT_TRUE(mDemuxTests.getDemuxCaps(caps)); if (!caps.bTimeFilter) { return; } mFilterTests.setDemux(demux); ASSERT_TRUE(mFilterTests.openTimeFilterInDemux()); ASSERT_TRUE(mFilterTests.setTimeStamp(filterConf.timeStamp)); Loading @@ -75,9 +80,6 @@ void TunerFilterHidlTest::testTimeFilter(TimeFilterConfig filterConf) { void TunerBroadcastHidlTest::broadcastSingleFilterTest(FilterConfig filterConf, FrontendConfig frontendConf) { if (!frontendConf.enable) { return; } uint32_t feId; uint32_t demuxId; sp<IDemux> demux; Loading Loading @@ -106,7 +108,7 @@ void TunerBroadcastHidlTest::broadcastSingleFilterTest(FilterConfig filterConf, ASSERT_TRUE(mFilterTests.startFilter(filterId)); // tune test ASSERT_TRUE(mFrontendTests.tuneFrontend(frontendConf, true /*testWithDemux*/)); ASSERT_TRUE(filterDataOutputTest(goldenOutputFiles)); ASSERT_TRUE(filterDataOutputTest()); ASSERT_TRUE(mFrontendTests.stopTuneFrontend(true /*testWithDemux*/)); ASSERT_TRUE(mFilterTests.stopFilter(filterId)); ASSERT_TRUE(mFilterTests.closeFilter(filterId)); Loading @@ -119,12 +121,12 @@ void TunerBroadcastHidlTest::broadcastSingleFilterTestWithLnb(FilterConfig filte LnbConfig lnbConf) { vector<uint32_t> 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]; mLnbId = &ids[0]; ASSERT_TRUE(mLnbTests.setLnbCallback()); ASSERT_TRUE(mLnbTests.setVoltage(lnbConf.voltage)); ASSERT_TRUE(mLnbTests.setTone(lnbConf.tone)); Loading Loading @@ -152,7 +154,7 @@ void TunerPlaybackHidlTest::playbackSingleFilterTest(FilterConfig filterConf, Dv mDvrTests.startPlaybackInputThread(dvrConf.playbackInputFile, dvrConf.settings.playback()); ASSERT_TRUE(mDvrTests.startDvrPlayback()); ASSERT_TRUE(mFilterTests.startFilter(filterId)); ASSERT_TRUE(filterDataOutputTest(goldenOutputFiles)); ASSERT_TRUE(filterDataOutputTest()); mDvrTests.stopPlaybackThread(); ASSERT_TRUE(mFilterTests.stopFilter(filterId)); ASSERT_TRUE(mDvrTests.stopDvrPlayback()); Loading @@ -163,9 +165,6 @@ 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<IDemux> demux; Loading Loading @@ -215,12 +214,12 @@ void TunerRecordHidlTest::recordSingleFilterTestWithLnb(FilterConfig filterConf, DvrConfig dvrConf, LnbConfig lnbConf) { vector<uint32_t> 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]; mLnbId = &ids[0]; ASSERT_TRUE(mLnbTests.setLnbCallback()); ASSERT_TRUE(mLnbTests.setVoltage(lnbConf.voltage)); ASSERT_TRUE(mLnbTests.setTone(lnbConf.tone)); Loading Loading @@ -271,9 +270,6 @@ void TunerRecordHidlTest::attachSingleFilterToRecordDvrTest(FilterConfig filterC void TunerDescramblerHidlTest::scrambledBroadcastTest(set<struct FilterConfig> mediaFilterConfs, FrontendConfig frontendConf, DescramblerConfig descConfig) { if (!frontendConf.enable) { return; } uint32_t feId; uint32_t demuxId; sp<IDemux> demux; Loading Loading @@ -319,7 +315,7 @@ void TunerDescramblerHidlTest::scrambledBroadcastTest(set<struct FilterConfig> m } // tune test ASSERT_TRUE(mFrontendTests.tuneFrontend(frontendConf, true /*testWithDemux*/)); ASSERT_TRUE(filterDataOutputTest(goldenOutputFiles)); ASSERT_TRUE(filterDataOutputTest()); ASSERT_TRUE(mFrontendTests.stopTuneFrontend(true /*testWithDemux*/)); for (id = filterIds.begin(); id != filterIds.end(); id++) { ASSERT_TRUE(mFilterTests.stopFilter(*id)); Loading @@ -337,21 +333,27 @@ void TunerDescramblerHidlTest::scrambledBroadcastTest(set<struct FilterConfig> m TEST_P(TunerFrontendHidlTest, TuneFrontend) { description("Tune one Frontend with specific setting and check Lock event"); mFrontendTests.tuneTest(frontendArray[defaultFrontend]); mFrontendTests.tuneTest(frontendMap[live.frontendId]); } TEST_P(TunerFrontendHidlTest, AutoScanFrontend) { description("Run an auto frontend scan with specific setting and check lock scanMessage"); mFrontendTests.scanTest(frontendScanArray[defaultScanFrontend], FrontendScanType::SCAN_AUTO); mFrontendTests.scanTest(frontendMap[scan.frontendId], FrontendScanType::SCAN_AUTO); } TEST_P(TunerFrontendHidlTest, BlindScanFrontend) { description("Run an blind frontend scan with specific setting and check lock scanMessage"); mFrontendTests.scanTest(frontendScanArray[defaultScanFrontend], FrontendScanType::SCAN_BLIND); mFrontendTests.scanTest(frontendMap[scan.frontendId], FrontendScanType::SCAN_BLIND); } TEST_P(TunerLnbHidlTest, OpenLnbByName) { description("Open and configure an Lnb with name then send a diseqc msg to it."); // TODO: add lnb hardware support checker vector<uint32_t> 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)); Loading @@ -365,7 +367,7 @@ TEST_P(TunerLnbHidlTest, SendDiseqcMessageToLnb) { description("Open and configure an Lnb with specific settings then send a diseqc msg to it."); vector<uint32_t> ids; ASSERT_TRUE(mLnbTests.getLnbIds(ids)); if (!lnbArray[LNB0].usingLnb) { if (ids.size() == 0) { return; } ASSERT_TRUE(ids.size() > 0); Loading @@ -383,7 +385,7 @@ TEST_P(TunerDemuxHidlTest, openDemux) { uint32_t feId; uint32_t demuxId; sp<IDemux> demux; mFrontendTests.getFrontendIdByType(frontendArray[defaultFrontend].type, feId); mFrontendTests.getFrontendIdByType(frontendMap[live.frontendId].type, feId); ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(mFrontendTests.openFrontendById(feId)); ASSERT_TRUE(mFrontendTests.setFrontendCallback()); Loading @@ -403,7 +405,7 @@ TEST_P(TunerDemuxHidlTest, getAvSyncTime) { uint32_t avSyncHwId; sp<IFilter> mediaFilter; mFrontendTests.getFrontendIdByType(frontendArray[defaultFrontend].type, feId); mFrontendTests.getFrontendIdByType(frontendMap[live.frontendId].type, feId); ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(mFrontendTests.openFrontendById(feId)); ASSERT_TRUE(mFrontendTests.setFrontendCallback()); Loading Loading @@ -431,7 +433,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[defaultFrontend]); configSingleFilterInDemuxTest(filterArray[TS_VIDEO0], frontendMap[live.frontendId]); } TEST_P(TunerFilterHidlTest, SetFilterLinkage) { Loading Loading @@ -472,27 +474,27 @@ TEST_P(TunerFilterHidlTest, testTimeFilter) { TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowVideoFilterTest) { description("Test Video Filter functionality in Broadcast use case."); broadcastSingleFilterTest(filterArray[TS_VIDEO1], frontendArray[defaultFrontend]); broadcastSingleFilterTest(filterArray[TS_VIDEO1], frontendMap[live.frontendId]); } TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowAudioFilterTest) { description("Test Audio Filter functionality in Broadcast use case."); broadcastSingleFilterTest(filterArray[TS_AUDIO0], frontendArray[defaultFrontend]); broadcastSingleFilterTest(filterArray[TS_AUDIO0], frontendMap[live.frontendId]); } TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowSectionFilterTest) { description("Test Section Filter functionality in Broadcast use case."); broadcastSingleFilterTest(filterArray[TS_SECTION0], frontendArray[defaultFrontend]); broadcastSingleFilterTest(filterArray[TS_SECTION0], frontendMap[live.frontendId]); } TEST_P(TunerBroadcastHidlTest, IonBufferTest) { description("Test the av filter data bufferring."); broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendArray[defaultFrontend]); broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendMap[live.frontendId]); } TEST_P(TunerBroadcastHidlTest, LnbBroadcastDataFlowVideoFilterTest) { description("Test Video Filter functionality in Broadcast with Lnb use case."); broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendArray[DVBS]); broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendMap[live.frontendId]); } TEST_P(TunerPlaybackHidlTest, PlaybackDataFlowWithTsSectionFilterTest) { Loading @@ -503,27 +505,40 @@ 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[defaultFrontend], if (!record.support) { return; } attachSingleFilterToRecordDvrTest(filterArray[TS_RECORD0], frontendMap[record.frontendId], 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[defaultFrontend], if (!record.support) { return; } recordSingleFilterTest(filterArray[TS_RECORD0], frontendMap[record.frontendId], 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]); if (record.support) { return; } recordSingleFilterTestWithLnb(filterArray[TS_RECORD0], frontendMap[lnbRecord.frontendId], dvrArray[DVR_RECORD0], lnbArray[LNB0]); } TEST_P(TunerDescramblerHidlTest, CreateDescrambler) { description("Create Descrambler"); if (descrambling.support) { return; } uint32_t feId; uint32_t demuxId; sp<IDemux> demux; mFrontendTests.getFrontendIdByType(frontendArray[defaultFrontend].type, feId); mFrontendTests.getFrontendIdByType(frontendMap[descrambling.frontendId].type, feId); ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(mFrontendTests.openFrontendById(feId)); ASSERT_TRUE(mFrontendTests.setFrontendCallback()); Loading @@ -537,10 +552,14 @@ TEST_P(TunerDescramblerHidlTest, CreateDescrambler) { TEST_P(TunerDescramblerHidlTest, ScrambledBroadcastDataFlowMediaFiltersTest) { description("Test ts audio filter in scrambled broadcast use case"); if (descrambling.support) { return; } set<FilterConfig> filterConfs; filterConfs.insert(filterArray[TS_AUDIO0]); filterConfs.insert(filterArray[TS_VIDEO1]); scrambledBroadcastTest(filterConfs, frontendArray[defaultFrontend], descramblerArray[DESC_0]); scrambledBroadcastTest(filterConfs, frontendMap[descrambling.frontendId], descramblerArray[DESC_0]); } INSTANTIATE_TEST_SUITE_P( Loading Loading
tv/tuner/1.0/default/Tuner.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,8 @@ Return<void> Tuner::getDemuxCaps(getDemuxCaps_cb _hidl_cb) { // IP filter can be an MMTP filter's data source. caps.linkCaps = {0x00, 0x00, 0x02, 0x00, 0x00}; // Support time filter testing caps.bTimeFilter = true; _hidl_cb(Result::SUCCESS, caps); return Void(); } Loading
tv/tuner/1.0/vts/functional/Android.bp +15 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,15 @@ cc_test { "DescramblerTests.cpp", "LnbTests.cpp", ], generated_headers: [ "tuner_testing_dynamic_configuration_V1_0_enums", "tuner_testing_dynamic_configuration_V1_0_parser", ], generated_sources: [ "tuner_testing_dynamic_configuration_V1_0_enums", "tuner_testing_dynamic_configuration_V1_0_parser", ], header_libs: ["libxsdc-utils"], static_libs: [ "android.hardware.cas@1.0", "android.hardware.cas@1.1", Loading @@ -49,6 +58,12 @@ cc_test { ], shared_libs: [ "libbinder", "libxml2", ], data: [ ":tuner_frontend_input_ts", ":tuner_frontend_input_es", ":tuner_testing_dynamic_configuration_V1_0", ], test_suites: [ "general-tests", Loading
tv/tuner/1.0/vts/functional/FrontendTests.cpp +4 −6 Original line number Diff line number Diff line Loading @@ -370,13 +370,11 @@ AssertionResult FrontendTests::tuneFrontend(FrontendConfig config, bool testWith mIsSoftwareFe = config.isSoftwareFe; bool result = true; if (mIsSoftwareFe && testWithDemux) { DvrConfig dvrConfig; getSoftwareFrontendPlaybackConfig(dvrConfig); result &= mDvrTests.openDvrInDemux(dvrConfig.type, dvrConfig.bufferSize) == success(); result &= mDvrTests.configDvrPlayback(dvrConfig.settings) == success(); result &= mDvrTests.openDvrInDemux(mDvrConfig.type, mDvrConfig.bufferSize) == success(); result &= mDvrTests.configDvrPlayback(mDvrConfig.settings) == success(); result &= mDvrTests.getDvrPlaybackMQDescriptor() == success(); mDvrTests.startPlaybackInputThread(dvrConfig.playbackInputFile, dvrConfig.settings.playback()); mDvrTests.startPlaybackInputThread(mDvrConfig.playbackInputFile, mDvrConfig.settings.playback()); if (!result) { ALOGW("[vts] Software frontend dvr configure failed."); return failure(); Loading
tv/tuner/1.0/vts/functional/FrontendTests.h +5 −1 Original line number Diff line number Diff line Loading @@ -104,6 +104,7 @@ class FrontendTests { void setService(sp<ITuner> tuner) { mService = tuner; mDvrTests.setService(tuner); getDefaultSoftwareFrontendPlaybackConfig(mDvrConfig); } AssertionResult getFrontendIds(); Loading @@ -125,12 +126,14 @@ class FrontendTests { void setDvrTests(DvrTests dvrTests) { mDvrTests = dvrTests; } void setDemux(sp<IDemux> demux) { mDvrTests.setDemux(demux); } void setSoftwareFrontendDvrConfig(DvrConfig conf) { mDvrConfig = conf; } protected: static AssertionResult failure() { return ::testing::AssertionFailure(); } static AssertionResult success() { return ::testing::AssertionSuccess(); } void getSoftwareFrontendPlaybackConfig(DvrConfig& dvrConfig) { // TODO: replace with customized dvr input void getDefaultSoftwareFrontendPlaybackConfig(DvrConfig& dvrConfig) { PlaybackSettings playbackSettings{ .statusMask = 0xf, .lowThreshold = 0x1000, Loading @@ -151,4 +154,5 @@ class FrontendTests { DvrTests mDvrTests; bool mIsSoftwareFe = false; DvrConfig mDvrConfig; };
tv/tuner/1.0/vts/functional/VtsHalTvTunerV1_0TargetTest.cpp +56 −37 Original line number Diff line number Diff line Loading @@ -18,16 +18,15 @@ namespace { AssertionResult TunerBroadcastHidlTest::filterDataOutputTest(vector<string> /*goldenOutputFiles*/) { AssertionResult TunerBroadcastHidlTest::filterDataOutputTest() { return filterDataOutputTestBase(mFilterTests); } AssertionResult TunerPlaybackHidlTest::filterDataOutputTest(vector<string> /*goldenOutputFiles*/) { AssertionResult TunerPlaybackHidlTest::filterDataOutputTest() { return filterDataOutputTestBase(mFilterTests); } AssertionResult TunerDescramblerHidlTest::filterDataOutputTest( vector<string> /*goldenOutputFiles*/) { AssertionResult TunerDescramblerHidlTest::filterDataOutputTest() { return filterDataOutputTestBase(mFilterTests); } Loading Loading @@ -62,8 +61,14 @@ void TunerFilterHidlTest::testTimeFilter(TimeFilterConfig filterConf) { } uint32_t demuxId; sp<IDemux> demux; DemuxCapabilities caps; ASSERT_TRUE(mDemuxTests.openDemux(demux, demuxId)); // TODO: add time filter hardware support checker ASSERT_TRUE(mDemuxTests.getDemuxCaps(caps)); if (!caps.bTimeFilter) { return; } mFilterTests.setDemux(demux); ASSERT_TRUE(mFilterTests.openTimeFilterInDemux()); ASSERT_TRUE(mFilterTests.setTimeStamp(filterConf.timeStamp)); Loading @@ -75,9 +80,6 @@ void TunerFilterHidlTest::testTimeFilter(TimeFilterConfig filterConf) { void TunerBroadcastHidlTest::broadcastSingleFilterTest(FilterConfig filterConf, FrontendConfig frontendConf) { if (!frontendConf.enable) { return; } uint32_t feId; uint32_t demuxId; sp<IDemux> demux; Loading Loading @@ -106,7 +108,7 @@ void TunerBroadcastHidlTest::broadcastSingleFilterTest(FilterConfig filterConf, ASSERT_TRUE(mFilterTests.startFilter(filterId)); // tune test ASSERT_TRUE(mFrontendTests.tuneFrontend(frontendConf, true /*testWithDemux*/)); ASSERT_TRUE(filterDataOutputTest(goldenOutputFiles)); ASSERT_TRUE(filterDataOutputTest()); ASSERT_TRUE(mFrontendTests.stopTuneFrontend(true /*testWithDemux*/)); ASSERT_TRUE(mFilterTests.stopFilter(filterId)); ASSERT_TRUE(mFilterTests.closeFilter(filterId)); Loading @@ -119,12 +121,12 @@ void TunerBroadcastHidlTest::broadcastSingleFilterTestWithLnb(FilterConfig filte LnbConfig lnbConf) { vector<uint32_t> 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]; mLnbId = &ids[0]; ASSERT_TRUE(mLnbTests.setLnbCallback()); ASSERT_TRUE(mLnbTests.setVoltage(lnbConf.voltage)); ASSERT_TRUE(mLnbTests.setTone(lnbConf.tone)); Loading Loading @@ -152,7 +154,7 @@ void TunerPlaybackHidlTest::playbackSingleFilterTest(FilterConfig filterConf, Dv mDvrTests.startPlaybackInputThread(dvrConf.playbackInputFile, dvrConf.settings.playback()); ASSERT_TRUE(mDvrTests.startDvrPlayback()); ASSERT_TRUE(mFilterTests.startFilter(filterId)); ASSERT_TRUE(filterDataOutputTest(goldenOutputFiles)); ASSERT_TRUE(filterDataOutputTest()); mDvrTests.stopPlaybackThread(); ASSERT_TRUE(mFilterTests.stopFilter(filterId)); ASSERT_TRUE(mDvrTests.stopDvrPlayback()); Loading @@ -163,9 +165,6 @@ 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<IDemux> demux; Loading Loading @@ -215,12 +214,12 @@ void TunerRecordHidlTest::recordSingleFilterTestWithLnb(FilterConfig filterConf, DvrConfig dvrConf, LnbConfig lnbConf) { vector<uint32_t> 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]; mLnbId = &ids[0]; ASSERT_TRUE(mLnbTests.setLnbCallback()); ASSERT_TRUE(mLnbTests.setVoltage(lnbConf.voltage)); ASSERT_TRUE(mLnbTests.setTone(lnbConf.tone)); Loading Loading @@ -271,9 +270,6 @@ void TunerRecordHidlTest::attachSingleFilterToRecordDvrTest(FilterConfig filterC void TunerDescramblerHidlTest::scrambledBroadcastTest(set<struct FilterConfig> mediaFilterConfs, FrontendConfig frontendConf, DescramblerConfig descConfig) { if (!frontendConf.enable) { return; } uint32_t feId; uint32_t demuxId; sp<IDemux> demux; Loading Loading @@ -319,7 +315,7 @@ void TunerDescramblerHidlTest::scrambledBroadcastTest(set<struct FilterConfig> m } // tune test ASSERT_TRUE(mFrontendTests.tuneFrontend(frontendConf, true /*testWithDemux*/)); ASSERT_TRUE(filterDataOutputTest(goldenOutputFiles)); ASSERT_TRUE(filterDataOutputTest()); ASSERT_TRUE(mFrontendTests.stopTuneFrontend(true /*testWithDemux*/)); for (id = filterIds.begin(); id != filterIds.end(); id++) { ASSERT_TRUE(mFilterTests.stopFilter(*id)); Loading @@ -337,21 +333,27 @@ void TunerDescramblerHidlTest::scrambledBroadcastTest(set<struct FilterConfig> m TEST_P(TunerFrontendHidlTest, TuneFrontend) { description("Tune one Frontend with specific setting and check Lock event"); mFrontendTests.tuneTest(frontendArray[defaultFrontend]); mFrontendTests.tuneTest(frontendMap[live.frontendId]); } TEST_P(TunerFrontendHidlTest, AutoScanFrontend) { description("Run an auto frontend scan with specific setting and check lock scanMessage"); mFrontendTests.scanTest(frontendScanArray[defaultScanFrontend], FrontendScanType::SCAN_AUTO); mFrontendTests.scanTest(frontendMap[scan.frontendId], FrontendScanType::SCAN_AUTO); } TEST_P(TunerFrontendHidlTest, BlindScanFrontend) { description("Run an blind frontend scan with specific setting and check lock scanMessage"); mFrontendTests.scanTest(frontendScanArray[defaultScanFrontend], FrontendScanType::SCAN_BLIND); mFrontendTests.scanTest(frontendMap[scan.frontendId], FrontendScanType::SCAN_BLIND); } TEST_P(TunerLnbHidlTest, OpenLnbByName) { description("Open and configure an Lnb with name then send a diseqc msg to it."); // TODO: add lnb hardware support checker vector<uint32_t> 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)); Loading @@ -365,7 +367,7 @@ TEST_P(TunerLnbHidlTest, SendDiseqcMessageToLnb) { description("Open and configure an Lnb with specific settings then send a diseqc msg to it."); vector<uint32_t> ids; ASSERT_TRUE(mLnbTests.getLnbIds(ids)); if (!lnbArray[LNB0].usingLnb) { if (ids.size() == 0) { return; } ASSERT_TRUE(ids.size() > 0); Loading @@ -383,7 +385,7 @@ TEST_P(TunerDemuxHidlTest, openDemux) { uint32_t feId; uint32_t demuxId; sp<IDemux> demux; mFrontendTests.getFrontendIdByType(frontendArray[defaultFrontend].type, feId); mFrontendTests.getFrontendIdByType(frontendMap[live.frontendId].type, feId); ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(mFrontendTests.openFrontendById(feId)); ASSERT_TRUE(mFrontendTests.setFrontendCallback()); Loading @@ -403,7 +405,7 @@ TEST_P(TunerDemuxHidlTest, getAvSyncTime) { uint32_t avSyncHwId; sp<IFilter> mediaFilter; mFrontendTests.getFrontendIdByType(frontendArray[defaultFrontend].type, feId); mFrontendTests.getFrontendIdByType(frontendMap[live.frontendId].type, feId); ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(mFrontendTests.openFrontendById(feId)); ASSERT_TRUE(mFrontendTests.setFrontendCallback()); Loading Loading @@ -431,7 +433,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[defaultFrontend]); configSingleFilterInDemuxTest(filterArray[TS_VIDEO0], frontendMap[live.frontendId]); } TEST_P(TunerFilterHidlTest, SetFilterLinkage) { Loading Loading @@ -472,27 +474,27 @@ TEST_P(TunerFilterHidlTest, testTimeFilter) { TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowVideoFilterTest) { description("Test Video Filter functionality in Broadcast use case."); broadcastSingleFilterTest(filterArray[TS_VIDEO1], frontendArray[defaultFrontend]); broadcastSingleFilterTest(filterArray[TS_VIDEO1], frontendMap[live.frontendId]); } TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowAudioFilterTest) { description("Test Audio Filter functionality in Broadcast use case."); broadcastSingleFilterTest(filterArray[TS_AUDIO0], frontendArray[defaultFrontend]); broadcastSingleFilterTest(filterArray[TS_AUDIO0], frontendMap[live.frontendId]); } TEST_P(TunerBroadcastHidlTest, BroadcastDataFlowSectionFilterTest) { description("Test Section Filter functionality in Broadcast use case."); broadcastSingleFilterTest(filterArray[TS_SECTION0], frontendArray[defaultFrontend]); broadcastSingleFilterTest(filterArray[TS_SECTION0], frontendMap[live.frontendId]); } TEST_P(TunerBroadcastHidlTest, IonBufferTest) { description("Test the av filter data bufferring."); broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendArray[defaultFrontend]); broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendMap[live.frontendId]); } TEST_P(TunerBroadcastHidlTest, LnbBroadcastDataFlowVideoFilterTest) { description("Test Video Filter functionality in Broadcast with Lnb use case."); broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendArray[DVBS]); broadcastSingleFilterTest(filterArray[TS_VIDEO0], frontendMap[live.frontendId]); } TEST_P(TunerPlaybackHidlTest, PlaybackDataFlowWithTsSectionFilterTest) { Loading @@ -503,27 +505,40 @@ 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[defaultFrontend], if (!record.support) { return; } attachSingleFilterToRecordDvrTest(filterArray[TS_RECORD0], frontendMap[record.frontendId], 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[defaultFrontend], if (!record.support) { return; } recordSingleFilterTest(filterArray[TS_RECORD0], frontendMap[record.frontendId], 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]); if (record.support) { return; } recordSingleFilterTestWithLnb(filterArray[TS_RECORD0], frontendMap[lnbRecord.frontendId], dvrArray[DVR_RECORD0], lnbArray[LNB0]); } TEST_P(TunerDescramblerHidlTest, CreateDescrambler) { description("Create Descrambler"); if (descrambling.support) { return; } uint32_t feId; uint32_t demuxId; sp<IDemux> demux; mFrontendTests.getFrontendIdByType(frontendArray[defaultFrontend].type, feId); mFrontendTests.getFrontendIdByType(frontendMap[descrambling.frontendId].type, feId); ASSERT_TRUE(feId != INVALID_ID); ASSERT_TRUE(mFrontendTests.openFrontendById(feId)); ASSERT_TRUE(mFrontendTests.setFrontendCallback()); Loading @@ -537,10 +552,14 @@ TEST_P(TunerDescramblerHidlTest, CreateDescrambler) { TEST_P(TunerDescramblerHidlTest, ScrambledBroadcastDataFlowMediaFiltersTest) { description("Test ts audio filter in scrambled broadcast use case"); if (descrambling.support) { return; } set<FilterConfig> filterConfs; filterConfs.insert(filterArray[TS_AUDIO0]); filterConfs.insert(filterArray[TS_VIDEO1]); scrambledBroadcastTest(filterConfs, frontendArray[defaultFrontend], descramblerArray[DESC_0]); scrambledBroadcastTest(filterConfs, frontendMap[descrambling.frontendId], descramblerArray[DESC_0]); } INSTANTIATE_TEST_SUITE_P( Loading