Skip to content

Conversation

@JackLau1222
Copy link
Collaborator

No description provided.

JackLau1222 and others added 19 commits November 22, 2025 11:03
Signed-off-by: Jack Lau <jacklau1222@qq.com>
- Add enahnce_module.py (Real-ESRGAN), support GPU acceleration.

- Both of GUI and CLI support call this AI feature.

TODO:
Add translation for AI page

Signed-off-by: Jack Lau <jacklau1222@qq.com>
**Python Runtime Bundling:**
- Add PythonManager for automatic Python environment setup
- Add PythonInstallDialog for user-friendly installation UI
- Bundle Python runtime with PyTorch, Real-ESRGAN, OpenCV, NumPy
- Auto-detect bundled Python in Release builds

**Library Bundling Refactor:**
- Move ALL library bundling (Qt, FFmpeg, BMF) from CMake to fix_macos_libs.sh
- Simplify CMakeLists.txt (67% reduction: 102 → 35 lines)
- Add BMF library bundling to fix_macos_libs.sh
- Auto-detect build directory and BMF_ROOT_PATH

**BMF Integration:**
- Add runtime BMF library path detection
- Set BMF_MODULE_CONFIG_PATH and PYTHONPATH automatically
- Support both system BMF (Debug) and bundled BMF (Release)

**Benefits:**
- Fully standalone Release builds (no dependencies)
- Faster iteration (re-bundle without rebuild)
- Simpler and easier to maintain

Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Use callback data(frame numbder) from AI module when AI enabled.

Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
add jpg and png for transcoder_page

Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
f
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
f
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
enable bmf on linux

Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
add run.sh for quick start

Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
add requirements.txt in linux build

Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
@JackLau1222 JackLau1222 force-pushed the ai branch 2 times, most recently from d936b5b to a824cf1 Compare December 16, 2025 13:42
@JackLau1222 JackLau1222 force-pushed the ai branch 2 times, most recently from 236b77b to 0a1a0d4 Compare December 17, 2025 13:10
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
This avoid wrong App Data Path by Qt.

Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
add linglong.yaml and default.desktop

Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Comment on lines 10 to 128
strategy:
matrix:
include:
- arch: x86_64
runner: ubuntu-22.04
ffmpeg_url: https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2024-11-30-13-12/ffmpeg-n5.1.6-11-gcde3c5fc0c-linux64-gpl-shared-5.1.tar.xz
ffmpeg_dir: ffmpeg-n5.1.6-11-gcde3c5fc0c-linux64-gpl-shared-5.1
bmf_url: https://github.com/OpenConverterLab/bmf/releases/download/oc0.0.3/bmf-bin-linux-x86_64-cp39.tar.gz
appimagetool: appimagetool-x86_64.AppImage
- arch: aarch64
runner: ubuntu-22.04-arm
ffmpeg_url: https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2024-11-30-13-12/ffmpeg-n5.1.6-11-gcde3c5fc0c-linuxarm64-gpl-shared-5.1.tar.xz
ffmpeg_dir: ffmpeg-n5.1.6-11-gcde3c5fc0c-linuxarm64-gpl-shared-5.1
bmf_url: https://github.com/OpenConverterLab/bmf/releases/download/oc0.0.3/bmf-bin-linux-aarch64-cp39.tar.gz
appimagetool: appimagetool-aarch64.AppImage
runs-on: ${{ matrix.runner }}
concurrency:
group: "review-linux-${{ github.event.pull_request.number }}"
group: "review-linux-${{ matrix.arch }}-${{ github.event.pull_request.number }}"
cancel-in-progress: true

steps:
- name: Checkout code
uses: actions/checkout@v2

- name: Print current branch and commit hash
run: |
echo "Current branch: $(git rev-parse --abbrev-ref HEAD)"
echo "Current commit hash: $(git rev-parse HEAD)"
echo "Architecture: ${{ matrix.arch }}"
- name: Checkout BMF repository (specific branch)
- name: Install dependencies
run: |
# sudo apt update
# sudo apt install -y make git pkg-config libssl-dev cmake binutils-dev libgoogle-glog-dev gcc g++ golang wget libgl1
sudo apt install -y nasm yasm libx264-dev libx265-dev libnuma-dev
# sudo apt install -y python3.9 python3-dev python3-pip libsndfile1 libsndfile1-dev
git clone https://github.com/JackLau1222/bmf.git
# - name: Cache BMF build
# uses: actions/cache@v3
# with:
# path: bmf/output/
# key: ${{ runner.os }}-bmf-${{ hashFiles('bmf/build.sh') }}
# restore-keys: |
# ${{ runner.os }}-bmf-linux-x86
sudo apt update
sudo apt install -y make git pkg-config cmake gcc g++ wget libgl1
- name: Get FFmpeg
run: |
wget https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2024-11-30-13-12/ffmpeg-n5.1.6-11-gcde3c5fc0c-linux64-gpl-shared-5.1.tar.xz
tar xJvf ffmpeg-n5.1.6-11-gcde3c5fc0c-linux64-gpl-shared-5.1.tar.xz
ls ffmpeg-n5.1.6-11-gcde3c5fc0c-linux64-gpl-shared-5.1
echo "FFMPEG_ROOT_PATH=$(pwd)/ffmpeg-n5.1.6-11-gcde3c5fc0c-linux64-gpl-shared-5.1" >> $GITHUB_ENV
wget ${{ matrix.ffmpeg_url }}
tar xJvf ${{ matrix.ffmpeg_dir }}.tar.xz
ls ${{ matrix.ffmpeg_dir }}
echo "FFMPEG_ROOT_PATH=$(pwd)/${{ matrix.ffmpeg_dir }}" >> $GITHUB_ENV
# - name: Set up BMF if not cached
# run: |
# if [ ! -d "$(pwd)/bmf/output/" ]; then
# (cd bmf && git checkout fork_by_oc && ./build.sh)
# else
# echo "BMF is already installed, skipping build."
# fi
# echo "BMF_ROOT_PATH=$(pwd)/bmf/output/bmf" >> $GITHUB_ENV
- name: Get BMF
run: |
wget ${{ matrix.bmf_url }}
tar xzvf bmf-bin-linux-${{ matrix.arch }}-cp39.tar.gz
echo "BMF_ROOT_PATH=$(pwd)/output/bmf" >> $GITHUB_ENV
- name: Set up Qt
run: |
sudo apt-get install -y qt5-qmake qtbase5-dev qtchooser qtbase5-dev-tools cmake build-essential
- name: Build with CMake
run: |
export PATH=$PATH:$FFMPEG_ROOT_PATH/bin
(cd src && cmake -B build -DBMF_TRANSCODER=OFF && cd build && make -j$(nproc))
(cd src && cmake -B build && cd build && make -j$(nproc))
- name: Copy libs
run: |
export LD_LIBRARY_PATH=$FFMPEG_ROOT_PATH/lib/:$BMF_ROOT_PATH/lib
export LIBRARY_PATH=$FFMPEG_ROOT_PATH/lib/:$BMF_ROOT_PATH/lib
# linuxdeployqt
sudo apt-get -y install git g++ libgl1-mesa-dev
git clone https://github.com/probonopd/linuxdeployqt.git
# Then build in Qt Creator, or use
export PATH=$(readlink -f /tmp/.mount_QtCreator-*-x86_64/*/gcc_64/bin/):$PATH
export PATH=$(readlink -f /tmp/.mount_QtCreator-*-${{ matrix.arch }}/*/gcc_64/bin/):$PATH
(cd linuxdeployqt && qmake && make && sudo make install)
# patchelf
wget https://nixos.org/releases/patchelf/patchelf-0.9/patchelf-0.9.tar.bz2
tar xf patchelf-0.9.tar.bz2
( cd patchelf-0.9/ && ./configure && make && sudo make install )
# appimage
sudo wget -c "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage" -O /usr/local/bin/appimagetool
sudo wget -c "https://github.com/AppImage/AppImageKit/releases/download/continuous/${{ matrix.appimagetool }}" -O /usr/local/bin/appimagetool
sudo chmod a+x /usr/local/bin/appimagetool
(linuxdeployqt/bin/linuxdeployqt ./src/build/OpenConverter -appimage)
continue-on-error: true


# - name: Copy runtime
# run: |
# cp $FFMPEG_ROOT_PATH/lib/libswscale.so.6 src/build/lib
# cp $FFMPEG_ROOT_PATH/lib/libavfilter.so.8 src/build/lib
# cp $FFMPEG_ROOT_PATH/lib/libpostproc.so.56 src/build/lib
# cp $BMF_ROOT_PATH/lib/libbuiltin_modules.so src/build/lib
# cp $BMF_ROOT_PATH/BUILTIN_CONFIG.json src/build
# touch src/build/activate_env.sh
# echo export LD_LIBRARY_PATH="./lib" >> src/build/activate_env.sh
- name: Copy runtime
run: |
cp $FFMPEG_ROOT_PATH/lib/libswscale.so.6 src/build/lib
cp $FFMPEG_ROOT_PATH/lib/libavfilter.so.8 src/build/lib
cp $FFMPEG_ROOT_PATH/lib/libpostproc.so.56 src/build/lib
cp $FFMPEG_ROOT_PATH/lib/libavdevice.so.59 src/build/lib
cp $BMF_ROOT_PATH/lib/libbuiltin_modules.so src/build/lib
cp $BMF_ROOT_PATH/lib/libbmf_py_loader.so src/build/lib
cp $BMF_ROOT_PATH/BUILTIN_CONFIG.json src/build
touch src/build/run.sh
echo export LD_LIBRARY_PATH="~/.local/share/OpenConverter/Python.framework/lib:./lib" >> src/build/run.sh
echo ./OpenConverter >> src/build/run.sh
cp src/resources/requirements.txt src/build/requirements.txt
cp -r $BMF_ROOT_PATH src/build/
# Step to package the build directory
- name: Create tar.gz package
run: |
BUILD_DIR="src/build"
PACKAGE_NAME="OpenConverter_Linux_x86.tar.gz"
OUTPUT_DIR="OpenConverter_Linux_x86"
PACKAGE_NAME="OpenConverter_Linux_${{ matrix.arch }}.tar.gz"
OUTPUT_DIR="OpenConverter_Linux_${{ matrix.arch }}"
mkdir -p $OUTPUT_DIR
cp -r $BUILD_DIR/* $OUTPUT_DIR/
tar -czvf $PACKAGE_NAME -C $OUTPUT_DIR .
tar -czvf $PACKAGE_NAME $OUTPUT_DIR
rm -rf $OUTPUT_DIR
# Step to upload the tar.gz package as an artifact
- name: Upload build artifact
uses: actions/upload-artifact@v4
with:
name: OpenConverter_Linux_x86
path: OpenConverter_Linux_x86.tar.gz
name: OpenConverter_Linux_${{ matrix.arch }}
path: OpenConverter_Linux_${{ matrix.arch }}.tar.gz

# - name: Setup tmate session
# if: ${{ failure() }}
# uses: mxschmitt/action-tmate@v3

- name: Finish
run: echo "Release upload complete"
run: echo "Build complete"

build-linglong:
needs: build-linux
strategy:
matrix:
include:
- arch: x86_64
runner: ubuntu-24.04

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 3 days ago

In general terms, the fix is to explicitly define minimal GITHUB_TOKEN permissions for this workflow or its jobs. Since none of the shown steps require write access to repository contents, issues, or pull requests, we can safely set contents: read at the workflow root. This will apply to all jobs that don’t define their own permissions block and satisfy CodeQL’s requirement.

The single best way to fix this without changing existing functionality is:

  • Add a top-level permissions: block directly under name: Review (before on:) in .github/workflows/review.yaml.
  • Set contents: read there. All used actions (checkout, upload/download-artifact, tmate) work with read-only repo contents, and artifacts do not require repository write permissions.

Concretely:

  • Edit .github/workflows/review.yaml near the top:
    • After line 1: name: Review, insert:
      2: permissions:
      3:   contents: read
      4:
    • Shift the subsequent lines accordingly. No additional imports or definitions are needed.
Suggested changeset 1
.github/workflows/review.yaml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/review.yaml b/.github/workflows/review.yaml
--- a/.github/workflows/review.yaml
+++ b/.github/workflows/review.yaml
@@ -1,4 +1,6 @@
 name: Review
+permissions:
+  contents: read
 
 on:
   pull_request:
EOF
@@ -1,4 +1,6 @@
name: Review
permissions:
contents: read

on:
pull_request:
Copilot is powered by AI and may make mistakes. Always verify output.
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
- upload the layer rather than uab
- modify the app id to io.github.openconverterlab

Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
3 Security Hotspots

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants