diff options
author | Fletcher Woodruff <fletcherw@chromium.org> | 2019-06-06 16:48:00 -0600 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-06-11 16:07:52 -0700 |
commit | 2f265de12903e1176123a1fd57387044661cb241 (patch) | |
tree | d9e345680e8e76c9b501162bdbb54de1d67927ee | |
parent | de3492d0b22c9c5cfac3325fcabfea6ec0a52fc0 (diff) | |
download | adhd-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.c | 2 | ||||
-rw-r--r-- | cras/src/server/cras_control_rclient.c | 4 | ||||
-rw-r--r-- | cras/src/server/cras_rstream.c | 15 | ||||
-rw-r--r-- | cras/src/server/cras_rstream.h | 33 | ||||
-rw-r--r-- | cras/src/server/dev_io.c | 5 | ||||
-rw-r--r-- | cras/src/server/dev_stream.c | 10 | ||||
-rw-r--r-- | cras/src/tests/rstream_unittest.cc | 12 |
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( |