Merge "Get offset of recorded keyframe from MTP table"
diff --git a/tv/tuner/1.1/default/Filter.cpp b/tv/tuner/1.1/default/Filter.cpp
index 4c37729..139e98a 100644
--- a/tv/tuner/1.1/default/Filter.cpp
+++ b/tv/tuner/1.1/default/Filter.cpp
@@ -209,6 +209,7 @@
if (mSharedAvMemHandle.getNativeHandle() != nullptr) {
_hidl_cb(Result::SUCCESS, mSharedAvMemHandle, BUFFER_SIZE_16M);
+ mUsingSharedAvMem = true;
return Void();
}
@@ -225,6 +226,7 @@
::close(av_fd);
_hidl_cb(Result::SUCCESS, mSharedAvMemHandle, BUFFER_SIZE_16M);
+ mUsingSharedAvMem = true;
return Void();
}
@@ -678,11 +680,10 @@
recordEvent = {
.byteNumber = mRecordFilterOutput.size(),
};
- V1_1::DemuxFilterRecordEventExt recordEventExt;
+ V1_1::DemuxFilterTsRecordEventExt recordEventExt;
recordEventExt = {
.pts = (mPts == 0) ? time(NULL) * 900000 : mPts,
.firstMbInSlice = 0, // random address
- .mpuSequenceNumber = 1, // random sequence number
};
int size;
diff --git a/tv/tuner/1.1/default/Filter.h b/tv/tuner/1.1/default/Filter.h
index 522db35..a7b3fd2 100644
--- a/tv/tuner/1.1/default/Filter.h
+++ b/tv/tuner/1.1/default/Filter.h
@@ -227,7 +227,7 @@
// Shared A/V memory handle
hidl_handle mSharedAvMemHandle;
- bool mUsingSharedAvMem = true;
+ bool mUsingSharedAvMem = false;
uint32_t mSharedAvMemOffset = 0;
uint32_t mAudioStreamType;
diff --git a/tv/tuner/1.1/types.hal b/tv/tuner/1.1/types.hal
index 3ff795a..006e597 100644
--- a/tv/tuner/1.1/types.hal
+++ b/tv/tuner/1.1/types.hal
@@ -20,6 +20,7 @@
import @1.0::DemuxFilterMmtpRecordEvent;
import @1.0::DemuxFilterTsRecordEvent;
import @1.0::DemuxScIndex;
+import @1.0::DemuxTsIndex;
import @1.0::FrontendIsdbs3Rolloff;
import @1.0::FrontendAtsc3Bandwidth;
import @1.0::FrontendAtsc3Modulation;
@@ -51,11 +52,11 @@
@export
enum Constant : @1.0::Constant {
/**
- * An invalid mpuSequenceNumber in DemuxFilterRecordEventExt.
+ * An invalid mpuSequenceNumber.
*/
INVALID_MMTP_RECORD_EVENT_MPT_SEQUENCE_NUM = 0xFFFFFFFF,
/**
- * An invalid first macroblock address in DemuxFilterRecordEventExt.
+ * An invalid first macroblock address.
*/
INVALID_FIRST_MACROBLOCK_IN_SLICE = 0xFFFFFFFF,
/**
@@ -103,9 +104,25 @@
};
/**
- * Extended Demux Filter Record Event.
+ * Extended Demux Filter TS Record Event.
*/
-struct DemuxFilterRecordEventExt {
+struct DemuxFilterTsRecordEventExt {
+ /**
+ * The Presentation Time Stamp(PTS) for the audio or video frame. It is based on 90KHz
+ * and has the same format as the PTS in ISO/IEC 13818-1.
+ */
+ uint64_t pts;
+
+ /**
+ * Specifies the address of the first macroblock in the slice defined in ITU-T Rec. H.264.
+ */
+ uint32_t firstMbInSlice;
+};
+
+/**
+ * Extended Demux Filter MMTP Record Event.
+ */
+struct DemuxFilterMmtpRecordEventExt {
/**
* The Presentation Time Stamp(PTS) for the audio or video frame. It is based on 90KHz
* and has the same format as the PTS in ISO/IEC 13818-1.
@@ -121,6 +138,11 @@
* Specifies the address of the first macroblock in the slice defined in ITU-T Rec. H.264.
*/
uint32_t firstMbInSlice;
+
+ /**
+ * TS index mask.
+ */
+ bitfield<@1.1::DemuxTsIndex> tsIndexMask;
};
/**
@@ -130,13 +152,13 @@
safe_union Event {
/**
* No extended record filter Event. This is used by the tsRecord or mmtpRecord filter event
- * that does not contain the DemuxFilterRecordEventExt information.
+ * that does not contain the DemuxFilterTs/MmtpRecordEventExt information.
*/
Monostate noinit;
- DemuxFilterRecordEventExt tsRecord;
+ DemuxFilterTsRecordEventExt tsRecord;
- DemuxFilterRecordEventExt mmtpRecord;
+ DemuxFilterMmtpRecordEventExt mmtpRecord;
ScramblingStatus scramblingStatus;
};
@@ -828,3 +850,27 @@
*/
SP_SLICE = 1 << 8,
};
+
+@export
+enum DemuxTsIndex : @1.0::DemuxTsIndex {
+ /**
+ * Index the address of MMT Packet Table(MPT).
+ */
+ MPT_INDEX_MPT = 1 << 16,
+ /**
+ * Index the address of Video.
+ */
+ MPT_INDEX_VIDEO = 1 << 17,
+ /**
+ * Index the address of Audio.
+ */
+ MPT_INDEX_AUDIO = 1 << 18,
+ /**
+ * Index to indicate this is a target of timestamp extraction for video.
+ */
+ MPT_INDEX_TIMESTAMP_TARGET_VIDEO = 1 << 19,
+ /**
+ * Index to indicate this is a target of timestamp extraction for audio.
+ */
+ MPT_INDEX_TIMESTAMP_TARGET_AUDIO = 1 << 20,
+};
diff --git a/tv/tuner/1.1/vts/functional/FilterTests.cpp b/tv/tuner/1.1/vts/functional/FilterTests.cpp
index f114a66..d2535e5 100644
--- a/tv/tuner/1.1/vts/functional/FilterTests.cpp
+++ b/tv/tuner/1.1/vts/functional/FilterTests.cpp
@@ -64,9 +64,9 @@
break;
case DemuxFilterEventExt::Event::hidl_discriminator::mmtpRecord:
ALOGD("[vts] Extended MMTP record filter event, pts=%" PRIu64
- ", firstMbInSlice=%d, mpuSequenceNumber=%d",
+ ", firstMbInSlice=%d, mpuSequenceNumber=%d, tsIndexMask=%d",
eventExt.mmtpRecord().pts, eventExt.mmtpRecord().firstMbInSlice,
- eventExt.mmtpRecord().mpuSequenceNumber);
+ eventExt.mmtpRecord().mpuSequenceNumber, eventExt.mmtpRecord().tsIndexMask);
break;
case DemuxFilterEventExt::Event::hidl_discriminator::scramblingStatus:
mScramblingStatusEvent++;