Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Questions about AAC

jnoring
Beginner
663 Views

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.

  1. Which version of the AAC library should I be using? I see both floating point and integer versions of the library, but I'm not clear on the pros/cons of going with either. I'm leaning towards the floating point simply because it seems more full-featured.
  2. I see that the AAC decoder is part of some larger media framework called UMC. I am really not interested in this larger framework, since I already have a framework I'm attempting to integrate with (DirectShow). So, this leads to several other questions:
    • How do I use just the AAC decoder?
    • What #includes do I need, and what do I need to link against, to use just the AAC decoder?
    • How do I create instances of samples to pass to the decoder? (I see there's a sample class implemented as in/out parameters to the library)
I've looked through the sample applications, but it's not clear to me what I need to include/link against to get all this working, so some clarification would be hugely appreciated. Thanks in advance!
0 Kudos
5 Replies
franknatoli
New Contributor I
664 Views
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.
0 Kudos
Naveen_G_Intel
Employee
664 Views

Hi,

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.

Regards,

Naveen Gv

0 Kudos
jnoring
Beginner
664 Views

Naveen,

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?

0 Kudos
jnoring
Beginner
664 Views

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).

0 Kudos
Chao_Y_Intel
Moderator
664 Views

Hello,

Thanks for sharing the experience. It is very helpful for those who want to use AAC Decoder decoder directly.

Thanks,

Chao

0 Kudos
Reply