Printable Version of Topic
Click here to view this topic in its original format
Unofficial VirtualDub Support Forums > Testing / Bug Reports > Virtualdub 1.9.x Test Thread


Posted by: phaeron Aug 3 2009, 12:49 AM
I'm going to start a new test thread in parallel to the 1.9.9 thread that's going on:

http://www.virtualdub.org/beta/VirtualDub-1.9.X-test32.zip
http://www.virtualdub.org/beta/VirtualDub-1.9.X-test32-AMD64.zip
http://www.virtualdub.org/beta/VirtualDub-1.9.X-test32-src.7z

This is from a parallel branch where I'm doing feature work and more experimental stuff in preparation for 1.9.6+. As usual, I can't provide any guarantees about what's going in or when it'll be done, but I can say that I'm starting to go through the feature backlog. Do not re-request features that you have already asked for, because they're already in the backlog. I'm still running down the list and figuring out which ones are easier to implement.

The main reason I'm starting up this thread, however, is that there is a very experimental change in this branch, namely the ability to run video filters multithreaded. Unlike other recent changes to the video filter system, such as 3D acceleration, filters do not need to be rewritten to take advantage of this feature -- the VirtualDub filter API is such that existing filters can be run in parallel. Others have in fact already implemented this before, but I'm a bit late in doing so because it wasn't until after the major filter system rewrites I did for multi-sourcing and 3D acceleration that this was possible in VirtualDub's implementation. Notes on the current implementation:

  • Threaded filtering is not supposed to affect the actual video frames output in any way.
  • You have to enable threaded filtering in Options > Preferences > Threading.
  • Only different filter instances can be run in parallel. In other words, if you only have one "resize" filter entry, VirtualDub can only use one thread to run the video filter chain because it can only run that filter instance on one frame at a time. Two "resize" filters in the chain, however, can run in parallel, because they're separate instances even though they're the same filter type.
  • Running the filter chain requires more memory because more frames have to be in flight to take advantage of the threading. This is not likely to be a problem unless you are working with HD size frames or are trying to run with ridiculously high parallelism (say, 8 cores). If you're working with 1080p frames on a 4-core system with half a dozen filters, however, you're likely to see VirtualDub.exe hit the 100-200M range. The "process ahead" setting allows you to tweak how many output frames the rendering engine allows in the queue at a time. Lowering it reduces memory usage, while raising it reduces the chance of bubbles in the pipeline.
  • There is a difference between disabling multithreaded filtering and setting it to "1 thread." If it is set to one thread, video filters can run in parallel with the video codecs.
  • Color format conversion and VDXA (3D acceleration) currently don't take advantage of threaded filtering. I expect to improve these situations before release.
  • Slow video codecs can affect parallelism. The reason is that the way this is implemented, only the main processing thread can schedule frames, even though all of the threads in the thread pool can execute them. This means that you may have to increase the process ahead value or turn on multithreaded compression to improve parallelism.
  • Some video filters may be incompatible with the new threading, if they are doing something that violates the threading rules for VirtualDub filters. None of the internal video filters should have this problem, but I'm interested in knowing if there are filters out there that crash.


Change list for this build:

  • (test-32) Fixed filename detection regression.
  • (test-31) Incorporated mouse wheel fixes for filter preview dialog and curve control.
  • (test-31) Fixed ASF pseudo-handler so that it doesn't override filename-only detection.
  • (test-30) Fixed focus bug in filter list dialog.
  • (test-29) Synced to 1.9.10 final.
  • (test-27) Fixed audio display regression.
  • (test-26) Fix for scene detector crash; integrated latest fixes from stable branch.
  • (test-25) Added sorting to external encoder dialog.
  • (test-24) Fix for duplicated capture device items.
  • (test-23) Multiplexer errors are reported properly again.
  • (test-23) Fixed I/O error at end when outputting raw audio.
  • (test-22) Added %(samplingratekhz) macro.
  • (test-22) External encoder sets can now only have an audio encoder.
  • (test-22) Added setting to force deletion of temporary file prior to running external encoder.
  • (test-22) %(tempvideofile) and %(tempaudiofile) can now be forced to %(outputfile) in the encoder set when there is no multiplexer.
  • (test-22) Fixed resizing regression in D3DFX display driver.
  • (test-22) Input format setting in external encoder profile now saves properly.
  • (test-21) Added %(hostdir), %(programdir), and %(systemdir) macros for external encoders.
  • (test-21) Fixed crash when exporting without an audio encoder.
  • (test-20) Fixed "Foo" in capture driver list.
  • (test-20) Fixed incorrect biSizeImage field when producing I8 format.
  • (test-19) Fixed frame mapping in normal/fast recompress mode when filters are present.
  • (test-18) Threaded video compression fix, rev 2.
  • (test-18) List scrolling fix in video compressor dialog.
  • (test-17) Fix for some of the B-frame threaded compression issues.
  • (test-17) "Run video analysis pass" now runs the video codec again.
  • (test-16) Synchronized to 1.9.9/stable.
  • (test-16) 2+ thread support for key frame only video compression.
  • (test-16) IVTC frame drop mode.
  • (test-14) Filters: Added deblurring mode and preview to IVTC filter.
  • (test-13) Added copy source/output frame number command.
  • (test-11) Added import/export for external encoder profiles.
  • (test-10) "Process partial output" setting saves.
  • (test-9) Win98 and NT4.0 fixes for external encoder encoding.
  • (test-2) Render: Fixed hang at end with B-frames and with smart rendering.
  • (test-1) Holding the Ctrl key during drag-and-drop appends instead of replaces.
  • (test-1) TGA RLE compression can now be disabled.
  • (test-1) "Scan for errors" command is now scriptable (VirtualDub.video.ScanForErrors).
  • (test-1) Save Animated GIF command is now scriptable (VirtualDub.video.SaveAnimatedGIF).
  • (test-1) Render: Added option to show the status window for batch operations.
  • (test-1) Filters: Added multithreading support.
  • (test-1) JobControl: Auto-shutdown now works over remote desktop and records a planned shutdown on server versions of Windows.

Posted by: jpsdr Aug 4 2009, 08:44 PM
Hello.

Test with some of my own filters and internal :
Input : An avisynth script of DGDecode, output YV12.
Color deapth : In YV12, out YUY2.
Thread : 1, filter both on auto.
My own IVTC automatic IVTC, produce actualy an output of IVTC 2.
My own YV12 -> YUY2 convert.
IVTC internal
My own saturation.
resize internal
output huffyuv.

VDub is at 0% CPU, 161Mo of mermory used, and 100% done but
still in progress since half an hour !

To try to eventualy reproduce it, i'll send you by email the job list
and all the necessary.

BTW, do you intend to make IVTC and Deinterlace work on YV12 ?
If no, where can i find the yadif algorithm ?

EDIT : I was expecting more than 4-5 threads in the task manager...

Posted by: pintcat Aug 4 2009, 10:38 PM
Same for me. When VDub reaches 100% the job isn't done. It just keeps going and going... (tested with DV video 720x576 4:3, resized to 720x540 1:1; video compressed with XviD 2-pass, but the 1st pass could not be finished).

Posted by: phaeron Aug 5 2009, 04:52 AM
I did say it was very experimental. Anyone actually seeing any speedup?

And as for threading, by default VirtualDub clamps the thread count to 4 when set to Auto. This is because it's pretty hard to actually get any real parallelism above that level unless you have an insane set of filters, and it could consume a tremendous amount of memory if it tried to thread too far.

Posted by: jpsdr Aug 5 2009, 07:19 AM
Hello.

I know it was experimental, so i've experiment it.
I thought you wanted problem to be reported.

But, as i'm having an i7 965, i'll try this evening the following :
Same chain filter (around 6-7 filters) between 1.9.5-test4 and 1.9.X with threads put to 8, as it's
the number of "core" i'm having.

I'll tell you if i see speedup.
Nevertheless, without the ending time (as i'm doing other stuff on my normal PC while the
dedicated video PC is running), it may be a little hard...

Posted by: jpsdr Aug 5 2009, 07:45 PM
Ok, test done.
I've done the folowing :
Create a batch process of around 6 filters with 1.9.X. version.
(The one i've send to you).
Copy the job file into the directory of the 1.9.5-test4 version.
This way, in theory, as there was no filter using/producing random data,
each version should do exactly the same thing, and should produce
exactly the same file.

Version 1.9.X configured with threads at "1", filter thread at "8",
and frame on "auto".
Version 1.9.5 configured with threads at "1".

Version 1.9.5 : Process time around 14mn.
Version 1.9.X : Process time around 9-10mn.

Version 1.9.X produce a 33205 frames file, 1.9.5 produce
a 33206 frames file. I assume the difference of 1 is because
the 1.9.X is stalled on the last frame, and don't finalise the batch.

BUT....!!!!!! I've discover something absolutely abnormal.
The file size produced by the 1.9.5 is 16Go, and the file
size produced by the 1.9.X is 8Go !!!!!!!
I realy doubt the last frame has 8Go size.
And, for a 720x576 huffyuv file of 33206 frame, the expected size
is around 8Go.
So, i don't know wich it is, but there is a problem in the 1.9.5,
there isn't in the 1.9.X...
In the package i've send to you, i think you have all you need to try
to investigate/reproduce the problem.

Posted by: phaeron Aug 6 2009, 04:47 AM
I fixed a couple of bugs that caused hangs if smart rendering or B-frames were enabled. Test-2 is now up.

I did a test with a subset of the filters that I could run from your example, and I got bit exact video between 1.9.5 and 1.9.X. There were several major bugs in the new video processing code in 1.9.X test-1, though, so who knows. About the size difference, the only thing I could think of is that something really bad happened like the entire half of the video was blanked out.

Incidentally, you have good taste in anime (Crest of the Stars).

Posted by: jpsdr Aug 6 2009, 08:38 AM
Yes, Crest/Banner has been a great discovery form me.

I've try to make my own fansub DVD, unfortunately,
even on the japanese DVDs, video is a real mess
(in therm of telecine), so, i'll not be able to do what
i'm usualy do : IVTC and accelerate to 25fps, to have
like a pure PAL telecine. Of course, the only interest
on that it's to NOT have to deinterlace, and having
in final a true progressive picture, and finaly a better
result than a standard NTSC-PAL transcoding, wich
produce interlaced frames. And of course, upscaling
480->576 is better when done on progressive frames.

Posted by: jpsdr Aug 6 2009, 06:14 PM
Ok, tested the test2 version, with same job.

1.9.X : Process time around 9mn, and end correctly.
1.9.5 : Process time around 12mn.

Both produced a 8.01Go file, wich is the size expected, don't know what
happened yesterday.
What is the "Video filter process-ahead" option for ? (Was on auto during test).
What does it do ? If i increase it, will it increase the CPU usage ?
I mean, during my test i'm only around 25% CPU usage, so i thought maybe
there is way to increase CPU usage, and speed up things.

Keep the good work.

Posted by: phaeron Aug 7 2009, 06:10 AM
The process ahead option is needed since having more than one frame in flight is the only way to run most chains in parallel.

Let's say that you had a filter chain that contained filters A, B, and C. Each filter is a 1:1 filter like blur, where one frame in produces one frame out. If I request frame 2 from C, it requests frame 2 from B, which requests frame 2 from A. Filters A, B, and C then process frame 2, in that order. There is no room for parallelism here, because only one filter can run on the frame as it goes through the chain.

If you have three threads and three frames, though, then you can run the filters in parallel on different frames. For instance, you could have C working on 3, B working on 4, and A working on 5. Now the filters can work like an assembly line on frames flowing through. This is how VirtualDub runs the filter chain on multiple threads without requiring the filters to be rewritten for multithreading.

The moral of the story is that you will typically want the process-ahead setting set to the number of threads in use. This is what the Auto setting does.

Note that this only helps if you have filters that are somewhat balanced. If you have a bunch of quick filters and one really, really slow filter, you're going to be completely bottlenecked by the slow filter. The only way to get around that would be to run that one filter in parallel, and that's not something that I support right now (and isn't possible for all filter algorithms).

Posted by: jpsdr Aug 7 2009, 12:22 PM
Found out something.
Put display of input and output.
Put swap input/output.
Choose color depth input in high deep color, chek with the 3 last.
color depth output RGB24.
Put a simple filter (Brightness).
Pane display is messed up.

Posted by: phaeron Aug 8 2009, 04:26 AM
Can't reproduce. Are all of those steps needed? I can't imagine that the swap input/output makes a difference. Also, what source are you using? There aren't many codecs that support those last three formats, so you'd have to be using an Avisynth script or some other case where VirtualDub sees an uncompressed input (in this case, it will allow any conversion path).

Posted by: jpsdr Aug 8 2009, 08:08 AM
Can't also reproduce at home, was produced at work. Input video is
uncompressed RGB32. Something again maybe with video driver...

Posted by: chornobyl Aug 21 2009, 10:05 AM
don't remember how but i crasher it
VirtualDub crash report -- build 32759 (release)
http://pastebin.com/m6eda4c77

Posted by: jpsdr Sep 20 2009, 02:01 PM
Hello.

Always still planed for 1.9.6+ (or any 1.9.X) or not ?

About version number : what about make an 1.09.07 and then after an 1.10.01 ?

Posted by: Jam One Sep 20 2009, 06:24 PM
...What about " 1.9.6.2 ; 1.9.6.5 ; 1.9.6.x "... ?

Posted by: stephanV Sep 20 2009, 06:39 PM
You can just do 1.10.x without making it 1.09.06. There has been 1.5.10 in the past for example. Adding 0's just makes it look ugly.

Posted by: MaxS Sep 21 2009, 04:26 AM
Just go with 2.0

There is no law saying 1.9 and 2.0 should be hugely different.

Posted by: jpsdr Oct 9 2009, 04:47 PM
As i was making some test with my new build of filters, i've encounter this crash :

VirtualDub crash report -- build 32759 (release)
--------------------------------------

Disassembly:
0051bb20: ee out dx, al
0051bb21: ff db 0ffh
0051bb22: 397500 cmp [ebp+00h], esi
0051bb25: 7409 jz 0051bb30
0051bb27: ff7500 push dword ptr [ebp+00h]
0051bb2a: e8c28e0900 call 005b49f1
0051bb2f: 59 pop ecx
0051bb30: 8d85f0feffff lea eax, [ebp-110]
0051bb36: 3985e8feffff cmp [ebp-118], eax
0051bb3c: 740c jz 0051bb4a
0051bb3e: ffb5e8feffff push dword ptr [ebp-118]
0051bb44: e8a6950900 call 005b50ef
0051bb49: 59 pop ecx
0051bb4a: 8b4df4 mov ecx, [ebp-0ch]
0051bb4d: 8b4550 mov eax, [ebp+50h]
0051bb50: 5f pop edi
0051bb51: 5e pop esi
0051bb52: 5b pop ebx
0051bb53: 64890d00000000 mov fs:[00000000], ecx
0051bb5a: 83c548 add ebp, 48h
0051bb5d: c9 leave
0051bb5e: c3 ret
0051bb5f: dd442404 fld qword ptr [esp+04h]
0051bb63: 51 push ecx
0051bb64: dc0520625e00 fadd qword ptr [005e6220]
0051bb6a: 51 push ecx
0051bb6b: dd1c24 fstp qword ptr [esp]
0051bb6e: e85d8d0900 call 005b48d0
0051bb73: 59 pop ecx
0051bb74: 59 pop ecx
0051bb75: e9868e0900 jmp 005b4a00
0051bb7a: dd442404 fld qword ptr [esp+04h]
0051bb7e: 51 push ecx
0051bb7f: dc0520625e00 fadd qword ptr [005e6220]
0051bb85: 51 push ecx
0051bb86: dd1c24 fstp qword ptr [esp]
0051bb89: e8428d0900 call 005b48d0
0051bb8e: 59 pop ecx
0051bb8f: 59 pop ecx
0051bb90: e9a18e0900 jmp 005b4a36
0051bb95: 57 push edi
0051bb96: 53 push ebx
0051bb97: 8b7c2414 mov edi, [esp+14h]
0051bb9b: 8b44240c mov eax, [esp+0ch]
0051bb9f: f7e7 mul eax, edi
0051bba1: 8bc8 mov ecx, eax
0051bba3: 8b442410 mov eax, [esp+10h]
0051bba7: 8bda mov ebx, edx
0051bba9: f7e7 mul eax, edi
0051bbab: 03c3 add eax, ebx
0051bbad: 8b5c2418 mov ebx, [esp+18h]
0051bbb1: 83d200 adc edx, 00h
0051bbb4: f7f3 div eax, ebx <-- FAULT
0051bbb6: 8bf8 mov edi, eax
0051bbb8: 8bc1 mov eax, ecx
0051bbba: 8b4c241c mov ecx, [esp+1ch]
0051bbbe: f7f3 div eax, ebx
0051bbc0: 8911 mov [ecx], edx
0051bbc2: 8bd7 mov edx, edi
0051bbc4: 5b pop ebx
0051bbc5: 5f pop edi
0051bbc6: c21400 ret 0014
0051bbc9: 8b442404 mov eax, [esp+04h]
0051bbcd: f764240c mul eax, dword ptr [esp+0ch]
0051bbd1: 89442404 mov [esp+04h], eax
0051bbd5: 8bca mov ecx, edx
0051bbd7: 8b442408 mov eax, [esp+08h]
0051bbdb: f764240c mul eax, dword ptr [esp+0ch]
0051bbdf: 03c1 add eax, ecx
0051bbe1: 83d200 adc edx, 00h
0051bbe4: 3b542410 cmp edx, [esp+10h]
0051bbe8: 7313 jnc 0051bbfd
0051bbea: f7742410 div eax, dword ptr [esp+10h]
0051bbee: 8bc8 mov ecx, eax
0051bbf0: 8b442404 mov eax, [esp+04h]
0051bbf4: f7742410 div eax, dword ptr [esp+10h]
0051bbf8: 8bd1 mov edx, ecx
0051bbfa: c21000 ret 0010
0051bbfd: b8ffffffff mov eax, ffffffff
0051bc02: baffffffff mov edx, ffffffff
0051bc07: c21000 ret 0010
0051bc0a: 55 push ebp
0051bc0b: 8bec mov ebp, esp
0051bc0d: 83ec14 sub esp, 14h
0051bc10: 56 push esi
0051bc11: 8b750c mov esi, [ebp+0ch]
0051bc14: 33c9 xor ecx, ecx
0051bc16: 3bf1 cmp esi, ecx
0051bc18: 57 push edi
0051bc19: c645ff00 mov byte ptr [ebp-01h], 00h
0051bc1d: 7f17 jg 0051bc36
0051bc1f: 7c db 7ch

Built on Aegis on Wed Aug 05 21:23:21 2009 using compiler version 1400

Windows 5.1 (Windows XP x86 build 2600) [Service Pack 3]

EAX = 00000000
EBX = 00000000
ECX = 00000000
EDX = 00000000
EBP = 0012fc78
ESI = 00c65ffc
EDI = 005f0400
ESP = 0012fc50
EIP = 0051bbb4
EFLAGS = 00210246
FPUCW = ffff027f
FPUTW = ffffffff

Crash reason: Integer Divide-by-Zero

Crash context:
An integer division by zero occurred in module 'VirtualDub'.

Pointer dumps:

ESI 00c65ff8: 00000000 00000000 005f0400 00000000 00000000 00c65940 00000000 00000002
EDI 005f0400: 46414456 65746c69 432e7372 656e6e6f 29287463 6e49203a 696c6176 6f732064
ESP 0012fc50: 00c65ed0 ffffffff 0051f3c0 00000000 00000000 005f0400 00000000 0012fc84
0012fc70: ffffffff ffffffff 00c65ffc 0046740b 00000000 00000000 00009c44 00c65ed0
0012fc90: 0012fd60 00000000 008ed560 0000007d ffffffec 00000110 00000100 0047abc0
0012fcb0: 7e3a8e53 7e3ac24e 7e3ac291 001503d8 ffffffec 00000100 00000000 00009c44
EBP 0012fc78: 00c65ffc 0046740b 00000000 00000000 00009c44 00c65ed0 0012fd60 00000000
0012fc98: 008ed560 0000007d ffffffec 00000110 00000100 0047abc0 7e3a8e53 7e3ac24e
0012fcb8: 7e3ac291 001503d8 ffffffec 00000100 00000000 00009c44 00000000 00c65ed0
0012fcd8: 0012fcf0 7e3ac2d0 001503d8 ffffffec 00000100 00000000 0012fd04 7ca3b18e

Thread call stack:
0051bbb4: VDFractionScale64()
0051f3c0: VDFraction::scale64ir()
0046740b: VDProjectUI::SetVideoFiltersAsk()
7e3ac24e: USER32!DefWindowProcA [7e390000+1c17e+d0]
7e3ac291: USER32!DefWindowProcA [7e390000+1c17e+113]
7e3ac2d0: USER32!SetWindowLongW [7e390000+1c2bb+15]
7ca3b18e: SHELL32!DragAcceptFiles [7c9d0000+6b169+25]
0046d63d: VDProjectUI::MenuHit()
0046de10: VDProjectUI::MenuHit()
7e399488: USER32!GetWindowLongA [7e390000+945d+2b]
7e3a8d8b: USER32!DefWindowProcW [7e390000+18d20+6b]
0047a5c0: VDUIFrame::DefProc()
0046ec21: _catch$?MainWndProc@VDProjectUI@@IAEJIIJ@Z$0()
7e399488: USER32!GetWindowLongA [7e390000+945d+2b]
004663c0: VDProjectUI::WndProc()
0047ac75: VDUIFrame::StaticWndProc()
7e398734: USER32!GetDC [7e390000+86c7+6d]
7e398816: USER32!GetDC [7e390000+86c7+14f]
7e3989cd: USER32!GetWindowLongW [7e390000+88a6+127]
7e3aa43b: USER32!PeekMessageA [7e390000+1a340+fb]
7e3996c7: USER32!DispatchMessageA [7e390000+96b8+f]
00452bb6: WinMain@16()
005b99cb: __tmainCRTStartup()
7c817077: kernel32!RegisterWaitForInputIdle [7c800000+1702e+49]

-- End of report

Happen only when my new build of filters is present, and when doing
Video -> Filters when no video is loaded.
Doesn't happen with my old build, doesn't happen when a video
is loaded, doesn't happen on 1.9.6.


Posted by: phaeron Oct 10 2009, 04:44 AM
Caused by uninitialized variable, so it worked by chance. Fixed in 1.9.7 test-4.

Posted by: Barough Feb 9 2010, 02:36 PM
@ phareon
Any plans on adding the fixes etc. that u made up to now into the v1.9.x branch?

Also do u plan on making the Video Compression threads option like the filter threading.

Posted by: phaeron Feb 10 2010, 04:08 AM
I'm not going to backport the fixes from the experimental branch into 1.9.x -- too risky.

No current plans on increasing the video codec threading support. If I did, it would only be possible for codecs that lack delta frames, like Huffyuv and Lagarith.

Posted by: Barough Feb 10 2010, 06:29 AM
Thnx for the reply.

I think u misunderstood me about the fixes, I meant backport the fixes from the 1.9.5+ Stable releases into the Experimental branch and not the other way around. There's been a lot of fixes since the v1.9.x Experimental Test 2 u released. But i really hope to see the new filter threading feature etc. to show up in a Stable release in a near future.

Posted by: phaeron Feb 11 2010, 07:45 AM
Oh, sorry. The thread's been split a bit with the external encoder stuff, but I've cross-integrated the fixes and uploaded test-8.

Posted by: Barough Feb 11 2010, 11:11 AM
Thnx smile.gif

Posted by: phaeron Mar 8 2010, 04:25 AM
Test-9 added -- main change is that I've fixed several serious bugs in the external encoder path on Windows 98 and NT4.0. There is now also a vdlaunch.exe/vdlaunch64.exe stub to work around some annoying deficiencies in the pre-Vista Win32 API. Import/export of encoder settings didn't make it into this build, but I still want to put that in before release.

Posted by: Gromozeka Mar 8 2010, 10:46 AM
QUOTE (phaeron @ Mar 8 2010, 04:25 AM)
Test-9 added -- main change is that I've fixed several serious bugs in the external encoder path on Windows 98 and NT4.0. There is now also a vdlaunch.exe/vdlaunch64.exe stub to work around some annoying deficiencies in the pre-Vista Win32 API. Import/export of encoder settings didn't make it into this build, but I still want to put that in before release.


External encoders\x264.exe -o "%(tempvideofile)" --stdin yuv --crf 23.0 --level 4.1 --aq-mode 4 --subme 9 --qpmin 17 --qpmax 27 --trellis 2 --psy-rd 0.4:0.4 --keyint 250 --min-keyint 2 --ref 5 --mixed-refs --bframes 3 --b-adapt 2 --weightb --direct auto --deblock -1:-1 --partitions p8x8,b8x8,i4x4,i8x8 --8x8dct --deadzone-inter 21 --deadzone-intra 11 --ipratio 1.4 --pbratio 1.4 --nr 0 --scenecut 40 --qcomp 0.65 --me umh --merange 8 --thread-input --threads auto - %(width)x%(height) --fps %(fpsnum)/%(fpsden)

Cannot launch external program. The program launch helper vdlaunch.exe is mising

Posted by: phaeron Mar 9 2010, 04:34 AM
Oops, that was dumb. Reuploaded with packaging step fixed.

Posted by: Gromozeka Mar 9 2010, 07:00 AM
QUOTE (phaeron @ Mar 9 2010, 04:34 AM)
Oops, that was dumb. Reuploaded with packaging step fixed.

smile.gif work fine

Posted by: Gromozeka Mar 9 2010, 06:53 PM
This feature ''Process partial output when render is aborted'' not save when VirtualDub close sad.gif sad.gif sad.gif

Posted by: phaeron Mar 10 2010, 05:21 AM
Fixed in test-10.

Posted by: Gromozeka Mar 10 2010, 05:55 AM
QUOTE (phaeron @ Mar 10 2010, 05:21 AM)
Fixed in test-10.

Thanks smile.gif
may be you add external encoder for capture?

Posted by: phaeron Mar 12 2010, 04:45 AM
Not something I'd planned for the next major release. Can't think of a reason why it couldn't be done, though.

Posted by: olnima Mar 12 2010, 11:31 AM
QUOTE (Gromozeka @ Mar 10 2010, 05:55 AM)
...may be you add external encoder for capture?

Goooooood idea... smile.gif

Posted by: Barough Mar 12 2010, 01:25 PM
QUOTE (olnima @ Mar 12 2010, 12:31 PM)
QUOTE (Gromozeka @ Mar 10 2010, 05:55 AM)
...may be you add external encoder for capture?

Goooooood idea... smile.gif

Yeah, sound like a good idea 4 sure.

Posted by: John I. Mar 13 2010, 04:56 AM
Hello,

A minor bug, the feature

Options/Preferences/Batch/Show status window for batch operations

is not saved after exiting VirtualDub (all versions of 1.9.X)

Thanks for all the great work. smile.gif


Posted by: phaeron Mar 13 2010, 07:04 AM
Thanks, fixed.

Posted by: pureocean Mar 13 2010, 04:16 PM
Minor bug: File menu -> "Run video analysis pass" can't save XViD 1 pass.

Therefore, I can using classic method as "Save AVI". Working.
Video filter thread+progress-ahead settings: Auto.
My CPU: AMD Phenom II X3 710
Really really increased encoding speed in 1.9.X-test10(exp).
Especially xvid 1pass. Thanks to your efforts.

P.S.: I hope, major relase (2.x) support will internal import MP4 and MKV
file format with multi audio streams.

Posted by: phaeron Mar 14 2010, 09:43 PM
Yeah, I discovered this problem a while ago. There are two use cases for that feature: running filters in analysis mode, and running codecs in analysis mode. Only one of those two cases is covered, and I need to split the command. I assume you're just saying that the with-codec mode is missing, and not that there was a change in behavior from earlier versions?

Posted by: pureocean Mar 14 2010, 11:23 PM
QUOTE (phaeron @ Mar 14 2010, 09:43 PM)
Yeah, I discovered this problem a while ago. There are two use cases for that feature: running filters in analysis mode, and running codecs in analysis mode. Only one of those two cases is covered, and I need to split the command. I assume you're just saying that the with-codec mode is missing, and not that there was a change in behavior from earlier versions?

Yes. Codec mode's file is missing.
I selected Compression->XViD->Twopass-1st pass.
VDub can't create Xvid-1pass file. Unnecessarily continues encode progressing.

I am just tried to 1.9.X-test10-expermential.
Beforehand I was using 1.9.9.-test10-stable.
XviD 1st pass file could creat.

Thank you very much for Virtualdub project.
Incredible software and very useful.

Posted by: dloneranger Mar 16 2010, 06:35 PM
I have a few questions about the test version

1) Multiple filter chains running at the same time
If the filter list includes a gpu filter (vdshader etc) am I correct in assuming that it's going to be a bottleneck
If so, should the video filter threading be set to 1 thread before rendering a file using a gpu filter?

2) fcchandler
In the changelog there's an entry "The preferred handler (fccHandler) field in the video stream is now ignored by default for consistency"
Could you give a description of this please, the whys and reasons for enabling or disabling it

Thanks

Posted by: phaeron Mar 17 2010, 03:52 AM
QUOTE

If the filter list includes a gpu filter (vdshader etc) am I correct in assuming that it's going to be a bottleneck
If so, should the video filter threading be set to 1 thread before rendering a file using a gpu filter?


No, you can still benefit from multiple threads -- VirtualDub can run all of the other CPU-based filters on another frame in parallel to the one that's busy in the GPU filter.

By the way, vdshader is not a GPU filter. It uses shader syntax, but it still runs the shader on the CPU. gpufilterdx is the one that can use the GPU.

QUOTE

In the changelog there's an entry "The preferred handler (fccHandler) field in the video stream is now ignored by default for consistency"
Could you give a description of this please, the whys and reasons for enabling or disabling it


There are two pertinent fields in the video stream. The biCompression field is required and identifies the format, whereas the fccHandler field is optional and identifies the codec that was used to create the stream.

The reason that I disabled the use of the fccHandler field is that it led to unexpected behavior where two files that used the same format would open with different codecs. For instance, you could have two XviD files where one would decode with XviD and the other one would decode with ffvfw, just because different codecs were used to encode it. This was particularly problematic when trying to tweak decoding settings on one of the codecs.

Posted by: dloneranger Mar 17 2010, 04:40 AM
Thanks for the clarifications

Posted by: John I. Mar 19 2010, 10:11 PM
Hello,

There is a problem when a video is edited (any format) and is previewed in any filter.

for example:

a video capture of 150,000 frames, i would like to cut the first 100,000 frames, keep the next 20,000 frames, and discard the last 30,000.

|_________100,000____________|__20,000__|___30,000___|

When i try to adjust the brightness & contrast or use any other filter on the remaining 20,000 frames, what the filter preview displays is completely different from what is displayed on the time line.

This also applies to 1.9.9



Posted by: phaeron Mar 20 2010, 03:09 AM
There is a known limitation where the edit state of the timeline won't be reflected in the preview if you're using a filter afterward that changes frame rate (IVTC in reduce or deinterlace in double mode). Otherwise, it should show the edited timeline. I just tried it in 1.9.8 and it seems to be working fine. What exactly are you seeing? Just that the edits aren't showing up, or that the frame images themselves are wrong?

Posted by: John I. Mar 20 2010, 02:46 PM
Hello,

The frame images themselves are wrong.

I'm using only one filter (the internal Brightness & Contrast). No frame rate conversion.

* For a test,
- take a full length movie (DIVX, MPEG2, XVID etc.. don't make any difference),
- select and delete from the beginning the first half ~70,000 frames of the movie at the nearest key frame,
- add internal brightness & Contrast filter,
- open its preview window,
- hold the frame slider and move from beginning to end.

* Another test, the same movie, delete the first 4000 frames, and follow the same above steps.

The first frame in the filter preview window might be the same as the first one on the time line, but when holding the slider from beginning to end, the display stops at a frame and doesn't show the following frames.

Another observation, If the number of the deleted frames is increased, the undisplayed frames also increase.


Posted by: dloneranger Mar 20 2010, 05:08 PM
It looks like the preview window is getting the deletions applied incorrectly

An easy way to check is to make a very short test clip of say 100 frames of motion (no fade outs etc)
Delete the middle, leaving just the first 5 frames and the last 5 frames
Now add a filter with a preview window and go through frame by frame
The preview will be incorrect on frame 5 and after

Posted by: Gromozeka Mar 20 2010, 09:43 PM
Hello
I using command line for DVD encoding, but can not push this
External encoders\ffmpeg -f rawvideo -s %(width)x%(height) -i - -f yuv4mpegpipe - | mpeg2enc.exe -o "%(tempvideofile)" --multi-thread 2 --verbose 0 --video-bitrate 5500 --format 9 --aspect 2 --ratecontroller 0 --quantisation 3 --interlace-mode 0 --motion-search-radius 32 --reduction-4x4 1 --reduction-2x2 1 --max-gop-size 15 --video-norm p --intra_dc_prec 8 --no-constraints --custom-quant-matrices tmpgenc --b-per-refframe 2

VirtualDub not compressed
Phaeron, where mistake? sad.gif

Posted by: phaeron Mar 21 2010, 01:02 AM
Alright, figured it out -- it was a slightly different bug than I was thinking of. Try 1.9.9-test11 in the 1.9.9 test thread.

Posted by: John I. Mar 21 2010, 09:04 AM
Hello,

OK. I've done extensive testing using the 1.9.9-test11 on a 3hr video capture i couldn't work on before, and applied over 50 edits to the video. The time line is now displayed correctly in any filter preview.

Thanks.

Will this be applied to the 1.9.X branch to use the filter threading feature ? It does make a big difference on a quad core CPU.

Thanks again. smile.gif


Posted by: phaeron Mar 21 2010, 06:22 PM
The preview window still works single-threaded because there are additional considerations when that window is up (the filter's execution has to be synchronized against its filter dialog). I haven't come up with a solution yet for allowing other filters to multi-thread in this situation.

Posted by: phaeron Mar 22 2010, 04:03 AM
Okay, test-11 is up. I added import/export for external encoder profiles since that's the last thing that was missing that I felt was essential to the feature. An important thing to know about this feature is that it will attempt to store a relative path to the executables if you have them in the same directory or under the directory that you're saving the .vdprof file into, which makes it easier to cart around a portable encoder setup.

Posted by: Gromozeka Mar 22 2010, 10:40 AM
QUOTE (phaeron @ Mar 22 2010, 04:03 AM)
Okay, test-11 is up. I added import/export for external encoder
profiles since that's the last thing that was missing that I felt was essential to the feature. An important
thing to know about this feature is that it will attempt to store a relative path to the executables if you
have them in the same directory or under the directory that you're saving the .vdprof file into, which makes it
easier to cart around a portable encoder setup.

Thanks, phaeron
works fine smile.gif
Help me with this line (line not work in VirtualDub)

mencoder -rawvideo - -o "%(tempvideofile)" -of rawvideo -mpegopts format=dvd -srate 48000 -ofps %(fps) -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=3:vb_qfactor=1.25:vb_qoffset=0:vqcomp=0.75:dc=8:vstrict=0:vrc_maxrate=8800:vbitrate=7000:aspect=4/3

Posted by: stephanV Mar 22 2010, 10:59 AM
You are setting an audio encoder, this could be the problem. Check mencoder documentation.

Posted by: Gromozeka Mar 22 2010, 11:08 AM
QUOTE (stephanV @ Mar 22 2010, 10:59 AM)
You are setting an audio encoder, this could be the problem. Check mencoder documentation.

I'm delete -oac lavc
But i think the problem - input yuv

Posted by: stephanV Mar 22 2010, 11:11 AM
Well you'd have to check mencoder documentation how to pipe raw input to it.

Posted by: Gromozeka Mar 22 2010, 11:36 AM
QUOTE (stephanV @ Mar 22 2010, 11:11 AM)
Well you'd have to check mencoder documentation how to pipe raw input to it.

I read documentation, but don't know how do it

Posted by: v0lt Mar 22 2010, 02:35 PM
QUOTE (phaeron @ Mar 22 2010, 04:03 AM)
Okay, test-11 is up...

Thank you for adding the field "Command arguments"! smile.gif

Posted by: Gromozeka Mar 22 2010, 02:50 PM
Phaeron, this option not work? Why?

mencoder
-rawvideo on:fps=%(fps) -nosound -mpegopts format=dvd -srate 48000 -ofps 25 -ovc lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=3:vb_qfactor=1.25:vb_qoffset=0:vqcomp=0.75:vstrict=0:vrc_maxrate=8800:vbitrate=7000:aspect=4/3 -of rawvideo -o "%(tempvideofile)"

Posted by: phaeron Mar 23 2010, 04:44 AM
Check the log (F8) -- it'll have any error output as long as you have log stdout/stderr enabled for that encoder.

Also, make sure you have a build of mencoder that works properly with stdin input. Some of the command-line apps have builds floating around with busted stdin support on Windows because they're lacking a magic statement to force binary mode.

Posted by: Gromozeka Mar 23 2010, 11:30 AM
QUOTE (phaeron @ Mar 23 2010, 04:44 AM)
Check the log (F8) -- it'll have any error output as long as you have log stdout/stderr enabled for that encoder.

Also, make sure you have a build of mencoder that works properly with stdin input. Some of the command-line apps have builds floating around with busted stdin support on Windows because they're lacking a magic statement to force binary mode.


This is work
ffmpeg -i 1.avs -f yuv4mpegpipe - | mencoder - -of mpeg -o 1.mpg -nosound -mpegopts format=dvd -srate 48000 -ofps 25 -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=3:vb_qfactor=1.25:vb_qoffset=0:vqcomp=0.75:dc=8:vstrict=0:vrc_maxrate=8800:vbitrate=5000:aspect=4/3

Posted by: Gromozeka Mar 23 2010, 12:16 PM
Phaeron, this must be work? but ...

External encoders\ffmpeg -f rawvideo -s %(width)x%(height) -i - -f yuv4mpegpipe - | mencoder - -of mpeg -o "%(tempvideofile)" -nosound -mpegopts format=dvd -srate 48000 -ofps 25 -ovc lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:vqmin=3:vb_qfactor=1.25:vb_qoffset=0:vqcomp=0.75:vstrict=0:vrc_maxrate=8800:vbitrate=5000:aspect=4/3

External encoders\ffmpeg -f rawaudio -i - -acodec ac3 -ar 48000 -ac 2 -vol 384 -ab 192k "%(tempaudiofile)"

External encoders\ffmpeg -i "%(tempvideofile)" -vcodec copy -i "%(tempaudiofile)" -acodec copy -f vob "%(outputfile)_final.mpg" -r %(fps)

ffmpeg & mencoder:
http://rapidshare.com/files/367123528/ffmpeg_mencoder.rar.html

Posted by: pureocean Apr 3 2010, 04:59 AM
About Test11 (build 33621):

It shows the following report, even if the setting is turned off(Warn when non-zero starting offset is detected):
QUOTE
AVI: A non-zero wBitsPerSample value was detected in the MP3 audio format structure. This has been corrected in-memory to zero for better compatibility with commonly installed MP3 audio codecs.

Posted by: phaeron Apr 3 2010, 05:24 AM
Two different things: a non-zero stream offset is not the same as the bits per sample field.

Posted by: pureocean Apr 3 2010, 08:00 PM
QUOTE (phaeron @ Apr 3 2010, 05:24 AM)
Two different things: a non-zero stream offset is not the same as the bits per sample field.

Thank you for info. If possible, you can add this turn-off setting?

That is important: Smart rendering (all included: Full processing, Normal or Fast recompress modes) don't working.

Filename (same with mentioned mp3 caution): supernatural.s05e16.hdtv.xvid-fqm

I cut a few frames. Selected XViD single-pass (Quantizer: 2)...
VDub can saving properly but blocked when it comes to processing in the cut off frames.

VDub 1.8.8's smart rendering feature is working properly.

Posted by: Barough Apr 10 2010, 05:02 AM
@ Avery

When u have the time, do u think u could backport all the v1.9.9 Stable fixes into the 1.9.x Dev. branch and make a new Test Build available.

Posted by: MaxS Apr 12 2010, 06:51 AM
\Kasumi\source\a_stretchrgb_mmx.asm (line 252):

CODE

 movq  mm6, [rb_mask_888]
 movq  mm7, [g_mask_888]


mm7 is never used after that...

Posted by: phaeron Apr 13 2010, 05:16 PM
Yeah, it's unused. Bit misnamed, because what I'm really using in that function is a 0x00FF word mask, and not a red/blue mask.

Posted by: blob2500 Apr 13 2010, 09:25 PM
Excuse me, is test13 the last "official" test version?

I download it from this link http://www.virtualdub.org/beta/VirtualDub-1.9.X-test13.zip (I found it changing for curiosity 11 with 13 and it worked ! tongue.gif ) but there isn't a link / changelog in first post.

Posted by: phaeron Apr 15 2010, 03:53 AM
Sometimes I make quick test releases for specific people to look at. I've updated the links on the first page to test14 anyway, though. Hasn't been synced to 1.9.9 yet, but does contain some IVTC filter improvements.

Posted by: blob2500 Apr 15 2010, 11:16 AM
Thanks for your reply smile.gif

Posted by: Loadus Apr 16 2010, 12:07 AM
I have two encoder profiles on the list but the export dialog only shows the first one? Using test 14 ...

EDIT: Superawesomemaximus feature btw

Posted by: phaeron Apr 16 2010, 04:01 AM
The export dialog shows encoding sets, not encoders.

Posted by: Loadus Apr 16 2010, 04:39 AM
QUOTE (phaeron @ Apr 15 2010, 10:01 PM)
The export dialog shows encoding sets, not encoders.

I'll demonstrate with pics, it'll be faster:

Sets I have (there are many more, I just added the DVD for this demo):

user posted image

Selecting mp4 in the export dialog:

user posted image

All it gives me is the DVD (latest addition) and nothing else (and it will encode using the DVD):

user posted image


I'm doing something wrong, just don't know what.

Posted by: Gromozeka Apr 16 2010, 02:14 PM
Loadus
its old bug, but Avery not fix him sad.gif

Posted by: Loadus Apr 17 2010, 05:56 PM
QUOTE (Gromozeka @ Apr 16 2010, 08:14 AM)
Loadus
its old bug, but Avery not fix him sad.gif

It will be fixed due time, don't worry. Remember, Phaeron is doing this on his free time. ^^

I just wanted to report it, just so it was on record.

Posted by: phaeron Apr 18 2010, 04:35 AM
Indeed, it's now fixed in test-16.

I've synced the 1.9.X branch to fixes in the 1.9.9 stable release. In addition, this version has support for using 2+ threads for video compression when only key frames are in use. This includes key frame only codecs such as Huffyuv, and it also includes other codecs when the key frame interval is forced to one. (XviD does not work for this, because it ignores the key frame request flag.) I've also tweaked the IVTC filter a bit to better match older versions with the pre-filter algorithm.

Posted by: Loadus Apr 18 2010, 04:41 AM
QUOTE (phaeron @ Apr 17 2010, 10:35 PM)
Indeed, it's now fixed in test-16.

You are zhe mastar. ^^

Well, I thought I'd go get some sleep tonight but *fubar* it, I'm gonna write some encoder sets. biggrin.gif:D

Posted by: BugMaster Apr 18 2010, 03:49 PM
QUOTE (phaeron @ Apr 18 2010, 07:35 AM)
This includes key frame only codecs such as Huffyuv, and it also includes other codecs when the key frame interval is forced to one. (XviD does not work for this, because it ignores the key frame request flag.)

About keyframe forcing. I tried to add it support to x264vfw but in result have to disable it due the VirtualDub bug (at least it is the bug in my opinion). The bug reveal itself that even without using keyframe forcing VirtualDub ask first frame to be keyframe and probably due the using of "VirtualDub hack" technique (return of 1-byte 0x7f frames with XVID fourcc to inform about delayed frames due buffering) it ask to make few next frames (depends on the number of delayed frames) also keyframes until first real frame is returned.

Posted by: Barough Apr 18 2010, 04:26 PM
QUOTE (phaeron @ Apr 18 2010, 05:35 AM)
Indeed, it's now fixed in test-16.

I've synced the 1.9.X branch to fixes in the 1.9.9 stable release. In addition, this version has support for using 2+ threads for video compression when only key frames are in use. This includes key frame only codecs such as Huffyuv, and it also includes other codecs when the key frame interval is forced to one. (XviD does not work for this, because it ignores the key frame request flag.) I've also tweaked the IVTC filter a bit to better match older versions with the pre-filter algorithm.

Thnx a lot 4 the sync with the 1.9.9 stable Avery. smile.gif

Posted by: dloneranger Apr 18 2010, 06:15 PM
Any chance of modifying the ivtc filter for duplicate removal of 1-in-6 frames as well as 1-in-5

[edit]
nevermind, f_itvc was pretty easy to fixup for the task

Posted by: phaeron Apr 18 2010, 09:43 PM
QUOTE
About keyframe forcing. I tried to add it support to x264vfw but in result have to disable it due the VirtualDub bug (at least it is the bug in my opinion). The bug reveal itself that even without using keyframe forcing VirtualDub ask first frame to be keyframe and probably due the using of "VirtualDub hack" technique (return of 1-byte 0x7f frames with XVID fourcc to inform about delayed frames due buffering) it ask to make few next frames (depends on the number of delayed frames) also keyframes until first real frame is returned.


Hmm. I don't think it's a bug, but it's an ugly ambiguity. The problem is that the introduction of the frame skew between input and output means that it is ambiguous as to whether the key frame request flag means to force a key frame for the input frame or for the output frame. VirtualDub's interpretation is that this affects the frame being output, i.e. setting the flag should cause the key frame flag to be set on the output. It would be pretty easy to change this to the other interpretation of having the flag apply to the input frame, but even backwards compatibility issues aside I'm not sure that makes more sense.

However, there is another piece of information the codec can use: ICM_COMPRESS_FRAMES_INFO will also be sent with a key rate interval of 1 when VirtualDub is trying to do this, so that would be another indicator that all frames should be made key frames.

Incidentally, even if this all did work out, the result would be an XviD or H.264 stream that contained all I-frames... not sure how interesting that is, given that there are decent codecs available designed for I-frame only operation.

Posted by: DanskDranker Apr 18 2010, 10:27 PM
Will the new version be 2.0???

Posted by: BugMaster Apr 19 2010, 06:56 AM
QUOTE (phaeron @ Apr 19 2010, 12:43 AM)
Hmm. I don't think it's a bug, but it's an ugly ambiguity. The problem is that the introduction of the frame skew between input and output means that it is ambiguous as to whether the key frame request flag means to force a key frame for the input frame or for the output frame. VirtualDub's interpretation is that this affects the frame being output, i.e. setting the flag should cause the key frame flag to be set on the output. It would be pretty easy to change this to the other interpretation of having the flag apply to the input frame, but even backwards compatibility issues aside I'm not sure that makes more sense.

From http://msdn.microsoft.com/en-us/library/dd742972%28VS.85%29.aspx
dwFlags
Flags used for compression. The following value is defined:
ICCOMPRESS_KEYFRAME - Input data should be treated as a key frame.

So from my point it must apply to input frame. But any way I also can't enable this feature even if you fix it in new versions (due the complitability with old VirtualDub versions). So you can don't bother with it. This was only information to you about doubtful behaviour.

Posted by: phaeron Apr 20 2010, 04:17 AM
QUOTE
Will the new version be 2.0???


I haven't decided yet. Does it matter?

QUOTE
So from my point it must apply to input frame. But any way I also can't enable this feature even if you fix it in new versions (due the complitability with old VirtualDub versions). So you can don't bother with it. This was only information to you about doubtful behaviour.


I'll agree with that, but note that the the documentation for ICCOMPRESS_KEYFRAME passed to the ICCompress() function is different, and the interface doesn't allow for any frame skew for which the distinction would matter. We're already dealing with an out-of-band mechanism in order to implement the frame delay.

I don't think it would be much of a problem to switch the behavior, because normally XviD and x264vfw are used with the key frame interval disabled, and anyone who tried to use otherwise would have discovered that it doesn't work. In any case, the worst error is that you get a few extra I-frames at the beginning of a sequence. However, I just realized that there is another problem with doing this, which is that it makes actually implementing a key frame delay difficult in that you may not be able to tell whether you need to reset the interval until several frames after you already needed to do it. For instance, if the codec has a delay of 3 and you are trying to hit a key frame interval of 2, it would be impossible to react quickly enough to manage the interval properly, because if the codec initiates a key frame on its own it's already 2-3 frames too late to change the incoming flags.

Given the circumstances, I'll change the error message in the multithreading code to just indicate an incompatibility, as it isn't fair to blame to codec for this. That having been said, if you could implement the specific case of lKeyRate=1 in the ICM_COMPRESS_FRAMES_INFO message and all frames marked as ICCOMPRESS_KEYFRAME, that would be an unambiguous case that would make this situation work.

Edit:
One other thing I forgot to mention -- the threaded compressor is fine with a drop frame (size=0, flags=!AVIIF_KEYFRAME) even in multithreaded mode.

Posted by: jpsdr Apr 20 2010, 08:52 AM
QUOTE (phaeron @ Aug 3 2009, 12:49 AM)
Change list for this build:

  • (test-16) 2+ thread support for key frame only video compression.

Does it mean in 'Threading -> Video compression threads', value can be 2 or more for Huffyuv and lagarith codec ?

I'm having an i7@980 (6 cores + HT), what value do you suggest i can use for video filter threading ?
I'm thinking 8 for video filter threading and 4 for Video compression threads (wich will make the maximum 12 avaible
on my CPU). Video process ahead, should it be left to auto, or is there an optimal value ?

Posted by: phaeron Apr 21 2010, 03:18 AM
Yes, it does. However, whether or not that is useful depends on whether the rest of the pipeline can feed all of those codecs. The decompression half is not currently multithreaded.

Posted by: jpsdr Apr 28 2010, 07:38 AM
I've made some work with this version, to discover a problem. (Now, i must redo everything... sad.gif)
All my outpout videos were 1 frame shorter.
Settings was to 8 threads/frames for video filter, 4 for compression output. Audio was on none/direct stream copy.
My input files were avisynth scripts. Color was either YV12/YV12 or YV12/YUY2
Output was either lagarith or Huffyuv. Video were atround 32000 frames size.

I've not been able to reproduce the problem with a little (100) video test clip created by VDub.

Posted by: fredgiblet Apr 28 2010, 08:16 AM
QUOTE (phaeron @ Apr 20 2010, 04:17 AM)
I haven't decided yet. Does it matter?

We need to know if we need to start planning our 2.0 release party.

Posted by: jpsdr Apr 28 2010, 05:14 PM
I've redone half of my videos, with exactly the same processing, and no problem, so, it's realy related to this release.

Posted by: John I. Apr 28 2010, 08:02 PM

VirtualDub 1.9.x-test16 is losing frames.

Settings:
----------------
Video compression threads= 1
Video filter threading= Auto
Video filter process-ahead= Auto

Source= AVI (Uncompressed) 27 frames.
----------------
When re-compressing using 'Full processing mode':

Case 1: Codec= (XVID 1 Pass) Output = 22 frames (5 Frames lost)
Case 2: Codec= (XVID 2 Pass) Output = 22 frames (5 Frames lost)

Case 3: Codec= (DIVX 1 Pass) Output = 23 frames (4 Frames lost)
Case 4: Codec= (DIVX 2 Pass) Output = 23 frames (4 Frames lost)

Case 5: Codec= (Uncompressed) Output= 27 frames (NO LOSS) Full Processing
----------------

Case 6: VirtualDub 1.9.9 (Any Codec) Output= 27 frames (NO LOSS)


Posted by: mayhem Apr 28 2010, 11:17 PM
Yup, its not isolated, just did two quick little test videos,
one was 112 frames and the other 142 frames and after
processing with test16 they came out as 108 and 139,
losing 4 frames, and 3 frames respectively.

This was in full process mode with threading enabled,
although even after setting the filter threading to
disabled this still occured. After setting the compressor
threading to 0 behaviour returned to normal.


Posted by: phaeron Apr 29 2010, 05:04 AM
Yeah, this was caused by some changes I tried to make to fix some annoying issues with the B-frame delay queue code. Basically, it was a bit sketchy in one-thread mode, and it became unreliable in multithreaded mode (100% CPU lockups). I'm trying to rewrite it.

Posted by: DanskDranker Apr 29 2010, 03:38 PM
Build 33732 is not good.

It does not .Pass file when I have they started to convert my video into Xvid Twopass 1st pass, but it does in build 32817

Posted by: phaeron Apr 30 2010, 04:20 AM
Uh, in English?

Posted by: phaeron Apr 30 2010, 05:11 AM
Pushed out another release with an attempted fix for some of the frame dropping issues. Also, I figured out and fixed the problem that was causing Run Video Analysis Pass to not run the video codec like it does in 1.9.9.

Posted by: Barough Apr 30 2010, 11:44 AM
Thnx for the new Build. smile.gif

Posted by: John I. Apr 30 2010, 02:45 PM
QUOTE
phaeron  Posted on Apr 30 2010, 05:11 AM

Pushed out another release with an attempted fix for some of the frame dropping issues. 

Frame dropping issue is resolved.

Thanks phaeron


Posted by: pureocean Apr 30 2010, 06:54 PM
@phaeron: Thank you very much for build 33740. Xvid 1pass problem is fixed.
If you can fix to Smart Rendering, i would be very grateful. Thank you for all your efforts.

Posted by: DanskDranker Apr 30 2010, 10:05 PM
Thank You.
It works great now

Edit: It works not 100%, so here is a crash report


VirtualDub crash report -- build 33740 (release)
--------------------------------------

Disassembly:
00421ca0: 53 push ebx
00421ca1: c644242c01 mov byte ptr [esp+2ch], 01h
00421ca6: e8e5260600 call 00484390
00421cab: 84c0 test al, al
00421cad: 7517 jnz 00421cc6
00421caf: 8b4c2410 mov ecx, [esp+10h]
00421cb3: 3bcb cmp ecx, ebx
00421cb5: 885c2424 mov [esp+24h], bl
00421cb9: 7407 jz 00421cc2
00421cbb: 8b11 mov edx, [ecx]
00421cbd: 8b4204 mov eax, [edx+04h]
00421cc0: ffd0 call eax
00421cc2: 32c0 xor al, al
00421cc4: eb2f jmp 00421cf5
00421cc6: 8b442410 mov eax, [esp+10h]
00421cca: 0fb6500c movzx edx, byte ptr [eax+0ch]
00421cce: 8b4810 mov ecx, [eax+10h]
00421cd1: 8b4008 mov eax, [eax+08h]
00421cd4: 53 push ebx
00421cd5: 53 push ebx
00421cd6: 52 push edx
00421cd7: 50 push eax
00421cd8: 51 push ecx
00421cd9: 8bce mov ecx, esi
00421cdb: e8a0fcffff call 00421980
00421ce0: 8b4c2410 mov ecx, [esp+10h]
00421ce4: 3bcb cmp ecx, ebx
00421ce6: 885c2424 mov [esp+24h], bl
00421cea: 7407 jz 00421cf3
00421cec: 8b11 mov edx, [ecx]
00421cee: 8b4204 mov eax, [edx+04h]
00421cf1: ffd0 call eax
00421cf3: b001 mov al, 01h
00421cf5: 8b4c241c mov ecx, [esp+1ch]
00421cf9: 897d00 mov [ebp+00h], edi
00421cfc: 5f pop edi
00421cfd: 5d pop ebp
00421cfe: 5e pop esi
00421cff: 5b pop ebx
00421d00: 64890d00000000 mov fs:[00000000], ecx
00421d07: 83c418 add esp, 18h
00421d0a: c3 ret
00421d0b: cc int 3
00421d0c: cc int 3
00421d0d: cc int 3
00421d0e: cc int 3
00421d0f: cc int 3
00421d10: 6aff push 0ffh
00421d12: 6850005f00 push 005f0050 (RtlUnwind@16+161a)
00421d17: 64a100000000 mov eax, fs:[00000000]
00421d1d: 50 push eax
00421d1e: 64892500000000 mov fs:[00000000], esp
00421d25: 83ec08 sub esp, 08h
00421d28: 53 push ebx
00421d29: 55 push ebp
00421d2a: 56 push esi
00421d2b: 57 push edi
00421d2c: 8b7c2428 mov edi, [esp+28h]
00421d30: 33db xor ebx, ebx
00421d32: 8bf1 mov esi, ecx
00421d34: 8b4f40 mov ecx, [edi+40h] <-- FAULT
00421d37: 895c2428 mov [esp+28h], ebx
00421d3b: 395e6c cmp [esi+6ch], ebx
00421d3e: 895c2420 mov [esp+20h], ebx
00421d42: 0f8407010000 jz 00421e4f
00421d48: 385c242c cmp [esp+2ch], bl
00421d4c: 7419 jz 00421d67
00421d4e: 8b07 mov eax, [edi]
00421d50: 8b10 mov edx, [eax]
00421d52: 8bcf mov ecx, edi
00421d54: ffd2 call edx
00421d56: 8b4e68 mov ecx, [esi+68h]
00421d59: 3bcb cmp ecx, ebx
00421d5b: 7407 jz 00421d64
00421d5d: 8b01 mov eax, [ecx]
00421d5f: 8b5004 mov edx, [eax+04h]
00421d62: ffd2 call edx
00421d64: 897e68 mov [esi+68h], edi
00421d67: 8b0d847e6700 mov ecx, [00677e84]
00421d6d: 3bcb cmp ecx, ebx
00421d6f: 7411 jz 00421d82
00421d71: 8b01 mov eax, [ecx]
00421d73: 8b10 mov edx, [eax]
00421d75: 53 push ebx
00421d76: 681ca86600 push 0066a81c
00421d7b: 68f42f6000 push 00602ff4
00421d80: ffd2 call edx
00421d82: 8b4624 mov eax, [esi+24h]
00421d85: 8b28 mov ebp, [eax]
00421d87: 89442410 mov [esp+10h], eax
00421d8b: 8b5c2410 mov ebx, [esp+10h]
00421d8f: 896c2414 mov [esp+14h], ebp
00421d93: c703dc2f6000 mov dword ptr [ebx], 00602fdc
00421d99: 8b4c2428 mov ecx, [esp+28h]
00421d9d: 85c9 test ecx, ecx
00421d9f: c6 db 0c6h

Built on Aegis on Thu Apr 29 21:55:10 2010 using compiler version 1400

Windows 6.1 (Windows Vista x64 build 7601) [Service Pack 1, v.153]

EAX = 0ca3fec4
EBX = 00000000
ECX = 0250d368
EDX = 024f5238
EBP = 0ca3ff08
ESI = 0250d368
EDI = 00000000
ESP = 0ca3fe70
EIP = 00421d34
EFLAGS = 00010246
FPUCW = 027f
FPUTW = ffff

Crash reason: Access Violation

Crash context:
An out-of-bounds memory access (access violation) occurred in module 'VirtualDub'...

...reading address 00000040...

...while running thread "Processing" (thread.cpp:179).

Pointer dumps:

EAX 0ca3fec0: 0250d1d0 0ca3fefc 005f0220 00000000 004215b9 00000000 0250d1d0 024fcfb8
ECX 0250d368: 00603038 00000060 00000000 000005a0 0250d068 024f8c68 0250d130 01000001
EDX 024f5238: 024ea6a4 00000000 6e616801 024ec4d8 0250dd00 00000000 0000061c 00000000
ESI 0250d368: 00603038 00000060 00000000 000005a0 0250d068 024f8c68 0250d130 01000001
ESP 0ca3fe70: 00000001 0250d368 0ca3ff08 0250d368 776bf9b5 760c014d 0ca3fec4 005f0050
0ca3fe90: ffffffff 00422bda 00000000 00000001 0250d368 0250d368 00424403 00000001
0ca3feb0: 0250d1d0 0250d30c 006028dc 00000000 0250d1d0 0ca3fefc 005f0220 00000000
0ca3fed0: 004215b9 00000000 0250d1d0 024fcfb8 004ee587 0ca3ff14 00000001 00000000
EBP 0ca3ff08: 0ca3ff48 0052d90b 024fcfb8 0061fb08 00000000 0062fca0 000000b3 0062fc88
0ca3ff28: 00602e94 0062fca0 000000b3 0062fc88 00602e94 0ca3ff70 005f7dfd 00000000
0ca3ff48: 0ca3ff80 005d643e 0250d1d0 c078f129 00000000 024fcfb8 024fcfb8 c0000005
0ca3ff68: 0ca3ff54 0ca3fa48 0ca3ffc4 005d9c60 ccbd2d99 00000000 0ca3ff94 005d64e3

Thread call stack:
00421d34: VDDubVideoProcessor::WriteFinishedVideoFrame()
776bf9b5: ntdll!NtSetEvent [776a0000+1f9a0+15]
760c014d: KERNELBASE!SetEvent [760b0000+1013d+10]
00422bda: VDDubVideoProcessor::RunPathFlushCompressor()
00424403: VDDubVideoProcessor::WriteVideo()
004215b9: VDDubProcessThread::ThreadRun()
004ee587: ?$VDProtectedAutoScope1::?$VDProtectedAutoScope1()
0052d90b: VDThread::StaticThreadStart()
005d643e: _callthreadstartex()
005d64e3: _threadstartex@4()
75293e5d: kernel32!BaseThreadInitThunk [75280000+13e4b+12]
776d9df2: ntdll!RtlInitializeExceptionChain [776a0000+39d8f+63]
776d9dc5: ntdll!RtlInitializeExceptionChain [776a0000+39d8f+36]

-- End of report

Posted by: DanskDranker May 1 2010, 05:52 PM
Something News???

Posted by: phaeron May 1 2010, 11:11 PM
Perhaps you could be a bit patient while I debug this?

Update:
Please try test-18. In local testing, it passes XviD smart rendering stress testing on 0/1 threads and Huffyuv recompression on 0-2 threads.

Posted by: pureocean May 2 2010, 04:47 AM
@phaeron:
Smart rendering is working now. Anyomore, no need to using VDub1.8.8 for it. Thank you very much for fix.

There exists a minor bug: Although selected Fast Compress with Smart Rendering, if there is filters, Smart Rendering don't working. If filters is removed, Smart Rendering properly working.

(I'm sorry my bad english.)

Posted by: DanskDranker May 3 2010, 05:51 AM
Thank You smile.gif
Now it works 100% wink.gif

Posted by: phaeron May 4 2010, 05:20 AM
I fixed the frame mapping with normal/fast recompress mode with filters enabled... but I'm not sure if it will fix the smart rendering issue. Try test-19.

Posted by: pureocean May 4 2010, 06:59 AM
QUOTE (phaeron @ May 4 2010, 05:20 AM)
I fixed the frame mapping with normal/fast recompress mode with filters enabled... but I'm not sure if it will fix the smart rendering issue. Try test-19.

Thank you for your interest. I tried new update(test19 - build 33769). No change. Smart rendering+filters issue still exist. Only, If it's removed from filters menu, can work smart rendering. I using always this filter for navigation: http://pic.leech.it/i/61cce/4804f64exampl.gif

I'm sorry to waste your time. I'll be glad you fixed your opportune time.

Posted by: phaeron May 5 2010, 06:12 AM
Alright, I see the real problem now. I'm starting to think I should just block this case. The problem is that the filters can also affect the frame mapping, and you're trying to use the filter system in a half-enabled state where it remaps frames but doesn't process them, which is a bit hard to deal with.

Posted by: Loadus May 7 2010, 02:08 AM
@Phaeron:

Can you add an option into the alias format -filter:

Full Luma (Y: 0-255, C: 16-240)

Thanks for this filter btw ^^

Posted by: phaeron May 7 2010, 03:54 AM
Sorry, no. I would have to double the number of YCbCr formats to do that.

Posted by: Loadus May 7 2010, 04:11 AM
QUOTE (phaeron @ May 6 2010, 09:54 PM)
Sorry, no. I would have to double the number of YCbCr formats to do that.

Nou pänik, I'll use the Levels filter for the luma. smile.gif

Posted by: pureocean May 7 2010, 06:13 AM
QUOTE (phaeron @ May 5 2010, 06:12 AM)
you're trying to use the filter system in a half-enabled state where it remaps frames but doesn't process them, which is a bit hard to deal with.

Actually, I don't want to apply filters (brightness) to video. My interest for filter: clearly navigation.
Of course, I know that this filter not to be progress in the Direct Stream Copy or Fast Recompress+Smart Rendering mode.

Problem: If the filters were not removed, Fast Recompress+Smart Rendering doesn't work. Virtualdub, trying to apply the filter. I mean, Virtdualdub think Full Progress Mode is selected.

Smart Rendering working in VirtualDub 1.8.8 (Even if any filter forgotten the filters menu).

Minor bug #2: Doesn't work "warn if no audio is written".

Posted by: jpsdr May 7 2010, 10:29 AM
QUOTE (Loadus @ May 7 2010, 02:08 AM)
@Phaeron:

Can you add an option into the alias format -filter:

Full Luma (Y: 0-255, C: 16-240)

Thanks for this filter btw ^^

I don't know what you want to do, but if it can be usefull, i've made a Saturation/Hue/Brightness/Contrast filter where you can check if you want to allow full range (0-255). Nevertheless, actualy it's not selective, it allow it on all channels, Y and C, or none. Nevertheless, it's an upgrade i can do to this filter (separate channels).
Is is what you're looking for ?

Posted by: Loadus May 7 2010, 12:44 PM
QUOTE (jpsdr @ May 7 2010, 04:29 AM)
QUOTE (Loadus @ May 7 2010, 02:08 AM)
@Phaeron:

Can you add an option into the alias format -filter:

Full Luma (Y: 0-255, C: 16-240)

Thanks for this filter btw ^^

I don't know what you want to do, but if it can be usefull, i've made a Saturation/Hue/Brightness/Contrast filter where you can check if you want to allow full range (0-255). Nevertheless, actualy it's not selective, it allow it on all channels, Y and C, or none. Nevertheless, it's an upgrade i can do to this filter (separate channels).
Is is what you're looking for ?

Yes.

I have some clips that have gone through multiple edit stations (mac > PC > mac etc) and the color ranges in some are fubar maximus. Having an option to scale either luma or chroma would be neat. Sadly, on some material the color information is clipped. : /

Posted by: jpsdr May 7 2010, 05:25 PM
You can find the last version of my filters here : http://rapidshare.com/files/384646916/Filtres_JPSDR.rar

Hope it'll do what you're looking for.

Posted by: DanskDranker May 7 2010, 11:39 PM
QUOTE (jpsdr @ May 7 2010, 05:25 PM)
You can find the last version of my filters here : http://rapidshare.com/files/384646916/Filtres_JPSDR.rar

Hope it'll do what you're looking for.

Hello.

What can we use your filters to???

Posted by: jpsdr May 9 2010, 07:12 AM
It was for Loadus who searched a filter where you can have 0-255 level for Y.

Posted by: DanskDranker May 10 2010, 04:24 AM
OK.

Posted by: jpsdr May 10 2010, 05:27 AM
Now, if in my filters there is things wich interest you, because there is more than a filter doing what Loadus was looking for, don't hesitate. After, they are more little things or basic tools usefull for me, than big filters doing extraordinary things. What could be interesting, it's that my deinterlace and IVTC filter work directly on YV12 format, without upscaling or anything, i consider that YV12 can be interlaced.

Posted by: v0lt May 14 2010, 12:25 PM
phaeron
Is it possible to encode video in two passes using external encoders?

Posted by: Gromozeka May 14 2010, 02:05 PM
Phaeron
smile.gif You can add capture with external encoders?

Posted by: phaeron May 15 2010, 08:03 PM
@v0lt:
If the encoder supports it, you should -- but you'll have to drive it manually, same as usual.

@Gromozeka:
Not for this pass.

Posted by: v0lt May 16 2010, 08:19 AM
phaeron
QUOTE
but you'll have to drive it manually, same as usual.

no automatic sad.gif

What do you think about this variant?
http://img404.imageshack.us/img404/4668/eeesmod.png

Posted by: phaeron May 16 2010, 06:12 PM
There's a lot more required than just UI work.

Posted by: Gromozeka May 16 2010, 07:28 PM
Phaeron, you can do work port from ffmpeg to other encoders?

External encoders\ffmpeg
-f rawvideo -s %(width)x%(height) -i - -f yuv4mpegpipe - | mencoder.exe (xvid_encraw.exe, mpeg2enc.exe and other)

Posted by: v0lt May 16 2010, 07:43 PM
QUOTE (phaeron)
There's a lot more required than just UI work.

I understand.
Still, I unloaded the pictures. For the future. Maybe smile.gif
http://img24.imageshack.us/img24/1623/eeepmod.png
This is only an idea. But I have not brought it to the end.
One of the variants turned out like this.
http://img80.imageshack.us/img80/6865/eeesmod2.png

Posted by: Gromozeka May 16 2010, 08:29 PM
volt
I think that its very difficult

Posted by: phaeron May 18 2010, 04:17 AM
QUOTE
Phaeron, you can do work port from ffmpeg to other encoders?


No. The pipe that you're using is a feature of the command processor (cmd.exe), and it's not as simple in this case because I need to maintain the pipes and monitor all of the processes involved. That's a lot more work and complexity than I want to take on at this time.

Why are you trying to pipe multiple processes, btw?

Posted by: Gromozeka May 18 2010, 02:01 PM
Because Virtualdub without ffmpeg not pipe to mencoder.exe, xvid_encraw.exe
tongue.gif
Hcenc - best mpeg2, but not eat pipe

P.S: Phaeron, why this not work?
External encoders\xvid_encraw.exe
-type 0 -csp yv12 -single -cq 3,0 -smoother 0 -vhqmode 4 -masking 2 -max_key_interval 250 -quality 6 -vhqmode 4 -qtype 0 -noclosed_gop -max_bframes 1 -bvhq -bquant_ratio 100 -bmin 4 -bmax 10 -avi "%(tempvideofile)"

xviD_encraw here:
http://rapidshare.com/files/388850573/xvid_encraw.rar.html

Input options:
-i string : input filename (stdin)
-type integer: input data type (yuv=0, pgm=1, avi/avs=2)
-w integer: frame width ([1.2048])
-h integer: frame height ([1.2048])
-csp string : colorspace of raw input file i420, yv12 (default)
-frames integer: number of frames to encode

Output options:
-dump : save decoder output
-save : save an Elementary Stream file per frame
-o string : save an Elementary Stream for the complete sequence
-avi string: save an AVI file for the complete sequence
-mkv string: save a MKV file for the complete sequence

Posted by: phaeron May 19 2010, 04:00 AM
You're missing the parameters to set width/height/framerate/frame count, but even then I can't get this build to take a stdin stream properly. It just keeps encoding 0 frames.

Posted by: Gromozeka May 19 2010, 07:19 AM
QUOTE
You're missing the parameters to set width/height/framerate/frame count

This parameters unnecessary

this parameters work fine from comand line:

CODE
xvid_encraw.exe -i 1.avs -type 2 -single -cq 3,0 -smoother 0 -vhqmode 4 -masking 2 -max_key_interval 250 -quality 6 -vhqmode 4 -qtype 0 -noclosed_gop -max_bframes 1 -bvhq -bquant_ratio 100 -bmin 4 -bmax 10 -threads 2 -avi out.avi


QUOTE
I can't get this build to take a stdin stream properly. It just keeps encoding 0 frames.

sad.gif but why

Posted by: Loadus May 22 2010, 01:28 AM
QUOTE (Gromozeka @ May 19 2010, 01:19 AM)
QUOTE
You're missing the parameters to set width/height/framerate/frame count

This parameters unnecessary

When you pipe raw video, the encoder needs the framesize and fps parameters.

Posted by: v0lt May 24 2010, 06:02 PM
phaeron
What do you think about the support yuv4mpegpipe? Here are some of the format http://wiki.multimedia.cx/index.php?title=YUV4MPEG2.

Choosing a input format for Video can do for the tab as well as Audio.

Posted by: phaeron May 25 2010, 05:47 AM
Good idea, but a little bit weird.

Posted by: Gromozeka May 25 2010, 06:53 AM
Phaeron
QUOTE
Good idea, but a little bit weird.

not? its very good idea, because yuv4mpegpipe support mencoder, mpeg2enc, xvid_encraw and other comand line encoders! but yuv support only ffmpeg and x264

Posted by: v0lt May 25 2010, 04:21 PM
Phaeron
sample of source code - http://git.ffmpeg.org/?p=ffmpeg;a=blob;f=libavformat/yuv4mpeg.c;hb=HEAD

Posted by: UGC May 26 2010, 03:59 AM
not sure if this is a joke or not after reading the forum post about "Foo", but I downloaded VirtualDub-1.9.X-test19-AMD64, and for capture, I have about 8 selections for video labeled "Foo#1-8", and about 50 labeled the same way for the audio capture?- which makes it unusable for me because I don't know which one to select on the audio.

I only have 1 capture card, and about 8 audio inputs to pick from. What gives?

Posted by: Gromozeka May 26 2010, 12:07 PM
I add to vdub xvid_encraw (other version) and creat divx preset (speed compress with analog xvidvfw + 15%)

External encoders\xvid_encraw.exe
-i stdin -single -cq 3,0 -max_bframes 1 -bvhq -quality 6 -vhqmode 4 -qtype 0 -noclosed_gop -lumimasking -smoother 100 -bquant_ratio 100 -bquant_offset 100 -max_key_interval 300 -imin 2 -imax 2 -pmin 3 -pmax 4 -bmin 4 -bmax 10 -threads 2 -w %(width) -h %(height) -framerate %(fps) -o "%(tempvideofile)"
avi
External encoders\lame.exe
-m j -q 0 -v -h --vbr-new -V 6 -b 8 -B 192 - "%(tempaudiofile)"
mp3
External encoders\ffmpeg.exe
-i "%(tempvideofile)" -vtag DX50 -vcodec copy -i "%(tempaudiofile)" -acodec copy "%(outputfile)_result.avi"

external encoders there:
http://rapidshare.com/files/391722547/External_encoders.exe.html

Phaeron, you can add to virtualdub view command line with statistics encoding?

http://www.radikal.ru

Posted by: v0lt May 26 2010, 05:48 PM
it works:
CODE
vdub.exe
/i "c:\Program Files\VirtualDub-1.9.X\tools\script\mux_AVI.script" "%(tempvideofile)" "%(tempaudiofile)" "%(outputfile).avi"


but it does not work sad.gif :
CODE
vdub.exe
/i tools\script\mux_AVI.script "%(tempvideofile)" "%(tempaudiofile)" "%(outputfile).avi"

Log:
Mux: Cannot open file "mux_AVI.script":
Mux: The system cannot find the path specified.

Posted by: stephanV May 26 2010, 09:31 PM
does it work if you use
CODE
.\tools\script\mux_AVI.script

Posted by: v0lt May 27 2010, 02:53 AM
stephanV
QUOTE
does it work if you use
.\tools\script\mux_AVI.script

also not working

phaeron
Please make a variable "vdpath". Åxample:
CODE
vdub.exe
/i "%(vdpath)\tools\script\mux_AVI.script" "%(tempvideofile)" "%(tempaudiofile)" "%(outputfile).avi"


You can also add a variable "encpath". Maybe someone need. Åxample:
CODE
D:\xvid_encraw\xvid_encraw.exe
-cq 3.0 -qmatrix "%(encpath)\supermatrix" -i stdin -w %(width) -h %(height) -framerate %(fps) -avi "%(tempvideofile)"


A working folder let it be equal to the output folder. Logs will be convenient to write.

machine translation sad.gif

Posted by: stephanV May 27 2010, 07:03 AM
Strange, cause it works here. A single dot is the dos/unix replacement for working directory. Is your working directory actually the virtualdub path?

Posted by: v0lt May 27 2010, 01:25 PM
stephanV
I checked the working directory = output directory. I thought and decided that this is normal, but I want the variables "vdpath" and "encpath".

Posted by: phaeron May 29 2010, 05:26 AM
Sorry, been a bit busy with work and stuff....

The current directory is not guaranteed, folks. It getting set to the output directory is a side effect of the Windows common file dialog.

%(vdpath) makes sense, but I'm not sure what %(encpath) would be. Did you mean something like %(outputdir)?

BTW, I found where "Foo" was coming from. Turns out it's from some test code I put into the 1.9.X branch and forgot to take out. It's been removed in test-20.

Posted by: v0lt May 29 2010, 06:49 AM
QUOTE
It getting set to the output directory is a side effect of the Windows common file dialog.

I've already said this is normal. I initially did not like, but if you do %(vdpath), then all is well.

QUOTE
%(vdpath) makes sense, but I'm not sure what %(encpath) would be.

OK! Variable %(vdpath) is very much needed. It is necessary to configure encoders were not tied to a specific VirtualDub folder.
%(åncpath) is sometimes possible to calculate.

QUOTE
Did you mean something like %(outputdir)?

Hmm. Path %(outputdir) so current. Maybe someone should be.

Posted by: stephanV Jun 2 2010, 09:02 AM
I had a crash when using only an external video encoder, in the encoder set audio and muxer were '(none)'.

CODE
VirtualDub crash report -- build 33772 (release)
--------------------------------------

Disassembly:
004c91c0: 240c            and    al, 0ch
004c91c2: 85c0            test   eax, eax
004c91c4: c644242402      mov    byte ptr [esp+24h], 02h
004c91c9: 7428            jz     004c91f3
004c91cb: 68f8ba6100      push   0061baf8
004c91d0: 8d8e84000000    lea    ecx, [esi+84]
004c91d6: 51              push   ecx
004c91d7: 57              push   edi
004c91d8: 8bc8            mov    ecx, eax
004c91da: e841feffff      call   004c9020
004c91df: 5f              pop    edi
004c91e0: 894608          mov    [esi+08h], eax
004c91e3: 5e              pop    esi
004c91e4: 8b4c2414        mov    ecx, [esp+14h]
004c91e8: 64890d00000000  mov    fs:[00000000], ecx
004c91ef: 83c420          add    esp, 20h
004c91f2: c3              ret    
004c91f3: 8b4c241c        mov    ecx, [esp+1ch]
004c91f7: 33c0            xor    eax, eax
004c91f9: 894608          mov    [esi+08h], eax
004c91fc: 5f              pop    edi
004c91fd: 5e              pop    esi
004c91fe: 64890d00000000  mov    fs:[00000000], ecx
004c9205: 83c420          add    esp, 20h
004c9208: c3              ret    
004c9209: cc              int    3
004c920a: cc              int    3
004c920b: cc              int    3
004c920c: cc              int    3
004c920d: cc              int    3
004c920e: cc              int    3
004c920f: cc              int    3
004c9210: 64a100000000    mov    eax, fs:[00000000]
004c9216: 6aff            push   0ffh
004c9218: 68a95d5f00      push   005f5da9 (RtlUnwind@16+7113)
004c921d: 50              push   eax
004c921e: 64892500000000  mov    fs:[00000000], esp
004c9225: 83ec08          sub    esp, 08h
004c9228: 56              push   esi
004c9229: 8bf1            mov    esi, ecx
004c922b: 837e1000        cmp    dword ptr [esi+10h], 00h
004c922f: 7421            jz     004c9252
004c9231: 8d442404        lea    eax, [esp+04h]
004c9235: 6864bb6100      push   0061bb64
004c923a: 50              push   eax
004c923b: e820650600      call   0052f760
004c9240: 83c408          add    esp, 08h
004c9243: 6860e26400      push   0064e260
004c9248: 8d4c2408        lea    ecx, [esp+08h]
004c924c: 51              push   ecx
004c924d: e8f38b1000      call   005d1e45
004c9252: 8b86b4000000    mov    eax, [esi+b4]
004c9258: 83783c01        cmp    dword ptr [eax+3ch], 01h      <-- FAULT
004c925c: 57              push   edi
004c925d: 7544            jnz    004c92a3
004c925f: 6a28            push   28h
004c9261: e88d871000      call   005d19f3
004c9266: 83c404          add    esp, 04h
004c9269: 89442408        mov    [esp+08h], eax
004c926d: 85c0            test   eax, eax
004c926f: c7442418000000  mov    dword ptr [esp+18h], 00000000
         00              
004c9277: 740b            jz     004c9284
004c9279: 8bc8            mov    ecx, eax
004c927b: e800a60000      call   004d3880
004c9280: 8bf8            mov    edi, eax
004c9282: eb02            jmp    004c9286
004c9284: 33ff            xor    edi, edi
004c9286: 8b4e14          mov    ecx, [esi+14h]
004c9289: 85c9            test   ecx, ecx
004c928b: c7442418ffffff  mov    dword ptr [esp+18h], ffffffff
         ff              
004c9293: 7409            jz     004c929e
004c9295: 8b11            mov    edx, [ecx]
004c9297: 8b4204          mov    eax, [edx+04h]
004c929a: 6a01            push   01h
004c929c: ffd0            call   eax
004c929e: 897e14          mov    [esi+14h], edi
004c92a1: eb42            jmp    004c92e5
004c92a3: 6a20            push   20h
004c92a5: e849871000      call   005d19f3
004c92aa: 83c404          add    esp, 04h
004c92ad: 89442408        mov    [esp+08h], eax
004c92b1: 85c0            test   eax, eax
004c92b3: c7442418010000  mov    dword ptr [esp+18h], 00000001
         00              
004c92bb: 740b            jz     004c92c8
004c92bd: 8bc8            mov    ecx, eax
004c92bf: e8              db     0e8h

Built on Aegis on Fri May 28 22:11:21 2010 using compiler version 1400

Windows 6.0 (Windows Vista x86 build 6002) [Service Pack 2]

EAX = 00000000
EBX = 01d843c4
ECX = 01d843b8
EDX = 0061bc18
EBP = 0012f8d8
ESI = 01d843b8
EDI = 0012fa40
ESP = 0012f82c
EIP = 004c9258
EFLAGS = 00010246
FPUCW = ffff027f
FPUTW = ffffffff

Crash reason: Access Violation

Crash context:
An out-of-bounds memory access (access violation) occurred in module 'VirtualDub'...

...reading address 0000003C.

Pointer dumps:

EBX   01d843c0: 01d984f8 0061bc04 00000000 00000000 00000000 01d42bb0 00010000 908e8d8c
ECX   01d843b8: 0061bc18 00000000 01d984f8 0061bc04 00000000 00000000 00000000 01d42bb0
EDX   0061bc18: 004c7f70 004ca420 004c9360 004ca440 004c9210 004c90e0 005bc3e0 005bb030
ESI   01d843b8: 0061bc18 00000000 01d984f8 0061bc04 00000000 00000000 00000000 01d42bb0
EDI   0012fa40: 00602a18 73646976 32315659 00000000 00000000 00000000 00000001 00000013
ESP   0012f828: 00000000 01d843b8 00000001 00000000 0012f864 005f5da9 ffffffff 0041f91b
     0012f848: 00000000 01d84cc0 01d84b58 01d843c4 01d3d520 00000000 00000000 0012f910
     0012f868: 005f00e0 00000001 004206b9 01d84e58 01d84cc0 0042085a 01d84cc0 01d84b40
     0012f888: 01d84bd8 01d84e9c 00000000 00000004 0051d4a3 01d3d1c0 00000000 00000000
EBP   0012f8d8: 01d84fa4 00419ea9 01d84b58 01d85078 01d84c20 0012fa40 01d41bf8 01d84fa4
     0012f8f8: 01d85050 0012fa40 01d3e818 0012f9cc 01d3e6a0 01e0fe10 0012f9c0 005efb3d
     0012f918: ffffffff 0046be65 00000005 01d3d190 01d3e6a0 00000000 bf800000 000001f4
     0012f938: 00000001 00000000 00000000 01010100 00000000 00000000 00000000 00000000

Thread call stack:
004c9258: AVIOutputCLI::createAudioStream()
0041f91b: VDAVIOutputCLISystem::CreateSegment()
004206b9: VDDubProcessThread::NextSegment()
0042085a: VDDubProcessThread::Init()
0051d4a3: ?$vdfastvector_base::_reserve_always()
00424020: VDDubVideoProcessor::SetVideoSources()
004212f8: VDDubProcessThread::SetVideoSources()
00419ea9: Dubber::Go()
0046be65: VDProject::RunOperation()
0052c6c3: VDStringW::reserve_slow()
0041f5ce: VDAVIOutputCLISystem::VDAVIOutputCLISystem()
0041f790: VDAVIOutputCLISystem::VDAVIOutputCLISystem()
0046ce20: VDProject::ExportViaEncoder()
00474b75: VDProjectUI::ExportViaEncoderAsk()
004781d3: VDProjectUI::MenuHit()
7710041f: USER32!DefWindowProcW [770e0000+203b4+6b]
00485ad0: VDUIFrame::DefProc()
004796b7: _catch$?MainWndProc@VDProjectUI@@IAEJIIJ@Z$0()
0046f760: VDProjectUI::WndProc()
00486185: VDUIFrame::StaticWndProc()
770ffd72: USER32!GetWindowLongW [770e0000+1f8bf+4b3]
770ffe4a: USER32!GetWindowLongW [770e0000+1f8bf+58b]
770ffdf3: USER32!GetWindowLongW [770e0000+1f8bf+534]
7710018d: USER32!GetMessageW [770e0000+1fef7+296]
770f885c: USER32!IsWindowVisible [770e0000+1878a+d2]
770f8b7c: USER32!DispatchMessageA [770e0000+18b6d+f]
0045a006: WinMain@16()
005d5eeb: __tmainCRTStartup()
7645d0e9: kernel32!BaseThreadInitThunk [76410000+4d0d7+12]
77b919bb: ntdll!RtlInitializeExceptionChain [77b50000+41958+63]
77b9198e: ntdll!RtlInitializeExceptionChain [77b50000+41958+36]

-- End of report


It also seems temporary files are not deleted. Is this intentional?

Posted by: v0lt Jun 2 2010, 03:42 PM
stephanV
QUOTE
I had a crash when using only an external video encoder, in the encoder set audio and muxer were '(none)'.

I wanted to write the same thing. smile.gif

Helps to disable the sound track (Audio->No Audio). But it's not the best solution.

Posted by: v0lt Jun 2 2010, 04:16 PM
phaeron
Request:
Please make an option for multiplexer "Delete temporary video and audio files".

Posted by: phaeron Jun 3 2010, 05:58 AM
I've added four new macros in test-21:

  • %(hostdir): evaluates to VirtualDub's program directory
  • %(programdir): evaluates to the program directory of the encoder
  • %(systemdir): evaluates to the Windows system directory
  • %(outputdir): evaluates to the directory of the output file

All of these macros do not have a trailing backslash, so you'd use them like this: %(outputdir)\filename. I hate directory macros that end in backslashes (i.e. Visual Studio 2010). In the event that a path is used which does not have any directory on it, the macros give "." instead.

If an encoding set does not have an audio encoder, the encoding now proceeds without the audio path, like any other video-only export.

The temp video/audio files are now deleted on completion.

Posted by: Loadus Jun 3 2010, 06:57 AM
QUOTE (phaeron @ Jun 2 2010, 11:58 PM)

  • %(hostdir): evaluates to VirtualDub's program directory

The temp video/audio files are now deleted on completion.

Awesome. Gotta update my sets right away.

Thanks for these! ^^


EDIT:

The %(hostdir) is meant to be used in the command arguments, right?
So I can't use it like this (x264.exe residing in VirtualDub's folder):

user posted image

Would be cool to make the encoder profiles "portable" ... : )

Posted by: jpsdr Jun 3 2010, 07:32 AM
Why use b-pyramid strict, when the encode (with keyint 999) is obviously not for blu-ray ?

Posted by: stephanV Jun 3 2010, 10:11 AM
Perhaps this is not the thread for x264 settings discussion...

I have done some more experimenting with the external encoder feature now and must say it is coming out really nice. I have some questions to ask and reports to make though:

1. The crash is fixed. Yay! smile.gif

2. To encode video-only a muxer still must be selected, otherwise the temp video file gets deleted and the result is a 0 byte file. I don't know if you can change this, but it would be appreciated.

3. Right now it is also not possible to encode audio only (VirtualDub gives an error for this). Not a high priority, but would be nice to have anyway.

4. %(samplingrate) is in Hz, while Lame expects kHz. Now, Lame also accepts WAV but I needed this for a test and there might be other encoders that need this as well. Perhaps the macro could be split in %(samplingrateHz) and %(samplingratekHz) or an operation like %(samplingrate/1000) could be made possible perhaps.

5. When using the Raw audio option, valid video and audio files are produced but never muxed and temporary files are not deleted either (tested with oggenc2 and lame). When using the raw options in the encoder but having VirtualDub feeding it a WAV header the files do get muxed but obviously you get the 'chirp' of the header in the audio.

I'll post the commandlines here
CODE

oggenc2: --raw --raw-bits=%(audioprecision) --raw-chan=%(channels) --raw-rate=%(samplingrate) -q2 - -o "%(tempaudiofile)"

lame: -r -s 48 --bitwidth %(audioprecision) -V5 - "%(tempaudiofile)"


6. First I thought I was crazy and point 5 didn't really happen anymore, but it seems when closing VirtualDub the Raw audio setting doesn't stick and VirtualDub changes it to WAV.

7. The Raw output is signed and little-endian, correct?

Thanks for this feature!

Posted by: Loadus Jun 3 2010, 12:07 PM
QUOTE (jpsdr @ Jun 3 2010, 01:32 AM)
Why use b-pyramid strict, when the encode (with keyint 999) is obviously not for blu-ray ?

Those are experimental settings for the iPhone. (Not to be used, or read on this example)

Posted by: Jam One Jun 3 2010, 12:17 PM
A bug with Direct-X Pixel Shaders / effect files:

After changing the preview&output panes aspect ratio the changed image is corrupt.
If AR corrected to make the image wider -> garbage or empty space is added.
If AR corrected to make the image narrower -> portion of image is cut off.

Nature of FX pixel shader effect file: Color correction.
Versions affected: all recent Virtualdub 1.9.x builds.
Were the earlier versions affected: no, obviously not. I use the FX file for colorspace conversion on Wide-Gamut monitor, that means I use it always, so I would have known for sure if some previous version would have failed =))

Posted by: v0lt Jun 3 2010, 01:18 PM
QUOTE (phaeron @ Jun 3 2010, 05:58 AM)
I've added four new macros in test-21:

  • %(hostdir): evaluates to VirtualDub's program directory
  • %(outputdir): evaluates to the directory of the output file

...
If an encoding set does not have an audio encoder, the encoding now proceeds without the audio path, like any other video-only export.

The temp video/audio files are now deleted on completion.

Thank you smile.gif


Another question: What makes an option "Bypass compression" in the settings of the audio encoder?

Posted by: v0lt Jun 3 2010, 01:36 PM
QUOTE (Loadus @ Jun 3 2010, 06:57 AM)
The %(hostdir) is meant to be used in the command arguments, right?
So I can't use it like this (x264.exe residing in VirtualDub's folder):

user posted image

Would be cool to make the encoder profiles "portable" ... : )

For a long time like this can (see picture).
http://img192.imageshack.us/img192/3343/vdx264.png
full encoder path = "c:\Program Files\VirtualDub-1.9.X\tools\x264\x264.exe"

For your case in the field "Program" should only write "x264.exe".

Posted by: Loadus Jun 3 2010, 04:26 PM
QUOTE (v0lt @ Jun 3 2010, 07:36 AM)
For your case in the field "Program" should only write "x264.exe".

Ah. Should've figured that one. Heh. Thx muchos. ^^

Posted by: phaeron Jun 4 2010, 08:10 AM
Alright, I think I resolved a lot of the last batch of issues in test-22.

The raw audio format is actually whatever the pipeline is currently set to. With compressed input you are likely to get mono/stereo 16-bit signed little endian, but that isn't guaranteed -- you could get 8-bit unsigned if that's what is coming in or that's what the codec produces (unlikely).

Posted by: Jam One Jun 4 2010, 09:47 AM
I'd like to express my thanks, and confirm everything works OK now!

user posted image

Posted by: stephanV Jun 4 2010, 11:11 AM
Thanks for the update. smile.gif

The video and audio only feature is very useful for debugging commandlines as well. smile.gif

Point 5 in my previous post still remains, though.

Posted by: phaeron Jun 5 2010, 06:23 AM
Try test-23... I fixed a couple of bugs that were probably responsible for the raw audio problems.

Posted by: Gromozeka Jun 5 2010, 06:35 AM
phaeron
tongue.gif when add yuv4mpeg?

Posted by: stephanV Jun 5 2010, 07:48 AM
QUOTE (phaeron @ Jun 5 2010, 08:23 AM)
Try test-23... I fixed a couple of bugs that were probably responsible for the raw audio problems.

It works now. smile.gif

I don't want to come over abusive cause you have already done a lot of work on this and it's very much appreciated, but I had an idea to make the bitrate more easily configurable. If you make two macros called %(videobitrate) and %(audiobitrate) and allow these values to be configured via File > export > external encoder, it would be easier than fiddling in the encoder profiles each time.

Let me know what you think. It's not a big deal if you don't want to do it. smile.gif

Posted by: phaeron Jun 7 2010, 06:02 AM
QUOTE

phaeron
when add yuv4mpeg?


Stop asking for the same thing over and over. First warning.

QUOTE

I don't want to come over abusive cause you have already done a lot of work on this and it's very much appreciated, but I had an idea to make the bitrate more easily configurable. If you make two macros called %(videobitrate) and %(audiobitrate) and allow these values to be configured via File > export > external encoder, it would be easier than fiddling in the encoder profiles each time.


I don't want to hard code in specific options like that... I was thinking of something a bit more flexible, but hadn't worked out the details yet.

Posted by: Gromozeka Jun 7 2010, 07:12 AM
Phaeron
QUOTE
Stop asking for the same thing over and over. First warning.

ohmy.gif

Posted by: stephanV Jun 7 2010, 08:41 AM
QUOTE (Gromozeka @ Jun 7 2010, 09:12 AM)
Phaeron
QUOTE
Stop asking for the same thing over and over. First warning.

ohmy.gif

I'm not speaking for phaeron here, but while your enthusiasm and testing in this forum is appreciated you also have to know when to stop. phaeron has made it clear a few times that he's not very fond of implementing this particular feature. He will do it if he finds it is needed, but he might find it isn't or doesn't know yet when.

Here is a quote from http://www.virtualdub.org/blog/pivot/entry.php?id=299.

QUOTE
Now, the bad part: I have no timeline whatsoever for this. Sorry, but that's reality. I have a full-time job, I have other interests, and therefore I only work on VirtualDub occasionally. I get a lot of requests for various features, some of which are well-written, and some of which are frankly abusive, but regardless I can only take on a few of them at a time, and I generally have to avoid chasing the frontier, whether it be in compilers, OS features, algorithms, formats, etc. If you've sent me an email and haven't gotten a response, or are still waiting for a feature to arrive -- I apologize, and please believe me when I say I keep a master list of requests. Thanks for your support and your continued patience, and if you've got some time, feel free to try some of the test releases I put out in the forums.


Thanks for your understanding. smile.gif

Posted by: Gromozeka Jun 7 2010, 09:41 AM
stephanV
This your truth
phaeron
Sorry, Phaeron.

Posted by: UGC Jun 18 2010, 10:30 PM
QUOTE (phaeron @ May 29 2010, 05:26 AM)
Sorry, been a bit busy with work and stuff....

The current directory is not guaranteed, folks. It getting set to the output directory is a side effect of the Windows common file dialog.

%(vdpath) makes sense, but I'm not sure what %(encpath) would be. Did you mean something like %(outputdir)?

BTW, I found where "Foo" was coming from. Turns out it's from some test code I put into the 1.9.X branch and forgot to take out. It's been removed in test-20.

FYI: in VirtualDub-1.9.X-test23-AMD64, the "Foo" is gone, but replaced with a list a mile long starting from A-Z for the audio selection during capture. I have about 4 selections for each input.

Posted by: phaeron Jun 19 2010, 07:06 AM
Try test-24.

Posted by: mattyou Jun 20 2010, 10:23 PM
Hi Phaeron,

Thank you so much for this test24 version, I am using virtualdub since a lot of years, that's a really great tool, but since the version 1.8 or 1.9, it was freezing randomly at 99% during Xvid 2nd pass encoding, and that was loosing a lot of time for me.

I decided some days ago to test the version 1.9.9 but it was freezing randomly too during big job queues.

Yesterday I visited the forum for the first time and I decided to test the beta version test24 and my job queue is stable since 24 hours !

So here I am to congratulate you Phaeron for your great job !!! smile.gif

Have a good day and long life to Virtualdub !

Matt.

Posted by: v0lt Jul 10 2010, 07:34 AM
phaeron
What do you think about sorting (manual or automatic) in the "Configure External Encoders"?


Posted by: v0lt Jul 10 2010, 07:36 AM
Bug: I wrote in the field "Program" value "tools\lame\lame.exe". Then I exported the settings in that file to the same record. But when I imported, the value was changed to "D:\tools\lame\lame.exe" sad.gif.

Posted by: phaeron Jul 11 2010, 09:56 PM
Added sorting in test-25.

Er, program name without an absolute path is bad. That means it is resolved relative to the current directory, which is unpredictable (it's changed by the file dialog). What base path did you intend for this to be resolved against?

The reason for the behavior on import/export is that any relative path in the profile is resolved against the location of the profile file itself. I did this so that you could ship a profile with an encoder and the path in the profile would be automatically resolved on import.

Posted by: v0lt Jul 12 2010, 03:09 AM
phaeron
QUOTE
Added sorting in test-25.

Thanks

QUOTE
Er, program name without an absolute path is bad. That means it is resolved relative to the current directory, which is unpredictable (it's changed by the file dialog). What base path did you intend for this to be resolved against?

Yes, I would not want to VD corrected the correct relative paths. In this case, VD mistake.
Absolute path - "c:\Program Files\!media\VirtualDub-1.9.X\tools\lame\lame.exe"
Relative path - "tools\lame\lame.exe"
After the export/import - "D:\tools\lame\lame.exe"

Posted by: dloneranger Jul 12 2010, 05:37 AM
Bug
Use video stream fcchandler option isn't saved correctly

CODE
void VDSavePreferences(VDPreferences2& prefs) {
.............
key.setBool("AVI: Use video stream fccHandler in codec search", g_prefs2.mbUseVideoFccHandler);


should be
CODE

key.setBool("AVI: Use video stream fccHandler in codec search", prefs.mbUseVideoFccHandler);

Posted by: dloneranger Jul 13 2010, 05:20 AM
Crash report

Open virtualdub
select menu - video - full processing
select menu - video - color depth - 4:4:4 planar YcbCr (yv24)
open a video - any will do, but this one is 576,320
Click button - scene forward

Crash - access violation

[edit]
also with
4:2:2 ycbcr (uyvy)
4:2:2 ycbcr (yuy2)

CODE
VirtualDub crash report -- build 33794 (release)
--------------------------------------

Disassembly:
00479d20: 2401            and    al, 01h
00479d22: 8944241c        mov    [esp+1ch], eax
00479d26: 75c9            jnz    00479cf1
00479d28: 2b4c2414        sub    ecx, [esp+14h]
00479d2c: 8bc6            mov    eax, esi
00479d2e: 8b742410        mov    esi, [esp+10h]
00479d32: 2bc6            sub    eax, esi
00479d34: 2bd6            sub    edx, esi
00479d36: 83c010          add    eax, 10h
00479d39: c1f805          sar    eax, 05h
00479d3c: 83c210          add    edx, 10h
00479d3f: c1fa05          sar    edx, 05h
00479d42: 83c120          add    ecx, 20h
00479d45: 0480            add    al, 80h
00479d47: c1f906          sar    ecx, 06h
00479d4a: 57              push   edi
00479d4b: 80c280          add    dl, 80h
00479d4e: 80c110          add    cl, 10h
00479d51: 57              push   edi
00479d52: 50              push   eax
00479d53: 52              push   edx
00479d54: 51              push   ecx
00479d55: e806250f00      call   0056c260
00479d5a: 83c414          add    esp, 14h
00479d5d: 5f              pop    edi
00479d5e: 5e              pop    esi
00479d5f: 5d              pop    ebp
00479d60: 5b              pop    ebx
00479d61: 83c408          add    esp, 08h
00479d64: c3              ret    
00479d65: cc              int    3
00479d66: cc              int    3
00479d67: cc              int    3
00479d68: cc              int    3
00479d69: cc              int    3
00479d6a: cc              int    3
00479d6b: cc              int    3
00479d6c: cc              int    3
00479d6d: cc              int    3
00479d6e: cc              int    3
00479d6f: cc              int    3
00479d70: 83ec08          sub    esp, 08h
00479d73: 8b442410        mov    eax, [esp+10h]
00479d77: 0faf442414      imul   eax, [esp+14h]
00479d7c: 53              push   ebx
00479d7d: 55              push   ebp
00479d7e: 56              push   esi
00479d7f: 57              push   edi
00479d80: 8bf8            mov    edi, eax
00479d82: c1e006          shl    eax, 06h
00479d85: 89442410        mov    [esp+10h], eax
00479d89: 8b44241c        mov    eax, [esp+1ch]
00479d8d: c1e704          shl    edi, 04h
00479d90: 33c9            xor    ecx, ecx
00479d92: 33d2            xor    edx, edx
00479d94: 33f6            xor    esi, esi
00479d96: 83c001          add    eax, 01h
00479d99: 897c2414        mov    [esp+14h], edi
00479d9d: 8944241c        mov    [esp+1ch], eax
00479da1: 8b7c2420        mov    edi, [esp+20h]
00479da5: 0fb66801        movzx  ebp, byte ptr [eax+01h]      <-- FAULT
00479da9: 0fb658ff        movzx  ebx, byte ptr [eax-01h]
00479dad: 03e9            add    ebp, ecx
00479daf: 8d0c2b          lea    ecx, [ebx+ebp]
00479db2: 0fb618          movzx  ebx, byte ptr [eax]
00479db5: 03d3            add    edx, ebx
00479db7: 0fb65802        movzx  ebx, byte ptr [eax+02h]
00479dbb: 03f3            add    esi, ebx
00479dbd: 83c004          add    eax, 04h
00479dc0: 83ef02          sub    edi, 02h
00479dc3: 75e0            jnz    00479da5
00479dc5: 8b44241c        mov    eax, [esp+1ch]
00479dc9: 03442428        add    eax, [esp+28h]
00479dcd: 836c242401      sub    dword ptr [esp+24h], 01h
00479dd2: 8944241c        mov    [esp+1ch], eax
00479dd6: 75c9            jnz    00479da1
00479dd8: 2b4c2414        sub    ecx, [esp+14h]
00479ddc: 8bc6            mov    eax, esi
00479dde: 8b742410        mov    esi, [esp+10h]
00479de2: 2bc6            sub    eax, esi
00479de4: 2bd6            sub    edx, esi
00479de6: 83c010          add    eax, 10h
00479de9: c1f805          sar    eax, 05h
00479dec: 83c210          add    edx, 10h
00479def: c1fa05          sar    edx, 05h
00479df2: 83c120          add    ecx, 20h
00479df5: 0480            add    al, 80h
00479df7: c1f906          sar    ecx, 06h
00479dfa: 57              push   edi
00479dfb: 80c280          add    dl, 80h
00479dfe: 80c110          add    cl, 10h
00479e01: 57              push   edi
00479e02: 50              push   eax
00479e03: 52              push   edx
00479e04: 51              push   ecx
00479e05: e856240f00      call   0056c260
00479e0a: 83c414          add    esp, 14h
00479e0d: 5f              pop    edi
00479e0e: 5e              pop    esi
00479e0f: 5d              pop    ebp
00479e10: 5b              pop    ebx
00479e11: 83c408          add    esp, 08h
00479e14: c3              ret    
00479e15: cc              int    3
00479e16: cc              int    3
00479e17: cc              int    3
00479e18: cc              int    3
00479e19: cc              int    3
00479e1a: cc              int    3
00479e1b: cc              int    3
00479e1c: cc              int    3
00479e1d: cc              int    3
00479e1e: cc              int    3
00479e1f: cc              int    3

Built on Aegis on Sun Jul 11 14:28:49 2010 using compiler version 1400

Windows 6.1 (Windows Vista x64 build 7600) []

EAX = 02b34001
EBX = 00000080
ECX = 00000380
EDX = 00000e00
EBP = 00000370
ESI = 00000e00
EDI = 00000008
ESP = 0018fd68
EIP = 00479da5
EFLAGS = 00210202
FPUCW = 027f
FPUTW = ffff

Crash reason: Access Violation

Crash context:
An out-of-bounds memory access (access violation) occurred in module 'VirtualDub'...

...reading address 02B34002.

Pointer dumps:

ESP   0018fd68: 02b31ec0 008eb8f0 0018fe38 00000008 00001000 00000400 0047ab4d 02b34001
     0018fd88: 00000008 00000001 000004c0 0018fe60 0018fe88 0301efa8 00000000 00000006
     0018fda8: 00029dc4 00617a28 411d8551 403a8179 00000001 00000000 00000020 00029dc4
     0018fdc8: 008e3f58 02b33c00 008e3f58 0018fde0 008e2690 008e2830 00000001 0047b2c8

Thread call stack:
00479da5: ?A0xcb909540::scene_lumtileYUY2()
0047ab4d: SceneDetector::BitmapToLummap()
0047b2c8: SceneDetector::Submit()
0046d15b: VDProject::SceneShuttleStep()
0046d403: VDProject::Tick()
0045a39c: WinMain@16()
005d649b: __tmainCRTStartup()
77323677: kernel32!BaseThreadInitThunk [77310000+13665+12]
77ba9d42: ntdll!RtlInitializeExceptionChain [77b70000+39cdf+63]
77ba9d15: ntdll!RtlInitializeExceptionChain [77b70000+39cdf+36]

-- End of report

Posted by: phaeron Jul 13 2010, 06:43 AM
Pushed up fixes in test-26. The scene detector crash was in the stable branch as well, so that will also be fixed in 1.9.10.

QUOTE

Yes, I would not want to VD corrected the correct relative paths. In this case, VD mistake.
Absolute path - "c:\Program Files\!media\VirtualDub-1.9.X\tools\lame\lame.exe"
Relative path - "tools\lame\lame.exe"
After the export/import - "D:\tools\lame\lame.exe"


Actually, that's something I never actually supported. It might happen to work, but it's by chance. If the current directory changes, it breaks. I can add support for program-relative paths, though.

Posted by: v0lt Jul 13 2010, 01:59 PM
phaeron
QUOTE
Actually, that's something I never actually supported. It might happen to work, but it's by chance.

This feature was very useful. Not remove it.

QUOTE
If the current directory changes, it breaks.

I changed the working path in the shortcut, but the encoders continue to work. cool.gif

QUOTE
I can add support for program-relative paths, though.

Loadus already asked that. But I was dissuaded. smile.gif
http://forums.virtualdub.org/index.php?act=ST&f=15&t=17508&st=150#entry79591

Posted by: dloneranger Jul 14 2010, 11:20 AM
Bug report
test-26

New audio display only shows waveform of one channel

Posted by: phaeron Jul 15 2010, 04:31 AM
Fixed in test-27.

Posted by: dloneranger Jul 18 2010, 05:18 PM
Bug report

---------------------
Problem
Setting the video colour depth
(menu - video - colour depth)

This only affects the next file opened - ok, can live with that

Saved jobs have the video depth set after the video is loaded
This results in the wrong depth being used in saved jobs

---------------------
Reason
If you open a video and it's decoded badly (slanted etc)
You can change the colour depth to one that works correctly and drag the video in again
Now the video shows correctly

Edit and queue the job
The job will be processed incorrectly as the requested colour depth is ignored
This can result in a bad (slanted etc) output file

---------------------
Fix
Moving VirtualDub.video.SetInputFormat to above VirtualDub.Open fixes the problem

Posted by: John I. Jul 19 2010, 05:27 PM
There are two points, and the first has intrigued me for quite some time, and I'm not sure if these are bugs or by design.
(Using Virtualdub up to 1.9.10 (X) build 33815)

The first, is the contrast filters in Virtualdub (whether internal or external.)

When applying a contrast filter to a frame (increase), the bright end is increased, while keeping the dark end in place.

On the other hand, applying contrast in TMPGEnc, Adobe Premier, Photoshop, Paintshop etc..., the bright end is increased and the dark end is decreased.

(1) Original frame histogram:
|______iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii_____|
(2) Contrast in Virtualdub:
|______iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii_|
(3) Contrast in other Video and Image applications:
|_iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii_|

If one needs to achieve this in Virtualdub, two sliders will have to be used. The brightness decreased, and contrast increased.

Now, also in reverse , when decreasing contrast, and all the way approaching the 0%, the image becomes darker until totally black.

(1) Original frame histogram:
|_iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii_|
(2) Contrast in Virtualdub:
|_iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii__________________|
(3) Contrast in other Video and Image applications:
|______iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii______|

Again, both the two sliders will have to be applied to reach the desired effect.
_______________
The second, is the curve editor display.

If a blend is applied to any filter, and the curve editor display is enabled, going into filters for further adjustments to any filter, causes the curve editor display to alternate between normally showing the curve and no curve displayed with only the gray background of Virtualdub showing. This also happens without modifying any filter. (Try CTR+F then ESC.)


Posted by: Jam One Jul 19 2010, 06:25 PM
It's good to hear that. That means brightness and contrast work in the best way they could have.


Posted by: John I. Jul 19 2010, 07:24 PM
Does that mean that the least contrast should be black ?

Posted by: phaeron Jul 20 2010, 05:11 AM
The reason for the brightness/contrast filter working this way is historical -- it's just the way that I implemented it, not having seen how other programs work.

As for the curve editor, I can't seem to reproduce this. Any specific filter count or order of operations needed to trigger it?

Posted by: Jam One Jul 20 2010, 05:50 AM
Regarding the VIDEO,
"contrast" controls the transfer function, i.e. the White Level
"brightness" controls the Black Level.
That's the way it should be.


"The least contrast" should ideally (but not necessarily, in real world) be "the level of brightness".

Posted by: John I. Jul 20 2010, 06:28 AM
phaeron, I am aware of what you mean, as I've been using virtualdub since V 1.3, and this is why I presented it as 'not sure if it is a bug or by design'.

As I didn't want to impose my understanding of 'Contrast', I did a search on the net to double check my knowledge, and I found some intersting links such as the following:
http://en.wikipedia.org/wiki/Contrast_%28vision%29

Is it possible to offer both sliders behaviors as choices in the 'Brightness & Contrast' Dialog ?

----
For the curve Editor:
if the blended filter is not the first in order in the Filter list, the curve editor starts exhibiting this behavior.

The simplest setup that triggers this is:
- Open any AVI.
- Add 'Brightness & Contrast' Filter only (No need to adjust settings.)

The Curve display is stable.

- Add 'NULL Transform' as 2nd filter (No need to adjust settings.)

The Curve display is stable.

- Move the 'NULL Transform' up to be first in order.

Now, if you go in and out of the filters list, the curve editor keeps disappearing and reappearing.

- Move the blended 'Brightness & Contrast' to first position, and the curve editor becomes stable again.


Posted by: Jam One Jul 20 2010, 11:08 AM
QUOTE (John I. @ Jul 20 2010, 09:28 AM)
I found some intersting links such as the following:
http://en.wikipedia.org/wiki/Contrast_%28vision%29

1)
QUOTE (Wikipedia.org)
This article needs attention from an expert on the subject.

Yes, it does.

2)
You may wish to read more about Displays, particularly about displays adjustment and calibration.
What you refer to is sometimes called "linear contrast", where the luminosity "rotates" around the middle-gray (middle power) level/point.
This method is a tradition for Photo-editing.
But Video is a different realm. One of the points in its difference is Video is destined for Displays solely. And displays normally sport the abovementioned behavior.
'Contrast' is just a familiar name given to the power-of-transfer-function control.
'Brightness' is just a familiar name given to the "zero level" of the transfer function.



Note that the 'black level' is a term which requires some understanding of its relation to the certain medium. What is black on TV display is not supposed to be black on PC display (it is supposed to be dark-gray on PC).

Posted by: v0lt Jul 20 2010, 01:23 PM
To heap. Old cosmetic bug:
http://img43.imageshack.us/img43/7246/vdpevframe.png
I already wrote about this, but there was no answer.

Posted by: John I. Jul 20 2010, 08:41 PM
Jam One,
I'm not opposed to your technical description and justification that the
QUOTE
brightness and contrast work in the best way they could have

particularly, when this method is meant to prevent the generation of non-existing artifacts in the output.

But, even when set this way, the filter has side effects:
QUOTE
saturation is affected by contrast, and hues can shift if clamping at white or black occurs' (Virtualdub help)

Perhaps I didn't clarify in the first place that I was aiming at the general users who could have a washed out video or capture at their hand and are only aware of the common use of a contrast control, hence, my proposal to
QUOTE
offer both sliders behaviors as choices in the 'Brightness & Contrast' Dialog.


Mentioning the Virtualdub help leads me to another suggestion.

Phaeron, in the help file, you recommend the use of 'Levels' over "Brightnes/Contrast. Is it possible to add a Histogram display of after the controls are applied in both filters ? This will ensure that users work within the safe limits, specially, when only having the preview window as a reference could be misleading in cases such as aging monitors, and badly or misconfigured displays.


Posted by: Jam One Jul 20 2010, 09:55 PM
John I.,
I'd like to assure you I, in turn, am not opposed to the point of yours!
I was kind of explaining some ideas "alternative" to photographic customs.

'Levels' filter is capable of matching your exact need - adjusting that very sort of contrast you wish.


Posted by: phaeron Jul 21 2010, 05:56 AM
Fixes queued for the curve editor and menu item description bugs.

Posted by: Loadus Jul 22 2010, 10:25 PM
QUOTE (John I. @ Jul 20 2010, 02:41 PM)
Is it possible to add a Histogram display of after the controls are applied in both filters ? This will ensure that users work within the safe limits, specially, when only having the preview window as a reference could be misleading in cases such as aging monitors, and badly or misconfigured displays.

Well, you shouldn't use Brightness/Contrast // Levels at all for correction work. At least not on a (linear or) gamma workspace (meaning the normal editing space VirtualDub and sRGB use).

Posted by: John I. Jul 22 2010, 11:48 PM
Loadus,
If I shouldn't, then, you are pointing me to ... ?

Posted by: John I. Jul 24 2010, 10:03 PM
phaeron,
There is another issue with curve editor (Cosmetic ? Practical ?)

On a 1600 X 1200 display and higher, it is very very difficult to see the dark red hairline defining the current frame.

Is there any possibility of doubling its width (maybe at high resolutions only), and / or making the color brighter ?

I use the curve editor extensively on video captures of scientific experiments exposures and the current line at high resolution, is causing a lot of eye strain (can barely be seen.)mellow.gif

Now, for a long due 'Thank you Phaeron' for implementing the feature of 'auto saving the Virtualdub main window dimensions & position.' I asked for this when I was a previous member of the forum (July 2005.)


Posted by: phaeron Jul 25 2010, 03:59 AM
What do you mean? I use 1920x1200, and I can see it just fine. biggrin.gif

Okay, seriously....

That seems like a reasonable request. Do you have any of the scaling parameters set in Windows, like the high DPI or large font setting? I'm wondering whether I should key this off of one of those, or if it needs to be a program-specific setting.

Posted by: John I. Jul 25 2010, 06:55 AM
phaeron,

I work in two modes 1600x1200 & 2048x1536.

The display is set to 120 DPI , 144 DPI respectively.

The Font Size is NORMAL in both cases.


Posted by: Jam One Jul 25 2010, 11:08 AM
My monitor is 1920x1200 @ 94 dpi.
The latter value achieved with a ruler / scale calibration in "Desctop properties".
Most of fonts are in "normal" size. Some are in between "normal" and "big".
I see EVERYTHING perfectly fine & clear & in real sizes.
No "thin dark lines". All lines are sharply distinguishable.
Making lines "thick" will make them "s&#@", according to what I see.


P.S.:
My monitor gamma etc. is hardware-calibrated.

P.P.S.:
John I. -- do you REALLY believe the monitor's resolution can be 120/144 dpi??? Both of these altogether???
I bet you should set your resolution more carefully.
This is about monitor's PHYSICAL resolution, NOT your own idea of beauty.
To double-check the monitor's settings open the Word, set page layout to 100% size, take a ruler, measure the Word's rulers drawn above the page and to the left.
I have perfect MATCH.
Do you?


_______________

QUOTE (phaeron)
That seems like a reasonable request.

No, It doesn't.
There is a bunch of "Helps"/"Guides"/"Tutorials" regarding the desktop/monitor's settings in Windows. Some basic things should be obeyed prior to blaming VirtualDub and calling to spoil its interface.

Posted by: dloneranger Jul 25 2010, 03:27 PM
QUOTE (Jam One @ Jul 25 2010, 11:08 AM)
Making lines "thick" will make them "s&#@", according to what I see.

He never asked to make it 'thick'

I have the same problem with the audio display's dark-blue on black

To solve that I just used a lighter shade of blue

I can't see how making the line a bit more vivid would be harmful

Posted by: Jam One Jul 25 2010, 06:39 PM
...Dark blue on black... Dark red lines...

Where ?... blink.gif

Seems like I've got some totally different software ph34r.gif
No, I can't believe this!

I believe you're ought to tune your monitors.

Posted by: dloneranger Jul 26 2010, 12:11 AM
I'm so glad your eyes are perfect and don't have any sort of colour blindness wink.gif

But to me this blue is nearly indistinguishable from the black (it's actually RGB(0, 32, 64) in the sourcecode)
http://img189.imageshack.us/i/vdubdarkblue.png/

I'm also willing to consider that thin red lines may be hard to distinguish for other people

Posted by: John I. Jul 26 2010, 12:49 AM
Jam One,

I wonder why is this negative approach ?

In life, there are so many people who have different screens, different settings, different needs, and different vision requirements which could be different from yours.

I ask, what harm could that do to you, specially with the way Phaeron is investigating it ?
QUOTE
I'm wondering whether I should key this off of one of those, or if it needs to be a program-specific setting.


You'll most likely retain how your display is setup.

If I didn't already know how busy Phaeron is, I would have asked (if possible) to change the curve editor to have a light background and all the numbers, lines, and wave shapes to have dark colors (similar to this page or to a book.)

Please be more considerate to other people's conditions and needs.

I also have no objection sharing my display specs to provide more info to Phaeron and to you.

http://www.keithmay.org/equipment/Sony_CPD-G520/Sony_CPD-G520_Spec_sheet.pdf

dloneranger,
As you kindly provided an image for the audio display, can you also provide one for the curve editor, just to put our vision conflicts at rest ?

Posted by: dloneranger Jul 26 2010, 01:42 AM
http://img806.imageshack.us/i/vdubcurve.png/

There you go

Posted by: John I. Jul 26 2010, 01:47 AM
dloneranger,
Thank you.


Posted by: dloneranger Jul 26 2010, 02:08 AM
@John.I
See if this is any better http://rapidshare.com/files/409080542/Virtualdub-JohnI.zip.html
I've tweaked the marker lines a bit

Posted by: John I. Jul 26 2010, 02:37 AM
dloneranger,
Yes, the yellow line although is still thin, but is better and easier to distinguish from the black background.


Posted by: dloneranger Jul 26 2010, 02:52 AM
QUOTE (John I. @ Jul 26 2010, 02:37 AM)
Yes, the yellow line although is still thin, but is better and easier to distinguish from the black background.

Made it a bit thicker
http://rapidshare.com/files/409083872/VDub-JohnI.zip.html

Posted by: John I. Jul 26 2010, 03:15 AM
dloneranger,

Very much better. It is about the size of the dots on the curve, which makes it very convenient for extensive curve editing.

Thank you.

I hope Phaeron implements this as a per user choice.

I wonder, if the curve editor background and other colors can be adjusted or altered as well ?

Posted by: dloneranger Jul 26 2010, 03:21 AM
Shouldn't be too difficult - but this is the wrong thread for longer discussion
Better start a new thread in "general", or you can email me at dloneranger67@gmail.com

Posted by: John I. Jul 26 2010, 03:51 AM
I think there is no need to start a new thread. I believe it is better to continue with the current development, considering that the request has already been placed and is being handled by Phaeron.

On the other hand, I appreciate your offer very much, and specially your effort to provide a modified executable sample.

Thank you dloneranger.


Posted by: phaeron Jul 27 2010, 05:59 AM
A full color configuration dialog is something I've avoided as of yet. smile.gif

Am I correct that the changes in question are: brighten the active cursor colors in both the audio and curve editors, and widen it on the curve editor?

Posted by: John I. Jul 27 2010, 06:11 AM
Phaeron,

QUOTE
Am I correct that the changes in question are: brighten the active cursor colors in both the audio and curve editors, and widen it on the curve editor?

You are correct.

But, when I mentioned 'a per user', I was talking about the curve editor cursor width, which could be dependent on screen resolution, or manual as a single setup in Preferences (Normal or double width cursor.)

As far as the discussion went regarding this point, it was obvious that there are users who prefer to have the cursor display as it is now, like Jam One, and I believe that they are also correct, because this is how they are comfortable with the display.
-
As for the colors, I didn't mean a full color configuration dialog, I was suggesting a permanent change to a light background such as white or light gray and dark colors for the numbers, lines, points, and wave shapes which would be clearer and less eye straining 'health wise.'

Please note that there are other benefits to the light background, for example if we capture an image of the curve editor, then invert the colors and produce a negative, we will be able to see the existing vertical lines at each frame position.


Posted by: jpsdr Sep 8 2010, 07:21 AM
What's the status of 1.9.X version compared to the fixes of the stable new 1.9.10 version ?

Posted by: dloneranger Sep 13 2010, 04:00 PM
Is the filter sdk's section "Creating time-varying filters" correct?

There's a thread about filters not working correctly when edits have been used (cut/paste/delete etc)
http://forums.virtualdub.org/index.php?act=ST&f=2&t=19167&st=0#entry81432

The sdk says "If the filter needs to track post-edit frame numbers instead, such as applying a fade at a predetermined time, then it should use output frame numbers instead."
Then there's an example showing a bob doubler, and expected frame numbers

However, in debugging, all the destination variables are the same as the source?
(I'm not seeing the expected output frame numbers of times/framenumbers for edits or eg the bob doubler)

Posted by: phaeron Sep 13 2010, 10:50 PM
Almost all of the fixes in 1.9.10 had been integrated across, but not the curve editor UI fix, and I don't remember which test releases had what, so I just uploaded test-29 with everything integrated. In general, you can check the change list to see what has gone over.

QUOTE

Is the filter sdk's section "Creating time-varying filters" correct?

There's a thread about filters not working correctly when edits have been used (cut/paste/delete etc)


The filter SDK is old at this point; the plugin SDK supercedes it. The specific change involved here is that current versions of VirtualDub apply edits on the timeline after the filters, whereas previous versions mostly treated it as pre-filters. I say "mostly" because that's usually the way it worked, but there were icky cases where it didn't and the result was a bit of a mess that only got worse as I tried to add more features to the filter system. Filters can still see frame number changes in the frame information but that won't occur unless an upstream filter is doing so, like a interlacing filter.

Posted by: dloneranger Sep 13 2010, 10:57 PM
Ah, actually, I did mean the latest plugin sdk - my mistype
(That's still in the help for the latest plugin sdk)

So, there isn't a way for a filter to get the final finished frame number now, if there are any edits on the timeline?

Posted by: phaeron Sep 16 2010, 07:02 AM
No, and here's why: the mapping isn't 1:1 anymore. The simplest case is if you use cut-and-paste to duplicate a section. OK, that's a corner case that almost no one does. The more evil case is if you have a downstream filter that is sampling multiple source frames per output frame, such as a motion blur filter.

Let's say you have scrubbed to frame 10. There are two filters in the chain, filter A and filter B. Filter B needs a window of five frames, so it requests frames 8-12 from the upstream filter A. If we denote each request by (output, final), then we get this:

(8, 10)
(9, 10)
(10, 10)
(11, 10)
(12, 10)

So far, so good. But what if frame 8 was requested instead? Then the requests look like this:

(6, 8)
(7, 8)
(8, 8)
(9, 8)
(10, 8)

Notice that in both cases we are requesting frame 10 from the upstream, but there are two different requests for it: (10, 10) and (10, 8). We have two choices as to how to solve this. The first solution is to consider (10, 10) and (10, 8) to be the same frame. This has the undesirable side effect that the filter sees a delta between the source and output frame numbers that depends upon the delay after the filter. The second solution is to consider the two to be different frames. Well, that has a rather huge downside of prohibiting any frame caching between any two of the downstream frames, so it means that filter B causes 5x the frame requests to filter A. Even if you're willing to take that performance hit in order to allow for generalized source frame windows, you run into the problem that many VirtualDub filters do internal frame caching and don't necessarily work properly unless the incoming frame sequence is single stepped forward. That makes it difficult or impossible to cleanly step backwards in order to recompute the frames with different output frame numbers.

Basically, in order to move the filter system forward, I felt it was necessary to remove the capability for filters to see all the way forward in the filter chain, and make the data flow strictly forward. There were too many contradictions and problems otherwise.

Posted by: v0lt Sep 16 2010, 01:21 PM
The past year in the dialogue "About" in the line of copyright smile.gif

Posted by: dloneranger Sep 16 2010, 03:23 PM
QUOTE (phaeron @ Sep 16 2010, 08:02 AM)
Basically, in order to move the filter system forward, I felt it was necessary to remove the capability for filters to see all the way forward in the filter chain, and make the data flow strictly forward. There were too many contradictions and problems otherwise.

Yeah, it's understandable how it works
We had a play in the other thread with using filters+curves instead to get a logo to fade in over the first few seconds
But that gets clobbered if you edited/pasted frames into the section 'you think' would be affected by the curve as virtualdub now does a jedi mind trick on you and slips the pasted frames in after the curves are applied (using the original source curve levels)

Posted by: dloneranger Oct 14 2010, 05:12 PM
Mousewheel doesn't alter position control when mouse is over the curve control

ParameterCurveControl.cpp
LRESULT CALLBACK VDParameterCurveControlW32::WndProc(UINT msg, WPARAM wParam, LPARAM lParam)

This is eating the message
case WM_MOUSEWHEEL:
return 0;

---------------------------------------

Also, mousewheel in filter preview window, when mouse is over image isn't passed to position control

FilterPreview.cpp
BOOL FilterPreview::DlgProc(UINT message, WPARAM wParam, LPARAM lParam)
Is something like this correct?

case WM_MOUSEWHEEL:
if (mhwndPosition)
return SendMessage(mhwndPosition, WM_MOUSEWHEEL, wParam, lParam);
break;

Posted by: phaeron Oct 23 2010, 08:11 AM
Yup, those changes look about right; I'll throw them in. I need to double-check why the parameter curve control eats the mouse wheel messages, though -- might have been to resolve a message loop somewhere.

Posted by: jpsdr Oct 24 2010, 11:33 AM
Pb with 31 version : can't open avisynth scripts anymore...
Go back to 30 version : Work fine.

Posted by: v0lt Oct 24 2010, 01:36 PM
@phaeron
I have a request.
You can do so by pasting the two files fps test was carried out only by 3 or 4 digits after the decimal point?
The resulting fps taken from the first file.
Feature can be optional.

Åxample:
http://img137.imageshack.us/img137/301/vdfpsproblem.png

Posted by: pureocean Oct 25 2010, 07:56 AM
Minor bug;

Test-31 (33841) can't open WAV file as external audio (pcm, 48 khz, stereo, 16 bit). Error: ...is of an unknown or unsupported file type.

Test-30 (33836) can open.

Posted by: phaeron Oct 30 2010, 11:07 PM
Typo screwed up the filename detection... try test-32.

Posted by: levicki Oct 31 2010, 02:24 PM
Not sure if this has been brought up (it is minor anyway):

1.9.10 build 33836:

- Encoder Edit dialog tab order is screwed up -- Command Arguments edit box is at the end of tab order instead of in sync with its correct physical position on screen.

Also, I have a suggestion.

Some of us use bitrate for encoding and vary it depending on the resolution. Obviously, it wouldn't be very feasible to create that many different encoder presets.

It would be nice if Configure External Encoders window would get two edit boxes -- one for video, and another one for audio bitrate which could then be passed to external encoders as %(vbitrate) and %(abitrate) respectively.

Yes, I am aware that for some encoders it is possible to use constant quality setting and leave out bitrate completely. I just prefer being able to calculate bitrate precisely using my own formula, and to be able to estimate file size by knowing bitrate in advance so I can tweak it if need be.

Posted by: pureocean Oct 31 2010, 06:01 PM
QUOTE (phaeron @ Oct 30 2010, 11:07 PM)
Typo screwed up the filename detection... try test-32.

@phaeron: Thank you for fix. smile.gif

Posted by: Loadus Nov 15 2010, 03:28 PM
@phaeron:

Feature request maximus. This might've been asked before but I'm throwing it in there just for general annoyance. biggrin.gif

Layers.

In the Filters dialog - the ability to process the image in different "threads", like layers in image editing.

user posted image

Clicking the "Add layer" adds another filterchain that can be blended into the original footage using "Blend" dialog.

This would enable fairly complex compositing effects on video. I'm currently using Emiliano Ferrari's Blend filter to do these operations, but it enables only one additional filter chain for blending. : /

Any thoughts on this?

Posted by: v0lt Nov 15 2010, 05:18 PM
@Loadus
in this topic requests are not considered sad.gif

Posted by: Loadus Nov 15 2010, 06:10 PM
QUOTE (v0lt @ Nov 15 2010, 11:18 AM)
@Loadus
in this topic requests are not considered sad.gif

Ah. Got to post it to the dev area then. : /

Posted by: dloneranger Dec 19 2010, 11:50 PM
Bug
If the audio display is turned on with compressed audio

Message displays 'audio display is disabled...' correctly, but the area that the display would appear in still accepts ctrl-dragging with the mouse to offset the audio

Posted by: -vdub- Apr 29 2011, 09:45 AM
ffchandlers matroska.vdplugin v2.8 (with prefs AVI option selected for fcchandler to search in codec streams)

Virtualdub v1.10.1_test32

xpsp3 (x86 32bit)

Feedback for test versions 7 to 32 (and to all other current versions as of post date) (didn't post elsewhere so not to spam forum)

Previously with test version7 i loadeda mkv file (H264+AC3) i was given a chance to save the index file that i assume fcchandler made when parsing the mkv when first loaded. Since i have deleted this file by mistake and upon loading never asked since asked or have ability to save it. Reason for this since large mkv files and maybe other containers take an age to load. Idea would be to have a menu option to save this index would mean loading in an instance.


Read on another forum External Encoders ui to have this ability. To import graphs from graphstudio and graphedit. It would then be very simple task to make and use them available with virtualdub to encode with. Is it possible to expand further on this to make this available also for decoders. Abulity to build graphs and insert them has to be another easy way to work with virtualdub. Appreciate if is a problem such as the filters won't play correctly. I expect internal ones wouldbe ok just those external ones. Maybe have it to start with so those are disabled, and if need filter use properties on componments in the graph. And add ffdshow there if need more.

Posted by: ale5000 Apr 29 2011, 09:11 PM
QUOTE (-vdub- @ Apr 29 2011, 10:45 AM)
Virtualdub v1.10.1_test32

There isn't any 1.10.1_test32, just 1.10.1_test7.

To have the option to save the index, you must check "Ask for extended options after this dialog" when you open a video.

Posted by: -vdub- Apr 30 2011, 09:20 AM
Your correct and yesterday had many projects on the go. I did try all current and some older versions. Then after posting i did add this, to encapsulate all recent versions.

QUOTE
Feedback for test versions 7 to 32 (and to all other current versions as of post date) (didn't post elsewhere so not to spam forum)




Didn't try extended options since mkv with v1.10.0 loaded ok and well did the same for the rest. Just tried now and do see options there. Maybe better these been on preferences also, such as to always save idx file or not optional.



* Also for the suggestions to use graphs from graph studio and graphedit for importing. Also if had abilty to export them this would just be the ultimate icing on the cake for virtualdub. Andmiles ahead maybe of any other video editing tool, they all should have this ability. Also able to connect to graphstudio and graphedit would make for all codec filter tasks to be so simple.*



If i have posted this to incrorrect location on the forum. Could you please move these suggestion to more appropiate location, thanks smile.gif

Posted by: ale5000 Apr 30 2011, 07:59 PM
QUOTE (-vdub- @ Apr 30 2011, 10:20 AM)
Didn't try extended options since mkv with v1.10.0 loaded ok and well did the same for the rest. Just tried now and do see options there. Maybe better these been on preferences also, such as to always save idx file or not optional.
What is the problem?
Just open extended options, enable index creation, then press "Save as default".
Extended options cannot be on preferences because are different for every input plugin.

QUOTE (-vdub- @ Apr 30 2011, 10:20 AM)
* Also for the suggestions to use graphs from graph studio and graphedit for importing. Also if had abilty to export them this would just be the ultimate icing on the cake for virtualdub. Andmiles ahead maybe of any other video editing tool, they all should have this ability. Also able to connect to graphstudio and graphedit would make for all codec filter tasks to be so simple.*
Excluding the DirectShow input plugin, VirtualDub won't use any DirectShow filter so your request make sense only for this plugin.

Posted by: -vdub- Apr 30 2011, 08:30 PM
QUOTE (ale5000 @ Apr 30 2011, 07:59 PM)
QUOTE (-vdub- @ Apr 30 2011, 10:20 AM)
Didn't try extended options since mkv with v1.10.0 loaded ok and well did the same for the rest. Just tried now and do see options there. Maybe better these been on preferences also, such as to always save idx file or not optional.
What is the problem?
Just open extended options, enable index creation, then press "Save as default".
Extended options cannot be on preferences because are different for every input plugin.


Thanks no problem now it's set to make an idx automaticaly. Done so from the extended setting option on its popup after the file loaded.

Posted by: -vdub- Apr 30 2011, 09:15 PM
QUOTE (ale5000 @ Apr 30 2011, 07:59 PM)
QUOTE (-vdub- @ Apr 30 2011, 10:20 AM)
* Also for the suggestions to use graphs from graph studio and graphedit for importing. Also if had abilty to export them this would just be the ultimate icing on the cake for virtualdub. Andmiles ahead maybe of any other video editing tool, they all should have this ability. Also able to connect to graphstudio and graphedit would make for all codec filter tasks to be so simple.*
Excluding the DirectShow input plugin, VirtualDub won't use any DirectShow filter so your request make sense only for this plugin.

So it can be done from direct show plugin that is good.



Phaeron are you reading this post ?

What do you think of this idea ?

Do you think it is possible to do for directshow filters and codecs etc that is available with graphstudio and graphedit ?


There are loads of filters and codecs etc we could use with virtualdub, atm we just don't have access to them at all. Having the ability to import and export graphs for use in virtualdub would be a perfect sollution.



Posted by: phaeron May 1 2011, 01:30 AM
I've fixed the external encoder dialog tab order bugs in my dev tree.

I have something in the works for the video filters but I'm not ready to reveal it yet.

DirectShow custom graph support is possible, but it can't just be any graph -- the plugin needs a specific graph with sample grabbers to pull the video and audio out at the ends. In particular, it CAN'T use multiplexer or renderer filters that would be used for previewing or transcoding the graph in GraphEdit. I haven't done work lately on the DS plugin, but I plan to circle back to it at some point (still need to figure out why MediaDet can't handle MPEG-2 video).

Posted by: -vdub- May 1 2011, 03:12 AM
QUOTE (phaeron @ May 1 2011, 01:30 AM)
I've fixed the external encoder dialog tab order bugs in my dev tree.

I have something in the works for the video filters but I'm not ready to reveal it yet.

DirectShow custom graph support is possible, but it can't just be any graph -- the plugin needs a specific graph with sample grabbers to pull the video and audio out at the ends. In particular, it CAN'T use multiplexer or renderer filters that would be used for previewing or transcoding the graph in GraphEdit. I haven't done work lately on the DS plugin, but I plan to circle back to it at some point (still need to figure out why MediaDet can't handle MPEG-2 video).

Phaeron i wrote a few suggestions a few times here but kept coming back to the mpeg-2 problem. Together with the virtualdub ds filter multiplexer, video render and file writer that are essential right now.

This is the best way i can see this, which means you dropping mpeg-2 fixing for now. Since that maybe the stumbling block for not continuing with ds filter having to fix that first.

If leave the ds filter mpeg-2 problem to one side for now. Since everyone uses fcchandler or ffdshow mpeg-2 with virtualdub. I know myself fcchandler has no problems with ps while yes .ts is a problem with any plugin or without. Can see a need to fix this for all the hd streams that are .ts. If you know hd is ok with those one problem less for now. Sure you will find problem in the future, but not worth worrying about it and scaring you away from working with other parts of the code. Or even pull out mpeg-2 part and make it a standalone filter, could be a sollution.


Now to the next problem of using graphs and ds filter needing to control the multiplexer, video renderer and file writer. Build a simple or advanced graph editor into the virtualdub ds filter. Then this graph editor would work in exactly the same way as any other graph editing tool would. For choosing and controlling the 'inserted filters' with all property pages etc allowable for use etc. This would be the easiest and maybe the only way this could be done. Then while a graph is build virtualdub can use the filters it needs to use. And still the graph will work. Sure that means no import or export of filters from other graph tools. Then who cares since have one for use in virtualdub. Would be nice if also the virtualdub graph editor was like others where we can drag around the boxes to connect and same way or better to disconnect (even disconnect a connection using the right mouse button !). HAve option for removing added favourite filters. Can be done for others only through registry, thought graph studio would have made this better even. Also when not connectable a quick time out no waiting as long as with graph edit.

Sure you also could see many possibilties for virtualdub if was coded into virtualdub. Such as the user will have full control over all of their system installed filters, codecs and more. Just not so for the multiplexer, video render or file writer. Which on the face of it is nothing to worry about. Even if the multiplexer had property page made available for options it has. What else could a virtualdub user need. Ok maybe someway to interface all this better with avisync filters for direct use, or maybe use avisync filters as can be done now with virtualdub filters without an avs_cript needed. Oh could this be one of those filter ideas you have yet to revealed !!

Powered by Invision Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)