• Home
  • Raw
  • Download

Lines Matching refs:shm

75 static inline uint8_t *cras_shm_buff_for_idx(const struct cras_audio_shm *shm,  in cras_shm_buff_for_idx()  argument
80 return shm->area->samples + shm->config.used_size * idx; in cras_shm_buff_for_idx()
85 unsigned cras_shm_check_read_offset(const struct cras_audio_shm *shm, in cras_shm_check_read_offset() argument
91 if (offset > shm->config.used_size) in cras_shm_check_read_offset()
98 unsigned cras_shm_check_write_offset(const struct cras_audio_shm *shm, in cras_shm_check_write_offset() argument
104 if (offset > shm->config.used_size) in cras_shm_check_write_offset()
105 return shm->config.used_size; in cras_shm_check_write_offset()
111 unsigned cras_shm_get_curr_read_frames(const struct cras_audio_shm *shm) in cras_shm_get_curr_read_frames() argument
113 unsigned i = shm->area->read_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_get_curr_read_frames()
117 cras_shm_check_read_offset(shm, shm->area->read_offset[i]); in cras_shm_get_curr_read_frames()
119 cras_shm_check_write_offset(shm, shm->area->write_offset[i]); in cras_shm_get_curr_read_frames()
124 return (write_offset - read_offset) / shm->config.frame_bytes; in cras_shm_get_curr_read_frames()
129 uint8_t *cras_shm_get_read_buffer_base(const struct cras_audio_shm *shm) in cras_shm_get_read_buffer_base() argument
131 unsigned i = shm->area->read_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_get_read_buffer_base()
132 return cras_shm_buff_for_idx(shm, i); in cras_shm_get_read_buffer_base()
137 uint8_t *cras_shm_get_write_buffer_base(const struct cras_audio_shm *shm) in cras_shm_get_write_buffer_base() argument
139 unsigned i = shm->area->write_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_get_write_buffer_base()
141 return cras_shm_buff_for_idx(shm, i); in cras_shm_get_write_buffer_base()
146 uint8_t *cras_shm_get_writeable_frames(const struct cras_audio_shm *shm, in cras_shm_get_writeable_frames() argument
150 unsigned i = shm->area->write_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_get_writeable_frames()
152 const unsigned frame_bytes = shm->config.frame_bytes; in cras_shm_get_writeable_frames()
154 write_offset = cras_shm_check_write_offset(shm, in cras_shm_get_writeable_frames()
155 shm->area->write_offset[i]); in cras_shm_get_writeable_frames()
159 return cras_shm_buff_for_idx(shm, i) + write_offset; in cras_shm_get_writeable_frames()
167 uint8_t *cras_shm_get_readable_frames(const struct cras_audio_shm *shm, in cras_shm_get_readable_frames() argument
171 unsigned buf_idx = shm->area->read_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_get_readable_frames()
177 cras_shm_check_read_offset(shm, in cras_shm_get_readable_frames()
178 shm->area->read_offset[buf_idx]); in cras_shm_get_readable_frames()
180 cras_shm_check_write_offset(shm, in cras_shm_get_readable_frames()
181 shm->area->write_offset[buf_idx]); in cras_shm_get_readable_frames()
182 final_offset = read_offset + offset * shm->config.frame_bytes; in cras_shm_get_readable_frames()
188 shm, shm->area->write_offset[buf_idx]); in cras_shm_get_readable_frames()
195 *frames = (write_offset - final_offset) / shm->config.frame_bytes; in cras_shm_get_readable_frames()
196 return cras_shm_buff_for_idx(shm, buf_idx) + final_offset; in cras_shm_get_readable_frames()
200 static inline size_t cras_shm_get_bytes_queued(const struct cras_audio_shm *shm) in cras_shm_get_bytes_queued() argument
203 const unsigned used_size = shm->config.used_size; in cras_shm_get_bytes_queued()
209 read_offset = MIN(shm->area->read_offset[i], used_size); in cras_shm_get_bytes_queued()
210 write_offset = MIN(shm->area->write_offset[i], used_size); in cras_shm_get_bytes_queued()
219 static inline int cras_shm_get_frames(const struct cras_audio_shm *shm) in cras_shm_get_frames() argument
223 bytes = cras_shm_get_bytes_queued(shm); in cras_shm_get_frames()
224 if (bytes % shm->config.frame_bytes != 0) in cras_shm_get_frames()
226 return bytes / shm->config.frame_bytes; in cras_shm_get_frames()
231 size_t cras_shm_get_frames_in_curr_buffer(const struct cras_audio_shm *shm) in cras_shm_get_frames_in_curr_buffer() argument
233 size_t buf_idx = shm->area->read_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_get_frames_in_curr_buffer()
235 const unsigned used_size = shm->config.used_size; in cras_shm_get_frames_in_curr_buffer()
237 read_offset = MIN(shm->area->read_offset[buf_idx], used_size); in cras_shm_get_frames_in_curr_buffer()
238 write_offset = MIN(shm->area->write_offset[buf_idx], used_size); in cras_shm_get_frames_in_curr_buffer()
243 return (write_offset - read_offset) / shm->config.frame_bytes; in cras_shm_get_frames_in_curr_buffer()
247 static inline int cras_shm_is_buffer_available(const struct cras_audio_shm *shm) in cras_shm_is_buffer_available() argument
249 size_t buf_idx = shm->area->write_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_is_buffer_available()
251 return (shm->area->write_offset[buf_idx] == 0); in cras_shm_is_buffer_available()
256 size_t cras_shm_get_num_writeable(const struct cras_audio_shm *shm) in cras_shm_get_num_writeable() argument
259 if (!cras_shm_is_buffer_available(shm)) in cras_shm_get_num_writeable()
262 return shm->config.used_size / shm->config.frame_bytes; in cras_shm_get_num_writeable()
267 static inline int cras_shm_check_write_overrun(struct cras_audio_shm *shm) in cras_shm_check_write_overrun() argument
270 size_t write_buf_idx = shm->area->write_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_check_write_overrun()
272 if (!shm->area->write_in_progress[write_buf_idx]) { in cras_shm_check_write_overrun()
273 unsigned int used_size = shm->config.used_size; in cras_shm_check_write_overrun()
275 if (shm->area->write_offset[write_buf_idx]) { in cras_shm_check_write_overrun()
276 shm->area->num_overruns++; /* Will over-write unread */ in cras_shm_check_write_overrun()
280 memset(cras_shm_buff_for_idx(shm, write_buf_idx), 0, used_size); in cras_shm_check_write_overrun()
282 shm->area->write_in_progress[write_buf_idx] = 1; in cras_shm_check_write_overrun()
283 shm->area->write_offset[write_buf_idx] = 0; in cras_shm_check_write_overrun()
290 void cras_shm_buffer_written(struct cras_audio_shm *shm, size_t frames) in cras_shm_buffer_written() argument
292 size_t buf_idx = shm->area->write_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_buffer_written()
297 shm->area->write_offset[buf_idx] += frames * shm->config.frame_bytes; in cras_shm_buffer_written()
298 shm->area->read_offset[buf_idx] = 0; in cras_shm_buffer_written()
303 unsigned int cras_shm_frames_written(const struct cras_audio_shm *shm) in cras_shm_frames_written() argument
305 size_t buf_idx = shm->area->write_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_frames_written()
307 return shm->area->write_offset[buf_idx] / shm->config.frame_bytes; in cras_shm_frames_written()
311 static inline void cras_shm_buffer_write_complete(struct cras_audio_shm *shm) in cras_shm_buffer_write_complete() argument
313 size_t buf_idx = shm->area->write_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_buffer_write_complete()
315 shm->area->write_in_progress[buf_idx] = 0; in cras_shm_buffer_write_complete()
319 shm->area->write_buf_idx = buf_idx; in cras_shm_buffer_write_complete()
324 void cras_shm_buffer_written_start(struct cras_audio_shm *shm, size_t frames) in cras_shm_buffer_written_start() argument
326 size_t buf_idx = shm->area->write_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_buffer_written_start()
328 shm->area->write_offset[buf_idx] = frames * shm->config.frame_bytes; in cras_shm_buffer_written_start()
329 shm->area->read_offset[buf_idx] = 0; in cras_shm_buffer_written_start()
330 cras_shm_buffer_write_complete(shm); in cras_shm_buffer_written_start()
336 void cras_shm_buffer_read(struct cras_audio_shm *shm, size_t frames) in cras_shm_buffer_read() argument
338 size_t buf_idx = shm->area->read_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_buffer_read()
340 struct cras_audio_shm_area *area = shm->area; in cras_shm_buffer_read()
341 struct cras_audio_shm_config *config = &shm->config; in cras_shm_buffer_read()
371 void cras_shm_buffer_read_current(struct cras_audio_shm *shm, size_t frames) in cras_shm_buffer_read_current() argument
373 size_t buf_idx = shm->area->read_buf_idx & CRAS_SHM_BUFFERS_MASK; in cras_shm_buffer_read_current()
374 struct cras_audio_shm_area *area = shm->area; in cras_shm_buffer_read_current()
375 struct cras_audio_shm_config *config = &shm->config; in cras_shm_buffer_read_current()
389 void cras_shm_set_volume_scaler(struct cras_audio_shm *shm, float volume_scaler) in cras_shm_set_volume_scaler() argument
392 shm->area->volume_scaler = MIN(volume_scaler, 1.0); in cras_shm_set_volume_scaler()
396 static inline float cras_shm_get_volume_scaler(const struct cras_audio_shm *shm) in cras_shm_get_volume_scaler() argument
398 return shm->area->volume_scaler; in cras_shm_get_volume_scaler()
402 static inline void cras_shm_set_mute(struct cras_audio_shm *shm, size_t mute) in cras_shm_set_mute() argument
404 shm->area->mute = !!mute; in cras_shm_set_mute()
408 static inline size_t cras_shm_get_mute(const struct cras_audio_shm *shm) in cras_shm_get_mute() argument
410 return shm->area->mute; in cras_shm_get_mute()
414 static inline void cras_shm_set_frame_bytes(struct cras_audio_shm *shm, in cras_shm_set_frame_bytes() argument
417 shm->config.frame_bytes = frame_bytes; in cras_shm_set_frame_bytes()
418 if (shm->area) in cras_shm_set_frame_bytes()
419 shm->area->config.frame_bytes = frame_bytes; in cras_shm_set_frame_bytes()
423 static inline unsigned cras_shm_frame_bytes(const struct cras_audio_shm *shm) in cras_shm_frame_bytes() argument
425 return shm->config.frame_bytes; in cras_shm_frame_bytes()
430 void cras_shm_set_callback_pending(struct cras_audio_shm *shm, int pending) in cras_shm_set_callback_pending() argument
432 shm->area->callback_pending = !!pending; in cras_shm_set_callback_pending()
436 static inline int cras_shm_callback_pending(const struct cras_audio_shm *shm) in cras_shm_callback_pending() argument
438 return shm->area->callback_pending; in cras_shm_callback_pending()
445 void cras_shm_set_used_size(struct cras_audio_shm *shm, unsigned used_size) in cras_shm_set_used_size() argument
447 shm->config.used_size = used_size; in cras_shm_set_used_size()
448 if (shm->area) in cras_shm_set_used_size()
449 shm->area->config.used_size = used_size; in cras_shm_set_used_size()
453 static inline unsigned cras_shm_used_size(const struct cras_audio_shm *shm) in cras_shm_used_size() argument
455 return shm->config.used_size; in cras_shm_used_size()
459 static inline unsigned cras_shm_used_frames(const struct cras_audio_shm *shm) in cras_shm_used_frames() argument
461 return shm->config.used_size / shm->config.frame_bytes; in cras_shm_used_frames()
465 static inline unsigned cras_shm_total_size(const struct cras_audio_shm *shm) in cras_shm_total_size() argument
467 return cras_shm_used_size(shm) * CRAS_NUM_SHM_BUFFERS + in cras_shm_total_size()
468 sizeof(*shm->area); in cras_shm_total_size()
473 unsigned cras_shm_num_overruns(const struct cras_audio_shm *shm) in cras_shm_num_overruns() argument
475 return shm->area->num_overruns; in cras_shm_num_overruns()
481 static inline void cras_shm_copy_shared_config(struct cras_audio_shm *shm) in cras_shm_copy_shared_config() argument
483 memcpy(&shm->config, &shm->area->config, sizeof(shm->config)); in cras_shm_copy_shared_config()