Help - Search - Members - Calendar
Full Version: Mpeg4 AAC mismatch in values of decoded output
Hydrogenaudio Forums > Lossy Audio Compression > AAC > AAC - Tech
shreya_pathak
Hi,
I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
Can u please tell me where I may be wrong ?
Regards
Shreya
ajay_bangla
QUOTE(shreya_pathak @ Oct 12 2004, 04:50 PM)
Hi,
    I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
                    Can u please tell me where I may be wrong ?
Regards
Shreya
*



+1/-1 is what you need for conformance. So where is the problem? Anyway, if you still are interested to get bit exact, then check if you are using double or single precision. Different algorithms to compute imdct may give u this difference. Most publicly available decoders don't satisfy the compliance testing.
shreya_pathak
QUOTE(ajay_bangla @ Oct 12 2004, 04:26 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 04:50 PM)
Hi,
    I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
                    Can u please tell me where I may be wrong ?
Regards
Shreya
*



+1/-1 is what you need for conformance. So where is the problem? Anyway, if you still are interested to get bit exact, then check if you are using double or single precision. Different algorithms to compute imdct may give u this difference. Most publicly available decoders don't satisfy the compliance testing.
*



Does +/- 1 difference in pcm output value affordable or it has to be bit exact ?
I am using double prescision only, but still there is a mismatch.
ajay_bangla
QUOTE(shreya_pathak @ Oct 12 2004, 05:42 PM)
QUOTE(ajay_bangla @ Oct 12 2004, 04:26 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 04:50 PM)
Hi,
    I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
                    Can u please tell me where I may be wrong ?
Regards
Shreya
*



+1/-1 is what you need for conformance. So where is the problem? Anyway, if you still are interested to get bit exact, then check if you are using double or single precision. Different algorithms to compute imdct may give u this difference. Most publicly available decoders don't satisfy the compliance testing.
*



Does +/- 1 difference in pcm output value affordable or it has to be bit exact ?
I am using double prescision only, but still there is a mismatch.
*



Bit exactness is not required to meet the conformance requirements. If the difference is within +/- 1, it is okay.
wkwai
QUOTE(shreya_pathak @ Oct 12 2004, 03:12 AM)
QUOTE(ajay_bangla @ Oct 12 2004, 04:26 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 04:50 PM)
Hi,
    I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
                    Can u please tell me where I may be wrong ?
Regards
Shreya
*



+1/-1 is what you need for conformance. So where is the problem? Anyway, if you still are interested to get bit exact, then check if you are using double or single precision. Different algorithms to compute imdct may give u this difference. Most publicly available decoders don't satisfy the compliance testing.
*



Does +/- 1 difference in pcm output value affordable or it has to be bit exact ?
I am using double prescision only, but still there is a mismatch.
*




+/- 1 bits is considered conforming.. Why?? Because of the rounding process at the decoder.. For example, if your decoder output is 24.49999999999999 and the conforming decoder's output is 24.5000000000000001.. then the rounding process will give an error of 1 bits that is your decoder will be rounded to 24 whereas the conforming decoder will be rounded to 25...

For such a small error, you can't possibly obtained a 100% conforming output.. because it depends on specific implementations which requires you to be able to
code the decoder in exactly the same way as the conforming decoder.. line by line
in order to eliminate errors due to finite word length of the processor. .
shreya_pathak
QUOTE(wkwai @ Oct 13 2004, 01:56 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 03:12 AM)
QUOTE(ajay_bangla @ Oct 12 2004, 04:26 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 04:50 PM)
Hi,
    I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
                    Can u please tell me where I may be wrong ?
Regards
Shreya
*



+1/-1 is what you need for conformance. So where is the problem? Anyway, if you still are interested to get bit exact, then check if you are using double or single precision. Different algorithms to compute imdct may give u this difference. Most publicly available decoders don't satisfy the compliance testing.
*



Does +/- 1 difference in pcm output value affordable or it has to be bit exact ?
I am using double prescision only, but still there is a mismatch.
*




+/- 1 bits is considered conforming.. Why?? Because of the rounding process at the decoder.. For example, if your decoder output is 24.49999999999999 and the conforming decoder's output is 24.5000000000000001.. then the rounding process will give an error of 1 bits that is your decoder will be rounded to 24 whereas the conforming decoder will be rounded to 25...

For such a small error, you can't possibly obtained a 100% conforming output.. because it depends on specific implementations which requires you to be able to
code the decoder in exactly the same way as the conforming decoder.. line by line
in order to eliminate errors due to finite word length of the processor. .
*



Hi,
Thanks for the reply.How to check the rms error and maximum allowed deviation for rms error ? What does this rms measurement give us?
Regards
Shreya
shreya_pathak
QUOTE(shreya_pathak @ Oct 14 2004, 07:44 PM)
QUOTE(wkwai @ Oct 13 2004, 01:56 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 03:12 AM)
QUOTE(ajay_bangla @ Oct 12 2004, 04:26 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 04:50 PM)
Hi,
    I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
                    Can u please tell me where I may be wrong ?
Regards
Shreya
*



+1/-1 is what you need for conformance. So where is the problem? Anyway, if you still are interested to get bit exact, then check if you are using double or single precision. Different algorithms to compute imdct may give u this difference. Most publicly available decoders don't satisfy the compliance testing.
*



Does +/- 1 difference in pcm output value affordable or it has to be bit exact ?
I am using double prescision only, but still there is a mismatch.
*




+/- 1 bits is considered conforming.. Why?? Because of the rounding process at the decoder.. For example, if your decoder output is 24.49999999999999 and the conforming decoder's output is 24.5000000000000001.. then the rounding process will give an error of 1 bits that is your decoder will be rounded to 24 whereas the conforming decoder will be rounded to 25...

For such a small error, you can't possibly obtained a 100% conforming output.. because it depends on specific implementations which requires you to be able to
code the decoder in exactly the same way as the conforming decoder.. line by line
in order to eliminate errors due to finite word length of the processor. .
*



Hi,
Thanks for the reply.How to check the rms error and maximum allowed deviation for rms error ? What does this rms measurement give us?
Regards
Shreya
*



Hi,
one more thing, if maximim deviation of +/-1 is allowed then what does it mean by saying the output is bit exact and when it will be called that its bit exact ?
wkwai
QUOTE(shreya_pathak @ Oct 14 2004, 06:17 AM)
QUOTE(shreya_pathak @ Oct 14 2004, 07:44 PM)
QUOTE(wkwai @ Oct 13 2004, 01:56 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 03:12 AM)
QUOTE(ajay_bangla @ Oct 12 2004, 04:26 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 04:50 PM)
Hi,
    I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
                    Can u please tell me where I may be wrong ?
Regards
Shreya
*



+1/-1 is what you need for conformance. So where is the problem? Anyway, if you still are interested to get bit exact, then check if you are using double or single precision. Different algorithms to compute imdct may give u this difference. Most publicly available decoders don't satisfy the compliance testing.
*



Does +/- 1 difference in pcm output value affordable or it has to be bit exact ?
I am using double prescision only, but still there is a mismatch.
*




+/- 1 bits is considered conforming.. Why?? Because of the rounding process at the decoder.. For example, if your decoder output is 24.49999999999999 and the conforming decoder's output is 24.5000000000000001.. then the rounding process will give an error of 1 bits that is your decoder will be rounded to 24 whereas the conforming decoder will be rounded to 25...

For such a small error, you can't possibly obtained a 100% conforming output.. because it depends on specific implementations which requires you to be able to
code the decoder in exactly the same way as the conforming decoder.. line by line
in order to eliminate errors due to finite word length of the processor. .
*



Hi,
Thanks for the reply.How to check the rms error and maximum allowed deviation for rms error ? What does this rms measurement give us?
Regards
Shreya
*



Hi,
one more thing, if maximim deviation of +/-1 is allowed then what does it mean by saying the output is bit exact and when it will be called that its bit exact ?
*



I don't really know what you meant by bit exact.. But it is very common to "ditter" the floating point value by adding noise before truncation.. The process of adding +/- 0.5 is actually some form of dithering process. It is necessary because adding noise would actually reshape the truncation errors into broadband white noise and eliminates audible signal distortions.

Probably that is why the standards specified that the max allowable error range is actually +/-2 bits which means decoders can actually implement other types of dithering process which isn't specified in the standard..



wink.gif
wkwai
shreya_pathak
QUOTE(wkwai @ Oct 14 2004, 08:00 PM)
QUOTE(shreya_pathak @ Oct 14 2004, 06:17 AM)
QUOTE(shreya_pathak @ Oct 14 2004, 07:44 PM)
QUOTE(wkwai @ Oct 13 2004, 01:56 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 03:12 AM)
QUOTE(ajay_bangla @ Oct 12 2004, 04:26 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 04:50 PM)
Hi,
    I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
                    Can u please tell me where I may be wrong ?
Regards
Shreya
*



+1/-1 is what you need for conformance. So where is the problem? Anyway, if you still are interested to get bit exact, then check if you are using double or single precision. Different algorithms to compute imdct may give u this difference. Most publicly available decoders don't satisfy the compliance testing.
*



Does +/- 1 difference in pcm output value affordable or it has to be bit exact ?
I am using double prescision only, but still there is a mismatch.
*




+/- 1 bits is considered conforming.. Why?? Because of the rounding process at the decoder.. For example, if your decoder output is 24.49999999999999 and the conforming decoder's output is 24.5000000000000001.. then the rounding process will give an error of 1 bits that is your decoder will be rounded to 24 whereas the conforming decoder will be rounded to 25...

For such a small error, you can't possibly obtained a 100% conforming output.. because it depends on specific implementations which requires you to be able to
code the decoder in exactly the same way as the conforming decoder.. line by line
in order to eliminate errors due to finite word length of the processor. .
*



Hi,
Thanks for the reply.How to check the rms error and maximum allowed deviation for rms error ? What does this rms measurement give us?
Regards
Shreya
*



Hi,
one more thing, if maximim deviation of +/-1 is allowed then what does it mean by saying the output is bit exact and when it will be called that its bit exact ?
*



I don't really know what you meant by bit exact.. But it is very common to "ditter" the floating point value by adding noise before truncation.. The process of adding +/- 0.5 is actually some form of dithering process. It is necessary because adding noise would actually reshape the truncation errors into broadband white noise and eliminates audible signal distortions.

Probably that is why the standards specified that the max allowable error range is actually +/-2 bits which means decoders can actually implement other types of dithering process which isn't specified in the standard..



wink.gif
wkwai
*



Hi,
Thanks for the reply and i wanted to know about this.
How to check the rms error and maximum allowed deviation for rms error ? What does this rms measurement give us?
Regards
Shreya
wkwai
QUOTE(shreya_pathak @ Oct 14 2004, 06:56 AM)
QUOTE(wkwai @ Oct 14 2004, 08:00 PM)
QUOTE(shreya_pathak @ Oct 14 2004, 06:17 AM)
QUOTE(shreya_pathak @ Oct 14 2004, 07:44 PM)
QUOTE(wkwai @ Oct 13 2004, 01:56 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 03:12 AM)
QUOTE(ajay_bangla @ Oct 12 2004, 04:26 PM)
QUOTE(shreya_pathak @ Oct 12 2004, 04:50 PM)
Hi,
    I have developed a reference code for Mpeg4 AAC and the decoded output values when compared with the test vectors there is a mismatch of +/- 1.
i.e, the pcm output values from my reference decoder(floating point code only)
will be 1 more or less than the pcm values of standard test vectors.The difference does not exceed 1. I am not getting what the problem is ? If i compare publicly available code faad from Nero with the standard test vectors, its also not matching with standard test vectors bit by bit and so i am not able to debug where there is an error in my reference code.
                    Can u please tell me where I may be wrong ?
Regards
Shreya
*



+1/-1 is what you need for conformance. So where is the problem? Anyway, if you still are interested to get bit exact, then check if you are using double or single precision. Different algorithms to compute imdct may give u this difference. Most publicly available decoders don't satisfy the compliance testing.
*



Does +/- 1 difference in pcm output value affordable or it has to be bit exact ?
I am using double prescision only, but still there is a mismatch.
*




+/- 1 bits is considered conforming.. Why?? Because of the rounding process at the decoder.. For example, if your decoder output is 24.49999999999999 and the conforming decoder's output is 24.5000000000000001.. then the rounding process will give an error of 1 bits that is your decoder will be rounded to 24 whereas the conforming decoder will be rounded to 25...

For such a small error, you can't possibly obtained a 100% conforming output.. because it depends on specific implementations which requires you to be able to
code the decoder in exactly the same way as the conforming decoder.. line by line
in order to eliminate errors due to finite word length of the processor. .
*



Hi,
Thanks for the reply.How to check the rms error and maximum allowed deviation for rms error ? What does this rms measurement give us?
Regards
Shreya
*



Hi,
one more thing, if maximim deviation of +/-1 is allowed then what does it mean by saying the output is bit exact and when it will be called that its bit exact ?
*



I don't really know what you meant by bit exact.. But it is very common to "ditter" the floating point value by adding noise before truncation.. The process of adding +/- 0.5 is actually some form of dithering process. It is necessary because adding noise would actually reshape the truncation errors into broadband white noise and eliminates audible signal distortions.

Probably that is why the standards specified that the max allowable error range is actually +/-2 bits which means decoders can actually implement other types of dithering process which isn't specified in the standard..



wink.gif
wkwai
*



Hi,
Thanks for the reply and i wanted to know about this.
How to check the rms error and maximum allowed deviation for rms error ? What does this rms measurement give us?
Regards
Shreya
*




Well, you have the floating point value.. then the "round nearest" value.. Just calculate the rms value for a very large sample no biggrin.gif

Actually, the rms measurement gives you the deviation of the noise.. since for a random process, the min is usually zero.. You have to verify this yourself..

I didn't quite understand what you meant by "maximum allowed deviation for rms error " ?




wkwai
Gabriel
note: you know that quoting the quote that is quoting the quote that is quoting the quote that is quoting the quote that is quoting the quote that is quoting the quote that is quoting the quote that is quoting the quote that is quoting the quote makes this thread hard to read, don't you ?
shreya_pathak
Hi Gabriel,
Sorry for that one. Actually I am new to this group and I do not know how to be replied back.I think now I have got it and it will not happen.
Regards
Shreya
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.