Merge "Add ISDB-T Multi-Layer Support."
This commit is contained in:
committed by
Android (Google) Code Review
commit
8d1a673ee1
@@ -7260,6 +7260,8 @@ package android.media.tv.tuner.frontend {
|
||||
method public int getHierarchy();
|
||||
method public long getInnerFec();
|
||||
method @NonNull public int[] getInterleaving();
|
||||
method public int getIsdbtMode();
|
||||
method public int getIsdbtPartialReceptionFlag();
|
||||
method @IntRange(from=0, to=255) @NonNull public int[] getIsdbtSegment();
|
||||
method @NonNull public boolean[] getLayerErrors();
|
||||
method public int getLnbVoltage();
|
||||
@@ -7298,6 +7300,8 @@ package android.media.tv.tuner.frontend {
|
||||
field public static final int FRONTEND_STATUS_TYPE_GUARD_INTERVAL = 26; // 0x1a
|
||||
field public static final int FRONTEND_STATUS_TYPE_HIERARCHY = 19; // 0x13
|
||||
field public static final int FRONTEND_STATUS_TYPE_INTERLEAVINGS = 30; // 0x1e
|
||||
field public static final int FRONTEND_STATUS_TYPE_ISDBT_MODE = 37; // 0x25
|
||||
field public static final int FRONTEND_STATUS_TYPE_ISDBT_PARTIAL_RECEPTION_FLAG = 38; // 0x26
|
||||
field public static final int FRONTEND_STATUS_TYPE_ISDBT_SEGMENTS = 31; // 0x1f
|
||||
field public static final int FRONTEND_STATUS_TYPE_IS_LINEAR = 35; // 0x23
|
||||
field public static final int FRONTEND_STATUS_TYPE_IS_MISO_ENABLED = 34; // 0x22
|
||||
@@ -7430,15 +7434,20 @@ package android.media.tv.tuner.frontend {
|
||||
method public int getGuardIntervalCapability();
|
||||
method public int getModeCapability();
|
||||
method public int getModulationCapability();
|
||||
method public int getTimeInterleaveModeCapability();
|
||||
method public boolean isFullSegmentSupported();
|
||||
method public boolean isSegmentAutoSupported();
|
||||
}
|
||||
|
||||
public class IsdbtFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
|
||||
method @NonNull public static android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder builder();
|
||||
method public int getBandwidth();
|
||||
method public int getCodeRate();
|
||||
method @Deprecated public int getCodeRate();
|
||||
method public int getGuardInterval();
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings[] getLayerSettings();
|
||||
method public int getMode();
|
||||
method public int getModulation();
|
||||
method @Deprecated public int getModulation();
|
||||
method public int getPartialReceptionFlag();
|
||||
method public int getServiceAreaId();
|
||||
method public int getType();
|
||||
field public static final int BANDWIDTH_6MHZ = 8; // 0x8
|
||||
@@ -7457,20 +7466,55 @@ package android.media.tv.tuner.frontend {
|
||||
field public static final int MODULATION_MOD_DQPSK = 2; // 0x2
|
||||
field public static final int MODULATION_MOD_QPSK = 4; // 0x4
|
||||
field public static final int MODULATION_UNDEFINED = 0; // 0x0
|
||||
field public static final int PARTIAL_RECEPTION_FLAG_FALSE = 2; // 0x2
|
||||
field public static final int PARTIAL_RECEPTION_FLAG_TRUE = 4; // 0x4
|
||||
field public static final int PARTIAL_RECEPTION_FLAG_UNDEFINED = 0; // 0x0
|
||||
field public static final int TIME_INTERLEAVE_MODE_1_0 = 2; // 0x2
|
||||
field public static final int TIME_INTERLEAVE_MODE_1_16 = 16; // 0x10
|
||||
field public static final int TIME_INTERLEAVE_MODE_1_4 = 4; // 0x4
|
||||
field public static final int TIME_INTERLEAVE_MODE_1_8 = 8; // 0x8
|
||||
field public static final int TIME_INTERLEAVE_MODE_2_0 = 32; // 0x20
|
||||
field public static final int TIME_INTERLEAVE_MODE_2_2 = 64; // 0x40
|
||||
field public static final int TIME_INTERLEAVE_MODE_2_4 = 128; // 0x80
|
||||
field public static final int TIME_INTERLEAVE_MODE_2_8 = 256; // 0x100
|
||||
field public static final int TIME_INTERLEAVE_MODE_3_0 = 512; // 0x200
|
||||
field public static final int TIME_INTERLEAVE_MODE_3_1 = 1024; // 0x400
|
||||
field public static final int TIME_INTERLEAVE_MODE_3_2 = 2048; // 0x800
|
||||
field public static final int TIME_INTERLEAVE_MODE_3_4 = 4096; // 0x1000
|
||||
field public static final int TIME_INTERLEAVE_MODE_AUTO = 1; // 0x1
|
||||
field public static final int TIME_INTERLEAVE_MODE_UNDEFINED = 0; // 0x0
|
||||
}
|
||||
|
||||
public static class IsdbtFrontendSettings.Builder {
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings build();
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setBandwidth(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setCodeRate(int);
|
||||
method @Deprecated @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setCodeRate(int);
|
||||
method @Deprecated @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setFrequency(int);
|
||||
method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setFrequencyLong(long);
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setGuardInterval(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setLayerSettings(@NonNull android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings[]);
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setMode(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setModulation(int);
|
||||
method @Deprecated @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setModulation(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setPartialReceptionFlag(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.Builder setServiceAreaId(int);
|
||||
}
|
||||
|
||||
public static final class IsdbtFrontendSettings.IsdbtLayerSettings {
|
||||
method @NonNull public static android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings.Builder builder();
|
||||
method public int getCodeRate();
|
||||
method public int getModulation();
|
||||
method @IntRange(from=0, to=255) public int getNumOfSegment();
|
||||
method public int getTimeInterleaveMode();
|
||||
}
|
||||
|
||||
public static final class IsdbtFrontendSettings.IsdbtLayerSettings.Builder {
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings build();
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings.Builder setCodeRate(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings.Builder setModulation(int);
|
||||
method @IntRange(from=0, to=255) @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings.Builder setNumOfSegment(int);
|
||||
method @NonNull public android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings.Builder setTimeInterleaveMode(int);
|
||||
}
|
||||
|
||||
public interface OnTuneEventListener {
|
||||
method public void onTuneEvent(int);
|
||||
field public static final int SIGNAL_LOCKED = 0; // 0x0
|
||||
|
||||
@@ -749,6 +749,12 @@ public class Tuner implements AutoCloseable {
|
||||
* supported in Tuner 1.1 or higher version. Unsupported version will cause no-op. Use {@link
|
||||
* TunerVersionChecker#getTunerVersion()} to get the version information.
|
||||
*
|
||||
* <p>Tuning with {@link
|
||||
* android.media.tv.tuner.frontend.IsdbtFrontendSettings.PartialReceptionFlag} or {@link
|
||||
* android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings} is only supported
|
||||
* in Tuner 2.0 or higher version. Unsupported version will cause no-op. Use {@link
|
||||
* TunerVersionChecker#getTunerVersion()} to get the version information.
|
||||
*
|
||||
* @param settings Signal delivery information the frontend uses to
|
||||
* search and lock the signal.
|
||||
* @return result status of tune operation.
|
||||
@@ -803,6 +809,12 @@ public class Tuner implements AutoCloseable {
|
||||
* supported in Tuner 1.1 or higher version. Unsupported version will cause no-op. Use {@link
|
||||
* TunerVersionChecker#getTunerVersion()} to get the version information.
|
||||
*
|
||||
* * <p>Scanning with {@link
|
||||
* android.media.tv.tuner.frontend.IsdbtFrontendSettings.PartialReceptionFlag} or {@link
|
||||
* android.media.tv.tuner.frontend.IsdbtFrontendSettings.IsdbtLayerSettings} is only supported
|
||||
* in Tuner 2.0 or higher version. Unsupported version will cause no-op. Use {@link
|
||||
* TunerVersionChecker#getTunerVersion()} to get the version information.
|
||||
*
|
||||
* @param settings A {@link FrontendSettings} to configure the frontend.
|
||||
* @param scanType The scan type.
|
||||
* @throws SecurityException if the caller does not have appropriate permissions.
|
||||
|
||||
@@ -52,7 +52,8 @@ public class FrontendStatus {
|
||||
FRONTEND_STATUS_TYPE_ISDBT_SEGMENTS, FRONTEND_STATUS_TYPE_TS_DATA_RATES,
|
||||
FRONTEND_STATUS_TYPE_MODULATIONS_EXT, FRONTEND_STATUS_TYPE_ROLL_OFF,
|
||||
FRONTEND_STATUS_TYPE_IS_MISO_ENABLED, FRONTEND_STATUS_TYPE_IS_LINEAR,
|
||||
FRONTEND_STATUS_TYPE_IS_SHORT_FRAMES_ENABLED})
|
||||
FRONTEND_STATUS_TYPE_IS_SHORT_FRAMES_ENABLED, FRONTEND_STATUS_TYPE_ISDBT_MODE,
|
||||
FRONTEND_STATUS_TYPE_ISDBT_PARTIAL_RECEPTION_FLAG})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface FrontendStatusType {}
|
||||
|
||||
@@ -242,6 +243,16 @@ public class FrontendStatus {
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_IS_SHORT_FRAMES_ENABLED =
|
||||
android.hardware.tv.tuner.FrontendStatusType.IS_SHORT_FRAMES;
|
||||
/**
|
||||
* ISDB-T mode. Only supported in Tuner HAL 2.0 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_ISDBT_MODE =
|
||||
android.hardware.tv.tuner.FrontendStatusType.ISDBT_MODE;
|
||||
/**
|
||||
* ISDB-T partial reception flag. Only supported in Tuner HAL 2.0 or higher.
|
||||
*/
|
||||
public static final int FRONTEND_STATUS_TYPE_ISDBT_PARTIAL_RECEPTION_FLAG =
|
||||
android.hardware.tv.tuner.FrontendStatusType.ISDBT_PARTIAL_RECEPTION_FLAG;
|
||||
|
||||
/** @hide */
|
||||
@IntDef(value = {
|
||||
@@ -337,7 +348,21 @@ public class FrontendStatus {
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_8_16,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_128_2,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_128_3,
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_128_4})
|
||||
DvbcFrontendSettings.TIME_INTERLEAVE_MODE_128_4,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_UNDEFINED,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_AUTO,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_1_0,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_1_4,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_1_8,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_1_16,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_2_0,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_2_2,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_2_4,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_2_8,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_3_0,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_3_1,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_3_2,
|
||||
IsdbtFrontendSettings.TIME_INTERLEAVE_MODE_3_4})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface FrontendInterleaveMode {}
|
||||
|
||||
@@ -466,7 +491,8 @@ public class FrontendStatus {
|
||||
private Boolean mIsMisoEnabled;
|
||||
private Boolean mIsLinear;
|
||||
private Boolean mIsShortFrames;
|
||||
|
||||
private Integer mIsdbtMode;
|
||||
private Integer mIsdbtPartialReceptionFlag;
|
||||
|
||||
// Constructed and fields set by JNI code.
|
||||
private FrontendStatus() {
|
||||
@@ -940,6 +966,40 @@ public class FrontendStatus {
|
||||
return mIsShortFrames;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets ISDB-T mode.
|
||||
*
|
||||
* <p>This query is only supported by Tuner HAL 2.0 or higher. Unsupported version or if HAL
|
||||
* doesn't return ISDB-T mode status will throw IllegalStateException. Use
|
||||
* {@link TunerVersionChecker#getTunerVersion()} to check the version.
|
||||
*/
|
||||
@IsdbtFrontendSettings.Mode
|
||||
public int getIsdbtMode() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_2_0, "IsdbtMode status");
|
||||
if (mIsdbtMode == null) {
|
||||
throw new IllegalStateException("IsdbtMode status is empty");
|
||||
}
|
||||
return mIsdbtMode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets ISDB-T partial reception flag.
|
||||
*
|
||||
* <p>This query is only supported by Tuner HAL 2.0 or higher. Unsupported version or if HAL
|
||||
* doesn't return partial reception flag status will throw IllegalStateException. Use
|
||||
* {@link TunerVersionChecker#getTunerVersion()} to check the version.
|
||||
*/
|
||||
@IsdbtFrontendSettings.PartialReceptionFlag
|
||||
public int getIsdbtPartialReceptionFlag() {
|
||||
TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_2_0, "IsdbtPartialReceptionFlag status");
|
||||
if (mIsdbtPartialReceptionFlag == null) {
|
||||
throw new IllegalStateException("IsdbtPartialReceptionFlag status is empty");
|
||||
}
|
||||
return mIsdbtPartialReceptionFlag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Information of each tuning Physical Layer Pipes.
|
||||
*/
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package android.media.tv.tuner.frontend;
|
||||
|
||||
import android.annotation.SystemApi;
|
||||
import android.media.tv.tuner.TunerVersionChecker;
|
||||
|
||||
/**
|
||||
* ISDBT Capabilities.
|
||||
@@ -30,14 +31,21 @@ public class IsdbtFrontendCapabilities extends FrontendCapabilities {
|
||||
private final int mModulationCap;
|
||||
private final int mCodeRateCap;
|
||||
private final int mGuardIntervalCap;
|
||||
private final int mTimeInterleaveCap;
|
||||
private final boolean mIsSegmentAutoSupported;
|
||||
private final boolean mIsFullSegmentSupported;
|
||||
|
||||
private IsdbtFrontendCapabilities(int modeCap, int bandwidthCap, int modulationCap,
|
||||
int codeRateCap, int guardIntervalCap) {
|
||||
int codeRateCap, int guardIntervalCap, int timeInterleaveCap,
|
||||
boolean isSegmentAutoSupported, boolean isFullSegmentSupported) {
|
||||
mModeCap = modeCap;
|
||||
mBandwidthCap = bandwidthCap;
|
||||
mModulationCap = modulationCap;
|
||||
mCodeRateCap = codeRateCap;
|
||||
mGuardIntervalCap = guardIntervalCap;
|
||||
mTimeInterleaveCap = timeInterleaveCap;
|
||||
mIsSegmentAutoSupported = isSegmentAutoSupported;
|
||||
mIsFullSegmentSupported = isFullSegmentSupported;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -75,4 +83,35 @@ public class IsdbtFrontendCapabilities extends FrontendCapabilities {
|
||||
public int getGuardIntervalCapability() {
|
||||
return mGuardIntervalCap;
|
||||
}
|
||||
/**
|
||||
* Gets time interleave mode capability.
|
||||
*
|
||||
* <p>This query is only supported by Tuner HAL 2.0 or higher. Unsupported version will
|
||||
* return {@link IsdbtFrontendSettings#TIME_INTERLEAVE_MODE_UNDEFINED}.
|
||||
* Use {@link TunerVersionChecker#getTunerVersion()} to check the version.
|
||||
*/
|
||||
@IsdbtFrontendSettings.TimeInterleaveMode
|
||||
public int getTimeInterleaveModeCapability() {
|
||||
return mTimeInterleaveCap;
|
||||
}
|
||||
/**
|
||||
* If auto segment is supported or not.
|
||||
*
|
||||
* <p>This query is only supported by Tuner HAL 2.0 or higher. Unsupported version will
|
||||
* return false.
|
||||
* Use {@link TunerVersionChecker#getTunerVersion()} to check the version.
|
||||
*/
|
||||
public boolean isSegmentAutoSupported() {
|
||||
return mIsSegmentAutoSupported;
|
||||
}
|
||||
/**
|
||||
* If full segment is supported or not.
|
||||
*
|
||||
* <p>This query is only supported by Tuner HAL 2.0 or higher. Unsupported version will
|
||||
* return false.
|
||||
* Use {@link TunerVersionChecker#getTunerVersion()} to check the version.
|
||||
*/
|
||||
public boolean isFullSegmentSupported() {
|
||||
return mIsFullSegmentSupported;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,12 +19,16 @@ package android.media.tv.tuner.frontend;
|
||||
import android.annotation.IntDef;
|
||||
import android.annotation.IntRange;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.annotation.SystemApi;
|
||||
import android.hardware.tv.tuner.FrontendIsdbtBandwidth;
|
||||
import android.hardware.tv.tuner.FrontendIsdbtMode;
|
||||
import android.hardware.tv.tuner.FrontendIsdbtModulation;
|
||||
import android.hardware.tv.tuner.FrontendIsdbtPartialReceptionFlag;
|
||||
import android.hardware.tv.tuner.FrontendIsdbtTimeInterleaveMode;
|
||||
import android.media.tv.tuner.TunerVersionChecker;
|
||||
import android.media.tv.tuner.frontend.DvbtFrontendSettings.CodeRate;
|
||||
|
||||
import android.util.Log;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
@@ -127,30 +131,145 @@ public class IsdbtFrontendSettings extends FrontendSettings {
|
||||
*/
|
||||
public static final int BANDWIDTH_6MHZ = FrontendIsdbtBandwidth.BANDWIDTH_6MHZ;
|
||||
|
||||
private final int mModulation;
|
||||
/** @hide */
|
||||
@IntDef(flag = true, prefix = "PARTIAL_RECEPTION_FLAG_",
|
||||
value = {PARTIAL_RECEPTION_FLAG_UNDEFINED, PARTIAL_RECEPTION_FLAG_FALSE,
|
||||
PARTIAL_RECEPTION_FLAG_TRUE})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface PartialReceptionFlag {}
|
||||
|
||||
/**
|
||||
* Partial Reception Flag undefined.
|
||||
*/
|
||||
public static final int PARTIAL_RECEPTION_FLAG_UNDEFINED =
|
||||
FrontendIsdbtPartialReceptionFlag.UNDEFINED;
|
||||
/**
|
||||
* Partial Reception Flag false.
|
||||
*/
|
||||
public static final int PARTIAL_RECEPTION_FLAG_FALSE = FrontendIsdbtPartialReceptionFlag.FALSE;
|
||||
/**
|
||||
* Partial Reception Flag true.
|
||||
*/
|
||||
public static final int PARTIAL_RECEPTION_FLAG_TRUE = FrontendIsdbtPartialReceptionFlag.TRUE;
|
||||
|
||||
/** @hide */
|
||||
@IntDef(flag = true, prefix = "TIME_INTERLEAVE_MODE_",
|
||||
value = {TIME_INTERLEAVE_MODE_UNDEFINED, TIME_INTERLEAVE_MODE_AUTO,
|
||||
TIME_INTERLEAVE_MODE_1_0, TIME_INTERLEAVE_MODE_1_4, TIME_INTERLEAVE_MODE_1_8,
|
||||
TIME_INTERLEAVE_MODE_1_16, TIME_INTERLEAVE_MODE_2_0, TIME_INTERLEAVE_MODE_2_2,
|
||||
TIME_INTERLEAVE_MODE_2_4, TIME_INTERLEAVE_MODE_2_8, TIME_INTERLEAVE_MODE_3_0,
|
||||
TIME_INTERLEAVE_MODE_3_1, TIME_INTERLEAVE_MODE_3_2, TIME_INTERLEAVE_MODE_3_4})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface TimeInterleaveMode {}
|
||||
|
||||
/**
|
||||
* Time Interleave Mode undefined.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_UNDEFINED =
|
||||
FrontendIsdbtTimeInterleaveMode.UNDEFINED;
|
||||
/**
|
||||
* Hardware is able to detect and set time interleave mode automatically
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_AUTO = FrontendIsdbtTimeInterleaveMode.AUTO;
|
||||
/**
|
||||
* Time Interleave Mode 1: 0.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_1_0 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_1_0;
|
||||
/**
|
||||
* Time Interleave Mode 1: 4.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_1_4 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_1_4;
|
||||
/**
|
||||
* Time Interleave Mode 1: 8.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_1_8 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_1_8;
|
||||
/**
|
||||
* Time Interleave Mode 1: 16.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_1_16 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_1_16;
|
||||
/**
|
||||
* Time Interleave Mode 2: 0.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_2_0 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_2_0;
|
||||
/**
|
||||
* Time Interleave Mode 2: 2.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_2_2 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_2_2;
|
||||
/**
|
||||
* Time Interleave Mode 2: 4.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_2_4 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_2_4;
|
||||
/**
|
||||
* Time Interleave Mode 2: 8.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_2_8 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_2_8;
|
||||
/**
|
||||
* Time Interleave Mode 3: 0.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_3_0 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_3_0;
|
||||
/**
|
||||
* Time Interleave Mode 3: 1.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_3_1 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_3_1;
|
||||
/**
|
||||
* Time Interleave Mode 3: 2.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_3_2 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_3_2;
|
||||
/**
|
||||
* Time Interleave Mode 3: 4.
|
||||
*/
|
||||
public static final int TIME_INTERLEAVE_MODE_3_4 =
|
||||
FrontendIsdbtTimeInterleaveMode.INTERLEAVE_3_4;
|
||||
|
||||
private final int mBandwidth;
|
||||
private final int mMode;
|
||||
private final int mCodeRate;
|
||||
private final int mGuardInterval;
|
||||
private final int mServiceAreaId;
|
||||
private final IsdbtLayerSettings[] mLayerSettings;
|
||||
private final int mPartialReceptionFlag;
|
||||
private static final String TAG = "IsdbtFrontendSettings";
|
||||
|
||||
private IsdbtFrontendSettings(long frequency, int modulation, int bandwidth, int mode,
|
||||
int codeRate, int guardInterval, int serviceAreaId) {
|
||||
private IsdbtFrontendSettings(long frequency, int bandwidth, int mode, int guardInterval,
|
||||
int serviceAreaId, IsdbtLayerSettings[] layerSettings, int partialReceptionFlag) {
|
||||
super(frequency);
|
||||
mModulation = modulation;
|
||||
mBandwidth = bandwidth;
|
||||
mMode = mode;
|
||||
mCodeRate = codeRate;
|
||||
mGuardInterval = guardInterval;
|
||||
mServiceAreaId = serviceAreaId;
|
||||
mLayerSettings = new IsdbtLayerSettings[layerSettings.length];
|
||||
for (int i = 0; i < layerSettings.length; i++) {
|
||||
mLayerSettings[i] = layerSettings[i];
|
||||
}
|
||||
mPartialReceptionFlag = partialReceptionFlag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Modulation.
|
||||
*
|
||||
* <p>This query is only supported in Tuner 1.1 or lowner version. Unsupported version will
|
||||
* return {@link MODULATION_UNDEFINED}.
|
||||
* Use {@link TunerVersionChecker#getTunerVersion()} to get the version information.
|
||||
* @deprecated Use {@link #getLayerSettings()} and {@link IsdbtLayerSettings#getModulation()}
|
||||
* instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@Modulation
|
||||
public int getModulation() {
|
||||
return mModulation;
|
||||
if (TunerVersionChecker.isHigherOrEqualVersionTo(TunerVersionChecker.TUNER_VERSION_2_0)) {
|
||||
return MODULATION_UNDEFINED;
|
||||
}
|
||||
return mLayerSettings.length > 0 ? mLayerSettings[0].getModulation() : MODULATION_UNDEFINED;
|
||||
}
|
||||
/**
|
||||
* Gets Bandwidth.
|
||||
@@ -168,10 +287,21 @@ public class IsdbtFrontendSettings extends FrontendSettings {
|
||||
}
|
||||
/**
|
||||
* Gets Code rate.
|
||||
*
|
||||
* <p>This query is only supported in Tuner 1.1 or lowner version. Unsupported version will
|
||||
* return {@link DvbtFrontendSettings#CODERATE_UNDEFINED}.
|
||||
* Use {@link TunerVersionChecker#getTunerVersion()} to get the version information.
|
||||
* @deprecated Use {@link #getLayerSettings()} and {@link IsdbtLayerSettings#getCodeRate()}
|
||||
* instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@CodeRate
|
||||
public int getCodeRate() {
|
||||
return mCodeRate;
|
||||
if (TunerVersionChecker.isHigherOrEqualVersionTo(TunerVersionChecker.TUNER_VERSION_2_0)) {
|
||||
return DvbtFrontendSettings.CODERATE_UNDEFINED;
|
||||
}
|
||||
return mLayerSettings.length > 0 ? mLayerSettings[0].getCodeRate()
|
||||
: DvbtFrontendSettings.CODERATE_UNDEFINED;
|
||||
}
|
||||
/**
|
||||
* Gets Guard Interval.
|
||||
@@ -186,6 +316,29 @@ public class IsdbtFrontendSettings extends FrontendSettings {
|
||||
public int getServiceAreaId() {
|
||||
return mServiceAreaId;
|
||||
}
|
||||
/**
|
||||
* Gets ISDB-T Layer Settings.
|
||||
*
|
||||
* <p>This query is only supported in Tuner 2.0 or higher version. Unsupported version will
|
||||
* return an empty array.
|
||||
* Use {@link TunerVersionChecker#getTunerVersion()} to get the version information.
|
||||
*/
|
||||
@SuppressLint("ArrayReturn")
|
||||
@NonNull
|
||||
public IsdbtLayerSettings[] getLayerSettings() {
|
||||
return mLayerSettings;
|
||||
}
|
||||
/**
|
||||
* Gets ISDB-T Partial Reception Flag.
|
||||
*
|
||||
* <p>This query is only supported in Tuner 2.0 or higher version. Unsupported version will
|
||||
* return {@link PARTIALRECEPTIONFLAG_UNDEFINED}.
|
||||
* Use {@link TunerVersionChecker#getTunerVersion()} to get the version information.
|
||||
*/
|
||||
@PartialReceptionFlag
|
||||
public int getPartialReceptionFlag() {
|
||||
return mPartialReceptionFlag;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a builder for {@link IsdbtFrontendSettings}.
|
||||
@@ -200,12 +353,12 @@ public class IsdbtFrontendSettings extends FrontendSettings {
|
||||
*/
|
||||
public static class Builder {
|
||||
private long mFrequency = 0;
|
||||
private int mModulation = MODULATION_UNDEFINED;
|
||||
private int mBandwidth = BANDWIDTH_UNDEFINED;
|
||||
private int mMode = MODE_UNDEFINED;
|
||||
private int mCodeRate = DvbtFrontendSettings.CODERATE_UNDEFINED;
|
||||
private int mGuardInterval = DvbtFrontendSettings.GUARD_INTERVAL_UNDEFINED;
|
||||
private int mServiceAreaId = 0;
|
||||
private IsdbtLayerSettings[] mLayerSettings = {};
|
||||
private int mPartialReceptionFlag = PARTIAL_RECEPTION_FLAG_UNDEFINED;
|
||||
|
||||
private Builder() {
|
||||
}
|
||||
@@ -238,11 +391,28 @@ public class IsdbtFrontendSettings extends FrontendSettings {
|
||||
/**
|
||||
* Sets Modulation.
|
||||
*
|
||||
* <p>This configuration is only supported in Tuner 1.1 or lowner version. Unsupported
|
||||
* version will cause no-op. Use {@link TunerVersionChecker#getTunerVersion()} to get the
|
||||
* version information.
|
||||
*
|
||||
* <p>Default value is {@link #MODULATION_UNDEFINED}.
|
||||
*/
|
||||
@Deprecated
|
||||
@NonNull
|
||||
public Builder setModulation(@Modulation int modulation) {
|
||||
mModulation = modulation;
|
||||
if (TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_2_0, "setModulation")) {
|
||||
Log.d(TAG, "Use IsdbtLayerSettings on HAL 2.0 or higher");
|
||||
} else {
|
||||
IsdbtLayerSettings.Builder layerBuilder = IsdbtLayerSettings.builder();
|
||||
layerBuilder.setModulation(modulation);
|
||||
if (mLayerSettings.length == 0) {
|
||||
mLayerSettings = new IsdbtLayerSettings[1];
|
||||
} else {
|
||||
layerBuilder.setCodeRate(mLayerSettings[0].getCodeRate());
|
||||
}
|
||||
mLayerSettings[0] = layerBuilder.build();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
@@ -268,11 +438,28 @@ public class IsdbtFrontendSettings extends FrontendSettings {
|
||||
/**
|
||||
* Sets Code rate.
|
||||
*
|
||||
* <p>This configuration is only supported in Tuner 1.1 or lowner version. Unsupported
|
||||
* version will cause no-op. Use {@link TunerVersionChecker#getTunerVersion()} to get the
|
||||
* version information.
|
||||
*
|
||||
* <p>Default value is {@link DvbtFrontendSettings#CODERATE_UNDEFINED}.
|
||||
*/
|
||||
@Deprecated
|
||||
@NonNull
|
||||
public Builder setCodeRate(@DvbtFrontendSettings.CodeRate int codeRate) {
|
||||
mCodeRate = codeRate;
|
||||
if (TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_2_0, "setModulation")) {
|
||||
Log.d(TAG, "Use IsdbtLayerSettings on HAL 2.0 or higher");
|
||||
} else {
|
||||
IsdbtLayerSettings.Builder layerBuilder = IsdbtLayerSettings.builder();
|
||||
layerBuilder.setCodeRate(codeRate);
|
||||
if (mLayerSettings.length == 0) {
|
||||
mLayerSettings = new IsdbtLayerSettings[1];
|
||||
} else {
|
||||
layerBuilder.setModulation(mLayerSettings[0].getModulation());
|
||||
}
|
||||
mLayerSettings[0] = layerBuilder.build();
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
@@ -295,14 +482,52 @@ public class IsdbtFrontendSettings extends FrontendSettings {
|
||||
mServiceAreaId = serviceAreaId;
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* Sets ISDB-T Layer Settings.
|
||||
*
|
||||
* <p>This configuration is only supported in Tuner 2.0 or higher version. Unsupported
|
||||
* version will cause no-op. Use {@link TunerVersionChecker#getTunerVersion()} to get the
|
||||
* version information.
|
||||
*
|
||||
* <p>Default value is an empty array.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setLayerSettings(
|
||||
@SuppressLint("ArrayReturn") @NonNull IsdbtLayerSettings[] layerSettings) {
|
||||
if (TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_2_0, "setLayerSettings")) {
|
||||
mLayerSettings = new IsdbtLayerSettings[layerSettings.length];
|
||||
for (int i = 0; i < layerSettings.length; i++) {
|
||||
mLayerSettings[i] = layerSettings[i];
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* Sets ISDB-T Partial Reception Flag.
|
||||
*
|
||||
* <p>This configuration is only supported in Tuner 2.0 or higher version. Unsupported
|
||||
* version will cause no-op. Use {@link TunerVersionChecker#getTunerVersion()} to get the
|
||||
* version information.
|
||||
*
|
||||
* <p>Default value is {@link PARTIALRECEPTIONFLAG_UNDEFINED}.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setPartialReceptionFlag(@PartialReceptionFlag int flag) {
|
||||
if (TunerVersionChecker.checkHigherOrEqualVersionTo(
|
||||
TunerVersionChecker.TUNER_VERSION_2_0, "setPartialReceptionFlag")) {
|
||||
mPartialReceptionFlag = flag;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a {@link IsdbtFrontendSettings} object.
|
||||
*/
|
||||
@NonNull
|
||||
public IsdbtFrontendSettings build() {
|
||||
return new IsdbtFrontendSettings(mFrequency, mModulation, mBandwidth, mMode, mCodeRate,
|
||||
mGuardInterval, mServiceAreaId);
|
||||
return new IsdbtFrontendSettings(mFrequency, mBandwidth, mMode, mGuardInterval,
|
||||
mServiceAreaId, mLayerSettings, mPartialReceptionFlag);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -310,4 +535,123 @@ public class IsdbtFrontendSettings extends FrontendSettings {
|
||||
public int getType() {
|
||||
return FrontendSettings.TYPE_ISDBT;
|
||||
}
|
||||
|
||||
/**
|
||||
* Layer Settings for ISDB-T Frontend.
|
||||
*
|
||||
* <p>Layer Settings is only supported in Tuner 2.0 or higher version. Use
|
||||
* {@link TunerVersionChecker#getTunerVersion()} to get the version information.
|
||||
*/
|
||||
public static final class IsdbtLayerSettings {
|
||||
private final int mModulation;
|
||||
private final int mTimeInterleaveMode;
|
||||
private final int mCodeRate;
|
||||
private final int mNumOfSegment;
|
||||
|
||||
private IsdbtLayerSettings(
|
||||
int modulation, int timeInterleaveMode, int codeRate, int numOfSegment) {
|
||||
mModulation = modulation;
|
||||
mTimeInterleaveMode = timeInterleaveMode;
|
||||
mCodeRate = codeRate;
|
||||
mNumOfSegment = numOfSegment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets Modulation.
|
||||
*/
|
||||
@Modulation
|
||||
public int getModulation() {
|
||||
return mModulation;
|
||||
}
|
||||
/**
|
||||
* Gets Time Interleave Mode.
|
||||
*/
|
||||
@TimeInterleaveMode
|
||||
public int getTimeInterleaveMode() {
|
||||
return mTimeInterleaveMode;
|
||||
}
|
||||
/**
|
||||
* Gets Code rate.
|
||||
*/
|
||||
@CodeRate
|
||||
public int getCodeRate() {
|
||||
return mCodeRate;
|
||||
}
|
||||
/**
|
||||
* Gets Number of Segment.
|
||||
*/
|
||||
@IntRange(from = 0, to = 0xff)
|
||||
public int getNumOfSegment() {
|
||||
return mNumOfSegment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a builder for {@link IsdbtLayerSettings}.
|
||||
*/
|
||||
@NonNull
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
/**
|
||||
* Builder for {@link IsdbtLayerSettings}.
|
||||
*/
|
||||
public static final class Builder {
|
||||
private int mModulation = MODULATION_UNDEFINED;
|
||||
private int mTimeInterleaveMode = TIME_INTERLEAVE_MODE_UNDEFINED;
|
||||
private int mCodeRate = DvbtFrontendSettings.CODERATE_UNDEFINED;
|
||||
private int mNumOfSegment = 0;
|
||||
|
||||
private Builder() {}
|
||||
|
||||
/**
|
||||
* Sets modulation.
|
||||
*
|
||||
* <p>Default value is {@link #MODULATION_UNDEFINED}.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setModulation(@Modulation int modulation) {
|
||||
mModulation = modulation;
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* Sets time interleave mode.
|
||||
*
|
||||
* <p>Default value is {@link #TIME_INTERLEAVE_MODE_UNDEFINED}.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setTimeInterleaveMode(@TimeInterleaveMode int mode) {
|
||||
mTimeInterleaveMode = mode;
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* Sets code rate.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setCodeRate(@DvbtFrontendSettings.CodeRate int codeRate) {
|
||||
mCodeRate = codeRate;
|
||||
return this;
|
||||
}
|
||||
/**
|
||||
* Sets number of segment.
|
||||
*
|
||||
* <p>Default value is 0.
|
||||
*/
|
||||
@NonNull
|
||||
@IntRange(from = 0, to = 0xff)
|
||||
public Builder setNumOfSegment(int numOfSegment) {
|
||||
mNumOfSegment = numOfSegment;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a {@link IsdbtLayerSettings} object.
|
||||
*/
|
||||
@NonNull
|
||||
public IsdbtLayerSettings build() {
|
||||
return new IsdbtLayerSettings(
|
||||
mModulation, mTimeInterleaveMode, mCodeRate, mNumOfSegment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,9 +123,12 @@
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendIsdbtBandwidth.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendIsdbtCoderate.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendIsdbtGuardInterval.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendIsdbtLayerSettings.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendIsdbtMode.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendIsdbtModulation.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendIsdbtPartialReceptionFlag.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendIsdbtSettings.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendIsdbtTimeInterleaveMode.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendModulation.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendModulationStatus.h>
|
||||
#include <aidl/android/hardware/tv/tuner/FrontendRollOff.h>
|
||||
@@ -268,9 +271,12 @@ using ::aidl::android::hardware::tv::tuner::FrontendIsdbsStreamIdType;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendIsdbtBandwidth;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendIsdbtCoderate;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendIsdbtGuardInterval;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendIsdbtLayerSettings;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendIsdbtMode;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendIsdbtModulation;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendIsdbtPartialReceptionFlag;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendIsdbtSettings;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendIsdbtTimeInterleaveMode;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendModulation;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendModulationStatus;
|
||||
using ::aidl::android::hardware::tv::tuner::FrontendRollOff;
|
||||
@@ -1355,16 +1361,19 @@ jobject JTuner::getIsdbsFrontendCaps(JNIEnv *env, FrontendCapabilities &caps) {
|
||||
|
||||
jobject JTuner::getIsdbtFrontendCaps(JNIEnv *env, FrontendCapabilities &caps) {
|
||||
jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbtFrontendCapabilities");
|
||||
jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIII)V");
|
||||
jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIIIZZ)V");
|
||||
|
||||
jint modeCap = caps.get<FrontendCapabilities::Tag::isdbtCaps>().modeCap;
|
||||
jint bandwidthCap = caps.get<FrontendCapabilities::Tag::isdbtCaps>().bandwidthCap;
|
||||
jint modulationCap = caps.get<FrontendCapabilities::Tag::isdbtCaps>().modulationCap;
|
||||
jint coderateCap = caps.get<FrontendCapabilities::Tag::isdbtCaps>().coderateCap;
|
||||
jint guardIntervalCap = caps.get<FrontendCapabilities::Tag::isdbtCaps>().guardIntervalCap;
|
||||
jint timeInterleaveCap = caps.get<FrontendCapabilities::Tag::isdbtCaps>().timeInterleaveCap;
|
||||
jboolean isSegmentAuto = caps.get<FrontendCapabilities::Tag::isdbtCaps>().isSegmentAuto;
|
||||
jboolean isFullSegment = caps.get<FrontendCapabilities::Tag::isdbtCaps>().isFullSegment;
|
||||
|
||||
return env->NewObject(clazz, capsInit, modeCap, bandwidthCap, modulationCap, coderateCap,
|
||||
guardIntervalCap);
|
||||
guardIntervalCap, timeInterleaveCap, isSegmentAuto, isFullSegment);
|
||||
}
|
||||
|
||||
jobject JTuner::getDtmbFrontendCaps(JNIEnv *env, FrontendCapabilities &caps) {
|
||||
@@ -2336,6 +2345,13 @@ jobject JTuner::getFrontendStatus(jintArray types) {
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
case FrontendInterleaveMode::Tag::isdbt: {
|
||||
in[0] = static_cast<jint>(
|
||||
interleaving.get<FrontendInterleaveMode::Tag::isdbt>());
|
||||
env->SetIntArrayRegion(valObj, i, 1, in);
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -2414,6 +2430,22 @@ jobject JTuner::getFrontendStatus(jintArray types) {
|
||||
env->SetObjectField(statusObj, field, newBooleanObj);
|
||||
break;
|
||||
}
|
||||
case FrontendStatus::Tag::isdbtMode: {
|
||||
jfieldID field = env->GetFieldID(clazz, "mIsdbtMode", "Ljava/lang/Integer;");
|
||||
jobject newIntegerObj =
|
||||
env->NewObject(intClazz, initInt, s.get<FrontendStatus::Tag::isdbtMode>());
|
||||
env->SetObjectField(statusObj, field, newIntegerObj);
|
||||
break;
|
||||
}
|
||||
case FrontendStatus::Tag::partialReceptionFlag: {
|
||||
jfieldID field =
|
||||
env->GetFieldID(clazz, "mIsdbtPartialReceptionFlag", "Ljava/lang/Integer;");
|
||||
jobject newIntegerObj =
|
||||
env->NewObject(intClazz, initInt,
|
||||
s.get<FrontendStatus::Tag::partialReceptionFlag>());
|
||||
env->SetObjectField(statusObj, field, newIntegerObj);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
@@ -2879,35 +2911,55 @@ static FrontendSettings getIsdbtFrontendSettings(JNIEnv *env, const jobject& set
|
||||
int64_t endFreq = getFrontendSettingsEndFreq(env, settings);
|
||||
FrontendSpectralInversion inversion = getFrontendSettingsSpectralInversion(env, settings);
|
||||
jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbtFrontendSettings");
|
||||
FrontendIsdbtModulation modulation =
|
||||
static_cast<FrontendIsdbtModulation>(
|
||||
env->GetIntField(settings, env->GetFieldID(clazz, "mModulation", "I")));
|
||||
FrontendIsdbtBandwidth bandwidth =
|
||||
static_cast<FrontendIsdbtBandwidth>(
|
||||
env->GetIntField(settings, env->GetFieldID(clazz, "mBandwidth", "I")));
|
||||
FrontendIsdbtMode mode =
|
||||
static_cast<FrontendIsdbtMode>(
|
||||
env->GetIntField(settings, env->GetFieldID(clazz, "mMode", "I")));
|
||||
FrontendIsdbtCoderate coderate =
|
||||
static_cast<FrontendIsdbtCoderate>(
|
||||
env->GetIntField(settings, env->GetFieldID(clazz, "mCodeRate", "I")));
|
||||
FrontendIsdbtMode mode = static_cast<FrontendIsdbtMode>(
|
||||
env->GetIntField(settings, env->GetFieldID(clazz, "mMode", "I")));
|
||||
FrontendIsdbtGuardInterval guardInterval =
|
||||
static_cast<FrontendIsdbtGuardInterval>(
|
||||
env->GetIntField(settings, env->GetFieldID(clazz, "mGuardInterval", "I")));
|
||||
int32_t serviceAreaId =
|
||||
env->GetIntField(settings, env->GetFieldID(clazz, "mServiceAreaId", "I"));
|
||||
FrontendIsdbtPartialReceptionFlag partialReceptionFlag =
|
||||
static_cast<FrontendIsdbtPartialReceptionFlag>(
|
||||
env->GetIntField(settings,
|
||||
env->GetFieldID(clazz, "mPartialReceptionFlag", "I")));
|
||||
|
||||
FrontendIsdbtSettings frontendIsdbtSettings{
|
||||
.frequency = freq,
|
||||
.endFrequency = endFreq,
|
||||
.modulation = modulation,
|
||||
.bandwidth = bandwidth,
|
||||
.mode = mode,
|
||||
.coderate = coderate,
|
||||
.guardInterval = guardInterval,
|
||||
.serviceAreaId = serviceAreaId,
|
||||
.inversion = inversion,
|
||||
.partialReceptionFlag = partialReceptionFlag,
|
||||
};
|
||||
|
||||
jobjectArray layerSettings = reinterpret_cast<jobjectArray>(
|
||||
env->GetObjectField(settings,
|
||||
env->GetFieldID(clazz, "mLayerSettings",
|
||||
"[Landroid/media/tv/tuner/frontend/"
|
||||
"IsdbtFrontendSettings$IsdbtLayerSettings;")));
|
||||
int len = env->GetArrayLength(layerSettings);
|
||||
jclass layerClazz = env->FindClass(
|
||||
"android/media/tv/tuner/frontend/IsdbtFrontendSettings$IsdbtLayerSettings");
|
||||
frontendIsdbtSettings.layerSettings.resize(len);
|
||||
for (int i = 0; i < len; i++) {
|
||||
jobject layer = env->GetObjectArrayElement(layerSettings, i);
|
||||
frontendIsdbtSettings.layerSettings[i].modulation = static_cast<FrontendIsdbtModulation>(
|
||||
env->GetIntField(layer, env->GetFieldID(layerClazz, "mModulation", "I")));
|
||||
frontendIsdbtSettings.layerSettings[i].timeInterleave =
|
||||
static_cast<FrontendIsdbtTimeInterleaveMode>(
|
||||
env->GetIntField(layer,
|
||||
env->GetFieldID(layerClazz, "mTimeInterleaveMode", "I")));
|
||||
frontendIsdbtSettings.layerSettings[i].coderate = static_cast<FrontendIsdbtCoderate>(
|
||||
env->GetIntField(layer, env->GetFieldID(layerClazz, "mCodeRate", "I")));
|
||||
frontendIsdbtSettings.layerSettings[i].numOfSegment =
|
||||
env->GetIntField(layer, env->GetFieldID(layerClazz, "mNumOfSegment", "I"));
|
||||
}
|
||||
|
||||
frontendSettings.set<FrontendSettings::Tag::isdbt>(frontendIsdbtSettings);
|
||||
return frontendSettings;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user