Merge "Complete TunerFilterSettings aidl interfaces and TunerFilter implementations" into sc-dev
diff --git a/services/tuner/TunerFilter.cpp b/services/tuner/TunerFilter.cpp
index 456a2c1..b712348 100644
--- a/services/tuner/TunerFilter.cpp
+++ b/services/tuner/TunerFilter.cpp
@@ -18,17 +18,24 @@
#include "TunerFilter.h"
+using ::aidl::android::media::tv::tuner::TunerFilterSectionCondition;
+
using ::android::hardware::hidl_handle;
+using ::android::hardware::tv::tuner::V1_0::DemuxAlpLengthType;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterMainType;
-using ::android::hardware::tv::tuner::V1_0::DemuxFilterSettings;
+using ::android::hardware::tv::tuner::V1_0::DemuxIpAddress;
using ::android::hardware::tv::tuner::V1_0::DemuxMmtpFilterType;
-using ::android::hardware::tv::tuner::V1_0::DemuxTsFilterSettings;
+using ::android::hardware::tv::tuner::V1_0::DemuxMmtpPid;
+using ::android::hardware::tv::tuner::V1_0::DemuxRecordScIndexType;
+using ::android::hardware::tv::tuner::V1_0::DemuxStreamId;
using ::android::hardware::tv::tuner::V1_0::DemuxTsFilterType;
using ::android::hardware::tv::tuner::V1_0::Result;
using ::android::hardware::tv::tuner::V1_1::Constant;
namespace android {
+using namespace std;
+
TunerFilter::TunerFilter(
sp<IFilter> filter, sp<IFilterCallback> callback) {
mFilter = filter;
@@ -42,13 +49,6 @@
mFilterCallback = nullptr;
}
-DemuxFilterAvSettings TunerFilter::getAvSettings(const TunerFilterSettings& settings) {
- DemuxFilterAvSettings av {
- .isPassthrough = settings.get<TunerFilterSettings::av>().isPassthrough,
- };
- return av;
-}
-
Status TunerFilter::getId(int32_t* _aidl_return) {
if (mFilter == nullptr) {
ALOGE("IFilter is not initialized");
@@ -91,34 +91,293 @@
return Status::fromServiceSpecificError(static_cast<int32_t>(Result::UNAVAILABLE));
}
- // TODO: more filter types.
- TunerFilterSettings tunerSettings;
- DemuxFilterSettings halSettings;
+ DemuxFilterSettings settings;
switch (config.getTag()) {
case TunerFilterConfiguration::ts: {
- uint16_t tpid = static_cast<uint16_t>(config.get<TunerFilterConfiguration::ts>().tpid);
- tunerSettings = config.get<TunerFilterConfiguration::ts>().filterSettings;
- DemuxTsFilterSettings ts {
- .tpid = tpid,
- };
-
- switch (tunerSettings.getTag()) {
- case TunerFilterSettings::av: {
- ts.filterSettings.av(getAvSettings(tunerSettings));
- break;
- }
- }
- halSettings.ts(ts);
+ getHidlTsSettings(config, settings);
+ break;
+ }
+ case TunerFilterConfiguration::mmtp: {
+ getHidlMmtpSettings(config, settings);
+ break;
+ }
+ case TunerFilterConfiguration::ip: {
+ getHidlIpSettings(config, settings);
+ break;
+ }
+ case TunerFilterConfiguration::tlv: {
+ getHidlTlvSettings(config, settings);
+ break;
+ }
+ case TunerFilterConfiguration::alp: {
+ getHidlAlpSettings(config, settings);
break;
}
}
- Result res = mFilter->configure(halSettings);
+
+ Result res = mFilter->configure(settings);
if (res != Result::SUCCESS) {
return Status::fromServiceSpecificError(static_cast<int32_t>(res));
}
return Status::ok();
}
+void TunerFilter::getHidlTsSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings) {
+ auto tsConf = config.get<TunerFilterConfiguration::ts>();
+ DemuxTsFilterSettings ts{
+ .tpid = static_cast<uint16_t>(tsConf.tpid),
+ };
+
+ TunerFilterSettings tunerSettings = tsConf.filterSettings;
+ switch (tunerSettings.getTag()) {
+ case TunerFilterSettings::av: {
+ ts.filterSettings.av(getAvSettings(tunerSettings));
+ break;
+ }
+ case TunerFilterSettings::section: {
+ ts.filterSettings.section(getSectionSettings(tunerSettings));
+ break;
+ }
+ case TunerFilterSettings::pesData: {
+ ts.filterSettings.pesData(getPesDataSettings(tunerSettings));
+ break;
+ }
+ case TunerFilterSettings::record: {
+ ts.filterSettings.record(getRecordSettings(tunerSettings));
+ break;
+ }
+ default: {
+ ts.filterSettings.noinit();
+ break;
+ }
+ }
+ settings.ts(ts);
+}
+
+void TunerFilter::getHidlMmtpSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings) {
+ auto mmtpConf = config.get<TunerFilterConfiguration::mmtp>();
+ DemuxMmtpFilterSettings mmtp{
+ .mmtpPid = static_cast<DemuxMmtpPid>(mmtpConf.mmtpPid),
+ };
+
+ TunerFilterSettings tunerSettings = mmtpConf.filterSettings;
+ switch (tunerSettings.getTag()) {
+ case TunerFilterSettings::av: {
+ mmtp.filterSettings.av(getAvSettings(tunerSettings));
+ break;
+ }
+ case TunerFilterSettings::section: {
+ mmtp.filterSettings.section(getSectionSettings(tunerSettings));
+ break;
+ }
+ case TunerFilterSettings::pesData: {
+ mmtp.filterSettings.pesData(getPesDataSettings(tunerSettings));
+ break;
+ }
+ case TunerFilterSettings::record: {
+ mmtp.filterSettings.record(getRecordSettings(tunerSettings));
+ break;
+ }
+ case TunerFilterSettings::download: {
+ mmtp.filterSettings.download(getDownloadSettings(tunerSettings));
+ break;
+ }
+ default: {
+ mmtp.filterSettings.noinit();
+ break;
+ }
+ }
+ settings.mmtp(mmtp);
+}
+
+void TunerFilter::getHidlIpSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings) {
+ auto ipConf = config.get<TunerFilterConfiguration::ip>();
+ DemuxIpAddress ipAddr{
+ .srcPort = static_cast<uint16_t>(ipConf.ipAddr.srcPort),
+ .dstPort = static_cast<uint16_t>(ipConf.ipAddr.dstPort),
+ };
+ ipConf.ipAddr.srcIpAddress.isIpV6
+ ? ipAddr.srcIpAddress.v6(getIpV6Address(ipConf.ipAddr.srcIpAddress))
+ : ipAddr.srcIpAddress.v4(getIpV4Address(ipConf.ipAddr.srcIpAddress));
+ ipConf.ipAddr.dstIpAddress.isIpV6
+ ? ipAddr.dstIpAddress.v6(getIpV6Address(ipConf.ipAddr.dstIpAddress))
+ : ipAddr.dstIpAddress.v4(getIpV4Address(ipConf.ipAddr.dstIpAddress));
+ DemuxIpFilterSettings ip{
+ .ipAddr = ipAddr,
+ };
+
+ TunerFilterSettings tunerSettings = ipConf.filterSettings;
+ switch (tunerSettings.getTag()) {
+ case TunerFilterSettings::section: {
+ ip.filterSettings.section(getSectionSettings(tunerSettings));
+ break;
+ }
+ case TunerFilterSettings::isPassthrough: {
+ ip.filterSettings.bPassthrough(tunerSettings.isPassthrough);
+ break;
+ }
+ default: {
+ ip.filterSettings.noinit();
+ break;
+ }
+ }
+ settings.ip(ip);
+}
+
+hidl_array<uint8_t, IP_V6_LENGTH> TunerFilter::getIpV6Address(TunerDemuxIpAddress addr) {
+ hidl_array<uint8_t, IP_V6_LENGTH> ip = {0};
+ if (addr.addr.size() != IP_V6_LENGTH) {
+ return ip;
+ }
+ copy(addr.addr.begin(), addr.addr.end(), ip.data());
+ return ip;
+}
+
+hidl_array<uint8_t, IP_V4_LENGTH> TunerFilter::getIpV4Address(TunerDemuxIpAddress addr) {
+ hidl_array<uint8_t, IP_V4_LENGTH> ip = {0};
+ if (addr.addr.size() != IP_V4_LENGTH) {
+ return ip;
+ }
+ copy(addr.addr.begin(), addr.addr.end(), ip.data());
+ return ip;
+}
+
+void TunerFilter::getHidlTlvSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings) {
+ auto tlvConf = config.get<TunerFilterConfiguration::tlv>();
+ DemuxTlvFilterSettings tlv{
+ .packetType = static_cast<uint8_t>(tlvConf.packetType),
+ .isCompressedIpPacket = tlvConf.isCompressedIpPacket,
+ };
+
+ TunerFilterSettings tunerSettings = tlvConf.filterSettings;
+ switch (tunerSettings.getTag()) {
+ case TunerFilterSettings::section: {
+ tlv.filterSettings.section(getSectionSettings(tunerSettings));
+ break;
+ }
+ case TunerFilterSettings::isPassthrough: {
+ tlv.filterSettings.bPassthrough(tunerSettings.isPassthrough);
+ break;
+ }
+ default: {
+ tlv.filterSettings.noinit();
+ break;
+ }
+ }
+ settings.tlv(tlv);
+}
+
+void TunerFilter::getHidlAlpSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings) {
+ auto alpConf = config.get<TunerFilterConfiguration::alp>();
+ DemuxAlpFilterSettings alp{
+ .packetType = static_cast<uint8_t>(alpConf.packetType),
+ .lengthType = static_cast<DemuxAlpLengthType>(alpConf.lengthType),
+ };
+
+ TunerFilterSettings tunerSettings = alpConf.filterSettings;
+ switch (tunerSettings.getTag()) {
+ case TunerFilterSettings::section: {
+ alp.filterSettings.section(getSectionSettings(tunerSettings));
+ break;
+ }
+ default: {
+ alp.filterSettings.noinit();
+ break;
+ }
+ }
+ settings.alp(alp);
+}
+
+DemuxFilterAvSettings TunerFilter::getAvSettings(const TunerFilterSettings& settings) {
+ DemuxFilterAvSettings av {
+ .isPassthrough = settings.get<TunerFilterSettings::av>().isPassthrough,
+ };
+ return av;
+}
+
+DemuxFilterSectionSettings TunerFilter::getSectionSettings(const TunerFilterSettings& settings) {
+ auto s = settings.get<TunerFilterSettings::section>();
+ DemuxFilterSectionSettings section{
+ .isCheckCrc = s.isCheckCrc,
+ .isRepeat = s.isRepeat,
+ .isRaw = s.isRaw,
+ };
+
+ switch (s.condition.getTag()) {
+ case TunerFilterSectionCondition::sectionBits: {
+ auto sectionBits = s.condition.get<TunerFilterSectionCondition::sectionBits>();
+ vector<uint8_t> filter(sectionBits.filter.size());
+ vector<uint8_t> mask(sectionBits.mask.size());
+ vector<uint8_t> mode(sectionBits.mode.size());
+ copy(sectionBits.filter.begin(), sectionBits.filter.end(), filter.begin());
+ copy(sectionBits.mask.begin(), sectionBits.mask.end(), mask.begin());
+ copy(sectionBits.mode.begin(), sectionBits.mode.end(), mode.begin());
+ section.condition.sectionBits({
+ .filter = filter,
+ .mask = mask,
+ .mode = mode,
+ });
+ break;
+ }
+ case TunerFilterSectionCondition::tableInfo: {
+ auto tableInfo = s.condition.get<TunerFilterSectionCondition::tableInfo>();
+ section.condition.tableInfo({
+ .tableId = static_cast<uint16_t>(tableInfo.tableId),
+ .version = static_cast<uint16_t>(tableInfo.version),
+ });
+ break;
+ }
+ default: {
+ break;
+ }
+ }
+ return section;
+}
+
+DemuxFilterPesDataSettings TunerFilter::getPesDataSettings(const TunerFilterSettings& settings) {
+ DemuxFilterPesDataSettings pes{
+ .streamId = static_cast<DemuxStreamId>(
+ settings.get<TunerFilterSettings::pesData>().streamId),
+ .isRaw = settings.get<TunerFilterSettings::pesData>().isRaw,
+ };
+ return pes;
+}
+
+DemuxFilterRecordSettings TunerFilter::getRecordSettings(const TunerFilterSettings& settings) {
+ auto r = settings.get<TunerFilterSettings::record>();
+ DemuxFilterRecordSettings record{
+ .tsIndexMask = static_cast<uint32_t>(r.tsIndexMask),
+ .scIndexType = static_cast<DemuxRecordScIndexType>(r.scIndexType),
+ };
+
+ switch (r.scIndexMask.getTag()) {
+ case TunerFilterScIndexMask::sc: {
+ record.scIndexMask.sc(static_cast<uint32_t>(
+ r.scIndexMask.get<TunerFilterScIndexMask::sc>()));
+ break;
+ }
+ case TunerFilterScIndexMask::scHevc: {
+ record.scIndexMask.scHevc(static_cast<uint32_t>(
+ r.scIndexMask.get<TunerFilterScIndexMask::scHevc>()));
+ break;
+ }
+ }
+ return record;
+}
+
+DemuxFilterDownloadSettings TunerFilter::getDownloadSettings(const TunerFilterSettings& settings) {
+ DemuxFilterDownloadSettings download {
+ .downloadId = static_cast<uint32_t>(
+ settings.get<TunerFilterSettings::download>().downloadId),
+ };
+ return download;
+}
+
Status TunerFilter::getAvSharedHandleInfo(TunerFilterSharedHandleInfo* _aidl_return) {
if (mFilter_1_1 == nullptr) {
ALOGE("IFilter_1_1 is not initialized");
@@ -133,7 +392,7 @@
.handle = dupToAidl(hidl_handle(avMemory.getNativeHandle())),
.size = static_cast<int64_t>(avMemSize),
};
- *_aidl_return = std::move(info);
+ *_aidl_return = move(info);
} else {
_aidl_return = NULL;
}
@@ -219,7 +478,7 @@
}
Return<void> TunerFilter::FilterCallback::onFilterEvent(const DemuxFilterEvent& filterEvent) {
- std::vector<DemuxFilterEventExt::Event> emptyEventsExt;
+ vector<DemuxFilterEventExt::Event> emptyEventsExt;
DemuxFilterEventExt emptyFilterEventExt {
.events = emptyEventsExt,
};
@@ -230,9 +489,9 @@
Return<void> TunerFilter::FilterCallback::onFilterEvent_1_1(const DemuxFilterEvent& filterEvent,
const DemuxFilterEventExt& filterEventExt) {
if (mTunerFilterCallback != NULL) {
- std::vector<DemuxFilterEvent::Event> events = filterEvent.events;
- std::vector<DemuxFilterEventExt::Event> eventsExt = filterEventExt.events;
- std::vector<TunerFilterEvent> tunerEvent;
+ vector<DemuxFilterEvent::Event> events = filterEvent.events;
+ vector<DemuxFilterEventExt::Event> eventsExt = filterEventExt.events;
+ vector<TunerFilterEvent> tunerEvent;
getAidlFilterEvent(events, eventsExt, tunerEvent);
mTunerFilterCallback->onFilterEvent(tunerEvent);
@@ -242,9 +501,9 @@
/////////////// FilterCallback Helper Methods ///////////////////////
-void TunerFilter::FilterCallback::getAidlFilterEvent(std::vector<DemuxFilterEvent::Event>& events,
- std::vector<DemuxFilterEventExt::Event>& eventsExt,
- std::vector<TunerFilterEvent>& tunerEvent) {
+void TunerFilter::FilterCallback::getAidlFilterEvent(vector<DemuxFilterEvent::Event>& events,
+ vector<DemuxFilterEventExt::Event>& eventsExt,
+ vector<TunerFilterEvent>& tunerEvent) {
if (events.empty() && !eventsExt.empty()) {
auto eventExt = eventsExt[0];
switch (eventExt.getDiscriminator()) {
@@ -305,7 +564,7 @@
}
void TunerFilter::FilterCallback::getMediaEvent(
- std::vector<DemuxFilterEvent::Event>& events, std::vector<TunerFilterEvent>& res) {
+ vector<DemuxFilterEvent::Event>& events, vector<TunerFilterEvent>& res) {
for (DemuxFilterEvent::Event e : events) {
DemuxFilterMediaEvent mediaEvent = e.media();
TunerFilterMediaEvent tunerMedia;
@@ -346,13 +605,13 @@
}
TunerFilterEvent tunerEvent;
- tunerEvent.set<TunerFilterEvent::media>(std::move(tunerMedia));
- res.push_back(std::move(tunerEvent));
+ tunerEvent.set<TunerFilterEvent::media>(move(tunerMedia));
+ res.push_back(move(tunerEvent));
}
}
void TunerFilter::FilterCallback::getSectionEvent(
- std::vector<DemuxFilterEvent::Event>& events, std::vector<TunerFilterEvent>& res) {
+ vector<DemuxFilterEvent::Event>& events, vector<TunerFilterEvent>& res) {
for (DemuxFilterEvent::Event e : events) {
DemuxFilterSectionEvent sectionEvent = e.section();
TunerFilterSectionEvent tunerSection;
@@ -363,13 +622,13 @@
tunerSection.dataLength = static_cast<char>(sectionEvent.dataLength);
TunerFilterEvent tunerEvent;
- tunerEvent.set<TunerFilterEvent::section>(std::move(tunerSection));
- res.push_back(std::move(tunerEvent));
+ tunerEvent.set<TunerFilterEvent::section>(move(tunerSection));
+ res.push_back(move(tunerEvent));
}
}
void TunerFilter::FilterCallback::getPesEvent(
- std::vector<DemuxFilterEvent::Event>& events, std::vector<TunerFilterEvent>& res) {
+ vector<DemuxFilterEvent::Event>& events, vector<TunerFilterEvent>& res) {
for (DemuxFilterEvent::Event e : events) {
DemuxFilterPesEvent pesEvent = e.pes();
TunerFilterPesEvent tunerPes;
@@ -379,13 +638,13 @@
tunerPes.mpuSequenceNumber = static_cast<int>(pesEvent.mpuSequenceNumber);
TunerFilterEvent tunerEvent;
- tunerEvent.set<TunerFilterEvent::pes>(std::move(tunerPes));
- res.push_back(std::move(tunerEvent));
+ tunerEvent.set<TunerFilterEvent::pes>(move(tunerPes));
+ res.push_back(move(tunerEvent));
}
}
-void TunerFilter::FilterCallback::getTsRecordEvent(std::vector<DemuxFilterEvent::Event>& events,
- std::vector<DemuxFilterEventExt::Event>& eventsExt, std::vector<TunerFilterEvent>& res) {
+void TunerFilter::FilterCallback::getTsRecordEvent(vector<DemuxFilterEvent::Event>& events,
+ vector<DemuxFilterEventExt::Event>& eventsExt, vector<TunerFilterEvent>& res) {
for (int i = 0; i < events.size(); i++) {
TunerFilterTsRecordEvent tunerTsRecord;
DemuxFilterTsRecordEvent tsRecordEvent = events[i].tsRecord();
@@ -421,13 +680,13 @@
}
TunerFilterEvent tunerEvent;
- tunerEvent.set<TunerFilterEvent::tsRecord>(std::move(tunerTsRecord));
- res.push_back(std::move(tunerEvent));
+ tunerEvent.set<TunerFilterEvent::tsRecord>(move(tunerTsRecord));
+ res.push_back(move(tunerEvent));
}
}
-void TunerFilter::FilterCallback::getMmtpRecordEvent(std::vector<DemuxFilterEvent::Event>& events,
- std::vector<DemuxFilterEventExt::Event>& eventsExt, std::vector<TunerFilterEvent>& res) {
+void TunerFilter::FilterCallback::getMmtpRecordEvent(vector<DemuxFilterEvent::Event>& events,
+ vector<DemuxFilterEventExt::Event>& eventsExt, vector<TunerFilterEvent>& res) {
for (int i = 0; i < events.size(); i++) {
TunerFilterMmtpRecordEvent tunerMmtpRecord;
DemuxFilterMmtpRecordEvent mmtpRecordEvent = events[i].mmtpRecord();
@@ -449,13 +708,13 @@
}
TunerFilterEvent tunerEvent;
- tunerEvent.set<TunerFilterEvent::mmtpRecord>(std::move(tunerMmtpRecord));
- res.push_back(std::move(tunerEvent));
+ tunerEvent.set<TunerFilterEvent::mmtpRecord>(move(tunerMmtpRecord));
+ res.push_back(move(tunerEvent));
}
}
void TunerFilter::FilterCallback::getDownloadEvent(
- std::vector<DemuxFilterEvent::Event>& events, std::vector<TunerFilterEvent>& res) {
+ vector<DemuxFilterEvent::Event>& events, vector<TunerFilterEvent>& res) {
for (DemuxFilterEvent::Event e : events) {
DemuxFilterDownloadEvent downloadEvent = e.download();
TunerFilterDownloadEvent tunerDownload;
@@ -467,13 +726,13 @@
tunerDownload.dataLength = static_cast<char>(downloadEvent.dataLength);
TunerFilterEvent tunerEvent;
- tunerEvent.set<TunerFilterEvent::download>(std::move(tunerDownload));
- res.push_back(std::move(tunerEvent));
+ tunerEvent.set<TunerFilterEvent::download>(move(tunerDownload));
+ res.push_back(move(tunerEvent));
}
}
void TunerFilter::FilterCallback::getIpPayloadEvent(
- std::vector<DemuxFilterEvent::Event>& events, std::vector<TunerFilterEvent>& res) {
+ vector<DemuxFilterEvent::Event>& events, vector<TunerFilterEvent>& res) {
for (DemuxFilterEvent::Event e : events) {
DemuxFilterIpPayloadEvent ipPayloadEvent = e.ipPayload();
TunerFilterIpPayloadEvent tunerIpPayload;
@@ -481,31 +740,31 @@
tunerIpPayload.dataLength = static_cast<char>(ipPayloadEvent.dataLength);
TunerFilterEvent tunerEvent;
- tunerEvent.set<TunerFilterEvent::ipPayload>(std::move(tunerIpPayload));
- res.push_back(std::move(tunerEvent));
+ tunerEvent.set<TunerFilterEvent::ipPayload>(move(tunerIpPayload));
+ res.push_back(move(tunerEvent));
}
}
void TunerFilter::FilterCallback::getTemiEvent(
- std::vector<DemuxFilterEvent::Event>& events, std::vector<TunerFilterEvent>& res) {
+ vector<DemuxFilterEvent::Event>& events, vector<TunerFilterEvent>& res) {
for (DemuxFilterEvent::Event e : events) {
DemuxFilterTemiEvent temiEvent = e.temi();
TunerFilterTemiEvent tunerTemi;
tunerTemi.pts = static_cast<long>(temiEvent.pts);
tunerTemi.descrTag = static_cast<int8_t>(temiEvent.descrTag);
- std::vector<uint8_t> descrData = temiEvent.descrData;
+ vector<uint8_t> descrData = temiEvent.descrData;
tunerTemi.descrData.resize(descrData.size());
copy(descrData.begin(), descrData.end(), tunerTemi.descrData.begin());
TunerFilterEvent tunerEvent;
- tunerEvent.set<TunerFilterEvent::temi>(std::move(tunerTemi));
- res.push_back(std::move(tunerEvent));
+ tunerEvent.set<TunerFilterEvent::temi>(move(tunerTemi));
+ res.push_back(move(tunerEvent));
}
}
void TunerFilter::FilterCallback::getMonitorEvent(
- std::vector<DemuxFilterEventExt::Event>& eventsExt, std::vector<TunerFilterEvent>& res) {
+ vector<DemuxFilterEventExt::Event>& eventsExt, vector<TunerFilterEvent>& res) {
DemuxFilterMonitorEvent monitorEvent = eventsExt[0].monitorEvent();
TunerFilterMonitorEvent tunerMonitor;
@@ -525,14 +784,14 @@
}
TunerFilterEvent tunerEvent;
- tunerEvent.set<TunerFilterEvent::monitor>(std::move(tunerMonitor));
- res.push_back(std::move(tunerEvent));
+ tunerEvent.set<TunerFilterEvent::monitor>(move(tunerMonitor));
+ res.push_back(move(tunerEvent));
}
void TunerFilter::FilterCallback::getRestartEvent(
- std::vector<DemuxFilterEventExt::Event>& eventsExt, std::vector<TunerFilterEvent>& res) {
+ vector<DemuxFilterEventExt::Event>& eventsExt, vector<TunerFilterEvent>& res) {
TunerFilterEvent tunerEvent;
tunerEvent.set<TunerFilterEvent::startId>(static_cast<int>(eventsExt[0].startId()));
- res.push_back(std::move(tunerEvent));
+ res.push_back(move(tunerEvent));
}
} // namespace android
diff --git a/services/tuner/TunerFilter.h b/services/tuner/TunerFilter.h
index 422a12a..0055b53 100644
--- a/services/tuner/TunerFilter.h
+++ b/services/tuner/TunerFilter.h
@@ -29,6 +29,7 @@
using Status = ::ndk::ScopedAStatus;
using ::aidl::android::media::tv::tuner::BnTunerFilter;
using ::aidl::android::media::tv::tuner::ITunerFilterCallback;
+using ::aidl::android::media::tv::tuner::TunerDemuxIpAddress;
using ::aidl::android::media::tv::tuner::TunerFilterConfiguration;
using ::aidl::android::media::tv::tuner::TunerFilterDownloadEvent;
using ::aidl::android::media::tv::tuner::TunerFilterIpPayloadEvent;
@@ -45,17 +46,28 @@
using ::aidl::android::media::tv::tuner::TunerFilterTsRecordEvent;
using ::android::hardware::Return;
using ::android::hardware::Void;
+using ::android::hardware::hidl_array;
+using ::android::hardware::tv::tuner::V1_0::DemuxAlpFilterSettings;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterAvSettings;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterDownloadEvent;
+using ::android::hardware::tv::tuner::V1_0::DemuxFilterDownloadSettings;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterIpPayloadEvent;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterEvent;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterMediaEvent;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterMmtpRecordEvent;
+using ::android::hardware::tv::tuner::V1_0::DemuxFilterPesDataSettings;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterPesEvent;
+using ::android::hardware::tv::tuner::V1_0::DemuxFilterRecordSettings;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterSectionEvent;
+using ::android::hardware::tv::tuner::V1_0::DemuxFilterSectionSettings;
+using ::android::hardware::tv::tuner::V1_0::DemuxFilterSettings;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterStatus;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterTemiEvent;
using ::android::hardware::tv::tuner::V1_0::DemuxFilterTsRecordEvent;
+using ::android::hardware::tv::tuner::V1_0::DemuxIpFilterSettings;
+using ::android::hardware::tv::tuner::V1_0::DemuxMmtpFilterSettings;
+using ::android::hardware::tv::tuner::V1_0::DemuxTlvFilterSettings;
+using ::android::hardware::tv::tuner::V1_0::DemuxTsFilterSettings;
using ::android::hardware::tv::tuner::V1_0::DemuxPid;
using ::android::hardware::tv::tuner::V1_0::IFilter;
using ::android::hardware::tv::tuner::V1_1::DemuxFilterEventExt;
@@ -65,6 +77,9 @@
namespace android {
+const static int IP_V4_LENGTH = 4;
+const static int IP_V6_LENGTH = 16;
+
class TunerFilter : public BnTunerFilter {
public:
@@ -127,6 +142,25 @@
private:
DemuxFilterAvSettings getAvSettings(const TunerFilterSettings& settings);
+ DemuxFilterSectionSettings getSectionSettings(const TunerFilterSettings& settings);
+ DemuxFilterPesDataSettings getPesDataSettings(const TunerFilterSettings& settings);
+ DemuxFilterRecordSettings getRecordSettings(const TunerFilterSettings& settings);
+ DemuxFilterDownloadSettings getDownloadSettings(const TunerFilterSettings& settings);
+
+ void getHidlTsSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings);
+ void getHidlMmtpSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings);
+ void getHidlIpSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings);
+ void getHidlTlvSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings);
+ void getHidlAlpSettings(
+ const TunerFilterConfiguration& config, DemuxFilterSettings& settings);
+
+ hidl_array<uint8_t, IP_V4_LENGTH> getIpV4Address(TunerDemuxIpAddress addr);
+ hidl_array<uint8_t, IP_V6_LENGTH> getIpV6Address(TunerDemuxIpAddress addr);
+
sp<IFilter> mFilter;
sp<::android::hardware::tv::tuner::V1_1::IFilter> mFilter_1_1;
sp<IFilterCallback> mFilterCallback;
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerAudioExtraMetaData.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerAudioExtraMetaData.aidl
index d3e4735..df3374a 100644
--- a/services/tuner/aidl/android/media/tv/tuner/TunerAudioExtraMetaData.aidl
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerAudioExtraMetaData.aidl
@@ -22,7 +22,7 @@
* {@hide}
*/
parcelable TunerAudioExtraMetaData {
- byte adFade;
+ byte adFade;
byte adPan;
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerDemuxIpAddress.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerDemuxIpAddress.aidl
new file mode 100644
index 0000000..b65f404
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerDemuxIpAddress.aidl
@@ -0,0 +1,28 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+/**
+ * Demux ip address configure.
+ *
+ * {@hide}
+ */
+parcelable TunerDemuxIpAddress {
+ boolean isIpV6;
+
+ byte[] addr;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerDemuxIpAddressSettings.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerDemuxIpAddressSettings.aidl
new file mode 100644
index 0000000..b244388
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerDemuxIpAddressSettings.aidl
@@ -0,0 +1,34 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.TunerDemuxIpAddress;
+
+/**
+ * Filter Settings for an Ip filter.
+ *
+ * {@hide}
+ */
+parcelable TunerDemuxIpAddressSettings {
+ TunerDemuxIpAddress srcIpAddress;
+
+ TunerDemuxIpAddress dstIpAddress;
+
+ char srcPort;
+
+ char dstPort;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterAlpConfiguration.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterAlpConfiguration.aidl
new file mode 100644
index 0000000..4c9e3af
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterAlpConfiguration.aidl
@@ -0,0 +1,32 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.TunerFilterSettings;
+
+/**
+ * Filter Settings for an ALP filter.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterAlpConfiguration {
+ byte packetType;
+
+ byte lengthType;
+
+ TunerFilterSettings filterSettings;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterConfiguration.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterConfiguration.aidl
index c208dde..808cfd1 100644
--- a/services/tuner/aidl/android/media/tv/tuner/TunerFilterConfiguration.aidl
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterConfiguration.aidl
@@ -16,6 +16,10 @@
package android.media.tv.tuner;
+import android.media.tv.tuner.TunerFilterAlpConfiguration;
+import android.media.tv.tuner.TunerFilterIpConfiguration;
+import android.media.tv.tuner.TunerFilterMmtpConfiguration;
+import android.media.tv.tuner.TunerFilterTlvConfiguration;
import android.media.tv.tuner.TunerFilterTsConfiguration;
/**
@@ -25,4 +29,12 @@
*/
union TunerFilterConfiguration {
TunerFilterTsConfiguration ts;
+
+ TunerFilterMmtpConfiguration mmtp;
+
+ TunerFilterIpConfiguration ip;
+
+ TunerFilterTlvConfiguration tlv;
+
+ TunerFilterAlpConfiguration alp;
}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterDownloadSettings.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterDownloadSettings.aidl
new file mode 100644
index 0000000..417a5fe
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterDownloadSettings.aidl
@@ -0,0 +1,26 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+/**
+ * Filter Settings for downloading.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterDownloadSettings {
+ int downloadId;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterIpConfiguration.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterIpConfiguration.aidl
new file mode 100644
index 0000000..8b4d889
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterIpConfiguration.aidl
@@ -0,0 +1,31 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.TunerDemuxIpAddressSettings;
+import android.media.tv.tuner.TunerFilterSettings;
+
+/**
+ * Filter Settings for a ip filter.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterIpConfiguration {
+ TunerDemuxIpAddressSettings ipAddr;
+
+ TunerFilterSettings filterSettings;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterMmtpConfiguration.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterMmtpConfiguration.aidl
new file mode 100644
index 0000000..162ca8e
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterMmtpConfiguration.aidl
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.TunerFilterSettings;
+
+/**
+ * Filter Settings for an mmtp filter.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterMmtpConfiguration {
+ char mmtpPid;
+
+ TunerFilterSettings filterSettings;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterMmtpRecordEvent.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterMmtpRecordEvent.aidl
index dfbb9e2..b8871cf 100644
--- a/services/tuner/aidl/android/media/tv/tuner/TunerFilterMmtpRecordEvent.aidl
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterMmtpRecordEvent.aidl
@@ -17,7 +17,7 @@
package android.media.tv.tuner;
/**
- * Filter Event for MMTP Record Filter.
+ * Filter Event for an MMTP Record Filter.
*
* {@hide}
*/
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterPesDataSettings.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterPesDataSettings.aidl
new file mode 100644
index 0000000..312f314
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterPesDataSettings.aidl
@@ -0,0 +1,28 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+/**
+ * Filter Settings for Pes Data.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterPesDataSettings {
+ char streamId;
+
+ boolean isRaw;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterRecordSettings.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterRecordSettings.aidl
new file mode 100644
index 0000000..29be624
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterRecordSettings.aidl
@@ -0,0 +1,32 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.TunerFilterScIndexMask;
+
+/**
+ * Filter Settings for recording.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterRecordSettings {
+ int tsIndexMask;
+
+ int scIndexType;
+
+ TunerFilterScIndexMask scIndexMask;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionBits.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionBits.aidl
new file mode 100644
index 0000000..dd4f842
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionBits.aidl
@@ -0,0 +1,30 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+/**
+ * Bits settings of a section Filter.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterSectionBits {
+ byte[] filter;
+
+ byte[] mask;
+
+ byte[] mode;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionCondition.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionCondition.aidl
new file mode 100644
index 0000000..00aabe4
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionCondition.aidl
@@ -0,0 +1,31 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.TunerFilterSectionBits;
+import android.media.tv.tuner.TunerFilterSectionTableInfo;
+
+/**
+ * Section filter condition settings.
+ *
+ * {@hide}
+ */
+union TunerFilterSectionCondition {
+ TunerFilterSectionBits sectionBits;
+
+ TunerFilterSectionTableInfo tableInfo;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionSettings.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionSettings.aidl
new file mode 100644
index 0000000..22129b6
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionSettings.aidl
@@ -0,0 +1,34 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.TunerFilterSectionCondition;
+
+/**
+ * Filter Settings for a section filter.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterSectionSettings {
+ TunerFilterSectionCondition condition;
+
+ boolean isCheckCrc;
+
+ boolean isRepeat;
+
+ boolean isRaw;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionTableInfo.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionTableInfo.aidl
new file mode 100644
index 0000000..cc78c9d
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSectionTableInfo.aidl
@@ -0,0 +1,28 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+/**
+ * Table info settings of a section Filter.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterSectionTableInfo {
+ char tableId;
+
+ char version;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterSettings.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSettings.aidl
index 8b9e9c2..eb7eaa5 100644
--- a/services/tuner/aidl/android/media/tv/tuner/TunerFilterSettings.aidl
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterSettings.aidl
@@ -17,6 +17,10 @@
package android.media.tv.tuner;
import android.media.tv.tuner.TunerFilterAvSettings;
+import android.media.tv.tuner.TunerFilterDownloadSettings;
+import android.media.tv.tuner.TunerFilterPesDataSettings;
+import android.media.tv.tuner.TunerFilterRecordSettings;
+import android.media.tv.tuner.TunerFilterSectionSettings;
/**
* Filter Settings.
@@ -24,5 +28,17 @@
* {@hide}
*/
union TunerFilterSettings {
+ boolean nothing;
+
TunerFilterAvSettings av;
+
+ TunerFilterSectionSettings section;
+
+ TunerFilterPesDataSettings pesData;
+
+ TunerFilterRecordSettings record;
+
+ TunerFilterDownloadSettings download;
+
+ boolean isPassthrough;
}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterTlvConfiguration.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterTlvConfiguration.aidl
new file mode 100644
index 0000000..0b237b4
--- /dev/null
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterTlvConfiguration.aidl
@@ -0,0 +1,32 @@
+/**
+ * Copyright 2021, 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.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.TunerFilterSettings;
+
+/**
+ * Filter Settings for a tlv filter.
+ *
+ * {@hide}
+ */
+parcelable TunerFilterTlvConfiguration {
+ byte packetType;
+
+ boolean isCompressedIpPacket;
+
+ TunerFilterSettings filterSettings;
+}
diff --git a/services/tuner/aidl/android/media/tv/tuner/TunerFilterTsConfiguration.aidl b/services/tuner/aidl/android/media/tv/tuner/TunerFilterTsConfiguration.aidl
index 5b94988..2e386e6 100644
--- a/services/tuner/aidl/android/media/tv/tuner/TunerFilterTsConfiguration.aidl
+++ b/services/tuner/aidl/android/media/tv/tuner/TunerFilterTsConfiguration.aidl
@@ -24,6 +24,7 @@
* {@hide}
*/
parcelable TunerFilterTsConfiguration {
- int tpid;
+ char tpid;
+
TunerFilterSettings filterSettings;
}