Hello Brian and Doug, 

Thanks for your answers.
Brian, I’ve tried your solution.

I have set up my application as follow : 

- a Record Stream Basic Description that is basically the stream format of the 
AUHAL output element. (Should it be the input element?)
- a Write Stream Basic Description that is a stream format for AAC, defined as 
follow : 

CAStreamBasicDescription fileStream;
memset(&fileStream, 0, sizeof(fileStream));
fileStream.mChannelsPerFrame = 2;
fileStream.mFormatID = kAudioFormatMPEG4AAC;
fileStream.mFormatFlags = 0;
fileStream.mSampleRate = 0;
fileStream.mBitsPerChannel = 0;
Then, I create a ExtAudioFile with ExtAudioFileCreateWithURL whose format is 
basically the format INTO which it should write (AAC)
ExtAudioFileCreateWithURL(
  (CFURLRef) outputFileURL,
  kAudioFileCAFType,
  &mWriteSBD,
  NULL,
  kAudioFileFlags_EraseFile,
  &mOutputFileRef
)

And I set the ClientDataFormat property to be the format of the Audio it will 
receive (AUHAL output element format)

Everything else is correctly set up and the AUHAL render correctly. I use 
ExtAudioFileWriteAsync within the callback to write the AudioBufferList in the 
audio file. 

Yet, when I try to play the file In my computer, it doesn’t produce any sound. 
What is strange is that it’s size is growing, so I guess the AudioBufferList is 
correctly written into the file. But, under the “More Info” of the file 
inspector, It says duration is 00:00 seconds. Hence the confusion. 

Do you have any clue? I have updated my repository if you want to have a closer 
look https://github.com/PiR-P/Dopplr/tree/compressed-format 
<https://github.com/PiR-P/Dopplr/tree/compressed-format>

Thanks for your help ! 

> On 1 Mar 2018, at 05:23, Brian Willoughby <[email protected]> wrote:
> 
> Pierre,
> 
> Rather than try to put AUHAL into AAC format, I would just use ExtAudioFile. 
> Set it up so that the ExtAudioFile takes PCM as input, and AAC as the file 
> format. It will handle the conversion for you. You can specify .caf or any 
> other format that legally holds AAC. I believe that ExtAudioFile handles the 
> threading issues.
> 
> AUHAL is designed to talk to the hardware, so it’s not really going to 
> support all file formats. In contrast, ExtAudioFile is designed to handle 
> most file formats (and you can even add your own via plugins).
> 
> Of course, Doug’s suggestion may be even easier.
> 
> Brian
> 
> 
> On Feb 28, 2018, at 8:29 PM, Doug Wyatt <[email protected] 
> <mailto:[email protected]>> wrote:
>> AUHAL does not support non-PCM formats. There are other higher-level API’s 
>> to accomplish what it sounds like you’re trying to do, e.g. AVAudioRecorder 
>> and AVAudioEngine with an AVAudioFile.
>> 
>> Doug
>> 
>> On Feb 28, 2018, at 15:48, Pierre Pasquet <[email protected] 
>> <mailto:[email protected]>> wrote:
>>> Hi All, 
>>> 
>>> I have posted a question on stack overflow 
>>> (https://stackoverflow.com/questions/49038140/audiobufferlist-for-auhal-unit-whose-output-stream-format-is-compressed
>>>  
>>> <https://stackoverflow.com/questions/49038140/audiobufferlist-for-auhal-unit-whose-output-stream-format-is-compressed>)
>>>  but since CoreAudio isn’t that popular I thought it would be worth it to 
>>> ask it here as well. 
>>> 
>>> To make it short (even if it’s not that easy in this case), I’d like to 
>>> record audio from an input device using au AUHAL, encode it into AAC format 
>>> and write to a file (.caf at the moment). So the input scope of the AUHAL 
>>> reads data in LPCM and output scope should render AAC (everything in bus 1).
>>> 
>>> However, I have an error when rendering (AudioUnitRender returns -50). I 
>>> really don’t know what I’m doing wrong. My audio stream is in stereo so I 
>>> allocate two AudioBuffer but it doesn’t seem to work. 
>>> 
>>> Anyway, everything is explained in more detail in the stack overflow 
>>> question. Would be great if you could have a look at it and answer me 
>>> either here or on the post to give a better visibility.
>>> 
>>> Thanks ! 
>>> Best, 
>>> Pierre
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/coreaudio-api/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to