Final cleanup: Add missing fields in SectionSettings and DemuxCaps

Test: make;
Bug: 139308734
Change-Id: Ie3f37f9c4b47144bc664ebff2ab685feb21eb033
This commit is contained in:
shubang
2020-01-21 04:28:39 -08:00
committed by Shubang Lu
parent ba5a535640
commit 3ca5656c33
9 changed files with 148 additions and 18 deletions

View File

@@ -4719,6 +4719,7 @@ package android.media.tv.tuner {
method public long getSectionFilterLength();
method public int getTsFilterCount();
method public int getVideoFilterCount();
method public boolean isTimeFilterSupported();
}
public class Descrambler implements java.lang.AutoCloseable {
@@ -4764,7 +4765,7 @@ package android.media.tv.tuner {
public class Tuner implements java.lang.AutoCloseable {
ctor @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public Tuner(@NonNull android.content.Context, @NonNull String, int, @Nullable android.media.tv.tuner.Tuner.OnResourceLostListener);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void clearOnTuneEventListener();
method public void close();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void close();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int connectCiCam(int);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int disconnectCiCam();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int getAvSyncHwId(@NonNull android.media.tv.tuner.filter.Filter);
@@ -4782,10 +4783,11 @@ package android.media.tv.tuner {
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int scan(@NonNull android.media.tv.tuner.frontend.FrontendSettings, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.ScanCallback);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int setLna(boolean);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void setOnTuneEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.OnTuneEventListener);
method public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int stopScan();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int stopTune();
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int tune(@NonNull android.media.tv.tuner.frontend.FrontendSettings);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void updateResourcePriority(int, int);
}
public static interface Tuner.OnResourceLostListener {
@@ -5104,7 +5106,16 @@ package android.media.tv.tuner.filter {
method public int getVersion();
}
public class SectionSettings extends android.media.tv.tuner.filter.Settings {
public abstract class SectionSettings extends android.media.tv.tuner.filter.Settings {
method public boolean isCrcEnabled();
method public boolean isRaw();
method public boolean isRepeat();
}
public abstract static class SectionSettings.Builder<T extends android.media.tv.tuner.filter.SectionSettings.Builder<T>> extends android.media.tv.tuner.filter.Settings.Builder<android.media.tv.tuner.filter.SectionSettings.Builder<T>> {
method @NonNull public T setCrcEnabled(boolean);
method @NonNull public T setRaw(boolean);
method @NonNull public T setRepeat(boolean);
}
public class SectionSettingsWithSectionBits extends android.media.tv.tuner.filter.SectionSettings {
@@ -5114,7 +5125,7 @@ package android.media.tv.tuner.filter {
method @NonNull public byte[] getMode();
}
public static class SectionSettingsWithSectionBits.Builder extends android.media.tv.tuner.filter.Settings.Builder<android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder> {
public static class SectionSettingsWithSectionBits.Builder extends android.media.tv.tuner.filter.SectionSettings.Builder<android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder> {
method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits build();
method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setFilter(@NonNull byte[]);
method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithSectionBits.Builder setMask(@NonNull byte[]);
@@ -5127,7 +5138,7 @@ package android.media.tv.tuner.filter {
method public int getVersion();
}
public static class SectionSettingsWithTableInfo.Builder extends android.media.tv.tuner.filter.Settings.Builder<android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder> {
public static class SectionSettingsWithTableInfo.Builder extends android.media.tv.tuner.filter.SectionSettings.Builder<android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder> {
method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo build();
method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder setTableId(int);
method @NonNull public android.media.tv.tuner.filter.SectionSettingsWithTableInfo.Builder setVersion(int);
@@ -5165,7 +5176,7 @@ package android.media.tv.tuner.filter {
public static class TlvFilterConfiguration.Builder extends android.media.tv.tuner.filter.FilterConfiguration.Builder<android.media.tv.tuner.filter.TlvFilterConfiguration.Builder> {
method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration build();
method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setIsCompressedIpPacket(boolean);
method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setCompressedIpPacket(boolean);
method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setPacketType(int);
method @NonNull public android.media.tv.tuner.filter.TlvFilterConfiguration.Builder setPassthrough(boolean);
}

View File

@@ -58,11 +58,13 @@ public class DemuxCapabilities {
private final long mSectionFilterLength;
private final int mFilterCaps;
private final int[] mLinkCaps;
private final boolean mSupportTimeFilter;
// Used by JNI
private DemuxCapabilities(int demuxCount, int recordCount, int playbackCount, int tsFilterCount,
int sectionFilterCount, int audioFilterCount, int videoFilterCount, int pesFilterCount,
int pcrFilterCount, long sectionFilterLength, int filterCaps, int[] linkCaps) {
int pcrFilterCount, long sectionFilterLength, int filterCaps, int[] linkCaps,
boolean timeFilter) {
mDemuxCount = demuxCount;
mRecordCount = recordCount;
mPlaybackCount = playbackCount;
@@ -75,6 +77,7 @@ public class DemuxCapabilities {
mSectionFilterLength = sectionFilterLength;
mFilterCaps = filterCaps;
mLinkCaps = linkCaps;
mSupportTimeFilter = timeFilter;
}
/**
@@ -161,4 +164,10 @@ public class DemuxCapabilities {
public int[] getLinkCapabilities() {
return mLinkCaps;
}
/**
* Is {@link android.media.tv.tuner.filter.TimeFilter} supported.
*/
public boolean isTimeFilterSupported() {
return mSupportTimeFilter;
}
}

View File

@@ -105,16 +105,33 @@ public class Tuner implements AutoCloseable {
*
* @param tuner the Tuner instance to share frontend resource with.
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
public void shareFrontendFromTuner(@NonNull Tuner tuner) {
// TODO: implementation.
}
/**
* Updates client priority with an arbitrary value along with a nice value.
*
* <p>Tuner resource manager (TRM) uses the client priority value to decide whether it is able
* to reclaim insufficient resources from another client.
* <p>The nice value represents how much the client intends to give up the resource when an
* insufficient resource situation happens.
*
* @param priority the new priority.
* @param niceValue the nice value.
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
public void updateResourcePriority(int priority, int niceValue) {
// TODO: implementation.
}
private long mNativeContext; // used by native jMediaTuner
/**
* Releases the Tuner instance.
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
@Override
public void close() {
// TODO: implementation.

View File

@@ -124,6 +124,20 @@ public class MediaEvent extends FilterEvent{
return mDataId;
}
/**
* Reserves the ID which is used by HAL to provide additional information for AV data.
*
* <p>The corresponding data is used and released by {@link android.media.AudioTrack}.
* <p>The data is also released when the {@link Filter} instance is closed.
*
* @return the reserved AV data ID.
* @hide
*/
public long reserveAvDataId() {
// TODO: implement
return mDataId;
}
/**
* Gets MPU sequence number of filtered data.
*/

View File

@@ -18,6 +18,7 @@ package android.media.tv.tuner.filter;
import android.annotation.BytesLong;
import android.annotation.SystemApi;
import android.media.tv.tuner.filter.RecordSettings.ScHevcIndex;
/**
* Filter event sent from {@link Filter} objects with MMTP type.
@@ -38,6 +39,7 @@ public class MmtpRecordEvent extends FilterEvent {
/**
* Gets indexes which can be tagged by NAL unit group in HEVC according to ISO/IEC 23008-2.
*/
@ScHevcIndex
public int getScHevcIndexMask() {
return mScHevcIndexMask;
}

View File

@@ -16,6 +16,7 @@
package android.media.tv.tuner.filter;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.media.tv.tuner.TunerUtils;
@@ -25,9 +26,81 @@ import android.media.tv.tuner.TunerUtils;
* @hide
*/
@SystemApi
public class SectionSettings extends Settings {
public abstract class SectionSettings extends Settings {
final boolean mCrcEnabled;
final boolean mIsRepeat;
final boolean mIsRaw;
SectionSettings(int mainType) {
SectionSettings(int mainType, boolean crcEnabled, boolean isRepeat, boolean isRaw) {
super(TunerUtils.getFilterSubtype(mainType, Filter.SUBTYPE_SECTION));
mCrcEnabled = crcEnabled;
mIsRepeat = isRepeat;
mIsRaw = isRaw;
}
/**
* Returns whether the filter enables CRC (Cyclic redundancy check) and discards data which
* doesn't pass the check.
*/
public boolean isCrcEnabled() {
return mCrcEnabled;
}
/**
* Returns whether the filter repeats the data with the same version.
*/
public boolean isRepeat() {
return mIsRepeat;
}
/**
* Returns whether the filter sends {@link FilterCallback#onFilterStatusChanged} instead of
* {@link FilterCallback#onFilterEvent}.
*/
public boolean isRaw() {
return mIsRaw;
}
/**
* Builder for {@link SectionSettings}.
*
* @param <T> The subclass to be built.
*/
public abstract static class Builder<T extends Builder<T>>
extends Settings.Builder<Builder<T>> {
boolean mCrcEnabled;
boolean mIsRepeat;
boolean mIsRaw;
Builder(int mainType) {
super(mainType);
}
/**
* Sets whether the filter enables CRC (Cyclic redundancy check) and discards data which
* doesn't pass the check.
*/
@NonNull
public T setCrcEnabled(boolean crcEnabled) {
mCrcEnabled = crcEnabled;
return self();
}
/**
* Sets whether the filter repeats the data with the same version.
*/
@NonNull
public T setRepeat(boolean isRepeat) {
mIsRepeat = isRepeat;
return self();
}
/**
* Sets whether the filter send onFilterStatus instead of
* {@link FilterCallback#onFilterEvent}.
*/
@NonNull
public T setRaw(boolean isRaw) {
mIsRaw = isRaw;
return self();
}
/* package */ abstract T self();
}
}

View File

@@ -34,8 +34,9 @@ public class SectionSettingsWithSectionBits extends SectionSettings {
private final byte[] mMode;
private SectionSettingsWithSectionBits(int mainType, byte[] filter, byte[] mask, byte[] mode) {
super(mainType);
private SectionSettingsWithSectionBits(int mainType, boolean isCheckCrc, boolean isRepeat,
boolean isRaw, byte[] filter, byte[] mask, byte[] mode) {
super(mainType, isCheckCrc, isRepeat, isRaw);
mFilter = filter;
mMask = mask;
mMode = mode;
@@ -86,7 +87,7 @@ public class SectionSettingsWithSectionBits extends SectionSettings {
/**
* Builder for {@link SectionSettingsWithSectionBits}.
*/
public static class Builder extends Settings.Builder<Builder> {
public static class Builder extends SectionSettings.Builder<Builder> {
private byte[] mFilter;
private byte[] mMask;
private byte[] mMode;
@@ -125,7 +126,8 @@ public class SectionSettingsWithSectionBits extends SectionSettings {
*/
@NonNull
public SectionSettingsWithSectionBits build() {
return new SectionSettingsWithSectionBits(mMainType, mFilter, mMask, mMode);
return new SectionSettingsWithSectionBits(
mMainType, mCrcEnabled, mIsRepeat, mIsRaw, mFilter, mMask, mMode);
}
@Override

View File

@@ -32,8 +32,9 @@ public class SectionSettingsWithTableInfo extends SectionSettings {
private final int mTableId;
private final int mVersion;
private SectionSettingsWithTableInfo(int mainType, int tableId, int version) {
super(mainType);
private SectionSettingsWithTableInfo(int mainType, boolean isCheckCrc, boolean isRepeat,
boolean isRaw, int tableId, int version) {
super(mainType, isCheckCrc, isRepeat, isRaw);
mTableId = tableId;
mVersion = version;
}
@@ -67,7 +68,7 @@ public class SectionSettingsWithTableInfo extends SectionSettings {
/**
* Builder for {@link SectionSettingsWithTableInfo}.
*/
public static class Builder extends Settings.Builder<Builder> {
public static class Builder extends SectionSettings.Builder<Builder> {
private int mTableId;
private int mVersion;
@@ -97,7 +98,8 @@ public class SectionSettingsWithTableInfo extends SectionSettings {
*/
@NonNull
public SectionSettingsWithTableInfo build() {
return new SectionSettingsWithTableInfo(mMainType, mTableId, mVersion);
return new SectionSettingsWithTableInfo(
mMainType, mCrcEnabled, mIsRepeat, mIsRaw, mTableId, mVersion);
}
@Override

View File

@@ -106,7 +106,7 @@ public class TlvFilterConfiguration extends FilterConfiguration {
* Sets whether the data is compressed IP packet.
*/
@NonNull
public Builder setIsCompressedIpPacket(boolean isCompressedIpPacket) {
public Builder setCompressedIpPacket(boolean isCompressedIpPacket) {
mIsCompressedIpPacket = isCompressedIpPacket;
return this;
}