Alcacia
18th August 2006, 19:01
VDub Mod has a lot of problems with AC3 it seems.
1. If you split an avi with vdubmod, it will chop the AC3 stream right in the middle of a frame, leaving junk at the end of one part and at the beginning of the next part.
2. if you set a delay, vdubmod will just insert junk at the beginning of the AC3 stream...this shows up as corrupt with a tool like BeSliced.
3. if you join two avi's that have been sloppily cut, you will end up with a corrupt AC3 frame in the middle of your AVI...UNLESS the junk at the the end of one part, and the junk at the beginning of the next part actually can combine to form a proper AC3 frame.
4. AC3 audio gets split across interleaves, no matter what interleave parameters you use.
AVIMuxGUI does much better:
1. if you set a delay, it inserts proper AC3 frames of silence.
2. if you join two avi's that are sloppily cut, it will delete the junk at the end of the first avi (i.e., junk data in the AC3 stream), and the junk at the beginning of the second avi, before joining the AC3 streams....in certain instances, it will insert a 32ms frame of silence at the join.
3. when muxing, the AC3 stays aligned across interleaves.
...BUT, here's the big problems with AVIMuxGUI:
It ALWAYS trims the junk off the beginning and ends of AC3 streams, even when that junk data could be combined to form a proper AC3 frame.
Also, it doesn't take into account the TOTAL amount of junk data trimmed when deciding whether or not to insert a silence frame. This comment deserves a bit more explaining, so I'll describe an interesting test I did.
*** The Experiment ***
I took a short AVI and split it into 4 segments using VDubMod. As expeced, VDubMod chopped the AC3 stream with no respect for frame boundaries.
I took these 4 segments and joined them back with VDubMod. As expected, the result was an AVI with perfect AC3 stream, since it just concatenated the AC3 segments, and the junk portions recombined to form proper AC3 frames.
Then I took the 4 segments and joined them using AVIMuxGUI. Guess what!! The resulting audio was 96ms shorter! Apparently, at each join, it decided that the insertion of a 32ms silence frame was not necessary. As you can see, these missing frames add up, though, and by the end of the clip, the audio was preceding the video by 96ms...a noticeable desynch. Just imagine if there had been even more than 4 segments!
Next, I joined the same 4 segments with VDubMod, but this time I jumbled the order of the segments as follows: 2 1 4 3. As expected, analysis of the joined AC3 stream showed junk at the beginning and 3 sections of junk data within the stream itself.
Finally, I joined the 4 segments in jumbled order with AVIMuxGUI. It was no suprise that analysis of the joined AC3 stream showed it to be perfect. What DID surprise me, however, was that the length of the joined AC3 stream was THE SAME as the length of the original AC3 stream! In other words, during this join, AVIMuxGUI inserted a 32ms silence frame at each join.
*** Concluding Comments ***
What we really want is a muxer that will analyze the beginning and ends of the AC3 streams for junk, and ask the all-important question: if the junk is simply concatenated, will it form a good AC3 frame...if the answer is yes, it should concatenate the junk...if the anser is no, it should insert a 32ms silence frame, in order to maintain audio synch.
Neither VDubMOD nor AVIMuxGUI does this kind of intelligent joining.
1. If you split an avi with vdubmod, it will chop the AC3 stream right in the middle of a frame, leaving junk at the end of one part and at the beginning of the next part.
2. if you set a delay, vdubmod will just insert junk at the beginning of the AC3 stream...this shows up as corrupt with a tool like BeSliced.
3. if you join two avi's that have been sloppily cut, you will end up with a corrupt AC3 frame in the middle of your AVI...UNLESS the junk at the the end of one part, and the junk at the beginning of the next part actually can combine to form a proper AC3 frame.
4. AC3 audio gets split across interleaves, no matter what interleave parameters you use.
AVIMuxGUI does much better:
1. if you set a delay, it inserts proper AC3 frames of silence.
2. if you join two avi's that are sloppily cut, it will delete the junk at the end of the first avi (i.e., junk data in the AC3 stream), and the junk at the beginning of the second avi, before joining the AC3 streams....in certain instances, it will insert a 32ms frame of silence at the join.
3. when muxing, the AC3 stays aligned across interleaves.
...BUT, here's the big problems with AVIMuxGUI:
It ALWAYS trims the junk off the beginning and ends of AC3 streams, even when that junk data could be combined to form a proper AC3 frame.
Also, it doesn't take into account the TOTAL amount of junk data trimmed when deciding whether or not to insert a silence frame. This comment deserves a bit more explaining, so I'll describe an interesting test I did.
*** The Experiment ***
I took a short AVI and split it into 4 segments using VDubMod. As expeced, VDubMod chopped the AC3 stream with no respect for frame boundaries.
I took these 4 segments and joined them back with VDubMod. As expected, the result was an AVI with perfect AC3 stream, since it just concatenated the AC3 segments, and the junk portions recombined to form proper AC3 frames.
Then I took the 4 segments and joined them using AVIMuxGUI. Guess what!! The resulting audio was 96ms shorter! Apparently, at each join, it decided that the insertion of a 32ms silence frame was not necessary. As you can see, these missing frames add up, though, and by the end of the clip, the audio was preceding the video by 96ms...a noticeable desynch. Just imagine if there had been even more than 4 segments!
Next, I joined the same 4 segments with VDubMod, but this time I jumbled the order of the segments as follows: 2 1 4 3. As expected, analysis of the joined AC3 stream showed junk at the beginning and 3 sections of junk data within the stream itself.
Finally, I joined the 4 segments in jumbled order with AVIMuxGUI. It was no suprise that analysis of the joined AC3 stream showed it to be perfect. What DID surprise me, however, was that the length of the joined AC3 stream was THE SAME as the length of the original AC3 stream! In other words, during this join, AVIMuxGUI inserted a 32ms silence frame at each join.
*** Concluding Comments ***
What we really want is a muxer that will analyze the beginning and ends of the AC3 streams for junk, and ask the all-important question: if the junk is simply concatenated, will it form a good AC3 frame...if the answer is yes, it should concatenate the junk...if the anser is no, it should insert a 32ms silence frame, in order to maintain audio synch.
Neither VDubMOD nor AVIMuxGUI does this kind of intelligent joining.