Changeset 46577995 in mainline for uspace/srv/audio/hound/audio_device.c
- Timestamp:
- 2018-01-04T20:50:52Z (7 years ago)
- Children:
- e211ea04
- Parents:
- facacc71
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-01-04 20:47:53)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-01-04 20:50:52)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/audio/hound/audio_device.c
rfacacc71 r46577995 51 51 #define BUFFER_PARTS 16 52 52 53 static int device_sink_connection_callback(audio_sink_t *sink, bool new);54 static int device_source_connection_callback(audio_source_t *source, bool new);53 static errno_t device_sink_connection_callback(audio_sink_t *sink, bool new); 54 static errno_t device_source_connection_callback(audio_source_t *source, bool new); 55 55 static void device_event_callback(ipc_callid_t iid, ipc_call_t *icall, void *arg); 56 static int device_check_format(audio_sink_t* sink);57 static int get_buffer(audio_device_t *dev);58 static int release_buffer(audio_device_t *dev);56 static errno_t device_check_format(audio_sink_t* sink); 57 static errno_t get_buffer(audio_device_t *dev); 58 static errno_t release_buffer(audio_device_t *dev); 59 59 static void advance_buffer(audio_device_t *dev, size_t size); 60 60 static inline bool is_running(audio_device_t *dev) … … 72 72 * @return Error code. 73 73 */ 74 int audio_device_init(audio_device_t *dev, service_id_t id, const char *name)74 errno_t audio_device_init(audio_device_t *dev, service_id_t id, const char *name) 75 75 { 76 76 assert(dev); … … 122 122 assert(dev); 123 123 sysarg_t val; 124 int rc = audio_pcm_query_cap(dev->sess, AUDIO_CAP_CAPTURE, &val);124 errno_t rc = audio_pcm_query_cap(dev->sess, AUDIO_CAP_CAPTURE, &val); 125 125 if (rc == EOK && val) 126 126 return &dev->source; … … 138 138 assert(dev); 139 139 sysarg_t val; 140 int rc = audio_pcm_query_cap(dev->sess, AUDIO_CAP_PLAYBACK, &val);140 errno_t rc = audio_pcm_query_cap(dev->sess, AUDIO_CAP_PLAYBACK, &val); 141 141 if (rc == EOK && val) 142 142 return &dev->sink; … … 153 153 * connections. 154 154 */ 155 static int device_sink_connection_callback(audio_sink_t* sink, bool new)155 static errno_t device_sink_connection_callback(audio_sink_t* sink, bool new) 156 156 { 157 157 assert(sink); … … 160 160 log_verbose("First connection on device sink '%s'", sink->name); 161 161 162 int ret = get_buffer(dev);162 errno_t ret = get_buffer(dev); 163 163 if (ret != EOK) { 164 164 log_error("Failed to get device buffer: %s", … … 196 196 log_verbose("Removed last connection on device sink '%s'", 197 197 sink->name); 198 int ret = audio_pcm_stop_playback(dev->sess);198 errno_t ret = audio_pcm_stop_playback(dev->sess); 199 199 if (ret != EOK) { 200 200 log_error("Failed to stop playback: %s", … … 215 215 * connections. 216 216 */ 217 static int device_source_connection_callback(audio_source_t *source, bool new)217 static errno_t device_source_connection_callback(audio_source_t *source, bool new) 218 218 { 219 219 assert(source); 220 220 audio_device_t *dev = source->private_data; 221 221 if (new && list_count(&source->connections) == 1) { 222 int ret = get_buffer(dev);222 errno_t ret = get_buffer(dev); 223 223 if (ret != EOK) { 224 224 log_error("Failed to get device buffer: %s", … … 244 244 if (list_count(&source->connections) == 0) { /* Disconnected */ 245 245 assert(!new); 246 int ret = audio_pcm_stop_capture_immediate(dev->sess);246 errno_t ret = audio_pcm_stop_capture_immediate(dev->sess); 247 247 if (ret != EOK) { 248 248 log_error("Failed to start recording: %s", … … 289 289 log_verbose("Capture terminated"); 290 290 dev->source.format = AUDIO_FORMAT_ANY; 291 const int ret = release_buffer(dev);291 const errno_t ret = release_buffer(dev); 292 292 if (ret != EOK) { 293 293 log_error("Failed to release buffer: %s", … … 300 300 log_verbose("Playback Terminated"); 301 301 dev->sink.format = AUDIO_FORMAT_ANY; 302 const int ret = release_buffer(dev);302 const errno_t ret = release_buffer(dev); 303 303 if (ret != EOK) { 304 304 log_error("Failed to release buffer: %s", … … 309 309 } 310 310 case PCM_EVENT_FRAMES_CAPTURED: { 311 const int ret = audio_source_push_data(&dev->source,311 const errno_t ret = audio_source_push_data(&dev->source, 312 312 dev->buffer.position, dev->buffer.fragment_size); 313 313 advance_buffer(dev, dev->buffer.fragment_size); … … 329 329 * @return Error code. 330 330 */ 331 static int device_check_format(audio_sink_t* sink)331 static errno_t device_check_format(audio_sink_t* sink) 332 332 { 333 333 assert(sink); … … 347 347 * @return Error code. 348 348 */ 349 static int get_buffer(audio_device_t *dev)349 static errno_t get_buffer(audio_device_t *dev) 350 350 { 351 351 assert(dev); … … 362 362 size_t preferred_size = 0; 363 363 364 const int ret = audio_pcm_get_buffer(dev->sess, &dev->buffer.base,364 const errno_t ret = audio_pcm_get_buffer(dev->sess, &dev->buffer.base, 365 365 &preferred_size); 366 366 if (ret == EOK) { … … 378 378 * @return Error code. 379 379 */ 380 static int release_buffer(audio_device_t *dev)380 static errno_t release_buffer(audio_device_t *dev) 381 381 { 382 382 assert(dev); 383 383 assert(dev->buffer.base); 384 384 385 const int ret = audio_pcm_release_buffer(dev->sess);385 const errno_t ret = audio_pcm_release_buffer(dev->sess); 386 386 if (ret == EOK) { 387 387 as_area_destroy(dev->buffer.base);
Note:
See TracChangeset
for help on using the changeset viewer.