Ok, I will start from the beginning. I decided to test the Nero audio encoding options a few months ago. I posted to
http://www.hydrogenaudio.org/forums/index....=ST&f=13&t=6447 and learned as I went about the MP4 format. After running into a couple of terminology problems, I got through, but HAVE found some bugs in AAC and MP4 conversion between implementations across the board, but more on that later. I learned how to use mp4creator to convert, or extract, MP4 files to AAC files and vice versa. I read about how one could use MP4UI to change the AudioType of an mpeg-4 MP4 to mpeg-2 MP4 and then extract the AAC stream with mp4creator, thereby allowing one to create Expanium-compatible AAC files from mpeg-4 MP4 media.
From here, being an audio perfectionist I guess, I did some tests comparing my different conversion results to see if all files were identical. I found some inconsistencies in the results, and I posted them in the above thread, though I will post the results here again for completeness.
[quote]I tried it. I changed the Audio ID from 64 to 103 for one of my mp4 files in mp4UI. I did not "optimize" anything. Next, I used Ivan & Menno to convert the file. Finally, I compared the original AAC file that Nero created with the one that I just converted in a binary comparison program. The two files are the exact same length, but near the very end, the program picked up (only) 31 mismatches between the two. So this method is doing a very close to perfect conversion, but not perfect. I can email someone the two files if they would like. Here are the mismatches:
Mismatch - Offset 0006407507 File 1 : File 2 : t
Mismatch - Offset 0006407508 File 1 : File 2 : —
Mismatch - Offset 0006407509 File 1 : File 2 :
Mismatch - Offset 0006407510 File 1 : ` File 2 : 4
Mismatch - Offset 0006407511 File 1 : ‘ File 2 : 2
Mismatch - Offset 0006407512 File 1 : File 2 : b
Mismatch - Offset 0006407513 File 1 : File 2 :
Mismatch - Offset 0006407514 File 1 : File 2 :
Mismatch - Offset 0006407515 File 1 : File 2 :
Mismatch - Offset 0006407516 File 1 : File 2 :
Mismatch - Offset 0006407517 File 1 : File 2 :
Mismatch - Offset 0006407518 File 1 : † File 2 : a
Mismatch - Offset 0006407519 File 1 : File 2 :
Mismatch - Offset 0006407520 File 1 : File 2 : W
Mismatch - Offset 0006407521 File 1 : File 2 :
Mismatch - Offset 0006407522 File 1 : + File 2 : š
Mismatch - Offset 0006407523 File 1 : File 2 : "
Mismatch - Offset 0006407524 File 1 : File 2 :
Mismatch - Offset 0006407525 File 1 : File 2 :
Mismatch - Offset 0006407526 File 1 : Y File 2 :
Mismatch - Offset 0006407527 File 1 : File 2 :
Mismatch - Offset 0006407528 File 1 : ? File 2 : ,
Mismatch - Offset 0006407529 File 1 : % File 2 :
Mismatch - Offset 0006407530 File 1 : File 2 : Ž
Mismatch - Offset 0006407531 File 1 : File 2 : !
Mismatch - Offset 0006407532 File 1 : H File 2 :
Mismatch - Offset 0006407533 File 1 : ˆ File 2 : O
Mismatch - Offset 0006407534 File 1 : ˆ File 2 :
Mismatch - Offset 0006407535 File 1 : ˆ File 2 :
Mismatch - Offset 0006407536 File 1 : „ File 2 : 7
Mismatch - Offset 0006407537 File 1 : \ File 2 :
Edit: btw, file 1 is the original mp4 mpeg-4 AAC LC file (created by Nero) converted to mpeg-2 AAC LC with mp4UI and Ivan & Menno. File 2 is the original mpeg-2 AAC LC from Nero. [/quote]
The feedback I received was on the lines of "Do you notice any difference between these files? I wonder what are those mismatches, but, if they don't f*ck up your file, I think you don't need to worry. " That was not my intent, and as I have come to find on this board, we enjoy getting things exactly right.
I next got some ideas from Ivan Dimkovic, the Ahead MPEG4 developer. He figured that "maybe [the] ADTS headers are just different and there is no spectral difference," which I think is right, I remember comparing just the audio streams, with no differences found. I haven't sent him the files yet as he suggested, I may if I don't get any feedback this time around.
At this point, enry2k posted info on his first modified version of mp4creator (which he emailed me) which forced an mpeg-2 AudioType when converting files with the program, allowing one to skip the mp4UI step and batch create compatible Expanium AAC files from mpeg-4 MP4 files with no other software needed. At that time, I compared doing the "hack" the old way and the new way, and both created identical results, fyi.
After that, I got no more posts regarding the binary differences between Nero output and mp4creator output, and I left it alone until I read another post on this board that got me thinking of a possible reason for the differences.
So, I posted my results there
http://www.hydrogenaudio.org/forums/index....ST&f=13&t=8541& . Though slightly off topic (the thread there was more interested in going from AAC to MP4), I posted anyway, as it had got my mind going on an idea. Here are my posts there (they kind of got lost in the on topic discussion so I have reposted them here):
[quote]
I remember in a previous thread
http://www.hydrogenaudio.org/forums/index....3&t=6447&hl=mp4 where I was having issues going the other direction (MP4 to AAC). This thread made me think back to something and I have a theory of what could be the problem. What I was getting before were small binary differences between "converted to MPEG-2 AAC from Nero MPEG-4 MP4" files and the original ISO MPEG-2 AAC files created by Nero, but the audio itself was staying completely the same. Could we have garbage being left over because of a slightly outdated header compatibility when processing and converting the Nero MP4 files to MPEG-2 AAC files through either a combination of mp4UI and Ivan & Menno or enry2k's modified mp4creator.exe (these in themselves produce identical results)? From how I understand it, the MP4 header is being removed, and we are forcing an MPEG-4 object type, that's all. There is no "interpretation" of the MP4 header when converting. So, when I read this:
[quote] And you should keep an eye on any new mp4creator version that might appear on RareWares in the future, because it seems that v0.9.8 still has not implemented the last MPEG revision of the MPEG-4 AAC LC ADTS header. [/quote]
it hit me that maybe the slight difference is being caused by a misinterpretation of the header information because of slightly outdated MP4 header spec compatibility in mp4creator compared to Nero. As such both the addition AND possibly the removal could be just enough off of spec to cause a discrepancy. If Nero is using a slightly newer MP4 header configuration that is slightly clashing with how mp4creator handles its removal, this could be the problem. Yes, of course these end files both still function, and like i've said before, maybe this is seeking perfectionism, but that is what this board seeks, so I'm putting it out there.
What I'll do to test this is start with a clean AAC, convert to MP4 and then back to AAC, and see if I don't get identical results within the confines of enry2k's modified mp4creator executable.
Thanks
[/quote]
hans-jrgen responded:
[quote]
[quote=mmortal03,Apr 22 2003 - 03:24 AM] From how I understand it, the MP4 header is being removed, and we are forcing an MPEG-4 object type, that's all. There is no "interpretation" of the MP4 header when converting. [/quote]
No, mp4creator isn't forcing the MPEG-4 AAC LC Object Type while extracting, it's only copying the "MPEG-x" flag from the MP4 header to each ADTS header that gets inserted in each frame of the extracted AAC file. So if there was a MPEG-4 flag in the MP4 header, this caused an MPEG-4 ADTS header which meant 2 additional bits for the emphasis field until December 2002. If there was a MPEG-2 flag, this emphasis field wasn't used in the ADTS header. See
http://www.audiocoding.com/wiki/index.php?page=MP4 and also the ADTS page for more information.
[/quote]
I responded:
[quote]
[quote=hans-jrgen,Apr 22 2003 - 10:16 AM] [quote=mmortal03,Apr 22 2003 - 03:24 AM] From how I understand it, the MP4 header is being removed, and we are forcing an MPEG-4 object type, that's all. There is no "interpretation" of the MP4 header when converting. [/quote]
No, mp4creator isn't forcing the MPEG-4 AAC LC Object Type while extracting, it's only copying the "MPEG-x" flag from the MP4 header to each ADTS header that gets inserted in each frame of the extracted AAC file. So if there was a MPEG-4 flag in the MP4 header, this caused an MPEG-4 ADTS header which meant 2 additional bits for the emphasis field until December 2002. If there was a MPEG-2 flag, this emphasis field wasn't used in the ADTS header. See
http://www.audiocoding.com/wiki/index.php?page=MP4 and also the ADTS page for more information. [/quote]
I haven't had time to test my theory yet, but I will. Thank you for the clarification. One thing I think you might have missed though. I am refering to a modified copy of mp4creator that forces all mpeg-4 audio contained in MP4 to the mpeg-2 AAC object type. This works the same as changing the object type in mp4UI and then running the MP4 through an unmodifed copy of mp4creator, but is of course with less steps and is batch

. I am sure you are refering to the unmodified copy when you state that the program is simply copying the data over, as it should work normally, I assume. Can you clarify?
Edit: flip flopped some mpeg-x's because of inconsistency.
[/quote]
hans-jrgen:
[quote]
[quote=mmortal03,Apr 24 2003 - 06:49 AM] I am sure you are refering to the unmodified copy when you state that the program is simply copying the data over, as it should work normally, I assume. Can you clarify? [/quote]
Yes, and please don't spread this enriconized mp4creator version all around now. He already promised to mail Bill May his changes, so that there will be an official MPEG4IP version probably soon. See this thread in the QuickTime forum:
http://discussions.info.apple.com/WebX?14@...kyV.0@.3bc08671[/quote]
me:
[quote]
[quote=hans-jrgen,Apr 24 2003 - 01:11 AM] [quote=mmortal03,Apr 24 2003 - 06:49 AM] I am sure you are refering to the unmodified copy when you state that the program is simply copying the data over, as it should work normally, I assume. Can you clarify? [/quote]
Yes, and please don't spread this enriconized mp4creator version all around now. He already promised to mail Bill May his changes, so that there will be an official MPEG4IP version probably soon. See this thread in the QuickTime forum:
http://discussions.info.apple.com/WebX?14@...kyV.0@.3bc08671 [/quote]
No problem; yeah, I definately won't spread it around. Sounds great that we will get an official version soon.
[/quote]
and me again:
[quote]
[quote=mmortal03,Apr 21 2003 - 07:24 PM] What I'll do to test this is start with a clean AAC, convert to MP4 and then back to AAC, and see if I don't get identical results within the confines of enry2k's modified mp4creator executable.
Thanks [/quote]
I just tested it. The original aac file in the test and the aac->mp4->aac file in the test are identical. This means that Nero is using some sort of slightly different MP4 container format (or something other) than mp4creator. The 31 differences are stemming from converting Nero MP4 to AAC, so there you go.
BTW, a new mp4creator was released recently. IIRC it is the one in the updated Mp4UI package at Rarewares. This update to compliance does not fix this issue of 31 binary errors when converting Nero MP4's to AAC, so I assume they are completely unrelated.
[/quote]
That is where it stood until this thread. Hopefully, that will bring you up to speed.
I'll post more thorough descriptions of my tests and conversions from
this thread in a minute.