@@ -429,9 +429,14 @@ struct snd_pcm_sw_params {
429
429
snd_pcm_uframes_t avail_min ; /* min avail frames for wakeup */
430
430
snd_pcm_uframes_t xfer_align ; /* obsolete: xfer size need to be a multiple */
431
431
snd_pcm_uframes_t start_threshold ; /* min hw_avail frames for automatic start */
432
- snd_pcm_uframes_t stop_threshold ; /* min avail frames for automatic stop */
433
- snd_pcm_uframes_t silence_threshold ; /* min distance from noise for silence filling */
434
- snd_pcm_uframes_t silence_size ; /* silence block size */
432
+ /*
433
+ * The following two thresholds alleviate playback buffer underruns; when
434
+ * hw_avail drops below the threshold, the respective action is triggered:
435
+ */
436
+ snd_pcm_uframes_t stop_threshold ; /* - stop playback */
437
+ snd_pcm_uframes_t silence_threshold ; /* - pre-fill buffer with silence */
438
+ snd_pcm_uframes_t silence_size ; /* max size of silence pre-fill; when >= boundary,
439
+ * fill played area with silence immediately */
435
440
snd_pcm_uframes_t boundary ; /* pointers wrap point */
436
441
unsigned int proto ; /* protocol version */
437
442
unsigned int tstamp_type ; /* timestamp type (req. proto >= 2.0.12) */
@@ -570,7 +575,8 @@ struct __snd_pcm_mmap_status64 {
570
575
struct __snd_pcm_mmap_control64 {
571
576
__pad_before_uframe __pad1 ;
572
577
snd_pcm_uframes_t appl_ptr ; /* RW: appl ptr (0...boundary-1) */
573
- __pad_before_uframe __pad2 ;
578
+ __pad_before_uframe __pad2 ; // This should be __pad_after_uframe, but binary
579
+ // backwards compatibility constraints prevent a fix.
574
580
575
581
__pad_before_uframe __pad3 ;
576
582
snd_pcm_uframes_t avail_min ; /* RW: min available frames for wakeup */
0 commit comments