Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
12th April 2015, 12:00 | #1 | Link |
Registered User
Join Date: Mar 2015
Posts: 776
|
VirtualDub2
I think it is stable now, available for download.
http://sourceforge.net/projects/vdfiltermod/ There isnt currently excessive amount of filters so this feature is of limited use. If anyone wants to *develop* filters dont hesitate to ask for help, I dont write any SDK/manual until asked. What can use now: Open high bit depth formats like tiff, sgi, ffv1, ... whatever supported by ffmpeg. Apply "rgb levels" filter - this way can inspect what is the quality of image (whether gradients are actually high precision). Crop, flip, convert format also work. Export at full precision as tiff sequence. Eventually I will upgrade some other filters, but I am somewhat stuck with input codec. I wanted to have something like cineform but it doesnt seem it will work in >8bit. So if anyone has idea what format/decoder can be both fast and high accuracy... Last edited by shekh; 13th March 2018 at 11:26. |
29th November 2015, 23:13 | #2 | Link |
Registered User
Join Date: Mar 2015
Posts: 776
|
Update:
Export using external encoder now supports these formats: rgb24, rgba, rgba64, yuv 4:2:2, yuv 4:4:4. Tested with 16 bit tiff sequence as input and encoded to various ffmpeg ffv1 formats: yuva64, rgb14, yuv444, rgba. Example presets for reference: Code:
{ "description": "VirtualDub external encoder profile collection", "externalEncoders": { "sets": { "ffv1-yuva64": { "videoEncoder": "ffv1-yuva64", "audioEncoder": "", "multiplexer": "", "description": "", "extension": "mkv", "processPartial": false, "useOutputAsTemp": true }, "ffv1-rgb14": { "videoEncoder": "ffv1-rgb14", "audioEncoder": "", "multiplexer": "", "description": "", "extension": "mkv", "processPartial": false, "useOutputAsTemp": true }, "ffv1-yuv444": { "videoEncoder": "ffv1-yuv444", "audioEncoder": "", "multiplexer": "", "description": "", "extension": "mkv", "processPartial": false, "useOutputAsTemp": true }, "ffv1-rgba": { "videoEncoder": "ffv1-rgba", "audioEncoder": "", "multiplexer": "", "description": "", "extension": "mkv", "processPartial": false, "useOutputAsTemp": true } }, "profiles": { "ffv1-rgb14": { "name": "ffv1-rgb14", "program": "E:\\download\\vd\\ffmpeg1\\ffmpeg.exe", "commandArguments": "-f rawvideo -pix_fmt %(pix_fmt) -s %(width)x%(height) -r %(fpsnum)/%(fpsden) -i - -c:v ffv1 -pix_fmt gbrp14 %(tempvideofile)", "outputFilename": "", "type": 0, "pixelFormat": "bgra64le", "inputFormat": 0, "checkReturnCode": true, "logStdout": true, "logStderr": true, "bypassCompression": false, "predeleteOutputFile": true }, "ffv1-yuv444": { "name": "ffv1-yuv444", "program": "E:\\download\\vd\\ffmpeg1\\ffmpeg.exe", "commandArguments": "-f rawvideo -pix_fmt %(pix_fmt) -s %(width)x%(height) -r %(fpsnum)/%(fpsden) -i - -c:v ffv1 %(tempvideofile)", "outputFilename": "", "type": 0, "pixelFormat": "yuv444p", "inputFormat": 0, "checkReturnCode": true, "logStdout": true, "logStderr": true, "bypassCompression": false, "predeleteOutputFile": true }, "ffv1-yuva64": { "name": "ffv1-yuva64", "program": "E:\\download\\vd\\ffmpeg1\\ffmpeg.exe", "commandArguments": "-f rawvideo -pix_fmt %(pix_fmt) -s %(width)x%(height) -r %(fpsnum)/%(fpsden) -i - -c:v ffv1 %(tempvideofile)", "outputFilename": "", "type": 0, "pixelFormat": "bgra64le", "inputFormat": 0, "checkReturnCode": true, "logStdout": true, "logStderr": true, "bypassCompression": false, "predeleteOutputFile": true }, "ffv1-rgba": { "name": "ffv1-rgba", "program": "E:\\download\\vd\\ffmpeg1\\ffmpeg.exe", "commandArguments": "-f rawvideo -pix_fmt %(pix_fmt) -s %(width)x%(height) -r %(fpsnum)/%(fpsden) -i - -c:v ffv1 %(tempvideofile)", "outputFilename": "", "type": 0, "pixelFormat": "bgra", "inputFormat": 0, "checkReturnCode": true, "logStdout": true, "logStderr": true, "bypassCompression": false, "predeleteOutputFile": true } } } } Last edited by shekh; 26th December 2015 at 22:38. |
16th December 2015, 20:28 | #3 | Link |
Registered User
Join Date: Nov 2004
Location: Poland
Posts: 2,854
|
Cineform definitely can pass v210 to an external app. You may also get other pixel formats like RGB30 etc.
With ffmpeg input driver you should be able to access any high bit depth formats if you do required modifications. |
26th December 2015, 20:50 | #4 | Link |
Angel of Night
Join Date: Nov 2004
Location: Tangled in the silks
Posts: 9,561
|
Split off the codec discussion since that deserves a wider audience.
The mod looks really cool! I gave it some paces and it seems to be quite stable, although there aren't yet a lot of filters to take advantage of the bit depth. Nice to have a mod that's also up to date with the current vdub. |
27th December 2015, 11:04 | #5 | Link |
Registered User
Join Date: Mar 2015
Posts: 776
|
Thanks! I`d like to have some color correction filter but have no schedule for it. Most "classical" filters like brightness/contrast are non-upgradeable because they are based on 8-bit lookup table, and 16-bit lookup tables do not work afaik. If somebody point me a piece of open source which is already working fine somewhere, that could speed up things
|
14th June 2016, 20:09 | #6 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 11,019
|
Hi Shekh,
Just wondering if you have ever considered adding Avisynth script editing source from VDMod to vdfiltermod, I would find myself using your mod more than any other app if so. I had considered doing this myself but there is an awful lot of VD source and would be easier for someone who is already familiar with it. If you do, then ensure you use the Fizick modded source to fix Insert Trims etc (some versions off by one converting VD to Avisynth range specifications). Perhaps you would find it useful yourself, if not then please dont bother, maybe I do it myself in a decade or two.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? |
14th June 2016, 21:25 | #7 | Link |
Registered User
Join Date: Mar 2015
Posts: 776
|
I am lazily evaluating whether I am able to approach this.
Right now I am still not doing any avisynth scripting at all so this is the biggest problem. Also I am overwhelmed by the amount of links. There is original VDMod (2006), is it the same version you suggest (modded by Fizick)? There is also more recent Virtualdub+ which already merged script editing part with some newer vdub (but maybe this is of less help) Also it seemed hard to identify which avisynth implementation is THE avisynth (and why not vapoursynth anyway?). Also I am afraid VDMod is 32bit only and has dll dependencies (who knows if all of that can compile for x64?) Anyway if it was simple I would probably find interest to do this I have a couple of questions to evaluate the volume. Where can I find a feature-by-feature list of what the script support in VDMod is? I saw references to programs like AVSPmod. What is wrong with them, why vdub is still needed? From the point of implementing, it might be better for health to move script editor to plugin.
__________________
VirtualDub2 |
14th June 2016, 22:26 | #8 | Link | |||
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 11,019
|
Version of VDubMod that I use (might be later ones, but with off by 1 bug re-installed) 1.5.10.3 build 2550.
I dont have complete source for above version. Here source for 1.5.10.2 build 2542 (sourceforge):- https://sourceforge.net/projects/virtualdubmod/files/ Here Fizick fix, not sure if any diff to build 2550:- http://www.mediafire.com/download/9a...src_fizick.zip Executable 1.5.10.3 build 2550 (32 bit):- http://www.mediafire.com/download/3l...10_3_b2550.zip Was not aware of existence of VirtualDub+ (you have a link ?, found some on-line but by unknown sites), this might be just what the doctor ordered. There are versions of VDMod about v1.7.8, (maybe French I think [EDIT: Actually JAP]), but they are broken, off by 1. The VD script editor is quite basic, should work OK with AVS or AVS+ (32 bit), basic text editing, allows insert of trim set, range and frame number (from within VD main), also save & reload script, save & refresh script. Not really much more than that. (changing TAB setting from 8 to 4 might also be nice, real tedious having to reformat tabs to SPACE before and after VDMod use). EDIT: Above "basic text editing", really only normal text entry + cursor keys + delete key + TAB key. There is also some kind of auto comment/uncomment of hilited lines (I could live without that). CTRL/Z Undo CTRL/Y Redo CTRL/P Insert current frame CTRL/R Insert Range CTRL/T Insert Trim with range CTRL/I Import Frameset as Trims (replicate VDub range deletions into script). CTRL/SHIFT/O Insert filename, never used. CTRL/SHIFT/C Insert crop, never used. CTRL/SHIFT/ALT/C Comment selected. CTRL/SHIFT/ALT/U UnComment selected. CTRL/F Find (dont work disabled in menu) F3 Find Next (dont work disabled in menu) F5 Save and reopen at current frame. F7 Save and open. Thats basically it. (Ones I frequently use in BLUE) Quote:
Quote:
I guess if you are a script user rather than developer, then it is less grossly annoying. Quote:
All hail shekh
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 15th June 2016 at 04:09. |
|||
15th June 2016, 04:22 | #10 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 11,019
|
Thanks GMJCZP,
but links are for vdm v1.5.10.2 build 2542 (link to source already given above) but patched to Large Address Aware. and v1.5.10.3 build 2550 executable only (already linked above) but patched to Large Address Aware. I was seeking 1.5.10.3 build 2550 source (ie with Fizick patch in-situ). v1.5.10.2 has broken (off by 1) frame range insertion (huge reason I use vdmod). EDIT: 'off by 1', Avisynth uses trim(StartFrame,EndFrame), VD sort of Trim(StartFrame,EndFramePlusOne) ie Avisynth EndFrame is Inclusive, VD Exclusive.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 15th June 2016 at 04:27. |
15th June 2016, 11:13 | #11 | Link |
Registered User
Join Date: Mar 2015
Posts: 776
|
This is from 2008, VirtualDub-1.7 + VirtualDubMod + patch
https://github.com/chattama/modplus Found it by looking at some videohelp threads. The fixes list (google translated from japanese) looks quite considerable. I am sure I came across another fork of something but don't remember what
__________________
VirtualDub2 |
17th June 2016, 21:46 | #12 | Link |
Registered User
Join Date: Mar 2015
Posts: 776
|
After inspecting the sources, editor related stuff is rather small and simple. Mission possible.
__________________
VirtualDub2 |
21st June 2016, 22:11 | #13 | Link |
Registered User
Join Date: Mar 2015
Posts: 776
|
Need some testing!
(url deleted) Archive contains main executables and script editor plugin for both 32 and x64. I tested it against VapourSynth (I also enabled python parsing). The new script editor is compiled with latest scintilla (text editor component) and its avs parser, therefore some styling changed. I fixed some obvious mismatches. Also I completely dropped "Insert crop" feature: it is too hacky and I am not sure of its purpose. Also I did not bother with hotkey editing. Editor hotkeys are only available as predefined. update: script editor is included with version 11 and up.
__________________
VirtualDub2 Last edited by shekh; 30th June 2016 at 18:21. |
22nd June 2016, 00:03 | #14 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 11,019
|
Oooh lovely. I'll have a bit of a play
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? |
23rd June 2016, 00:54 | #15 | Link | |
Registered User
Join Date: May 2007
Posts: 146
|
@shekh
Thanks - will be testing this over the next week @StainlessS Quote:
|
|
24th June 2016, 04:49 | #16 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 11,019
|
Well amongst other things, when I used RT_FselOpen(), it inserts the filename itself into the script making the fileselector dialog box non functional on subsequent uses of the script.
No idea how AvsPMod does that, but wish it did not. Made quite a few other changes to my scripts too (cant remember what). EDIT: Perhaps wrapping the function call in an Eval would fix that, dont know.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 24th June 2016 at 04:55. |
27th June 2016, 21:13 | #17 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 11,019
|
OK Shekh, I've had a little bit of a play and here some comments.
TAB space of 4 works, GREAT LOVE THAT ! Scrip Editor, Menu/Help/Avisynth Information/ Crashes, maybe because I have a LOT of plugs in my auto plugs directory (AVS standard v2.6). Plugin (32bit only tried) crashes VD if put in VDub v1.10.4 Plugins32. Fizick Fixes do not work, must be non implemented in the source you used. Code:
Avisource("Cabaret.avi") trim(10000,-100) # 100 Frames, frames 0 -> 99 ShowFrameNumber # Go to Frame 20, Press HOME, Go to frame 31 Press END, Press DELETE (deletes frames 20 -> 30 inclusive). # Open Script Editor, # Press CTRL/I, should insert "Trim(0,19) ++ Trim(31,99)" # Actually inserts "Trim(0,20) ++ Trim(31,100)" # NOTE Frame 100 does not exist /* Fizick Fix, AVSViewer.cpp case WM_VDM_SENDFRAMESET: { string buffer; char buf[50]; VDM_FRAMESET *fs = (PVDM_FRAMESET) lParam; //SETTEXTEX st; //st.flags = ST_SELECTION; //st.codepage = CP_ACP; VDM_BASIC_RANGE range; for(int i = 0; i<fs->count; i++) { //range = (fs->ranges + (i*sizeof(VDM_BASIC_RANGE))); range = fs->ranges[i]; // wsprintf(buf, "Trim(%d,%d)", range.from, range.to); // Fixed bug with TRIM position for Avisynth - code changed by Fizick: if (range.from == 0 && range.to == 1) wsprintf(buf, "Trim(%d,%d)", 0, -1); // special case of one very first frame else wsprintf(buf, "Trim(%d,%d)", range.from, range.to - 1); // -1 corrected by Fizick if (i>0) buffer += " ++ "; buffer += buf; } SendMessage(pcd->hwndView, SCI_REPLACESEL, 0, (LPARAM) buffer.c_str()); if (fs->count==0) guiMessageBox(hwnd, IDS_ERR_AVS_NOFRAMESET, IDS_ERR_CAPTION, MB_OK|MB_ICONERROR); delete [] fs->ranges; delete [] fs; } return 0; */ # Send Range CTRL/R, mark 20 -> 31 should insert "20,30" but instead inserts "20,31" # Same for Send Trim CTRL/T, mark 20 -> 31 should insert "Trim(20,30)" but instead inserts "Trim(20,31)" /* case WM_VDM_SENDRANGE: { char buf[50]; VDM_RANGE *range = (PVDM_RANGE) lParam; //SETTEXTEX st; //st.flags = ST_SELECTION; //st.codepage = CP_ACP; if (pcd->scriptType == SCRIPTTYPE_NONE) // wsprintf(buf, "%d-%d", range->range.from, range->range.to); wsprintf(buf, "%d-%d", range->range.from, range->range.to - 1); // -1 corrected by Fizick else // wsprintf(buf, (range->tag)?"Trim(%d,%d)":"%d,%d", range->range.from, range->range.to); // Fixed bug with TRIM position for Avisynth - code changed by Fizick: if (range->range.from == 0 && range->range.to == 1) wsprintf(buf, (range->tag)?"Trim(%d,%d)":"%d,%d", 0, -1);// special case of very first frame else wsprintf(buf, (range->tag)?"Trim(%d,%d)":"%d,%d", range->range.from, range->range.to -1);// -1 corrected by Fizick SendMessage(pcd->hwndView, SCI_REPLACESEL, 0, (LPARAM) &buf); delete [] range; } return 0; */ EDIT: From gui.cpp, perhaps related to Avisynth Information crash Code:
// ******************************************************************* // *** VirtualDubMod *** // *** Tobias Minich, Apr 2003 *** // BEGIN ************************************************************* int guiMessageBox(HWND hwnd, UINT idText, UINT idCaption, UINT uType) { char caption[256]; // char text[1024]; char text[4096]; // increased by Fizick (for Avisynth functions list) bool error = false; // get caption if (LoadString(g_hInst, idCaption, (LPTSTR)caption, sizeof caption) == 0) error = true; // get message body if (LoadString(g_hInst, idText, (LPTSTR)text, sizeof text) == 0) error = true; if (error) { return MessageBox(hwnd, "Can't retrieve message!", "Internal Error", MB_OK); } return MessageBox(hwnd, text, caption, uType); } int guiMessageBoxF(HWND hwnd, UINT idFormat, UINT idCaption, UINT uType, ...) { // char buf[1024]; char buf[40096];// increased by Fizick (for Avisynth functions list) char caption[256]; // char format[1024]; char format[4096];// increased by Fizick (for Avisynth functions list) bool error = false; va_list val; // get caption if (LoadString(g_hInst, idCaption, (LPTSTR)caption, sizeof caption) == 0) error = true; // get format string if (LoadString(g_hInst, idFormat, (LPTSTR)format, sizeof format) == 0) error = true; if (error) { return MessageBox(hwnd, "Can't retrieve message!", "Internal Error", MB_OK); } va_start(val, uType); vsprintf(buf, format, val); va_end(val); return MessageBox(hwnd, buf, caption, uType); }
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 27th June 2016 at 21:50. |
27th June 2016, 21:47 | #18 | Link |
Registered User
Join Date: Mar 2015
Posts: 776
|
There is a lot of lines with "-1 corrected by Fizick" but seems it still needs some cleanup, I will check now.
Btw if you want to play with source I pushed it here: https://sourceforge.net/p/vdfiltermo...i/master/tree/ Looks like "4 tabs" option comes from chattama fixes as I picked his source for porting. Anyway it is a trivial scintilla config command, you can make loads of such changes. There is no point to put it in VDub v1.10.4, this is brand new plugin type. However it is strange that VDub crashes. "Avisynth Information Crashes" Works for me, do you think I can install yours avisynth environment to compare?
__________________
VirtualDub2 |
27th June 2016, 21:54 | #19 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 11,019
|
My Avisynth information normally completely overflows the screen,
RT_Stats alone has in excess of 160 functions in it, probably the reason. Also, see the above edit. I'll check later with (nearly) empty plugs directory, but got to go out soon.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? |
27th June 2016, 22:17 | #20 | Link |
Registered User
Join Date: Mar 2015
Posts: 776
|
What is the issue with this:
Code:
if (range->range.from == 0 && range->range.to == 1) wsprintf(buf, (range->tag)?"Trim(%d,%d)":"%d,%d", 0, -1);// special case of very first frame Updated Fixed Trim range for Avisynth (no idea for "decomb") Fixed VDub compatibility Fixed Avisynth info crash Added edit->goto command (frame/line) Reloading in filter preview now works Concerning Avisynth information, it is probably better to not show "external commands" at all? I can understand one would want to see Avisynth name, version, and probably loaded path. But when commands are several screens it is useless to see them in the same place.
__________________
VirtualDub2 Last edited by shekh; 30th June 2016 at 18:22. |
Thread Tools | Search this Thread |
Display Modes | |
|
|