Projects
home:enzokiel
avidemux3
Sign Up
Log In
Username
Password
We truncated the diff of some files because they were too big. If you want to see the full diff for every file,
click here
.
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 48
View file
avidemux3.changes
Changed
@@ -1,7 +1,7 @@ ------------------------------------------------------------------- -Sun Oct 18 17:29:22 UTC 2026 - enzokiel@kabelmail.de +Wed Oct 21 18:11:41 UTC 2026 - enzokiel@kabelmail.de -- Update to version 2.8.2.git20261018 +- Update to version 2.8.2.git20261020 - No changelog available -------------------------------------------------------------------
View file
avidemux3.spec
Changed
@@ -19,7 +19,7 @@ Name: avidemux3 Summary: Graphical video editing and transcoding tool License: GPL-2.0-only -Version: 2.8.2.git20261018 +Version: 2.8.2.git20261020 Release: 0 URL: https://github.com/mean00/avidemux2 ExclusiveArch: %ix86 x86_64 @@ -243,6 +243,7 @@ %{_libdir}/libADM_coreLibVA6.so %{_libdir}/libADM_coreLibVAEnc6.so %{_libdir}/libADM_coreMuxer6.so +%{_libdir}/libADM_coreNvenc6.so %{_libdir}/libADM_coreScript.so %{_libdir}/libADM_coreSocket6.so %{_libdir}/libADM_coreSqlLight3.so
View file
avidemux2-2.8.2.git20261018.tar.xz/avidemux/common/ADM_videoCodec/src/ADM_ffmpeg_nvdec.cpp -> avidemux2-2.8.2.git20261020.tar.xz/avidemux/common/ADM_videoCodec/src/ADM_ffmpeg_nvdec.cpp
Changed
@@ -627,6 +627,7 @@ // Code compiled from libavutil/hwcontext_cuda.c and libavcodec/nvdec.c int r; bool fatal; + CUresult err; CudaFunctions *cudaFunc; CuvidFunctions *cuvidFunc; CUVIDDECODECAPS caps; @@ -646,39 +647,31 @@ r = cuda_load_functions(&cudaFunc, NULL); - if(r < 0 || !cudaFunc) + if(r < 0) { ADM_info("Cannot load CUDA functions, NVDEC is not available.\n"); return false; } - if(!cudaFunc->cuInit || !cudaFunc->cuDeviceGet || - !cudaFunc->cuCtxCreate || !cudaFunc->cuCtxDestroy || - !cudaFunc->cuCtxPushCurrent || !cudaFunc->cuCtxPopCurrent) - { - ADM_warning("Necessary CUDA functions not found, bailing out.\n"); - goto fail2; - } - - r = cudaFunc->cuInit(0); + err = cudaFunc->cuInit(0); - if(r != CUDA_SUCCESS) + if(err != CUDA_SUCCESS) { ADM_warning("Cannot init CUDA, NVDEC is not available.\n"); goto fail2; } - r = cudaFunc->cuDeviceGet(&dev, 0); + err = cudaFunc->cuDeviceGet(&dev, 0); - if(r != CUDA_SUCCESS) + if(err != CUDA_SUCCESS) { ADM_warning("Cannot get CUDA device, NVDEC is not available.\n"); goto fail2; } - r = cudaFunc->cuCtxCreate(&ctx, CU_CTX_SCHED_BLOCKING_SYNC, dev); + err = cudaFunc->cuCtxCreate(&ctx, CU_CTX_SCHED_BLOCKING_SYNC, dev); - if(r != CUDA_SUCCESS) + if(err != CUDA_SUCCESS) { ADM_warning("Cannot create CUDA context, NVDEC is not available.\n"); goto fail2; @@ -702,9 +695,9 @@ goto fail2; } - r = cudaFunc->cuCtxPushCurrent(ctx); + err = cudaFunc->cuCtxPushCurrent(ctx); - if(r != CUDA_SUCCESS) + if(err != CUDA_SUCCESS) { ADM_warning("Cannot push CUDA context, bailing out.\n"); cuvid_free_functions(&cuvidFunc); @@ -720,8 +713,8 @@ caps.eChromaFormat = cudaVideoChromaFormat_##chroma; \ caps.nBitDepthMinus8 = bit_depth - 8; \ ADM_info("Checking " #codec " %d bits %s\n", bit_depth, chromaFormatDesc(caps.eChromaFormat)); \ - r = cuvidFunc->cuvidGetDecoderCaps(&caps); \ - if(r != CUDA_SUCCESS) \ + err = cuvidFunc->cuvidGetDecoderCaps(&caps); \ + if(err != CUDA_SUCCESS) \ { \ ADM_warning("Quering decoder capabilities for " #codec " has failed.\n"); \ if(fatal) \
View file
avidemux2-2.8.2.git20261020.tar.xz/avidemux_core/ADM_coreVideoEncoder/ADM_hwAccelEncoder/ADM_coreNvenc
Added
+(directory)
View file
avidemux2-2.8.2.git20261020.tar.xz/avidemux_core/ADM_coreVideoEncoder/ADM_hwAccelEncoder/ADM_coreNvenc/CMakeLists.txt
Added
@@ -0,0 +1,1 @@ +ADD_SUBDIRECTORY(src)
View file
avidemux2-2.8.2.git20261020.tar.xz/avidemux_core/ADM_coreVideoEncoder/ADM_hwAccelEncoder/ADM_coreNvenc/include
Added
+(directory)
View file
avidemux2-2.8.2.git20261020.tar.xz/avidemux_core/ADM_coreVideoEncoder/ADM_hwAccelEncoder/ADM_coreNvenc/include/ADM_coreNvenc.h
Added
@@ -0,0 +1,27 @@ +/*************************************************************************** + \fn ADM_coreNvenc.h + \brief Probe codecs supported by NVENC interface and hw + + copyright : (C) 2018 by mean + email : fixounet@free.fr + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#pragma once +#include "ADM_default.h" +#include "ADM_coreVideoEncoder6_export.h" + +#define ADM_NVENC_H264_IS_SUPPORTED 1 +#define ADM_NVENC_HEVC_IS_SUPPORTED (1<<1) +#define ADM_NVENC_AV1_IS_SUPPORTED (1<<2) + +ADM_COREVIDEOENCODER6_EXPORT bool ADM_getNvencCodecSupportFlags(uint32_t *flags); + +// EOF
View file
avidemux2-2.8.2.git20261020.tar.xz/avidemux_core/ADM_coreVideoEncoder/ADM_hwAccelEncoder/ADM_coreNvenc/src
Added
+(directory)
View file
avidemux2-2.8.2.git20261020.tar.xz/avidemux_core/ADM_coreVideoEncoder/ADM_hwAccelEncoder/ADM_coreNvenc/src/ADM_coreNvenc.cpp
Added
@@ -0,0 +1,330 @@ +/*************************************************************************** + \fn ADM_coreNvenc.cpp + \brief Probe codecs supported by NVENC interface and hw + + copyright : (C) 2018 by mean + email : fixounet@free.fr + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "ADM_default.h" +#include "ADM_coreNvenc.h" + +extern "C" { +#include "dynlink_loader.h" +#include "nvEncodeAPI.h" +} + +#define ADM_NVENC_NOT_PROBED 0xFFFF0000 + +static uint32_t nvEncCodecSupportFlags = ADM_NVENC_NOT_PROBED; + +// Code stolen from libavcodec/nvenc.{c,h} + +#define LAVC_NVENCAPI_CHECK_VERSION(major, minor) \ + ((major) < NVENCAPI_MAJOR_VERSION || \ + ((major) == NVENCAPI_MAJOR_VERSION && (minor) <= NVENCAPI_MINOR_VERSION)) + +static void nvencPrintDriverReq(void) +{ +#if LAVC_NVENCAPI_CHECK_VERSION(13, 2) + const char *minVersion = "(unknown)"; +#elif LAVC_NVENCAPI_CHECK_VERSION(13, 1) + const char *minVersion = "610.00"; +#elif LAVC_NVENCAPI_CHECK_VERSION(13, 0) + const char *minVersion = "570.0"; +#elif LAVC_NVENCAPI_CHECK_VERSION(12, 2) +# ifdef _WIN32 + const char *minVersion = "551.76"; +# else + const char *minVersion = "550.54.14"; +# endif +#elif LAVC_NVENCAPI_CHECK_VERSION(12, 1) +# ifdef _WIN32 + const char *minVersion = "531.61"; +# else + const char *minVersion = "530.41.03"; +# endif +#elif LAVC_NVENCAPI_CHECK_VERSION(12, 0) +# ifdef _WIN32 + const char *minVersion = "522.25"; +# else + const char *minVersion = "520.56.06"; +# endif +#else +# ifdef _WIN32 + const char *minVersion = "471.41"; +# else + const char *minVersion = "470.57.02"; +# endif +#endif + ADM_error("The minimum required NVIDIA driver for NVENC is %s\n", minVersion); +} + +static bool checkNvEnc(void) +{ + CudaFunctions *cudaDynl = NULL; + NvencFunctions *nvencDynl = NULL; + NV_ENCODE_API_FUNCTION_LIST nvencFunc; + NV_ENC_OPEN_ENCODE_SESSION_EX_PARAMS params; + + NVENCSTATUS err; + CUresult cuerr; + uint32_t nvenc_max_ver, nbGuids; + GUID *guids; + int ret; + int nbDevices = 0; + + typedef struct { const char *name; GUID guid; } namedGuid; + + namedGuid allGuids = { + { "H264", NV_ENC_CODEC_H264_GUID } + ,{ "HEVC", NV_ENC_CODEC_HEVC_GUID } +#if LAVC_NVENCAPI_CHECK_VERSION(12, 0) + ,{ "AV1", NV_ENC_CODEC_AV1_GUID } +#endif + }; + + if (!(nvEncCodecSupportFlags & ADM_NVENC_NOT_PROBED)) + { + ADM_info("Already probed, skipping check.\n"); + return (nvEncCodecSupportFlags & (ADM_NVENC_H264_IS_SUPPORTED + ADM_NVENC_HEVC_IS_SUPPORTED + ADM_NVENC_AV1_IS_SUPPORTED)); + } + nvEncCodecSupportFlags &= ~ADM_NVENC_NOT_PROBED; + + ret = cuda_load_functions(&cudaDynl, NULL); + if (ret < 0) + return false; + + ret = nvenc_load_functions(&nvencDynl, NULL); + if (ret < 0) + { + nvencPrintDriverReq(); + cuda_free_functions(&cudaDynl); + return false; + } + + err = nvencDynl->NvEncodeAPIGetMaxSupportedVersion(&nvenc_max_ver); + if (err != NV_ENC_SUCCESS) + { + ADM_warning("Failed to query NVENC max version.\n"); + goto fail; + } + + ADM_info("Loaded NVENC version %d.%d\n", nvenc_max_ver >> 4, nvenc_max_ver & 0xf); + + if ((NVENCAPI_MAJOR_VERSION << 4 | NVENCAPI_MINOR_VERSION) > nvenc_max_ver) + { + ADM_error("Driver supports NVENC API up to version %d.%d but %d.%d is required.\n", + nvenc_max_ver >> 4, nvenc_max_ver & 0xF, + NVENCAPI_MAJOR_VERSION, NVENCAPI_MINOR_VERSION); + nvencPrintDriverReq(); + goto fail; + } + + nvencFunc.version = NV_ENCODE_API_FUNCTION_LIST_VER; + + err = nvencDynl->NvEncodeAPICreateInstance(&nvencFunc); + if (err != NV_ENC_SUCCESS) + { + ADM_error("Failed to create NVENC instance.\n"); + goto fail; + } + + ADM_info("NVENC libraries loaded and instance created successfully.\n"); + + cuerr = cudaDynl->cuInit(0); + if (cuerr != CUDA_SUCCESS) + { + ADM_error("Cannot init CUDA, NVENC is not available.\n"); + goto fail; + } + + cuerr = cudaDynl->cuDeviceGetCount(&nbDevices); + if (cuerr != CUDA_SUCCESS) + { + ADM_error("Cannot query CUDA-capable devices.\n"); + goto fail; + } + + if (!nbDevices) + { + ADM_warning("No CUDA-capable devices found, NVENC is not available.\n"); + goto fail; + } + + ADM_info("%d CUDA-capable device(s) found.\n", nbDevices); + + for (int i = 0; i < nbDevices; i++) + { +#define GPU_NAME_BUF_SIZE 128 + char gpuGPU_NAME_BUF_SIZE = {0}; + CUdevice dev; + CUcontext ctx, dummy; + void *encoder = NULL; + int major, minor; + + cuerr = cudaDynl->cuDeviceGet(&dev, i); + if (cuerr != CUDA_SUCCESS) + { + ADM_error("Cannot get CUDA device %d.\n", i); + continue; + } + + cuerr = cudaDynl->cuDeviceGetName(gpu, GPU_NAME_BUF_SIZE, dev); + if (cuerr != CUDA_SUCCESS) + { + ADM_error("Cannot query CUDA device %d name.\n", i); + continue; + } + + gpuGPU_NAME_BUF_SIZE - 1 = 0; + ADM_info("Checking CUDA device %d \"%s\"\n", i, gpu); + + cuerr = cudaDynl->cuDeviceComputeCapability(&major, &minor, dev); + if (cuerr != CUDA_SUCCESS) + { + ADM_error("Cannot query CUDA device %d compute capabilities.\n", i); + continue; + } + + ADM_info("GPU #%d - \"%s\" streaming multiprocessor version: %d.%d\n", i, gpu, major, minor); + if (((major << 4) | minor) < 0x30)
View file
avidemux2-2.8.2.git20261020.tar.xz/avidemux_core/ADM_coreVideoEncoder/ADM_hwAccelEncoder/ADM_coreNvenc/src/CMakeLists.txt
Added
@@ -0,0 +1,11 @@ +SET(ADM_LIB ADM_coreNvenc6) +ADM_ADD_SHARED_LIBRARY(${ADM_LIB}) +TARGET_SOURCES(${ADM_LIB} PRIVATE ADM_coreNvenc.cpp) +TARGET_INCLUDE_DIRECTORIES(${ADM_LIB} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../include) +TARGET_INCLUDE_DIRECTORIES(${ADM_LIB} PRIVATE ${NVENC_INCLUDE_DIR}) +TARGET_LINK_LIBRARIES(${ADM_LIB} PRIVATE ADM_core6 ADM_coreVideoEncoder6) +IF(UNIX AND NOT APPLE) + TARGET_LINK_LIBRARIES(${ADM_LIB} PRIVATE "-ldl") +ENDIF() + +ADM_INSTALL_LIB(${ADM_LIB})
View file
avidemux2-2.8.2.git20261018.tar.xz/avidemux_core/ADM_coreVideoEncoder/ADM_hwAccelEncoder/CMakeLists.txt -> avidemux2-2.8.2.git20261020.tar.xz/avidemux_core/ADM_coreVideoEncoder/ADM_hwAccelEncoder/CMakeLists.txt
Changed
@@ -2,5 +2,9 @@ UNSET(CMAKE_VISIBILITY_INLINES_HIDDEN) IF(USE_LIBVA) -ADD_SUBDIRECTORY(ADM_coreLibVAEnc) -ENDIF(USE_LIBVA) + ADD_SUBDIRECTORY(ADM_coreLibVAEnc) +ENDIF() + +IF(USE_NVENC) + ADD_SUBDIRECTORY(ADM_coreNvenc) +ENDIF()
View file
avidemux2-2.8.2.git20261018.tar.xz/avidemux_core/CMakeLists.txt -> avidemux2-2.8.2.git20261020.tar.xz/avidemux_core/CMakeLists.txt
Changed
@@ -158,6 +158,9 @@ IF(USE_VDPAU) ADM_INSTALL_INCLUDE_FOLDER("${HW_ACCEL_FOLDER}/ADM_coreVdpau/include/" ADM_coreVdpau) ENDIF() +IF(USE_NVENC) + ADM_INSTALL_INCLUDE_FOLDER("${CMAKE_CURRENT_SOURCE_DIR}/ADM_coreVideoEncoder/ADM_hwAccelEncoder/ADM_coreNvenc/include/" ADM_coreNvenc) +ENDIF() IF(USE_LIBVA) ADM_INSTALL_INCLUDE_FOLDER("${HW_ACCEL_FOLDER}/ADM_coreLibVA/include/" ADM_coreLibVA) ADM_INSTALL_INCLUDE_FOLDER("${CMAKE_CURRENT_SOURCE_DIR}/ADM_coreVideoEncoder/ADM_hwAccelEncoder/ADM_coreLibVAEnc/include/" ADM_coreLibVAEnc )
View file
avidemux2-2.8.2.git20261018.tar.xz/avidemux_plugins/ADM_videoEncoder/ffNvEnc/CMakeLists.txt -> avidemux2-2.8.2.git20261020.tar.xz/avidemux_plugins/ADM_videoEncoder/ffNvEnc/CMakeLists.txt
Changed
@@ -1,5 +1,6 @@ INCLUDE(ve_plugin) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) +INCLUDE_DIRECTORIES(${ADM_HEADER_DIR}/ADM_coreNvenc) MACRO(DEFINE_VID_ENCODER codec) SET(family ffNvenc) @@ -14,7 +15,7 @@ TARGET_COMPILE_DEFINITIONS(${outName} PUBLIC AV1_ENCODER) ENDIF("${codec}" STREQUAL "HEVC") INSTALL_VIDEO_ENCODER(${outName}) - TARGET_LINK_LIBRARIES(${outName} PRIVATE ADM_libavcodec ADM_libavutil) + TARGET_LINK_LIBRARIES(${outName} PRIVATE ADM_libavcodec ADM_libavutil ADM_coreNvenc6) ENDMACRO(DEFINE_VID_ENCODER codec) DEFINE_VID_ENCODER(H264)
View file
avidemux2-2.8.2.git20261018.tar.xz/avidemux_plugins/ADM_videoEncoder/ffNvEnc/ffNvEncPlugin.cpp -> avidemux2-2.8.2.git20261020.tar.xz/avidemux_plugins/ADM_videoEncoder/ffNvEnc/ffNvEncPlugin.cpp
Changed
@@ -19,6 +19,7 @@ #include "ADM_default.h" #include "ADM_ffNvEnc.h" #include "ADM_coreVideoEncoderInternal.h" +#include "ADM_coreNvenc.h" #include "ffnvenc_desc.cpp" extern bool ffNvEncConfigure(void); extern ffnvenc_encoder NvEncSettings; @@ -30,51 +31,24 @@ memcpy(&NvEncSettings, &defaultConf, sizeof(ffnvenc_encoder)); } - -/** - * \fn nvCheckDll - */ - -static bool nvCheckDll(const char *zwin64, const char *zwin32, const char *zlinux) -{ - const char *dll; -#ifdef _WIN32 - #ifdef _WIN64 - dll=zwin64; - #else - dll=zwin32; - #endif -#else - dll=zlinux; -#endif - - ADM_LibWrapper wrapper; - bool r=wrapper.loadLibrary(dll); - ADM_info("\t checking %s-> %d\n",dll,r); - return r; -} /** * \fn nvEncProbe */ -extern "C" +static bool nvEncProbe(void) { - static bool nvEncProbe(void) - { - // Step 1 : Try to load cuda - if(!nvCheckDll("nvcuda.dll","nvcuda.dll","libcuda.so")) - { - ADM_warning("Cannot load cuda dll\n"); - return false; - } - // Step 2 : Try to load encoder + uint32_t flags; + if (false == ADM_getNvencCodecSupportFlags(&flags)) + return false; - if(!nvCheckDll("nvEncodeAPI64.dll","nvEncodeAPI.dll","libnvidia-encode.so.1")) - { - ADM_warning("Cannot load nvidia encode dll\n"); - return false; - } - return true; - } + return (flags & +#ifdef H265_ENCODER + ADM_NVENC_HEVC_IS_SUPPORTED +#elif defined(AV1_ENCODER) + ADM_NVENC_AV1_IS_SUPPORTED +#else + ADM_NVENC_H264_IS_SUPPORTED +#endif + ); } ADM_DECLARE_VIDEO_ENCODER_PREAMBLE(ADM_ffNvEncEncoder);
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.