Skip to content

Commit eb16c8f

Browse files
committed
Github actions. Readme init
1 parent dd3b4e8 commit eb16c8f

File tree

8 files changed

+208
-6
lines changed

8 files changed

+208
-6
lines changed

.github/workflows/build.yml

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Build AAC Encoder Plugin
2+
3+
on:
4+
push:
5+
branches: [ main, master ]
6+
pull_request:
7+
branches: [ main, master ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v3
14+
- name: Install dependencies
15+
run: |
16+
sudo apt-get update
17+
sudo apt-get install -y build-essential pkg-config libavcodec-dev libavutil-dev
18+
- name: Build plugin
19+
run: |
20+
make clean && make
21+
./build.sh
22+
- name: Prepare artifact
23+
run: |
24+
mkdir -p artifact
25+
cp -r aac_encoder_plugin.dvcp.bundle artifact/
26+
- name: Upload artifact
27+
uses: actions/upload-artifact@v3
28+
with:
29+
name: aac_encoder_plugin-bundle
30+
path: artifact/aac_encoder_plugin.dvcp.bundle

.github/workflows/release.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Release AAC Encoder Plugin
2+
3+
on:
4+
push:
5+
tags:
6+
- '*'
7+
8+
jobs:
9+
build-and-release:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v3
13+
- name: Install dependencies
14+
run: |
15+
sudo apt-get update
16+
sudo apt-get install -y build-essential pkg-config libavcodec-dev libavutil-dev
17+
- name: Build plugin
18+
run: |
19+
make clean && make
20+
./build.sh
21+
- name: Prepare release artifact
22+
run: |
23+
mkdir -p release_bundle
24+
cp -r aac_encoder_plugin.dvcp.bundle release_bundle/
25+
cp install.sh release_bundle/
26+
cp README_RELEASE.md release_bundle/README.txt
27+
- name: Archive release bundle
28+
run: |
29+
cd release_bundle
30+
tar czf ../aac_encoder_plugin-linux-bundle.tar.gz *
31+
- name: Create GitHub Release
32+
uses: softprops/action-gh-release@v2
33+
with:
34+
files: aac_encoder_plugin-linux-bundle.tar.gz
35+
generate_release_notes: true

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
build/
2-
bin/
2+
bin/
3+
aac_encoder_plugin.dvcp.bundle/

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ $(OBJDIR)/%.o: %.cpp
3333

3434
$(TARGET):
3535
$(CC) $(OBJDIR)/*.o $(LDFLAGS) -o $(TARGET)
36-
install -Dm755 $(TARGET) /opt/resolve/IOPlugins/aac_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64/aac_encoder_plugin.dvcp
36+
# install -Dm755 $(TARGET) /opt/resolve/IOPlugins/aac_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64/aac_encoder_plugin.dvcp
3737

3838
clean: clean-subdirs
3939
rm -rf $(OBJDIR)

README.md

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
# DaVinci Resolve FFmpeg AAC Audio Encoder Plugin
2+
3+
This project is a DaVinci Resolve audio encoder plugin for AAC using FFmpeg.
4+
It builds a plugin compatible with the IOPlugins system of DaVinci Resolve Studio (Free doesn't support plugins) for Linux.
5+
6+
## Features
7+
- AAC encoding using FFmpeg
8+
9+
## Requirements
10+
- DaVinci Resolve Studio (FREE does NOT support plugins!)
11+
- FFmpeg
12+
13+
------------
14+
15+
## Build Requirements
16+
- Linux x86-64
17+
- C++ compiler (g++ >= 9 recommended)
18+
- FFmpeg development libraries (`libavcodec-dev`, `libavutil-dev`)
19+
- CMake (if you want to use it)
20+
- Make
21+
22+
### Install dependencies (Ubuntu/Debian example)
23+
```
24+
sudo apt update
25+
sudo apt install build-essential pkg-config libavcodec-dev libavutil-dev
26+
```
27+
28+
## Build
29+
30+
To build the plugin and package it for DaVinci Resolve:
31+
32+
```
33+
./build.sh
34+
```
35+
36+
The output will be in:
37+
```
38+
aac_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64/aac_encoder_plugin.dvcp
39+
```
40+
41+
## Install
42+
43+
To install the plugin into DaVinci Resolve:
44+
45+
```
46+
sudo ./install.sh
47+
```
48+
49+
This will copy the plugin bundle to `/opt/resolve/IOPlugins`.
50+
51+
---
52+
53+
## License
54+
GPLv3

README_RELEASE.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
AAC Encoder Plugin for DaVinci Resolve (Linux)
2+
===============================================
3+
4+
This archive contains:
5+
- aac_encoder_plugin.dvcp.bundle/ (plugin bundle folder)
6+
- install.sh (installer script)
7+
- README.txt (this file)
8+
9+
How to install:
10+
---------------
11+
Run the installer. The plugin will be installed to /opt/resolve/IOPlugins:
12+
./install.sh
13+
14+
Or you can manally copy aac_encoder_plugin.dvcp.bundle folder to /opt/resolve/IOPlugins
15+
16+
17+
Requirements:
18+
-------------
19+
- DaVinci Resolve Studio (FREE does NOT support plugins!)
20+
- FFmpeg
21+
22+
After installation, restart DaVinci Resolve.

build.sh

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,25 @@
1-
#!/usr/bin/bash
2-
rm -rf build
3-
rm -rf bin
4-
make
1+
#!/bin/bash
2+
set -e
3+
4+
# Build the plugin and package it into the correct bundle structure
5+
PLUGIN_NAME="aac_encoder_plugin.dvcp"
6+
BUNDLE_DIR="aac_encoder_plugin.dvcp.bundle/Contents/Linux-x86-64"
7+
8+
# Clean previous build
9+
rm -rf aac_encoder_plugin.dvcp.bundle
10+
mkdir -p "$BUNDLE_DIR"
11+
12+
# Build (assumes Makefile produces $PLUGIN_NAME in current dir or bin/)
13+
make clean && make
14+
15+
# Copy the built plugin to the bundle
16+
if [ -f "bin/$PLUGIN_NAME" ]; then
17+
cp "bin/$PLUGIN_NAME" "$BUNDLE_DIR/"
18+
elif [ -f "$PLUGIN_NAME" ]; then
19+
cp "$PLUGIN_NAME" "$BUNDLE_DIR/"
20+
else
21+
echo "Error: $PLUGIN_NAME not found after build."
22+
exit 1
23+
fi
24+
25+
echo "Bundle created at $BUNDLE_DIR/$PLUGIN_NAME"

install.sh

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
set -e
3+
4+
PLUGIN_BUNDLE="aac_encoder_plugin.dvcp.bundle"
5+
PLUGIN_BUNDLE_FULL_PATH="$PLUGIN_BUNDLE/Contents/Linux-x86-64/aac_encoder_plugin.dvcp"
6+
PLUGIN_PATH="/opt/resolve/IOPlugins/$PLUGIN_BUNDLE/Contents/Linux-x86-64"
7+
IOPLUGINS_DIR="/opt/resolve/IOPlugins"
8+
9+
# Check ffmpeg presence
10+
if ! command -v ffmpeg >/dev/null 2>&1; then
11+
echo "Error: ffmpeg is not installed or not in PATH. Please install ffmpeg."
12+
exit 10
13+
fi
14+
15+
if [ ! -f "$PLUGIN_BUNDLE_FULL_PATH" ]; then
16+
echo "Error: $PLUGIN_BUNDLE_FULL_PATH not found. Please build or extract the plugin bundle first."
17+
exit 2
18+
fi
19+
20+
# Try to create IOPlugins dir if not exists, check write access
21+
if [ ! -d "$IOPLUGINS_DIR" ]; then
22+
if ! mkdir -p "$IOPLUGINS_DIR" 2>/dev/null; then
23+
echo "No write access to $IOPLUGINS_DIR. Trying with sudo..."
24+
sudo mkdir -p "$IOPLUGINS_DIR"
25+
fi
26+
fi
27+
28+
# Try to create target path and copy plugin, fallback to sudo if needed
29+
if ! mkdir -p "$PLUGIN_PATH" 2>/dev/null; then
30+
echo "No write access to $PLUGIN_PATH. Trying with sudo..."
31+
sudo mkdir -p "$PLUGIN_PATH"
32+
fi
33+
34+
if ! cp "$PLUGIN_BUNDLE_FULL_PATH" "$PLUGIN_PATH/" 2>/dev/null; then
35+
echo "No write access to $PLUGIN_PATH. Trying with sudo..."
36+
sudo cp "$PLUGIN_BUNDLE_FULL_PATH" "$PLUGIN_PATH/"
37+
fi
38+
39+
echo "Plugin successfully installed to $PLUGIN_PATH/aac_encoder_plugin.dvcp"

0 commit comments

Comments
 (0)