Projects
home:enzokiel
avidemux3
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 8
View file
avidemux3.changes
Changed
@@ -1,7 +1,7 @@ ------------------------------------------------------------------- -Wed Apr 08 09:11:41 UTC 2026 - enzokiel@kabelmail.de +Tue Apr 14 08:07:31 UTC 2026 - enzokiel@kabelmail.de -- Update to version 2.8.2.git20260407 +- Update to version 2.8.2.git20260414 - 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.git20260407 +Version: 2.8.2.git20260414 Release: 0 URL: https://github.com/mean00/avidemux2 ExclusiveArch: %ix86 x86_64
View file
avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_bullseye
Added
+(directory)
View file
avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_bullseye/Dockerfile
Added
@@ -0,0 +1,145 @@ +FROM debian:bullseye + +ARG DEBIAN_FRONTEND=noninteractive +ARG USER_UID=1000 +ARG USER_GID=1000 +ARG USERNAME=bullseye + +#RUN echo 'Acquire::http::Proxy "http://192.168.0.9:3142";' > /etc/apt/apt.conf.d/01proxy +RUN sed -i 's/ main / main contrib non-free non-free-firmware/' /etc/apt/sources.list +RUN echo "deb http://archive.debian.org/debian bullseye-backports main contrib non-free" > /etc/apt/sources.list.d/bullseye-backports.list +RUN apt-get update +RUN apt-get install -y \ + apt-utils \ + bison \ + build-essential \ + bzip2 \ + ca-certificates \ + ccache \ + check \ + curl \ + cmake-latest \ + flex \ + git \ + git-lfs \ + gperf \ + lcov \ + libbsd-dev \ + libffi-dev \ + libglib2.0-0 \ + libncurses-dev \ + libpixman-1-0 \ + libsdl2-2.0-0 \ + libslirp0 \ + libusb-1.0-0-dev \ + make \ + ninja-build \ + python3 \ + python3-venv \ + python3-crcmod \ + ruby \ + sudo \ + unzip \ + usbutils \ + wget \ + xz-utils \ + zip \ + build-essential pkg-config yasm \ + libsqlite3-dev \ + libxv-dev libvdpau-dev libva-dev libglu1-mesa-dev \ + libasound2-dev libpulse-dev \ + libx264-dev libxvidcore-dev \ + libmp3lame-dev libtwolame-dev libopus-dev libvorbis-dev libogg-dev \ + libpng-dev libass-dev \ + file \ + squashfs-tools + # app image + RUN apt-get install -y desktop-file-utils fakeroot fuse patchelf python3-pip python3-setuptools squashfs-tools strace util-linux zsync + RUN apt-get install -y zsh neovim + + RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 10 \ + && : + #libaften-dev \ + +# App image +RUN wget --no-proxy https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage && \ +chmod +x appimage-builder-1.1.0-x86_64.AppImage && \ + mv appimage-builder-1.1.0-x86_64.AppImage /usr/local/bin/appimage-builder + +RUN wget --no-proxy https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -O /usr/local/bin/linuxdeploy && \ + chmod +x /usr/local/bin/linuxdeploy + +RUN wget --no-proxy https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage \ + -O /usr/local/bin/linuxdeploy-plugin-appimage && \ + wget --no-proxy https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage \ + -O /usr/local/bin/linuxdeploy-plugin-qt && \ + wget --no-proxy https://github.com/AppImage/type2-runtime/releases/download/continuous/runtime-x86_64 \ + -O /usr/local/bin/runtime-x86_64 && \ + wget --no-proxy https://github.com/AppImage/appimagetool/releases/download/1.9.0/appimagetool-x86_64.AppImage \ + -O /usr/local/bin/appimagetool1 && \ + chmod +x /usr/local/bin/* +RUN useradd -m bullseye && usermod --shell /usr/bin/zsh bullseye +RUN chmod a+rwx /opt /usr/local/bin +# +# + +# +# +# +# Extra packages +# +# +# +RUN apt-get install -y \ + libx264-dev \ + libx265-dev \ + libvpx-dev \ + libaom-dev \ + libfuse-dev \ + libfaad-dev \ + libopencore-amrnb-dev \ + libopencore-amrwb-dev + +RUN apt-get install -y \ + qt6-base-dev qt6-l10n-tools qt6-wayland + + #libfaac-dev \ + #libfdk-aac-dev \ +#libfuse2t64 + +# +CMD "/bin/bash" + + +RUN cd /tmp && git clone https://github.com/FFmpeg/nv-codec-headers.git && cd nv-codec-headers && make install + +################################### +# Setup user env +################################### +USER ${USERNAME} +# +RUN cd /tmp && /usr/local/bin/appimagetool1 --appimage-extract && mv squashfs-root /opt/appimagetool-extracted +# +RUN cat <<EOF > /home/bullseye/.zshrc +# History Settings +HISTFILE=~/.zsh_history +HISTSIZE=10000 +SAVEHIST=10000 +setopt appendhistory +setopt sharehistory + +# Completion System +autoload -Uz compinit && compinit + +# Prompt +PROMPT='%F{cyan}%n@docker%f %F{blue}%~%f %# ' + +# Aliases +alias ls='ls --color=auto' +alias ll='ls -lah' +EOF +# give access to image tool +ENV PATH="/opt/appimagetool-extracted/usr/bin/:$PATH" + + +
View file
avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_bullseye/devcontainer.json
Added
@@ -0,0 +1,36 @@ +{ + /* A name for the dev container displayed in the UI */ + "name": "Avidemux", + /* container name when creating container */ + "image": "avidemux/avidemux_bullseye:latest", + /* mount the local folder to /workspaces folder of Docker image */ + "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/avidemux,type=bind", + /* the path of workspace folder, which means that this folder will be opened after container is running + */ + "workspaceFolder": "/workspaces/avidemux", + /* mount the VS Code extensions to the target path, and then they don't need to be installed again when rebuilding the container + */ + "mounts": + "source=extensionCache,target=/root/.vscode-server/extensions,type=volume", + "source=/run/udev,target=/run/udev,type=bind,consistency=delegated" + , + /* follow the commands of Dockerfile to create the container + */ + "build": { + "dockerfile": "Dockerfile" + }, + /* Machine specific settings that should be copied into the container + */ + "settings": { + "terminal.integrated.defaultProfile.linux": "bash", + "idf.gitPath": "/usr/bin/git" + }, + /* An array of extensions that should be installed into the container. */ + "extensions": , + /* start the container with privileged mode, otherwise the devices cannot be accessed on the Docker image. + */ + "runArgs": "--privileged", "--name", "avidemux_bullseye", + /* --device=/dev/alpha:/dev/beta + */ + "remoteUser": "bullseye" +}
View file
avidemux2-2.8.2.git20260407.tar.xz/.devcontainer_fedora/Dockerfile -> avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_fedora/Dockerfile
Changed
@@ -41,6 +41,9 @@ RUN dnf -y install qt6-*{devel,doc}* RUN dnf -y clean all +RUN cd /tmp && git clone https://github.com/FFmpeg/nv-codec-headers.git && cd nv-codec-headers && make install + + WORKDIR /home/fedora/workspace RUN chown fedora:fedora /home/fedora/workspace
View file
avidemux2-2.8.2.git20260407.tar.xz/.devcontainer_fedora/devcontainer.json -> avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_fedora/devcontainer.json
Changed
@@ -29,7 +29,8 @@ "extensions": , /* start the container with privileged mode, otherwise the devices cannot be accessed on the Docker image. */ - "runArgs": "--privileged", + "runArgs": "--privileged", "--name", "avidemux_fedora43", + /* --device=/dev/alpha:/dev/beta */ "remoteUser": "fedora"
View file
avidemux2-2.8.2.git20260407.tar.xz/.devcontainer_mxe64/Dockerfile -> avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_mxe64/Dockerfile
Changed
@@ -66,7 +66,7 @@ fuse patchelf python3-pip python3-setuptools squashfs-tools strace \ util-linux zsync libfuse2t64 \ zsh neovim \ - autoconf \ + autoconf \ automake \ autopoint \ bash \ @@ -102,7 +102,7 @@ nsis-doc \ nsis-pluginapi - RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 10 \ +RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 10 \ && : #libaften-dev \ @@ -149,6 +149,7 @@ echo "MXE_TARGETS := x86_64-w64-mingw32.shared" > settings.mk \ && echo "JOBS := 4" >> settings.mk && make qt6-qtbase RUN cd /opt/mxe && make qt6 +RUN cd /opt/mxe && make opencore-amr && make fdk-aac && make sdl3 RUN echo Done ENV PATH="/opt/mxe/usr/bin:/usr/local/bin:/opt/mxe/bin:/opt/mxe/usr/x86_64-pc-linux-gnu/qt6/bin/:${PATH}" # --- install libaom
View file
avidemux2-2.8.2.git20260407.tar.xz/.devcontainer_mxe64/devcontainer.json -> avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_mxe64/devcontainer.json
Changed
@@ -29,7 +29,7 @@ "extensions": , /* start the container with privileged mode, otherwise the devices cannot be accessed on the Docker image. */ - "runArgs": "--privileged", + "runArgs": "--privileged", "--name", "avidemux_mxe", /* --device=/dev/alpha:/dev/beta */ "remoteUser": "mxe",
View file
avidemux2-2.8.2.git20260407.tar.xz/.devcontainer_trixie/Dockerfile -> avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_trixie/Dockerfile
Changed
@@ -69,6 +69,7 @@ libx264-dev libxvidcore-dev \ libmp3lame-dev libtwolame-dev libopus-dev libvorbis-dev libogg-dev \ libpng-dev libass-dev + RUN apt-get install -y \ libfaac-dev \ libfdk-aac-dev \ @@ -84,6 +85,14 @@ RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 10 \ && : #libaften-dev \ +# Missing packages + RUN apt-get install -y \ + libopencore-amrnb-dev \ + libopencore-amrwb-dev \ + libdca-dev \ + libfaad-dev + + #libaften-dev # App image RUN wget --no-proxy https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage && \ @@ -104,6 +113,9 @@ chmod +x /usr/local/bin/* RUN useradd -m trixie && usermod --shell /usr/bin/zsh trixie # +RUN cd /tmp && git clone https://github.com/FFmpeg/nv-codec-headers.git && cd nv-codec-headers && make install +# Cleanup +#RUN apt autoclean && apt autoremove # CMD "/bin/bash"
View file
avidemux2-2.8.2.git20260407.tar.xz/.devcontainer_trixie/devcontainer.json -> avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_trixie/devcontainer.json
Changed
@@ -29,7 +29,7 @@ "extensions": , /* start the container with privileged mode, otherwise the devices cannot be accessed on the Docker image. */ - "runArgs": "--privileged", + "runArgs": "--privileged", "--name", "avidemux_trixie", /* --device=/dev/alpha:/dev/beta */ "remoteUser": "trixie"
View file
avidemux2-2.8.2.git20260407.tar.xz/.devcontainer_ubuntu2510/Dockerfile -> avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_ubuntu2510/Dockerfile
Changed
@@ -63,6 +63,9 @@ && update-alternatives --install /usr/bin/python python /usr/bin/python3 10 \ && : +RUN cd /tmp && git clone https://github.com/FFmpeg/nv-codec-headers.git && cd nv-codec-headers && make install + + RUN rm -f /etc/apt/apt.conf.d/01proxy # # Reuse Arm & Riscv toolchains
View file
avidemux2-2.8.2.git20260407.tar.xz/.devcontainer_ubuntu2510/devcontainer.json -> avidemux2-2.8.2.git20260414.tar.xz/.devcontainer_ubuntu2510/devcontainer.json
Changed
@@ -29,7 +29,7 @@ "extensions": , /* start the container with privileged mode, otherwise the devices cannot be accessed on the Docker image. */ - "runArgs": "--privileged", + "runArgs": "--privileged", "--name", "avidemux_ubuntu2510", /* --device=/dev/alpha:/dev/beta */ "remoteUser": "ubuntu"
View file
avidemux2-2.8.2.git20260407.tar.xz/appImage/checkDeps.py -> avidemux2-2.8.2.git20260414.tar.xz/appImage/checkDeps.py
Changed
@@ -46,7 +46,7 @@ for root, _, files in os.walk(appdir_path): for f in files: # Check for shared objects or files in bin folders - if f.endswith(".so") or ".so." in f or "/bin/" in root: + if f.endswith(".so") or ".so." in f or "/bin/" in root or root.endswith("/bin"): all_targets.append(os.path.join(root, f)) # 2. Check each target for host leaks
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/cli/CMakeLists.txt -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/cli/CMakeLists.txt
Changed
@@ -106,7 +106,7 @@ ADD_SUBDIRECTORY(ADM_UIs ./ADM_UIsCli) ADD_SUBDIRECTORY(ADM_userInterfaces ./ADM_userInterfacesCli) -SDLify(../common/main.cpp) +# SDLify(../common/main.cpp) IF(ADM_SUBVERSION) ADD_SOURCE_CFLAGS(../common/main.cpp "-DADM_SUBVERSION=\"${ADM_SUBVERSION}\"") ADD_SOURCE_CFLAGS(../common/main.cpp "-DFFMPEG_VERSION=\"${FFMPEG_VERSION}\"") @@ -158,9 +158,9 @@ TARGET_LINK_LIBRARIES(avidemux3_cli PRIVATE ADM_commonUI6_CLI) # SDL -IF(USE_SDL) - TARGET_LINK_LIBRARIES(avidemux3_cli PRIVATE ${SDL2_LIBRARY} ${SDL2_MAIN}) -ENDIF() +# IF(USE_SDL) +# TARGET_LINK_LIBRARIES(avidemux3_cli PRIVATE ${SDL2_LIBRARY} ${SDL2_MAIN}) +# ENDIF() # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # OS Specific
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/common/main.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/common/main.cpp
Changed
@@ -14,6 +14,7 @@ ***************************************************************************/ #include "config.h" // +// #include "ADM_coreDemuxer.h" #include "ADM_coreVideoFilterFunc.h" #include "ADM_crashdump.h" @@ -39,6 +40,13 @@ #include "adm_main.h" #include "audio_out.h" #include "prefs.h" + +#ifdef USE_SDL3 +#define SDL_MAIN_HANDLED +#include <SDL3/SDL.h> +#include <SDL3/SDL_main.h> // Optional, +#endif + #ifdef USE_VDPAU #if ADM_UI_TYPE_BUILD == ADM_UI_CLI bool vdpauProbe(void) @@ -105,11 +113,13 @@ static flavors myFlavors = {"qt4", "qt5", "qt6"}; +#ifndef WIN32 #ifdef main extern "C" { int main(int _argc, char *_argv); } +#endif #endif // main int main(int _argc, char *_argv)
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/qt4/ADM_commonUI/DIA_prefs.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/ADM_commonUI/DIA_prefs.cpp
Changed
@@ -14,8 +14,6 @@ #include "ADM_default.h" #include "config.h" -#include "prefs.h" -#include "ADM_Video.h" #include "ADM_pp.h" #include "ADM_qtx.h" @@ -30,6 +28,9 @@ #include "GUI_sdlRender.h" #endif +#include "ADM_indexingFlags.h" +#include "prefs.h" + extern const char *getNativeRendererDesc(int type); #ifdef USE_VDPAU @@ -206,21 +207,20 @@ ADM_info("Avisynth port: %d\n", defaultPortAvisynth); // Indexing -//#define INDEXING_PREFS_VERBOSE + // #define INDEXING_PREFS_VERBOSE uint32_t indexingFlags = ADM_IDX_FLAGS_DEFAULT; if (!prefs->get(INDEXING_INDEXING_FLAGS, &indexingFlags)) { indexingFlags = ADM_IDX_FLAGS_DEFAULT; } -#if 0 uint32_t idxPsFiles = flagsToIdxSettings(indexingFlags, ADM_IDX_FLAGS_OFFSET_MPEGPS); uint32_t idxTsFiles = flagsToIdxSettings(indexingFlags, ADM_IDX_FLAGS_OFFSET_MPEGTS); -#endif uint32_t idxMkvFiles = flagsToIdxSettings(indexingFlags, ADM_IDX_FLAGS_OFFSET_MATROSKA); uint32_t idxMp4Files = flagsToIdxSettings(indexingFlags, ADM_IDX_FLAGS_OFFSET_MP4); #ifdef INDEXING_PREFS_VERBOSE - ADM_info("Indexing flags: %" PRIu32" -> MPEG-PS: %" PRIu32" MPEG-TS: %" PRIu32" Matroska: %" PRIu32" MP4: %" PRIu32"\n", - indexingFlags, idxPsFiles, idxTsFiles, idxMkvFiles, idxMp4Files); + ADM_info("Indexing flags: %" PRIu32 " -> MPEG-PS: %" PRIu32 " MPEG-TS: %" PRIu32 " Matroska: %" PRIu32 + " MP4: %" PRIu32 "\n", + indexingFlags, idxPsFiles, idxTsFiles, idxMkvFiles, idxMp4Files); #endif // HDR @@ -488,26 +488,25 @@ frameAvisynth.swallow(&uintDefaultPortAvisynth); // Indexing - diaElemFrame frameIndexing(QT_TRANSLATE_NOOP("adm","Writing index to disk")); + diaElemFrame frameIndexing(QT_TRANSLATE_NOOP("adm", "Index files")); #define IDX_FORCE_MEM 0 #define IDX_USE_SAVED 1 #define IDX_WRITE_TO_DISK 2 - diaMenuEntry indexingEntries = { - {IDX_FORCE_MEM, QT_TRANSLATE_NOOP("adm","Disabled"), NULL }, - {IDX_USE_SAVED, QT_TRANSLATE_NOOP("adm","Read-only"), NULL }, - {IDX_WRITE_TO_DISK, QT_TRANSLATE_NOOP("adm","Enabled"), NULL } - }; -#if 0 - diaElemMenu menuIndexingPs(&idxPsFiles, QT_TRANSLATE_NOOP("adm","MPEG-PS files:"), NB_ITEMS(indexingEntries), indexingEntries); - diaElemMenu menuIndexingTs(&idxTsFiles, QT_TRANSLATE_NOOP("adm","MPEG-TS files:"), NB_ITEMS(indexingEntries), indexingEntries); -#endif - diaElemMenu menuIndexingMkv(&idxMkvFiles, QT_TRANSLATE_NOOP("adm","Matroska files:"), NB_ITEMS(indexingEntries), indexingEntries); - diaElemMenu menuIndexingMp4(&idxMp4Files, QT_TRANSLATE_NOOP("adm","MP4 files:"), NB_ITEMS(indexingEntries), indexingEntries); + diaMenuEntry indexingEntries = {{IDX_FORCE_MEM, QT_TRANSLATE_NOOP("adm", "Disable"), NULL}, + {IDX_USE_SAVED, QT_TRANSLATE_NOOP("adm", "Load existing only"), NULL}, + {IDX_WRITE_TO_DISK, QT_TRANSLATE_NOOP("adm", "Enable"), NULL}}; + + diaElemMenu menuIndexingPs(&idxPsFiles, QT_TRANSLATE_NOOP("adm", "MPEG-PS (.idx2):"), NB_ITEMS(indexingEntries), + indexingEntries); + diaElemMenu menuIndexingTs(&idxTsFiles, QT_TRANSLATE_NOOP("adm", "MPEG-TS (.idx2):"), NB_ITEMS(indexingEntries), + indexingEntries); + diaElemMenu menuIndexingMkv(&idxMkvFiles, QT_TRANSLATE_NOOP("adm", "Matroska (.idxb):"), NB_ITEMS(indexingEntries), + indexingEntries); + diaElemMenu menuIndexingMp4(&idxMp4Files, QT_TRANSLATE_NOOP("adm", "MP4 (.idxb):"), NB_ITEMS(indexingEntries), + indexingEntries); -#if 0 frameIndexing.swallow(&menuIndexingPs); frameIndexing.swallow(&menuIndexingTs); -#endif frameIndexing.swallow(&menuIndexingMkv); frameIndexing.swallow(&menuIndexingMp4); @@ -544,6 +543,10 @@ , {RENDER_SDL, QT_TRANSLATE_NOOP("adm", "SDL"), NULL} #endif +#ifdef USE_SDL3 + , + {RENDER_SDL3, QT_TRANSLATE_NOOP("adm", "SDL3"), NULL} +#endif }; diaElemMenu menuVideoMode(&render, QT_TRANSLATE_NOOP("adm", "Video _display:"), NB_ITEMS(videoMode), videoMode); #ifdef USE_SDL @@ -1003,14 +1006,12 @@ // Indexing indexingFlags = 0; -#if 0 indexingFlags += idxSettingsToFlags(idxPsFiles, ADM_IDX_FLAGS_OFFSET_MPEGPS); indexingFlags += idxSettingsToFlags(idxTsFiles, ADM_IDX_FLAGS_OFFSET_MPEGTS); -#endif indexingFlags += idxSettingsToFlags(idxMkvFiles, ADM_IDX_FLAGS_OFFSET_MATROSKA); indexingFlags += idxSettingsToFlags(idxMp4Files, ADM_IDX_FLAGS_OFFSET_MP4); #ifdef INDEXING_PREFS_VERBOSE - ADM_info("Setting indexing flags to %" PRIu32"\n", indexingFlags); + ADM_info("Setting indexing flags to %" PRIu32 "\n", indexingFlags); #endif prefs->set(INDEXING_INDEXING_FLAGS, indexingFlags); @@ -1065,24 +1066,24 @@ uint32_t flags = 0; switch (off) { - case ADM_IDX_FLAGS_OFFSET_MPEGPS: - case ADM_IDX_FLAGS_OFFSET_MPEGTS: - case ADM_IDX_FLAGS_OFFSET_MATROSKA: - case ADM_IDX_FLAGS_OFFSET_MP4: - break; - default: - return flags; + case ADM_IDX_FLAGS_OFFSET_MPEGPS: + case ADM_IDX_FLAGS_OFFSET_MPEGTS: + case ADM_IDX_FLAGS_OFFSET_MATROSKA: + case ADM_IDX_FLAGS_OFFSET_MP4: + break; + default: + return flags; } switch (val) { - case IDX_FORCE_MEM: - flags |= ADM_IDX_FLAG_IGNORE_INDEX_FILE << off; - break; - case IDX_WRITE_TO_DISK: - flags |= ADM_IDX_FLAG_WRITE_INDEX_FILE << off; - case IDX_USE_SAVED: - default: - break; + case IDX_FORCE_MEM: + flags |= ADM_IDX_FLAG_IGNORE_INDEX_FILE << off; + break; + case IDX_WRITE_TO_DISK: + flags |= ADM_IDX_FLAG_WRITE_INDEX_FILE << off; + case IDX_USE_SAVED: + default: + break; } return flags; } @@ -1091,13 +1092,13 @@ { switch (off) { - case ADM_IDX_FLAGS_OFFSET_MPEGPS: - case ADM_IDX_FLAGS_OFFSET_MPEGTS: - case ADM_IDX_FLAGS_OFFSET_MATROSKA: - case ADM_IDX_FLAGS_OFFSET_MP4: - break; - default: - return IDX_WRITE_TO_DISK; + case ADM_IDX_FLAGS_OFFSET_MPEGPS: + case ADM_IDX_FLAGS_OFFSET_MPEGTS: + case ADM_IDX_FLAGS_OFFSET_MATROSKA: + case ADM_IDX_FLAGS_OFFSET_MP4: + break; + default: + return IDX_WRITE_TO_DISK; } flags >>= off; if (flags & ADM_IDX_FLAG_WRITE_INDEX_FILE)
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/qt4/ADM_render_qt/CMakeLists.txt -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/ADM_render_qt/CMakeLists.txt
Changed
@@ -28,11 +28,17 @@ TARGET_SOURCES(${ADM_LIB} PRIVATE GUI_xvRender.cpp) TARGET_LINK_LIBRARIES(${ADM_LIB} PUBLIC ${XVIDEO_LIBRARY_DIR} ${XEXT_LIBRARY_DIR}) ENDIF() -IF(USE_SDL) +IF(USE_SDL3) + MESSAGE(STATUS "SDL3 enabled, disabling SDL2 to avoid symbol conflicts.") + TARGET_SOURCES(${ADM_LIB} PRIVATE GUI_sdl3Render.cpp) + TARGET_INCLUDE_DIRECTORIES(${ADM_LIB} PRIVATE ${SDL3_INCLUDE_DIRS}) + TARGET_LINK_LIBRARIES(${ADM_LIB} PUBLIC ${SDL3_LIBRARIES}) +ELSEIF(USE_SDL) TARGET_SOURCES(${ADM_LIB} PRIVATE GUI_sdlRender.cpp) SDLify(GUI_sdlRender.cpp) TARGET_LINK_LIBRARIES(${ADM_LIB} PUBLIC ${SDL2_LIBRARY}) ENDIF() + IF(USE_VDPAU) ADD_CORE_INCLUDE(ADM_coreVdpau) TARGET_SOURCES(${ADM_LIB} PRIVATE GUI_vdpauRender.cpp)
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/qt4/ADM_render_qt/GUI_render.h -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/ADM_render_qt/GUI_render.h
Changed
@@ -74,6 +74,7 @@ RENDER_DXVA2 = 8, RENDER_DEFAULT = 9, RENDER_GTK = 10, + RENDER_SDL3 = 11, RENDER_LAST } ADM_RENDER_TYPE; /**
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/qt4/ADM_render_qt/GUI_renderFactory_common.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/ADM_render_qt/GUI_renderFactory_common.cpp
Changed
@@ -22,6 +22,10 @@ extern VideoRenderBase *spawnSimpleRender(); +#ifdef USE_SDL3 +extern VideoRenderBase *spawnSdl3Render(); +#endif + #ifdef USE_SDL extern VideoRenderBase *spawnSdlRender(); #endif @@ -84,6 +88,12 @@ break; #endif +#if defined(USE_SDL3) + case RENDER_SDL3: { + TRY_RENDERER_SPAWN_ALL(spawnSdl3Render, "SDL3") + } + break; +#endif #if defined(USE_SDL) case RENDER_SDL: { TRY_RENDERER_SPAWN_ALL(spawnSdlRender, "SDL")
View file
avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/ADM_render_qt/GUI_sdl3Render.cpp
Added
@@ -0,0 +1,296 @@ +/*************************************************************************** + copyright : (C) 2026 + email : fixounet@free.fr + * + * SDL3 version +***************************************************************************/ + +#include "ADM_default.h" +#include "config.h" +// + +// clang-format off +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include "ADM_qtx.h" + +extern "C" +{ +// get rid of warnings due to different definitions +#undef HAVE_INTTYPES_H +#undef HAVE_MALLOC_H +#undef HAVE_STDINT_H +#undef HAVE_SYS_TYPES_H +#include <SDL3/SDL.h> +} + + +#include "ADM_colorspace.h" +#include "GUI_render.h" +#include "GUI_accelRender.h" +#include "GUI_sdl3Render.h" +// clang-format on + +class sdl3RenderImpl : public VideoRenderBase +{ + protected: + GUI_WindowInfo winfo; + int accel; + + public: + sdl3RenderImpl(void); + virtual ~sdl3RenderImpl(); + virtual bool init(GUI_WindowInfo *window, uint32_t w, uint32_t h, float zoom); + virtual bool stop(void); + virtual bool displayImage(ADMImage *pic); + virtual bool changeZoom(float newZoom); + virtual bool usingUIRedraw(void) + { + return false; + }; + virtual bool refresh(void); + const char *getName(); + + protected: + bool init_sdl_window_once(GUI_WindowInfo *); + bool cleanup(void); + void rescaleDisplay(void); + bool sdl_running; + SDL_Texture *sdl_texture; +}; + +/** + * spawnSdl3Render + */ +VideoRenderBase *spawnSdl3Render() +{ + return new sdl3RenderImpl(); +} + +static bool sdl3_video_initialized = false; +static SDL_Window *sdl_window = NULL; +static SDL_Renderer *sdl_renderer = NULL; + +/** + * static SDL logging + */ +static void SDL_Logger(void *userdata, int category, SDL_LogPriority priority, const char *message) +{ + ADM_info("SDL3 %s\n", message); +} + +/** + * sdlRenderImpl + */ +sdl3RenderImpl::sdl3RenderImpl(void) +{ + sdl_running = false; + sdl_texture = NULL; + accel = -1; + memset(&winfo, 0, sizeof(GUI_WindowInfo)); + winfo.scalingFactor = 1.; + ADM_info("SDL3 Created\n"); +} + +sdl3RenderImpl::~sdl3RenderImpl() +{ + stop(); +} + +bool sdl3RenderImpl::stop(void) +{ + ADM_info("SDL3 Stopping\n"); + cleanup(); + if (sdl_running) + { + ADM_info("SDL3 Video subsystem state preserved (Wayland)\n"); + sdl_running = false; + } + return true; +} + +void sdl3RenderImpl::rescaleDisplay(void) +{ + double dw = displayWidth; + double dh = displayHeight; + dw *= winfo.scalingFactor; + dh *= winfo.scalingFactor; + displayWidth = (uint32_t)(dw + 0.5); + displayHeight = (uint32_t)(dh + 0.5); +} +/* + * + */ +bool sdl3RenderImpl::init_sdl_window_once(GUI_WindowInfo *window) +{ + if (sdl3_video_initialized && sdl_window && sdl_renderer) + return true; + + int version = SDL_GetVersion(); + ADM_info("SDL3 Runtime SDL Version: %d.%d.%d\n", SDL_VERSIONNUM_MAJOR(version), SDL_VERSIONNUM_MINOR(version), + SDL_VERSIONNUM_MICRO(version)); + + SDL_SetLogOutputFunction(SDL_Logger, NULL); + // Bridge with qt6 window + if (admDetectQtEngine() == QT_WAYLAND_ENGINE) + { + SDL_SetHint(SDL_HINT_VIDEO_DRIVER, "wayland"); + SDL_SetHint(SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR, "0"); + if (window->display) + { + SDL_SetPointerProperty(SDL_GetGlobalProperties(), SDL_PROP_GLOBAL_VIDEO_WAYLAND_WL_DISPLAY_POINTER, + window->display); + } + } + SDL_SetHint(SDL_HINT_RENDER_DRIVER, "opengl,opengles2,software"); + + if (!SDL_InitSubSystem(SDL_INIT_VIDEO)) + { + const char *err = SDL_GetError(); + ADM_warning("SDL3 Video subsystem init failed, error: %s\n", (err && *err) ? err : "Unknown"); + return false; + } + ADM_info("SDL3 Video subsystem init ok, using driver: %s\n", SDL_GetCurrentVideoDriver()); + SDL_PropertiesID props = SDL_CreateProperties(); + if (admDetectQtEngine() == QT_WAYLAND_ENGINE) + { + ADM_info("SDL3 Using Wayland backend for borderless window\n"); + SDL_SetPointerProperty(props, SDL_PROP_WINDOW_CREATE_WAYLAND_WL_SURFACE_POINTER, window->windowOpaquePointer); + SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_WAYLAND_SURFACE_ROLE_CUSTOM_BOOLEAN, true); + } + SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, "avidemux_sdl3"); + // SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, (int)w); + // SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, (int)h); + SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_X_NUMBER, 0); + SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_Y_NUMBER, 0); + SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_BORDERLESS_BOOLEAN, true); + SDL_SetBooleanProperty(props, SDL_PROP_WINDOW_CREATE_OPENGL_BOOLEAN, true); + + sdl_window = SDL_CreateWindowWithProperties(props); + SDL_DestroyProperties(props); + + if (!sdl_window) + { + ADM_warning("SDL3 Window creation failed: %s\n", SDL_GetError()); + return false; + } + + ADM_info("SDL3 Creating renderer\n"); + sdl_renderer = SDL_CreateRenderer(sdl_window, NULL); + if (!sdl_renderer) + { + ADM_warning("SDL3 Renderer creation failed: %s\n", SDL_GetError()); + cleanup(); + return false; + } + sdl3_video_initialized = true; + SDL_SetRenderScale(sdl_renderer, 1.0f, 1.0f); + return true; +} +/* + * + * + */ +bool sdl3RenderImpl::init(GUI_WindowInfo *window, uint32_t w, uint32_t h, float zoom) +{ + winfo = *window; + baseInit(w, h, zoom); + rescaleDisplay(); + + sdl_running = true; + if (!sdl3RenderImpl::init_sdl_window_once(window)) + { + ADM_info("SDL3 init once failed\n"); + return false; + } + + // Ensure the persistent window/renderer are in a fresh state for each video resolution + SDL_SetWindowSize(sdl_window, (int)w, (int)h); + SDL_SetWindowPosition(sdl_window, 0, 0); + SDL_SetRenderViewport(sdl_renderer, NULL); + + ADM_info("SDL3 Relative position: X=%d, Y=%d (Scaling=%.2f)\n", winfo.x, winfo.y, winfo.scalingFactor); + ADM_info("SDL3 Opaque pointer (Surface): %p\n", winfo.windowOpaquePointer); + + sdl_texture = SDL_CreateTexture(sdl_renderer, SDL_PIXELFORMAT_YV12, SDL_TEXTUREACCESS_STREAMING, w, h); + if (!sdl_texture) + { + ADM_warning("SDL3 FAILED to create a texture (YV12)\n"); + cleanup(); + return false; + } + + ADM_info("SDL3 Setting final size\n"); + changeZoom(zoom); + SDL_RenderClear(sdl_renderer); + SDL_RenderPresent(sdl_renderer); + ADM_info("SDL3 All init done.\n"); + return true; +} + +bool sdl3RenderImpl::cleanup() +{ + ADM_info("SDL3 Cleaning up\n"); + if (sdl_texture) + { + SDL_DestroyTexture(sdl_texture); + sdl_texture = NULL; + } + // Window and renderer are persistent, they will be cleaned up by the next init if surface changes + // or eventually on exit by SDL_Quit. + return true; +} + +bool sdl3RenderImpl::displayImage(ADMImage *pic) +{ + if (!sdl_texture) + return false; + + int imagePitch3; + uint8_t *imagePtr3; + pic->GetPitches(imagePitch); + pic->GetWritePlanes(imagePtr); + + SDL_UpdateYUVTexture(sdl_texture, NULL, imagePtr0, imagePitch0, imagePtr2, imagePitch2, imagePtr1, + imagePitch1); + + SDL_RenderClear(sdl_renderer); + SDL_RenderTexture(sdl_renderer, sdl_texture, NULL, NULL); + refresh(); + return true; +} + +bool sdl3RenderImpl::refresh(void) +{ + if (!sdl_texture) + return false; + SDL_RenderPresent(sdl_renderer); + return true; +} + +bool sdl3RenderImpl::changeZoom(float newZoom) +{ + ADM_info("SDL3 changing zoom.\n"); + calcDisplayFromZoom(newZoom); + rescaleDisplay(); + currentZoom = newZoom; + if (sdl_renderer) + { + float scaleX = (float)displayWidth / (float)imageWidth; + float scaleY = (float)displayHeight / (float)imageHeight; + + ADM_info("SDL3 changeZoom: scaleX=%.2f, scaleY=%.2f (disp %ux%u, img %ux%u)\n", scaleX, scaleY, displayWidth, + displayHeight, imageWidth, imageHeight); + SDL_SetRenderScale(sdl_renderer, scaleX, scaleY); + // Do not call SDL_SetWindowSize, as Qt manages the window boundaries + // and calling it messes up the widget layout (vertical offset) on some platforms (Wayland). + // SDL_SetWindowSize(sdl_window, displayWidth, displayHeight); + } + return true; +} + +const char *sdl3RenderImpl::getName() +{ + return "SDL 3.0"; +}
View file
avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/ADM_render_qt/GUI_sdl3Render.h
Added
@@ -0,0 +1,9 @@ +#ifndef GUI_SDL3RENDER_H +#define GUI_SDL3RENDER_H + +#include "GUI_render.h" + +// Forward declare VideoRenderBase since GUI_render.h provides it +VideoRenderBase *spawnSdl3Render(void); + +#endif // GUI_SDL3RENDER_H
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2.cpp
Changed
@@ -671,8 +671,8 @@ if (currentStyle) currentStyleName = currentStyle->objectName().toLower(); // style names are case-insensitive - float stretchFactor = (0 == strcmp(currentStyleName.toUtf8().constData(), "windows11")) ? - 1.25 : DEFAULT_CT_DISPLAY_STRETCH_FACTOR; + float stretchFactor = + (0 == strcmp(currentStyleName.toUtf8().constData(), "windows11")) ? 1.25 : DEFAULT_CT_DISPLAY_STRETCH_FACTOR; ui.currentTime->setFixedSize(stretchFactor * ctrect.width(), ui.currentTime->height()); #else ui.currentTime->setFixedSize(DEFAULT_CT_DISPLAY_STRETCH_FACTOR * ctrect.width(), ui.currentTime->height()); @@ -883,13 +883,13 @@ setAcceptDrops(true); -// clang-format off + // clang-format off #ifndef __APPLE__ setWindowIcon(QIcon(MKICON(avidemux-icon))); #else setWindowIcon(QIcon(MKOSXICON(avidemux))); #endif -// clang-format on + // clang-format on // Hook also the toolbar connect(ui.toolBar, SIGNAL(actionTriggered(QAction *)), this, SLOT(searchToolBar(QAction *))); @@ -1918,7 +1918,7 @@ if (NULL != getenv("ADM_QT_STYLE_VERBOSE")) { - QString styleName ="unknown style"; + QString styleName = "unknown style"; QStyle *currentStyle = qApp->style(); if (currentStyle) styleName = currentStyle->objectName(); @@ -2894,12 +2894,17 @@ #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) ADM_info("Starting Qt5 GUI...\n"); #else +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + ADM_info("Starting Qt6 GUI...\n"); +#else ADM_info("Starting Qt4 GUI...\n"); #endif +#endif initTranslator(); global_argc = nargc; global_argv = nargv; + ADM_renderLibInit(&UI_Hooks); #if !defined(__APPLE__) && QT_VERSION >= QT_VERSION_CHECK(5, 11, 0) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0) // Despite HiDPI scaling being supported from Qt 5.6 on, important aspects @@ -3729,17 +3734,23 @@ ((MainWindow *)QuiMainWindows)->calcDockWidgetDimensions(reqw, reqh); reqw += w; reqh += h; - UI_setBlockZoomChangesFlag(true); - QuiMainWindows->resize(reqw, reqh); - ADM_info("Resizing the main window to %dx%d px\n", reqw, reqh); -#ifdef _WIN32 - QRect fs = QuiMainWindows->frameGeometry(); + uint32_t screenW = 0, screenH = 0; #if QT_VERSION < QT_VERSION_CHECK(5, 11, 0) QRect space = QApplication::desktop()->availableGeometry(); #else - QRect space = QApplication::primaryScreen()->availableGeometry(); + QRect space = QGuiApplication::primaryScreen()->availableGeometry(); #endif + if (reqw > (uint32_t)space.width()) + reqw = space.width(); + if (reqh > (uint32_t)space.height()) + reqh = space.height(); + + UI_setBlockZoomChangesFlag(true); + QuiMainWindows->resize(reqw, reqh); + ADM_info("Resizing the main window to %dx%d px (Screen: %dx%d)\n", reqw, reqh, space.width(), space.height()); +#ifdef _WIN32 + QRect fs = QuiMainWindows->frameGeometry(); int x = fs.x() + fs.width() - space.x() - space.width(); bool move = false; if (x > 0) // the right edge of the window doesn't fit into the screen
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/qt4/ADM_userInterfaces/ADM_gui/T_preview.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/ADM_userInterfaces/ADM_gui/T_preview.cpp
Changed
@@ -21,6 +21,7 @@ #include <QPaintEngine> #include <QPainter> #include <QWindow> +#include <QMainWindow> #include "ADM_qtx.h" #if QT_VERSION < QT_VERSION_CHECK(6, 5, 0) #if !defined(__APPLE__) @@ -33,10 +34,19 @@ #include <QGuiApplication> using namespace QNativeInterface; #endif -/* Probably on unix/X11 ..*/ #ifdef __APPLE__ #include <Carbon/Carbon.h> +#else +// +#ifndef _WIN32 +// Linux +#if defined(HAVE_QPLATFORM_NATIVE) +#define USE_NATIVE_API +#include <QtGui/qpa/qplatformnativeinterface.h> +#endif #endif +#endif +// #include "ADM_assert.h" #include "DIA_coreToolkit.h" #include "GUI_render.h" @@ -99,7 +109,11 @@ doOnce = false; _width = _height = 0; hostFrame = z; - + if (admDetectQtEngine() == QT_WAYLAND_ENGINE) + { + setAttribute(Qt::WA_DontCreateNativeAncestors); + setAttribute(Qt::WA_NativeWindow); + } } //{setAutoFillBackground(false);} #endif // Haiku @@ -230,6 +244,7 @@ */ static void *myDisplay = NULL; static int mySystemWindowId = 0; +static void *myWindowOpaque = NULL; /* * Apple, let them null * @@ -252,40 +267,72 @@ static void systemWindowInfo_once() { #if QT_VERSION < QT_VERSION_CHECK(6, 5, 0) - myDisplay = XOpenDisplay(NULL); + if (!myDisplay) + myDisplay = XOpenDisplay(NULL); mySystemWindowId = videoWindow->winId(); #else { - ADM_info("Running on platform %s\n", currentQApplication()->platformName().toLatin1().data()); - switch (admDetectQtEngine()) + if (!myDisplay) { - case QT_X11_ENGINE: { - auto x11 = currentQApplication()->nativeInterface<QNativeInterface::QX11Application>(); - if (x11) + ADM_info("Running on platform %s\n", currentQApplication()->platformName().toLatin1().data()); + switch (admDetectQtEngine()) { - ADM_info("found x11 display\n"); - myDisplay = x11->display(); - mySystemWindowId = videoWindow->winId(); + case QT_X11_ENGINE: { + auto x11 = currentQApplication()->nativeInterface<QNativeInterface::QX11Application>(); + if (x11) + { + ADM_info("found x11 display\n"); + myDisplay = x11->display(); + } + } + break; + case QT_WAYLAND_ENGINE: { + auto wayland = currentQApplication()->nativeInterface<QNativeInterface::QWaylandApplication>(); + if (wayland) + { + ADM_info("found wayland display\n"); + myDisplay = wayland->display(); + } + } + break; + default: + break; } } - break; + // Always refresh surface and system IDs + switch (admDetectQtEngine()) + { + case QT_X11_ENGINE: + mySystemWindowId = videoWindow->winId(); + break; case QT_WAYLAND_ENGINE: { - auto wayland = currentQApplication()->nativeInterface<QNativeInterface::QWaylandApplication>(); - if (wayland) + if (!videoWindow->testAttribute(Qt::WA_NativeWindow)) { - ADM_info("found wayland display\n"); - myDisplay = wayland->display(); - mySystemWindowId = 0; + videoWindow->setAttribute(Qt::WA_NativeWindow); } + mySystemWindowId = 0; + if (myDisplay) + { + QPlatformNativeInterface *native = currentQApplication()->platformNativeInterface(); +#ifdef USE_NATIVE_API + struct wl_surface *wlSurface = static_cast<struct wl_surface *>( + native->nativeResourceForWindow("surface", videoWindow->windowHandle())); + ADM_info("DEBUG videoWindow=%p, handle=%p, wl_surface=%p\n", videoWindow, videoWindow->windowHandle(), + wlSurface); + myWindowOpaque = wlSurface; +#else + myWindowOpaque = NULL; +#endif + } + else + myWindowOpaque = NULL; } break; - default: { - ADM_warning("Cannot get qt engine infos\n"); - myDisplay = NULL; + default: mySystemWindowId = 0; + myWindowOpaque = NULL; break; } - } } #endif } @@ -296,14 +343,14 @@ */ static void systemWindowInfo(GUI_WindowInfo *xinfo) { - if (!myDisplay) - systemWindowInfo_once(); + systemWindowInfo_once(); // Refresh info every time QWindow *window = QuiMainWindows->windowHandle(); if (window) xinfo->scalingFactor = (double)window->devicePixelRatio(); xinfo->systemWindowId = mySystemWindowId; xinfo->display = myDisplay; + xinfo->windowOpaquePointer = myWindowOpaque; } /** @@ -314,10 +361,36 @@ ADM_assert(videoWindow); QWidget *widget = videoWindow->parentWidget(); xinfo->widget = videoWindow; + // xinfo->windowOpaquePointer = myWindowOpaque; xinfo->systemWindowId = 0; xinfo->scalingFactor = 1.; QPoint localPoint(0, 0); - QPoint windowPoint = videoWindow->mapToGlobal(localPoint); + QPoint windowPoint; + if (admDetectQtEngine() == QT_WAYLAND_ENGINE) + { + videoWindow->winId(); // Force handle creation + QMainWindow *mw = qobject_cast<QMainWindow *>(videoWindow->window()); + QWidget *ref = mw ? mw->centralWidget() : videoWindow->window(); + if (!ref) + ref = videoWindow->window(); + + QPoint pWindow = videoWindow->mapTo(videoWindow->window(), QPoint(0, 0)); + QWindow *handle = videoWindow->windowHandle(); + + // Calculate the workspace origin (below toolbars) + QPoint pWorkspace = ref->mapTo(videoWindow->window(), QPoint(0, 0)); + + // Use the X from the layout but anchor Y to the top of the central area + windowPoint = QPoint(pWindow.x(), pWorkspace.y()); + ADM_info("DEBUG pWindow=(%d, %d), pWorkspace.y=%d, final windowPoint=(%d, %d)\n", pWindow.x(), pWindow.y(), + pWorkspace.y(), windowPoint.x(), windowPoint.y()); + if (handle) + { + handle->setPosition(windowPoint); + } + } + else + windowPoint = videoWindow->mapToGlobal(localPoint); xinfo->x = windowPoint.x(); xinfo->y = windowPoint.y(); xinfo->width = displayW;
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/qt4/CMakeLists.txt -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/CMakeLists.txt
Changed
@@ -103,7 +103,9 @@ # Qt4 openGL INCLUDE(admCheckOpenGl) IF(NOT APPLE) - INCLUDE(FindSDL2) + IF(NOT USE_SDL3) + INCLUDE(FindSDL2) + ENDIF() ENDIF() # #-- @@ -242,7 +244,10 @@ # SDL -if(USE_SDL) +if(USE_SDL3) + MESSAGE(STATUS "Linking main app with SDL3") + TARGET_LINK_LIBRARIES(avidemux3_${QT_EXTENSION} PRIVATE SDL3) +elseif(USE_SDL) TARGET_LINK_LIBRARIES(avidemux3_${QT_EXTENSION} PRIVATE ${SDL2_LIBRARY} ${SDL2_MAIN}) ENDIF()
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux/qt4/cmake/admCheckQt6.cmake -> avidemux2-2.8.2.git20260414.tar.xz/avidemux/qt4/cmake/admCheckQt6.cmake
Changed
@@ -38,6 +38,9 @@ MESSAGE(STATUS "Checking for Qt6Network") FIND_PACKAGE(Qt6 COMPONENTS Network) + MESSAGE(STATUS "Checking for GuiPrivate") # This is needed to get the wayland window id + FIND_PACKAGE(Qt6 COMPONENTS GuiPrivate) + IF(Qt6Core_FOUND AND Qt6Gui_FOUND AND Qt6Widgets_FOUND AND Qt6OpenGLWidgets_FOUND AND Qt6Network_FOUND) MESSAGE(STATUS "Qt6 found") SET(QT6_FOUND 1) @@ -52,6 +55,10 @@ SET(QT_QTGUI_LIBRARY ${Qt6Gui_LIBRARIES} ${Qt6Widgets_LIBRARIES} ${Qt6OpenGLWidgets_LIBRARIES}) SET(QT_DEFINITIONS ${Qt6Core_DEFINITIONS} ${Qt6Widgets_DEFINITIONS} ${Qt6OpenGLWidgets_DEFINITIONS} ${Qt6Network_DEFINITIONS}) + IF(Qt6GuiPrivate_FOUND) + SET(QT_QTGUI_LIBRARY ${QT_QTGUI_LIBRARY} Qt6::GuiPrivate) + SET(QT_DEFINITIONS ${QT_DEFINITIONS} -DHAVE_QPLATFORM_NATIVE) + ENDIF() MARK_AS_ADVANCED(LRELEASE_EXECUTABLE) MARK_AS_ADVANCED(QT_MKSPECS_DIR)
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_core/ADM_coreDemuxer/include/ADM_Video.h -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_core/ADM_coreDemuxer/include/ADM_Video.h
Changed
@@ -38,20 +38,6 @@ #define ADM_COL_FLAG_MATRIX_COEFF_SET (1<<3) #define ADM_COL_FLAG_HDR_INFO_SET (1<<4) -#define ADM_IDX_FLAG_WRITE_INDEX_FILE 1 -#define ADM_IDX_FLAG_IGNORE_INDEX_FILE (1<<1) - -#define ADM_IDX_FLAGS_OFFSET_MPEGPS 0 -#define ADM_IDX_FLAGS_OFFSET_MPEGTS 4 -#define ADM_IDX_FLAGS_OFFSET_MATROSKA 8 -#define ADM_IDX_FLAGS_OFFSET_MP4 12 - -#define ADM_IDX_FLAGS_DEFAULT \ -((ADM_IDX_FLAG_WRITE_INDEX_FILE << ADM_IDX_FLAGS_OFFSET_MPEGPS) + \ - (ADM_IDX_FLAG_WRITE_INDEX_FILE << ADM_IDX_FLAGS_OFFSET_MPEGTS) + \ - (ADM_IDX_FLAG_WRITE_INDEX_FILE << ADM_IDX_FLAGS_OFFSET_MATROSKA) + \ - (ADM_IDX_FLAG_WRITE_INDEX_FILE << ADM_IDX_FLAGS_OFFSET_MP4)) - typedef struct { uint32_t encoding; // Same as in wavheader
View file
avidemux2-2.8.2.git20260414.tar.xz/avidemux_core/ADM_coreDemuxer/include/ADM_indexingFlags.h
Added
@@ -0,0 +1,44 @@ +/*************************************************************************** + * Definitions used to store indexing settings for various demuxers * + * in a single uint32_t value * + * Copyright (C) 2026 eumagga0x2a * + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ +#ifndef ADM_IDX_FLAGS_H +#define ADM_IDX_FLAGS_H + +// Allow a particular demuxer to create index files on disk. +// If unset, use existing ones if possible, else create index in-memory. +#define ADM_IDX_FLAG_WRITE_INDEX_FILE 1 +// Create index in-memory, even if a matching valid index file on disk exists. +#define ADM_IDX_FLAG_IGNORE_INDEX_FILE (1<<1) + +// Each demuxer has 4 bits in a single uint32_t preference. +#define ADM_IDX_FLAGS_OFFSET_MPEGPS 0 +#define ADM_IDX_FLAGS_OFFSET_MPEGTS 4 +#define ADM_IDX_FLAGS_OFFSET_MATROSKA 8 +#define ADM_IDX_FLAGS_OFFSET_MP4 12 + +// By default, create index files on disk. +#define ADM_IDX_FLAGS_DEFAULT \ +((ADM_IDX_FLAG_WRITE_INDEX_FILE << ADM_IDX_FLAGS_OFFSET_MPEGPS) + \ + (ADM_IDX_FLAG_WRITE_INDEX_FILE << ADM_IDX_FLAGS_OFFSET_MPEGTS) + \ + (ADM_IDX_FLAG_WRITE_INDEX_FILE << ADM_IDX_FLAGS_OFFSET_MATROSKA) + \ + (ADM_IDX_FLAG_WRITE_INDEX_FILE << ADM_IDX_FLAGS_OFFSET_MP4)) + +typedef enum +{ + ADM_IDX_WRITE_TO_DISK = 0, + ADM_IDX_USE_EXISTING, + ADM_IDX_MEMFILE_ONLY +} ADM_indexingType; + +#endif
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_core/ADM_coreDemuxerMpeg/include/ADM_indexFile.h -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_core/ADM_coreDemuxerMpeg/include/ADM_indexFile.h
Changed
@@ -66,7 +66,7 @@ indexFile(); ~indexFile(); - bool open(const char *name); + bool open(const char *name, bool memOnly = false); bool close(void); bool goToSection(const char *section); bool readSection(const char *section);
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_core/ADM_coreDemuxerMpeg/src/ADM_indexFile.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_core/ADM_coreDemuxerMpeg/src/ADM_indexFile.cpp
Changed
@@ -118,9 +118,10 @@ */ -bool indexFile::open(const char *name) +bool indexFile::open(const char *name, bool memOnly) { - file=ADM_fopen(name,"rt"); + if(!memOnly) + file = ADM_fopen(name,"rt"); if(!file) { mFile = mfopen(name,"rt");
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_core/ADM_coreUI/include/ADM_windowInfo.h -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_core/ADM_coreUI/include/ADM_windowInfo.h
Changed
@@ -4,20 +4,21 @@ */ /*************************************************************************** -* * -* 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. * -* * -***************************************************************************/ + * * + * 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. * + * * + ***************************************************************************/ #ifndef ADM_WINDOW_INFO_H #define ADM_WINDOW_INFO_H typedef struct { - void *display; // X11 display System - void *widget; // QT widget - int systemWindowId; + void *display; // X11 display System + void *widget; // QT widget + int systemWindowId; // X11 window + void *windowOpaquePointer; // for SDL/Wayland , wl_surface int x; int y; int width;
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_core/ADM_coreUtils/src/prefs2.conf -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_core/ADM_coreUtils/src/prefs2.conf
Changed
@@ -88,7 +88,7 @@ string:audiodevice, ALSA string:alsa_device, "dmix" } -uint32_t:videodevice, 0, 0, 10 +uint32_t:videodevice, 0, 0, 11 # priority{ uint32_t:encoding, 3, 0, 4
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_core/ADM_coreUtils/src/prefs2_pref.h -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_core/ADM_coreUtils/src/prefs2_pref.h
Changed
@@ -9,83 +9,83 @@ const char *max; char *Value; }optionDesc; -#endif -static optionDesc myOptions={ -{ VERSION_APIVERSION,"version.apiVersion" ,ADM_param_uint32_t ,"1", 0, 999}, -{ FEATURES_SWAP_IF_A_GREATER_THAN_B,"features.swap_if_A_greater_than_B",ADM_param_bool ,"1", 0, 1}, -{ FEATURES_SAVEPREFSONEXIT,"features.saveprefsonexit" ,ADM_param_bool ,"1", 0, 1}, -{ FEATURES_IGNORESAVEDMARKERS,"features.ignoresavedmarkers" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_REUSE_2PASS_LOG,"features.reuse_2pass_log" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_AUDIOBAR_USES_MASTER,"features.audiobar_uses_master" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_THREADING_LAVC,"features.threading_lavc" ,ADM_param_uint32_t ,"0", 0, 32}, -{ FEATURES_CPU_CAPS,"features.cpu_caps" ,ADM_param_uint32_t ,"4294967295", 0, 4294967295}, -{ FEATURES_CACHE_SIZE,"features.cache_size" ,ADM_param_uint32_t ,"16", 8, 16}, -{ FEATURES_SHARED_CACHE,"features.shared_cache" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_MPEG_NO_LIMIT,"features.mpeg_no_limit" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_DXVA2,"features.dxva2" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_DXVA2_OVERRIDE_BLACKLIST_VERSION,"features.dxva2_override_blacklist_version",ADM_param_bool ,"0", 0, 1}, -{ FEATURES_DXVA2_OVERRIDE_BLACKLIST_PROFILE,"features.dxva2_override_blacklist_profile",ADM_param_bool ,"0", 0, 1}, -{ FEATURES_VDPAU,"features.vdpau" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_XVBA,"features.xvba" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_LIBVA,"features.libva" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_NVDEC,"features.nvdec" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_VIDEOTOOLBOX,"features.videotoolbox" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_ENABLE_OPENGL,"features.enable_opengl" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_FILTER_PREVIEW_CANVAS_OPENGL,"features.filter_preview_canvas_opengl",ADM_param_bool ,"1", 0, 1}, -{ FEATURES_CAP_REFRESH_ENABLED,"features.cap_refresh_enabled" ,ADM_param_bool ,"0", 0, 1}, -{ FEATURES_CAP_REFRESH_VALUE,"features.cap_refresh_value" ,ADM_param_uint32_t ,"100", 10, 1000}, -{ FEATURES_SDLDRIVER,"features.sdlDriver" ,ADM_param_stdstring ,"", 0, 0}, -{ FEATURES_USE_LAST_READ_DIR_AS_TARGET,"features.use_last_read_dir_as_target",ADM_param_bool ,"0", 0, 1}, -{ FEATURES_SWAP_MOUSE_WHEEL,"features.swap_mouse_wheel" ,ADM_param_bool ,"0", 0, 1}, -{ KEYBOARD_SHORTCUTS_USE_ALTERNATE_KBD_SHORTCUTS,"keyboard_shortcuts.use_alternate_kbd_shortcuts",ADM_param_bool ,"0", 0, 1}, -{ KEYBOARD_SHORTCUTS_SWAP_UP_DOWN_KEYS,"keyboard_shortcuts.swap_up_down_keys",ADM_param_bool ,"0", 0, 1}, -{ KEYBOARD_SHORTCUTS_ALT_MARK_A,"keyboard_shortcuts.alt_mark_a" ,ADM_param_stdstring ,"I", 0, 0}, -{ KEYBOARD_SHORTCUTS_ALT_MARK_B,"keyboard_shortcuts.alt_mark_b" ,ADM_param_stdstring ,"O", 0, 0}, -{ KEYBOARD_SHORTCUTS_ALT_RESET_MARK_A,"keyboard_shortcuts.alt_reset_mark_a",ADM_param_stdstring ,"U", 0, 0}, -{ KEYBOARD_SHORTCUTS_ALT_RESET_MARK_B,"keyboard_shortcuts.alt_reset_mark_b",ADM_param_stdstring ,"P", 0, 0}, -{ KEYBOARD_SHORTCUTS_ALT_RESET_MARKERS,"keyboard_shortcuts.alt_reset_markers",ADM_param_stdstring ,"R", 0, 0}, -{ KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_A,"keyboard_shortcuts.alt_goto_mark_a",ADM_param_stdstring ,"A", 0, 0}, -{ KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_B,"keyboard_shortcuts.alt_goto_mark_b",ADM_param_stdstring ,"B", 0, 0}, -{ KEYBOARD_SHORTCUTS_ALT_BEGIN,"keyboard_shortcuts.alt_begin" ,ADM_param_stdstring ,"S", 0, 0}, -{ KEYBOARD_SHORTCUTS_ALT_END,"keyboard_shortcuts.alt_end" ,ADM_param_stdstring ,"E", 0, 0}, -{ KEYBOARD_SHORTCUTS_ALT_DELETE,"keyboard_shortcuts.alt_delete" ,ADM_param_stdstring ,"Delete", 0, 0}, -{ UPDATE_ENABLED,"update.enabled" ,ADM_param_bool ,"1", 0, 1}, -{ UPDATE_LASTCHECK,"update.lastCheck" ,ADM_param_uint32_t ,"0", 0, 5000}, -{ LASTFILES_LASTDIR_READ,"lastfiles.lastdir_read" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTFILES_LASTDIR_WRITE,"lastfiles.lastdir_write" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTFILES_FILE1,"lastfiles.file1" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTFILES_FILE2,"lastfiles.file2" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTFILES_FILE3,"lastfiles.file3" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTFILES_FILE4,"lastfiles.file4" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTPROJECTS_LASTDIR_READ,"lastprojects.lastdir_read" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTPROJECTS_LASTDIR_WRITE,"lastprojects.lastdir_write" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTPROJECTS_FILE1,"lastprojects.file1" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTPROJECTS_FILE2,"lastprojects.file2" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTPROJECTS_FILE3,"lastprojects.file3" ,ADM_param_stdstring ,"", 0, 0}, -{ LASTPROJECTS_FILE4,"lastprojects.file4" ,ADM_param_stdstring ,"", 0, 0}, -{ MESSAGE_LEVEL,"message_level" ,ADM_param_uint32_t ,"2", 0, 2}, -{ AUDIO_DEVICE_AUDIODEVICE,"audio_device.audiodevice" ,ADM_param_stdstring ,"ALSA", 0, 0}, -{ AUDIO_DEVICE_ALSA_DEVICE,"audio_device.alsa_device" ,ADM_param_stdstring ,"dmix", 0, 0}, -{ VIDEODEVICE,"videodevice" ,ADM_param_uint32_t ,"0", 0, 10}, -{ PRIORITY_ENCODING,"priority.encoding" ,ADM_param_uint32_t ,"3", 0, 4}, -{ PRIORITY_PLAYBACK,"priority.playback" ,ADM_param_uint32_t ,"0", 0, 4}, -{ DEFAULT_POSTPROC_TYPE,"Default.postproc_type" ,ADM_param_uint32_t ,"0", 0, 7}, -{ DEFAULT_POSTPROC_VALUE,"Default.postproc_value" ,ADM_param_uint32_t ,"0", 0, 5}, -{ DEFAULT_DOWNMIXING,"Default.downmixing" ,ADM_param_uint32_t ,"1", 0, 5}, -{ DEFAULT_LANGUAGE,"Default.language" ,ADM_param_stdstring ,"", 0, 0}, -{ DEFAULT_WARN_FOR_FONTS,"Default.warn_for_fonts" ,ADM_param_bool ,"1", 0, 1}, -{ DEFAULT_MULTILOAD_USE_CUSTOM_SIZE,"Default.multiload_use_custom_size",ADM_param_bool ,"0", 0, 1}, -{ DEFAULT_MULTILOAD_CUSTOM_SIZE_M,"Default.multiload_custom_size_m" ,ADM_param_uint32_t ,"4000", 250, 8192}, -{ DEFAULT_DELETE_FIRST_PASS_LOG_FILES,"Default.delete_first_pass_log_files",ADM_param_bool ,"0", 0, 1}, -{ AVISYNTH_AVISYNTH_ALWAYS_ASK,"avisynth.avisynth_always_ask" ,ADM_param_bool ,"0", 0, 1}, -{ AVISYNTH_AVISYNTH_DEFAULTPORT,"avisynth.avisynth_defaultport" ,ADM_param_uint32_t ,"9999", 1024, 65535}, -{ AVISYNTH_AVISYNTH_LOCALPORT,"avisynth.avisynth_localport" ,ADM_param_uint32_t ,"0", 1024, 65535}, -{ RESET_ENCODER_ON_VIDEO_LOAD,"reset_encoder_on_video_load" ,ADM_param_bool ,"0", 0, 1}, -{ PICTURES_LOAD_IN_REVERSE_ORDER,"pictures.load_in_reverse_order" ,ADM_param_bool ,"0", 0, 1}, -{ PICTURES_FPS_TYPE,"pictures.fps_type" ,ADM_param_uint32_t ,"1", 0, 6}, -{ HDR_TONEMAPPING,"hdr.tonemapping" ,ADM_param_uint32_t ,"1", 0, 99}, -{ HDR_TARGET_LUMINANCE,"hdr.target_luminance" ,ADM_param_float ,"100.0", 0.0, 1000.0}, -{ HDR_OUT_OF_GAMUT_HANDLING,"hdr.out_of_gamut_handling" ,ADM_param_uint32_t ,"0", 0, 99}, -{ INDEXING_INDEXING_FLAGS,"indexing.indexing_flags" ,ADM_param_uint32_t ,"0", 0, 4294967295}, +#endif +static optionDesc myOptions = { + {VERSION_APIVERSION, "version.apiVersion", ADM_param_uint32_t, "1", 0, 999}, + {FEATURES_SWAP_IF_A_GREATER_THAN_B, "features.swap_if_A_greater_than_B", ADM_param_bool, "1", 0, 1}, + {FEATURES_SAVEPREFSONEXIT, "features.saveprefsonexit", ADM_param_bool, "1", 0, 1}, + {FEATURES_IGNORESAVEDMARKERS, "features.ignoresavedmarkers", ADM_param_bool, "0", 0, 1}, + {FEATURES_REUSE_2PASS_LOG, "features.reuse_2pass_log", ADM_param_bool, "0", 0, 1}, + {FEATURES_AUDIOBAR_USES_MASTER, "features.audiobar_uses_master", ADM_param_bool, "0", 0, 1}, + {FEATURES_THREADING_LAVC, "features.threading_lavc", ADM_param_uint32_t, "0", 0, 32}, + {FEATURES_CPU_CAPS, "features.cpu_caps", ADM_param_uint32_t, "4294967295", 0, 4294967295}, + {FEATURES_CACHE_SIZE, "features.cache_size", ADM_param_uint32_t, "16", 8, 16}, + {FEATURES_SHARED_CACHE, "features.shared_cache", ADM_param_bool, "0", 0, 1}, + {FEATURES_MPEG_NO_LIMIT, "features.mpeg_no_limit", ADM_param_bool, "0", 0, 1}, + {FEATURES_DXVA2, "features.dxva2", ADM_param_bool, "0", 0, 1}, + {FEATURES_DXVA2_OVERRIDE_BLACKLIST_VERSION, "features.dxva2_override_blacklist_version", ADM_param_bool, "0", 0, 1}, + {FEATURES_DXVA2_OVERRIDE_BLACKLIST_PROFILE, "features.dxva2_override_blacklist_profile", ADM_param_bool, "0", 0, 1}, + {FEATURES_VDPAU, "features.vdpau", ADM_param_bool, "0", 0, 1}, + {FEATURES_XVBA, "features.xvba", ADM_param_bool, "0", 0, 1}, + {FEATURES_LIBVA, "features.libva", ADM_param_bool, "0", 0, 1}, + {FEATURES_NVDEC, "features.nvdec", ADM_param_bool, "0", 0, 1}, + {FEATURES_VIDEOTOOLBOX, "features.videotoolbox", ADM_param_bool, "0", 0, 1}, + {FEATURES_ENABLE_OPENGL, "features.enable_opengl", ADM_param_bool, "0", 0, 1}, + {FEATURES_FILTER_PREVIEW_CANVAS_OPENGL, "features.filter_preview_canvas_opengl", ADM_param_bool, "1", 0, 1}, + {FEATURES_CAP_REFRESH_ENABLED, "features.cap_refresh_enabled", ADM_param_bool, "0", 0, 1}, + {FEATURES_CAP_REFRESH_VALUE, "features.cap_refresh_value", ADM_param_uint32_t, "100", 10, 1000}, + {FEATURES_SDLDRIVER, "features.sdlDriver", ADM_param_stdstring, "", 0, 0}, + {FEATURES_USE_LAST_READ_DIR_AS_TARGET, "features.use_last_read_dir_as_target", ADM_param_bool, "0", 0, 1}, + {FEATURES_SWAP_MOUSE_WHEEL, "features.swap_mouse_wheel", ADM_param_bool, "0", 0, 1}, + {KEYBOARD_SHORTCUTS_USE_ALTERNATE_KBD_SHORTCUTS, "keyboard_shortcuts.use_alternate_kbd_shortcuts", ADM_param_bool, + "0", 0, 1}, + {KEYBOARD_SHORTCUTS_SWAP_UP_DOWN_KEYS, "keyboard_shortcuts.swap_up_down_keys", ADM_param_bool, "0", 0, 1}, + {KEYBOARD_SHORTCUTS_ALT_MARK_A, "keyboard_shortcuts.alt_mark_a", ADM_param_stdstring, "I", 0, 0}, + {KEYBOARD_SHORTCUTS_ALT_MARK_B, "keyboard_shortcuts.alt_mark_b", ADM_param_stdstring, "O", 0, 0}, + {KEYBOARD_SHORTCUTS_ALT_RESET_MARK_A, "keyboard_shortcuts.alt_reset_mark_a", ADM_param_stdstring, "U", 0, 0}, + {KEYBOARD_SHORTCUTS_ALT_RESET_MARK_B, "keyboard_shortcuts.alt_reset_mark_b", ADM_param_stdstring, "P", 0, 0}, + {KEYBOARD_SHORTCUTS_ALT_RESET_MARKERS, "keyboard_shortcuts.alt_reset_markers", ADM_param_stdstring, "R", 0, 0}, + {KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_A, "keyboard_shortcuts.alt_goto_mark_a", ADM_param_stdstring, "A", 0, 0}, + {KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_B, "keyboard_shortcuts.alt_goto_mark_b", ADM_param_stdstring, "B", 0, 0}, + {KEYBOARD_SHORTCUTS_ALT_BEGIN, "keyboard_shortcuts.alt_begin", ADM_param_stdstring, "S", 0, 0}, + {KEYBOARD_SHORTCUTS_ALT_END, "keyboard_shortcuts.alt_end", ADM_param_stdstring, "E", 0, 0}, + {KEYBOARD_SHORTCUTS_ALT_DELETE, "keyboard_shortcuts.alt_delete", ADM_param_stdstring, "Delete", 0, 0}, + {UPDATE_ENABLED, "update.enabled", ADM_param_bool, "1", 0, 1}, + {UPDATE_LASTCHECK, "update.lastCheck", ADM_param_uint32_t, "0", 0, 5000}, + {LASTFILES_LASTDIR_READ, "lastfiles.lastdir_read", ADM_param_stdstring, "", 0, 0}, + {LASTFILES_LASTDIR_WRITE, "lastfiles.lastdir_write", ADM_param_stdstring, "", 0, 0}, + {LASTFILES_FILE1, "lastfiles.file1", ADM_param_stdstring, "", 0, 0}, + {LASTFILES_FILE2, "lastfiles.file2", ADM_param_stdstring, "", 0, 0}, + {LASTFILES_FILE3, "lastfiles.file3", ADM_param_stdstring, "", 0, 0}, + {LASTFILES_FILE4, "lastfiles.file4", ADM_param_stdstring, "", 0, 0}, + {LASTPROJECTS_LASTDIR_READ, "lastprojects.lastdir_read", ADM_param_stdstring, "", 0, 0}, + {LASTPROJECTS_LASTDIR_WRITE, "lastprojects.lastdir_write", ADM_param_stdstring, "", 0, 0}, + {LASTPROJECTS_FILE1, "lastprojects.file1", ADM_param_stdstring, "", 0, 0}, + {LASTPROJECTS_FILE2, "lastprojects.file2", ADM_param_stdstring, "", 0, 0}, + {LASTPROJECTS_FILE3, "lastprojects.file3", ADM_param_stdstring, "", 0, 0}, + {LASTPROJECTS_FILE4, "lastprojects.file4", ADM_param_stdstring, "", 0, 0}, + {MESSAGE_LEVEL, "message_level", ADM_param_uint32_t, "2", 0, 2}, + {AUDIO_DEVICE_AUDIODEVICE, "audio_device.audiodevice", ADM_param_stdstring, "ALSA", 0, 0}, + {AUDIO_DEVICE_ALSA_DEVICE, "audio_device.alsa_device", ADM_param_stdstring, "dmix", 0, 0}, + {VIDEODEVICE, "videodevice", ADM_param_uint32_t, "0", 0, 11}, + {PRIORITY_ENCODING, "priority.encoding", ADM_param_uint32_t, "3", 0, 4}, + {PRIORITY_PLAYBACK, "priority.playback", ADM_param_uint32_t, "0", 0, 4}, + {DEFAULT_POSTPROC_TYPE, "Default.postproc_type", ADM_param_uint32_t, "0", 0, 7}, + {DEFAULT_POSTPROC_VALUE, "Default.postproc_value", ADM_param_uint32_t, "0", 0, 5}, + {DEFAULT_DOWNMIXING, "Default.downmixing", ADM_param_uint32_t, "1", 0, 5}, + {DEFAULT_LANGUAGE, "Default.language", ADM_param_stdstring, "", 0, 0}, + {DEFAULT_WARN_FOR_FONTS, "Default.warn_for_fonts", ADM_param_bool, "1", 0, 1}, + {DEFAULT_MULTILOAD_USE_CUSTOM_SIZE, "Default.multiload_use_custom_size", ADM_param_bool, "0", 0, 1}, + {DEFAULT_MULTILOAD_CUSTOM_SIZE_M, "Default.multiload_custom_size_m", ADM_param_uint32_t, "4000", 250, 8192}, + {DEFAULT_DELETE_FIRST_PASS_LOG_FILES, "Default.delete_first_pass_log_files", ADM_param_bool, "0", 0, 1}, + {AVISYNTH_AVISYNTH_ALWAYS_ASK, "avisynth.avisynth_always_ask", ADM_param_bool, "0", 0, 1}, + {AVISYNTH_AVISYNTH_DEFAULTPORT, "avisynth.avisynth_defaultport", ADM_param_uint32_t, "9999", 1024, 65535}, + {AVISYNTH_AVISYNTH_LOCALPORT, "avisynth.avisynth_localport", ADM_param_uint32_t, "0", 1024, 65535}, + {RESET_ENCODER_ON_VIDEO_LOAD, "reset_encoder_on_video_load", ADM_param_bool, "0", 0, 1}, + {PICTURES_LOAD_IN_REVERSE_ORDER, "pictures.load_in_reverse_order", ADM_param_bool, "0", 0, 1}, + {PICTURES_FPS_TYPE, "pictures.fps_type", ADM_param_uint32_t, "1", 0, 6}, + {HDR_TONEMAPPING, "hdr.tonemapping", ADM_param_uint32_t, "1", 0, 99}, + {HDR_TARGET_LUMINANCE, "hdr.target_luminance", ADM_param_float, "100.0", 0.0, 1000.0}, + {HDR_OUT_OF_GAMUT_HANDLING, "hdr.out_of_gamut_handling", ADM_param_uint32_t, "0", 0, 99}, + {INDEXING_INDEXING_FLAGS, "indexing.indexing_flags", ADM_param_uint32_t, "0", 0, 4294967295}, }; -
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_core/cmake/admCheckMiscLibs.cmake -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_core/cmake/admCheckMiscLibs.cmake
Changed
@@ -6,28 +6,55 @@ checkGettext() SET(ADM_LOCALE "${CMAKE_INSTALL_PREFIX}/share/locale") +######################################## +# SDL3 +######################################## +OPTION(SDL3 "" ON) + +MESSAGE(STATUS "Checking for SDL3 ") +MESSAGE(STATUS "**************************************") + +IF(SDL3 AND NOT MSVC) + FIND_PACKAGE(PkgConfig) + PKG_CHECK_MODULES(SDL3 sdl3) + PRINT_LIBRARY_INFO("SDL3" SDL3_FOUND "${SDL3_INCLUDE_DIR}" "${SDL3_LIBRARY}") + + MARK_AS_ADVANCED(SDL3_INCLUDE_DIR) + MARK_AS_ADVANCED(SDL3_LIBRARY) + + IF(SDL3_FOUND) + SET(USE_SDL3 1) + ENDIF() +ELSE() + MESSAGE("${MSG_DISABLE_OPTION}") +ENDIF() + +APPEND_SUMMARY_LIST("Miscellaneous" "SDL3" "${USE_SDL3}") + +MESSAGE("") + ######################################## # SDL -######################################## +######################### /tmp/logCmakebuildCore_debug############### OPTION(SDL "" ON) MESSAGE(STATUS "Checking for SDL>=2 (only for windows)") MESSAGE(STATUS "**************************************") IF(SDL AND WIN32 AND NOT MSVC) - FIND_PACKAGE(SDL2) - PRINT_LIBRARY_INFO("SDL2" SDL2_FOUND "${SDL2_INCLUDE_DIR}" "${SDL2_LIBRARY}") + FIND_PACKAGE(SDL2) + PRINT_LIBRARY_INFO("SDL2" SDL2_FOUND "${SDL2_INCLUDE_DIR}" "${SDL2_LIBRARY}") - MARK_AS_ADVANCED(SDLMAIN_LIBRARY) - MARK_AS_ADVANCED(SDL2_INCLUDE_DIR) - MARK_AS_ADVANCED(SDL2_LIBRARY) + MARK_AS_ADVANCED(SDLMAIN_LIBRARY) + MARK_AS_ADVANCED(SDL2_INCLUDE_DIR) + MARK_AS_ADVANCED(SDL2_LIBRARY) - IF(SDL2_FOUND) - SET(USE_SDL 1) - ENDIF() + IF(SDL2_FOUND) + SET(USE_SDL 1) + ENDIF() ELSE() - MESSAGE("${MSG_DISABLE_OPTION}") + MESSAGE("${MSG_DISABLE_OPTION}") ENDIF() APPEND_SUMMARY_LIST("Miscellaneous" "SDL" "${USE_SDL}") @@ -38,27 +65,27 @@ # XVideo ######################################## IF(UNIX AND NOT APPLE) - OPTION(XVIDEO "" ON) + OPTION(XVIDEO "" ON) - IF(XVIDEO) - MESSAGE(STATUS "Checking for XVideo") - MESSAGE(STATUS "*******************") + IF(XVIDEO) + MESSAGE(STATUS "Checking for XVideo") + MESSAGE(STATUS "*******************") - FIND_HEADER_AND_LIB(XVIDEO X11/extensions/Xvlib.h Xv XvShmPutImage) - FIND_HEADER_AND_LIB(XEXT X11/extensions/XShm.h Xext XShmAttach) - PRINT_LIBRARY_INFO("XVideo" XVIDEO_FOUND "${XVIDEO_INCLUDE_DIR}" "${XVIDEO_LIBRARY_DIR}") - PRINT_LIBRARY_INFO("Xext" XEXT_FOUND "${XEXT_INCLUDE_DIR}" "${XEXT_LIBRARY_DIR}") + FIND_HEADER_AND_LIB(XVIDEO X11/extensions/Xvlib.h Xv XvShmPutImage) + FIND_HEADER_AND_LIB(XEXT X11/extensions/XShm.h Xext XShmAttach) + PRINT_LIBRARY_INFO("XVideo" XVIDEO_FOUND "${XVIDEO_INCLUDE_DIR}" "${XVIDEO_LIBRARY_DIR}") + PRINT_LIBRARY_INFO("Xext" XEXT_FOUND "${XEXT_INCLUDE_DIR}" "${XEXT_LIBRARY_DIR}") - IF(XVIDEO_FOUND AND XEXT_FOUND) - SET(USE_XV 1) - ENDIF() + IF(XVIDEO_FOUND AND XEXT_FOUND) + SET(USE_XV 1) + ENDIF() - MESSAGE("") - ENDIF() + MESSAGE("") + ENDIF() - APPEND_SUMMARY_LIST("Miscellaneous" "XVideo" "${XVIDEO_FOUND}") + APPEND_SUMMARY_LIST("Miscellaneous" "XVideo" "${XVIDEO_FOUND}") ELSE() - SET(XVIDEO_CAPABLE FALSE) + SET(XVIDEO_CAPABLE FALSE) ENDIF() ######################################## @@ -71,26 +98,26 @@ PRINT_LIBRARY_INFO("execinfo" EXECINFO_FOUND "${EXECINFO_INCLUDE_DIR}" "${EXECINFO_LIBRARY_DIR}") IF(EXECINFO_INCLUDE_DIR) - # Try linking without -lexecinfo - ADM_COMPILE(execinfo.cpp "" ${EXECINFO_INCLUDE_DIR} "" WITHOUT_LIBEXECINFO outputWithoutLibexecinfo) - - IF(WITHOUT_LIBEXECINFO) - SET(EXECINFO_LIBRARY_DIR "") - SET(HAVE_EXECINFO 1) - - MESSAGE(STATUS "execinfo not required") - ELSE() - ADM_COMPILE(execinfo.cpp "" ${EXECINFO_INCLUDE_DIR} ${EXECINFO_LIBRARY_DIR} WITH_LIBEXECINFO outputWithLibexecinfo) - - IF(WITH_LIBEXECINFO) - SET(HAVE_EXECINFO 1) - - MESSAGE(STATUS "execinfo is required") - ELSE() - MESSAGE(STATUS "Does not work, without ${outputWithoutLibexecinfo}") - MESSAGE(STATUS "Does not work, with ${outputWithLibexecinfo}") - ENDIF() - ENDIF() + # Try linking without -lexecinfo + ADM_COMPILE(execinfo.cpp "" ${EXECINFO_INCLUDE_DIR} "" WITHOUT_LIBEXECINFO outputWithoutLibexecinfo) + + IF(WITHOUT_LIBEXECINFO) + SET(EXECINFO_LIBRARY_DIR "") + SET(HAVE_EXECINFO 1) + + MESSAGE(STATUS "execinfo not required") + ELSE() + ADM_COMPILE(execinfo.cpp "" ${EXECINFO_INCLUDE_DIR} ${EXECINFO_LIBRARY_DIR} WITH_LIBEXECINFO outputWithLibexecinfo) + + IF(WITH_LIBEXECINFO) + SET(HAVE_EXECINFO 1) + + MESSAGE(STATUS "execinfo is required") + ELSE() + MESSAGE(STATUS "Does not work, without ${outputWithoutLibexecinfo}") + MESSAGE(STATUS "Does not work, with ${outputWithLibexecinfo}") + ENDIF() + ENDIF() ENDIF() MESSAGE("")
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_core/cmake/config.h.cmake -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_core/cmake/config.h.cmake
Changed
@@ -39,8 +39,11 @@ #if ${CONFIG_HEADER_TYPE} == ADM_BUILD_GTK || ${CONFIG_HEADER_TYPE} == ADM_BUILD_QT4 /* SDL detected */ +#cmakedefine USE_SDL3 +#ifndef USE_SDL3 #cmakedefine USE_SDL #endif +#endif #if ${CONFIG_HEADER_TYPE} == ADM_BUILD_GTK || ${CONFIG_HEADER_TYPE} == ADM_BUILD_QT4 /* XVideo detected */
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkvIndexer.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkvIndexer.cpp
Changed
@@ -26,6 +26,7 @@ #include "ADM_videoInfoExtractor.h" #include "ADM_vidMisc.h" #include "ADM_metaToFile.h" +#include "ADM_indexingFlags.h" #include "prefs.h" #define VIDEO _tracks0 @@ -764,38 +765,32 @@ const char *ss; uint64_t pos; uint8_t res=1; - bool indexOnDisk = true; + + ADM_indexingType idxt = ADM_IDX_WRITE_TO_DISK; bool indexAllowOverwrite = true; - bool memOnly = false; + uint32_t indexingFlags = ADM_IDX_FLAGS_DEFAULT; - uint32_t indexingFlags = 0; if (prefs->get(INDEXING_INDEXING_FLAGS, &indexingFlags)) { indexingFlags >>= ADM_IDX_FLAGS_OFFSET_MATROSKA; if (!(indexingFlags & ADM_IDX_FLAG_WRITE_INDEX_FILE)) { - indexOnDisk = false; + idxt = ADM_IDX_USE_EXISTING; } if (indexingFlags & ADM_IDX_FLAG_IGNORE_INDEX_FILE) { - indexOnDisk = false; - memOnly = true; + idxt = ADM_IDX_MEMFILE_ONLY; ADM_info("Mem-only indexing.\n"); } } if (NULL != getenv("ADM_NOINDEX_MKV") && !strncmp(getenv("ADM_NOINDEX_MKV"), "1", 1)) - indexOnDisk = false; + idxt = ADM_IDX_MEMFILE_ONLY; - if (!memOnly) + if (idxt != ADM_IDX_MEMFILE_ONLY && loadIndex(_idxName, parser->getFileSize())) { - if (NULL != getenv("ADM_MKV_INDEX_ALLOW_OVERWRITE") && !strncmp(getenv("ADM_MKV_INDEX_ALLOW_OVERWRITE"), "0", 1)) - indexAllowOverwrite = false; - if (loadIndex(_idxName, parser->getFileSize())) - { - printf("MKV Video track indexing loaded from \"%s\"\n", _idxName.c_str()); - return ADM_OK; - } + printf("MKV Video track index loaded from \"%s\"\n", _idxName.c_str()); + return ADM_OK; } mkvIndex tmpCluster; @@ -872,8 +867,10 @@ _work = NULL; //ADM_info("MKV Found %u clusters\n",(int)_clusters.size()); - if (indexOnDisk) + if (idxt == ADM_IDX_WRITE_TO_DISK) { + if (NULL != getenv("ADM_MKV_INDEX_ALLOW_OVERWRITE") && !strncmp(getenv("ADM_MKV_INDEX_ALLOW_OVERWRITE"), "0", 1)) + indexAllowOverwrite = false; if ((res == ADM_OK) && (!!VIDEO.index.size())) { saveIndex(_idxName, parser->getFileSize(), indexAllowOverwrite);
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/Mp4/ADM_mp4.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/Mp4/ADM_mp4.cpp
Changed
@@ -73,7 +73,7 @@ #include "ADM_mp3info.h" #include "ADM_dcainfo.h" #include "ADM_audioXiphUtils.h" - +#include "ADM_indexingFlags.h" #include "prefs.h" #if 1 @@ -384,30 +384,29 @@ _idxName = name; _idxName += ".idxb"; - bool indexOnDisk = true; + + ADM_indexingType idxt = ADM_IDX_WRITE_TO_DISK; bool indexAllowOverwrite = true; - bool memOnly = false; + uint32_t indexingFlags = ADM_IDX_FLAGS_DEFAULT; - uint32_t indexingFlags = 0; if (prefs->get(INDEXING_INDEXING_FLAGS, &indexingFlags)) { indexingFlags >>= ADM_IDX_FLAGS_OFFSET_MP4; if (!(indexingFlags & ADM_IDX_FLAG_WRITE_INDEX_FILE)) { - indexOnDisk = false; + idxt = ADM_IDX_USE_EXISTING; } if (indexingFlags & ADM_IDX_FLAG_IGNORE_INDEX_FILE) { - indexOnDisk = false; - memOnly = true; + idxt = ADM_IDX_MEMFILE_ONLY; ADM_info("Mem-only indexing.\n"); } } if (NULL != getenv("ADM_NOINDEX_MP4") && !strncmp(getenv("ADM_NOINDEX_MP4"), "1", 1)) - indexOnDisk = false; + idxt = ADM_IDX_MEMFILE_ONLY; - if (indexOnDisk) + if (idxt == ADM_IDX_WRITE_TO_DISK) { if (NULL != getenv("ADM_MP4_INDEX_ALLOW_OVERWRITE") && !strncmp(getenv("ADM_MP4_INDEX_ALLOW_OVERWRITE"), "0", 1)) indexAllowOverwrite = false; @@ -543,7 +542,7 @@ if(extractSPSInfo_mp4Header(VDEO.extraData,VDEO.extraDataSize,&info)) { bool indexLoadedFromDisk = false; - if (!memOnly) + if (idxt != ADM_IDX_MEMFILE_ONLY) { if (loadIndex(_idxName, fileSize)) { @@ -667,7 +666,7 @@ ADM_info("Field encoded H.264 stream detected, # fields: %u\n",fields); else ADM_info("Probably a frame encoded H.264 stream.\n"); - if (indexOnDisk && !cancelled) + if (idxt == ADM_IDX_WRITE_TO_DISK && !cancelled) { saveIndex(_idxName, fileSize, indexAllowOverwrite); } @@ -689,7 +688,7 @@ _video_bih.biHeight = _mainaviheader.dwHeight = info.height; } bool indexLoadedFromDisk = false; - if (!memOnly) + if (idxt != ADM_IDX_MEMFILE_ONLY) { if (loadIndex(_idxName, fileSize)) { @@ -761,7 +760,7 @@ work=NULL; delete bfer; bfer=NULL; - if (indexOnDisk && !cancelled) + if (idxt == ADM_IDX_WRITE_TO_DISK && !cancelled) { saveIndex(_idxName, fileSize, indexAllowOverwrite); }
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegPS/ADM_ps.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegPS/ADM_ps.cpp
Changed
@@ -19,35 +19,60 @@ #include "DIA_coreToolkit.h" #include "ADM_indexFile.h" #include "ADM_ps.h" +#include "prefs.h" #include <math.h> #define MY_CLASS psHeader #include "ADM_coreDemuxerMpegTemplate.cpp.h" uint32_t ADM_UsecFromFps1000(uint32_t fps1000); -uint8_t psIndexer(const char *file); +uint8_t psIndexer(const char *file, bool memOnly); /** - \fn open - \brief open the flv file, gather infos and build index(es). + \fn open + \brief Wrapper for internal function to open given MPEG-PS file. */ - uint8_t psHeader::open(const char *name) { + ADM_indexingType idxt = ADM_IDX_WRITE_TO_DISK; + uint32_t indexingFlags = ADM_IDX_FLAGS_DEFAULT; + + if (prefs->get(INDEXING_INDEXING_FLAGS, &indexingFlags)) + { + indexingFlags >>= ADM_IDX_FLAGS_OFFSET_MPEGPS; + if (!(indexingFlags & ADM_IDX_FLAG_WRITE_INDEX_FILE)) + { + idxt = ADM_IDX_USE_EXISTING; + } + if (indexingFlags & ADM_IDX_FLAG_IGNORE_INDEX_FILE) + { + idxt = ADM_IDX_MEMFILE_ONLY; + ADM_info("Mem-only indexing.\n"); + } + } + + return openInternal(name, idxt); +} +/** + \fn openInternal + \brief Open given MPEG-PS file, detect streams and their properties and build index(es). +*/ +uint8_t psHeader::openInternal(const char *name, ADM_indexingType &strategy) +{ char *idxName=(char *)malloc(strlen(name)+6); uint8_t r=1; sprintf(idxName,"%s.idx2",name); ListOfIndexFiles.push_back(idxName); - if(!ADM_fileExist(idxName)) - r=psIndexer(name); + if (strategy == ADM_IDX_MEMFILE_ONLY || !ADM_fileExist(idxName)) + r = psIndexer(name, strategy != ADM_IDX_WRITE_TO_DISK); if(r!=ADM_OK) { if(r==ADM_IGN) ADM_warning("Indexing cancelled by the user, deleting the index file. Bye.\n"); if(!r) ADM_error("Indexing of %s failed, aborting\n",name); - if(ADM_fileExist(idxName) && !ADM_eraseFile(idxName)) + if(strategy == ADM_IDX_WRITE_TO_DISK && ADM_fileExist(idxName) && !ADM_eraseFile(idxName)) ADM_warning("Could not delete %s\n",idxName); free(idxName); return r; @@ -61,9 +86,9 @@ indexFile index; r=0; - if(!index.open(idxName)) + if(!index.open(idxName, strategy == ADM_IDX_MEMFILE_ONLY)) { - printf("psDemux Cannot open index file %s\n",idxName); + printf("psDemux Cannot open %s file %s\n", (strategy == ADM_IDX_MEMFILE_ONLY) ? "in-memory index" : "index", idxName); free(idxName); return false; } @@ -76,6 +101,12 @@ version=index.getAsUint32("Version"); if(version!=ADM_INDEX_FILE_VERSION) { + ADM_warning("Index file version mismatch, expected %" PRIu32", got %" PRIu32"\n", ADM_INDEX_FILE_VERSION, version); + if (strategy == ADM_IDX_MEMFILE_ONLY) + { + ADM_error("Index file version mismatch despite in-memory indexing, bailing out.\n"); + goto abt; + } if(GUI_Question(QT_TRANSLATE_NOOP("psdemuxer","This file's index has been created with an older version of avidemux.\nThe file must be re-indexed. Proceed?"))) reindex=true; goto abt; @@ -202,14 +233,21 @@ } abt: index.close(); - if(reindex) + if (reindex && strategy != ADM_IDX_MEMFILE_ONLY) { - uint8_t success=ADM_eraseFile(idxName); + uint8_t success = 1; + if (strategy == ADM_IDX_WRITE_TO_DISK) + success = ADM_eraseFile(idxName); + else + strategy = ADM_IDX_MEMFILE_ONLY; free(idxName); if(success) - r=open(name); - else + { + r = openInternal(name, strategy); + }else + { ADM_error("Can't delete old index file.\n"); + } }else { free(idxName);
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegPS/ADM_ps.h -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegPS/ADM_ps.h
Changed
@@ -24,6 +24,7 @@ #include "ADM_audioStream.h" #include "dmx_io.h" #include "ADM_indexFile.h" +#include "ADM_indexingFlags.h" #include "dmxPSPacket.h" #include <BVector.h> #include "ADM_coreDemuxerMpeg.h" @@ -128,6 +129,7 @@ BVector <ADM_psTrackDescriptor *> listOfAudioTracks; ListOfScr listOfScrGap; + uint8_t openInternal(const char *name, ADM_indexingType &strategy); bool readVideo(indexFile *index); bool readAudio(indexFile *index, const char *name); bool readIndex(indexFile *index);
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegPS/ADM_psComputeTimeStamp.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegPS/ADM_psComputeTimeStamp.cpp
Changed
@@ -7,7 +7,6 @@ #include "ADM_default.h" #include "fourcc.h" #include "DIA_coreToolkit.h" -#include "ADM_indexFile.h" #include "ADM_ps.h" #include <math.h>
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegPS/ADM_psIndex.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegPS/ADM_psIndex.cpp
Changed
@@ -121,7 +121,7 @@ public: PsIndexer(void); ~PsIndexer(); - uint8_t run(const char *file); + uint8_t run(const char *file, bool mem); bool writeVideo(PSVideo *video); bool writeAudio(void); bool writeSystem(const char *filename,bool append); @@ -140,11 +140,11 @@ \fn psIndexer \brief main indexing loop for mpeg2 payload */ -uint8_t psIndexer(const char *file) +uint8_t psIndexer(const char *file, bool memOnly) { uint8_t r; PsIndexer *dx=new PsIndexer; - r=dx->run(file); + r=dx->run(file,memOnly); delete dx; return r; } @@ -177,7 +177,7 @@ /** \fn run */ -uint8_t PsIndexer::run(const char *file) +uint8_t PsIndexer::run(const char *file, bool mem) { uint32_t temporal_ref,val; uint64_t fullSize; @@ -197,14 +197,20 @@ char *indexName=(char *)malloc(strlen(file)+6); sprintf(indexName,"%s.idx2",file); - index=qfopen(indexName,"wt",true); + index = mem ? NULL : qfopen(indexName,"wt",true); if(!index) { - printf("PsIndex Cannot create %s\n",indexName); + if (mem) + ADM_info("Forcing in-memory indexing.\n"); + else + ADM_warning("Cannot create index file \"%s\"\n", indexName); mFile = mfopen(indexName,"wt"); if (!mFile) { - printf("PsIndex Cannot create memFile either\n"); + if (mem) + ADM_error("Cannot create memFile!\n"); + else + ADM_error("Cannot create memFile either.\n"); free(indexName); return 0; }
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_ts.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_ts.cpp
Changed
@@ -21,33 +21,60 @@ #include "ADM_indexFile.h" #include "ADM_ts.h" #include "ADM_videoInfoExtractor.h" +#include "prefs.h" #define MY_CLASS tsHeader #include "ADM_coreDemuxerMpegTemplate.cpp.h" -extern uint8_t tsIndexer(const char *file); +extern uint8_t tsIndexer(const char *file, bool memOnly); /** - \fn open - \brief open the flv file, gather infos and build index(es). + \fn open + \brief Wrapper for openInternal to query preferences in a single location. */ - uint8_t tsHeader::open(const char *name) { + ADM_indexingType idxt = ADM_IDX_WRITE_TO_DISK; + uint32_t indexingFlags = ADM_IDX_FLAGS_DEFAULT; + + if (prefs->get(INDEXING_INDEXING_FLAGS, &indexingFlags)) + { + indexingFlags >>= ADM_IDX_FLAGS_OFFSET_MPEGTS; + if (!(indexingFlags & ADM_IDX_FLAG_WRITE_INDEX_FILE)) + { + idxt = ADM_IDX_USE_EXISTING; + } + if (indexingFlags & ADM_IDX_FLAG_IGNORE_INDEX_FILE) + { + idxt = ADM_IDX_MEMFILE_ONLY; + ADM_info("Mem-only indexing.\n"); + } + } + + return openInternal(name, idxt); +} + +/** + \fn openInternal + \brief Open given MPEG-TS file, gather infos and build index(es). +*/ +uint8_t tsHeader::openInternal(const char *name, ADM_indexingType &strategy) +{ char *idxName=(char *)malloc(strlen(name)+6); uint8_t r=1; sprintf(idxName,"%s.idx2",name); ListOfIndexFiles.push_back(idxName); - if(!ADM_fileExist(idxName)) - r=tsIndexer(name); + + if(strategy == ADM_IDX_MEMFILE_ONLY || !ADM_fileExist(idxName)) + r = tsIndexer(name, strategy != ADM_IDX_WRITE_TO_DISK); if(r!=ADM_OK) { if(r==ADM_IGN) ADM_warning("Indexing cancelled by the user, deleting the index file. Bye.\n"); if(!r) ADM_error("Indexing of %s failed, aborting\n",name); - if(ADM_fileExist(idxName) && !ADM_eraseFile(idxName)) + if(strategy == ADM_IDX_WRITE_TO_DISK && ADM_fileExist(idxName) && !ADM_eraseFile(idxName)) ADM_warning("Could not delete %s\n",idxName); free(idxName); return r; @@ -61,9 +88,9 @@ r=0; indexFile index; - if(!index.open(idxName)) + if(!index.open(idxName, strategy == ADM_IDX_MEMFILE_ONLY)) { - printf("tsDemux Cannot open index file %s\n",idxName); + printf("tsDemux Cannot open %s file %s\n", idxName, (strategy == ADM_IDX_MEMFILE_ONLY) ? "in-memory index" : "index", idxName); free(idxName); return false; } @@ -82,6 +109,12 @@ version=index.getAsUint32("Version"); if(version!=ADM_INDEX_FILE_VERSION) { + ADM_warning("Index file version mismatch, expected %" PRIu32", got %" PRIu32"\n", ADM_INDEX_FILE_VERSION, version); + if (strategy == ADM_IDX_MEMFILE_ONLY) + { + ADM_error("Index file version mismatch despite in-memory indexing, bailing out.\n"); + goto abt; + } if(GUI_Question(QT_TRANSLATE_NOOP("tsdemuxer","This file's index has been created with an older version of avidemux.\nThe file must be re-indexed. Proceed?"))) reindex=true; goto abt; @@ -144,16 +177,25 @@ } abt: index.close(); - if(reindex) + if (reindex && strategy != ADM_IDX_MEMFILE_ONLY) { - uint8_t success=ADM_eraseFile(idxName); - free(idxName); - if(success) - r=open(name); + uint8_t success = 1; + if (strategy == ADM_IDX_WRITE_TO_DISK) + success = ADM_eraseFile(idxName); else + strategy = ADM_IDX_MEMFILE_ONLY; + free(idxName); + if (success) + { + r = openInternal(name, strategy); + } else + { ADM_error("Can't delete old index file.\n"); - }else + } + } else + { free(idxName); + } printf("tsDemuxer open() returned %d\n",r); return r; }
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_ts.h -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_ts.h
Changed
@@ -24,6 +24,7 @@ #include "ADM_audioStream.h" #include "dmx_io.h" #include "ADM_indexFile.h" +#include "ADM_indexingFlags.h" #include "dmxTSPacket.h" #include <vector> #include "ADM_coreDemuxerMpeg.h" @@ -113,29 +114,32 @@ class tsHeader :public vidHeader { protected: - - bool fieldEncoded; - bool readVideo(indexFile *index); - bool readAudio(indexFile *index,const char *name); - bool readIndex(indexFile *index); - - bool processVideoIndex(char *buffer); - bool processAudioIndex(char *buffer); + uint32_t videoPid; + uint32_t lastFrame; + bool fieldEncoded; + bool videoNeedEscaping; + uint64_t sizeOfVideoInBytes; + uint64_t videoDuration; // cached value in microseconds std::vector <dmxFrame *> ListOfFrames; std::vector <std::string> ListOfIndexFiles; + std::vector <ADM_tsTrackDescriptor *> listOfAudioTracks; fileParser parser; - uint32_t lastFrame; - tsPacketLinear *tsPacket; + tsPacketLinear *tsPacket; + + uint8_t openInternal(const char *name, ADM_indexingType &strategy); + + bool readVideo(indexFile *index); + bool readAudio(indexFile *index, const char *name); + bool readIndex(indexFile *index); + + bool processVideoIndex(char *buffer); + bool processAudioIndex(char *buffer); + uint64_t timeConvert(uint64_t x); bool updatePtsDts(void); bool updateIdr(void); - bool videoNeedEscaping; - uint64_t sizeOfVideoInBytes; - uint64_t videoDuration; // cached value in microseconds -protected: - vector <ADM_tsTrackDescriptor *>listOfAudioTracks; - uint32_t videoPid; + public:
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndex.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndex.cpp
Changed
@@ -45,7 +45,7 @@ \fn TsIndexer \brief main indexing loop for mpeg2 payload */ -uint8_t tsIndexer(const char *file) +uint8_t tsIndexer(const char *file, bool memOnly) { uint8_t r; ADM_TS_TRACK *tracks; @@ -109,7 +109,7 @@ r=0; }else { - r=dx->run( file,&(tracks0)); + r=dx->run(file, &(tracks0), memOnly); delete dx; dx=NULL; }
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndex.h -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndex.h
Changed
@@ -147,7 +147,7 @@ public: TsIndexerBase(listOfTsAudioTracks *tr); virtual ~TsIndexerBase(); -virtual uint8_t run(const char *file,ADM_TS_TRACK *videoTrac)=0; +virtual uint8_t run(const char *file, ADM_TS_TRACK *videoTrac, bool memOnly)=0; bool writeVideo(TSVideo *video,ADM_TS_TRACK_TYPE trkType); bool writeAudio(void); bool writeSystem(const char *filename,int append=0); @@ -202,7 +202,7 @@ { } - uint8_t run(const char *file,ADM_TS_TRACK *videoTrac); + uint8_t run(const char *file, ADM_TS_TRACK *videoTrac, bool memOnly); }; class TsIndexerVC1: public TsIndexerBase @@ -218,7 +218,7 @@ { } - uint8_t run(const char *file,ADM_TS_TRACK *videoTrac); + uint8_t run(const char *file, ADM_TS_TRACK *videoTrac, bool memOnly); TsIndexerVC1(listOfTsAudioTracks *tr) : TsIndexerBase(tr) { @@ -238,7 +238,7 @@ { } - uint8_t run(const char *file,ADM_TS_TRACK *videoTrac); + uint8_t run(const char *file, ADM_TS_TRACK *videoTrac, bool memOnly); TsIndexerMpeg2(listOfTsAudioTracks *tr) : TsIndexerBase(tr) { @@ -266,7 +266,7 @@ { } - uint8_t run(const char *file,ADM_TS_TRACK *videoTrac); + uint8_t run(const char *file, ADM_TS_TRACK *videoTrac, bool memOnly); TsIndexerH265(listOfTsAudioTracks *tr) : TsIndexerBase(tr) {
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexH264.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexH264.cpp
Changed
@@ -216,7 +216,7 @@ \fn run \brief Index H264 stream */ -uint8_t TsIndexerH264::run(const char *file, ADM_TS_TRACK *videoTrac) +uint8_t TsIndexerH264::run(const char *file, ADM_TS_TRACK *videoTrac, bool memOnly) { bool seq_found=false; bool firstSps=true; @@ -240,17 +240,23 @@ memset(&data,0,sizeof(data)); data.picStructure=pictureFrame; - string indexName=string(file); - indexName=indexName+string(".idx2"); - index=qfopen(indexName,(const char*)"wt",true); + string indexName = file; + indexName += ".idx2"; - if(!index) + index = memOnly ? NULL : qfopen(indexName,"wt",true); + if (!index) { - ADM_error("TsIndexerH264 Cannot create %s\n",indexName.c_str()); - mFile=mfopen(indexName,"wt"); + if (memOnly) + ADM_info("Forcing in-memory indexing.\n"); + else + ADM_warning("Cannot create index file \"%s\"\n", indexName.c_str()); + mFile = mfopen(indexName,"wt"); if (!mFile) { - printf("TsIndexerH264 Cannot create memFile either\n"); + if (memOnly) + ADM_error("Cannot create memFile!\n"); + else + ADM_error("Cannot create memFile either.\n"); return 0; } }
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexH265.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexH265.cpp
Changed
@@ -293,7 +293,7 @@ \fn run \brief Index H265 stream */ -uint8_t TsIndexerH265::run(const char *file,ADM_TS_TRACK *videoTrac) +uint8_t TsIndexerH265::run(const char *file,ADM_TS_TRACK *videoTrac, bool memOnly) { TSVideo video; indexerData data; @@ -311,18 +311,24 @@ memset(&data,0,sizeof(data)); data.picStructure=pictureFrame; - string indexName=string(file); - indexName=indexName+string(".idx2"); - index=qfopen(indexName,(const char*)"wt",true); + string indexName = file; + indexName += ".idx2"; - if(!index) + index = memOnly ? NULL : qfopen(indexName,"wt",true); + if (!index) { - printf("TsIndexerH265 Cannot create %s\n",indexName.c_str()); - mFile=mfopen(indexName,"wt"); + if (memOnly) + ADM_info("Forcing in-memory indexing.\n"); + else + ADM_warning("Cannot create index file \"%s\"\n", indexName.c_str()); + mFile = mfopen(indexName,"wt"); if (!mFile) { - printf("TsIndexerH265 Cannot create memFile either\n"); - return false; + if (memOnly) + ADM_error("Cannot create memFile!\n"); + else + ADM_error("Cannot create memFile either.\n"); + return 0; } }
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexMpeg2.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexMpeg2.cpp
Changed
@@ -44,7 +44,7 @@ /** \fn runMpeg2 */ -uint8_t TsIndexerMpeg2::run(const char *file,ADM_TS_TRACK *videoTrac) +uint8_t TsIndexerMpeg2::run(const char *file,ADM_TS_TRACK *videoTrac, bool memOnly) { uint32_t temporal_ref,val; bool seq_found=false; @@ -69,21 +69,28 @@ memset(&data,0,sizeof(data)); - string indexName=string(file); - indexName=indexName+string(".idx2"); + string indexName = file; + indexName =+ ".idx2"; index=qfopen(indexName,"wt",true); - if(!index) + index = memOnly ? NULL : qfopen(indexName,"wt",true); + if (!index) { - printf("TsIndexerMpeg2 Cannot create %s\n",indexName.c_str()); - mFile=mfopen(indexName,"wt"); + if (memOnly) + ADM_info("Forcing in-memory indexing.\n"); + else + ADM_warning("Cannot create index file \"%s\"\n", indexName.c_str()); + mFile = mfopen(indexName,"wt"); if (!mFile) { - printf("TsIndexerMpeg2 Cannot create memFile either\n"); + if (memOnly) + ADM_error("Cannot create memFile!\n"); + else + ADM_error("Cannot create memFile either.\n"); return 0; } } - + int append=0; #ifdef ASK_APPEND_SEQUENCED append=1;
View file
avidemux2-2.8.2.git20260407.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexVC1.cpp -> avidemux2-2.8.2.git20260414.tar.xz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexVC1.cpp
Changed
@@ -26,7 +26,7 @@ \fn runVC1 \brief Index VC1 stream */ -uint8_t TsIndexerVC1::run(const char *file,ADM_TS_TRACK *videoTrac) +uint8_t TsIndexerVC1::run(const char *file,ADM_TS_TRACK *videoTrac, bool memOnly) { uint32_t temporal_ref,val; uint8_t buffer50*1024; @@ -49,21 +49,28 @@ memset(&data,0,sizeof(data)); data.picStructure=pictureFrame; - - string indexName=string(file); - indexName=indexName+string(".idx2"); - index=qfopen(indexName,"wt",true); - if(!index) + string indexName = file; + indexName += ".idx2"; + + index = memOnly ? NULL : qfopen(indexName,"wt",true); + if (!index) { - printf("TsIndex Cannot create %s\n",indexName.c_str()); - mFile=mfopen(indexName,"wt"); + if (memOnly) + ADM_info("Forcing in-memory indexing.\n"); + else + ADM_warning("Cannot create index file \"%s\"\n", indexName.c_str()); + mFile = mfopen(indexName,"wt"); if (!mFile) { - printf("TsIndex Cannot create memFile either\n"); - return false; + if (memOnly) + ADM_error("Cannot create memFile!\n"); + else + ADM_error("Cannot create memFile either.\n"); + return 0; } } + writeSystem(file,false); pkt=new tsPacketLinearTracker(videoTrac->trackPid, audioTracks);
View file
avidemux2-2.8.2.git20260414.tar.xz/devpod_debianbullseye.bash
Added
@@ -0,0 +1,2 @@ +#!/bin/sh +devpod up . --ide none --id adm-bullseye --devcontainer-path .devcontainer_bullseye/devcontainer.json $@
View file
avidemux2-2.8.2.git20260407.tar.xz/devpod_debiantrixie.sh -> avidemux2-2.8.2.git20260414.tar.xz/devpod_debiantrixie.sh
Changed
@@ -1,1 +1,2 @@ -devpod up . --ide none --id adm-trixie --devcontainer-path .devcontainer_trixie/devcontainer.json +#!/bin/sh +devpod up . --ide none --id adm-trixie --devcontainer-path .devcontainer_trixie/devcontainer.json $@
View file
avidemux2-2.8.2.git20260407.tar.xz/devpod_fedora.sh -> avidemux2-2.8.2.git20260414.tar.xz/devpod_fedora.sh
Changed
@@ -1,1 +1,2 @@ -devpod up . --id adm-fedora --ide none --devcontainer-path .devcontainer_fedora/devcontainer.json +#!/bin/sh +devpod up . --id adm-fedora --ide none --devcontainer-path .devcontainer_fedora/devcontainer.json $@
View file
avidemux2-2.8.2.git20260407.tar.xz/devpod_ubuntu2510.sh -> avidemux2-2.8.2.git20260414.tar.xz/devpod_ubuntu2510.sh
Changed
@@ -1,1 +1,2 @@ -devpod up . --ide none --id adm-ubuntu --devcontainer-path .devcontainer_ubuntu2510/devcontainer.json +#!/bin/sh +devpod up . --ide none --id adm-ubuntu --devcontainer-path .devcontainer_ubuntu2510/devcontainer.json $@
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
.