Re: [PATCH 8/9] android/hal-audio: Read fd from Output Stream response
flat view
From: Szymon Janc <hidden>
Date: 2014-01-17 18:13:52
Hi Andrzej, On Friday 17 January 2014 16:40:12 Andrzej Kaczmarek wrote:
quoted hunk ↗ jump to hunk
--- android/hal-audio.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)diff --git a/android/hal-audio.c b/android/hal-audio.c index f2cb12a..d8438f7 100644 --- a/android/hal-audio.c +++ b/android/hal-audio.c@@ -575,7 +575,7 @@ static int ipc_close_cmd(uint8_t endpoint_id) return result; } -static int ipc_open_stream_cmd(uint8_t endpoint_id, uint16_t *mtu, +static int ipc_open_stream_cmd(uint8_t endpoint_id, uint16_t *mtu, int *fd,struct audio_preset **caps) { char buf[BLUEZ_AUDIO_MTU];@@ -593,7 +593,7 @@ static int ipc_open_stream_cmd(uint8_t endpoint_id,uint16_t *mtu, cmd.id = endpoint_id; result = audio_ipc_cmd(AUDIO_SERVICE_ID, AUDIO_OP_OPEN_STREAM, - sizeof(cmd), &cmd, &rsp_len, rsp, NULL); + sizeof(cmd), &cmd, &rsp_len, rsp, fd); if (result == AUDIO_STATUS_SUCCESS) { size_t buf_len = sizeof(struct audio_preset) +@@ -990,6 +990,7 @@ static int audio_open_output_stream(structaudio_hw_device *dev, struct audio_preset *preset; const struct audio_codec *codec; uint16_t mtu; + int fd; out = calloc(1, sizeof(struct a2dp_stream_out)); if (!out)@@ -1017,13 +1018,15 @@ static int audio_open_output_stream(structaudio_hw_device *dev, /* TODO: for now we always use endpoint 0 */ out->ep = &audio_endpoints[0]; - if (ipc_open_stream_cmd(out->ep->id, &mtu, &preset) != + if (ipc_open_stream_cmd(out->ep->id, &mtu, &fd, &preset) != AUDIO_STATUS_SUCCESS) goto fail; - if (!preset) + if (!preset || fd < 0) goto fail;
For sanity, code under fail label should be updated to handle that either preset or fd might be valid here.
+ out->ep->fd = fd; +
I might be missing something but fd is never closed. Should this be done in audio_close_output_stream() ?
codec = out->ep->codec; codec->init(preset, mtu, &out->ep->codec_data);
-- Szymon K. Janc szymon.janc@gmail.com