mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
Backporting Tuner VTS 1.0 test assets pusher and test enhancement
The VTS test assets pusher update is backported from Android 12. The Test enhancement is cherry-picked from aosp-master: https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1555377 Test: atest VtsHalTvTunerV1_0TargetTest Bug: 181156117 Change-Id: Ic630bfbf06020aa0fdcba7250c992f7dbd954038
This commit is contained in:
@@ -41,6 +41,10 @@ cc_test {
|
||||
shared_libs: [
|
||||
"libbinder",
|
||||
],
|
||||
data: [
|
||||
":tuner_frontend_input_ts",
|
||||
":tuner_frontend_input_es",
|
||||
],
|
||||
test_suites: [
|
||||
"general-tests",
|
||||
"vts",
|
||||
|
||||
34
tv/tuner/1.0/vts/functional/AndroidTest.xml
Normal file
34
tv/tuner/1.0/vts/functional/AndroidTest.xml
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<configuration description="Runs VtsHalTvTunerV1_0TargetTest.">
|
||||
<option name="test-suite-tag" value="apct" />
|
||||
<option name="test-suite-tag" value="apct-native" />
|
||||
|
||||
<target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer">
|
||||
</target_preparer>
|
||||
|
||||
<target_preparer class="com.android.tradefed.targetprep.PushFilePreparer">
|
||||
<option name="cleanup" value="true" />
|
||||
<option name="push" value="VtsHalTvTunerV1_0TargetTest->/data/local/tmp/VtsHalTvTunerV1_0TargetTest" />
|
||||
<option name="push" value="test.es->/data/local/tmp/test.es" />
|
||||
<option name="push" value="segment000000.ts->/data/local/tmp/segment000000.ts" />
|
||||
</target_preparer>
|
||||
|
||||
<test class="com.android.tradefed.testtype.GTest" >
|
||||
<option name="native-test-device-path" value="/data/local/tmp" />
|
||||
<option name="module-name" value="VtsHalTvTunerV1_0TargetTest" />
|
||||
</test>
|
||||
</configuration>
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<IDemux> 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<IDemux> 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<uint32_t> 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<IDemux> 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<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];
|
||||
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<struct FilterConfig> mediaFilterConfs,
|
||||
FrontendConfig frontendConf,
|
||||
DescramblerConfig descConfig) {
|
||||
if (!frontendConf.enable) {
|
||||
return;
|
||||
}
|
||||
uint32_t feId;
|
||||
uint32_t demuxId;
|
||||
sp<IDemux> demux;
|
||||
@@ -328,21 +338,26 @@ 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[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<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));
|
||||
@@ -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<uint32_t> 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<IDemux> 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<IFilter> 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<IDemux> 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<FilterConfig> 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(
|
||||
|
||||
@@ -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<string> 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;
|
||||
}
|
||||
|
||||
|
||||
17
tv/tuner/assets/Android.bp
Normal file
17
tv/tuner/assets/Android.bp
Normal file
@@ -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",
|
||||
}
|
||||
BIN
tv/tuner/assets/tuner_frontend_input.es
Normal file
BIN
tv/tuner/assets/tuner_frontend_input.es
Normal file
Binary file not shown.
BIN
tv/tuner/assets/tuner_frontend_input.ts
Normal file
BIN
tv/tuner/assets/tuner_frontend_input.ts
Normal file
Binary file not shown.
Reference in New Issue
Block a user