Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 220e0256 authored by Amy Zhang's avatar Amy Zhang Committed by Android (Google) Code Review
Browse files

Merge "Get the offset of recorded keyframe from MMTP Packet Table in MmtpRecordEvent"

parents 5e9578fa b1328319
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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
+7 −0
Original line number Diff line number Diff line
@@ -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
+17 −2
Original line number Diff line number Diff line
@@ -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;
    }
}
+35 −3
Original line number Diff line number Diff line
@@ -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)
+3 −1
Original line number Diff line number Diff line
@@ -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;