Quote:From what i read InterFrame is only partially done on GPU and it relies on CPU a lot.
If you don't enable the gpu option, InterFrame is done on the CPU alone.
Quote:If i use alone GPU via NVenc x264 ecoding my GPU works on 100% 2000+ frames
I understand what you mean, but you encode to H.264 (MPEG-4 AVC) not x264. x264 is another encoder which also encoder so H.264.
Quote:Thing is that it doesn't use 100% cpu when i use it with NVEnc and GPU seems to wait constantly for InterFrame to finish its work (that is why 12%)
Sounds about right.
Quote:So my question is how i can increase speed of single conversion with NVEnc and InterFrame filter from AviSynth ? Obviously it has something to do with settings but i can't figure out which ones ...
So my question is how i can increase speed of single conversion with NVEnc and InterFrame filter from AviSynth ? Obviously it has something to do with settings but i can't figure out which ones...
Warning: There might not be a solution to speed things up.
What comes to mind:
1. using faster settings in InterFrame
2. Assuming you do no other filtering in Avisynth, it might not be InterFrame which is the bottleneck. It might be the decoders used in Avisynth (how is the speed when you enable 'Config->Internals->Always use Avisynth') and don't use Interframe. (This way Avisynth will be used, even when it's not needed.)
Assuming the decoder is the bottleneck using another source filter might help.
Since I normally don't use NVEncC, I tried the following with my Ryzen 7 X1800 and my Geforce GTX 980 ti.
Encode a (full hd, 1920x1080 23.976fps progressive H.264 1080 frames inside an mkv container) source:
Note that speed can fluctuate quite a bit so small changes don't say much and I only did one encode with one source for each filter thus no averaging or similar was done.
- Decoder: ffmpeg + Avisynth (FFVideoSource as source filter) and I got: ~187fps.
- Decoder: avs2yuv + Avisynth (FFVideoSource as source filter) and I got: ~207fps.
- Decoder: ffmpeg + Avisynth (LWLibavVideoSource used as source filter) and I got: ~185fps.
- Decoder: avs2yuv + Avisynth (LWLibavVideoSource as source filter) and I got: ~205fps.
- Decoder: ffmpeg + Avisynth (FFMS2000 - FFVideoSource as source filter) and I got: ~186fps.
- Decoder: avs2yuv + Avisynth (FFMS2000 - FFVideoSource as source filter) and I got: ~200fps.
- Decoder: ffmpeg + Avisynth (DGDecNV - DGSource as source filter) and I got: ~195fps.
- Decoder: avs2yuv + Avisynth (DGDecNV - DGSource as source filter) and I got: ~209fps.
- Decoder: ffmpeg + Avisynth (FFVideoSource as source filter and InterFrame 60fps gpu enabled) and I got: ~65fps.
- Decoder: avs2yuv + Avisynth (FFVideoSource as source filter and InterFrame 60fps gpu enabled) and I got: ~51fps.
- Decoder: ffmpeg + Avisynth (LWLibavVideoSource used as source filter and InterFrame 60fps gpu enabled) and I got: ~63fps.
- Decoder: avs2yuv + Avisynth (LWLibavVideoSource as source filter and InterFrame 60fps gpu enabled) and I got: ~49fps.
- Decoder: ffmpeg + Avisynth (FFMS2000 - FFVideoSource as source filter and InterFrame 60fps gpu enabled) and I got: ~63fps.
- Decoder: avs2yuv + Avisynth (FFMS2000 - FFVideoSource as source filter and InterFrame 60fps gpu enabled) and I got: ~52fps.
- Decoder: ffmpeg + Avisynth (DGDecNV - DGSource as source filter and InterFrame 60fps gpu enabled) and I got: failed, InterFrame and DGDecNV don't play well with each other when using Avisynth
- Decoder: avs2yuv + Avisynth (DGDecNV - DGSource as source filter and InterFrame 60fps gpu enabled) and I got: failed, InterFrame and DGDecNV don't play well with each other when using Avisynth
- Decoder: vspipe + Vapourynth (DGDecNV - DGSource as source filter and InterFrame 60fps gpu enabled, intelligent overwrite) and I got: ~64fps
since my cpu is rather fast I also tried:
- Decoder: ffmpeg + Avisynth (FFVideoSource as source filter and InterFrame 60fps gpu disabled) and I got: ~94fps.
- Decoder: avs2yuv + Avisynth (FFVideoSource as source filter and InterFrame 60fps gpu disabled) and I got: ~68fps.
- Decoder: ffmpeg + Avisynth (LWLibavVideoSource used as source filter and InterFrame 60fps gpu disabled) and I got: ~92fps.
- Decoder: avs2yuv + Avisynth (LWLibavVideoSource as source filter and InterFrame 60fps gpu disabled) and I got: ~70fps.
- Decoder: ffmpeg + Avisynth (FFMS2000 - FFVideoSource as source filter and InterFrame 60fps gpu disabled) and I got: ~96fps.
- Decoder: avs2yuv + Avisynth (FFMS2000 - FFVideoSource as source filter and InterFrame 60fps gpu disabled) and I got: ~72fps.
- Decoder: ffmpeg + Avisynth (DGDecNV - DGSource as source filter and InterFrame 60fps gpu disabled) and I got: ~98fps.
- Decoder: avs2yuv + Avisynth (DGDecNV - DGSource as source filter and InterFrame 60fps gpu disabled) and I got: ~101fps.
- Decoder: vspipe + Vapourynth (DGDecNV - DGSource as source filter and InterFrame 60fps gpu disabled, intelligent overwrite) and I got: ~108fps
So looking at all this, depending on your cpu, not using the gpu with InterFrame might help the most when using in combination with NVEncC.
Switching the source filter, doesn't help much in general so your best bet for speed up is probably using faster/other InterFrame settings.
Remember this was only one with one source and only one encode per setting combination, so this might not really tell much, especially when another CPU or GPU is used.
-> you probably should do some testing on your own unless someone has the same setup as you, benchmarks&co can be quite misleading when using things that combine gpu&cpu combined with different tools and threading strategies.
Cu Selur
Ps.: Sorry, this got a bit long, but I wanted to show that there is no easy answer to this.