View Full Version : fmtconv: resize, bitdepth and colorspace conversions
Pages :
1
[
2]
3
4
5
6
7
8
cretindesalpes
10th December 2012, 08:38
Thanks for reporting it. Copy/paste is the most evil invention ever.
sl1pkn07
19th December 2012, 18:07
howto build in linux? (to linux)
greettings
jackoneill
19th December 2012, 19:53
howto build in linux? (to linux)
greettings
g++ -O3 -shared -msse2 -fPIC -o libfmtconv.so AvstpWrapper.cpp main.cpp fmtc/*.cpp fstb/*.cpp vsutl/*.cpp -I.
Add -march=your_cpu_here if you get "undefined symbol __sync_val_compare_and_swap_16" or something like that.
clang from svn should work as well.
sl1pkn07
19th December 2012, 20:59
thanks man.
kolak
4th January 2013, 23:18
kolak:
For interlaced resizing, you have to separate the fields first. Then the relative field position is automatically taken into account when resizing.
fmtconv r4 (http://forum.doom9.org/showthread.php?t=166504):
Added a documentation.
Filters now write some frame properties when known.
Fixed the code so it can be compiled on Linux. Thanks to Jackoneill/Nodame for testing.
bitdepth: no need to specify any bitdepth or colorspace (for simple range conversions).
matrix: Added SSE2 implementation for integer processing.
matrix: Allows the destination bitdepth to be higher than the input (added the bits parameter).
matrix: col_fam completes csp instead of replacing it.
resample: Added interlacedd to specify if output is interlaced (allows simple bobbing).
resample: Added tff and tffd to specify field parity.
resample: Added scale, scaleh and scalev for easier magnification.
resample: Added a two-digit mode to css.
resample: Fixed a typo preventing to select 4:1:1 chroma subsampling.
Added nativetostack16.
Is random noise coming? Small amount after dithering always helps :)
kolak
5th January 2013, 20:58
Another thing:
just had a case where I had to convert interlaced 10bit 422 to 8bit 420 for QTGMC processing- it needs 5 additional lines to achieve. Even if it's not very complicated than it's way "to long"- it should be done with one (or 2) line. Can't we have most of the processing included in one command?
cretindesalpes
18th August 2013, 21:52
fmtconv r5 (http://forum.doom9.org/showthread.php?t=166504):
Added 12-bit support for all the functions.
Added matrix2020cl to convert between linear RGB and Y’Cb’Cr’ colorspaces using the BT.2020 constant luminance matrix.
matrix: Added the BT.2020 matrix, non constant luminance mode only.
matrix: Added single-plane output with the singleout parameter.
resample: allows x:y:z form for specifying the colorspace subsampling css.
resample: added SSE2 integer calculations for slight speed improvement. Activated by default, use flt=1 to compute everything in float (previous operating mode).
Kolak:
I’ll add simple wrapping functions when the library is stabilized.
Reel.Deel
18th August 2013, 22:06
cretindesalpes, the binary is still the same one as r4.
Edit:
Thanks for the update! :)
cretindesalpes
18th August 2013, 22:17
Doh! Sorry. I replaced the .dll file. Just download again ftmconv-r5.zip.
cretindesalpes
24th August 2013, 09:58
My bad. fmtconv r6 (http://forum.doom9.org/showthread.php?t=166504) should fix it.
cretindesalpes
29th October 2013, 22:53
Got it. The sum of the integer coefficients was sometimes off by 1 or 2 units. The bug is now fixed and the change will be available in the next release.
Mystery Keeper
18th November 2013, 18:55
Wouldn't build until I included <algorithm> in all sources with min/max.
Wouldn't build with MinGW at all.
Are_
18th November 2013, 19:40
It builds fine with clang/gcc http://forum.doom9.org/showpost.php?p=1606550&postcount=53
cretindesalpes
27th November 2013, 17:51
fmtconv r7 (http://ldesoras.free.fr/src/vs/fmtconv-r7.zip): Warning—I left an important bug in the resizer, you’d better wait for the next version.
64-bit version for Windows
resample: A few optimizations for special cases.
resample: fixed the coefficients used in integer resizing, whose sum was sometimes off by a few units.
Should compile with MinGW
Mystery Keeper
29th November 2013, 02:12
This script
from __future__ import print_function
vapoursyth_plugins_path = 'E:\\vapoursynth-plugins\\x64\\'
import vapoursynth as vs
import sys
sys.path.append(vapoursyth_plugins_path + 'E:\\vapoursynth-plugins\\py\\')
core = vs.get_core(threads=8)
core.set_max_cache_size(16000)
import os
for filename in os.listdir(vapoursyth_plugins_path):
if filename[-4:] != '.dll':
continue
try:
core.std.LoadPlugin(vapoursyth_plugins_path + filename)
except Exception as e:
print("Error: ", e, end='\n', file=sys.stderr)
core.std.LoadPlugin(path = 'D:\\Programming\\TempLinearApproximate-VapourSynth\\build\\release-x64\\templinearapproximate.dll')
#fun = core.list_functions()
#print(fun, end='\n', file=sys.stderr)
d2vfile = 'F:\\Video to Process\\Riaru Onigokko 2\\VTS_01_1.d2v'
ret = core.d2v.Source(input=d2vfile)
ret = core.vivtc.VFM(ret, order=1, mode=5)
ret = core.vivtc.VDecimate(ret)
def tvToPC(input):
c = core.fmtc.resample (clip=input, css="444")
c = core.fmtc.matrix (clip=c, mats="601", matd="709")
c = core.fmtc.resample (clip=c, css="420")
c = core.fmtc.bitdepth (clip=c, bits=8)
return c
z = ret
#z = tvToPC(z)
ret = tvToPC(ret)
diff = core.std.MakeDiff(z, ret)
line1 = core.std.StackHorizontal([z, ret])
line2 = core.std.StackHorizontal([diff, ret])
compare = core.std.StackVertical([line1, line2])
compare.set_output()
gives this output
http://s019.radikal.ru/i620/1311/1a/c9c8845119af.png
I've also managed to crash VirtualDub with this crash report (http://paste.org.ru/?jgrt8q).
cretindesalpes
30th November 2013, 12:15
ftmconv r8 (http://forum.doom9.org/showthread.php?t=166504):
resample: fixed bugs introduced in r7.
Mystery Keeper
30th November 2013, 13:06
'Tis fixed. Thank you!
lansing
25th February 2014, 04:53
I wanted to convert color space from YV12 to RGB to load some Virtualdub filters, and I'm getting the error "VFW module doesn't support RGB24 output". How should I do this?
ret = core.fmtc.resample (ret, css='444')
ret = core.fmtc.matrix (ret, mats="709", col_fam=vs.RGB)
ret = core.fmtc.bitdepth (ret, bits=8)
lansing
25th February 2014, 16:48
I guess it only accepts RGBs in interleaved format
which one are you referring to? fmtconv or virtualdub?
jackoneill
15th May 2014, 08:21
Is the internal threading of any use when VapourSynth runs filters in parallel? Or is it simply a leftover from Dither?
cretindesalpes
21st May 2014, 08:07
Yes it is more or less a leftover from Dither, because I want to keep the same base code to backport it from fmtconv to Dither later. It should be harmless anyway.
alexxdls
2nd August 2014, 14:12
import vapoursynth as vs
core = vs.get_core()
import os
ext = '.png'
dir = r'PNG/'
srcs = [dir + src for src in os.listdir(dir) if src.endswith(ext)]
v = core.imgr.Read(srcs,24,1)
v = core.fmtc.matrix(v, mat="709", col_fam=vs.YUV, bits=16, fulls=1, fulld=1)
v = core.fmtc.bitdepth(v, bits=10, dmode=1)
enable_v210=True
v.set_output()Failed to evaluate the script:
Python exception: matrix: only constant pixel formats are supported.
Traceback (most recent call last):
File "vapoursynth.pyx", line 1148, in vapoursynth.vpy_evaluateScript (src\cython\vapoursynth.c:18441)
File "D:/TRAILERS/DCP/MOCKINGJAY-PT1_TLR-1_S_RU-XX_RU_51_2K_LION_20140729_DLA_IOP_OV/myVapourScript.vpy", line 8, in <module>
v = core.fmtc.matrix(v, mat="709", col_fam=vs.YUV, bits=16, fulls=1, fulld=1)
File "vapoursynth.pyx", line 1071, in vapoursynth.Function.__call__ (src\cython\vapoursynth.c:17443)
vapoursynth.Error: matrix: only constant pixel formats are supported.
MonoS
12th February 2015, 14:27
In the documentation of dither for avs there is a very handy quick explanation of what a dithering algo is good for.
I used to use the stucki error diffusion because seemed the best of the list.
In the vs version you added two new algos: Sierra-2-4A error diffusion and Ostromoukhov error diffusion.
Can you please give me a quick explanation like the ones on the avs doc??
cretindesalpes
12th February 2015, 16:28
Sierra-2-4A is comparable to Floyd-Steinberg, but slightly faster.
Ostromoukhov helps fighting the artefacts seen on Floyd-Steinberg, giving more homogenous flat areas. See also: A Simple and Efficient Error-Diffusion Algorithm (http://www.iro.umontreal.ca/~ostrom/publications/publications_abstracts.html#SIGGRAPH01_VarcoeffED)
MonoS
14th February 2015, 16:55
Ok thanks, i read the article [even i didn't understood it very well], i even tried to make a 2bit image to compare stucki and ostromoukhov, but vs doesn't allow me to output 2bit image afaik.
Then i tried to see the difference between the different ED methods and i was unable to see any difference in the LSB, but very little in the MSB [on a 16bit image decomposed using nativetostack16, with 8bit image i didn't saw any difference at all].
Probably i made my tests in an erroneous way, so i'd like to know your opinion if the difference are really so unnoticeable or very little differences can make an image looks better
I used this script for my tests and the first two exr frames from BBB
src = core.imwri.Read("C:/Users/MonoS/Desktop/%04d.exr", firstnum=1).fmtc.bitdepth(flt=1)
yuv = core.fmtc.matrix(src, mats="RGB", matd="709", bits=32, col_fam=vs.YUV)
core.std.MakeDiff(core.fmtc.bitdepth(yuv, flt=0, bits=16, dmode=7, fulls=False, fulld=False).fmtc.nativetostack16(),\
core.fmtc.bitdepth(yuv, flt=0, bits=16, dmode=4, fulls=False, fulld=False).fmtc.nativetostack16()).set_output()
cretindesalpes
14th February 2015, 18:19
You are trying to dither floating point data to 16 bits, the difference between dithering methods will be insignificant. Actually I don’t even bother dithering when converting down to 16 bits. If you want to see the difference, dither to 8 bits. And even at 8 bits, it will be quite hard to spot any quality difference. Only Bayer dithering can really stand out on low-res pictures because of its specific pattern.
jackoneill
14th February 2015, 19:16
Try something like this:
import vapoursynth as vs
c = vs.get_core()
c.std.LoadPlugin(".libs/vszimg.so")
shades = []
fmt = c.register_format(color_family=vs.RGB, sample_type=vs.INTEGER, bits_per_sample=14, subsampling_w=0, subsampling_h=0)
for i in range(1200):
shades.append(c.std.BlankClip(width=1, height=120, format=fmt.id, color=[i] * 3, length=1))
src = c.std.StackHorizontal(shades)
none = c.z.Depth(src, depth=8, dither="none").text.Text("none")
ordered = c.z.Depth(src, depth=8, dither="ordered").text.Text("ordered")
random = c.z.Depth(src, depth=8, dither="random").text.Text("random")
ed = c.z.Depth(src, depth=8, dither="error_diffusion").text.Text("error diffusion")
src = c.std.StackVertical([none, ordered, random, ed])
src.set_output()
With some minor changes, you can replace z.Depth with fmtc.bitdepth. The differences between the dithering methods will be visible.
MonoS
14th February 2015, 19:19
You are trying to dither floating point data to 16 bits, the difference between dithering methods will be insignificant. Actually I don’t even bother dithering when converting down to 16 bits. If you want to see the difference, dither to 8 bits. And even at 8 bits, it will be quite hard to spot any quality difference. Only Bayer dithering can really stand out on low-res pictures because of its specific pattern.
At least with BBB i saw no difference at all using 8bit, so i preferred comparing the 16bit version [redoing it using hist.Luma i can see some differences].
So in the end, if i understood correctly, it's better to use a compression resilient algo if i really need to dither down and only for 8bit output [but i usually pipe the 16bit video directly to x264/5], at 16bit differences are almost unnoticeable and i can use the one i like most.
If so, why bother implementing 7 different algos??
MonoS
14th February 2015, 19:50
Thanks jackoneill, i was able to see some difference between the different algos, my favorite remain the stucki ED, it seems pretty similar to Ostromoukhov and Sierra 2-4A, but stucki seemed to be a bit more random in adding dithering and maybe is a plus, the other ones seemed to generate some artifact [like the worm like "artifact" of Atkinson].
Are my observation right in some sense??
metyo
7th March 2015, 14:58
Hi everybody,
I made a fresh install to try the vapoursynth plus HAvsFunc.
the compiling from git was success.
When i try to use the fmtc functions it gives Assertion failed:
vspipe --y4m zod.vpy - | ffplay -i pipe:
-----
vspipe: ./conc/Interlocked.hpp:181: static int64_t conc::Interlocked::cas(volatile int64_t&, int64_t, int64_t): Assertion `is_ptr_aligned_nz (&dest)' failed
----
archlinux 32bit, ubuntu 32bit as well
my script is simple :
-----------------------------------
import vapoursynth as vs
core = vs.get_core()
c = core.std.BlankClip(width=100, height=200, format=vs.YUV420P8, color=[64, 64, 64])
c = core.fmtc.resample(c, w=100, h=100)
c.set_output()
------------------------------
when I leave the original size :
c = core.fmtc.resample(c, w=100, h=200)
I see the green box
what can I miss ?
thanx -- metyo
/* EDIT : AchLinux x86_64 , packages from AUR everything works ok ! thank sl1pkn07 for maintaning */
cretindesalpes
6th May 2015, 19:33
fmtconv r9 (http://forum.doom9.org/showthread.php?t=166504):
Added the transfer function.
resample: Most kernel-related parameters are now arrays, allowing to specify different values for each plane.
resample: Allows horizontal and vertical values for taps and invkstap.
resample: AVX2 optimizations.
matrix: Tries to deduce the target colorspace from simple matrix settings
matrix: Sets the new _Matrix frame property
matrix: AVX2 optimizations.
bitdepth: SSE2 optimizations for the “fast” algorithm.
sl1pkn07
6th May 2015, 19:58
fail build on linux (gcc 4.9.x)
http://sl1pkn07.wtf/paste/view/bcfcec5a
also tested with -std=c++11: same resoult
greetings
getting "vapoursynth.Error: Core only supports API R3.1 but the loaded plugin requires API R3.2;" message, then trying to load fmtconv-r9 [log (http://pastebin.com/raw.php?i=jJ8SGqZD)]
Myrsloik
6th May 2015, 20:45
getting "vapoursynth.Error: Core only supports API R3.1 but the loaded plugin requires API R3.2;" message, then trying to load fmtconv-r9 [log (http://pastebin.com/raw.php?i=jJ8SGqZD)]
I'll post a new VapourSynth build soon that it works with.
cretindesalpes
6th May 2015, 20:55
Uh I didn’t realized that I used an unreleased VS version, sorry for that…
sl1pkn07:
Try to compile the *_avx.cpp and *_avx2.cpp files with the -mavx2 option.
I think you should #include <cstddef> in ToolsAvx2.hpp too.
However for the “error: inlining failed in call to always_inline (…) target specific option mismatch”, I really don’t know what to do. I have the same kind of errors with G++ on Cygwin64, but on different intrinsics (_mm_min_epi32 and _mm_max_epi32).
sl1pkn07
6th May 2015, 21:02
and if my CPU not support avx2 instrucctions? (Westmere-EP)
greetings
cretindesalpes
6th May 2015, 21:06
This shouldn’t be a problem. Instruction sets are checked at runtime before mapping the functions.
EDIT to reply to your edit: Add
#include <cstddef>
to fstb/ToolsAvx2.hpp and it should compile better.
EDIT2: beware, the -mavx2 should not be added to all files, only the avx ones.
sl1pkn07
6th May 2015, 21:23
doh. sorry my edit :( (the 'sed' is applied bad)
EDIT2: beware, the -mavx2 should not be added to all files, only the avx ones.
how get this?, my ""makefile"" is:
all:
g++ -shared ${CXXFLAGS} -msse2 -mavx2 -fPIC -std=c++11 -o lib${_plug}.so AvstpWrapper.cpp main.cpp fmtcl/*.cpp fmtc/*.cpp fstb/*.cpp vsutl/*.cpp -I. $(pkg-config --cflags vapoursynth)
greetings
EDIT: like this? http://sl1pkn07.wtf/paste/view/33b6cfc7
cretindesalpes
6th May 2015, 22:45
fmtconv r10 (http://forum.doom9.org/showthread.php?t=166504) should fix these compilation problems and allow using previous Vapoursynth versions.
sl1pkn07: You have to compile each file (or set of files) separately, then link everything. I’m not good at writing makefiles because of the dependencies to maintain, or you need makefile generators. Anyway when I want to test the G++ compilation on Cygwin, I use a script like this (http://sl1pkn07.wtf/paste/view/9b437617).
sl1pkn07
6th May 2015, 23:00
oh. thanks! (sorry for all, but im not a ceder, I only a user)
now build ok
greetings
EDIT: fail load
import vapoursynth as vs
core = vs.get_core()
video = core.lsmas.LWLibavSource("00000.MTS")
video = core.fmtc.resample(video, 1280, 720)
video.set_output()
└───╼ vspipe --info 00000.vpy -
vspipe: symbol lookup error: vspipe: symbol lookup error: /usr/lib/vapoursynth/libfmtconv.so: undefined symbol: _ZN4fstb18conv_to_lower_caseERSs
EDIT2: edit output with 8ca84c (https://github.com/vapoursynth/vapoursynth/commit/8ca84c1bd25aa98ad183ef47deae56171685fd4b) VS
cretindesalpes
7th May 2015, 08:12
sl1pkn07: Some files located in different directories have the same name, hence generating the same object files. The compiler will overwrite them if you put all the object files in the same directory with their default name. You should put them in different directories or rename the object files.
Also, I fixed an SSE2 bug in fmtconv r11 (http://forum.doom9.org/showthread.php?t=166504).
EDIT: I previously tried to include a build tool but had to give up due to complexity and lack of motivation (I tried gyp and autotools). If someone has an idea how to do it without generating a mess in the source tree and the VC++ projects, easy to update and to test on Windows, feel free to help.
feisty2
7th May 2015, 08:44
how about adding RGBToXYZ and XYZToRGB to do a gamut (primaries) convert?
cretindesalpes
7th May 2015, 13:46
feisty2: Gamut conversion is planned.
feisty2
7th May 2015, 14:18
feisty2: Gamut conversion is planned.
music to my ears :)
sl1pkn07
7th May 2015, 14:44
sl1pkn07: Some files located in different directories have the same name, hence generating the same object files. The compiler will overwrite them if you put all the object files in the same directory with their default name. You should put them in different directories or rename the object files.
oh. :S thanks again for the info
now build and fix my issue
greetings
foxyshadis
7th May 2015, 21:38
EDIT: I previously tried to include a build tool but had to give up due to complexity and lack of motivation (I tried gyp and autotools). If someone has an idea how to do it without generating a mess in the source tree and the VC++ projects, easy to update and to test on Windows, feel free to help.
x265 uses CMake, and it's turned out to be the easiest damn project/makefile generator I've ever used. As complex and as many build options as x265 has, the CMake files are still small and readable; for you it should be as simple as keeping an up-to-date list of new source files.
cretindesalpes
8th May 2015, 07:56
HolyWu: thanks for the report. fmtconv r12 (http://forum.doom9.org/showthread.php?t=166504) fixes the crash.
foxyshadis: thanks for the suggestion. I’ll check CMake too.
I can't compile the following files on Linux: main.cpp AvstpFinder.cpp AvstpWrapper.cpp fmtc/Convert.cpp fmtc/Resample.cpp fmtc/Transfer.cpp fmtcl/FilterResize.cpp fmtcl/Scaler.cpp
Was anyone able to build this plugin on Linux yet?
https://github.com/dubhater/fmtconv with autotools or you can use this cheap script compile.sh (https://paste.kde.org/pzaox1x6n)
Notice that repo is not up to date, so you would prefer to just grab the build directory from there.
sl1pkn07
13th May 2015, 14:41
all:
g++ -c -fPIC -std=c++11 -mavx2 -o fmtc/Matrix_avx.o fmtc/Matrix_avx.cpp
g++ -c -fPIC -std=c++11 -mavx2 -o fmtc/Transfer_avx2.o fmtc/Transfer_avx2.cpp
g++ -c -fPIC -std=c++11 -mavx2 -o fmtcl/BitBltConv_avx2.o fmtcl/BitBltConv_avx2.cpp
g++ -c -fPIC -std=c++11 -mavx2 -o fmtcl/Scaler_avx2.o fmtcl/Scaler_avx2.cpp
g++ -c -fPIC -std=c++11 -mavx2 -o fstb/ToolsAvx2.o fstb/ToolsAvx2.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtc/Bitdepth.o fmtc/Bitdepth.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtc/ConvStep.o fmtc/ConvStep.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtc/Convert.o fmtc/Convert.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtc/Matrix.o fmtc/Matrix.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtc/Matrix2020CL.o fmtc/Matrix2020CL.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtc/NativeToStack16.o fmtc/NativeToStack16.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtc/Resample.o fmtc/Resample.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtc/Stack16ToNative.o fmtc/Stack16ToNative.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtc/Transfer.o fmtc/Transfer.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/BitBltConv.o fmtcl/BitBltConv.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ChromaPlacement.o fmtcl/ChromaPlacement.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/CoefArrInt.o fmtcl/CoefArrInt.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirBlackman.o fmtcl/ContFirBlackman.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirBlackmanMinLobe.o fmtcl/ContFirBlackmanMinLobe.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirCubic.o fmtcl/ContFirCubic.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirFromDiscrete.o fmtcl/ContFirFromDiscrete.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirGauss.o fmtcl/ContFirGauss.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirInterface.o fmtcl/ContFirInterface.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirLanczos.o fmtcl/ContFirLanczos.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirLinear.o fmtcl/ContFirLinear.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirRect.o fmtcl/ContFirRect.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirSinc.o fmtcl/ContFirSinc.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirSnh.o fmtcl/ContFirSnh.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirSpline.o fmtcl/ContFirSpline.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirSpline16.o fmtcl/ContFirSpline16.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirSpline36.o fmtcl/ContFirSpline36.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ContFirSpline64.o fmtcl/ContFirSpline64.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/DiscreteFirCustom.o fmtcl/DiscreteFirCustom.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/DiscreteFirInterface.o fmtcl/DiscreteFirInterface.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ErrDifBuf.o fmtcl/ErrDifBuf.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ErrDifBufFactory.o fmtcl/ErrDifBufFactory.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/FilterResize.o fmtcl/FilterResize.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/KernelData.o fmtcl/KernelData.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ResampleSpecPlane.o fmtcl/ResampleSpecPlane.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ResizeData.o fmtcl/ResizeData.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/ResizeDataFactory.o fmtcl/ResizeDataFactory.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fmtcl/Scaler.o fmtcl/Scaler.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fstb/CpuId.o fstb/CpuId.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fstb/ToolsSse2.o fstb/ToolsSse2.cpp
g++ -c -fPIC -std=c++11 -msse2 -o fstb/fnc.o fstb/fnc.cpp
g++ -c -fPIC -std=c++11 -msse2 -o vsutl/FilterBase.o vsutl/FilterBase.cpp
g++ -c -fPIC -std=c++11 -msse2 -o vsutl/PlaneProcCbInterface.o vsutl/PlaneProcCbInterface.cpp
g++ -c -fPIC -std=c++11 -msse2 -o vsutl/PlaneProcessor.o vsutl/PlaneProcessor.cpp
g++ -c -fPIC -std=c++11 -msse2 -o vsutl/fnc.o vsutl/fnc.cpp
g++ -c -fPIC -std=c++11 -msse2 -o AvstpWrapper.o AvstpWrapper.cpp
g++ -c -fPIC -std=c++11 -msse2 -o main.o main.cpp
g++ -shared -fPIC -std=c++11 -o libfmtconv.so fmtc/*.o fmtcl/*.o fstb/*.o vsutl/*.o *.o "
save this with name 'Makefile' in the 'src' dir and type 'make' in console
waiting to merge dubhater branch to mirsloik branch (or release with "stable" tarball)
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.