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

ippac: UnpackSideInfo Problem with Mono MP3s

olloman
Beginner
661 Views
Im working on an MP3 decoder with IPP Audio Decoding functions. Through studying ISO 11172-3 I think side information in an MP3 is 17bytes (mono) or 32bytes (stereo) long.

My current test mp3 is mono coded (mode 3 - spec; 1 - intel frame header structure). But the ippsUnpackSideInfo_MP3 function increments the "BitStream" pointer always by 32 bytes.

What am I possibly doing wrong?
0 Kudos
15 Replies
olloman
Beginner
661 Views
Switching the mode flag from "1" to "3" fixed to ippUnpackSideInfo_MP3.
But now I dont know why ippsUnpackFrameHeader does not extract the right value for mode fromt he bitstream
0 Kudos
Vladimir_Dudnik
Employee
661 Views
Please make sure you have a valid MP3 stream and it is single channel audio. The ippsUnpackSideInfo_MP3 is simple function and was carefully tested, we did not detect any issues with it.

Regards,
Vladimir
0 Kudos
olloman
Beginner
661 Views
Please make sure you have a valid MP3 stream and it is single channel audio. The ippsUnpackSideInfo_MP3 is simple function and was carefully tested, we did not detect any issues with it.

Regards,
Vladimir

Hi Vladimir,

The stream is valid. Maybe I missinterpret the mode bits?

I work with IPP: Volume 1: Signal Processing (August 2008) Page 1262 where the "IppFrameHeader" structure is described. There it is not said which bits mean a certain mode.

I have also many other problem with MP3 decoding because you never know what the function expect. In the following pages documentation only says give a pointer of this kind. But it does not say, that the pointer has to point at an array of a certain size.

Can you help me to find a more detailed documentation, or sample code. My search was not successful. ( Im new to IPP ).

Best regards Helmut
0 Kudos
olloman
Beginner
661 Views
Please make sure you have a valid MP3 stream and it is single channel audio. The ippsUnpackSideInfo_MP3 is simple function and was carefully tested, we did not detect any issues with it.

Regards,
Vladimir
Hi Vladimir,

Upps, I missed one '='. Sorry.
But my inquierys for more detailed documentation still exist.

Best Regards Helmut
0 Kudos
Vladimir_Dudnik
Employee
661 Views
Hi Helmut,

could you please take a look at IPP samples? I think looking at working codemay help to understand better how to use IPP functions.

Regards,
Vladimir
0 Kudos
olloman
Beginner
661 Views
Hi Helmut,

could you please take a look at IPP samples? I think looking at working codemay help to understand better how to use IPP functions.

Regards,
Vladimir


Hi Vladimir,

I downloaded this http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-code-samples/#va
Any other sources?

Best regards Helmut
0 Kudos
Vladimir_Dudnik
Employee
661 Views
Did you find audio-video-codecs sample in this sample package? It should contain several application which demonstrate use of IPP in media codecs

Vladimir
0 Kudos
olloman
Beginner
661 Views
Did you find audio-video-codecs sample in this sample package? It should contain several application which demonstrate use of IPP in media codecs

Vladimir

Hi Vladimir,

I found the the MP3 decoder code. Unfortunatly this implementation does not match with ippac-Lib.
It does also not fit to Intel Integrated Performance Primitives 6.0 Volume 1: Signal Processing
(http://www.intel.com/cd/software/products/asmo-na/eng/405958.htm)

To me the code in "simple application" seems to be are reimplementation. Please Correct me if Im wrong.

For example take mp3dec_layer3_fp.c there you have a function called: "mp3dec_Huffmancodebits"
This seems to be a new implemenation of what "ippsHuffmanDecode_MP3_1u32s" does.

Best regards Helmut
0 Kudos
Vladimir_Dudnik
Employee
661 Views

Helmut,

there are two implementations of MP3 codec in IPP. One is based on floating point and another one is fixed-point based. You are free to choose between those two. Note, the fixed-point variant was developed basically for XScale architecture which does not have FPU. On general Intel Architecture we recommend to use floating-point based implementation which is faster and provides better accuracy.

Regards,
Vladimir
0 Kudos
olloman
Beginner
661 Views

Helmut,

there are two implementations of MP3 codec in IPP. One is based on floating point and another one is fixed-point based. You are free to choose between those two. Note, the fixed-point variant was developed basically for XScale architecture which does not have FPU. On general Intel Architecture we recommend to use floating-point based implementation which is faster and provides better accuracy.

Regards,
Vladimir


Hi Vladimir,

Well, I understand the diffrence between both implementations. But that does not change the fact, that they both dont match the official IPP documentation. Please check my example form my last posting.

Best regards
Helmut
0 Kudos
Vladimir_Dudnik
Employee
661 Views

I think ippsHuffmanDecode_MP3_1u32s function perfectly match the description in official IPP documentation. You may check this with IPP reference manual, signal processing, chapter 10 - audio coding functions, page 1415.

All and every IPP function is documented in appropriate manuals. We do not documentinternal functions in IPP samples.

Regards,
Vladimir
0 Kudos
olloman
Beginner
661 Views

I think ippsHuffmanDecode_MP3_1u32s function perfectly match the description in official IPP documentation. You may check this with IPP reference manual, signal processing, chapter 10 - audio coding functions, page 1415.

All and every IPP function is documented in appropriate manuals. We do not documentinternal functions in IPP samples.

Regards,
Vladimir

Yes, ippsHuffmanDecode_MP3_1u32s is documented in page 1301 of the Signal Processing document (10-113)

But this function is never used in "simple player" example code.

Im still seeking for example code for all the function described in IPP: Volume 1: Signal Processing (August 2008) Chapter 10 Page 1296
0 Kudos
Vladimir_Dudnik
Employee
661 Views
Please take a look on quite old IPP 5.0 sample of integer MP3 decoder (attached). I did not check it with the latest version of IPP and we do not deliver it anymore. So you may need to adopt build scripts of this sample code

Regards,
Vladimir

0 Kudos
olloman
Beginner
661 Views
Please take a look on quite old IPP 5.0 sample of integer MP3 decoder (attached). I did not check it with the latest version of IPP and we do not deliver it anymore. So you may need to adopt build scripts of this sample code

Regards,
Vladimir



Hi Vladimir,

I just check the code for 2 minutes, but it seems to be a major step to slove my problems :-)

Best regards Helmut

0 Kudos
Vladimir_Dudnik
Employee
661 Views

You are welcome:)

Vladimir
0 Kudos
Reply