Revert "TIF: add signal detection feature for HW inputs"
This reverts commit 102d0b7b6970523ca7040e30d4e4fd1a349a01cc.
Change-Id: I50a66d7bd1baaea134ddd6638c3cfe65860e681d
diff --git a/api/system-current.txt b/api/system-current.txt
index bff39c2..68414c6 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -24900,7 +24900,6 @@
public class TvStreamConfig implements android.os.Parcelable {
method public int describeContents();
- method public int getFlags();
method public int getGeneration();
method public int getMaxHeight();
method public int getMaxWidth();
@@ -24908,7 +24907,6 @@
method public int getType();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.media.tv.TvStreamConfig> CREATOR;
- field public static final int FLAG_MASK_SIGNAL_DETECTION = 1; // 0x1
field public static final int STREAM_TYPE_BUFFER_PRODUCER = 2; // 0x2
field public static final int STREAM_TYPE_INDEPENDENT_VIDEO_SOURCE = 1; // 0x1
}
@@ -24916,7 +24914,6 @@
public static final class TvStreamConfig.Builder {
ctor public TvStreamConfig.Builder();
method public android.media.tv.TvStreamConfig build();
- method public android.media.tv.TvStreamConfig.Builder flags(int);
method public android.media.tv.TvStreamConfig.Builder generation(int);
method public android.media.tv.TvStreamConfig.Builder maxHeight(int);
method public android.media.tv.TvStreamConfig.Builder maxWidth(int);
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index 22bb5f1..dfddaa5 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -223,9 +223,10 @@
* State for {@link #getInputState(String)} and
* {@link TvInputCallback#onInputStateChanged(String, int)}: The input source is connected.
*
- * <p>This state indicates that a source device is connected to the input port and in the normal
- * operation mode. It is mostly relevant to hardware inputs such as HDMI input.
- * Non-hardware inputs are considered connected all the time.
+ * <p>This state indicates that a source device is connected to the input port and is in the
+ * normal operation mode. It is mostly relevant to hardware inputs such as HDMI input. This is
+ * the default state for any hardware inputs where their states are unknown. Non-hardware inputs
+ * are considered connected all the time.
*/
public static final int INPUT_STATE_CONNECTED = 0;
@@ -234,9 +235,8 @@
* {@link TvInputCallback#onInputStateChanged(String, int)}: The input source is connected but
* in standby mode.
*
- * <p>This state indicates that a source device is connected to the input port and in standby or
- * low power mode. It is mostly relevant to hardware inputs such as HDMI inputs and Component
- * inputs.
+ * <p>This state indicates that a source device is connected to the input port but is in standby
+ * mode. It is mostly relevant to hardware inputs such as HDMI input.
*/
public static final int INPUT_STATE_CONNECTED_STANDBY = 1;
diff --git a/media/java/android/media/tv/TvStreamConfig.java b/media/java/android/media/tv/TvStreamConfig.java
index eae83cf..0c2f3fe 100644
--- a/media/java/android/media/tv/TvStreamConfig.java
+++ b/media/java/android/media/tv/TvStreamConfig.java
@@ -28,15 +28,8 @@
public class TvStreamConfig implements Parcelable {
static final String TAG = TvStreamConfig.class.getSimpleName();
- // Must be in sync with tv_input.h
public final static int STREAM_TYPE_INDEPENDENT_VIDEO_SOURCE = 1;
public final static int STREAM_TYPE_BUFFER_PRODUCER = 2;
- /**
- * A flag indicating whether the HAL is sure about signal at this stream. Note that
- * value of 0 here does not necessarily mean no signal. It just means that it may not have
- * signal and the underlying layer is not sure.
- */
- public static final int FLAG_MASK_SIGNAL_DETECTION = 0x1;
private int mStreamId;
private int mType;
@@ -48,10 +41,6 @@
* via tv_input_device::get_stream_configurations().
*/
private int mGeneration;
- /**
- * Flags for stream status. See FLAG_MASK_* for details.
- */
- private int mFlags;
public static final Parcelable.Creator<TvStreamConfig> CREATOR =
new Parcelable.Creator<TvStreamConfig>() {
@@ -63,8 +52,7 @@
type(source.readInt()).
maxWidth(source.readInt()).
maxHeight(source.readInt()).
- generation(source.readInt()).
- flags(source.readInt()).build();
+ generation(source.readInt()).build();
} catch (Exception e) {
Log.e(TAG, "Exception creating TvStreamConfig from parcel", e);
return null;
@@ -99,10 +87,6 @@
return mGeneration;
}
- public int getFlags() {
- return mFlags;
- }
-
@Override
public String toString() {
return "TvStreamConfig {mStreamId=" + mStreamId + ";" + "mType=" + mType + ";mGeneration="
@@ -122,7 +106,6 @@
dest.writeInt(mMaxWidth);
dest.writeInt(mMaxHeight);
dest.writeInt(mGeneration);
- dest.writeInt(mFlags);
}
/**
@@ -134,7 +117,6 @@
private Integer mMaxWidth;
private Integer mMaxHeight;
private Integer mGeneration;
- private int mFlags = 0;
public Builder() {
}
@@ -164,11 +146,6 @@
return this;
}
- public Builder flags(int flag) {
- mFlags = flag;
- return this;
- }
-
public TvStreamConfig build() {
if (mStreamId == null || mType == null || mMaxWidth == null || mMaxHeight == null
|| mGeneration == null) {
@@ -181,7 +158,6 @@
config.mMaxWidth = mMaxWidth;
config.mMaxHeight = mMaxHeight;
config.mGeneration = mGeneration;
- config.mFlags = mFlags;
return config;
}
}
@@ -196,7 +172,6 @@
&& config.mStreamId == mStreamId
&& config.mType == mType
&& config.mMaxWidth == mMaxWidth
- && config.mMaxHeight == mMaxHeight
- && config.mFlags == mFlags;
+ && config.mMaxHeight == mMaxHeight;
}
}
diff --git a/services/core/java/com/android/server/tv/TvInputHardwareManager.java b/services/core/java/com/android/server/tv/TvInputHardwareManager.java
index bf281d6..5c6a696 100644
--- a/services/core/java/com/android/server/tv/TvInputHardwareManager.java
+++ b/services/core/java/com/android/server/tv/TvInputHardwareManager.java
@@ -17,7 +17,6 @@
package com.android.server.tv;
import static android.media.tv.TvInputManager.INPUT_STATE_CONNECTED;
-import static android.media.tv.TvInputManager.INPUT_STATE_CONNECTED_STANDBY;
import static android.media.tv.TvInputManager.INPUT_STATE_DISCONNECTED;
import android.content.BroadcastReceiver;
@@ -110,6 +109,7 @@
private int mCurrentIndex = 0;
private int mCurrentMaxIndex = 0;
+ // TODO: Should handle STANDBY case.
private final SparseBooleanArray mHdmiStateMap = new SparseBooleanArray();
private final List<Message> mPendingHdmiDeviceEvents = new LinkedList<>();
@@ -213,7 +213,7 @@
String inputId = mHardwareInputIdMap.get(deviceId);
if (inputId != null) {
mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
- obtainStateFromConfigs(configs), 0, inputId).sendToTarget();
+ convertConnectedToState(configs.length > 0), 0, inputId).sendToTarget();
}
ITvInputHardwareCallback callback = connection.getCallbackLocked();
if (callback != null) {
@@ -263,13 +263,12 @@
|| connectionCallingUid != callingUid || connectionResolvedUserId != resolvedUserId;
}
- private int obtainStateFromConfigs(TvStreamConfig[] configs) {
- for (TvStreamConfig config : configs) {
- if ((config.getFlags() & TvStreamConfig.FLAG_MASK_SIGNAL_DETECTION) != 0) {
- return INPUT_STATE_CONNECTED;
- }
+ private int convertConnectedToState(boolean connected) {
+ if (connected) {
+ return INPUT_STATE_CONNECTED;
+ } else {
+ return INPUT_STATE_DISCONNECTED;
}
- return (configs.length > 0) ? INPUT_STATE_CONNECTED_STANDBY : INPUT_STATE_DISCONNECTED;
}
public void addHardwareInput(int deviceId, TvInputInfo info) {
@@ -294,14 +293,9 @@
}
String inputId = mHardwareInputIdMap.get(hardwareInfo.getDeviceId());
if (inputId != null && inputId.equals(info.getId())) {
- // No HDMI hotplug does not necessarily mean disconnected, as old devices may
- // not report hotplug state correctly. Using INPUT_STATE_CONNECTED_STANDBY to
- // denote unknown state.
- int state = mHdmiStateMap.valueAt(i)
- ? INPUT_STATE_CONNECTED
- : INPUT_STATE_CONNECTED_STANDBY;
- mHandler.obtainMessage(
- ListenerHandler.STATE_CHANGED, state, 0, inputId).sendToTarget();
+ mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
+ convertConnectedToState(mHdmiStateMap.valueAt(i)), 0,
+ inputId).sendToTarget();
return;
}
}
@@ -309,7 +303,7 @@
Connection connection = mConnections.get(deviceId);
if (connection != null) {
mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
- obtainStateFromConfigs(connection.getConfigsLocked()), 0,
+ convertConnectedToState(connection.getConfigsLocked().length > 0), 0,
info.getId()).sendToTarget();
}
}
@@ -1199,14 +1193,8 @@
if (inputId == null) {
return;
}
- // No HDMI hotplug does not necessarily mean disconnected, as old devices may
- // not report hotplug state correctly. Using INPUT_STATE_CONNECTED_STANDBY to
- // denote unknown state.
- int state = event.isConnected()
- ? INPUT_STATE_CONNECTED
- : INPUT_STATE_CONNECTED_STANDBY;
- mHandler.obtainMessage(
- ListenerHandler.STATE_CHANGED, state, 0, inputId).sendToTarget();
+ mHandler.obtainMessage(ListenerHandler.STATE_CHANGED,
+ convertConnectedToState(event.isConnected()), 0, inputId).sendToTarget();
}
}
}
diff --git a/services/core/jni/com_android_server_tv_TvInputHal.cpp b/services/core/jni/com_android_server_tv_TvInputHal.cpp
index c4316f6..ec4a3d3 100644
--- a/services/core/jni/com_android_server_tv_TvInputHal.cpp
+++ b/services/core/jni/com_android_server_tv_TvInputHal.cpp
@@ -54,7 +54,6 @@
jmethodID maxWidth;
jmethodID maxHeight;
jmethodID generation;
- jmethodID flags;
jmethodID build;
} gTvStreamConfigBuilderClassInfo;
@@ -240,7 +239,7 @@
int addOrUpdateStream(int deviceId, int streamId, const sp<Surface>& surface);
int removeStream(int deviceId, int streamId);
- const tv_stream_config_ext_t* getStreamConfigs(int deviceId, int* numConfigs);
+ const tv_stream_config_t* getStreamConfigs(int deviceId, int* numConfigs);
void onDeviceAvailable(const tv_input_device_info_t& info);
void onDeviceUnavailable(int deviceId);
@@ -289,15 +288,10 @@
sp<Looper> mLooper;
KeyedVector<int, KeyedVector<int, Connection> > mConnections;
-
- tv_stream_config_ext_t* mConfigBuffer;
- int mConfigBufferSize;
};
JTvInputHal::JTvInputHal(JNIEnv* env, jobject thiz, tv_input_device_t* device,
- const sp<Looper>& looper)
- : mConfigBuffer(NULL),
- mConfigBufferSize(0) {
+ const sp<Looper>& looper) {
mThiz = env->NewWeakGlobalRef(thiz);
mDevice = device;
mCallback.notify = &JTvInputHal::notify;
@@ -312,10 +306,6 @@
JNIEnv* env = AndroidRuntime::getJNIEnv();
env->DeleteWeakGlobalRef(mThiz);
mThiz = NULL;
-
- if (mConfigBuffer != NULL) {
- delete[] mConfigBuffer;
- }
}
JTvInputHal* JTvInputHal::createInstance(JNIEnv* env, jobject thiz, const sp<Looper>& looper) {
@@ -364,14 +354,15 @@
if (connection.mSourceHandle == NULL && connection.mThread == NULL) {
// Need to configure stream
int numConfigs = 0;
- const tv_stream_config_ext_t* configs = getStreamConfigs(deviceId, &numConfigs);
- if (configs == NULL) {
+ const tv_stream_config_t* configs = NULL;
+ if (mDevice->get_stream_configurations(
+ mDevice, deviceId, &numConfigs, &configs) != 0) {
ALOGE("Couldn't get stream configs");
return UNKNOWN_ERROR;
}
int configIndex = -1;
for (int i = 0; i < numConfigs; ++i) {
- if (configs[i].config.stream_id == streamId) {
+ if (configs[i].stream_id == streamId) {
configIndex = i;
break;
}
@@ -380,13 +371,13 @@
ALOGE("Cannot find a config with given stream ID: %d", streamId);
return BAD_VALUE;
}
- connection.mStreamType = configs[configIndex].config.type;
+ connection.mStreamType = configs[configIndex].type;
tv_stream_t stream;
- stream.stream_id = configs[configIndex].config.stream_id;
+ stream.stream_id = configs[configIndex].stream_id;
if (connection.mStreamType == TV_STREAM_TYPE_BUFFER_PRODUCER) {
- stream.buffer_producer.width = configs[configIndex].config.max_video_width;
- stream.buffer_producer.height = configs[configIndex].config.max_video_height;
+ stream.buffer_producer.width = configs[configIndex].max_video_width;
+ stream.buffer_producer.height = configs[configIndex].max_video_height;
}
if (mDevice->open_stream(mDevice, deviceId, &stream) != 0) {
ALOGE("Couldn't add stream");
@@ -440,33 +431,12 @@
return NO_ERROR;
}
-const tv_stream_config_ext_t* JTvInputHal::getStreamConfigs(int deviceId, int* numConfigs) {
- const tv_stream_config_ext_t* configs = NULL;
- if (mDevice->common.version >= TV_INPUT_DEVICE_API_VERSION_0_2) {
- if (mDevice->get_stream_configurations_ext(
- mDevice, deviceId, numConfigs, &configs) != 0) {
- ALOGE("Couldn't get stream configs");
- return NULL;
- }
- } else {
- const tv_stream_config_t* oldConfigs;
- if (mDevice->get_stream_configurations(
- mDevice, deviceId, numConfigs, &oldConfigs) != 0) {
- ALOGE("Couldn't get stream configs");
- return NULL;
- }
- if (mConfigBufferSize < *numConfigs) {
- mConfigBufferSize = (*numConfigs / 16 + 1) * 16;
- if (mConfigBuffer != NULL) {
- delete[] mConfigBuffer;
- }
- mConfigBuffer = new tv_stream_config_ext_t[mConfigBufferSize];
- }
- for (int i = 0; i < *numConfigs; ++i) {
- mConfigBuffer[i].config = oldConfigs[i];
- mConfigBuffer[i].flags = 0;
- }
- configs = mConfigBuffer;
+const tv_stream_config_t* JTvInputHal::getStreamConfigs(int deviceId, int* numConfigs) {
+ const tv_stream_config_t* configs = NULL;
+ if (mDevice->get_stream_configurations(
+ mDevice, deviceId, numConfigs, &configs) != 0) {
+ ALOGE("Couldn't get stream configs");
+ return NULL;
}
return configs;
}
@@ -659,7 +629,7 @@
jlong ptr, jint deviceId, jint generation) {
JTvInputHal* tvInputHal = (JTvInputHal*)ptr;
int numConfigs = 0;
- const tv_stream_config_ext_t* configs = tvInputHal->getStreamConfigs(deviceId, &numConfigs);
+ const tv_stream_config_t* configs = tvInputHal->getStreamConfigs(deviceId, &numConfigs);
jobjectArray result = env->NewObjectArray(numConfigs, gTvStreamConfigClassInfo.clazz, NULL);
for (int i = 0; i < numConfigs; ++i) {
@@ -667,20 +637,15 @@
gTvStreamConfigBuilderClassInfo.clazz,
gTvStreamConfigBuilderClassInfo.constructor);
env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.streamId, configs[i].config.stream_id);
+ builder, gTvStreamConfigBuilderClassInfo.streamId, configs[i].stream_id);
env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.type, configs[i].config.type);
+ builder, gTvStreamConfigBuilderClassInfo.type, configs[i].type);
env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.maxWidth,
- configs[i].config.max_video_width);
+ builder, gTvStreamConfigBuilderClassInfo.maxWidth, configs[i].max_video_width);
env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.maxHeight,
- configs[i].config.max_video_height);
+ builder, gTvStreamConfigBuilderClassInfo.maxHeight, configs[i].max_video_height);
env->CallObjectMethod(
builder, gTvStreamConfigBuilderClassInfo.generation, generation);
- env->CallObjectMethod(
- builder, gTvStreamConfigBuilderClassInfo.flags,
- configs[i].flags);
jobject config = env->CallObjectMethod(builder, gTvStreamConfigBuilderClassInfo.build);
@@ -772,10 +737,6 @@
gTvStreamConfigBuilderClassInfo.clazz,
"generation", "(I)Landroid/media/tv/TvStreamConfig$Builder;");
GET_METHOD_ID(
- gTvStreamConfigBuilderClassInfo.flags,
- gTvStreamConfigBuilderClassInfo.clazz,
- "flags", "(I)Landroid/media/tv/TvStreamConfig$Builder;");
- GET_METHOD_ID(
gTvStreamConfigBuilderClassInfo.build,
gTvStreamConfigBuilderClassInfo.clazz,
"build", "()Landroid/media/tv/TvStreamConfig;");