pdx
14th January 2003, 15:22
hiya all,
i think i'm not alone in the need for a rock-solid, all-around AVI repair utility. alas, i can't code one (i'm a php programmer), but i do certainly know what [i]i[/] would need in one. :D
parse for stream errors (unreadable audio/video frames)
reindex file
perform frame decimation if requested
perform FPS-setting-based sync correction (a la virtualdub, calculating a correct FPS to match the audio stream length) if requested
now i know that there are utilities that, separately, could provide this functionality, but most of them are fixed only to divx3-4 codecs. this utility should be configurable and extendable (i'm thinking of .dll-based modules for each codec it would support).
how i think this would work?
configurable
.dlls for divx3, divx4/5, xvid video codecs initially (xvid repair support is sorely missing these days), mp3 (lame), ac3 audio codecs.
stream error detection and correction
the utility should go through the whole stream, trying to decompress each and every audio and video chunks, frame by frame. when it encounters an illegal frame in either au or vdo, it would insert a "blank" or a "mute" frame into the stream (a P frame with no macroblock changes, or a mute audio frame). thus reindexing is needed, but the utility would build an index fresh and new, anyway.
frame decimation
when requested, the utility could change the number of frames by decimation. the most useful application of this would be performing a semi-ivtc (the 29.97 fps videos which are obviously 24 fps movies (and as such, should be using 23.97) play rather crippled (jittery)), based on the algorithm:
if the drop-frame is a keyframe then the next/previous frame is dropped instead (therefore a buffer is needed)
you could set a percentage-based decision algorithm so that if a drop-frame would have too much change when compared with the previous frame (P frames, that is), then the previous frame is dropped, and the drop-frame is kept instead.
if the next to the one that would be dropped-frame has a stream error, then the drop-frame is kept and the bad frame is dropped.
now, anybody feeling good vibes about this? ;) is there someone who would code it?
i think i'm not alone in the need for a rock-solid, all-around AVI repair utility. alas, i can't code one (i'm a php programmer), but i do certainly know what [i]i[/] would need in one. :D
parse for stream errors (unreadable audio/video frames)
reindex file
perform frame decimation if requested
perform FPS-setting-based sync correction (a la virtualdub, calculating a correct FPS to match the audio stream length) if requested
now i know that there are utilities that, separately, could provide this functionality, but most of them are fixed only to divx3-4 codecs. this utility should be configurable and extendable (i'm thinking of .dll-based modules for each codec it would support).
how i think this would work?
configurable
.dlls for divx3, divx4/5, xvid video codecs initially (xvid repair support is sorely missing these days), mp3 (lame), ac3 audio codecs.
stream error detection and correction
the utility should go through the whole stream, trying to decompress each and every audio and video chunks, frame by frame. when it encounters an illegal frame in either au or vdo, it would insert a "blank" or a "mute" frame into the stream (a P frame with no macroblock changes, or a mute audio frame). thus reindexing is needed, but the utility would build an index fresh and new, anyway.
frame decimation
when requested, the utility could change the number of frames by decimation. the most useful application of this would be performing a semi-ivtc (the 29.97 fps videos which are obviously 24 fps movies (and as such, should be using 23.97) play rather crippled (jittery)), based on the algorithm:
if the drop-frame is a keyframe then the next/previous frame is dropped instead (therefore a buffer is needed)
you could set a percentage-based decision algorithm so that if a drop-frame would have too much change when compared with the previous frame (P frames, that is), then the previous frame is dropped, and the drop-frame is kept instead.
if the next to the one that would be dropped-frame has a stream error, then the drop-frame is kept and the bad frame is dropped.
now, anybody feeling good vibes about this? ;) is there someone who would code it?