Would it be possible, to have in the next release (no hurry, take your time), the two following things :
First, change the default value alignment (and so also the modulo pitch value) from
16 to
64.
And also, change this :
Code:
/// Filter requests 16 byte alignment for source and destination buffers. This guarantees that:
///
/// - data and pitch fields are multiples of 16 bytes (aligned)
/// - an integral number of 16 byte vectors may be read, even if the last vector includes
/// some bytes beyond the end of the scanline (their values are undefined)
/// - an integral number of 16 byte vectors may be written, even if the last vector includes
/// some bytes beyong the end of the scanline (their values are ignored)
///
FILTERPARAM_ALIGN_SCANLINES = 0x00000008L,
to this :
Code:
/// Filter requests 64 byte alignment for source and destination buffers. This guarantees that:
///
/// - data and pitch fields are multiples of 64 bytes (aligned)
/// - an integral number of 64 byte vectors may be read, even if the last vector includes
/// some bytes beyond the end of the scanline (their values are undefined)
/// - an integral number of 64 byte vectors may be written, even if the last vector includes
/// some bytes beyong the end of the scanline (their values are ignored)
///
FILTERPARAM_ALIGN_SCANLINES = 0x00000008L,
As the "why 64" ? Just to see for the future, and don't have to touch it again for a long time.
The second change, would be to add CPU mode.
The first step would just be to add these :
Code:
// AVS+
CPUF_AVX2 = 0x2000, // Haswell
CPUF_FMA3 = 0x4000,
CPUF_F16C = 0x8000,
CPUF_MOVBE = 0x10000, // Big Endian move
CPUF_POPCNT = 0x20000,
CPUF_AES = 0x40000,
CPUF_FMA4 = 0x80000,
CPUF_AVX512F = 0x100000, // AVX-512 Foundation.
CPUF_AVX512DQ = 0x200000, // AVX-512 DQ (Double/Quad granular) Instructions
CPUF_AVX512PF = 0x400000, // AVX-512 Prefetch
CPUF_AVX512ER = 0x800000, // AVX-512 Exponential and Reciprocal
CPUF_AVX512CD = 0x1000000, // AVX-512 Conflict Detection
CPUF_AVX512BW = 0x2000000, // AVX-512 BW (Byte/Word granular) Instructions
CPUF_AVX512VL = 0x4000000, // AVX-512 VL (128/256 Vector Length) Extensions
CPUF_AVX512IFMA = 0x8000000, // AVX-512 IFMA integer 52 bit
CPUF_AVX512VBMI = 0x10000000,// AVX-512 VBMI
to made them avaible for plugin.
I don't know how it's made within VDub, my humble suggestion would be to take a look at the avs+
cpuid.cpp code, it's now "very easy"...
The second step, could be done later in a second time, would be to add these in the "Option->Preference->CPU" menu.
I think these improvements could be very usefull in your spirit of upgrade or continue to make live VirtualDub.