C video-processing

Open-source C projects categorized as video-processing

Top 8 C video-processing Projects

  • ffmpeg-libav-tutorial

    FFmpeg libav tutorial - learn how media works from basic to transmuxing, transcoding and more. Translations: πŸ‡ΊπŸ‡Έ πŸ‡¨πŸ‡³ πŸ‡°πŸ‡· πŸ‡ͺπŸ‡Έ πŸ‡»πŸ‡³ πŸ‡§πŸ‡·

  • arcan

    Arcan - [Display Server, Multimedia Framework, Game Engine] -> "Desktop Engine"

  • Project mention: Is there a cross-platform graphics library that can run without X or wayland that runs on the BSD's bare-metal? | /r/BSD | 2023-12-08

    Something like this ? https://arcan-fe.com/

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • mlt

    MLT Multimedia Framework

  • Project mention: Kdenlive 24.02 open source video editor released | news.ycombinator.com | 2024-03-11

    I've used Kdenlive, Shotcut, Blender and Olive [1]. They all have strenghts and weaknesses, so I choose which one to use depending on what I'm trying to do, or sometimes I use two of them through a single video project.

    One thing to note is that Kdenlive and Shotcut both use the MLT video editing framework [2] under the hood, so their capabilities and constraints are very close to each other's. That said, their UIs are their own and some things may be easier to do in one over the other, may be a matter of personal preference. AFAIK Shotcut is developed by the same people who built MLT, but I don't think that gives it any particular advantage. Also both of these apps have the largest ready-made effects toolbox out of the four apps I mentioned at the top.

    Blender's VSE (video sequence editor) is great if you need fine-tuned 2D animations of elements because you can use all the same awesome keyframing tools you'd use for 3D animation, but it's severely lacking in other aspects, especially in the effects dept (you can crop, blur, mask, but not much else). For some reason you can't use Blender's compositor node system with video, which would enable many more capabilities if possible. There's also a steeper learning curve if you've never used Blender before because its UI breaks many conventions.

    Olive is a newcomer that doesn't get enough attention, but IMHO it was at one point the most promising OSS video editor out there. Sadly the developer works on it on his free time, and he's recently said that he's pausing development because he doesn't have the resources to work on it any more. I'm really hoping a miracle happens.

    There's two versions of Olive, 0.1 and 0.2 which is a complete rewrite. Both versions are good, but they work pretty differently. What got me excited about 0.2 is that its effects are node-based (unlike MLT-based editors which are stack-based), which enables far more advanced editing, although you probably wouldn't need that unless you're working on something quite ambitious.

    1: https://www.olivevideoeditor.org/

    2: https://www.mltframework.org/

  • libva

    Libva is an implementation for VA-API (Video Acceleration API)

  • Project mention: Trying to enable the D3D12 GPU Video acceleration in the Windows (11) Subsystem for Linux. | /r/bashonubuntuonwindows | 2023-07-18

    # apt install autoconf libtool meson glslang-tools libxcb-glx0-dev libxcb-shm0-dev libx11-xcb-dev libxcb-dri2-0-dev libxcb-dri3-dev libxcb-present-dev libxshmfence-dev llvm-11 llvm-15 libxml2-dev graphviz doxygen xsltproc xmlto gstreamer1.0-plugins-bad gstreamer1.0-tools gstreamer1.0-vaapi ffmpeg mesa-va-drivers vainfo libxrandr-dev libxxf86vm-dev libxfixes-dev libxext-dev libwayland-egl-backend-dev wayland-egl-backend libelf-dev byacc bison flex wayland-protocols python3-pip libdrm-dev libva-dev vainfo # pip3 install mako # wget https://archive.mesa3d.org/mesa-22.3.0.tar.xz # tar -xvf mesa-22.3.0.tar.xz # cd mesa-22.3.0 # meson build -Dgallium-drivers=swrast,d3d12 -Dgallium-va=true -Dvideo-codecs=h264dec,h264enc,h265dec,h265enc,vc1dec The Meson build system Version: 0.63.2 Source dir: /home/marietto/Scaricati/mesa-22.3.0 Build dir: /home/marietto/Scaricati/mesa-22.3.0/build Build type: native build Program python3 found: YES (/usr/bin/python3) Project name: mesa Project version: 22.3.0 C compiler for the host machine: cc (gcc 12.2.0 "cc (Ubuntu 12.2.0-3ubuntu1) 12.2.0") C linker for the host machine: cc ld.bfd 2.39 C++ compiler for the host machine: c++ (gcc 12.2.0 "c++ (Ubuntu 12.2.0-3ubuntu1) 12.2.0") C++ linker for the host machine: c++ ld.bfd 2.39 Host machine cpu family: x86_64 Host machine cpu: x86_64 Checking if "-mtls-dialect=gnu2" runs: YES Checking if "split TLSDESC" : links: YES Found pkg-config: /usr/bin/pkg-config (0.29.2) Did not find CMake 'cmake' Found CMake: NO Run-time dependency directx-headers found: NO (tried pkgconfig and cmake) Run-time dependency directx-headers found: YES 1.606.4 Run-time dependency vdpau found: YES 1.5 Program glslangValidator found: YES (/usr/bin/glslangValidator) meson.build:785: WARNING: gallium-va option "true" deprecated, please use "enabled" instead. Run-time dependency libva found: YES 1.19.0 Header "va/va.h" has symbol "VASurfaceAttribDRMFormatModifiers" with dependency libva: YES Program python3 found: YES (/usr/bin/python3) Fetching value of define "ETIME" : 62 Checking for function "bswap32" : YES Checking for function "bswap64" : YES Checking for function "clz" : YES Checking for function "clzll" : YES Checking for function "ctz" : YES Checking for function "expect" : YES Checking for function "ffs" : YES Checking for function "ffsll" : YES Checking for function "popcount" : YES Checking for function "popcountll" : YES Checking for function "unreachable" : YES Checking for function "types_compatible_p" : YES Compiler for C supports function attribute const: YES Compiler for C supports function attribute flatten: YES Compiler for C supports function attribute malloc: YES Compiler for C supports function attribute pure: YES Compiler for C supports function attribute unused: YES Compiler for C supports function attribute warn_unused_result: YES Compiler for C supports function attribute weak: YES Compiler for C supports function attribute format: YES Compiler for C supports function attribute packed: YES Compiler for C supports function attribute returns_nonnull: YES Compiler for C supports function attribute alias: YES Compiler for C supports function attribute noreturn: YES Compiler for C supports function attribute visibility:hidden: YES Checking if "__uint128_t" compiles: YES Checking for function "reallocarray" : YES Compiler for C supports link arguments -Wl,--gc-sections: YES Compiler for C supports arguments -Werror=implicit-function-declaration: YES Compiler for C supports arguments -Werror=missing-prototypes: YES Compiler for C supports arguments -Werror=return-type: YES Compiler for C supports arguments -Werror=empty-body: YES Compiler for C supports arguments -Werror=incompatible-pointer-types: YES Compiler for C supports arguments -Werror=int-conversion: YES Compiler for C supports arguments -Wimplicit-fallthrough: YES Compiler for C supports arguments -Wno-missing-field-initializers: YES Compiler for C supports arguments -Wno-format-truncation: YES Compiler for C supports arguments -fno-math-errno: YES Compiler for C supports arguments -fno-trapping-math: YES Compiler for C supports arguments -Qunused-arguments: NO Compiler for C supports arguments -fno-common: YES Compiler for C supports arguments -Wno-microsoft-enum-value: NO Compiler for C supports arguments -Wno-unused-function: YES Compiler for C supports arguments -Werror=format: YES Compiler for C supports arguments -Wformat-security: YES Compiler for C supports arguments -Werror=thread-safety: NO Compiler for C supports arguments -ffunction-sections: YES Compiler for C supports arguments -fdata-sections: YES Compiler for C++ supports arguments -Werror=return-type: YES Compiler for C++ supports arguments -Werror=empty-body: YES Compiler for C++ supports arguments -Wno-non-virtual-dtor: YES Compiler for C++ supports arguments -Wno-missing-field-initializers: YES Compiler for C++ supports arguments -Wno-format-truncation: YES Compiler for C++ supports arguments -fno-math-errno: YES Compiler for C++ supports arguments -fno-trapping-math: YES Compiler for C++ supports arguments -Qunused-arguments: NO Compiler for C++ supports arguments -flifetime-dse=1: YES Compiler for C++ supports arguments -Wno-microsoft-enum-value: NO Compiler for C++ supports arguments -Werror=format: YES Compiler for C++ supports arguments -Wformat-security: YES Compiler for C++ supports arguments -ffunction-sections: YES Compiler for C++ supports arguments -fdata-sections: YES Compiler for C supports arguments -Wno-override-init: YES Compiler for C supports arguments -Wno-initializer-overrides: NO Compiler for C supports arguments -Werror=pointer-arith: YES Compiler for C supports arguments -Werror=vla: YES Compiler for C supports arguments -Werror=gnu-empty-initializer: NO Compiler for C++ supports arguments -Werror=pointer-arith: YES Compiler for C++ supports arguments -Werror=vla: YES Compiler for C++ supports arguments -Werror=gnu-empty-initializer: NO Checking if "GCC atomic builtins" compiles: YES Checking if "GCC atomic builtins required -latomic" : links: YES Checking if "GCC 64bit atomics" with dependency : links: YES Library ws2_32 found: NO Header "sys/sysmacros.h" has symbol "major" : YES Header "sys/sysmacros.h" has symbol "minor" : YES Header "sys/sysmacros.h" has symbol "makedev" : YES Header "sys/mkdev.h" has symbol "major" : NO Check usable header "sched.h" : YES Checking for function "sched_getaffinity" : YES Check usable header "xlocale.h" : NO Check usable header "linux/futex.h" : YES Check usable header "endian.h" : YES Check usable header "dlfcn.h" : YES Check usable header "sys/shm.h" : YES Check usable header "cet.h" : YES Check usable header "pthread_np.h" : NO Checking for function "strtof" : YES Checking for function "mkostemp" : YES Checking for function "timespec_get" : YES Checking for function "memfd_create" : YES Checking for function "random_r" : YES Checking for function "flock" : YES Checking for function "strtok_r" : YES Checking for function "getrandom" : YES Checking for function "qsort_s" : NO Checking if "GNU qsort_r" : links: YES Header "time.h" has symbol "struct timespec" : YES Checking for function "thrd_create" : YES Header "errno.h" has symbol "program_invocation_name" : YES Header "math.h" has symbol "issignaling" : YES Checking for function "posix_memalign" : YES Checking whether type "struct dirent" has member "d_type" : YES Checking if "strtod has locale support" : links: YES Checking if "Bsymbolic" : links: YES Checking if "gc-sections" : links: YES Checking if "version-script" : links: YES Checking if "dynamic-list" : links: YES Compiler for C supports link arguments -Wl,--build-id=sha1: YES Checking for function "dlopen" : YES Checking for function "dladdr" with dependency : YES Checking for function "dl_iterate_phdr" : YES Checking for function "clock_gettime" : YES Run-time dependency zlib found: YES 1.2.11 Run-time dependency libzstd found: NO (tried pkgconfig and cmake) Run-time dependency threads found: YES Checking for function "pthread_setaffinity_np" with dependency threads: YES Run-time dependency expat found: YES 2.4.8 Library m found: YES Message: libdrm 2.4.110 needed because amdgpu has the highest requirement Run-time dependency libdrm_amdgpu found: YES 2.4.113 Run-time dependency libdrm found: YES 2.4.113 Run-time dependency libudev found: YES 251 WARNING: Ignoring LLVM CMake dependency because dynamic was requested llvm-config found: YES (/usr/bin/llvm-config-15) 15.0.7 Run-time dependency LLVM (modules: amdgpu, bitreader, bitwriter, core, engine, executionengine, instcombine, ipo, mcdisassembler, mcjit, native, scalaropts, transformutils, coroutines) found: YES 15.0.7 Run-time dependency libelf found: YES 0.187 Run-time dependency valgrind found: NO (tried pkgconfig) Program bison found: YES (/usr/bin/bison) Program bison found: YES 3.8.2 (/usr/bin/bison) Program flex found: YES (/usr/bin/flex) Run-time dependency libunwind found: NO (tried pkgconfig and cmake) Found pkg-config: /usr/bin/pkg-config (0.29.2) Build-time dependency wayland-scanner found: YES 1.22.90 Program /usr/local/bin/wayland-scanner found: YES (/usr/local/bin/wayland-scanner) Run-time dependency wayland-protocols found: YES 1.32 Run-time dependency wayland-client found: YES 1.22.90 Run-time dependency wayland-server found: YES 1.22.90 Run-time dependency wayland-egl-backend found: YES 3 Run-time dependency OpenMP found: YES 4.5 Run-time dependency x11 found: YES 1.8.1 Run-time dependency xext found: YES 1.3.4 Run-time dependency xfixes found: YES 6.0.0 Run-time dependency xcb-glx found: YES 1.15 Run-time dependency xcb-shm found: YES 1.15 Run-time dependency xcb found: YES 1.15 Run-time dependency x11-xcb found: YES 1.8.1 Run-time dependency xcb-dri2 found: YES 1.15 Run-time dependency xcb-dri3 found: YES 1.15 Run-time dependency xcb-present found: YES 1.15 Dependency xcb-shm found: YES 1.15 (cached) Run-time dependency xcb-sync found: YES 1.15 Run-time dependency xshmfence found: YES 1.3 Run-time dependency glproto found: YES 1.4.17 Run-time dependency dri2proto found: YES 2.8 Run-time dependency xxf86vm found: YES 1.1.4 Run-time dependency xcb-xfixes found: YES 1.15 Run-time dependency xcb-randr found: YES 1.15 Run-time dependency xrandr found: YES 1.5.2 Library sensors found: NO Program nm found: YES (/usr/bin/nm) Program symbols-check.py found: YES (/usr/bin/python3 /home/marietto/Scaricati/mesa-22.3.0/bin/symbols-check.py) Program install_megadrivers.py found: YES (/usr/bin/python3 /home/marietto/Scaricati/mesa-22.3.0/bin/install_megadrivers.py) WARNING: Library target 'GLESv1_CM' has 'name_prefix' set. Compilers may not find it from its '-lGLESv1_CM' linker flag in the 'glesv1_cm.pc' pkg-config file. WARNING: Library target 'GLESv1_CM' has 'name_prefix' set. Compilers may not find it from its '-lGLESv1_CM' linker flag in the 'glesv1_cm-uninstalled.pc' pkg-config file. WARNING: Library target 'GLESv2' has 'name_prefix' set. Compilers may not find it from its '-lGLESv2' linker flag in the 'glesv2.pc' pkg-config file. WARNING: Library target 'GLESv2' has 'name_prefix' set. Compilers may not find it from its '-lGLESv2' linker flag in the 'glesv2-uninstalled.pc' pkg-config file. Program decode.py found: YES (/home/marietto/Scaricati/mesa-22.3.0/src/compiler/isaspec/decode.py) Program encode.py found: YES (/home/marietto/Scaricati/mesa-22.3.0/src/compiler/isaspec/encode.py) Compiler for C++ supports arguments -Wno-unused-variable: YES Compiler for C++ supports arguments -Wno-unused-local-typedefs: YES Compiler for C++ supports arguments -Wno-unused-but-set-variable: YES Compiler for C++ supports arguments -Wno-maybe-uninitialized: YES Compiler for C++ supports arguments -Wno-self-assign: NO Compiler for C++ supports arguments -fno-exceptions: YES Compiler for C++ supports arguments -fno-rtti: YES Compiler for C++ supports arguments -Wimplicit-fallthrough: YES Compiler for C++ supports arguments -Wshadow: YES Compiler for C supports arguments -Wimplicit-fallthrough: YES (cached) Compiler for C supports arguments -Wshadow: YES Program ln found: YES (/usr/bin/ln) Checking for function "mincore" : YES WARNING: Library target 'EGL' has 'name_prefix' set. Compilers may not find it from its '-lEGL' linker flag in the 'egl.pc' pkg-config file. WARNING: Library target 'EGL' has 'name_prefix' set. Compilers may not find it from its '-lEGL' linker flag in the 'egl-uninstalled.pc' pkg-config file. Message: Configuration summary: prefix: /usr/local libdir: lib/x86_64-linux-gnu includedir: include OpenGL: yes (ES1: yes ES2: yes) OSMesa: no DRI platform: drm DRI driver dir: /usr/local/lib/x86_64-linux-gnu/dri GLX: DRI-based EGL: yes EGL drivers: builtin:egl_dri2 builtin:egl_dri3 EGL/Vulkan/VL platforms: x11 wayland surfaceless drm xcb GBM: yes GBM backends path: /usr/local/lib/x86_64-linux-gnu/gbm Video Codecs: h264dec h264enc h265dec h265enc vc1dec Vulkan drivers: amd intel intel_hasvk swrast Vulkan ICD dir: share/vulkan/icd.d Vulkan Intel Ray Tracing: no llvm: yes llvm-version: 15.0.7 Gallium drivers: swrast d3d12 Gallium st: mesa vdpau va HUD lmsensors: no Shared-glapi: yes Perfetto: no Perfetto ds: auto Build targets in project: 236 NOTICE: Future-deprecated features used: * 0.55.0: {'ExternalProgram.path'} * 0.56.0: {'meson.source_root'} mesa 22.3.0 User defined options gallium-drivers: swrast,d3d12 gallium-va : true video-codecs : h264dec,h264enc,h265dec,h265enc,vc1dec Found ninja-1.11.0 at /usr/bin/ninja # git clone https://github.com/intel/libva.git # cd libva & ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu # make & sudo make install # which llvm-config-11 /usr/bin/llvm-config-11 added to : /home/marietto/.bashrc and /root/.bashrc # export LIBVA_DRIVERS_PATH=/usr/local/lib/x86_64-linux-gnu/dri # export LIBVA_DRIVER_NAME=d3d12 # source /home/marietto/.bashrc # source /root/.bashrc # vainfo --display drm --device /dev/dri/card0 Failed to open the given device! # ls /dev/dri ls: cannot access '/dev/dri': No such file or directory

  • libplacebo

    Official mirror of libplacebo

  • butterflow-ui

    A graphical user interface for butterflow.

  • libKaleidoscope

    A library to create kaleidoscope effect on images with CUDA. You can build on all platforms using CMake

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • glare-core

    C++ code used in various Glare Tech Ltd products

  • Project mention: Nvidia H200 Tensor Core GPU | news.ycombinator.com | 2023-11-13

    Yes, even ~2012 OpenCL code works incredibly well today for spectral path tracing: https://indigorenderer.com/indigobench

    Also my fractal software incl OpenCL multi-GPU / mixed plaftorm rendering: https://chaoticafractals.com/

    Both work on [ Nvidia, AMD, Intel, Apple ] x [ CPU, GPU ].

    Some of the shared code here: https://github.com/glaretechnologies/glare-core

    Don't let anyone tell you OpenCL is dead! Keep writing OpenCL software!!!!1 voice breaks

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020).

C video-processing related posts

Index

What are some of the best open-source video-processing projects in C? This list will help you:

Project Stars
1 ffmpeg-libav-tutorial 9,572
2 arcan 1,491
3 mlt 1,416
4 libva 618
5 libplacebo 496
6 butterflow-ui 55
7 libKaleidoscope 12
8 glare-core 4

Sponsored
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com