|
|
| shekh |
| Posted: Mar 7 2015, 07:31 PM |
 |
|
Advanced Member
  
Group: Members
Posts: 89
Member No.: 37903
Joined: 21-April 14

|
https://sourceforge.net/p/vdfiltermod/wiki/Home/
The mod is not downloadable yet but I think some visibility wont hurt.
I am making some plugins and stuck in API limits and other boring issues, so I decided to fork VirtualDub, extend API, and even make it public so maybe some other will want to use it too. Ideally, some changes may be ported to official VirtualDub. Phaeron, I hope you are watching.
Some code changes are already uploaded to GitHub, but they are not "final".
Also I uploaded some plugins there. |
 |
| shekh |
| Posted: Mar 7 2015, 08:08 PM |
 |
|
Advanced Member
  
Group: Members
Posts: 89
Member No.: 37903
Joined: 21-April 14

|
Besides trivial changes, I have proof of concept for new format pipeline, XRGB64. It seamlessly accepts high bit depth formats from ffmpeg and works with plugins. Dont have idea yet whether it is possible to output via VFW, but maybe it will work with external encoder interface.
Some design decisions: XRGB64 is natural and efficient layout for SSE2 code. Order of components is the same as XRGB8888, so up/down conversion is trivial. Integer is still more optimal than FP32 and takes less space. Unsigned. Dont know what signed format is good for in image processing.
All fixed point variations I fit into single format with help of extra bitmap attributes: it seems not a big deal to account for it in a filter, presumably less trouble than multiple explicit format mutations like 0.16, 2.14, etc. Same for linear/non-linear mapping, alpha option, and maybe something else - all passed as extra bitmap attributes.
|
 |
| raffriff42 |
| Posted: Mar 8 2015, 10:36 AM |
 |
|

Advanced Member
  
Group: Members
Posts: 384
Member No.: 35081
Joined: 25-June 12

|
A worthy goal. Only, don't invent a new format - there are too many already. I like the idea of OpenEXR (basically, 16-bit float) as it has lots of industry support and open source libraries. But I'm not qualified to say what's best, really.
Whatever internal format you use, you can interface with VfW using Avisynth's stack16 format. |
 |
| shekh |
| Posted: Mar 8 2015, 02:32 PM |
 |
|
Advanced Member
  
Group: Members
Posts: 89
Member No.: 37903
Joined: 21-April 14

|
I appreciate all input, especially on possible connection with existing code - potential plugins. Anybody wants to create/update plugins for which format? Btw somebody definitely wrote fp32 plugins in the past but I dont see any trace, other than VirtualDub has support for it in UberBlitter.
Avisynth stack16 as I see it is pointless, but maybe it can make happy some avisynth users.
16-bit float I dont like for several reasons: it has very little extra precision compared to 8 bit integer, and it is useless for plugin pipeline because there is no native support in CPU. In contrast, I believe existing 8 bit plugin can be updated to 16 bit with minimum effort similar performance (I need to check this theory soon 
I inspected all ffmpeg formats and they are all integer. All cineform formats are integer. Magicyuv, utvideo, h264, h265 have deep color integer formats. So it seems fine. All efficiently expand to xrgb64 (is this b64a? in worst case needs simple swizzling), in fact this is the only format that seems more or less standard for everything. |
 |
| shekh |
| Posted: Mar 11 2015, 08:44 AM |
 |
|
Advanced Member
  
Group: Members
Posts: 89
Member No.: 37903
Joined: 21-April 14

|
small demo (different subject, not 16 bpc)
http://youtu.be/3PHcVBgqoHY
This filter can manage and crossfade worker filters (regular VD filters). Can work in normal VD too, but extended API allows for much smoother UI. |
 |