Building ffmpeg with opencl

Questions that occur when trying to compile FFmpeg.
hydra3333
Posts: 201
Joined: Sun Apr 28, 2013 1:03 pm
Contact:

Re: Building ffmpeg with opencl

Post by hydra3333 » Sat Jan 14, 2017 9:49 am

Hello Ajaja, a linux newbie here.

You seem to have got something to work, hopefully it runs under windows, by the looks of the ffmpeg outputs you posted ?

I saw the gendef and dlltool statements you posted here
viewtopic.php?f=10&t=1284&start=10#p6199
which operate on copies of opencl.dll from [ c:\Windows\System32\OpenCL.dll and possibly c:\Windows\Syswow64\OpenCL.dll ] ?
Under a Winx64 o/s, would that be
- c:\Windows\System32\OpenCL.dll for 64 bit ?
- c:\Windows\Syswow64\OpenCL.dll for 32 bit ?

edit: of intertest, on Win10x64 with 64bit nvidia drivers installed c:\Windows\System32\OpenCL.dll is quite large and c:\Windows\Syswow64\OpenCL.dll is quite small (which leads one to wonder if the 32bit DLL is OK to use).

Per this post
viewtopic.php?f=10&t=1284&start=10#p6199
where should the library/header file(s) be put in preparation for 32bit and 64bit builds of ffmpeg ?
and ... are you able to post additional parts of your ffmpeg build script ? Particularly
- any extra flags on the ffmpeg configure eg --enable-opencl
- sets extra dependency flags in addition to the ones already used to build ffmpeg eg
--extra-cflags=-I???
--extra-ldflags=-L???
--extra-libs=-l???
etc

Your info would save a newbie (and probably some others) a fair bit of heartache :)

For posterity, these links seem relevant
viewtopic.php?f=7&t=2918
viewtopic.php?t=1787#p6221
viewtopic.php?f=10&t=1284

hydra3333
Posts: 201
Joined: Sun Apr 28, 2013 1:03 pm
Contact:

Re: Building ffmpeg with opencl

Post by hydra3333 » Sun Jan 15, 2017 2:41 pm

Well, it built with a slightly modified version of rdp's build script (and 2 unavoidable manual file-copy steps) without crashing.

It's 1 am now, so testing will have to wait until tomorrow ...

If it doesn't crash and the ffmpeg unsharp video filter works with opencl=1 at the same time as nvenc, I'll post the hacked script.
RDP's script is at https://github.com/rdp/ffmpeg-windows-build-helpers
Last edited by hydra3333 on Mon Jan 16, 2017 1:04 am, edited 1 time in total.

hydra3333
Posts: 201
Joined: Sun Apr 28, 2013 1:03 pm
Contact:

Re: Building ffmpeg with opencl

Post by hydra3333 » Mon Jan 16, 2017 1:03 am

Well, OK, at least the built-with-opencl ffmpeg x64 .exe didn't crash.
However using opencl in "unsharp mask" made near as anything no difference to encode speeds on an i3820/nvidia-750Ti.

As a linux newbie, it took me a bit of searching and trial and error to find out what to do and what the various commands meant and where to stick the .h and .a files.
So, for posterity and people to ciriticise and improve, here's how the opencl version was built.
(It is *all* other people's work, from posts in this forum and from other websites. Also, it's a test-bed hack, not intended for useful ongoing use).

1. we need to enable building of gendef as a part of the mingw build.
As at 2017.01.15, this was the change in that build part of rdp's great script
32bit:

Code: Select all

	  # ---------- 2017.01.15 for opencl build testing - start
      #nice ./$zeranoe_script_name $zeranoe_script_options --build-type=win32 || exit 1
      nice ./$zeranoe_script_name $zeranoe_script_options --build-type=win32 --enable-gendef || exit 1
	  # ---------- 2017.01.15 for opencl build testing - end
64-bit:

Code: Select all

	  # ---------- 2017.01.15 for opencl build testing - start
      #nice ./$zeranoe_script_name $zeranoe_script_options --build-type=win64 || exit 1 
      nice ./$zeranoe_script_name $zeranoe_script_options --build-type=win64 --enable-gendef || exit 1 
	  # ---------- 2017.01.15 for opencl build testing - end
2.add --enable-opencl to the config parameters a bit like this
As at 2017.01.15, this was the change in that config part of rdp's great script

Code: Select all

  if [[ "$non_free" = "y" ]]; then
    config_options="$config_options --enable-nonfree --enable-libfdk-aac " 
    # libfaac deemed too poor quality and becomes the default if included -- add it in and uncomment the build_faac line to include it, if anybody ever wants it... 
    # To use fdk-aac in VLC, we need to change FFMPEG's default (aac), but I haven't found how to do that... So I disabled it. This could be an new option for the script? (was --disable-decoder=aac )
    # other possible options: --enable-openssl [unneeded since we use gnutls] 
    #  apply_patch https://raw.githubusercontent.com/rdp/ffmpeg-windows-build-helpers/master/patches/nvresize2.patch "-p1" # uncomment if you want to test nvresize filter [et al] http://ffmpeg.org/pipermail/ffmpeg-devel/2015-November/182781.html patch worked with 7ab37cae34b3845
  fi
  # ---------- 2017.01.15 for opencl build testing - start
  # add the opencl commandline switch --enable-opencl for "the real kahuna" and hope for the best
  if [[ $enable_opencl == 'y' ]]; then
    config_options="$config_options --enable-opencl"
  fi
  # ---------- 2017.01.15 for opencl build testing - end
  config_options="$config_options --enable-runtime-cpudetect" # not sure what this even does but this is the most compatible

3. add a flag whether to built with opencl or not
As at 2017.01.15, this was the change in that part of rdp's great script

Code: Select all

build_ismindex=n
enable_gpl=y
# ---------- 2017.01.15 for opencl build testing - start
# just for this hack test script, always force a yes without asking
# if it works, maybe rdp could turn it into something more general and useful later
enable_opencl=y
# ---------- 2017.01.15 for opencl build testing - end

# parse command line parameters, if any
while true; do
4. prepare the additional files needed to build with opencl and copy them the the right folders.
In particular, run gendef over the correct windows OpenCL dll and then dlltool over the resulting .def file to produce a .a file.
Note 1: it appears that only opencl 1.2 is supported in ffmpeg
Note 2: in a win10x64 system with x64 nvidia drivers installed, the size of the 64bit dll is much greater than the 32bit dll. Not sure if this means that the 32bit opencl built ffmpeg exe will run or not.
As at 2017.01.15, this was the change in that part of rdp's great script
32-bit:

Code: Select all

  mkdir -p win32
  cd win32
  # ---------- 2017.01.15 for opencl build testing - start
  if [[ $enable_opencl == 'y' ]]; then
    echo "We assume that the 32bit dll c:\Windows\syswow64\OpenCL.dll has been pre-copied into  ffmpeg-windows-build-helpers-master/openclx32/OpenCL.dll (name case sensitive)"
    pwd
	echo $path
	#read -p "Press Enter to continue... or control-C if the pwd is not the sandbox/win32 folder"
    mkdir openclx32
    cp ../../openclx32/* ./openclx32
    cd openclx32
    echo ""
    echo "gendef OpenCL.dll ...gendef was compiled when building mingw by adding --enable-gendef"
    gendef OpenCL.dll
    echo ""
    echo "dlltool runs next, it gets built within mingw, although you do have to search to find it"
	${cross_prefix}dlltool -l libOpenCL.a -d OpenCL.def -k -A 
    echo ""
	echo "32 bit get the OpenCL 1.2 headers from Khronos ..."
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/opencl.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_platform.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_ext.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_egl.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_dx9_media_sharing.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_d3d10.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_d3d11.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_gl.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_gl_ext.h -O --fail || exit 1
    echo "---"
    ls -al
	#/ffmpeg-windows-build-helpers-master/sandbox/cross_compilers/mingw-w64-i686/i686-w64-mingw32/include 
    #/ffmpeg-windows-build-helpers-master/sandbox/cross_compilers/mingw-w64-i686/i686-w64-mingw32/lib
	mkdir ${mingw_w64_x86_64_prefix}/include/OpenCL
	mkdir ${mingw_w64_x86_64_prefix}/include/CL
    echo "---"
	cp *.h ${mingw_w64_x86_64_prefix}/include/OpenCL
	cp *.h ${mingw_w64_x86_64_prefix}/include/CL
	cp *.a ${mingw_w64_x86_64_prefix}/lib
    echo "---"
	cd ..
    echo ""
	#read -p "Press Enter to continue... or control-C if not happy"
  fi
  # ---------- 2017.01.15 for opencl build testing - end
    build_dependencies
    build_apps
64-bit:

Code: Select all

  mkdir -p x86_64
  cd x86_64
  # ---------- 2017.01.15 for opencl build testing - start
  if [[ $enable_opencl == 'y' ]]; then
    echo "We assume that the 64bit dll c:\Windows\System32\OpenCL.dll has been pre-copied into  ffmpeg-windows-build-helpers-master/openclx64/OpenCL.dll (name case sensitive)"
    pwd
	echo $path
	#read -p "Press Enter to continue... or control-C if the pwd is not the sandbox/win64 folder"
    mkdir openclx64
    cp ../../openclx64/* ./openclx64
    cd openclx64
    echo ""
    echo "gendef OpenCL.dll ...gendef was compiled when building mingw by adding --enable-gendef"
    gendef OpenCL.dll
    echo ""
    echo "dlltool runs next, it gets built within mingw"
	${cross_prefix}dlltool -l libOpenCL.a -d OpenCL.def -k -A 
    echo ""
	echo "64 bit get the OpenCL 1.2 headers from Khronos ..."
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/opencl.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_platform.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_ext.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_egl.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_dx9_media_sharing.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_d3d10.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_d3d11.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_gl.h -O --fail || exit 1
    curl -4 https://raw.githubusercontent.com/KhronosGroup/OpenCL-Headers/opencl12/cl_gl_ext.h -O --fail || exit 1
    echo "---"
    ls -al
	#/ffmpeg-windows-build-helpers-master/sandbox/cross_compilers/mingw-w64-i686/i686-w64-mingw32/include 
    #/ffmpeg-windows-build-helpers-master/sandbox/cross_compilers/mingw-w64-i686/i686-w64-mingw32/lib
	mkdir ${mingw_w64_x86_64_prefix}/include/OpenCL
	mkdir ${mingw_w64_x86_64_prefix}/include/CL
    echo "---"
	cp *.h ${mingw_w64_x86_64_prefix}/include/OpenCL
	cp *.h ${mingw_w64_x86_64_prefix}/include/CL
	cp *.a ${mingw_w64_x86_64_prefix}/lib
    echo "---"
	cd ..
    echo ""
	#read -p "Press Enter to continue... or control-C if not happy"
  fi
  # ---------- 2017.01.15 for opencl build testing - end
    build_dependencies
    build_apps
And then Bob's your uncle.

If anyone finds an ffmpeg filter which is sped up by opencl, please let me know :)

Also feel free to let me know if I've done something foolish :)

Here's the commandlines I used to test on a 2 minute mpeg2 sample input:

Code: Select all

REM without opencl
".\ffmpeg_x64_opencl.exe" -threads 0 -threads 0 -i ".\sample6-2mins.mpg" -threads 0 -an -threads 0 -map_metadata -1 -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -filter:v yadif=0:0:0,unsharp=opencl=0:luma_msize_x=3:luma_msize_y=3:luma_amount=0.5:chroma_msize_x=3:chroma_msize_y=3:chroma_amount=0.5,setdar=dar=16/9 -r 25 -c:v h264 -preset slow -profile:v high -level 4.1 -crf 18 -threads 0 -movflags +faststart -y "sample6-2mins.mpg.MP4"  

REM with opencl
".\ffmpeg_x64_opencl.exe" -threads 0 -threads 0 -i ".\sample6-2mins.mpg" -threads 0 -an -threads 0 -map_metadata -1 -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -filter:v yadif=0:0:0,unsharp=opencl=1:luma_msize_x=3:luma_msize_y=3:luma_amount=0.5:chroma_msize_x=3:chroma_msize_y=3:chroma_amount=0.5,setdar=dar=16/9 -r 25 -c:v h264 -preset slow -profile:v high -level 4.1 -crf 18 -threads 0 -movflags +faststart -y "sample6-2mins.mpg.MP4"  
It does make me wonder whether unsharp is silently ignoring the "opencl=1" for some reason, eg say, it doesn't properly detect opencl is available on the 750Ti card ... although "Geeks3D GPU Caps Viewer" 1.31.1.0 does detect opencl as "OpenCL 1.2 CUDA 8.0.0 FULL_PROFILE" and run the 3D opencl demo OK.
Last edited by hydra3333 on Mon Jan 16, 2017 1:32 am, edited 3 times in total.

hydra3333
Posts: 201
Joined: Sun Apr 28, 2013 1:03 pm
Contact:

Re: Building ffmpeg with opencl

Post by hydra3333 » Mon Jan 16, 2017 1:17 am

Also, for interest and unrelated to openCL, comparing using nearly equivalent nvenc vs non-nvenc encodes with with opencl-unsharp.
Yes, nvenc quality will be lower ... if encode speed is important to you, check out the fps and "speed=" numbers ... 64fps vs 516fps / 2.57x vs 20.6x).

1. opencl-unsharp + no-nvenc

Code: Select all

REM Mon 16/01/2017 11:31:50.55 start pass of opencl=1 homebuilt x64 (no sandybridge) opencl + no_nvenc 
".\ffmpeg_x64_opencl.exe" -threads 0 -threads 0 -i ".\sample6-2mins.mpg" -threads 0 -an -threads 0 -map_metadata -1 -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -filter:v yadif=0:0:0,unsharp=opencl=1:luma_msize_x=3:luma_msize_y=3:luma_amount=0.5:chroma_msize_x=3:chroma_msize_y=3:chroma_amount=0.5,setdar=dar=16/9 -r 25 -c:v h264 -preset slow -profile:v high -level 4.1 -crf 18 -threads 0 -movflags +faststart -y "sample6-2mins.mpg.MP4"  
... snip ...
frame= 3000 fps= 64 q=-1.0 Lsize=   42469kB time=00:01:59.88 bitrate=2902.1kbits/s speed=2.57x    
video:42433kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.085705%
[libx264 @ 0000027feebe1340] frame I:31    Avg QP:15.92  size: 71571
[libx264 @ 0000027feebe1340] frame P:784   Avg QP:18.85  size: 28496
[libx264 @ 0000027feebe1340] frame B:2185  Avg QP:21.37  size:  8646
[libx264 @ 0000027feebe1340] consecutive B-frames:  2.2%  1.2%  2.6% 94.0%
[libx264 @ 0000027feebe1340] mb I  I16..4:  9.2% 62.1% 28.7%
[libx264 @ 0000027feebe1340] mb P  I16..4:  2.4%  9.8%  1.8%  P16..4: 39.9% 25.2% 14.3%  0.0%  0.0%    skip: 6.5%
[libx264 @ 0000027feebe1340] mb B  I16..4:  0.3%  0.7%  0.2%  B16..8: 39.6%  9.1%  2.2%  direct:10.6%  skip:37.3%  L0:42.1% L1:40.4% BI:17.5%
[libx264 @ 0000027feebe1340] 8x8 transform intra:66.8% inter:66.4%
[libx264 @ 0000027feebe1340] direct mvs  spatial:99.7% temporal:0.3%
[libx264 @ 0000027feebe1340] coded y,uvDC,uvAC intra: 72.0% 80.4% 51.7% inter: 29.1% 38.5% 5.9%
[libx264 @ 0000027feebe1340] i16 v,h,dc,p: 59% 14% 11% 16%
[libx264 @ 0000027feebe1340] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 24% 10% 16%  6%  8% 10%  9% 10%  8%
[libx264 @ 0000027feebe1340] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 23%  9%  7%  7% 11% 12% 10% 10%  9%
[libx264 @ 0000027feebe1340] i8c dc,h,v,p: 33% 22% 32% 12%
[libx264 @ 0000027feebe1340] Weighted P-Frames: Y:4.6% UV:2.9%
[libx264 @ 0000027feebe1340] ref P L0: 45.4% 12.6% 23.4%  8.3%  9.9%  0.3%  0.0%
[libx264 @ 0000027feebe1340] ref B L0: 75.6% 17.7%  5.1%  1.6%
[libx264 @ 0000027feebe1340] ref B L1: 92.8%  7.2%
[libx264 @ 0000027feebe1340] kb/s:2896.71
REM Mon 16/01/2017 11:32:37.43 end pass 
2. opencl-unsharp + nvenc

Code: Select all

REM Mon 16/01/2017 11:32:37.46 start pass of opencl=1 homebuilt x64 (no sandybridge) opencl + nvenc 
".\ffmpeg_x64_opencl.exe" -threads 0 -threads 0 -i ".\sample6-2mins.mpg" -threads 0 -an -threads 0 -map_metadata -1 -sws_flags lanczos+accurate_rnd+full_chroma_int+full_chroma_inp -filter:v yadif=0:0:0,unsharp=opencl=1:luma_msize_x=3:luma_msize_y=3:luma_amount=0.5:chroma_msize_x=3:chroma_msize_y=3:chroma_amount=0.5,setdar=dar=16/9 -r 25 -c:v h264_nvenc -preset hq -rc:v constqp -global_quality 22 -profile:v high -level 4.1 -pixel_format yuv420p  -threads 0 -movflags +faststart -y "sample6-2mins.mpg.MP4"  
frame= 3000 fps=516 q=21.0 Lsize=   51521kB time=00:01:59.96 bitrate=3518.3kbits/s speed=20.6x    
video:51507kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.025905%
REM Mon 16/01/2017 11:32:44.21 end pass 

hydra3333
Posts: 201
Joined: Sun Apr 28, 2013 1:03 pm
Contact:

Re: Building ffmpeg with opencl

Post by hydra3333 » Mon Jan 16, 2017 8:09 am

Seems I lucked out and got it to build without crashing, with OpenCL as well as with nvidia's CUDA/CUVID where supposedly it could be used with nvidia's hardware decoder and a hardware encoder. A total hack script as an attachment in an issue, over at rdp's site https://github.com/rdp/ffmpeg-windows-b ... issues/197

https://developer.nvidia.com/ffmpeg
Use FFmpeg/libav binary as required. To start with FFmpeg, try the below sample command line for transcoding
ffmpeg -y -hwaccel cuvid -c:v h264_cuvid -vsync 0 -i <input.mp4> -vf <video filter stuff> -vcodec h264_nvenc <output1.mp4>
https://trac.ffmpeg.org/wiki/HWAccelIntro#OpenCL
https://trac.ffmpeg.org/wiki/HWAccelInt ... IDNvDecode

hydra3333
Posts: 201
Joined: Sun Apr 28, 2013 1:03 pm
Contact:

Re: Building ffmpeg with opencl and CUDA/CUVID

Post by hydra3333 » Mon Jan 16, 2017 1:04 pm

Oh. With cuda/cuvid - the mpeg2 decoder spits a lot of errors and tends to crash.

I've done something wrong no doubt. Giving up on it anyway.

hydra3333
Posts: 201
Joined: Sun Apr 28, 2013 1:03 pm
Contact:

Re: Building ffmpeg with opencl

Post by hydra3333 » Mon Jan 16, 2017 10:59 pm

hydra3333 wrote:Well, OK, at least the built-with-opencl ffmpeg x64 .exe didn't crash.
However using opencl in "unsharp mask" made near as anything no difference to encode speeds on an i3820/nvidia-750Ti.
So ... after more testing it turns out that OpenCL in unsharp mask can make a HUGE difference when operating on larger sources.

Test results for: 3hr 1080i mpeg2, unsharp without and with OpenCL and DXVA2 - elapsed time, fps, speed
  • 4.0 start pass of opencl=0 homebuilt x64 NOopencl + nvenc - 01:29:38, fps= 50, speed=2.01x
    4.1 start pass of opencl=1 homebuilt x64 opencl + nvenc - 00:35:27, fps=127, speed=5.08x
    4.2 start pass of opencl=1 homebuilt x64 opencl + nvenc + DXVA2 - 00:48:32, fps= 93, speed=3.71x
Interestingly DXVA2 always slows it down :)

I'm glad we persisted with building openCL.

setup: i3820, nvidia 750Ti, 16Gb

BiDouiLle
Posts: 58
Joined: Wed Oct 17, 2012 7:45 am
Location: Corsica

Re: Building ffmpeg with opencl

Post by BiDouiLle » Sun Jan 22, 2017 3:08 pm

So there is def a benefit of having OpenCL enabled, nice to know.

But as said Zeranoe, first opencl library loading implementation in ffmpeg as to be tweaked in sources to be redistributable for all as no opencl.dll would make ffmpeg unusable :-(

hydra3333
Posts: 201
Joined: Sun Apr 28, 2013 1:03 pm
Contact:

Re: Building ffmpeg with opencl

Post by hydra3333 » Sun Jan 22, 2017 3:19 pm

OK. I guess it's only useful for homegrown build and use (RDPs script) ... I depend on it now for VERY fast unsharp.

hydra3333
Posts: 201
Joined: Sun Apr 28, 2013 1:03 pm
Contact:

Re: Building ffmpeg with opencl and CUDA/CUVID

Post by hydra3333 » Thu Mar 23, 2017 11:02 pm

hydra3333 wrote:Oh. With cuda/cuvid - the mpeg2 decoder spits a lot of errors and tends to crash.

I've done something wrong no doubt. Giving up on it anyway.
It seems no copying of nvidia headers are necessary to build ffmpeg nowadays https://github.com/rdp/ffmpeg-windows-b ... -288883857

It seems worth giving ffmpeg cuda decoding another go
... acknowledging that a "gold standard" for reliability and function is Donald Graft's avisynth/vapoursynth GPU accelerated filters (a small donation to license, but WELL worth it) which can intelligently handle various input streams and apply a range of brand new GPU accelerated filters and feed and feed filtered frames into ffmpeg eg for nvenc encoding.

http://rationalqm.us/dgdecnv/dgdecnv.html
and
http://rationalqm.us/board/viewforum.ph ... 0754c02a65

Post Reply
'