diff --git a/tv/tuner/aidl/vts/functional/VtsHalTvTunerTestConfigurations.h b/tv/tuner/aidl/vts/functional/VtsHalTvTunerTestConfigurations.h index a88b105ce3..f093b8eb93 100644 --- a/tv/tuner/aidl/vts/functional/VtsHalTvTunerTestConfigurations.h +++ b/tv/tuner/aidl/vts/functional/VtsHalTvTunerTestConfigurations.h @@ -191,6 +191,7 @@ inline void connectHardwaresToTestCases() { TunerTestingConfigAidlReader1_0::connectDescrambling(descrambling); TunerTestingConfigAidlReader1_0::connectLnbLive(lnbLive); TunerTestingConfigAidlReader1_0::connectLnbRecord(lnbRecord); + TunerTestingConfigAidlReader1_0::connectDvrPlayback(playback); }; inline bool validateConnections() { @@ -248,6 +249,8 @@ inline bool validateConnections() { dvrIsValid &= lnbRecord.support ? dvrMap.find(lnbRecord.dvrRecordId) != dvrMap.end() : true; + dvrIsValid &= playback.support ? dvrMap.find(playback.dvrId) != dvrMap.end() : true; + if (!dvrIsValid) { ALOGW("[vts config] dynamic config dvr connection is invalid."); return false; @@ -285,6 +288,19 @@ inline bool validateConnections() { filterIsValid &= filterMap.find(filterId) != filterMap.end(); } + filterIsValid &= playback.support + ? filterMap.find(playback.audioFilterId) != filterMap.end() && + filterMap.find(playback.videoFilterId) != filterMap.end() + : true; + filterIsValid &= playback.sectionFilterId.compare(emptyHardwareId) == 0 + ? true + : filterMap.find(playback.sectionFilterId) != filterMap.end(); + + for (auto& filterId : playback.extraFilters) { + filterIsValid &= + playback.hasExtraFilters ? filterMap.find(filterId) != filterMap.end() : true; + } + if (!filterIsValid) { ALOGW("[vts config] dynamic config filter connection is invalid."); return false; diff --git a/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h b/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h index 12ccb80911..3991267eba 100644 --- a/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h +++ b/tv/tuner/config/TunerTestingConfigAidlReaderV1_0.h @@ -146,12 +146,13 @@ struct ScanHardwareConnections { struct DvrPlaybackHardwareConnections { bool support; + bool hasExtraFilters = false; string frontendId; string dvrId; string audioFilterId; string videoFilterId; string sectionFilterId; - /* list string of extra filters; */ + vector extraFilters; }; struct DvrRecordHardwareConnections { @@ -533,6 +534,13 @@ struct TunerTestingConfigAidlReader1_0 { } else { playback.sectionFilterId = emptyHardwareId; } + if (playbackConfig.hasOptionalFilters() && !playback.hasExtraFilters) { + auto optionalFilters = playbackConfig.getFirstOptionalFilters()->getOptionalFilter(); + for (size_t i = 0; i < optionalFilters.size(); ++i) { + playback.extraFilters.push_back(optionalFilters[i].getFilterId()); + } + playback.hasExtraFilters = true; + } } static void connectDvrRecord(DvrRecordHardwareConnections& record) { diff --git a/tv/tuner/config/api/current.txt b/tv/tuner/config/api/current.txt index 53720ac06d..36dd54ab9c 100644 --- a/tv/tuner/config/api/current.txt +++ b/tv/tuner/config/api/current.txt @@ -83,14 +83,21 @@ package android.media.tuner.testing.configuration.V1_0 { ctor public DataFlowConfiguration.DvrPlayback(); method @Nullable public String getAudioFilterConnection(); method @Nullable public String getDvrConnection(); + method @Nullable public android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.DvrPlayback.OptionalFilters getOptionalFilters(); method @Nullable public String getSectionFilterConnection(); method @Nullable public String getVideoFilterConnection(); method public void setAudioFilterConnection(@Nullable String); method public void setDvrConnection(@Nullable String); + method public void setOptionalFilters(@Nullable android.media.tuner.testing.configuration.V1_0.DataFlowConfiguration.DvrPlayback.OptionalFilters); method public void setSectionFilterConnection(@Nullable String); method public void setVideoFilterConnection(@Nullable String); } + public static class DataFlowConfiguration.DvrPlayback.OptionalFilters { + ctor public DataFlowConfiguration.DvrPlayback.OptionalFilters(); + method @Nullable public java.util.List getOptionalFilter(); + } + public static class DataFlowConfiguration.DvrRecord { ctor public DataFlowConfiguration.DvrRecord(); method @Nullable public String getDvrRecordConnection(); @@ -496,6 +503,12 @@ package android.media.tuner.testing.configuration.V1_0 { enum_constant public static final android.media.tuner.testing.configuration.V1_0.LnbVoltageEnum VOLTAGE_5V; } + public class OptionalFilter { + ctor public OptionalFilter(); + method @Nullable public String getFilterId(); + method public void setFilterId(@Nullable String); + } + public class RecordFilterSettings { ctor public RecordFilterSettings(); method @Nullable public android.media.tuner.testing.configuration.V1_0.ScIndexTypeEnum getScIndexType(); diff --git a/tv/tuner/config/tuner_testing_dynamic_configuration.xsd b/tv/tuner/config/tuner_testing_dynamic_configuration.xsd index f5a7eed871..8ac25e9662 100644 --- a/tv/tuner/config/tuner_testing_dynamic_configuration.xsd +++ b/tv/tuner/config/tuner_testing_dynamic_configuration.xsd @@ -664,7 +664,14 @@ - + + + + + + + + @@ -743,4 +750,7 @@ + + +