Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
16th March 2012, 21:08 | #1522 | Link | |
Excessively jovial fellow
Join Date: Jun 2004
Location: rude
Posts: 1,100
|
Quote:
|
|
1st April 2012, 01:49 | #1523 | Link |
...?
Join Date: Nov 2005
Location: Florida
Posts: 1,420
|
Revisiting the crash issue with certain MKV files, it seems to be related specifically to the way MinGW handles (or rather, mangles) setjmp and longjmp in matroskaparser.c when any sort of optimizations in gcc are used (as there are a couple of optimizations I saw listed in gcc's docs that seemed to do something to -jmp calls), and that files that lack certain information in their metadata or headers or whatever happen to be what can set it off, probably because those files need those calls to not be broken by MinGW, and that's only true when optimizations are turned off. It also now happens with trunk builds linked into x264, not just the C-interface AviSynth plugin, but only when built with MinGW. Cygwin and native Linux builds are wholly unaffected.
I did manage to get a backtrace a couple of weeks ago, below: Code:
$ gdb ffmsindex.exe GNU gdb (GDB) 7.4 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-pc-mingw32". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Reading symbols from c:\dap\vid\Incoming Files\ffms2-avs_r658-optdebug\ffmsindex.exe...done. (gdb) r -t -1 ffms2crashtest.mkv Starting program: c:\dap\vid\Incoming Files\ffms2-avs_r658-optdebug\ffmsindex.exe -t -1 ffms2crashtest.mkv [New Thread 3956.0xf78] Indexing, please wait... 0% Program received signal SIGSEGV, Segmentation fault. 0x77c3554a in msvcrt!_abnormal_termination () from C:\WINDOWS\system32\msvcrt.dll (gdb) bt #0 0x77c3554a in msvcrt!_abnormal_termination () from C:\WINDOWS\system32\msvcrt.dll (gdb) disass $pc-32,$pc+32 Dump of assembler code from 0x77c3552a to 0x77c3556a: 0x77c3552a <msvcrt!_abnormal_termination+19>: push %ecx 0x77c3552b <msvcrt!_abnormal_termination+20>: or $0x8b,%al 0x77c3552d <msvcrt!_abnormal_termination+22>: push %edx 0x77c3552e <msvcrt!_abnormal_termination+23>: or $0x39,%al 0x77c35530 <msvcrt!_abnormal_termination+25>: push %ecx 0x77c35531 <msvcrt!_abnormal_termination+26>: or %dh,0x5(%ebp) 0x77c35534 <msvcrt!_abnormal_termination+29>: mov $0x1,%eax 0x77c35539 <msvcrt!_abnormal_termination+34>: ret 0x77c3553a <msvcrt!_abnormal_termination+35>: push %ebx 0x77c3553b <msvcrt!_abnormal_termination+36>: push %ecx 0x77c3553c <msvcrt!_abnormal_termination+37>: mov $0x77c5f990,%ebx 0x77c35541 <msvcrt!_abnormal_termination+42>: jmp 0x77c3554d <msvcrt!_abnormal_termination+54> 0x77c35543 <msvcrt!_abnormal_termination+44>: push %ebx 0x77c35544 <msvcrt!_abnormal_termination+45>: push %ecx 0x77c35545 <msvcrt!_abnormal_termination+46>: mov $0x77c5f990,%ebx => 0x77c3554a <msvcrt!_abnormal_termination+51>: mov 0x8(%ebp),%ecx 0x77c3554d <msvcrt!_abnormal_termination+54>: mov %ecx,0x8(%ebx) 0x77c35550 <msvcrt!_abnormal_termination+57>: mov %eax,0x4(%ebx) 0x77c35553 <msvcrt!_abnormal_termination+60>: mov %ebp,0xc(%ebx) 0x77c35556 <msvcrt!_abnormal_termination+63>: push %ebp 0x77c35557 <msvcrt!_abnormal_termination+64>: push %ecx 0x77c35558 <msvcrt!_abnormal_termination+65>: push %eax 0x77c35559 <msvcrt!_abnormal_termination+66>: pop %eax 0x77c3555a <msvcrt!_abnormal_termination+67>: pop %ecx 0x77c3555b <msvcrt!_abnormal_termination+68>: pop %ebp 0x77c3555c <msvcrt!_abnormal_termination+69>: pop %ecx 0x77c3555d <msvcrt!_abnormal_termination+70>: pop %ebx 0x77c3555e <msvcrt!_abnormal_termination+71>: ret $0x4 0x77c35561 <msvcrt!_abnormal_termination+74>: int3 0x77c35562 <msvcrt!_abnormal_termination+75>: int3 0x77c35563 <msvcrt!_abnormal_termination+76>: int3 0x77c35564 <msvcrt!_abnormal_termination+77>: int3 0x77c35565 <msvcrt!_abnormal_termination+78>: int3 0x77c35566 <msvcrt!_assert+0>: mov %edi,%edi 0x77c35568 <msvcrt!_assert+2>: push %ebp 0x77c35569 <msvcrt!_assert+3>: mov %esp,%ebp End of assembler dump. (gdb) info all-registers eax 0x6ed86b2e 1859676974 ecx 0x77c39bc6 2009308102 edx 0xffffff01 -255 ebx 0x77c5f990 2009463184 esp 0x22f24c 0x22f24c ebp 0x0 0x0 esi 0x22ffe0 2293728 edi 0x0 0 eip 0x77c3554a 0x77c3554a <msvcrt!_abnormal_termination+51> eflags 0x10246 [ PF ZF IF RF ] cs 0x1b 27 ss 0x23 35 ds 0x23 35 es 0x23 35 fs 0x3b 59 gs 0x0 0 st0 0 (raw 0x00000000000000000000) st1 0 (raw 0x00000000000000000000) st2 <invalid float value> (raw 0x022200f6a7e800618c9c) st3 -1 (raw 0xbfff8000000000000000) st4 -1 (raw 0xbfff8000000000000000) st5 9.9999999999999995e-021 (raw 0x3fbcbce5086492111aeb) st6 23.976024167640553 (raw 0x4003bfcee5c240f97000) st7 3.455309232230784e+018 (raw 0x403cbfcee5c240f97002) fctrl 0xffff037f -64641 fstat 0xffff0420 -64480 ftag 0xffffffff -1 fiseg 0x1b 27 fioff 0x6f2f05c6 1865352646 foseg 0xffff0023 -65501 fooff 0x22f428 2290728 fop 0x77c 1916 xmm0 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x70, 0xf8, 0x22, 0x0}, v8_int16 = {0x103, 0x0, 0x0, 0x0, 0xff, 0x0, 0xf870, 0x22}, v4_int32 = {0x103, 0x0, 0xff, 0x22f870}, v2_int64 = { 0x103, 0x22f870000000ff}, uint128 = 0x0022f870000000ff0000000000000103} xmm1 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x3, 0x1, 0x0, 0x0, 0x3b, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x6c, 0xf0, 0x22, 0x0}, v8_int16 = {0x103, 0x0, 0x3b, 0x0, 0x1, 0x0, 0xf06c, 0x22}, v4_int32 = {0x103, 0x3b, 0x1, 0x22f06c}, v2_int64 = { 0x3b00000103, 0x22f06c00000001}, uint128 = 0x0022f06c000000010000003b00000103} xmm2 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x3c, 0xa3, 0x61, 0x0, 0x98, 0xe4, 0x22, 0x0, 0x0, 0x1, 0x0, 0x0, 0xe0, 0xff, 0x22, 0x0}, v8_int16 = {0xa33c, 0x61, 0xe498, 0x22, 0x100, 0x0, 0xffe0, 0x22}, v4_int32 = {0x61a33c, 0x22e498, 0x100, 0x22ffe0}, v2_int64 = {0x22e4980061a33c, 0x22ffe000000100}, uint128 = 0x0022ffe0000001000022e4980061a33c} xmm3 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x2c, 0xed, 0x22, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdc, 0xf0, 0x22, 0x0}, v8_int16 = {0xed2c, 0x22, 0x0, 0x0, 0x0, 0x0, 0xf0dc, 0x22}, v4_int32 = {0x22ed2c, 0x0, 0x0, 0x22f0dc}, v2_int64 = { 0x22ed2c, 0x22f0dc00000000}, uint128 = 0x0022f0dc00000000000000000022ed2c} xmm4 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x9c, 0x8c, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd4, 0xee, 0x22, 0x0}, v8_int16 = {0x8c9c, 0x61, 0x0, 0x0, 0x0, 0x0, 0xeed4, 0x22}, v4_int32 = {0x618c9c, 0x0, 0x0, 0x22eed4}, v2_int64 = { 0x618c9c, 0x22eed400000000}, uint128 = 0x0022eed4000000000000000000618c9c} xmm5 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x8000000000000000}, v16_int8 = {0x47, 0x95, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x20, 0xe9, 0x90, 0x7c}, v8_int16 = {0x9547, 0x61, 0x0, 0x0, 0x0, 0x0, 0xe920, 0x7c90}, v4_int32 = {0x619547, 0x0, 0x0, 0x7c90e920}, v2_int64 = {0x619547, 0x7c90e92000000000}, uint128 = 0x7c90e920000000000000000000619547} xmm6 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x3, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0, 0xf0, 0x22, 0x0}, v8_int16 = {0x103, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf0f0, 0x22}, v4_int32 = {0x103, 0x0, 0x0, 0x22f0f0}, v2_int64 = {0x103, 0x22f0f000000000}, uint128 = 0x0022f0f0000000000000000000000103} xmm7 {v4_float = {0x0, 0x0, 0x0, 0x0}, v2_double = {0x0, 0x0}, v16_int8 = {0x9c, 0x8c, 0x61, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x70, 0xf8, 0x22, 0x0}, v8_int16 = {0x8c9c, 0x61, 0x0, 0x0, 0xff, 0x0, 0xf870, 0x22}, v4_int32 = {0x618c9c, 0x0, 0xff, 0x22f870}, v2_int64 = { 0x618c9c, 0x22f870000000ff}, uint128 = 0x0022f870000000ff0000000000618c9c} mxcsr 0x1f80 [ IM DM ZM OM UM PM ] mm0 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}} mm1 {uint64 = 0x0, v2_int32 = {0x0, 0x0}, v4_int16 = {0x0, 0x0, 0x0, 0x0}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}} mm2 {uint64 = 0xf6a7e800618c9c, v2_int32 = {0x618c9c, 0xf6a7e8}, v4_int16 = {0x8c9c, 0x61, 0xa7e8, 0xf6}, v8_int8 = {0x9c, 0x8c, 0x61, 0x0, 0xe8, 0xa7, 0xf6, 0x0}} mm3 {uint64 = 0x8000000000000000, v2_int32 = {0x0, 0x80000000}, v4_int16 = {0x0, 0x0, 0x0, 0x8000}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}} mm4 {uint64 = 0x8000000000000000, v2_int32 = {0x0, 0x80000000}, v4_int16 = {0x0, 0x0, 0x0, 0x8000}, v8_int8 = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80}} mm5 {uint64 = 0xbce5086492111aeb, v2_int32 = {0x92111aeb, 0xbce50864}, v4_int16 = {0x1aeb, 0x9211, 0x864, 0xbce5}, v8_int8 = {0xeb, 0x1a, 0x11, 0x92, 0x64, 0x8, 0xe5, 0xbc}} mm6 {uint64 = 0xbfcee5c240f97000, v2_int32 = {0x40f97000, 0xbfcee5c2}, v4_int16 = {0x7000, 0x40f9, 0xe5c2, 0xbfce}, v8_int8 = {0x0, 0x70, 0xf9, 0x40, 0xc2, 0xe5, 0xce, 0xbf}} mm7 {uint64 = 0xbfcee5c240f97002, v2_int32 = {0x40f97002, 0xbfcee5c2}, v4_int16 = {0x7002, 0x40f9, 0xe5c2, 0xbfce}, v8_int8 = {0x2, 0x70, 0xf9, 0x40, 0xc2, 0xe5, 0xce, 0xbf}} (gdb) On a partially related note, a patch that I cobbled together for the C plugin that allows the user to more easily select the optimization level during configure. https://github.com/qyot27/ffms2-cint...923d369af65fca Last edited by qyot27; 1st April 2012 at 01:57. |
1st April 2012, 19:05 | #1524 | Link |
Registered User
Join Date: Sep 2007
Posts: 17
|
Thank you for 666.
Just a quick thank you. I downloaded the build for 666 from a few posts up and wish to thank the developers for fixing an issue I've been having with ProResHQ 10-bit decoding. I don't know which build it was, but it was after 644, so thank you.
-CJ PS - Sign of the beast is the build that works??? Holy ! |
1st April 2012, 21:55 | #1525 | Link | |
もこたんインしたお!
Join Date: Jan 2008
Location: Finland / Japan
Posts: 512
|
For the RGB-in-H.264 folk another build. Available here.
Quote:
__________________
[I'm human, no debug]
|
|
30th April 2012, 10:09 | #1526 | Link | |
Registered User
Join Date: Sep 2009
Posts: 378
|
Quote:
If yuvj420p is simply deemed full range luma 4:2:0 progressive because it's flagged 'fullrange' so then is it no different from yuv420p with full luma unflagged that makes up a big proportion of YCC certainly video off cameras. Is it just suggested differing handling for playback, if the flag's honoured at all. The result I see importing flagged full range YCC into an NLE's for example is it treats it as 0 - 255 levels, scale luma to 16 - 235 so it can then expand again to 0 - 255 RGB for color processing. For avisynth if it's just a luma thing then makes no difference if it's yuvj420p or yuv420p as long as it's not scaled at decompression? Am I correct in thinking that? Last edited by Yellow_; 30th April 2012 at 10:12. |
|
30th April 2012, 12:38 | #1527 | Link |
Compiling Encoder
Join Date: Jan 2007
Posts: 1,348
|
my understanding is that the J stands for "JPEG" which uses pc/full range in comparison to the standard ones which are tv/limited range.
you seem to be thinking that the range of values only applies to luma, but it actually applies to chroma as well... |
30th April 2012, 15:20 | #1528 | Link | ||
Registered User
Join Date: Sep 2009
Posts: 378
|
Quote:
An example, this native Canon DSLR source file to me is just YCbCr 4:2:0, it uses a BT601 color matrix and BT709 transfer. It has luma that goes above 235 and chroma that stays well inside 16 - 240 even as saturated yellow/gold as it is: http://www.yellowspace.webspace.virg....com/Gold.aMOV ffmpeg gives it a pixel format of yuvj420p. Adobe Premiere CS5 treats it as full range so scales luma on decompression for the YCC to RGB conversion. But the chroma is 16 - 240 so can it still be jpeg / JFIF, can chroma be normalised this way so it appears to be just typical yuv420p?. If I remux the Gold.MOV above with komisars patched build of MP4Box and turn off the fullrange flag it's handled by CS5 and ffmpeg as yuv420p not yuvj. The files histogram look better in the conversion to RGB treated as yuv420p and forcing ffmpeg to use full luma than it does just as yuvj420p or as yuvj420p and forcing full luma. So this is my query, am I missing something, is chroma placement different ie: centre for jpeg vs left for mpeg or simply is it because it's flagged fullrange in the h264 VUI Option? By the camera firmware simply to suggest playback handling as it's perhaps considered a 'consumer' camera and h264 gives possibility to flag it. Quote:
Or I have I misinterpreted you answer, do you mean chroma is scaled as well as luma when decompressing yuvj? Thanks for the reply. Last edited by Yellow_; 2nd May 2012 at 08:41. |
||
2nd May 2012, 06:49 | #1529 | Link |
...?
Join Date: Nov 2005
Location: Florida
Posts: 1,420
|
Using komisar's gcc 4.6.2 package or the i686-w64-mingw32-gcc 4.6.3 provided by Ubuntu 12.04 results in the C plugin being utterly broken. It probably affects distributions of MinGW-w64's gcc by other sources, and I wouldn't be at all surprised if it has to do with how gcc itself was compiled, but trying to work around this is driving me batty. The 4.6.1 in 11.10 didn't have any of this mess. On that same token, FFmpeg and x264 also get wonky with >4.6.1, but that can be adjusted with much of the same method (I physically moved all *.dll.a files in /usr/lib/gcc/i686-w64-mingw32/4.6 to a subdirectory so it wouldn't try to use them). The trunk seems to be entirely unaffected, as it loaded video fine as part of x264, provided the aforementioned moving of *.dll.a stuff first so that those builds don't require extra .dlls.
With komisar's 4.6.2, it can be fairly easily circumvented by passing -static-libgcc -static-libstdc++ to --extra-ldflags, and seems to work fine. Unfortunately, my attempts on Ubuntu at inserting a version check into configure that ensures these options are used for gcc >=4.6 resulted in getting ffmsindex-related link errors when both options were specified together (the library seemed to build right, except that I didn't actually test whether it worked; it compiled, which was as far as I went). The check seemed to be okay, but ffmsindex did not like the use of -static-libstdc++ - leaving it out isn't an option, though, since it causes annoying external dependency issues and if those are accounted for, I still ran into it causing Access Violation errors in AviSynth when trying to load scripts using the plugin. I didn't try to dig enough into how to get -static-libstdc++ to be used for the library only, and omitted from ffmsindex's link step. EDIT: Yeah, so I screwed that description up. It's -static-libgcc that ffmsindex doesn't like, not static-libstdc++. EDIT 2012-05-21: Finally resolved by recompiling the MinGW-w64 environment with Zeranoe's build script. It also confirmed that it was the shared crap that was screwing up the repo versions, as I made sure to have it build fully static. The resultant builds were fine, just like they were before. And it only took 6 hours to get set up. Last edited by qyot27; 21st May 2012 at 23:02. |
7th May 2012, 18:33 | #1530 | Link | |
もこたんインしたお!
Join Date: Jan 2008
Location: Finland / Japan
Posts: 512
|
There've been some additional commits over at ffms2, so a new build (also the RGB-in-H.264 stuff got put into libav as well quite some time ago). Available here.
Quote:
__________________
[I'm human, no debug]
|
|
9th May 2012, 00:20 | #1533 | Link |
もこたんインしたお!
Join Date: Jan 2008
Location: Finland / Japan
Posts: 512
|
I don't think anything has gotten fixed in relation to interlaced H.264 in ffms, but when I tested my build in Aegisub with a random "interlaced H.264 in m2ts" clip, I seem to get a very "stable/slow" way of seeking at least (seems to be gradually decoded from the beginning to the frame I asked), and the output seems to be fine
Your Mileage May Vary
__________________
[I'm human, no debug]
|
9th May 2012, 12:00 | #1534 | Link | |
Moderator
Join Date: Feb 2005
Location: Spain
Posts: 6,915
|
Same problem with this sample:
Quote:
__________________
BeHappy, AviSynth audio transcoder. |
|
17th May 2012, 21:38 | #1539 | Link |
Registered User
Join Date: Jun 2011
Posts: 35
|
I am not a pro at it, but it appears DirectShowSource your only option is a .grf file, and I don't know how to easily make a .grf file specify "which size and color format" you want out of the pins, etc. But I haven't looked into it too closely yet.
|
20th May 2012, 10:06 | #1540 | Link |
warpsharpened
Join Date: Feb 2007
Posts: 787
|
|
Thread Tools | Search this Thread |
Display Modes | |
|
|