VideoHelp Forum




+ Reply to Thread
Results 1 to 8 of 8
  1. Member
    Join Date
    Aug 2006
    Location
    United States
    Search Comp PM
    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?
    Quote Quote  
  2. 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.
    Quote Quote  
  3. Member
    Join Date
    Dec 2005
    Location
    Canada
    Search Comp PM
    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.
    Quote Quote  
  4. Member
    Join Date
    Aug 2006
    Location
    United States
    Search Comp PM
    ^ Tried that. First part saved ok, but it still crashes when trying to save the second part. :\
    Quote Quote  
  5. 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.
    Quote Quote  
  6. Member
    Join Date
    Aug 2006
    Location
    United States
    Search Comp PM
    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.
    Quote Quote  
  7. Member
    Join Date
    Dec 2005
    Location
    Canada
    Search Comp PM
    Here's and old thread touching on this.

    https://forum.videohelp.com/topic153907.html
    Quote Quote  
  8. Originally Posted by teapot
    What other program can decode/remove bad frames
    You can continue using VirtualDub. Just use a different decoder for the video. It appears you're using Divx to decode. Uninstall Divx and install Xvid. Xvid may not crash at the bad frame. Or try ffdshow. Or a different version of Divx.

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



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!