2014-11-04 14:37:36

by Andrei Emeltchenko

[permalink] [raw]
Subject: [PATCHv2 1/2] android/hal-audio: Add support for new Android API

From: Andrei Emeltchenko <[email protected]>

For new Android API add parameter address to audio_open_output_stream()
and audio_open_input_stream().
---
android/hal-audio.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 59 insertions(+), 5 deletions(-)

diff --git a/android/hal-audio.c b/android/hal-audio.c
index e70351e..0e9891d 100644
--- a/android/hal-audio.c
+++ b/android/hal-audio.c
@@ -1108,13 +1108,13 @@ static int in_remove_audio_effect(const struct audio_stream *stream,
return -ENOSYS;
}

-static int audio_open_output_stream(struct audio_hw_device *dev,
+static int audio_open_output_stream_real(struct audio_hw_device *dev,
audio_io_handle_t handle,
audio_devices_t devices,
audio_output_flags_t flags,
struct audio_config *config,
- struct audio_stream_out **stream_out)
-
+ struct audio_stream_out **stream_out,
+ const char *address)
{
struct a2dp_audio_dev *a2dp_dev = (struct a2dp_audio_dev *) dev;
struct a2dp_stream_out *out;
@@ -1171,6 +1171,31 @@ fail:
return -EIO;
}

+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+static int audio_open_output_stream(struct audio_hw_device *dev,
+ audio_io_handle_t handle,
+ audio_devices_t devices,
+ audio_output_flags_t flags,
+ struct audio_config *config,
+ struct audio_stream_out **stream_out,
+ const char *address)
+{
+ return audio_open_output_stream_real(dev, handle, devices, flags,
+ config, stream_out, address);
+}
+#else
+static int audio_open_output_stream(struct audio_hw_device *dev,
+ audio_io_handle_t handle,
+ audio_devices_t devices,
+ audio_output_flags_t flags,
+ struct audio_config *config,
+ struct audio_stream_out **stream_out)
+{
+ return audio_open_output_stream_real(dev, handle, devices, flags,
+ config, stream_out, NULL);
+}
+#endif
+
static void audio_close_output_stream(struct audio_hw_device *dev,
struct audio_stream_out *stream)
{
@@ -1252,11 +1277,14 @@ static size_t audio_get_input_buffer_size(const struct audio_hw_device *dev,
return -ENOSYS;
}

-static int audio_open_input_stream(struct audio_hw_device *dev,
+static int audio_open_input_stream_real(struct audio_hw_device *dev,
audio_io_handle_t handle,
audio_devices_t devices,
struct audio_config *config,
- struct audio_stream_in **stream_in)
+ struct audio_stream_in **stream_in,
+ audio_input_flags_t flags,
+ const char *address,
+ audio_source_t source)
{
struct audio_stream_in *in;

@@ -1287,6 +1315,32 @@ static int audio_open_input_stream(struct audio_hw_device *dev,
return 0;
}

+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+static int audio_open_input_stream(struct audio_hw_device *dev,
+ audio_io_handle_t handle,
+ audio_devices_t devices,
+ struct audio_config *config,
+ struct audio_stream_in **stream_in,
+ audio_input_flags_t flags,
+ const char *address,
+ audio_source_t source)
+{
+ return audio_open_input_stream_real(dev, handle, devices, config,
+ stream_in, flags, address,
+ source);
+}
+#else
+static int audio_open_input_stream(struct audio_hw_device *dev,
+ audio_io_handle_t handle,
+ audio_devices_t devices,
+ struct audio_config *config,
+ struct audio_stream_in **stream_in)
+{
+ return audio_open_input_stream_real(dev, handle, devices, config,
+ stream_in, 0, NULL, 0);
+}
+#endif
+
static void audio_close_input_stream(struct audio_hw_device *dev,
struct audio_stream_in *stream_in)
{
--
1.9.1



2014-11-04 15:02:42

by Szymon Janc

[permalink] [raw]
Subject: Re: [PATCHv2 1/2] android/hal-audio: Add support for new Android API

Hi Andrei,

On Tuesday 04 of November 2014 16:37:36 Andrei Emeltchenko wrote:
> From: Andrei Emeltchenko <[email protected]>
>
> For new Android API add parameter address to audio_open_output_stream()
> and audio_open_input_stream().
> ---
> android/hal-audio.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++-----
> 1 file changed, 59 insertions(+), 5 deletions(-)
>
> diff --git a/android/hal-audio.c b/android/hal-audio.c
> index e70351e..0e9891d 100644
> --- a/android/hal-audio.c
> +++ b/android/hal-audio.c
> @@ -1108,13 +1108,13 @@ static int in_remove_audio_effect(const struct audio_stream *stream,
> return -ENOSYS;
> }
>
> -static int audio_open_output_stream(struct audio_hw_device *dev,
> +static int audio_open_output_stream_real(struct audio_hw_device *dev,
> audio_io_handle_t handle,
> audio_devices_t devices,
> audio_output_flags_t flags,
> struct audio_config *config,
> - struct audio_stream_out **stream_out)
> -
> + struct audio_stream_out **stream_out,
> + const char *address)
> {
> struct a2dp_audio_dev *a2dp_dev = (struct a2dp_audio_dev *) dev;
> struct a2dp_stream_out *out;
> @@ -1171,6 +1171,31 @@ fail:
> return -EIO;
> }
>
> +#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
> +static int audio_open_output_stream(struct audio_hw_device *dev,
> + audio_io_handle_t handle,
> + audio_devices_t devices,
> + audio_output_flags_t flags,
> + struct audio_config *config,
> + struct audio_stream_out **stream_out,
> + const char *address)
> +{
> + return audio_open_output_stream_real(dev, handle, devices, flags,
> + config, stream_out, address);
> +}
> +#else
> +static int audio_open_output_stream(struct audio_hw_device *dev,
> + audio_io_handle_t handle,
> + audio_devices_t devices,
> + audio_output_flags_t flags,
> + struct audio_config *config,
> + struct audio_stream_out **stream_out)
> +{
> + return audio_open_output_stream_real(dev, handle, devices, flags,
> + config, stream_out, NULL);
> +}
> +#endif
> +
> static void audio_close_output_stream(struct audio_hw_device *dev,
> struct audio_stream_out *stream)
> {
> @@ -1252,11 +1277,14 @@ static size_t audio_get_input_buffer_size(const struct audio_hw_device *dev,
> return -ENOSYS;
> }
>
> -static int audio_open_input_stream(struct audio_hw_device *dev,
> +static int audio_open_input_stream_real(struct audio_hw_device *dev,
> audio_io_handle_t handle,
> audio_devices_t devices,
> struct audio_config *config,
> - struct audio_stream_in **stream_in)
> + struct audio_stream_in **stream_in,
> + audio_input_flags_t flags,
> + const char *address,
> + audio_source_t source)
> {
> struct audio_stream_in *in;
>
> @@ -1287,6 +1315,32 @@ static int audio_open_input_stream(struct audio_hw_device *dev,
> return 0;
> }
>
> +#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
> +static int audio_open_input_stream(struct audio_hw_device *dev,
> + audio_io_handle_t handle,
> + audio_devices_t devices,
> + struct audio_config *config,
> + struct audio_stream_in **stream_in,
> + audio_input_flags_t flags,
> + const char *address,
> + audio_source_t source)
> +{
> + return audio_open_input_stream_real(dev, handle, devices, config,
> + stream_in, flags, address,
> + source);
> +}
> +#else
> +static int audio_open_input_stream(struct audio_hw_device *dev,
> + audio_io_handle_t handle,
> + audio_devices_t devices,
> + struct audio_config *config,
> + struct audio_stream_in **stream_in)
> +{
> + return audio_open_input_stream_real(dev, handle, devices, config,
> + stream_in, 0, NULL, 0);
> +}
> +#endif
> +
> static void audio_close_input_stream(struct audio_hw_device *dev,
> struct audio_stream_in *stream_in)
> {
>

Both patches applied, thanks.

--
Best regards,
Szymon Janc

2014-11-04 14:37:37

by Andrei Emeltchenko

[permalink] [raw]
Subject: [PATCHv2 2/2] android/hal-audio: Implement dummy Audio HAL functions

From: Andrei Emeltchenko <[email protected]>

Enable debug prints and prevent crash.
---
android/hal-audio.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 53 insertions(+)

diff --git a/android/hal-audio.c b/android/hal-audio.c
index 0e9891d..1caa4eb 100644
--- a/android/hal-audio.c
+++ b/android/hal-audio.c
@@ -1354,6 +1354,51 @@ static int audio_dump(const audio_hw_device_t *device, int fd)
return -ENOSYS;
}

+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+static int set_master_mute(struct audio_hw_device *dev, bool mute)
+{
+ DBG("");
+ return -ENOSYS;
+}
+
+static int get_master_mute(struct audio_hw_device *dev, bool *mute)
+{
+ DBG("");
+ return -ENOSYS;
+}
+
+static int create_audio_patch(struct audio_hw_device *dev,
+ unsigned int num_sources,
+ const struct audio_port_config *sources,
+ unsigned int num_sinks,
+ const struct audio_port_config *sinks,
+ audio_patch_handle_t *handle)
+{
+ DBG("");
+ return -ENOSYS;
+}
+
+static int release_audio_patch(struct audio_hw_device *dev,
+ audio_patch_handle_t handle)
+{
+ DBG("");
+ return -ENOSYS;
+}
+
+static int get_audio_port(struct audio_hw_device *dev, struct audio_port *port)
+{
+ DBG("");
+ return -ENOSYS;
+}
+
+static int set_audio_port_config(struct audio_hw_device *dev,
+ const struct audio_port_config *config)
+{
+ DBG("");
+ return -ENOSYS;
+}
+#endif
+
static int audio_close(hw_device_t *device)
{
struct a2dp_audio_dev *a2dp_dev = (struct a2dp_audio_dev *)device;
@@ -1550,6 +1595,14 @@ static int audio_open(const hw_module_t *module, const char *name,
a2dp_dev->dev.open_input_stream = audio_open_input_stream;
a2dp_dev->dev.close_input_stream = audio_close_input_stream;
a2dp_dev->dev.dump = audio_dump;
+#if ANDROID_VERSION >= PLATFORM_VER(5, 0, 0)
+ a2dp_dev->dev.set_master_mute = set_master_mute;
+ a2dp_dev->dev.get_master_mute = get_master_mute;
+ a2dp_dev->dev.create_audio_patch = create_audio_patch;
+ a2dp_dev->dev.release_audio_patch = release_audio_patch;
+ a2dp_dev->dev.get_audio_port = get_audio_port;
+ a2dp_dev->dev.set_audio_port_config = set_audio_port_config;
+#endif

for (i = 0; i < NUM_CODECS; i++) {
const struct audio_codec *codec = audio_codecs[i].get_codec();
--
1.9.1