CUDA Image Processing Library: Architecture and Modules

Updated:

Fastvideo CUDA image processing library is a set of independent C++/CUDA modules, one per stage of the camera image pipeline, that chain together in GPU memory — a frame enters the GPU once, passes through as many stages as your task requires, and leaves once. This page focuses on the architecture, the design choices behind it, and how to evaluate the library on your own hardware; the complete catalog of modules, licensing terms, and the product roadmap live on the Fastvideo SDK page.

The library is linkable: you link it into your own C++/CUDA application and call the modules directly, with images kept in GPU memory across the pipeline — a ready camera ISP, not a set of primitives to assemble.

CUDA image processing library architecture

How the Library Is Organized

Every stage of the pipeline — from raw frame unpacking to compression — is a separate module with a uniform data model: input and output buffers reside in GPU memory, so any sequence of modules composes without intermediate transfers to the CPU. The PCIe bus is crossed exactly twice per frame, on the way in and on the way out, which is the architectural reason for the library's performance: at multi-gigapixel-per-second module speeds, an extra host round trip would cost more than the computation itself. Multi-threaded applications are served by the stream-per-thread option (and CUDA MPS on Linux), and every module has built-in time measurement, so profiling a pipeline is a matter of reading the numbers rather than instrumenting the code.

Quality-First Algorithms, Not Just Primitives

Primitive libraries give you building blocks — a convolution, a transform, a basic interpolation — and leave image quality to whatever you assemble from them. This library takes the opposite approach: each module implements a specific, quality-critical stage of the camera pipeline with an algorithm chosen for its output quality, then optimized for the GPU. Demosaicing is not bilinear interpolation but the MG, DFPD, and L7 algorithms; denoising is NLM, bilateral, and wavelet with float workflow; resize is Lanczos; and the codecs — JPEG, JPEG2000, and the Raw Bayer codec — are complete standard-compliant implementations rather than wrappers. For a direct comparison of this approach with NVIDIA's primitive library, see our benchmark article Fastvideo SDK vs NVIDIA NPP.

Module Groups at a Glance

Each group above is one line here and a full section on the SDK page, with the dedicated product pages linked for the major modules.

Evaluating the Library on Your Hardware

The library ships with sample C++ applications with source code (MS Visual Studio 2022 projects on Windows), covering the individual modules and a complete camera application that assembles the full pipeline from acquisition to compressed output. Several modules are also available as freeware demo applications for a quick first test: JPEG codec, JPEG2000 codec, Debayer, and Resizer. The demo version of the full library, with documentation, is available upon request — run it on your GPU and your images, and let the built-in timing do the arguing.

Compatibility

Frequently asked questions

Can I link the library into my own C++ application?

Yes. It is a linkable C++/CUDA library: you link it into your application and call the modules directly, and the images stay in GPU memory across the pipeline, so it drops into an existing CUDA workflow.

How is it different from NVIDIA CUDA libraries such as NPP or CV-CUDA?

Those are platform building blocks — primitives you combine yourself. This library is a ready, camera-oriented imaging pipeline: quality-first ISP stages plus standard-compliant codecs that you link and call as a whole. For a direct comparison with NVIDIA's primitive library, see Fastvideo SDK vs NVIDIA NPP.

Integration, Custom Development, and Licensing

We offer integration services to connect the library with your existing software, and we develop custom CUDA image processing modules to an agreed specification when your pipeline includes a stage the library does not yet cover — our projects in development page shows what is currently being built. The library and its components are licensed to software developers, camera manufacturers, system integrators, and resellers, and are used in a wide range of imaging applications.

Fyodor Serzhenko, Fastvideo

About the author

Fyodor Serzhenko, PhD, is the founder and CEO of Fastvideo. He earned his PhD at the Moscow Institute of Physics and Technology (MIPT) in 1993. Since 2009 he has led the development of Fastvideo’s GPU-accelerated image codecs and ISP modules, including the Fastvideo SDK. Connect on LinkedIn.

Why you can trust these results

Fastvideo has built GPU-accelerated image processing software since 2009. Our codecs comply with the standards they implement — JPEG (ITU-T T.81 / ISO IEC 10918) and JPEG2000 (ITU-T T.800 / ISO IEC 15444) — and our tools are open source on GitHub. Every performance figure we publish is reproducible: see our benchmark methodology, download the Fastvideo SDK benchmark report (PDF), and measure it on your own GPU.

Contact Form

This form collects your name and email. See our Privacy Policy for how we handle your personal data.