-
Notifications
You must be signed in to change notification settings - Fork 11
feat: add minimal AI processing support #133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
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>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>
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>
d936b5b to
a824cf1
Compare
236b77b to
0a1a0d4
Compare
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>
| 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
Show autofix suggestion
Hide autofix suggestion
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 undername: Review(beforeon:) in.github/workflows/review.yaml. - Set
contents: readthere. 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.yamlnear 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.
- After line
-
Copy modified lines R2-R3
| @@ -1,4 +1,6 @@ | ||
| name: Review | ||
| permissions: | ||
| contents: read | ||
|
|
||
| on: | ||
| pull_request: |
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>
|


No description provided.