tv_input: add signal detection flag to stream config
Bug: 23820259 Change-Id: I693f159b35192e14182cb3bc9082b2445c129560
This commit is contained in:
parent
898b4ba314
commit
d15399e13d
2 changed files with 71 additions and 14 deletions
|
@ -33,14 +33,18 @@ __BEGIN_DECLS
|
|||
*
|
||||
* Version History:
|
||||
*
|
||||
* TV_INPUT_MODULE_API_VERSION_0_1:
|
||||
* Initial TV input hardware module API.
|
||||
* TV_INPUT_DEVICE_API_VERSION_0_1:
|
||||
* Initial TV input hardware device API.
|
||||
*
|
||||
* TV_INPUT_DEVICE_API_VERSION_0_2:
|
||||
* Minor revision --- add video detection flag in stream configs.
|
||||
*
|
||||
*/
|
||||
|
||||
#define TV_INPUT_MODULE_API_VERSION_0_1 HARDWARE_MODULE_API_VERSION(0, 1)
|
||||
|
||||
#define TV_INPUT_DEVICE_API_VERSION_0_1 HARDWARE_DEVICE_API_VERSION(0, 1)
|
||||
#define TV_INPUT_DEVICE_API_VERSION_0_2 HARDWARE_DEVICE_API_VERSION(0, 2)
|
||||
|
||||
/*
|
||||
* The id of this module
|
||||
|
@ -164,7 +168,8 @@ enum {
|
|||
* port. the framework regards input devices with no available streams as
|
||||
* disconnected, so the implementation can generate this event with no
|
||||
* available streams to indicate that this device is disconnected, and vice
|
||||
* versa.
|
||||
* versa. In addition, streams have signal detection flag to denote if
|
||||
* signal is detected for sure.
|
||||
*/
|
||||
TV_INPUT_EVENT_STREAM_CONFIGURATIONS_CHANGED = 3,
|
||||
/*
|
||||
|
@ -264,6 +269,33 @@ typedef struct tv_stream_config {
|
|||
uint32_t max_video_height;
|
||||
} tv_stream_config_t;
|
||||
|
||||
enum {
|
||||
/*
|
||||
* Set if signal is detected on this stream. Note that even if this mask is
|
||||
* unset it does not necessarily mean no signal --- it denotes that HAL is
|
||||
* unsure of the signal status.
|
||||
*/
|
||||
TV_STREAM_FLAG_MASK_SIGNAL_DETECTION = 0x1,
|
||||
};
|
||||
|
||||
/*
|
||||
* >= TV_INPUT_DEVICE_API_VERSION_0_2
|
||||
*
|
||||
* tv_stream_config_t extended in a way that allows extension without breaking
|
||||
* binary compatibility
|
||||
*/
|
||||
typedef struct tv_stream_config_ext {
|
||||
tv_stream_config_t config;
|
||||
|
||||
/*
|
||||
* Flags to show the status of this stream. See TV_STREAM_FLAG_* for
|
||||
* details.
|
||||
*/
|
||||
uint32_t flags;
|
||||
|
||||
int32_t reserved[16 - 1];
|
||||
} tv_stream_config_ext_t;
|
||||
|
||||
typedef struct buffer_producer_stream {
|
||||
/*
|
||||
* IN/OUT: Width / height of the stream. Client may request for specific
|
||||
|
@ -397,7 +429,22 @@ typedef struct tv_input_device {
|
|||
int (*cancel_capture)(struct tv_input_device* dev, int device_id,
|
||||
int stream_id, uint32_t seq);
|
||||
|
||||
void* reserved[16];
|
||||
/*
|
||||
* get_stream_configurations_ext:
|
||||
*
|
||||
* Get stream configurations for a specific device. An input device may have
|
||||
* multiple configurations.
|
||||
*
|
||||
* The configs object is guaranteed to be valid only until the next call to
|
||||
* get_stream_configurations_ext() or STREAM_CONFIGURATIONS_CHANGED event.
|
||||
*
|
||||
* Return 0 on success.
|
||||
*/
|
||||
int (*get_stream_configurations_ext)(const struct tv_input_device* dev,
|
||||
int device_id, int* num_configurations,
|
||||
const tv_stream_config_ext_t** configs);
|
||||
|
||||
void* reserved[16 - 1];
|
||||
} tv_input_device_t;
|
||||
|
||||
__END_DECLS
|
||||
|
|
|
@ -37,18 +37,18 @@ static int tv_input_device_open(const struct hw_module_t* module,
|
|||
const char* name, struct hw_device_t** device);
|
||||
|
||||
static struct hw_module_methods_t tv_input_module_methods = {
|
||||
open: tv_input_device_open
|
||||
.open = tv_input_device_open
|
||||
};
|
||||
|
||||
tv_input_module_t HAL_MODULE_INFO_SYM = {
|
||||
common: {
|
||||
tag: HARDWARE_MODULE_TAG,
|
||||
version_major: 0,
|
||||
version_minor: 1,
|
||||
id: TV_INPUT_HARDWARE_MODULE_ID,
|
||||
name: "Sample TV input module",
|
||||
author: "The Android Open Source Project",
|
||||
methods: &tv_input_module_methods,
|
||||
.common = {
|
||||
.tag = HARDWARE_MODULE_TAG,
|
||||
.version_major = 0,
|
||||
.version_minor = 1,
|
||||
.id = TV_INPUT_HARDWARE_MODULE_ID,
|
||||
.name = "Sample TV input module",
|
||||
.author = "The Android Open Source Project",
|
||||
.methods = &tv_input_module_methods,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -72,7 +72,8 @@ static int tv_input_initialize(struct tv_input_device* dev,
|
|||
}
|
||||
|
||||
static int tv_input_get_stream_configurations(
|
||||
const struct tv_input_device*, int, int*, const tv_stream_config_t**)
|
||||
const struct tv_input_device*, int, int*,
|
||||
const tv_stream_config_t**)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -98,6 +99,13 @@ static int tv_input_cancel_capture(struct tv_input_device*, int, int, uint32_t)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int tv_input_get_stream_configurations_ext(
|
||||
const struct tv_input_device*, int, int*,
|
||||
const tv_stream_config_ext_t**)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
static int tv_input_device_close(struct hw_device_t *dev)
|
||||
|
@ -134,6 +142,8 @@ static int tv_input_device_open(const struct hw_module_t* module,
|
|||
dev->device.close_stream = tv_input_close_stream;
|
||||
dev->device.request_capture = tv_input_request_capture;
|
||||
dev->device.cancel_capture = tv_input_cancel_capture;
|
||||
dev->device.get_stream_configurations_ext =
|
||||
tv_input_get_stream_configurations_ext;
|
||||
|
||||
*device = &dev->device.common;
|
||||
status = 0;
|
||||
|
|
Loading…
Reference in a new issue