1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
/* automatically generated by rust-bindgen 0.57.0 */

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage> {
    storage: Storage,
}
impl<Storage> __BindgenBitfieldUnit<Storage> {
    #[inline]
    pub const fn new(storage: Storage) -> Self {
        Self { storage }
    }
}
impl<Storage> __BindgenBitfieldUnit<Storage>
where
    Storage: AsRef<[u8]> + AsMut<[u8]>,
{
    #[inline]
    pub fn get_bit(&self, index: usize) -> bool {
        debug_assert!(index / 8 < self.storage.as_ref().len());
        let byte_index = index / 8;
        let byte = self.storage.as_ref()[byte_index];
        let bit_index = if cfg!(target_endian = "big") {
            7 - (index % 8)
        } else {
            index % 8
        };
        let mask = 1 << bit_index;
        byte & mask == mask
    }
    #[inline]
    pub fn set_bit(&mut self, index: usize, val: bool) {
        debug_assert!(index / 8 < self.storage.as_ref().len());
        let byte_index = index / 8;
        let byte = &mut self.storage.as_mut()[byte_index];
        let bit_index = if cfg!(target_endian = "big") {
            7 - (index % 8)
        } else {
            index % 8
        };
        let mask = 1 << bit_index;
        if val {
            *byte |= mask;
        } else {
            *byte &= !mask;
        }
    }
    #[inline]
    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
        debug_assert!(bit_width <= 64);
        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
        let mut val = 0;
        for i in 0..(bit_width as usize) {
            if self.get_bit(i + bit_offset) {
                let index = if cfg!(target_endian = "big") {
                    bit_width as usize - 1 - i
                } else {
                    i
                };
                val |= 1 << index;
            }
        }
        val
    }
    #[inline]
    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
        debug_assert!(bit_width <= 64);
        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
        for i in 0..(bit_width as usize) {
            let mask = 1 << i;
            let val_bit_is_set = val & mask == mask;
            let index = if cfg!(target_endian = "big") {
                bit_width as usize - 1 - i
            } else {
                i
            };
            self.set_bit(index + bit_offset, val_bit_is_set);
        }
    }
}
#[repr(C)]
#[derive(Default)]
pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
impl<T> __IncompleteArrayField<T> {
    #[inline]
    pub const fn new() -> Self {
        __IncompleteArrayField(::std::marker::PhantomData, [])
    }
    #[inline]
    pub fn as_ptr(&self) -> *const T {
        self as *const _ as *const T
    }
    #[inline]
    pub fn as_mut_ptr(&mut self) -> *mut T {
        self as *mut _ as *mut T
    }
    #[inline]
    pub unsafe fn as_slice(&self, len: usize) -> &[T] {
        ::std::slice::from_raw_parts(self.as_ptr(), len)
    }
    #[inline]
    pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
        ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
    }
}
impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
    fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
        fmt.write_str("__IncompleteArrayField")
    }
}
pub const SNDRV_PCM_INFO_MMAP: u32 = 1;
pub const SNDRV_PCM_INFO_MMAP_VALID: u32 = 2;
pub const SNDRV_PCM_INFO_DOUBLE: u32 = 4;
pub const SNDRV_PCM_INFO_BATCH: u32 = 16;
pub const SNDRV_PCM_INFO_SYNC_APPLPTR: u32 = 32;
pub const SNDRV_PCM_INFO_INTERLEAVED: u32 = 256;
pub const SNDRV_PCM_INFO_NONINTERLEAVED: u32 = 512;
pub const SNDRV_PCM_INFO_COMPLEX: u32 = 1024;
pub const SNDRV_PCM_INFO_BLOCK_TRANSFER: u32 = 65536;
pub const SNDRV_PCM_INFO_OVERRANGE: u32 = 131072;
pub const SNDRV_PCM_INFO_RESUME: u32 = 262144;
pub const SNDRV_PCM_INFO_PAUSE: u32 = 524288;
pub const SNDRV_PCM_INFO_HALF_DUPLEX: u32 = 1048576;
pub const SNDRV_PCM_INFO_JOINT_DUPLEX: u32 = 2097152;
pub const SNDRV_PCM_INFO_SYNC_START: u32 = 4194304;
pub const SNDRV_PCM_INFO_NO_PERIOD_WAKEUP: u32 = 8388608;
pub const SNDRV_PCM_INFO_HAS_WALL_CLOCK: u32 = 16777216;
pub const SNDRV_PCM_INFO_HAS_LINK_ATIME: u32 = 16777216;
pub const SNDRV_PCM_INFO_HAS_LINK_ABSOLUTE_ATIME: u32 = 33554432;
pub const SNDRV_PCM_INFO_HAS_LINK_ESTIMATED_ATIME: u32 = 67108864;
pub const SNDRV_PCM_INFO_HAS_LINK_SYNCHRONIZED_ATIME: u32 = 134217728;
pub const SNDRV_PCM_INFO_DRAIN_TRIGGER: u32 = 1073741824;
pub const SNDRV_PCM_INFO_FIFO_IN_FRAMES: u32 = 2147483648;
pub const SNDRV_PCM_HW_PARAM_ACCESS: u32 = 0;
pub const SNDRV_PCM_HW_PARAM_FORMAT: u32 = 1;
pub const SNDRV_PCM_HW_PARAM_SUBFORMAT: u32 = 2;
pub const SNDRV_PCM_HW_PARAM_FIRST_MASK: u32 = 0;
pub const SNDRV_PCM_HW_PARAM_LAST_MASK: u32 = 2;
pub const SNDRV_PCM_HW_PARAM_SAMPLE_BITS: u32 = 8;
pub const SNDRV_PCM_HW_PARAM_FRAME_BITS: u32 = 9;
pub const SNDRV_PCM_HW_PARAM_CHANNELS: u32 = 10;
pub const SNDRV_PCM_HW_PARAM_RATE: u32 = 11;
pub const SNDRV_PCM_HW_PARAM_PERIOD_TIME: u32 = 12;
pub const SNDRV_PCM_HW_PARAM_PERIOD_SIZE: u32 = 13;
pub const SNDRV_PCM_HW_PARAM_PERIOD_BYTES: u32 = 14;
pub const SNDRV_PCM_HW_PARAM_PERIODS: u32 = 15;
pub const SNDRV_PCM_HW_PARAM_BUFFER_TIME: u32 = 16;
pub const SNDRV_PCM_HW_PARAM_BUFFER_SIZE: u32 = 17;
pub const SNDRV_PCM_HW_PARAM_BUFFER_BYTES: u32 = 18;
pub const SNDRV_PCM_HW_PARAM_TICK_TIME: u32 = 19;
pub const SNDRV_PCM_HW_PARAM_FIRST_INTERVAL: u32 = 8;
pub const SNDRV_PCM_HW_PARAM_LAST_INTERVAL: u32 = 19;
pub const SNDRV_PCM_HW_PARAMS_NORESAMPLE: u32 = 1;
pub const SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER: u32 = 2;
pub const SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP: u32 = 4;
pub const SNDRV_MASK_MAX: u32 = 256;
pub const SNDRV_PCM_SYNC_PTR_HWSYNC: u32 = 1;
pub const SNDRV_PCM_SYNC_PTR_APPL: u32 = 2;
pub const SNDRV_PCM_SYNC_PTR_AVAIL_MIN: u32 = 4;
pub const SNDRV_CHMAP_POSITION_MASK: u32 = 65535;
pub const SNDRV_CHMAP_PHASE_INVERSE: u32 = 65536;
pub const SNDRV_CHMAP_DRIVER_SPEC: u32 = 131072;
pub const SNDRV_RAWMIDI_INFO_OUTPUT: u32 = 1;
pub const SNDRV_RAWMIDI_INFO_INPUT: u32 = 2;
pub const SNDRV_RAWMIDI_INFO_DUPLEX: u32 = 4;
pub const SNDRV_TIMER_GLOBAL_SYSTEM: u32 = 0;
pub const SNDRV_TIMER_GLOBAL_RTC: u32 = 1;
pub const SNDRV_TIMER_GLOBAL_HPET: u32 = 2;
pub const SNDRV_TIMER_GLOBAL_HRTIMER: u32 = 3;
pub const SNDRV_TIMER_FLG_SLAVE: u32 = 1;
pub const SNDRV_TIMER_PSFLG_AUTO: u32 = 1;
pub const SNDRV_TIMER_PSFLG_EXCLUSIVE: u32 = 2;
pub const SNDRV_TIMER_PSFLG_EARLY_EVENT: u32 = 4;
pub const SNDRV_CTL_ELEM_ACCESS_READ: u32 = 1;
pub const SNDRV_CTL_ELEM_ACCESS_WRITE: u32 = 2;
pub const SNDRV_CTL_ELEM_ACCESS_READWRITE: u32 = 3;
pub const SNDRV_CTL_ELEM_ACCESS_VOLATILE: u32 = 4;
pub const SNDRV_CTL_ELEM_ACCESS_TIMESTAMP: u32 = 8;
pub const SNDRV_CTL_ELEM_ACCESS_TLV_READ: u32 = 16;
pub const SNDRV_CTL_ELEM_ACCESS_TLV_WRITE: u32 = 32;
pub const SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE: u32 = 48;
pub const SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND: u32 = 64;
pub const SNDRV_CTL_ELEM_ACCESS_INACTIVE: u32 = 256;
pub const SNDRV_CTL_ELEM_ACCESS_LOCK: u32 = 512;
pub const SNDRV_CTL_ELEM_ACCESS_OWNER: u32 = 1024;
pub const SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK: u32 = 268435456;
pub const SNDRV_CTL_ELEM_ACCESS_USER: u32 = 536870912;
pub const SNDRV_CTL_POWER_D0: u32 = 0;
pub const SNDRV_CTL_POWER_D1: u32 = 256;
pub const SNDRV_CTL_POWER_D2: u32 = 512;
pub const SNDRV_CTL_POWER_D3: u32 = 768;
pub const SNDRV_CTL_POWER_D3hot: u32 = 768;
pub const SNDRV_CTL_POWER_D3cold: u32 = 769;
pub const SNDRV_CTL_ELEM_ID_NAME_MAXLEN: u32 = 44;
pub const SNDRV_CTL_EVENT_MASK_VALUE: u32 = 1;
pub const SNDRV_CTL_EVENT_MASK_INFO: u32 = 2;
pub const SNDRV_CTL_EVENT_MASK_ADD: u32 = 4;
pub const SNDRV_CTL_EVENT_MASK_TLV: u32 = 8;
pub const SNDRV_CTL_EVENT_MASK_REMOVE: i32 = -1;
pub const SNDRV_CTL_NAME_NONE: &'static [u8; 1usize] = b"\0";
pub const SNDRV_CTL_NAME_PLAYBACK: &'static [u8; 10usize] = b"Playback \0";
pub const SNDRV_CTL_NAME_CAPTURE: &'static [u8; 9usize] = b"Capture \0";
pub const SNDRV_CTL_NAME_IEC958_NONE: &'static [u8; 1usize] = b"\0";
pub const SNDRV_CTL_NAME_IEC958_SWITCH: &'static [u8; 7usize] = b"Switch\0";
pub const SNDRV_CTL_NAME_IEC958_VOLUME: &'static [u8; 7usize] = b"Volume\0";
pub const SNDRV_CTL_NAME_IEC958_DEFAULT: &'static [u8; 8usize] = b"Default\0";
pub const SNDRV_CTL_NAME_IEC958_MASK: &'static [u8; 5usize] = b"Mask\0";
pub const SNDRV_CTL_NAME_IEC958_CON_MASK: &'static [u8; 9usize] = b"Con Mask\0";
pub const SNDRV_CTL_NAME_IEC958_PRO_MASK: &'static [u8; 9usize] = b"Pro Mask\0";
pub const SNDRV_CTL_NAME_IEC958_PCM_STREAM: &'static [u8; 11usize] = b"PCM Stream\0";
pub type __u32 = ::std::os::raw::c_uint;
pub type __u64 = ::std::os::raw::c_ulonglong;
pub type __kernel_long_t = ::std::os::raw::c_long;
pub type __kernel_pid_t = ::std::os::raw::c_int;
pub type __kernel_off_t = __kernel_long_t;
pub type __time_t = ::std::os::raw::c_long;
pub type __syscall_slong_t = ::std::os::raw::c_long;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct timespec {
    pub tv_sec: __time_t,
    pub tv_nsec: __syscall_slong_t,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_aes_iec958 {
    pub status: [::std::os::raw::c_uchar; 24usize],
    pub subcode: [::std::os::raw::c_uchar; 147usize],
    pub pad: ::std::os::raw::c_uchar,
    pub dig_subframe: [::std::os::raw::c_uchar; 4usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_cea_861_aud_if {
    pub db1_ct_cc: ::std::os::raw::c_uchar,
    pub db2_sf_ss: ::std::os::raw::c_uchar,
    pub db3: ::std::os::raw::c_uchar,
    pub db4_ca: ::std::os::raw::c_uchar,
    pub db5_dminh_lsv: ::std::os::raw::c_uchar,
}
pub const SNDRV_HWDEP_IFACE_OPL2: ::std::os::raw::c_uint = 0;
pub const SNDRV_HWDEP_IFACE_OPL3: ::std::os::raw::c_uint = 1;
pub const SNDRV_HWDEP_IFACE_OPL4: ::std::os::raw::c_uint = 2;
pub const SNDRV_HWDEP_IFACE_SB16CSP: ::std::os::raw::c_uint = 3;
pub const SNDRV_HWDEP_IFACE_EMU10K1: ::std::os::raw::c_uint = 4;
pub const SNDRV_HWDEP_IFACE_YSS225: ::std::os::raw::c_uint = 5;
pub const SNDRV_HWDEP_IFACE_ICS2115: ::std::os::raw::c_uint = 6;
pub const SNDRV_HWDEP_IFACE_SSCAPE: ::std::os::raw::c_uint = 7;
pub const SNDRV_HWDEP_IFACE_VX: ::std::os::raw::c_uint = 8;
pub const SNDRV_HWDEP_IFACE_MIXART: ::std::os::raw::c_uint = 9;
pub const SNDRV_HWDEP_IFACE_USX2Y: ::std::os::raw::c_uint = 10;
pub const SNDRV_HWDEP_IFACE_EMUX_WAVETABLE: ::std::os::raw::c_uint = 11;
pub const SNDRV_HWDEP_IFACE_BLUETOOTH: ::std::os::raw::c_uint = 12;
pub const SNDRV_HWDEP_IFACE_USX2Y_PCM: ::std::os::raw::c_uint = 13;
pub const SNDRV_HWDEP_IFACE_PCXHR: ::std::os::raw::c_uint = 14;
pub const SNDRV_HWDEP_IFACE_SB_RC: ::std::os::raw::c_uint = 15;
pub const SNDRV_HWDEP_IFACE_HDA: ::std::os::raw::c_uint = 16;
pub const SNDRV_HWDEP_IFACE_USB_STREAM: ::std::os::raw::c_uint = 17;
pub const SNDRV_HWDEP_IFACE_FW_DICE: ::std::os::raw::c_uint = 18;
pub const SNDRV_HWDEP_IFACE_FW_FIREWORKS: ::std::os::raw::c_uint = 19;
pub const SNDRV_HWDEP_IFACE_FW_BEBOB: ::std::os::raw::c_uint = 20;
pub const SNDRV_HWDEP_IFACE_FW_OXFW: ::std::os::raw::c_uint = 21;
pub const SNDRV_HWDEP_IFACE_FW_DIGI00X: ::std::os::raw::c_uint = 22;
pub const SNDRV_HWDEP_IFACE_FW_TASCAM: ::std::os::raw::c_uint = 23;
pub const SNDRV_HWDEP_IFACE_LINE6: ::std::os::raw::c_uint = 24;
pub const SNDRV_HWDEP_IFACE_FW_MOTU: ::std::os::raw::c_uint = 25;
pub const SNDRV_HWDEP_IFACE_FW_FIREFACE: ::std::os::raw::c_uint = 26;
pub const SNDRV_HWDEP_IFACE_LAST: ::std::os::raw::c_uint = 26;
pub type _bindgen_ty_1 = ::std::os::raw::c_uint;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_hwdep_info {
    pub device: ::std::os::raw::c_uint,
    pub card: ::std::os::raw::c_int,
    pub id: [::std::os::raw::c_uchar; 64usize],
    pub name: [::std::os::raw::c_uchar; 80usize],
    pub iface: ::std::os::raw::c_int,
    pub reserved: [::std::os::raw::c_uchar; 64usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_hwdep_dsp_status {
    pub version: ::std::os::raw::c_uint,
    pub id: [::std::os::raw::c_uchar; 32usize],
    pub num_dsps: ::std::os::raw::c_uint,
    pub dsp_loaded: ::std::os::raw::c_uint,
    pub chip_ready: ::std::os::raw::c_uint,
    pub reserved: [::std::os::raw::c_uchar; 16usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_hwdep_dsp_image {
    pub index: ::std::os::raw::c_uint,
    pub name: [::std::os::raw::c_uchar; 64usize],
    pub image: *mut ::std::os::raw::c_uchar,
    pub length: usize,
    pub driver_data: ::std::os::raw::c_ulong,
}
pub type snd_pcm_uframes_t = ::std::os::raw::c_ulong;
pub type snd_pcm_sframes_t = ::std::os::raw::c_long;
pub const SNDRV_PCM_CLASS_GENERIC: ::std::os::raw::c_uint = 0;
pub const SNDRV_PCM_CLASS_MULTI: ::std::os::raw::c_uint = 1;
pub const SNDRV_PCM_CLASS_MODEM: ::std::os::raw::c_uint = 2;
pub const SNDRV_PCM_CLASS_DIGITIZER: ::std::os::raw::c_uint = 3;
pub const SNDRV_PCM_CLASS_LAST: ::std::os::raw::c_uint = 3;
pub type _bindgen_ty_2 = ::std::os::raw::c_uint;
pub const SNDRV_PCM_SUBCLASS_GENERIC_MIX: ::std::os::raw::c_uint = 0;
pub const SNDRV_PCM_SUBCLASS_MULTI_MIX: ::std::os::raw::c_uint = 1;
pub const SNDRV_PCM_SUBCLASS_LAST: ::std::os::raw::c_uint = 1;
pub type _bindgen_ty_3 = ::std::os::raw::c_uint;
pub const SNDRV_PCM_STREAM_PLAYBACK: ::std::os::raw::c_uint = 0;
pub const SNDRV_PCM_STREAM_CAPTURE: ::std::os::raw::c_uint = 1;
pub const SNDRV_PCM_STREAM_LAST: ::std::os::raw::c_uint = 1;
pub type _bindgen_ty_4 = ::std::os::raw::c_uint;
pub type snd_pcm_access_t = ::std::os::raw::c_int;
pub type snd_pcm_format_t = ::std::os::raw::c_int;
pub type snd_pcm_subformat_t = ::std::os::raw::c_int;
pub type snd_pcm_state_t = ::std::os::raw::c_int;
pub const SNDRV_PCM_MMAP_OFFSET_DATA: ::std::os::raw::c_uint = 0;
pub const SNDRV_PCM_MMAP_OFFSET_STATUS: ::std::os::raw::c_uint = 2147483648;
pub const SNDRV_PCM_MMAP_OFFSET_CONTROL: ::std::os::raw::c_uint = 2164260864;
pub type _bindgen_ty_5 = ::std::os::raw::c_uint;
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_pcm_sync_id {
    pub id: [::std::os::raw::c_uchar; 16usize],
    pub id16: [::std::os::raw::c_ushort; 8usize],
    pub id32: [::std::os::raw::c_uint; 4usize],
    _bindgen_union_align: [u32; 4usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_pcm_info {
    pub device: ::std::os::raw::c_uint,
    pub subdevice: ::std::os::raw::c_uint,
    pub stream: ::std::os::raw::c_int,
    pub card: ::std::os::raw::c_int,
    pub id: [::std::os::raw::c_uchar; 64usize],
    pub name: [::std::os::raw::c_uchar; 80usize],
    pub subname: [::std::os::raw::c_uchar; 32usize],
    pub dev_class: ::std::os::raw::c_int,
    pub dev_subclass: ::std::os::raw::c_int,
    pub subdevices_count: ::std::os::raw::c_uint,
    pub subdevices_avail: ::std::os::raw::c_uint,
    pub sync: snd_pcm_sync_id,
    pub reserved: [::std::os::raw::c_uchar; 64usize],
}
pub type snd_pcm_hw_param_t = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_interval {
    pub min: ::std::os::raw::c_uint,
    pub max: ::std::os::raw::c_uint,
    pub _bitfield_align_1: [u8; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
    pub __bindgen_padding_0: [u8; 3usize],
}
impl snd_interval {
    #[inline]
    pub fn openmin(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_openmin(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn openmax(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_openmax(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(1usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn integer(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_integer(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(2usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn empty(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_empty(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        openmin: ::std::os::raw::c_uint,
        openmax: ::std::os::raw::c_uint,
        integer: ::std::os::raw::c_uint,
        empty: ::std::os::raw::c_uint,
    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let openmin: u32 = unsafe { ::std::mem::transmute(openmin) };
            openmin as u64
        });
        __bindgen_bitfield_unit.set(1usize, 1u8, {
            let openmax: u32 = unsafe { ::std::mem::transmute(openmax) };
            openmax as u64
        });
        __bindgen_bitfield_unit.set(2usize, 1u8, {
            let integer: u32 = unsafe { ::std::mem::transmute(integer) };
            integer as u64
        });
        __bindgen_bitfield_unit.set(3usize, 1u8, {
            let empty: u32 = unsafe { ::std::mem::transmute(empty) };
            empty as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_mask {
    pub bits: [__u32; 8usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_pcm_hw_params {
    pub flags: ::std::os::raw::c_uint,
    pub masks: [snd_mask; 3usize],
    pub mres: [snd_mask; 5usize],
    pub intervals: [snd_interval; 12usize],
    pub ires: [snd_interval; 9usize],
    pub rmask: ::std::os::raw::c_uint,
    pub cmask: ::std::os::raw::c_uint,
    pub info: ::std::os::raw::c_uint,
    pub msbits: ::std::os::raw::c_uint,
    pub rate_num: ::std::os::raw::c_uint,
    pub rate_den: ::std::os::raw::c_uint,
    pub fifo_size: snd_pcm_uframes_t,
    pub reserved: [::std::os::raw::c_uchar; 64usize],
}
pub const SNDRV_PCM_TSTAMP_NONE: ::std::os::raw::c_uint = 0;
pub const SNDRV_PCM_TSTAMP_ENABLE: ::std::os::raw::c_uint = 1;
pub const SNDRV_PCM_TSTAMP_LAST: ::std::os::raw::c_uint = 1;
pub type _bindgen_ty_6 = ::std::os::raw::c_uint;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_pcm_sw_params {
    pub tstamp_mode: ::std::os::raw::c_int,
    pub period_step: ::std::os::raw::c_uint,
    pub sleep_min: ::std::os::raw::c_uint,
    pub avail_min: snd_pcm_uframes_t,
    pub xfer_align: snd_pcm_uframes_t,
    pub start_threshold: snd_pcm_uframes_t,
    pub stop_threshold: snd_pcm_uframes_t,
    pub silence_threshold: snd_pcm_uframes_t,
    pub silence_size: snd_pcm_uframes_t,
    pub boundary: snd_pcm_uframes_t,
    pub proto: ::std::os::raw::c_uint,
    pub tstamp_type: ::std::os::raw::c_uint,
    pub reserved: [::std::os::raw::c_uchar; 56usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_pcm_channel_info {
    pub channel: ::std::os::raw::c_uint,
    pub offset: __kernel_off_t,
    pub first: ::std::os::raw::c_uint,
    pub step: ::std::os::raw::c_uint,
}
pub const SNDRV_PCM_AUDIO_TSTAMP_TYPE_COMPAT: ::std::os::raw::c_uint = 0;
pub const SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT: ::std::os::raw::c_uint = 1;
pub const SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK: ::std::os::raw::c_uint = 2;
pub const SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ABSOLUTE: ::std::os::raw::c_uint = 3;
pub const SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ESTIMATED: ::std::os::raw::c_uint = 4;
pub const SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED: ::std::os::raw::c_uint = 5;
pub const SNDRV_PCM_AUDIO_TSTAMP_TYPE_LAST: ::std::os::raw::c_uint = 5;
pub type _bindgen_ty_7 = ::std::os::raw::c_uint;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_pcm_status {
    pub state: snd_pcm_state_t,
    pub trigger_tstamp: timespec,
    pub tstamp: timespec,
    pub appl_ptr: snd_pcm_uframes_t,
    pub hw_ptr: snd_pcm_uframes_t,
    pub delay: snd_pcm_sframes_t,
    pub avail: snd_pcm_uframes_t,
    pub avail_max: snd_pcm_uframes_t,
    pub overrange: snd_pcm_uframes_t,
    pub suspended_state: snd_pcm_state_t,
    pub audio_tstamp_data: __u32,
    pub audio_tstamp: timespec,
    pub driver_tstamp: timespec,
    pub audio_tstamp_accuracy: __u32,
    pub reserved: [::std::os::raw::c_uchar; 36usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_pcm_mmap_status {
    pub state: snd_pcm_state_t,
    pub pad1: ::std::os::raw::c_int,
    pub hw_ptr: snd_pcm_uframes_t,
    pub tstamp: timespec,
    pub suspended_state: snd_pcm_state_t,
    pub audio_tstamp: timespec,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_pcm_mmap_control {
    pub appl_ptr: snd_pcm_uframes_t,
    pub avail_min: snd_pcm_uframes_t,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_pcm_sync_ptr {
    pub flags: ::std::os::raw::c_uint,
    pub s: snd_pcm_sync_ptr__bindgen_ty_1,
    pub c: snd_pcm_sync_ptr__bindgen_ty_2,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_pcm_sync_ptr__bindgen_ty_1 {
    pub status: snd_pcm_mmap_status,
    pub reserved: [::std::os::raw::c_uchar; 64usize],
    _bindgen_union_align: [u32; 16usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_pcm_sync_ptr__bindgen_ty_2 {
    pub control: snd_pcm_mmap_control,
    pub reserved: [::std::os::raw::c_uchar; 64usize],
    _bindgen_union_align: [u32; 16usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_xferi {
    pub result: snd_pcm_sframes_t,
    pub buf: *mut ::std::os::raw::c_void,
    pub frames: snd_pcm_uframes_t,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_xfern {
    pub result: snd_pcm_sframes_t,
    pub bufs: *mut *mut ::std::os::raw::c_void,
    pub frames: snd_pcm_uframes_t,
}
pub const SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY: ::std::os::raw::c_uint = 0;
pub const SNDRV_PCM_TSTAMP_TYPE_MONOTONIC: ::std::os::raw::c_uint = 1;
pub const SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW: ::std::os::raw::c_uint = 2;
pub const SNDRV_PCM_TSTAMP_TYPE_LAST: ::std::os::raw::c_uint = 2;
pub type _bindgen_ty_8 = ::std::os::raw::c_uint;
pub const SNDRV_CHMAP_UNKNOWN: ::std::os::raw::c_uint = 0;
pub const SNDRV_CHMAP_NA: ::std::os::raw::c_uint = 1;
pub const SNDRV_CHMAP_MONO: ::std::os::raw::c_uint = 2;
pub const SNDRV_CHMAP_FL: ::std::os::raw::c_uint = 3;
pub const SNDRV_CHMAP_FR: ::std::os::raw::c_uint = 4;
pub const SNDRV_CHMAP_RL: ::std::os::raw::c_uint = 5;
pub const SNDRV_CHMAP_RR: ::std::os::raw::c_uint = 6;
pub const SNDRV_CHMAP_FC: ::std::os::raw::c_uint = 7;
pub const SNDRV_CHMAP_LFE: ::std::os::raw::c_uint = 8;
pub const SNDRV_CHMAP_SL: ::std::os::raw::c_uint = 9;
pub const SNDRV_CHMAP_SR: ::std::os::raw::c_uint = 10;
pub const SNDRV_CHMAP_RC: ::std::os::raw::c_uint = 11;
pub const SNDRV_CHMAP_FLC: ::std::os::raw::c_uint = 12;
pub const SNDRV_CHMAP_FRC: ::std::os::raw::c_uint = 13;
pub const SNDRV_CHMAP_RLC: ::std::os::raw::c_uint = 14;
pub const SNDRV_CHMAP_RRC: ::std::os::raw::c_uint = 15;
pub const SNDRV_CHMAP_FLW: ::std::os::raw::c_uint = 16;
pub const SNDRV_CHMAP_FRW: ::std::os::raw::c_uint = 17;
pub const SNDRV_CHMAP_FLH: ::std::os::raw::c_uint = 18;
pub const SNDRV_CHMAP_FCH: ::std::os::raw::c_uint = 19;
pub const SNDRV_CHMAP_FRH: ::std::os::raw::c_uint = 20;
pub const SNDRV_CHMAP_TC: ::std::os::raw::c_uint = 21;
pub const SNDRV_CHMAP_TFL: ::std::os::raw::c_uint = 22;
pub const SNDRV_CHMAP_TFR: ::std::os::raw::c_uint = 23;
pub const SNDRV_CHMAP_TFC: ::std::os::raw::c_uint = 24;
pub const SNDRV_CHMAP_TRL: ::std::os::raw::c_uint = 25;
pub const SNDRV_CHMAP_TRR: ::std::os::raw::c_uint = 26;
pub const SNDRV_CHMAP_TRC: ::std::os::raw::c_uint = 27;
pub const SNDRV_CHMAP_TFLC: ::std::os::raw::c_uint = 28;
pub const SNDRV_CHMAP_TFRC: ::std::os::raw::c_uint = 29;
pub const SNDRV_CHMAP_TSL: ::std::os::raw::c_uint = 30;
pub const SNDRV_CHMAP_TSR: ::std::os::raw::c_uint = 31;
pub const SNDRV_CHMAP_LLFE: ::std::os::raw::c_uint = 32;
pub const SNDRV_CHMAP_RLFE: ::std::os::raw::c_uint = 33;
pub const SNDRV_CHMAP_BC: ::std::os::raw::c_uint = 34;
pub const SNDRV_CHMAP_BLC: ::std::os::raw::c_uint = 35;
pub const SNDRV_CHMAP_BRC: ::std::os::raw::c_uint = 36;
pub const SNDRV_CHMAP_LAST: ::std::os::raw::c_uint = 36;
pub type _bindgen_ty_9 = ::std::os::raw::c_uint;
pub const SNDRV_RAWMIDI_STREAM_OUTPUT: ::std::os::raw::c_uint = 0;
pub const SNDRV_RAWMIDI_STREAM_INPUT: ::std::os::raw::c_uint = 1;
pub const SNDRV_RAWMIDI_STREAM_LAST: ::std::os::raw::c_uint = 1;
pub type _bindgen_ty_10 = ::std::os::raw::c_uint;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_rawmidi_info {
    pub device: ::std::os::raw::c_uint,
    pub subdevice: ::std::os::raw::c_uint,
    pub stream: ::std::os::raw::c_int,
    pub card: ::std::os::raw::c_int,
    pub flags: ::std::os::raw::c_uint,
    pub id: [::std::os::raw::c_uchar; 64usize],
    pub name: [::std::os::raw::c_uchar; 80usize],
    pub subname: [::std::os::raw::c_uchar; 32usize],
    pub subdevices_count: ::std::os::raw::c_uint,
    pub subdevices_avail: ::std::os::raw::c_uint,
    pub reserved: [::std::os::raw::c_uchar; 64usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_rawmidi_params {
    pub stream: ::std::os::raw::c_int,
    pub buffer_size: usize,
    pub avail_min: usize,
    pub _bitfield_align_1: [u8; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
    pub reserved: [::std::os::raw::c_uchar; 16usize],
}
impl snd_rawmidi_params {
    #[inline]
    pub fn no_active_sensing(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_no_active_sensing(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        no_active_sensing: ::std::os::raw::c_uint,
    ) -> __BindgenBitfieldUnit<[u8; 1usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let no_active_sensing: u32 = unsafe { ::std::mem::transmute(no_active_sensing) };
            no_active_sensing as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_rawmidi_status {
    pub stream: ::std::os::raw::c_int,
    pub tstamp: timespec,
    pub avail: usize,
    pub xruns: usize,
    pub reserved: [::std::os::raw::c_uchar; 16usize],
}
pub const SNDRV_TIMER_CLASS_NONE: ::std::os::raw::c_int = -1;
pub const SNDRV_TIMER_CLASS_SLAVE: ::std::os::raw::c_int = 0;
pub const SNDRV_TIMER_CLASS_GLOBAL: ::std::os::raw::c_int = 1;
pub const SNDRV_TIMER_CLASS_CARD: ::std::os::raw::c_int = 2;
pub const SNDRV_TIMER_CLASS_PCM: ::std::os::raw::c_int = 3;
pub const SNDRV_TIMER_CLASS_LAST: ::std::os::raw::c_int = 3;
pub type _bindgen_ty_11 = ::std::os::raw::c_int;
pub const SNDRV_TIMER_SCLASS_NONE: ::std::os::raw::c_uint = 0;
pub const SNDRV_TIMER_SCLASS_APPLICATION: ::std::os::raw::c_uint = 1;
pub const SNDRV_TIMER_SCLASS_SEQUENCER: ::std::os::raw::c_uint = 2;
pub const SNDRV_TIMER_SCLASS_OSS_SEQUENCER: ::std::os::raw::c_uint = 3;
pub const SNDRV_TIMER_SCLASS_LAST: ::std::os::raw::c_uint = 3;
pub type _bindgen_ty_12 = ::std::os::raw::c_uint;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_timer_id {
    pub dev_class: ::std::os::raw::c_int,
    pub dev_sclass: ::std::os::raw::c_int,
    pub card: ::std::os::raw::c_int,
    pub device: ::std::os::raw::c_int,
    pub subdevice: ::std::os::raw::c_int,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_timer_ginfo {
    pub tid: snd_timer_id,
    pub flags: ::std::os::raw::c_uint,
    pub card: ::std::os::raw::c_int,
    pub id: [::std::os::raw::c_uchar; 64usize],
    pub name: [::std::os::raw::c_uchar; 80usize],
    pub reserved0: ::std::os::raw::c_ulong,
    pub resolution: ::std::os::raw::c_ulong,
    pub resolution_min: ::std::os::raw::c_ulong,
    pub resolution_max: ::std::os::raw::c_ulong,
    pub clients: ::std::os::raw::c_uint,
    pub reserved: [::std::os::raw::c_uchar; 32usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_timer_gparams {
    pub tid: snd_timer_id,
    pub period_num: ::std::os::raw::c_ulong,
    pub period_den: ::std::os::raw::c_ulong,
    pub reserved: [::std::os::raw::c_uchar; 32usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_timer_gstatus {
    pub tid: snd_timer_id,
    pub resolution: ::std::os::raw::c_ulong,
    pub resolution_num: ::std::os::raw::c_ulong,
    pub resolution_den: ::std::os::raw::c_ulong,
    pub reserved: [::std::os::raw::c_uchar; 32usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_timer_select {
    pub id: snd_timer_id,
    pub reserved: [::std::os::raw::c_uchar; 32usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_timer_info {
    pub flags: ::std::os::raw::c_uint,
    pub card: ::std::os::raw::c_int,
    pub id: [::std::os::raw::c_uchar; 64usize],
    pub name: [::std::os::raw::c_uchar; 80usize],
    pub reserved0: ::std::os::raw::c_ulong,
    pub resolution: ::std::os::raw::c_ulong,
    pub reserved: [::std::os::raw::c_uchar; 64usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_timer_params {
    pub flags: ::std::os::raw::c_uint,
    pub ticks: ::std::os::raw::c_uint,
    pub queue_size: ::std::os::raw::c_uint,
    pub reserved0: ::std::os::raw::c_uint,
    pub filter: ::std::os::raw::c_uint,
    pub reserved: [::std::os::raw::c_uchar; 60usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_timer_status {
    pub tstamp: timespec,
    pub resolution: ::std::os::raw::c_uint,
    pub lost: ::std::os::raw::c_uint,
    pub overrun: ::std::os::raw::c_uint,
    pub queue: ::std::os::raw::c_uint,
    pub reserved: [::std::os::raw::c_uchar; 64usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_timer_read {
    pub resolution: ::std::os::raw::c_uint,
    pub ticks: ::std::os::raw::c_uint,
}
pub const SNDRV_TIMER_EVENT_RESOLUTION: ::std::os::raw::c_uint = 0;
pub const SNDRV_TIMER_EVENT_TICK: ::std::os::raw::c_uint = 1;
pub const SNDRV_TIMER_EVENT_START: ::std::os::raw::c_uint = 2;
pub const SNDRV_TIMER_EVENT_STOP: ::std::os::raw::c_uint = 3;
pub const SNDRV_TIMER_EVENT_CONTINUE: ::std::os::raw::c_uint = 4;
pub const SNDRV_TIMER_EVENT_PAUSE: ::std::os::raw::c_uint = 5;
pub const SNDRV_TIMER_EVENT_EARLY: ::std::os::raw::c_uint = 6;
pub const SNDRV_TIMER_EVENT_SUSPEND: ::std::os::raw::c_uint = 7;
pub const SNDRV_TIMER_EVENT_RESUME: ::std::os::raw::c_uint = 8;
pub const SNDRV_TIMER_EVENT_MSTART: ::std::os::raw::c_uint = 12;
pub const SNDRV_TIMER_EVENT_MSTOP: ::std::os::raw::c_uint = 13;
pub const SNDRV_TIMER_EVENT_MCONTINUE: ::std::os::raw::c_uint = 14;
pub const SNDRV_TIMER_EVENT_MPAUSE: ::std::os::raw::c_uint = 15;
pub const SNDRV_TIMER_EVENT_MSUSPEND: ::std::os::raw::c_uint = 17;
pub const SNDRV_TIMER_EVENT_MRESUME: ::std::os::raw::c_uint = 18;
pub type _bindgen_ty_13 = ::std::os::raw::c_uint;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_timer_tread {
    pub event: ::std::os::raw::c_int,
    pub tstamp: timespec,
    pub val: ::std::os::raw::c_uint,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_ctl_card_info {
    pub card: ::std::os::raw::c_int,
    pub pad: ::std::os::raw::c_int,
    pub id: [::std::os::raw::c_uchar; 16usize],
    pub driver: [::std::os::raw::c_uchar; 16usize],
    pub name: [::std::os::raw::c_uchar; 32usize],
    pub longname: [::std::os::raw::c_uchar; 80usize],
    pub reserved_: [::std::os::raw::c_uchar; 16usize],
    pub mixername: [::std::os::raw::c_uchar; 80usize],
    pub components: [::std::os::raw::c_uchar; 128usize],
}
pub type snd_ctl_elem_type_t = ::std::os::raw::c_int;
pub type snd_ctl_elem_iface_t = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_ctl_elem_id {
    pub numid: ::std::os::raw::c_uint,
    pub iface: snd_ctl_elem_iface_t,
    pub device: ::std::os::raw::c_uint,
    pub subdevice: ::std::os::raw::c_uint,
    pub name: [::std::os::raw::c_uchar; 44usize],
    pub index: ::std::os::raw::c_uint,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_ctl_elem_list {
    pub offset: ::std::os::raw::c_uint,
    pub space: ::std::os::raw::c_uint,
    pub used: ::std::os::raw::c_uint,
    pub count: ::std::os::raw::c_uint,
    pub pids: *mut snd_ctl_elem_id,
    pub reserved: [::std::os::raw::c_uchar; 50usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_ctl_elem_info {
    pub id: snd_ctl_elem_id,
    pub type_: snd_ctl_elem_type_t,
    pub access: ::std::os::raw::c_uint,
    pub count: ::std::os::raw::c_uint,
    pub owner: __kernel_pid_t,
    pub value: snd_ctl_elem_info__bindgen_ty_1,
    pub dimen: snd_ctl_elem_info__bindgen_ty_2,
    pub reserved: [::std::os::raw::c_uchar; 56usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_ctl_elem_info__bindgen_ty_1 {
    pub integer: snd_ctl_elem_info__bindgen_ty_1__bindgen_ty_1,
    pub integer64: snd_ctl_elem_info__bindgen_ty_1__bindgen_ty_2,
    pub enumerated: snd_ctl_elem_info__bindgen_ty_1__bindgen_ty_3,
    pub reserved: [::std::os::raw::c_uchar; 128usize],
    _bindgen_union_align: [u32; 32usize],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_ctl_elem_info__bindgen_ty_1__bindgen_ty_1 {
    pub min: ::std::os::raw::c_long,
    pub max: ::std::os::raw::c_long,
    pub step: ::std::os::raw::c_long,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct snd_ctl_elem_info__bindgen_ty_1__bindgen_ty_2 {
    pub min: ::std::os::raw::c_longlong,
    pub max: ::std::os::raw::c_longlong,
    pub step: ::std::os::raw::c_longlong,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_ctl_elem_info__bindgen_ty_1__bindgen_ty_3 {
    pub items: ::std::os::raw::c_uint,
    pub item: ::std::os::raw::c_uint,
    pub name: [::std::os::raw::c_char; 64usize],
    pub names_ptr: __u64,
    pub names_length: ::std::os::raw::c_uint,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_ctl_elem_info__bindgen_ty_2 {
    pub d: [::std::os::raw::c_ushort; 4usize],
    pub d_ptr: *mut ::std::os::raw::c_ushort,
    _bindgen_union_align: [u32; 2usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_ctl_elem_value {
    pub id: snd_ctl_elem_id,
    pub _bitfield_align_1: [u8; 0],
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize]>,
    pub value: snd_ctl_elem_value__bindgen_ty_1,
    pub tstamp: timespec,
    pub reserved: [::std::os::raw::c_uchar; 120usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_ctl_elem_value__bindgen_ty_1 {
    pub integer: snd_ctl_elem_value__bindgen_ty_1__bindgen_ty_1,
    pub integer64: snd_ctl_elem_value__bindgen_ty_1__bindgen_ty_2,
    pub enumerated: snd_ctl_elem_value__bindgen_ty_1__bindgen_ty_3,
    pub bytes: snd_ctl_elem_value__bindgen_ty_1__bindgen_ty_4,
    pub iec958: snd_aes_iec958,
    _bindgen_union_align: [u32; 128usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_ctl_elem_value__bindgen_ty_1__bindgen_ty_1 {
    pub value: [::std::os::raw::c_long; 128usize],
    pub value_ptr: *mut ::std::os::raw::c_long,
    _bindgen_union_align: [u32; 128usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_ctl_elem_value__bindgen_ty_1__bindgen_ty_2 {
    pub value: [::std::os::raw::c_longlong; 64usize],
    pub value_ptr: *mut ::std::os::raw::c_longlong,
    _bindgen_union_align: [u32; 128usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_ctl_elem_value__bindgen_ty_1__bindgen_ty_3 {
    pub item: [::std::os::raw::c_uint; 128usize],
    pub item_ptr: *mut ::std::os::raw::c_uint,
    _bindgen_union_align: [u32; 128usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_ctl_elem_value__bindgen_ty_1__bindgen_ty_4 {
    pub data: [::std::os::raw::c_uchar; 512usize],
    pub data_ptr: *mut ::std::os::raw::c_uchar,
    _bindgen_union_align: [u32; 128usize],
}
impl snd_ctl_elem_value {
    #[inline]
    pub fn indirect(&self) -> ::std::os::raw::c_uint {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
    }
    #[inline]
    pub fn set_indirect(&mut self, val: ::std::os::raw::c_uint) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(indirect: ::std::os::raw::c_uint) -> __BindgenBitfieldUnit<[u8; 1usize]> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize]> = Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let indirect: u32 = unsafe { ::std::mem::transmute(indirect) };
            indirect as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(C)]
#[derive(Debug)]
pub struct snd_ctl_tlv {
    pub numid: ::std::os::raw::c_uint,
    pub length: ::std::os::raw::c_uint,
    pub tlv: __IncompleteArrayField<::std::os::raw::c_uint>,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_ctl_event {
    pub type_: ::std::os::raw::c_int,
    pub data: snd_ctl_event__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union snd_ctl_event__bindgen_ty_1 {
    pub elem: snd_ctl_event__bindgen_ty_1__bindgen_ty_1,
    pub data8: [::std::os::raw::c_uchar; 60usize],
    _bindgen_union_align: [u32; 17usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct snd_ctl_event__bindgen_ty_1__bindgen_ty_1 {
    pub mask: ::std::os::raw::c_uint,
    pub id: snd_ctl_elem_id,
}