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

Commit 17facee4 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add new features to tuner."

parents 53fa3cc3 38904f8b
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -6467,6 +6467,7 @@ package android.media.tv.tuner {
    method public int getAvSyncHwId(@NonNull android.media.tv.tuner.filter.Filter);
    method public long getAvSyncTime(int);
    method @Nullable public java.util.List<android.media.tv.tuner.frontend.FrontendInfo> getAvailableFrontendInfos();
    method @Nullable public String getCurrentFrontendHardwardInfo();
    method @Nullable public android.media.tv.tuner.DemuxCapabilities getDemuxCapabilities();
    method @Nullable public android.media.tv.tuner.frontend.FrontendInfo getFrontendInfo();
    method @Nullable public android.media.tv.tuner.frontend.FrontendStatus getFrontendStatus(@NonNull int[]);
@@ -6631,6 +6632,10 @@ package android.media.tv.tuner.filter {
    method public boolean isPassthrough();
    method public boolean useSecureMemory();
    field public static final int AUDIO_STREAM_TYPE_AAC = 6; // 0x6
    field public static final int AUDIO_STREAM_TYPE_AAC_ADTS = 16; // 0x10
    field public static final int AUDIO_STREAM_TYPE_AAC_HE_ADTS = 18; // 0x12
    field public static final int AUDIO_STREAM_TYPE_AAC_HE_LATM = 19; // 0x13
    field public static final int AUDIO_STREAM_TYPE_AAC_LATM = 17; // 0x11
    field public static final int AUDIO_STREAM_TYPE_AC3 = 7; // 0x7
    field public static final int AUDIO_STREAM_TYPE_AC4 = 9; // 0x9
    field public static final int AUDIO_STREAM_TYPE_DRA = 15; // 0xf
@@ -6792,6 +6797,7 @@ package android.media.tv.tuner.filter {
    method @IntRange(from=0) public int getMpuSequenceNumber();
    method public long getOffset();
    method public long getPts();
    method public int getScIndexMask();
    method public int getStreamId();
    method public boolean isDtsPresent();
    method public boolean isPrivateData();
@@ -7907,6 +7913,7 @@ package android.media.tv.tuner.frontend {
    method public void onScanStopped();
    method public void onSignalTypeReported(int);
    method public void onSymbolRatesReported(@NonNull int[]);
    method public default void onUnLocked();
  }
}
+47 −0
Original line number Diff line number Diff line
@@ -687,6 +687,7 @@ public class Tuner implements AutoCloseable {
    private native FrontendInfo nativeGetFrontendInfo(int id);
    private native Filter nativeOpenFilter(int type, int subType, long bufferSize);
    private native TimeFilter nativeOpenTimeFilter();
    private native String nativeGetFrontendHardwareInfo();

    private native Lnb nativeOpenLnbByHandle(int handle);
    private native Lnb nativeOpenLnbByName(String name);
@@ -1278,6 +1279,34 @@ public class Tuner implements AutoCloseable {
        return Arrays.asList(feInfoList);
    }

    /**
     * Gets the currently initialized and activated frontend hardware information. The return values
     * would differ per device makers. E.g. RF chip version, Demod chip version, detailed status of
     * dvbs blind scan, etc
     *
     * <p>This API is only supported by Tuner HAL 2.0 or higher. Unsupported version would return
     * {@code null}. Use {@link TunerVersionChecker#getTunerVersion()} to check the version.
     *
     * @return The active frontend hardware information. {@code null} if the operation failed.
     * @throws IllegalStateException if there is no active frontend currently.
     */
    @Nullable
    public String getCurrentFrontendHardwardInfo() {
        mFrontendLock.lock();
        try {
            if (!TunerVersionChecker.checkHigherOrEqualVersionTo(
                        TunerVersionChecker.TUNER_VERSION_2_0, "Get Frontend hardware info")) {
                return null;
            }
            if (mFrontend == null) {
                throw new IllegalStateException("frontend is not initialized");
            }
            return nativeGetFrontendHardwareInfo();
        } finally {
            mFrontendLock.unlock();
        }
    }

    /** @hide */
    public FrontendInfo getFrontendInfoById(int id) {
        mFrontendLock.lock();
@@ -1353,6 +1382,24 @@ public class Tuner implements AutoCloseable {
        }
    }

    private void onUnLocked() {
        Log.d(TAG, "Wrote Stats Log for unlocked event from scanning.");
        FrameworkStatsLog.write(FrameworkStatsLog.TV_TUNER_STATE_CHANGED, mUserId,
                FrameworkStatsLog.TV_TUNER_STATE_CHANGED__STATE__LOCKED);

        synchronized (mScanCallbackLock) {
            if (mScanCallbackExecutor != null && mScanCallback != null) {
                mScanCallbackExecutor.execute(() -> {
                    synchronized (mScanCallbackLock) {
                        if (mScanCallback != null) {
                            mScanCallback.onUnLocked();
                        }
                    }
                });
            }
        }
    }

    private void onScanStopped() {
        synchronized (mScanCallbackLock) {
            if (mScanCallbackExecutor != null && mScanCallback != null) {
+37 −1
Original line number Diff line number Diff line
@@ -107,7 +107,8 @@ public class AvSettings extends Settings {
                    AUDIO_STREAM_TYPE_AAC, AUDIO_STREAM_TYPE_AC3, AUDIO_STREAM_TYPE_EAC3,
                    AUDIO_STREAM_TYPE_AC4, AUDIO_STREAM_TYPE_DTS, AUDIO_STREAM_TYPE_DTS_HD,
                    AUDIO_STREAM_TYPE_WMA, AUDIO_STREAM_TYPE_OPUS, AUDIO_STREAM_TYPE_VORBIS,
                    AUDIO_STREAM_TYPE_DRA})
                    AUDIO_STREAM_TYPE_DRA, AUDIO_STREAM_TYPE_AAC_ADTS, AUDIO_STREAM_TYPE_AAC_LATM,
                    AUDIO_STREAM_TYPE_AAC_HE_ADTS, AUDIO_STREAM_TYPE_AAC_HE_LATM})
    @Retention(RetentionPolicy.SOURCE)
    public @interface AudioStreamType {}

@@ -182,6 +183,41 @@ public class AvSettings extends Settings {
     */
    public static final int AUDIO_STREAM_TYPE_DRA = android.hardware.tv.tuner.AudioStreamType.DRA;

    /*
     * AAC with ADTS (Audio Data Transport Format).
     *
     * This API is only supported by Tuner HAL 2.0 or higher. Use
     * {@link TunerVersionChecker#getTunerVersion()} to check the version.
     */
    public static final int AUDIO_STREAM_TYPE_AAC_ADTS =
            android.hardware.tv.tuner.AudioStreamType.AAC_ADTS;

    /*
     * AAC with ADTS with LATM (Low-overhead MPEG-4 Audio Transport Multiplex).
     *
     * This API is only supported by Tuner HAL 2.0 or higher. Use
     * {@link TunerVersionChecker#getTunerVersion()} to check the version.
     */
    public static final int AUDIO_STREAM_TYPE_AAC_LATM =
            android.hardware.tv.tuner.AudioStreamType.AAC_LATM;

    /*
     * High-Efficiency AAC (HE-AAC) with ADTS (Audio Data Transport Format).
     *
     * This API is only supported by Tuner HAL 2.0 or higher. Use
     * {@link TunerVersionChecker#getTunerVersion()} to check the version.
     */
    public static final int AUDIO_STREAM_TYPE_AAC_HE_ADTS =
            android.hardware.tv.tuner.AudioStreamType.AAC_HE_ADTS;

    /*
     * High-Efficiency AAC (HE-AAC) with LATM (Low-overhead MPEG-4 Audio Transport Multiplex).
     *
     * This API is only supported by Tuner HAL 2.0 or higher. Use
     * {@link TunerVersionChecker#getTunerVersion()} to check the version.
     */
    public static final int AUDIO_STREAM_TYPE_AAC_HE_LATM =
            android.hardware.tv.tuner.AudioStreamType.AAC_HE_LATM;

    private final boolean mIsPassthrough;
    private int mAudioStreamType = AUDIO_STREAM_TYPE_UNDEFINED;
+15 −1
Original line number Diff line number Diff line
@@ -49,12 +49,14 @@ public class MediaEvent extends FilterEvent {
    private final long mDataId;
    private final int mMpuSequenceNumber;
    private final boolean mIsPrivateData;
    private final int mScIndexMask;
    private final AudioDescriptor mExtraMetaData;

    // This constructor is used by JNI code only
    private MediaEvent(int streamId, boolean isPtsPresent, long pts, boolean isDtsPresent, long dts,
            long dataLength, long offset, LinearBlock buffer, boolean isSecureMemory, long dataId,
            int mpuSequenceNumber, boolean isPrivateData, AudioDescriptor extraMetaData) {
            int mpuSequenceNumber, boolean isPrivateData, int scIndexMask,
            AudioDescriptor extraMetaData) {
        mStreamId = streamId;
        mIsPtsPresent = isPtsPresent;
        mPts = pts;
@@ -67,6 +69,7 @@ public class MediaEvent extends FilterEvent {
        mDataId = dataId;
        mMpuSequenceNumber = mpuSequenceNumber;
        mIsPrivateData = isPrivateData;
        mScIndexMask = scIndexMask;
        mExtraMetaData = extraMetaData;
    }

@@ -193,6 +196,17 @@ public class MediaEvent extends FilterEvent {
        return mIsPrivateData;
    }

    /**
     * Gets SC (Start Code) index mask.
     *
     * <p>This API is only supported by Tuner HAL 2.0 or higher. Unsupported version would return
     * {@code 0}. Use {@link TunerVersionChecker#getTunerVersion()} to check the version.
     */
    @RecordSettings.ScIndexMask
    public int getScIndexMask() {
        return mScIndexMask;
    }

    /**
     * Gets audio extra metadata.
     */
+3 −0
Original line number Diff line number Diff line
@@ -36,6 +36,9 @@ public interface ScanCallback {
     */
    void onLocked();

    /** Scan unlocked the signal. */
    default void onUnLocked() {}

    /** Scan stopped. */
    void onScanStopped();

Loading