Add DataId for Audio Handle in Audio Track
Test: Manual
bug: 135708935
Change-Id: I639d65999dbf1bf727837298804c350698a9f08a
diff --git a/tv/tuner/1.0/IFilter.hal b/tv/tuner/1.0/IFilter.hal
index 94e3c0c..567971f 100644
--- a/tv/tuner/1.0/IFilter.hal
+++ b/tv/tuner/1.0/IFilter.hal
@@ -120,12 +120,13 @@
* presented by file descripor in the handle as released.
*
* @param avMemory A handle associated to the memory for audio or video.
+ * @param avDataId An Id provides additional information for AV data.
* @return result Result status of the operation.
* SUCCESS if successful,
* INVALID_ARGUMENT if failed for wrong parameter.
* UNKNOWN_ERROR if failed for other reasons.
*/
- releaseAvHandle(handle avMemory) generates (Result result);
+ releaseAvHandle(handle avMemory, uint64_t avDataId) generates (Result result);
/**
* Set the filter's data source.
diff --git a/tv/tuner/1.0/ITuner.hal b/tv/tuner/1.0/ITuner.hal
index 2712c13..ba183f1 100644
--- a/tv/tuner/1.0/ITuner.hal
+++ b/tv/tuner/1.0/ITuner.hal
@@ -123,4 +123,21 @@
* @return lnb the newly created Lnb interface.
*/
openLnbById(LnbId lnbId) generates (Result result, ILnb lnb);
+
+ /**
+ * Create a new instance of Lnb given a LNB name.
+ *
+ * It is used by the client to create a LNB instance for external device.
+ *
+ * @param lnbName the name for an external LNB to be opened. The app
+ * provides the name. Frammework doesn't depend on the name, instead
+ * use lnbId return from this call.
+ * @return result Result status of the operation.
+ * SUCCESS if successful,
+ * UNAVAILABLE if no resource.
+ * UNKNOWN_ERROR if creation failed for other reasons.
+ * @return lnbId the id of the LNB to be opened.
+ * @return lnb the newly created Lnb interface.
+ */
+ openLnbByName(string lnbName) generates (Result result, LnbId lnbId, ILnb lnb);
};
diff --git a/tv/tuner/1.0/default/Filter.cpp b/tv/tuner/1.0/default/Filter.cpp
index b3160fc..54d0952 100644
--- a/tv/tuner/1.0/default/Filter.cpp
+++ b/tv/tuner/1.0/default/Filter.cpp
@@ -120,7 +120,7 @@
return Result::SUCCESS;
}
-Return<Result> Filter::releaseAvHandle(const hidl_handle& /*avMemory*/) {
+Return<Result> Filter::releaseAvHandle(const hidl_handle& /*avMemory*/, uint64_t /*avDataId*/) {
ALOGV("%s", __FUNCTION__);
return Result::SUCCESS;
diff --git a/tv/tuner/1.0/default/Filter.h b/tv/tuner/1.0/default/Filter.h
index d397f73..0dc992a 100644
--- a/tv/tuner/1.0/default/Filter.h
+++ b/tv/tuner/1.0/default/Filter.h
@@ -70,7 +70,7 @@
virtual Return<Result> flush() override;
- virtual Return<Result> releaseAvHandle(const hidl_handle& avMemory) override;
+ virtual Return<Result> releaseAvHandle(const hidl_handle& avMemory, uint64_t avDataId) override;
virtual Return<Result> close() override;
diff --git a/tv/tuner/1.0/default/Tuner.cpp b/tv/tuner/1.0/default/Tuner.cpp
index c143d61..c6017f0 100644
--- a/tv/tuner/1.0/default/Tuner.cpp
+++ b/tv/tuner/1.0/default/Tuner.cpp
@@ -139,6 +139,15 @@
return mFrontends[frontendId];
}
+Return<void> Tuner::openLnbByName(const hidl_string& /*lnbName*/, openLnbByName_cb _hidl_cb) {
+ ALOGV("%s", __FUNCTION__);
+
+ sp<ILnb> lnb = new Lnb();
+
+ _hidl_cb(Result::SUCCESS, 1234, lnb);
+ return Void();
+}
+
void Tuner::setFrontendAsDemuxSource(uint32_t frontendId, uint32_t demuxId) {
mFrontendToDemux[frontendId] = demuxId;
}
diff --git a/tv/tuner/1.0/default/Tuner.h b/tv/tuner/1.0/default/Tuner.h
index 96da257..7a8a919 100644
--- a/tv/tuner/1.0/default/Tuner.h
+++ b/tv/tuner/1.0/default/Tuner.h
@@ -55,6 +55,9 @@
virtual Return<void> openLnbById(LnbId lnbId, openLnbById_cb _hidl_cb) override;
+ virtual Return<void> openLnbByName(const hidl_string& lnbName,
+ openLnbByName_cb _hidl_cb) override;
+
sp<Frontend> getFrontendById(uint32_t frontendId);
void setFrontendAsDemuxSource(uint32_t frontendId, uint32_t demuxId);
diff --git a/tv/tuner/1.0/types.hal b/tv/tuner/1.0/types.hal
index d39439d..e22e487 100644
--- a/tv/tuner/1.0/types.hal
+++ b/tv/tuner/1.0/types.hal
@@ -537,6 +537,16 @@
};
/**
+ * VCM mode in DVBS.
+ */
+@export
+enum FrontendDvbsVcmMode : uint32_t {
+ UNDEFINED,
+ AUTO,
+ MANUAL,
+};
+
+/**
* Signal Settings for an DVBS Frontend.
*/
struct FrontendDvbsSettings {
@@ -561,6 +571,8 @@
uint32_t inputStreamId;
FrontendDvbsStandard standard;
+
+ FrontendDvbsVcmMode vcmMode;
};
/**
@@ -960,7 +972,7 @@
/**
* hardware is able to detect and set Modulation automatically
*/
- AUTO = 1 << 5,
+ AUTO = 1 << 0,
MOD_BPSK = 1 << 1,
MOD_QPSK = 1 << 2,
MOD_8PSK = 1 << 3,
@@ -1105,7 +1117,7 @@
bitfield<FrontendIsdbtBandwidth> bandwidthCap;
- bitfield<FrontendIsdbtModulation> constellationCap;
+ bitfield<FrontendIsdbtModulation> modulationCap;
bitfield<FrontendIsdbtCoderate> coderateCap;
@@ -1230,6 +1242,11 @@
*/
SYMBOL_RATE,
/**
+ * Locked HIERARCHY for DVBT2 frontend.
+ */
+ HIERARCHY,
+ ANALOG_TYPE,
+ /**
* Locked Plp Ids for DVBT2 frontend.
*/
PLP_IDS,
@@ -1274,14 +1291,18 @@
uint8_t progressPercent;
/**
- * Signal frequency in Hertz
+ * Signal frequencies in Hertz
*/
- uint32_t frequency;
+ vec<uint32_t> frequencies;
/**
* Symbols per second
*/
- uint32_t symbolRate;
+ vec<uint32_t> symbolRates;
+
+ FrontendDvbtHierarchy hierarchy;
+
+ FrontendAnalogType analogType;
vec<uint8_t> plpIds;
@@ -1289,10 +1310,12 @@
vec<uint16_t> inputStreamIds;
- safe_union standard {
+ safe_union Standard {
FrontendDvbsStandard sStd;
FrontendDvbtStandard tStd;
+
+ FrontendAnalogSifStandard sifStd;
} std;
/**
@@ -2019,19 +2042,15 @@
};
/**
- * Index type to be used in the filter for record
+ * Start Code Index type to be used in the filter for record
*/
@export
-enum DemuxRecordIndexType : uint32_t {
+enum DemuxRecordScIndexType : uint32_t {
/**
- * Don't use index
+ * Don't use SC index
*/
NONE,
/**
- * Use TS index
- */
- TS,
- /**
* Use Start Code index
*/
SC,
@@ -2045,15 +2064,16 @@
* Filter Settings for Record data.
*/
struct DemuxFilterRecordSettings {
- DemuxRecordIndexType indexType;
+ bitfield<DemuxTsIndex> tsIndexMask;
- safe_union IndexMask {
- bitfield<DemuxTsIndex> tsIndexMask;
+ DemuxRecordScIndexType scIndexType;
- bitfield<DemuxScIndex> scIndexMask;
+ safe_union ScIndexMask {
- bitfield<DemuxScHevcIndex> scHevcIndexMask;
- } indexMask;
+ bitfield<DemuxScIndex> sc;
+
+ bitfield<DemuxScHevcIndex> scHevc;
+ } scIndexMask;
};
/**
@@ -2398,6 +2418,12 @@
uint32_t dataLength;
/**
+ * The offset in the memory block which is shared among multiple
+ * MediaEvents.
+ */
+ uint32_t offset;
+
+ /**
* A handle associated to the memory where audio or video data stays.
*/
handle avMemory;
@@ -2408,6 +2434,12 @@
bool isSecureMemory;
/**
+ * An Id is used by HAL to provide additional information for AV data.
+ * For secure audio, it's the audio handle used by Audio Track.
+ */
+ uint64_t avDataId;
+
+ /**
* MPU sequence number of filtered data (only for MMTP)
*/
uint32_t mpuSequenceNumber;
@@ -2447,16 +2479,17 @@
struct DemuxFilterTsRecordEvent {
DemuxPid pid;
+ bitfield<DemuxTsIndex> tsIndexMask;
+
/**
* Indexes of record output
*/
- safe_union IndexMask {
- bitfield<DemuxTsIndex> tsIndexMask;
+ safe_union ScIndexMask {
- bitfield<DemuxScIndex> scIndexMask;
+ bitfield<DemuxScIndex> sc;
- bitfield<DemuxScHevcIndex> scHevcIndexMask;
- } indexMask;
+ bitfield<DemuxScHevcIndex> scHevc;
+ } scIndexMask;
/**
* Byte number from beginning of the filter's output