Merge "Get the offset of recorded keyframe from MMTP Packet Table in MmtpRecordEvent"
This commit is contained in:
@@ -5408,6 +5408,7 @@ package android.media.tv.tuner.filter {
|
||||
method public int getMpuSequenceNumber();
|
||||
method public long getPts();
|
||||
method public int getScHevcIndexMask();
|
||||
method public int getTsIndexMask();
|
||||
}
|
||||
|
||||
public class PesEvent extends android.media.tv.tuner.filter.FilterEvent {
|
||||
@@ -5436,6 +5437,11 @@ package android.media.tv.tuner.filter {
|
||||
field public static final int INDEX_TYPE_NONE = 0; // 0x0
|
||||
field public static final int INDEX_TYPE_SC = 1; // 0x1
|
||||
field public static final int INDEX_TYPE_SC_HEVC = 2; // 0x2
|
||||
field public static final int MPT_INDEX_AUDIO = 262144; // 0x40000
|
||||
field public static final int MPT_INDEX_MPT = 65536; // 0x10000
|
||||
field public static final int MPT_INDEX_TIMESTAMP_TARGET_AUDIO = 1048576; // 0x100000
|
||||
field public static final int MPT_INDEX_TIMESTAMP_TARGET_VIDEO = 524288; // 0x80000
|
||||
field public static final int MPT_INDEX_VIDEO = 131072; // 0x20000
|
||||
field public static final int SC_HEVC_INDEX_AUD = 2; // 0x2
|
||||
field public static final int SC_HEVC_INDEX_SLICE_BLA_N_LP = 16; // 0x10
|
||||
field public static final int SC_HEVC_INDEX_SLICE_BLA_W_RADL = 8; // 0x8
|
||||
@@ -5459,6 +5465,7 @@ package android.media.tv.tuner.filter {
|
||||
field public static final int TS_INDEX_CHANGE_TO_ODD_SCRAMBLED = 16; // 0x10
|
||||
field public static final int TS_INDEX_DISCONTINUITY_INDICATOR = 32; // 0x20
|
||||
field public static final int TS_INDEX_FIRST_PACKET = 1; // 0x1
|
||||
field public static final int TS_INDEX_INVALID = 0; // 0x0
|
||||
field public static final int TS_INDEX_OPCR_FLAG = 512; // 0x200
|
||||
field public static final int TS_INDEX_PAYLOAD_UNIT_START_INDICATOR = 2; // 0x2
|
||||
field public static final int TS_INDEX_PCR_FLAG = 256; // 0x100
|
||||
|
||||
@@ -5348,6 +5348,7 @@ package android.media.tv.tuner.filter {
|
||||
method public int getMpuSequenceNumber();
|
||||
method public long getPts();
|
||||
method public int getScHevcIndexMask();
|
||||
method public int getTsIndexMask();
|
||||
}
|
||||
|
||||
public class PesEvent extends android.media.tv.tuner.filter.FilterEvent {
|
||||
@@ -5376,6 +5377,11 @@ package android.media.tv.tuner.filter {
|
||||
field public static final int INDEX_TYPE_NONE = 0; // 0x0
|
||||
field public static final int INDEX_TYPE_SC = 1; // 0x1
|
||||
field public static final int INDEX_TYPE_SC_HEVC = 2; // 0x2
|
||||
field public static final int MPT_INDEX_AUDIO = 262144; // 0x40000
|
||||
field public static final int MPT_INDEX_MPT = 65536; // 0x10000
|
||||
field public static final int MPT_INDEX_TIMESTAMP_TARGET_AUDIO = 1048576; // 0x100000
|
||||
field public static final int MPT_INDEX_TIMESTAMP_TARGET_VIDEO = 524288; // 0x80000
|
||||
field public static final int MPT_INDEX_VIDEO = 131072; // 0x20000
|
||||
field public static final int SC_HEVC_INDEX_AUD = 2; // 0x2
|
||||
field public static final int SC_HEVC_INDEX_SLICE_BLA_N_LP = 16; // 0x10
|
||||
field public static final int SC_HEVC_INDEX_SLICE_BLA_W_RADL = 8; // 0x8
|
||||
@@ -5399,6 +5405,7 @@ package android.media.tv.tuner.filter {
|
||||
field public static final int TS_INDEX_CHANGE_TO_ODD_SCRAMBLED = 16; // 0x10
|
||||
field public static final int TS_INDEX_DISCONTINUITY_INDICATOR = 32; // 0x20
|
||||
field public static final int TS_INDEX_FIRST_PACKET = 1; // 0x1
|
||||
field public static final int TS_INDEX_INVALID = 0; // 0x0
|
||||
field public static final int TS_INDEX_OPCR_FLAG = 512; // 0x200
|
||||
field public static final int TS_INDEX_PAYLOAD_UNIT_START_INDICATOR = 2; // 0x2
|
||||
field public static final int TS_INDEX_PCR_FLAG = 256; // 0x100
|
||||
|
||||
@@ -21,7 +21,7 @@ import android.annotation.SystemApi;
|
||||
import android.media.tv.tuner.filter.RecordSettings.ScHevcIndex;
|
||||
|
||||
/**
|
||||
* Filter event sent from {@link Filter} objects with MMTP type.
|
||||
* Filter event sent from {@link Filter} objects with MPEG media Transport Protocol(MMTP) type.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@@ -32,15 +32,17 @@ public class MmtpRecordEvent extends FilterEvent {
|
||||
private final int mMpuSequenceNumber;
|
||||
private final long mPts;
|
||||
private final int mFirstMbInSlice;
|
||||
private final int mTsIndexMask;
|
||||
|
||||
// This constructor is used by JNI code only
|
||||
private MmtpRecordEvent(int scHevcIndexMask, long dataLength, int mpuSequenceNumber, long pts,
|
||||
int firstMbInSlice) {
|
||||
int firstMbInSlice, int tsIndexMask) {
|
||||
mScHevcIndexMask = scHevcIndexMask;
|
||||
mDataLength = dataLength;
|
||||
mMpuSequenceNumber = mpuSequenceNumber;
|
||||
mPts = pts;
|
||||
mFirstMbInSlice = firstMbInSlice;
|
||||
mTsIndexMask = tsIndexMask;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -95,4 +97,17 @@ public class MmtpRecordEvent extends FilterEvent {
|
||||
public int getFirstMbInSlice() {
|
||||
return mFirstMbInSlice;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the offset of the recorded keyframe from MMT Packet Table.
|
||||
*
|
||||
* <p>This field is only supported in Tuner 1.1 or higher version. Unsupported version will
|
||||
* return {@link RecordSettings.TS_INDEX_INVALID}. Use
|
||||
* {@link android.media.tv.tuner.TunerVersionChecker.getTunerVersion()} to get the
|
||||
* version information.
|
||||
*/
|
||||
@RecordSettings.TsIndexMask
|
||||
public int getTsIndexMask() {
|
||||
return mTsIndexMask;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,16 +38,22 @@ public class RecordSettings extends Settings {
|
||||
* @hide
|
||||
*/
|
||||
@IntDef(flag = true,
|
||||
prefix = "TS_INDEX_",
|
||||
value = {TS_INDEX_FIRST_PACKET, TS_INDEX_PAYLOAD_UNIT_START_INDICATOR,
|
||||
value = {TS_INDEX_INVALID, TS_INDEX_FIRST_PACKET, TS_INDEX_PAYLOAD_UNIT_START_INDICATOR,
|
||||
TS_INDEX_CHANGE_TO_NOT_SCRAMBLED, TS_INDEX_CHANGE_TO_EVEN_SCRAMBLED,
|
||||
TS_INDEX_CHANGE_TO_ODD_SCRAMBLED, TS_INDEX_DISCONTINUITY_INDICATOR,
|
||||
TS_INDEX_RANDOM_ACCESS_INDICATOR, TS_INDEX_PRIORITY_INDICATOR,
|
||||
TS_INDEX_PCR_FLAG, TS_INDEX_OPCR_FLAG, TS_INDEX_SPLICING_POINT_FLAG,
|
||||
TS_INDEX_PRIVATE_DATA, TS_INDEX_ADAPTATION_EXTENSION_FLAG})
|
||||
TS_INDEX_PRIVATE_DATA, TS_INDEX_ADAPTATION_EXTENSION_FLAG,
|
||||
MPT_INDEX_MPT, MPT_INDEX_VIDEO, MPT_INDEX_AUDIO,
|
||||
MPT_INDEX_TIMESTAMP_TARGET_VIDEO,
|
||||
MPT_INDEX_TIMESTAMP_TARGET_AUDIO})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface TsIndexMask {}
|
||||
|
||||
/**
|
||||
* Invalid TS index.
|
||||
*/
|
||||
public static final int TS_INDEX_INVALID = 0;
|
||||
/**
|
||||
* TS index FIRST_PACKET.
|
||||
*/
|
||||
@@ -108,6 +114,32 @@ public class RecordSettings extends Settings {
|
||||
*/
|
||||
public static final int TS_INDEX_ADAPTATION_EXTENSION_FLAG =
|
||||
Constants.DemuxTsIndex.ADAPTATION_EXTENSION_FLAG;
|
||||
/**
|
||||
* Index the address of MPEG Media Transport Packet Table(MPT).
|
||||
*/
|
||||
public static final int MPT_INDEX_MPT =
|
||||
android.hardware.tv.tuner.V1_1.Constants.DemuxTsIndex.MPT_INDEX_MPT;
|
||||
/**
|
||||
* Index the address of Video.
|
||||
*/
|
||||
public static final int MPT_INDEX_VIDEO =
|
||||
android.hardware.tv.tuner.V1_1.Constants.DemuxTsIndex.MPT_INDEX_VIDEO;
|
||||
/**
|
||||
* Index the address of Audio.
|
||||
*/
|
||||
public static final int MPT_INDEX_AUDIO =
|
||||
android.hardware.tv.tuner.V1_1.Constants.DemuxTsIndex.MPT_INDEX_AUDIO;
|
||||
/**
|
||||
* Index to indicate this is a target of timestamp extraction for video.
|
||||
*/
|
||||
public static final int MPT_INDEX_TIMESTAMP_TARGET_VIDEO =
|
||||
android.hardware.tv.tuner.V1_1.Constants.DemuxTsIndex.MPT_INDEX_TIMESTAMP_TARGET_VIDEO;
|
||||
/**
|
||||
* Index to indicate this is a target of timestamp extraction for audio.
|
||||
*/
|
||||
public static final int MPT_INDEX_TIMESTAMP_TARGET_AUDIO =
|
||||
android.hardware.tv.tuner.V1_1.Constants.DemuxTsIndex.MPT_INDEX_TIMESTAMP_TARGET_AUDIO;
|
||||
|
||||
|
||||
/** @hide */
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
|
||||
@@ -640,10 +640,12 @@ jobjectArray FilterCallback::getMmtpRecordEvent(
|
||||
jlong firstMbInSlice = (eventsExt.size() > i)
|
||||
? static_cast<jint>(eventsExt[i].mmtpRecord().firstMbInSlice)
|
||||
: static_cast<jint>(Constant::INVALID_FIRST_MACROBLOCK_IN_SLICE);
|
||||
jlong tsIndexMask = (eventsExt.size() > i)
|
||||
? static_cast<jint>(eventsExt[i].mmtpRecord().tsIndexMask) : 0;
|
||||
|
||||
jobject obj =
|
||||
env->NewObject(eventClazz, eventInit, scHevcIndexMask, byteNumber,
|
||||
mpuSequenceNumber, pts, firstMbInSlice);
|
||||
mpuSequenceNumber, pts, firstMbInSlice, tsIndexMask);
|
||||
env->SetObjectArrayElement(arr, i, obj);
|
||||
}
|
||||
return arr;
|
||||
|
||||
Reference in New Issue
Block a user