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