-
Notifications
You must be signed in to change notification settings - Fork 113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Request: Include 2D DCT filter #545
Comments
I think it will be difficult to call ffmpeg filters from NVEnc, and I also think we have multiple denoise filters for NVEnc. |
Yes, there are some filters. Another benefit would be that if it were possible, the other two encoders QSV and VCE would benefit too. I found some sources, but I am not sure how useful they are as they are "outside" FFmpeg:
And one outdated NVIDIA 2D Image And Signal Performance Primitives (NPP): |
For specific filters, I recommend you to use Avisynth/VapourSynth filters as always, implementing filters myself takes up too much time, and that is why NVEnc supports avs/vpy readers. If you want DCT based filters, vpp-smooth is also a DCT based filter. |
I think it might be possible to implement something near to vf_dctdnoiz, but it shall take long time (for months as it looks complicated and difficult to understand). |
Hello @rigaya, Firstly, I am grateful for your detailed response and the insights you've provided. It's clear that integrating the 2D DCT filter, akin to vf_dctdnoiz from FFmpeg, is a complex task, especially considering the need to potentially implement it across different platforms like NVENC, QSV, and VCE. I understand this might be a challenging process, and I appreciate the challenges in calling FFmpeg filters from NVEnc or adapting similar functionalities. Implementing such features can be time-consuming and complex, especially when ensuring compatibility and efficiency across various encoders. Your suggestion about the potential long-term possibility of something akin to vf_dctdnoiz is encouraging, albeit understanding it's a complicated and time-intensive endeavour. Please take all the time you need for this implementation. I understand the intricacies involved in such development, especially across NVENC, QSVENC, and VCEEnc platforms, and I presume OpenCL might be a pathway, given its support across these platforms. Your efforts to look into this matter are highly appreciated, and many users, myself included, look forward to any future developments, no matter the timeline. Thank you once again for your dedication and for considering this feature request. |
--vpp-denoise-dct which implements dctdnoiz algorithm for GPU. The implementation details are different, and also parameter names are, so please refer the documents for details. Also, Actually I've had very hard time with implementation and debugging to make this run, I really recommend to use Avisynth/VapourSynth filters via avs/vpy reader for complex filters........... |
Dear @rigaya, I am extending my sincerest gratitude for the recent implementation of the --vpp-denoise-dct feature in response to my request. Your commitment to enhancing video encoding tools' capabilities is commendable, and I am genuinely impressed by the speed and quality of this new filter. Having tested the filter, I can confidently say the results are remarkable. The balance of speed and efficiency in noise removal is impressive, and it's evident that a significant amount of effort and expertise went into this development. Implementing such features, especially on GPU, is challenging and time-consuming, and your dedication to this project is highly appreciated. While Avisynth/VapourSynth filters are powerful, as you've mentioned, there are scenarios where they might not be the most efficient choice due to speed constraints. The addition of --vpp-denoise-dct provides a much-needed alternative for such cases. On that note, I would like to know if there are plans to implement this feature in qsvenc. Many users, including myself, would find great value in having this capability across different platforms, particularly for those who rely on qsvenc for their encoding needs. Once again, thank you for your incredible work and for considering the community's needs. Your efforts significantly impact the quality and efficiency of video encoding, and they do not go unnoticed. I am looking forward to hearing from you about the potential Qsvenc implementation. |
It’s very nice to hear that it works fine with good speed and was worth to work on. GPU implementation requires compilcated implementation to make it run fast as you say, and took time especially on debugging. Of course I plan to add this also to QSVEnc and VCEEnc, but will take another time as I need port it to OpenCL. Also, please note that it’s performance might be poor, especially on Intel iGPU. The implementation of this filter heavily relies on so-called shared memory ( or local memory) for performance speed up, but shared memory on Intel iGPU is known to be poor. |
Again, Thank you for your dedication and hard work in implementing the --vpp-denoise-dct feature. I understand that the process of porting it to QSVENC and VCEENC will take some time, especially considering the need to use OpenCL. I appreciate your willingness to expand this feature to multiple platforms, and I'm eagerly anticipating its availability in the future. Furthermore, I understand that performance may vary between integrated and dedicated graphics cards. Your knowledge of potential hardware limitations is valuable and helps establish realistic expectations for users. |
Quick question, I noticed there isn't a limitation to the Sigma. |
Current limitation is to be positive value, there is no limitation on the larger side, as there won't be any fatal trouble like causing artifacts. Getting too blurry is expected, it's simply unsuitable value. |
I appreciate the confirmation. |
QSVEnc 7.59 adds --vpp-denoise-dct, performance seems fine at least on Arc A380. |
Thank you very much. |
Hello @rigaya
I want to check if including the 2D DCT filter would be possible.
Link to FFmpeg
https://ffmpeg.org/ffmpeg-filters.html#toc-dctdnoiz
info from FFmpeg
The text was updated successfully, but these errors were encountered: