I've been reviewing the IPP's AAC implementation, and I have a few questions. My goal is to implement a directshow decoder filter using the IPP.
You can also use AAC decoding function directly from IPP library (without using UMC sample code). IPP library has got set of functions is sufficient to implement a portable optimized MPEG-4 AAC Main profile decoder and a portable optimized MPEG-1, 2 Layer III encoder (see [ISO/IEC 11172-3] and [ISO13818]).
Regarding header file and linkage library for IPP AAC functions, refer to IPP user manual - http://software.intel.com/sites/products/documentation/hpc/ipp/pdf/userguide_win_ia32.pdf
This manual has got information about header file required to add for using audio coding functions.
Thanks, I understand how to link against the IPP - the documentation is quite clear on that. My question is: how do I link against UMC? There is (to the best of my knowledge) no clear documentation on this.
Are there no other options to use a standalone AAC decoder besides using the entire UMC? Is there any example of instantiating a standalone encoder/decoder and feeding it samples?
Okay, I figured it out. For reference, the ipp-sample documentation on the AACDecoder is most helpful. And starting with the samples provided (i.e. "The only substantive help is audio-video-codecs\application\simple_player\src\simple_player.cpp and audio-video-codecs\pipeline\umc_pipeline\src\avsync.cpp. In the latter you will find proper use of AACDecoder and DualThreadedCodec."--this is a complete waste of time if you're only interested in the AACDecoder) is the absolute worst place you could direct someone.
The most difficult part for me was figuring out how to use the UMC::AudioData classes. It's not clear what the difference is between Allocate and SetBufferPointer/SetDataSize, or how one uses those with raw samples; the documentation could be vastly clarified. Also, the IPP sample for AACDecoder that uses the MP4 Splitter is a pointless/worthless example for someone trying to use just the AACDecoder. That sample code should be reworked, and/or sample code that works with raw input/raw output shold be included (would have saved me about eight hours).