Changeset 4eff63c in mainline for uspace/srv/audio/hound/audio_device.c
- Timestamp:
- 2013-04-11T21:55:43Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6eeaf1d
- Parents:
- bee5349
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/audio/hound/audio_device.c
rbee5349 r4eff63c 55 55 static int get_buffer(audio_device_t *dev); 56 56 static int release_buffer(audio_device_t *dev); 57 static void fill_buffer(audio_device_t *dev, size_t size);57 static void advance_buffer(audio_device_t *dev, size_t size); 58 58 static inline bool is_running(audio_device_t *dev) 59 59 { … … 167 167 pcm_format_silence(dev->buffer.base, dev->buffer.size, 168 168 &dev->sink.format); 169 fill_buffer(dev, dev->buffer.fragment_size * 2); 169 //TODO add underrun detection. 170 const size_t size = dev->buffer.fragment_size * 2; 171 /* We never cross the end of the buffer here */ 172 audio_sink_mix_inputs(&dev->sink, dev->buffer.position, size); 173 advance_buffer(dev, size); 170 174 171 175 const unsigned frames = dev->buffer.fragment_size / … … 280 284 struct timeval time1; 281 285 getuptime(&time1); 282 fill_buffer(dev, dev->buffer.fragment_size); 286 //TODO add underrun detection. 287 /* We never cross the end of the buffer here */ 288 audio_sink_mix_inputs(&dev->sink, dev->buffer.position, 289 dev->buffer.fragment_size); 290 advance_buffer(dev, dev->buffer.fragment_size); 283 291 struct timeval time2; 284 292 getuptime(&time2); … … 290 298 log_verbose("Playback terminated!"); 291 299 return; 292 case PCM_EVENT_FRAMES_CAPTURED: 293 //TODO implement 300 case PCM_EVENT_FRAMES_CAPTURED: { 301 const int ret = audio_source_push_data(&dev->source, 302 dev->buffer.position, dev->buffer.fragment_size); 303 advance_buffer(dev, dev->buffer.fragment_size); 304 if (ret != EOK) 305 log_warning("Failed to push recorded data"); 294 306 break; 307 } 295 308 case PCM_EVENT_CAPTURE_TERMINATED: 296 309 log_verbose("Recording terminated!"); … … 372 385 373 386 /** 374 * M ix data from all connections and add it to the device buffer.387 * Move buffer position pointer. 375 388 * @param dev Audio device. 376 * @param size portion of the device buffer to fill.377 */ 378 static void fill_buffer(audio_device_t *dev, size_t size)389 * @param size number of bytes to move forward 390 */ 391 static void advance_buffer(audio_device_t *dev, size_t size) 379 392 { 380 393 assert(dev); 381 394 assert(dev->buffer.position >= dev->buffer.base); 382 395 assert(dev->buffer.position < (dev->buffer.base + dev->buffer.size)); 383 384 //TODO add underrun detection.385 audio_sink_mix_inputs(&dev->sink, dev->buffer.position, size);386 396 dev->buffer.position += size; 387 397 if (dev->buffer.position == (dev->buffer.base + dev->buffer.size))
Note:
See TracChangeset
for help on using the changeset viewer.