summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFletcher Woodruff <fletcherw@chromium.org>2019-06-06 16:48:00 -0600
committerchrome-bot <chrome-bot@chromium.org>2019-06-11 16:07:52 -0700
commit2f265de12903e1176123a1fd57387044661cb241 (patch)
treed9e345680e8e76c9b501162bdbb54de1d67927ee
parentde3492d0b22c9c5cfac3325fcabfea6ec0a52fc0 (diff)
downloadadhd-2f265de12903e1176123a1fd57387044661cb241.tar.gz
CRAS: rstream: unsplit output and input shm
rstream has separate functions for output and input shm, but they refer to the same pointer. Combine the two functions. BUG=chromium:968724 TEST=unit tests, playback on device Change-Id: Ib02acab1578cba7083006e01ce294d4d234bd969 Reviewed-on: https://chromium-review.googlesource.com/1649043 Commit-Ready: Fletcher Woodruff <fletcherw@chromium.org> Tested-by: Fletcher Woodruff <fletcherw@chromium.org> Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
-rw-r--r--cras/src/server/audio_thread.c2
-rw-r--r--cras/src/server/cras_control_rclient.c4
-rw-r--r--cras/src/server/cras_rstream.c15
-rw-r--r--cras/src/server/cras_rstream.h33
-rw-r--r--cras/src/server/dev_io.c5
-rw-r--r--cras/src/server/dev_stream.c10
-rw-r--r--cras/src/tests/rstream_unittest.cc12
7 files changed, 29 insertions, 52 deletions
diff --git a/cras/src/server/audio_thread.c b/cras/src/server/audio_thread.c
index 99bfb1fe..4bad3d03 100644
--- a/cras/src/server/audio_thread.c
+++ b/cras/src/server/audio_thread.c
@@ -403,7 +403,7 @@ static int thread_drain_stream_ms_remaining(struct audio_thread *thread,
if (rstream->direction != CRAS_STREAM_OUTPUT)
return 0;
- shm = cras_rstream_output_shm(rstream);
+ shm = cras_rstream_shm(rstream);
fr_in_buff = cras_shm_get_frames(shm);
if (fr_in_buff <= 0)
diff --git a/cras/src/server/cras_control_rclient.c b/cras/src/server/cras_control_rclient.c
index 9bd05969..b95c59cb 100644
--- a/cras/src/server/cras_control_rclient.c
+++ b/cras/src/server/cras_control_rclient.c
@@ -83,8 +83,8 @@ static int handle_client_stream_connect(struct cras_rclient *client,
cras_rstream_get_total_shm_size(stream));
reply = &stream_connected_old.header;
}
- stream_fds[0] = cras_rstream_input_shm_fd(stream);
- stream_fds[1] = cras_rstream_output_shm_fd(stream);
+ stream_fds[0] = cras_rstream_shm_fd(stream);
+ stream_fds[1] = cras_rstream_shm_fd(stream);
rc = client->ops->send_message_to_client(client, reply, stream_fds, 2);
if (rc < 0) {
syslog(LOG_ERR, "Failed to send connected messaged\n");
diff --git a/cras/src/server/cras_rstream.c b/cras/src/server/cras_rstream.c
index 5ffe6597..ec7a4eb6 100644
--- a/cras/src/server/cras_rstream.c
+++ b/cras/src/server/cras_rstream.c
@@ -394,20 +394,18 @@ void cras_rstream_dev_offset_update(struct cras_rstream *rstream,
void cras_rstream_update_input_write_pointer(struct cras_rstream *rstream)
{
- struct cras_audio_shm *shm = cras_rstream_input_shm(rstream);
unsigned int nwritten = buffer_share_get_new_write_point(
rstream->buf_state);
- cras_shm_buffer_written(shm, nwritten);
+ cras_shm_buffer_written(rstream->shm, nwritten);
}
void cras_rstream_update_output_read_pointer(struct cras_rstream *rstream)
{
- struct cras_audio_shm *shm = cras_rstream_input_shm(rstream);
unsigned int nwritten = buffer_share_get_new_write_point(
rstream->buf_state);
- cras_shm_buffer_read(shm, nwritten);
+ cras_shm_buffer_read(rstream->shm, nwritten);
}
unsigned int cras_rstream_dev_offset(const struct cras_rstream *rstream,
@@ -418,9 +416,8 @@ unsigned int cras_rstream_dev_offset(const struct cras_rstream *rstream,
void cras_rstream_update_queued_frames(struct cras_rstream *rstream)
{
- const struct cras_audio_shm *shm = cras_rstream_output_shm(rstream);
- rstream->queued_frames = MIN(cras_shm_get_frames(shm),
- rstream->buffer_frames);
+ rstream->queued_frames =
+ MIN(cras_shm_get_frames(rstream->shm), rstream->buffer_frames);
}
unsigned int cras_rstream_playable_frames(struct cras_rstream *rstream,
@@ -432,9 +429,7 @@ unsigned int cras_rstream_playable_frames(struct cras_rstream *rstream,
float cras_rstream_get_volume_scaler(struct cras_rstream *rstream)
{
- const struct cras_audio_shm *shm = cras_rstream_output_shm(rstream);
-
- return cras_shm_get_volume_scaler(shm);
+ return cras_shm_get_volume_scaler(rstream->shm);
}
uint8_t *cras_rstream_get_readable_frames(struct cras_rstream *rstream,
diff --git a/cras/src/server/cras_rstream.h b/cras/src/server/cras_rstream.h
index 75a6c861..e06e7c95 100644
--- a/cras/src/server/cras_rstream.h
+++ b/cras/src/server/cras_rstream.h
@@ -208,43 +208,26 @@ static inline void cras_rstream_set_is_draining(struct cras_rstream *stream,
stream->is_draining = is_draining;
}
-/* Gets the shm key used to find the output shm region. */
-static inline int cras_rstream_output_shm_fd(const struct cras_rstream *stream)
+/* Gets the backing fd for this stream's shm region. */
+static inline int cras_rstream_shm_fd(const struct cras_rstream *stream)
{
return stream->shm->info.fd;
}
-/* Gets the shm key used to find the input shm region. */
-static inline int cras_rstream_input_shm_fd(const struct cras_rstream *stream)
+/* Gets shared memory region for this stream. */
+static inline struct cras_audio_shm *
+cras_rstream_shm(struct cras_rstream *stream)
{
- return stream->shm->info.fd;
+ return stream->shm;
}
/* Gets the total size of shm memory allocated. */
static inline size_t cras_rstream_get_total_shm_size(
const struct cras_rstream *stream)
{
- if (stream->direction == CRAS_STREAM_OUTPUT)
- return cras_shm_total_size(stream->shm);
-
- /* Use the shm size for loopback streams. */
return cras_shm_total_size(stream->shm);
}
-/* Gets shared memory region for this stream. */
-static inline
-struct cras_audio_shm *cras_rstream_input_shm(struct cras_rstream *stream)
-{
- return stream->shm;
-}
-
-/* Gets shared memory region for this stream. */
-static inline
-struct cras_audio_shm *cras_rstream_output_shm(struct cras_rstream *stream)
-{
- return stream->shm;
-}
-
/* Checks if the stream uses an output device. */
static inline int stream_uses_output(const struct cras_rstream *s)
{
@@ -300,13 +283,13 @@ unsigned int cras_rstream_dev_offset(const struct cras_rstream *rstream,
static inline unsigned int cras_rstream_level(struct cras_rstream *rstream)
{
- const struct cras_audio_shm *shm = cras_rstream_input_shm(rstream);
+ const struct cras_audio_shm *shm = cras_rstream_shm(rstream);
return cras_shm_frames_written(shm);
}
static inline int cras_rstream_input_level_met(struct cras_rstream *rstream)
{
- const struct cras_audio_shm *shm = cras_rstream_input_shm(rstream);
+ const struct cras_audio_shm *shm = cras_rstream_shm(rstream);
return cras_shm_frames_written(shm) >= rstream->cb_threshold;
}
diff --git a/cras/src/server/dev_io.c b/cras/src/server/dev_io.c
index 759f735c..75dd44d7 100644
--- a/cras/src/server/dev_io.c
+++ b/cras/src/server/dev_io.c
@@ -133,8 +133,7 @@ static int fetch_streams(struct open_dev *adev)
DL_FOREACH(adev->dev->streams, dev_stream) {
struct cras_rstream *rstream = dev_stream->stream;
- struct cras_audio_shm *shm =
- cras_rstream_output_shm(rstream);
+ struct cras_audio_shm *shm = cras_rstream_shm(rstream);
struct timespec now;
clock_gettime(CLOCK_MONOTONIC_RAW, &now);
@@ -261,7 +260,7 @@ static unsigned int get_stream_limit(
if (rstream->flags & TRIGGER_ONLY)
continue;
- shm = cras_rstream_input_shm(rstream);
+ shm = cras_rstream_shm(rstream);
if (cras_shm_check_write_overrun(shm))
ATLOG(atlog, AUDIO_THREAD_READ_OVERRUN,
adev->dev->info.idx, rstream->stream_id,
diff --git a/cras/src/server/dev_stream.c b/cras/src/server/dev_stream.c
index 9b445a2e..11e974a7 100644
--- a/cras/src/server/dev_stream.c
+++ b/cras/src/server/dev_stream.c
@@ -297,7 +297,7 @@ static unsigned int capture_copy_converted_to_stream(
unsigned int offset;
const struct cras_audio_format *fmt;
- shm = cras_rstream_input_shm(rstream);
+ shm = cras_rstream_shm(rstream);
fmt = cras_fmt_conv_out_format(dev_stream->conv);
frame_bytes = cras_get_format_bytes(fmt);
@@ -385,7 +385,7 @@ unsigned int dev_stream_capture(struct dev_stream *dev_stream,
cras_rstream_dev_offset(rstream, dev_stream->dev_id);
/* Set up the shm area and copy to it. */
- shm = cras_rstream_input_shm(rstream);
+ shm = cras_rstream_shm(rstream);
stream_samples = cras_shm_get_writeable_frames(
shm,
cras_rstream_get_cb_threshold(rstream),
@@ -459,7 +459,7 @@ unsigned int dev_stream_capture_avail(const struct dev_stream *dev_stream)
unsigned int dev_offset =
cras_rstream_dev_offset(rstream, dev_stream->dev_id);
- shm = cras_rstream_input_shm(rstream);
+ shm = cras_rstream_shm(rstream);
wlimit = cras_rstream_get_max_write_frames(rstream);
wlimit -= dev_offset;
@@ -631,7 +631,7 @@ void dev_stream_set_delay(const struct dev_stream *dev_stream,
unsigned int stream_frames;
if (rstream->direction == CRAS_STREAM_OUTPUT) {
- shm = cras_rstream_output_shm(rstream);
+ shm = cras_rstream_shm(rstream);
stream_frames = cras_fmt_conv_out_frames_to_in(dev_stream->conv,
delay_frames);
cras_set_playback_timestamp(rstream->format.frame_rate,
@@ -639,7 +639,7 @@ void dev_stream_set_delay(const struct dev_stream *dev_stream,
cras_shm_get_frames(shm),
&shm->area->ts);
} else {
- shm = cras_rstream_input_shm(rstream);
+ shm = cras_rstream_shm(rstream);
stream_frames = cras_fmt_conv_in_frames_to_out(dev_stream->conv,
delay_frames);
if (cras_shm_frames_written(shm) == 0)
diff --git a/cras/src/tests/rstream_unittest.cc b/cras/src/tests/rstream_unittest.cc
index 9c381cec..8b04f7af 100644
--- a/cras/src/tests/rstream_unittest.cc
+++ b/cras/src/tests/rstream_unittest.cc
@@ -134,15 +134,15 @@ TEST_F(RstreamTestSuite, CreateOutput) {
EXPECT_EQ(2048, cras_rstream_get_cb_threshold(s));
EXPECT_EQ(CRAS_STREAM_TYPE_DEFAULT, cras_rstream_get_type(s));
EXPECT_EQ(CRAS_STREAM_OUTPUT, cras_rstream_get_direction(s));
- EXPECT_NE((void *)NULL, cras_rstream_output_shm(s));
+ EXPECT_NE((void*)NULL, cras_rstream_shm(s));
rc = cras_rstream_get_format(s, &fmt_ret);
EXPECT_EQ(0, rc);
EXPECT_TRUE(format_equal(&fmt_ret, &fmt_));
// Check if shm is really set up.
- shm_ret = cras_rstream_output_shm(s);
+ shm_ret = cras_rstream_shm(s);
ASSERT_NE((void *)NULL, shm_ret);
- fd_ret = cras_rstream_output_shm_fd(s);
+ fd_ret = cras_rstream_shm_fd(s);
shm_size = cras_rstream_get_total_shm_size(s);
EXPECT_GT(shm_size, 4096);
shm_mapped.area = (struct cras_audio_shm_area *)mmap(
@@ -171,15 +171,15 @@ TEST_F(RstreamTestSuite, CreateInput) {
EXPECT_EQ(2048, cras_rstream_get_cb_threshold(s));
EXPECT_EQ(CRAS_STREAM_TYPE_DEFAULT, cras_rstream_get_type(s));
EXPECT_EQ(CRAS_STREAM_INPUT, cras_rstream_get_direction(s));
- EXPECT_NE((void *)NULL, cras_rstream_input_shm(s));
+ EXPECT_NE((void*)NULL, cras_rstream_shm(s));
rc = cras_rstream_get_format(s, &fmt_ret);
EXPECT_EQ(0, rc);
EXPECT_TRUE(format_equal(&fmt_ret, &fmt_));
// Check if shm is really set up.
- shm_ret = cras_rstream_input_shm(s);
+ shm_ret = cras_rstream_shm(s);
ASSERT_NE((void *)NULL, shm_ret);
- fd_ret = cras_rstream_input_shm_fd(s);
+ fd_ret = cras_rstream_shm_fd(s);
shm_size = cras_rstream_get_total_shm_size(s);
EXPECT_GT(shm_size, 4096);
shm_mapped.area = (struct cras_audio_shm_area *)mmap(