I've got a bad frame in a video I got, and I want to remove ONLY the bad frame. I can't do it in VirtualDub because it's between keyframes, and it happens during a moment of dialogue, so I don't want to cut that whole thing out. DivFix doesn't recognize it and trying to re-encode it in VDub causes it to crash. (It also crashes DivX Repair.) Here's the crash report:
VirtualDub crash report -- build 29963 (release)
--------------------------------------
Disassembly:
0253dfa0: 8b8eb0080000 mov ecx, [esi+8b0]
0253dfa6: 03c9 add ecx, ecx
0253dfa8: 03c9 add ecx, ecx
0253dfaa: 03c9 add ecx, ecx
0253dfac: 2bca sub ecx, edx
0253dfae: 83f920 cmp ecx, 20h
0253dfb1: 0f8251050000 jc 0253e508
0253dfb7: 8bc8 mov ecx, eax
0253dfb9: baffffffff mov edx, ffffffff
0253dfbe: d3ea shr edx, cl
0253dfc0: 85c0 test eax, eax
0253dfc2: 8955f0 mov [ebp-10h], edx
0253dfc5: 8b96a8080000 mov edx, [esi+8a8]
0253dfcb: 0f8e29050000 jle 0253e4fa
0253dfd1: 8945ec mov [ebp-14h], eax
0253dfd4: 8bc8 mov ecx, eax
0253dfd6: 2355f0 and edx, [ebp-10h]
0253dfd9: f7d8 neg eax
0253dfdb: 83c020 add eax, 20h
0253dfde: d3e2 shl edx, cl
0253dfe0: 8b8eac080000 mov ecx, [esi+8ac]
0253dfe6: 894df0 mov [ebp-10h], ecx
0253dfe9: 8bc8 mov ecx, eax
0253dfeb: 8b45f0 mov eax, [ebp-10h]
0253dfee: d3e8 shr eax, cl
0253dff0: 0bd0 or edx, eax
0253dff2: 8b45ec mov eax, [ebp-14h]
0253dff5: 81fab6010000 cmp edx, 000001b6
0253dffb: 0f84ee040000 jz 0253e4ef
0253e001: 897dd0 mov [ebp-30h], edi
0253e004: 40 inc eax
0253e005: 83f820 cmp eax, 20h
0253e008: 8986a4080000 mov [esi+8a4], eax
0253e00e: 7c4a jl 0253e05a
0253e010: 8b86ac080000 mov eax, [esi+8ac]
0253e016: 8b4de8 mov ecx, [ebp-18h]
0253e019: 8986a8080000 mov [esi+8a8], eax
0253e01f: 894dbc mov [ebp-44h], ecx
0253e022: 8bbe8c080000 mov edi, [esi+88c]
0253e028: 8b07 mov eax, [edi] <-- FAULT
0253e02a: 8986ac080000 mov [esi+8ac], eax
0253e030: 8b4dbc mov ecx, [ebp-44h]
0253e033: 8b01 mov eax, [ecx]
0253e035: 0fc8 bswap eax
0253e037: 8901 mov [ecx], eax
0253e039: 8b868c080000 mov eax, [esi+88c]
0253e03f: 83c004 add eax, 04h
0253e042: 8945f8 mov [ebp-08h], eax
0253e045: 89868c080000 mov [esi+88c], eax
0253e04b: 8b86a4080000 mov eax, [esi+8a4]
0253e051: 83c0e0 add eax, 0e0h
0253e054: 8986a4080000 mov [esi+8a4], eax
0253e05a: 8b9334f30100 mov edx, [ebx+1f334]
0253e060: 85d2 test edx, edx
0253e062: 0f847f040000 jz 0253e4e7
0253e068: 8bbeb0080000 mov edi, [esi+8b0]
0253e06e: 8b8bb4f10100 mov ecx, [ebx+1f1b4]
0253e074: 0faf8bb8f10100 imul ecx, [ebx+1f1b8]
0253e07b: 3bf9 cmp edi, ecx
0253e07d: 776c ja 0253e0eb
0253e07f: 8b4df8 mov ecx, [ebp-08h]
0253e082: 03ff add edi, edi
0253e084: 2b8e88080000 sub ecx, [esi+888]
0253e08a: 03c9 add ecx, ecx
0253e08c: 03c9 add ecx, ecx
0253e08e: 03c9 add ecx, ecx
0253e090: 8d4c08c0 lea ecx, [eax+ecx-40h]
0253e094: 03ff add edi, edi
0253e096: 03ff add edi, edi
0253e098: 2bf9 sub edi, ecx
0253e09a: 83ff20 cmp edi, 20h
0253e09d: 0f db 0fh
0253e09e: 82 db 82h
0253e09f: 06 push es
Built on Aegis on Fri Aug 15 18:08:14 2008 using compiler version 1400
Windows 5.1 (Windows XP x86 build 2600) [Service Pack 2]
EAX = 00000000
EBX = 02930080
ECX = 029510ac
EDX = 00000000
EBP = 0013f804
ESI = 02950800
EDI = 00c91000
ESP = 0013f7b8
EIP = 0253e028
EFLAGS = 00010246
FPUCW = ffff027f
FPUTW = ffffffff
Crash reason: Access Violation
Crash context:
An out-of-bounds memory access (access violation) occurred in module 'DivX'...
...reading address 00C91000...
...while decompressing video frame 1084 (VideoSource.cpp:2092)...
...while using input buffer at 00c7b218-00c7cf24 (VideoSource.cpp:2091)...
...while using output buffer at 02350080-02483883 (VideoSource.cpp:2090).
Pointer dumps:
EBX 02930080: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
ECX 029510a8: 00000000 00000000 00001d0d 32398284 00000000 00000000 00000000 00000000
ESI 02950800: ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
ESP 0013f7b8: 0013f8a4 7e425eb0 029510ac 00001d0d 00c7b218 02832100 00000290 00000001
0013f7d8: 001404a2 02832130 02930080 02832100 0013f868 029510ac 00000011 a50e8501
0013f7f8: 00000001 00c91000 001304ce 0000000f 0253d30a 0013f83c 5d0969e8 7e4184fc
0013f818: 02350080 00000290 00000001 00000000 00000000 0000000c 00000000 0013f950
EBP 0013f800: 001304ce 0000000f 0253d30a 0013f83c 5d0969e8 7e4184fc 02350080 00000290
0013f820: 00000001 00000000 00000000 0000000c 00000000 0013f950 02834210 00c48478
0013f840: 0000000f 0013fb30 0249b2d7 02832100 0000000f 0013f868 0013f880 00000000
0013f860: 0013f8a4 7e43e582 02350080 00c7b218 00001d0d 00000001 00000000 00000000
Thread call stack:
0253e028: DivX!decore [02490000+ad07c+fac]
7e425eb0: USER32!IsDlgButtonChecked [7e410000+15d75+13b]
0253d30a: DivX!decore [02490000+ad07c+28e]
5d0969e8: COMCTL32!DPA_InsertPtr [5d090000+687c+16c]
7e4184fc: USER32!000084fc
0249b2d7: DivX!0000b2d7
7e41882a: USER32!GetDC [7e410000+86c7+163]
7e41b89b: USER32!GetParent [7e410000+b72f+16c]
7e42f3cc: USER32!SendMessageA [7e410000+1f383+49]
0044e645: ProgressDialog::ProgressDlgProc()
7e418734: USER32!GetDC [7e410000+86c7+6d]
7e418bd9: USER32!GetWindowThreadProcessId [7e410000+8a80+159]
7e423794: USER32!PrivateExtractIconExW [7e410000+13493+301]
7e423761: USER32!PrivateExtractIconExW [7e410000+13493+2ce]
7e423761: USER32!PrivateExtractIconExW [7e410000+13493+2ce]
7e423591: USER32!PrivateExtractIconExW [7e410000+13493+fe]
7e4235a2: USER32!PrivateExtractIconExW [7e410000+13493+10f]
7e4184fc: USER32!000084fc
7e4185a4: USER32!000085a4
0249c73b: DivX!DriverProc [02490000+be88+8b3]
0058911b: _VEC_memcpy()
75a718a8: MSVFW32!ICSendMessage [75a70000+187d+2b]
75a74c4d: MSVFW32!ICDecompress [75a70000+4c10+3d]
0056aac1: VDVideoDecompressorVCM:ecompressFrame()
004cbaa3: VideoSourceAVI:treamGetFrame()
0045a0af: ScanForUnreadableFrames()
0049294b: VDProject::BeginTimelineUpdate()
00492df1: VDProject::ScanForErrors()
00499ca9: VDProjectUI::MenuHit()
7e419488: USER32!GetWindowLongA [7e410000+945d+2b]
7e41b3a7: USER32!DefWindowProcW [7e410000+b33c+6b]
004a28f0: VDUIFrame:efProc()
0049a983: _catch$?MainWndProc@VDProjectUI@@IAEJIIJ@Z$0()
7e419488: USER32!GetWindowLongA [7e410000+945d+2b]
00493d00: VDProjectUI::WndProc()
004a2ded: VDUIFrame::StaticWndProc()
7e418734: USER32!GetDC [7e410000+86c7+6d]
7e418816: USER32!GetDC [7e410000+86c7+14f]
7e4189cd: USER32!GetWindowLongW [7e410000+88a6+127]
7e41ca67: USER32!PeekMessageA [7e410000+c96c+fb]
7e4196c7: USER32!DispatchMessageA [7e410000+96b8+f]
00481496: WinMain@16()
005846f8: __tmainCRTStartup()
7c816fd7: kernel32!RegisterWaitForInputIdle [7c800000+16f8e+49]
-- End of report
I can't understand why, if it's able to crash programs and cause an error in encoding to DVD, DivFix doesn't even recognize it as a bad frame. Any idea what I can possibly do?
+ Reply to Thread
Results 1 to 8 of 8
-
-
I don't think DivFix decodes the frames. It just steps through the chunks of the AVI file looking for key frames and makes a new keyframe index.
Another thing to keep in mind: if you find a program that allows you to substitute something else for the bad frame the remainder of the GOP will still be messed up. Does VirtualDub crash when it gets to the bad frame? Try using a different decoder. You may find one that doesn't crash, just leaves you with a messed up picture. -
How about select the first part (before the bad frame) and use Smart Rendering (selecting the same compressor as the source) and save it.
Delete that first selection and step forward past the bad frame, select the rest and save as before.
Load the new files and save Direct Stream Copy. -
^ Tried that. First part saved ok, but it still crashes when trying to save the second part. :\
-
That's because it has to (attempt to) decode the bad frame in order to decode the rest of the frames. A different decoder may not crash letting you get past the bad frame. The rest of the GOP probably won't render correctly but it's better than cutting out the rest of the GOP.
-
What other program can decode/remove bad frames so that I can create a DVD of this file without all but the first 25 minutes of video blacked out?
I'm also going to try to redownload the video, cause I asked about it at the place I got it from, and so far no one's had any problems. -
Here's and old thread touching on this.
https://forum.videohelp.com/topic153907.html -
Originally Posted by teapot
If you find a decoder that doesn't crash you may be able to feed the video directly to your MPEG encoder, skipping VirtualDub entirely.
Similar Threads
-
please list the virtualdub filters to remove vhs tape video noise
By perfection in forum Newbie / General discussionsReplies: 6Last Post: 7th Jan 2020, 12:45 -
Audio sync issue, Virtualdub, old video clips changing frame rate
By litmus in forum Video ConversionReplies: 1Last Post: 19th Sep 2011, 11:35 -
.avi file cannot be repaired - need to remove bad/corrupt frames
By realtechtalk in forum Video ConversionReplies: 0Last Post: 7th Sep 2008, 12:27 -
TMPGEnc - bad frame problem
By psyklax in forum Video ConversionReplies: 5Last Post: 30th Jun 2007, 22:44 -
bad audio frame
By demonwarrior in forum Newbie / General discussionsReplies: 1Last Post: 12th Jun 2007, 14:37