7 Replies
      Latest reply on Oct 24, 2019 4:50 AM by bpmaurya3
      jpenca Level 1 Level 1 (0 points)

        Hi,

         

        I've tried to get some audio things going on a new Mac mini 8,1 macOS 10.14.2 (18C54), and ran into an issue where there is no output from the built-in audio devices when using AVAudioEngine.

         

        Xcode prints this while setting up the AVAudioEngine:

        [AudioHAL_Client] HALC_ShellDriverPlugIn.cpp:104:Open:  HALC_ShellDriverPlugIn::Open: opening the plug-in failed, Error: 2003329396 (what)

         

        If the built-in speaker or the headphone jack is selected as sound output device, no sound comes out from my AVAudioEngine app.

         

        If I select output via DisplayPort or AirPlay, sound is working, even though above error is also being printed.

         

        Here's repo with an example project: https://github.com/nsdvr/avaudioengine_basic_output

        It just plays a .wav file when you press the button. My own project uses a custom AudioUnit generator, and its internalRenderBlock is getting called, so the engine seems to be running fine, there's just silence at the physical outputs.

         

        Relevant setup code:

         

        - (void) setup {
            self.engine = [AVAudioEngine new];
            self.playerNode = [AVAudioPlayerNode new];
            [self.engine attachNode:self.playerNode];
            [self.engine connect:self.playerNode to:self.engine.mainMixerNode format:nil];
            [self.engine prepare];
            NSError *err;
            [self.engine startAndReturnError:&err];
            if(err) {
                NSLog(@"AVAudioEngine start error: %@", err.localizedDescription);
            }
            
            NSError *fileErr;
            NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"HUUH" withExtension:@"wav"];
            self.audioFile = [[AVAudioFile alloc] initForReading:fileURL error:&fileErr];
            if(fileErr) {
                NSLog(@"error reading audio file");
                return;
            }
            
            [[NSNotificationCenter defaultCenter] addObserver: self
                                                     selector: @selector(handleInterruption:)
                                                         name: AVAudioEngineConfigurationChangeNotification
                                                       object: self.engine];
        }
        
        - (void) play {
            if(!self.audioFile) {
                NSLog(@"Can't play without audio file");
                return;
            }
            
            [self.playerNode scheduleFile:self.audioFile atTime:nil completionHandler:nil];
            [self.playerNode play];
        }
        

         

         

        Submitted a bug report (46728117)

        I'd like to verify if this issue happens on other machines. I don't have this problem on my old Macbook Air.