Merge "Complete filter event classes"
This commit is contained in:
committed by
Android (Google) Code Review
commit
6151a691aa
@@ -134,6 +134,187 @@ public final class TunerConstants {
|
||||
*/
|
||||
public static final int FILTER_STATUS_OVERFLOW = Constants.DemuxFilterStatus.OVERFLOW;
|
||||
|
||||
/**
|
||||
* Indexes can be tagged through TS (Transport Stream) header.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@IntDef(flag = true, value = {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})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface TsIndex {}
|
||||
|
||||
/**
|
||||
* TS index FIRST_PACKET.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_FIRST_PACKET = Constants.DemuxTsIndex.FIRST_PACKET;
|
||||
/**
|
||||
* TS index PAYLOAD_UNIT_START_INDICATOR.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_PAYLOAD_UNIT_START_INDICATOR =
|
||||
Constants.DemuxTsIndex.PAYLOAD_UNIT_START_INDICATOR;
|
||||
/**
|
||||
* TS index CHANGE_TO_NOT_SCRAMBLED.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_CHANGE_TO_NOT_SCRAMBLED =
|
||||
Constants.DemuxTsIndex.CHANGE_TO_NOT_SCRAMBLED;
|
||||
/**
|
||||
* TS index CHANGE_TO_EVEN_SCRAMBLED.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_CHANGE_TO_EVEN_SCRAMBLED =
|
||||
Constants.DemuxTsIndex.CHANGE_TO_EVEN_SCRAMBLED;
|
||||
/**
|
||||
* TS index CHANGE_TO_ODD_SCRAMBLED.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_CHANGE_TO_ODD_SCRAMBLED =
|
||||
Constants.DemuxTsIndex.CHANGE_TO_ODD_SCRAMBLED;
|
||||
/**
|
||||
* TS index DISCONTINUITY_INDICATOR.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_DISCONTINUITY_INDICATOR =
|
||||
Constants.DemuxTsIndex.DISCONTINUITY_INDICATOR;
|
||||
/**
|
||||
* TS index RANDOM_ACCESS_INDICATOR.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_RANDOM_ACCESS_INDICATOR =
|
||||
Constants.DemuxTsIndex.RANDOM_ACCESS_INDICATOR;
|
||||
/**
|
||||
* TS index PRIORITY_INDICATOR.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_PRIORITY_INDICATOR = Constants.DemuxTsIndex.PRIORITY_INDICATOR;
|
||||
/**
|
||||
* TS index PCR_FLAG.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_PCR_FLAG = Constants.DemuxTsIndex.PCR_FLAG;
|
||||
/**
|
||||
* TS index OPCR_FLAG.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_OPCR_FLAG = Constants.DemuxTsIndex.OPCR_FLAG;
|
||||
/**
|
||||
* TS index SPLICING_POINT_FLAG.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_SPLICING_POINT_FLAG =
|
||||
Constants.DemuxTsIndex.SPLICING_POINT_FLAG;
|
||||
/**
|
||||
* TS index PRIVATE_DATA.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_PRIVATE_DATA = Constants.DemuxTsIndex.PRIVATE_DATA;
|
||||
/**
|
||||
* TS index ADAPTATION_EXTENSION_FLAG.
|
||||
* @hide
|
||||
*/
|
||||
public static final int TS_INDEX_ADAPTATION_EXTENSION_FLAG =
|
||||
Constants.DemuxTsIndex.ADAPTATION_EXTENSION_FLAG;
|
||||
|
||||
/**
|
||||
* Indexes can be tagged by Start Code in PES (Packetized Elementary Stream)
|
||||
* according to ISO/IEC 13818-1.
|
||||
* @hide
|
||||
*/
|
||||
@IntDef(flag = true, value = {SC_INDEX_I_FRAME, SC_INDEX_P_FRAME, SC_INDEX_B_FRAME,
|
||||
SC_INDEX_SEQUENCE})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface ScIndex {}
|
||||
|
||||
/**
|
||||
* SC index for a new I-frame.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_INDEX_I_FRAME = Constants.DemuxScIndex.I_FRAME;
|
||||
/**
|
||||
* SC index for a new P-frame.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_INDEX_P_FRAME = Constants.DemuxScIndex.P_FRAME;
|
||||
/**
|
||||
* SC index for a new B-frame.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_INDEX_B_FRAME = Constants.DemuxScIndex.B_FRAME;
|
||||
/**
|
||||
* SC index for a new sequence.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_INDEX_SEQUENCE = Constants.DemuxScIndex.SEQUENCE;
|
||||
|
||||
|
||||
/**
|
||||
* Indexes can be tagged by NAL unit group in HEVC according to ISO/IEC 23008-2.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@IntDef(flag = true,
|
||||
value = {SC_HEVC_INDEX_SPS, SC_HEVC_INDEX_AUD, SC_HEVC_INDEX_SLICE_CE_BLA_W_LP,
|
||||
SC_HEVC_INDEX_SLICE_BLA_W_RADL, SC_HEVC_INDEX_SLICE_BLA_N_LP,
|
||||
SC_HEVC_INDEX_SLICE_IDR_W_RADL, SC_HEVC_INDEX_SLICE_IDR_N_LP,
|
||||
SC_HEVC_INDEX_SLICE_TRAIL_CRA})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface ScHevcIndex {}
|
||||
|
||||
/**
|
||||
* SC HEVC index SPS.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_HEVC_INDEX_SPS = Constants.DemuxScHevcIndex.SPS;
|
||||
/**
|
||||
* SC HEVC index AUD.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_HEVC_INDEX_AUD = Constants.DemuxScHevcIndex.AUD;
|
||||
/**
|
||||
* SC HEVC index SLICE_CE_BLA_W_LP.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_HEVC_INDEX_SLICE_CE_BLA_W_LP =
|
||||
Constants.DemuxScHevcIndex.SLICE_CE_BLA_W_LP;
|
||||
/**
|
||||
* SC HEVC index SLICE_BLA_W_RADL.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_HEVC_INDEX_SLICE_BLA_W_RADL =
|
||||
Constants.DemuxScHevcIndex.SLICE_BLA_W_RADL;
|
||||
/**
|
||||
* SC HEVC index SLICE_BLA_N_LP.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_HEVC_INDEX_SLICE_BLA_N_LP =
|
||||
Constants.DemuxScHevcIndex.SLICE_BLA_N_LP;
|
||||
/**
|
||||
* SC HEVC index SLICE_IDR_W_RADL.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_HEVC_INDEX_SLICE_IDR_W_RADL =
|
||||
Constants.DemuxScHevcIndex.SLICE_IDR_W_RADL;
|
||||
/**
|
||||
* SC HEVC index SLICE_IDR_N_LP.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_HEVC_INDEX_SLICE_IDR_N_LP =
|
||||
Constants.DemuxScHevcIndex.SLICE_IDR_N_LP;
|
||||
/**
|
||||
* SC HEVC index SLICE_TRAIL_CRA.
|
||||
* @hide
|
||||
*/
|
||||
public static final int SC_HEVC_INDEX_SLICE_TRAIL_CRA =
|
||||
Constants.DemuxScHevcIndex.SLICE_TRAIL_CRA;
|
||||
|
||||
|
||||
/** @hide */
|
||||
@IntDef({FRONTEND_SCAN_UNDEFINED, FRONTEND_SCAN_AUTO, FRONTEND_SCAN_BLIND})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
|
||||
106
media/java/android/media/tv/tuner/filter/AudioDescriptor.java
Normal file
106
media/java/android/media/tv/tuner/filter/AudioDescriptor.java
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
* Copyright 2019 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;
|
||||
|
||||
/**
|
||||
* Meta data from AD (Audio Descriptor) according to ETSI TS 101 154 V2.1.1.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class AudioDescriptor {
|
||||
private final byte mAdFade;
|
||||
private final byte mAdPan;
|
||||
private final char mVersionTextTag;
|
||||
private final byte mAdGainCenter;
|
||||
private final byte mAdGainFront;
|
||||
private final byte mAdGainSurround;
|
||||
|
||||
// This constructor is used by JNI code only
|
||||
private AudioDescriptor(byte adFade, byte adPan, char versionTextTag, byte adGainCenter,
|
||||
byte adGainFront, byte adGainSurround) {
|
||||
mAdFade = adFade;
|
||||
mAdPan = adPan;
|
||||
mVersionTextTag = versionTextTag;
|
||||
mAdGainCenter = adGainCenter;
|
||||
mAdGainFront = adGainFront;
|
||||
mAdGainSurround = adGainSurround;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets AD fade byte.
|
||||
*
|
||||
* <p>Takes values between 0x00 (representing no fade of the main programme sound) and 0xFF
|
||||
* (representing a full fade). Over the range 0x00 to 0xFE one lsb represents a step in
|
||||
* attenuation of the programme sound of 0.3 dB giving a range of 76.2 dB. The fade value of
|
||||
* 0xFF represents no programme sound at all (i.e. mute).
|
||||
*/
|
||||
public byte getAdFade() {
|
||||
return mAdFade;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets AD pan byte.
|
||||
*
|
||||
* <p>Takes values between 0x00 representing a central forward presentation of the audio
|
||||
* description and 0xFF, each increment representing a 360/256 degree step clockwise looking
|
||||
* down on the listener (i.e. just over 1.4 degrees).
|
||||
*/
|
||||
public byte getAdPan() {
|
||||
return mAdPan;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets AD version tag. A single ASCII character version indicates the version.
|
||||
*
|
||||
* <p>A single ASCII character version designator (here "1" indicates revision 1).
|
||||
*/
|
||||
public char getVersionTextTag() {
|
||||
return mVersionTextTag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets AD gain byte center in dB.
|
||||
*
|
||||
* <p>Represents a signed value in dB. Takes values between 0x7F (representing +76.2 dB boost of
|
||||
* the main programme center) and 0x80 (representing a full fade). Over the range 0x00 to 0x7F
|
||||
* one lsb represents a step in boost of the programme center of 0.6 dB giving a maximum boost
|
||||
* of +76.2 dB. Over the range 0x81 to 0x00 one lsb represents a step in attenuation of the
|
||||
* programme center of 0.6 dB giving a maximum attenuation of -76.2 dB. The gain value of 0x80
|
||||
* represents no main center level at all (i.e. mute).
|
||||
*/
|
||||
public byte getAdGainCenter() {
|
||||
return mAdGainCenter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets AD gain byte front in dB.
|
||||
*
|
||||
* <p>Same as {@link #getAdGainCenter()}, but applied to left and right front channel.
|
||||
*/
|
||||
public byte getAdGainFront() {
|
||||
return mAdGainFront;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets AD gain byte surround in dB.
|
||||
*
|
||||
* <p>Same as {@link #getAdGainCenter()}, but applied to all surround channels
|
||||
*/
|
||||
public byte getAdGainSurround() {
|
||||
return mAdGainSurround;
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Copyright 2019 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;
|
||||
|
||||
/**
|
||||
* Extra Meta Data from AD (Audio Descriptor) according to
|
||||
* ETSI TS 101 154 V2.1.1.
|
||||
* @hide
|
||||
*/
|
||||
public class AudioExtraMetaData {
|
||||
private byte mAdFade;
|
||||
private byte mAdPan;
|
||||
private byte mVersionTextTag;
|
||||
private byte mAdGainCenter;
|
||||
private byte mAdGainFront;
|
||||
private byte mAdGainSurround;
|
||||
}
|
||||
@@ -16,15 +16,65 @@
|
||||
|
||||
package android.media.tv.tuner.filter;
|
||||
|
||||
import android.media.tv.tuner.Tuner.Filter;
|
||||
|
||||
/**
|
||||
* Download event.
|
||||
* Filter event sent from {@link Filter} objects with download type.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class DownloadEvent extends FilterEvent {
|
||||
private int mItemId;
|
||||
private int mMpuSequenceNumber;
|
||||
private int mItemFragmentIndex;
|
||||
private int mLastItemFragmentIndex;
|
||||
private int mDataLength;
|
||||
private final int mItemId;
|
||||
private final int mMpuSequenceNumber;
|
||||
private final int mItemFragmentIndex;
|
||||
private final int mLastItemFragmentIndex;
|
||||
private final int mDataLength;
|
||||
|
||||
// This constructor is used by JNI code only
|
||||
private DownloadEvent(int itemId, int mpuSequenceNumber, int itemFragmentIndex,
|
||||
int lastItemFragmentIndex, int dataLength) {
|
||||
mItemId = itemId;
|
||||
mMpuSequenceNumber = mpuSequenceNumber;
|
||||
mItemFragmentIndex = itemFragmentIndex;
|
||||
mLastItemFragmentIndex = lastItemFragmentIndex;
|
||||
mDataLength = dataLength;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets item ID.
|
||||
*/
|
||||
public int getItemId() {
|
||||
return mItemId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets MPU sequence number of filtered data.
|
||||
*/
|
||||
public int getMpuSequenceNumber() {
|
||||
return mMpuSequenceNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets current index of the current item.
|
||||
*
|
||||
* An item can be stored in different fragments.
|
||||
*/
|
||||
public int getItemFragmentIndex() {
|
||||
return mItemFragmentIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets last index of the current item.
|
||||
*/
|
||||
public int getLastItemFragmentIndex() {
|
||||
return mLastItemFragmentIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets data size in bytes of filtered data.
|
||||
*/
|
||||
public int getDataLength() {
|
||||
return mDataLength;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,10 +16,25 @@
|
||||
|
||||
package android.media.tv.tuner.filter;
|
||||
|
||||
import android.media.tv.tuner.Tuner.Filter;
|
||||
|
||||
/**
|
||||
* IP payload event.
|
||||
* Filter event sent from {@link Filter} objects with IP payload type.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class IpPayloadEvent extends FilterEvent {
|
||||
private int mDataLength;
|
||||
private final int mDataLength;
|
||||
|
||||
// This constructor is used by JNI code only
|
||||
private IpPayloadEvent(int dataLength) {
|
||||
mDataLength = dataLength;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets data size in bytes of filtered data.
|
||||
*/
|
||||
public int getDataLength() {
|
||||
return mDataLength;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,20 +16,111 @@
|
||||
|
||||
package android.media.tv.tuner.filter;
|
||||
|
||||
import android.os.NativeHandle;
|
||||
import android.annotation.Nullable;
|
||||
import android.media.tv.tuner.Tuner.Filter;
|
||||
|
||||
/**
|
||||
* Media event.
|
||||
* Filter event sent from {@link Filter} objects with media type.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class MediaEvent extends FilterEvent {
|
||||
private int mStreamId;
|
||||
private boolean mIsPtsPresent;
|
||||
private long mPts;
|
||||
private int mDataLength;
|
||||
private NativeHandle mHandle;
|
||||
private boolean mIsSecureMemory;
|
||||
private int mMpuSequenceNumber;
|
||||
private boolean mIsPrivateData;
|
||||
private AudioExtraMetaData mExtraMetaData;
|
||||
public class MediaEvent extends FilterEvent{
|
||||
private final int mStreamId;
|
||||
private final boolean mIsPtsPresent;
|
||||
private final long mPts;
|
||||
private final int mDataLength;
|
||||
private final Object mLinearBuffer;
|
||||
private final boolean mIsSecureMemory;
|
||||
private final int mMpuSequenceNumber;
|
||||
private final boolean mIsPrivateData;
|
||||
private final AudioDescriptor mExtraMetaData;
|
||||
|
||||
// This constructor is used by JNI code only
|
||||
private MediaEvent(int streamId, boolean isPtsPresent, long pts, int dataLength, Object buffer,
|
||||
boolean isSecureMemory, int mpuSequenceNumber, boolean isPrivateData,
|
||||
AudioDescriptor extraMetaData) {
|
||||
mStreamId = streamId;
|
||||
mIsPtsPresent = isPtsPresent;
|
||||
mPts = pts;
|
||||
mDataLength = dataLength;
|
||||
mLinearBuffer = buffer;
|
||||
mIsSecureMemory = isSecureMemory;
|
||||
mMpuSequenceNumber = mpuSequenceNumber;
|
||||
mIsPrivateData = isPrivateData;
|
||||
mExtraMetaData = extraMetaData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets stream ID.
|
||||
*/
|
||||
public int getStreamId() {
|
||||
return mStreamId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether PTS is present.
|
||||
*
|
||||
* @return {@code true} if PTS is present in PES header; {@code false} otherwise.
|
||||
*/
|
||||
public boolean getIsPtsPresent() {
|
||||
return mIsPtsPresent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets PTS (Presentation Time Stamp) for audio or video frame.
|
||||
*/
|
||||
public long getPts() {
|
||||
return mPts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets data size in bytes of audio or video frame.
|
||||
*/
|
||||
public int getDataLength() {
|
||||
return mDataLength;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a linear buffer associated to the memory where audio or video data stays.
|
||||
* TODO: use LinearBuffer when it's ready.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public Object getLinearBuffer() {
|
||||
return mLinearBuffer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the data is secure.
|
||||
*
|
||||
* @return {@code true} if the data is in secure area, and isn't mappable;
|
||||
* {@code false} otherwise.
|
||||
*/
|
||||
public boolean getIsSecureMemory() {
|
||||
return mIsSecureMemory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets MPU sequence number of filtered data.
|
||||
*/
|
||||
public int getMpuSequenceNumber() {
|
||||
return mMpuSequenceNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the data is private.
|
||||
*
|
||||
* @return {@code true} if the data is in private; {@code false} otherwise.
|
||||
*/
|
||||
public boolean getIsPrivateData() {
|
||||
return mIsPrivateData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets audio extra metadata.
|
||||
*/
|
||||
@Nullable
|
||||
public AudioDescriptor getExtraMetaData() {
|
||||
return mExtraMetaData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,11 +16,34 @@
|
||||
|
||||
package android.media.tv.tuner.filter;
|
||||
|
||||
import android.media.tv.tuner.Tuner.Filter;
|
||||
|
||||
/**
|
||||
* MMPT record event.
|
||||
* Filter event sent from {@link Filter} objects with MMTP type.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class MmtpRecordEvent extends FilterEvent {
|
||||
private int mScHevcIndexMask;
|
||||
private long mByteNumber;
|
||||
private final int mScHevcIndexMask;
|
||||
private final long mByteNumber;
|
||||
|
||||
// This constructor is used by JNI code only
|
||||
private MmtpRecordEvent(int scHevcIndexMask, long byteNumber) {
|
||||
mScHevcIndexMask = scHevcIndexMask;
|
||||
mByteNumber = byteNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets indexes which can be tagged by NAL unit group in HEVC according to ISO/IEC 23008-2.
|
||||
*/
|
||||
public int getScHevcIndexMask() {
|
||||
return mScHevcIndexMask;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the byte number from beginning of the filter's output.
|
||||
*/
|
||||
public long getByteNumber() {
|
||||
return mByteNumber;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,43 @@
|
||||
|
||||
package android.media.tv.tuner.filter;
|
||||
|
||||
import android.media.tv.tuner.Tuner.Filter;
|
||||
|
||||
/**
|
||||
* PES event.
|
||||
* Filter event sent from {@link Filter} objects with PES type.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class PesEvent extends FilterEvent {
|
||||
private int mStreamId;
|
||||
private int mDataLength;
|
||||
private int mMpuSequenceNumber;
|
||||
private final int mStreamId;
|
||||
private final int mDataLength;
|
||||
private final int mMpuSequenceNumber;
|
||||
|
||||
// This constructor is used by JNI code only
|
||||
private PesEvent(int streamId, int dataLength, int mpuSequenceNumber) {
|
||||
mStreamId = streamId;
|
||||
mDataLength = dataLength;
|
||||
mMpuSequenceNumber = mpuSequenceNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets stream ID.
|
||||
*/
|
||||
public int getStreamId() {
|
||||
return mStreamId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets data size in bytes of filtered data.
|
||||
*/
|
||||
public int getDataLength() {
|
||||
return mDataLength;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets MPU sequence number of filtered data.
|
||||
*/
|
||||
public int getMpuSequenceNumber() {
|
||||
return mMpuSequenceNumber;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,46 @@
|
||||
|
||||
package android.media.tv.tuner.filter;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.media.tv.tuner.Tuner.Filter;
|
||||
|
||||
/**
|
||||
* TEMI event.
|
||||
* Filter event sent from {@link Filter} objects for Timed External Media Information (TEMI) data.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class TemiEvent extends FilterEvent {
|
||||
private long mPts;
|
||||
private byte mDescrTag;
|
||||
private byte[] mDescrData;
|
||||
private final long mPts;
|
||||
private final byte mDescrTag;
|
||||
private final byte[] mDescrData;
|
||||
|
||||
// This constructor is used by JNI code only
|
||||
private TemiEvent(long pts, byte descrTag, byte[] descrData) {
|
||||
mPts = pts;
|
||||
mDescrTag = descrTag;
|
||||
mDescrData = descrData;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Gets PTS (Presentation Time Stamp) for audio or video frame.
|
||||
*/
|
||||
public long getPts() {
|
||||
return mPts;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets TEMI descriptor tag.
|
||||
*/
|
||||
public byte getDescriptorTag() {
|
||||
return mDescrTag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets TEMI descriptor.
|
||||
*/
|
||||
@NonNull
|
||||
public byte[] getDescriptorData() {
|
||||
return mDescrData;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,12 +16,84 @@
|
||||
|
||||
package android.media.tv.tuner.filter;
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.media.tv.tuner.Tuner.Filter;
|
||||
import android.media.tv.tuner.TunerConstants;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
/**
|
||||
* TS record event.
|
||||
* Filter event sent from {@link Filter} objects for TS record data.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public class TsRecordEvent extends FilterEvent {
|
||||
private int mTpid;
|
||||
private int mIndexMask;
|
||||
private long mByteNumber;
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@IntDef(flag = true, value = {
|
||||
TunerConstants.TS_INDEX_FIRST_PACKET,
|
||||
TunerConstants.TS_INDEX_PAYLOAD_UNIT_START_INDICATOR,
|
||||
TunerConstants.TS_INDEX_CHANGE_TO_NOT_SCRAMBLED,
|
||||
TunerConstants.TS_INDEX_CHANGE_TO_EVEN_SCRAMBLED,
|
||||
TunerConstants.TS_INDEX_CHANGE_TO_ODD_SCRAMBLED,
|
||||
TunerConstants.TS_INDEX_DISCONTINUITY_INDICATOR,
|
||||
TunerConstants.TS_INDEX_RANDOM_ACCESS_INDICATOR,
|
||||
TunerConstants.TS_INDEX_PRIORITY_INDICATOR,
|
||||
TunerConstants.TS_INDEX_PCR_FLAG,
|
||||
TunerConstants.TS_INDEX_OPCR_FLAG,
|
||||
TunerConstants.TS_INDEX_SPLICING_POINT_FLAG,
|
||||
TunerConstants.TS_INDEX_PRIVATE_DATA,
|
||||
TunerConstants.TS_INDEX_ADAPTATION_EXTENSION_FLAG,
|
||||
TunerConstants.SC_INDEX_I_FRAME,
|
||||
TunerConstants.SC_INDEX_P_FRAME,
|
||||
TunerConstants.SC_INDEX_B_FRAME,
|
||||
TunerConstants.SC_INDEX_SEQUENCE,
|
||||
TunerConstants.SC_HEVC_INDEX_SPS,
|
||||
TunerConstants.SC_HEVC_INDEX_AUD,
|
||||
TunerConstants.SC_HEVC_INDEX_SLICE_CE_BLA_W_LP,
|
||||
TunerConstants.SC_HEVC_INDEX_SLICE_BLA_W_RADL,
|
||||
TunerConstants.SC_HEVC_INDEX_SLICE_BLA_N_LP,
|
||||
TunerConstants.SC_HEVC_INDEX_SLICE_IDR_W_RADL,
|
||||
TunerConstants.SC_HEVC_INDEX_SLICE_IDR_N_LP,
|
||||
TunerConstants.SC_HEVC_INDEX_SLICE_TRAIL_CRA,
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface IndexMask {}
|
||||
|
||||
private final int mPid;
|
||||
private final int mIndexMask;
|
||||
private final long mByteNumber;
|
||||
|
||||
// This constructor is used by JNI code only
|
||||
private TsRecordEvent(int pid, int indexMask, long byteNumber) {
|
||||
mPid = pid;
|
||||
mIndexMask = indexMask;
|
||||
mByteNumber = byteNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets packet ID.
|
||||
*/
|
||||
public int getTpid() {
|
||||
return mPid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets index mask.
|
||||
*
|
||||
* <p>The index type is one of TS, SC, and SC-HEVC, and is set when configuring the filter.
|
||||
*/
|
||||
@IndexMask
|
||||
public int getIndexMask() {
|
||||
return mIndexMask;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the byte number from beginning of the filter's output.
|
||||
*/
|
||||
public long getByteNumber() {
|
||||
return mByteNumber;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user