@@ -477,7 +477,8 @@ impl Drop for AudioDeviceID {
477
477
pub struct AudioQueue < Channel : AudioFormatNum > {
478
478
subsystem : AudioSubsystem ,
479
479
device_id : AudioDeviceID ,
480
- phantom : PhantomData < Channel >
480
+ phantom : PhantomData < Channel > ,
481
+ spec : AudioSpec ,
481
482
}
482
483
483
484
impl < Channel : AudioFormatNum > AudioQueue < Channel > {
@@ -495,7 +496,7 @@ impl<Channel: AudioFormatNum> AudioQueue<Channel> {
495
496
496
497
let iscapture_flag = 0 ;
497
498
let device_id = ll:: SDL_OpenAudioDevice (
498
- device_ptr as * const c_char , iscapture_flag, & desired,
499
+ device_ptr as * const c_char , iscapture_flag, & desired,
499
500
& mut obtained, 0
500
501
) ;
501
502
match device_id {
@@ -504,11 +505,13 @@ impl<Channel: AudioFormatNum> AudioQueue<Channel> {
504
505
} ,
505
506
id => {
506
507
let device_id = AudioDeviceID :: PlaybackDevice ( id) ;
508
+ let spec = AudioSpec :: convert_from_ll ( obtained) ;
507
509
508
510
Ok ( AudioQueue {
509
511
subsystem : a. clone ( ) ,
510
512
device_id : device_id,
511
- phantom : PhantomData :: default ( )
513
+ phantom : PhantomData :: default ( ) ,
514
+ spec : spec,
512
515
} )
513
516
}
514
517
}
@@ -518,6 +521,9 @@ impl<Channel: AudioFormatNum> AudioQueue<Channel> {
518
521
#[ inline]
519
522
pub fn subsystem ( & self ) -> & AudioSubsystem { & self . subsystem }
520
523
524
+ #[ inline]
525
+ pub fn spec ( & self ) -> & AudioSpec { & self . spec }
526
+
521
527
pub fn status ( & self ) -> AudioStatus {
522
528
unsafe {
523
529
let status = ll:: SDL_GetAudioDeviceStatus ( self . device_id . id ( ) ) ;
@@ -555,6 +561,7 @@ impl<Channel: AudioFormatNum> AudioQueue<Channel> {
555
561
pub struct AudioDevice < CB : AudioCallback > {
556
562
subsystem : AudioSubsystem ,
557
563
device_id : AudioDeviceID ,
564
+ spec : AudioSpec ,
558
565
/// Store the callback to keep it alive for the entire duration of `AudioDevice`.
559
566
userdata : Box < CB >
560
567
}
@@ -584,7 +591,7 @@ impl<CB: AudioCallback> AudioDevice<CB> {
584
591
585
592
let iscapture_flag = 0 ;
586
593
let device_id = ll:: SDL_OpenAudioDevice (
587
- device_ptr as * const c_char , iscapture_flag, & desired,
594
+ device_ptr as * const c_char , iscapture_flag, & desired,
588
595
& mut obtained, 0
589
596
) ;
590
597
match device_id {
@@ -602,7 +609,8 @@ impl<CB: AudioCallback> AudioDevice<CB> {
602
609
Ok ( AudioDevice {
603
610
subsystem : a. clone ( ) ,
604
611
device_id : device_id,
605
- userdata : userdata
612
+ userdata : userdata,
613
+ spec : spec,
606
614
} )
607
615
}
608
616
}
@@ -612,6 +620,9 @@ impl<CB: AudioCallback> AudioDevice<CB> {
612
620
#[ inline]
613
621
pub fn subsystem ( & self ) -> & AudioSubsystem { & self . subsystem }
614
622
623
+ #[ inline]
624
+ pub fn spec ( & self ) -> & AudioSpec { & self . spec }
625
+
615
626
pub fn status ( & self ) -> AudioStatus {
616
627
unsafe {
617
628
let status = ll:: SDL_GetAudioDeviceStatus ( self . device_id . id ( ) ) ;
0 commit comments