Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions .github/workflows/ffmpeg-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ on:
workflow_dispatch:
inputs:
version:
description: 'FFmpeg library version (e.g., 8.0.0.1)'
description: "FFmpeg library version (e.g., 8.0.0.1)"
required: true
push:
tags:
- 'lib-[0-9]*.[0-9]*.[0-9]*.[0-9]*'
- "lib-[0-9]*.[0-9]*.[0-9]*.[0-9]*"

permissions:
pull-requests: write
Expand Down Expand Up @@ -48,7 +48,7 @@ jobs:

- uses: actions/setup-go@v6
with:
go-version: '1.24'
go-version-file: go.mod
cache: true

- uses: dtolnay/rust-toolchain@stable
Expand Down Expand Up @@ -118,4 +118,3 @@ jobs:
- Linux arm64
- macOS x86 (Intel)
- macOS arm64 (Apple Silicon)

10 changes: 5 additions & 5 deletions .github/workflows/ffmpeg-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ name: FFmpeg library test

on:
push:
branches: [ main ]
branches: [main]
paths:
- '.github/workflows/ffmpeg-test.yml'
- 'internal/builder/**'
- '*.gen.go'
- ".github/workflows/ffmpeg-test.yml"
- "internal/builder/**"
- "*.gen.go"
workflow_dispatch:

permissions:
Expand Down Expand Up @@ -39,7 +39,7 @@ jobs:

- uses: actions/setup-go@v6
with:
go-version: '1.24'
go-version-file: go.mod
cache: true

- uses: dtolnay/rust-toolchain@stable
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/go-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ on:
workflow_dispatch:
inputs:
version:
description: 'Go module version (e.g., 8.0.0.1)'
description: "Go module version (e.g., 8.0.0.1)"
required: true
push:
tags:
- 'v[0-9]*.[0-9]*.[0-9]*.[0-9]*'
- "v[0-9]*.[0-9]*.[0-9]*.[0-9]*"

permissions:
contents: write
Expand All @@ -33,7 +33,7 @@ jobs:

- uses: actions/setup-go@v6
with:
go-version: '1.24'
go-version-file: go.mod
cache: true

- name: Install libclang for generator
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/go-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: Go tests

on:
push:
branches: [ "main" ]
branches: ["main"]
pull_request:
branches: [ "main" ]
branches: ["main"]
workflow_dispatch:

jobs:
Expand Down Expand Up @@ -33,7 +33,7 @@ jobs:

- uses: actions/setup-go@v6
with:
go-version: '1.24'
go-version-file: go.mod
cache: true

- name: Install libclang for generator
Expand Down
26 changes: 13 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,26 +84,26 @@ If you need complete FFmpeg with all filters, use the official FFmpeg distributi
| Library | Version | Description |
|------------------|-------------|------------------------------------------------------------------------------------|
| FFmpeg | 8.0.1 | A complete, cross-platform solution to record, convert and stream audio and video |
| dav1d | 1.5.2 | AV1 cross-platform decoder, open-source, and focused on speed, size and correctness|
| dav1d | 1.5.3 | AV1 cross-platform decoder, open-source, and focused on speed, size and correctness|
| glslang | 15.4.0 | Khronos-reference front end for GLSL/ESSL and a SPIR-V generator |
| libdrm | 2.4.129 | Direct Rendering Manager library and headers (*Linux only*) |
| libiconv | 1.18 | A character set conversion library (*macOS only*) |
| libsrt | 1.5.5-rc.0a | A transport protocol for ultra low latency live video and audio streaming |
| libva | 2.22.0 | An implementation for VA-API (Video Acceleration API) (*Linux only*) |
| libvpl | 2.15.0 | Intel Video Processing Library (Intel VPL) API (*Linux only*) |
| libvpx | 1.15.2 | High-quality, open video format for the web that's freely available to everyone |
| libdrm | 2.4.131 | Direct Rendering Manager library and headers (*Linux only*) |
| libiconv | 1.19 | A character set conversion library (*macOS only*) |
| libsrt | 1.5.5-rc.1 | A transport protocol for ultra low latency live video and audio streaming |
| libva | 2.23.0 | An implementation for VA-API (Video Acceleration API) (*Linux only*) |
| libvpl | 2.16.0 | Intel Video Processing Library (Intel VPL) API (*Linux only*) |
| libvpx | 1.16.0 | High-quality, open video format for the web that's freely available to everyone |
| libwebp | 1.6.0 | A modern image format providing superior lossless and lossy compression |
| libxml2 | 2.15.1 | An XML parser and toolkit implemented in C |
| libxml2 | 2.15.2 | An XML parser and toolkit implemented in C |
| mp3lame | 3.100 | A high quality MPEG Audio Layer III (MP3) encoder |
| nv-codec-headers | 12.2.72.0 | Headers required to interface with Nvidias codec APIs (*Linux only*) |
| openssl | 3.6.0 | Open Source Toolkit for the TLS, DTLS, and QUIC protocols. |
| opus | 1.5.2 | A totally open, royalty-free, highly versatile audio codec |
| nv-codec-headers | 13.0.19.0 | Headers required to interface with Nvidias codec APIs (*Linux only*) |
| openssl | 3.6.1 | Open Source Toolkit for the TLS, DTLS, and QUIC protocols. |
| opus | 1.6.1 | A totally open, royalty-free, highly versatile audio codec |
| rav1e | 0.8.1 | The fastest and safest AV1 encoder. |
| Vulkan-Headers | 1.4.335 | Vulkan header files and API registry |
| Vulkan-Headers | 1.4.345 | Vulkan header files and API registry |
| x264 | head | H.264/MPEG-4 AVC compression format library for encoding video streams |
| x265 | head | H.265/MPEG-H HEVC compression format library for encoding video streams |
| zimg | 3.0.6 | Scaling, colorspace conversion, and dithering library |
| zlib | 1.3.1 | A Massively Spiffy Yet Delicately Unobtrusive Compression Library |
| zlib | 1.3.2 | A Massively Spiffy Yet Delicately Unobtrusive Compression Library |

VVenC 1.13.1 (Fraunhofer Versatile Video Encoder, a fast & efficient software H.266/VVC encoder) is in the build configuration, **but currently disabled**, as it adds ~25MB to the static ffmpeg library and is too slow for practical use.

Expand Down
6 changes: 3 additions & 3 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
gcc
git-filter-repo
gnumake
go
go_1_26
gperf
just
meson
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module github.com/linuxmatters/ffmpeg-statigo

go 1.24.0
go 1.26.1

require (
github.com/Newbluecake/bootstrap v0.17.1
Expand Down
34 changes: 16 additions & 18 deletions internal/builder/libraries.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ func buildLibraryOrder() []*Library {
// zlib - compression library
var zlib = &Library{
Name: "zlib",
URL: "https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz",
URL: "https://github.com/madler/zlib/releases/download/v1.3.2/zlib-1.3.2.tar.gz",
FFmpegEnables: []string{"zlib"},
BuildSystem: &AutoconfBuild{},
SkipAutoFlags: true, // zlib has a custom configure script that rejects CFLAGS/LDFLAGS
Expand All @@ -177,7 +177,7 @@ var zlib = &Library{
// libiconv - character encoding conversion (macOS only)
var libiconv = &Library{
Name: "libiconv",
URL: "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.18.tar.gz",
URL: "https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.19.tar.gz",
Platform: []string{"darwin"},
BuildSystem: &AutoconfBuild{},
ConfigureArgs: func(os string) []string {
Expand All @@ -194,7 +194,7 @@ var libiconv = &Library{
// libxml2 - XML parsing library
var libxml2 = &Library{
Name: "libxml2",
URL: "https://download.gnome.org/sources/libxml2/2.15/libxml2-2.15.1.tar.xz",
URL: "https://download.gnome.org/sources/libxml2/2.15/libxml2-2.15.2.tar.xz",
FFmpegEnables: []string{"libxml2"},
BuildSystem: &AutoconfBuild{},
ConfigureArgs: func(os string) []string {
Expand All @@ -218,7 +218,7 @@ var libxml2 = &Library{
// nvcodecheaders - NVIDIA codec SDK headers (Linux only)
var nvcodecheaders = &Library{
Name: "nv-codec-headers",
URL: "https://github.com/FFmpeg/nv-codec-headers/releases/download/n12.2.72.0/nv-codec-headers-12.2.72.0.tar.gz",
URL: "https://github.com/FFmpeg/nv-codec-headers/releases/download/n13.0.19.0/nv-codec-headers-13.0.19.0.tar.gz",
Platform: []string{"linux"},
FFmpegEnables: []string{"cuvid", "ffnvcodec", "nvdec", "nvenc"},
BuildSystem: &MakefileBuild{
Expand All @@ -233,7 +233,7 @@ var nvcodecheaders = &Library{
// vulkanheaders - Vulkan API headers (cross-platform)
var vulkanheaders = &Library{
Name: "Vulkan-Headers",
URL: "https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/v1.4.335.tar.gz",
URL: "https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/v1.4.345.tar.gz",
FFmpegEnables: []string{"vulkan"},
BuildSystem: &CMakeBuild{},
ConfigureArgs: func(os string) []string {
Expand Down Expand Up @@ -293,7 +293,7 @@ var glslang = &Library{
// libdrm - Direct Rendering Manager library (Linux only, required by libva)
var libdrm = &Library{
Name: "libdrm",
URL: "https://gitlab.freedesktop.org/mesa/drm/-/archive/libdrm-2.4.129/drm-libdrm-2.4.129.tar.gz",
URL: "https://gitlab.freedesktop.org/mesa/drm/-/archive/libdrm-2.4.131/drm-libdrm-2.4.131.tar.gz",
Platform: []string{"linux"},
BuildSystem: &MesonBuild{},
ConfigureArgs: func(os string) []string {
Expand Down Expand Up @@ -324,7 +324,7 @@ var libdrm = &Library{
// libva - Video Acceleration API (Linux only, provides VA-API backend for QSV)
var libva = &Library{
Name: "libva",
URL: "https://github.com/intel/libva/releases/download/2.22.0/libva-2.22.0.tar.bz2",
URL: "https://github.com/intel/libva/releases/download/2.23.0/libva-2.23.0.tar.bz2",
Platform: []string{"linux"},
Dependencies: []*Library{libdrm},
FFmpegEnables: []string{"vaapi"},
Expand Down Expand Up @@ -364,7 +364,7 @@ var libva = &Library{
// libvpl - Intel VPL/oneVPL headers (Linux only, for QuickSync)
var libvpl = &Library{
Name: "libvpl",
URL: "https://github.com/intel/libvpl/archive/refs/tags/v2.15.0.tar.gz",
URL: "https://github.com/intel/libvpl/archive/refs/tags/v2.16.0.tar.gz",
Platform: []string{"linux"},
FFmpegEnables: []string{"libvpl"},
BuildSystem: &CMakeBuild{},
Expand Down Expand Up @@ -488,7 +488,7 @@ var lame = &Library{
// opus - Opus audio codec
var opus = &Library{
Name: "opus",
URL: "https://downloads.xiph.org/releases/opus/opus-1.5.2.tar.gz",
URL: "https://downloads.xiph.org/releases/opus/opus-1.6.1.tar.gz",
FFmpegEnables: []string{"libopus"},
BuildSystem: &AutoconfBuild{},
ConfigureArgs: func(os string) []string {
Expand All @@ -505,7 +505,7 @@ var opus = &Library{
// libvpx - VP8/VP9 video codec
var libvpx = &Library{
Name: "libvpx",
URL: "https://github.com/webmproject/libvpx/archive/refs/tags/v1.15.2.tar.gz",
URL: "https://github.com/webmproject/libvpx/archive/refs/tags/v1.16.0.tar.gz",
FFmpegEnables: []string{"libvpx"},
BuildSystem: &AutoconfBuild{},
SkipAutoFlags: true, // vpx has a custom configure script that rejects CFLAGS/LDFLAGS
Expand Down Expand Up @@ -589,7 +589,7 @@ var x265 = &Library{
// dav1d - AV1 video decoder
var dav1d = &Library{
Name: "dav1d",
URL: "https://code.videolan.org/videolan/dav1d/-/archive/1.5.2/dav1d-1.5.2.tar.bz2",
URL: "https://code.videolan.org/videolan/dav1d/-/archive/1.5.3/dav1d-1.5.3.tar.bz2",
FFmpegEnables: []string{"libdav1d"},
BuildSystem: &MesonBuild{},
ConfigureArgs: func(os string) []string {
Expand Down Expand Up @@ -654,7 +654,7 @@ var rav1e = &Library{
// vvenc - H.266/VVC video encoder
var vvenc = &Library{
Name: "vvenc",
URL: "https://github.com/fraunhoferhhi/vvenc/archive/refs/tags/v1.13.1.tar.gz",
URL: "https://github.com/fraunhoferhhi/vvenc/archive/refs/tags/v1.14.0.tar.gz",
FFmpegEnables: []string{"libvvenc"},
BuildSystem: &CMakeBuild{},
Enabled: Disabled(),
Expand All @@ -681,7 +681,7 @@ var vvenc = &Library{
// - BIO, EVP APIs
var openssl = &Library{
Name: "openssl",
URL: "https://github.com/openssl/openssl/releases/download/openssl-3.6.0/openssl-3.6.0.tar.gz",
URL: "https://github.com/openssl/openssl/releases/download/openssl-3.6.1/openssl-3.6.1.tar.gz",
FFmpegEnables: []string{"openssl"},
BuildSystem: &OpenSSLBuild{},
ConfigureArgs: func(os string) []string {
Expand Down Expand Up @@ -744,7 +744,7 @@ var openssl = &Library{
// libsrt - Secure Reliable Transport (SRT) protocol library
var libsrt = &Library{
Name: "libsrt",
URL: "https://github.com/Haivision/srt/archive/refs/tags/v1.5.5-rc.0a.tar.gz",
URL: "https://github.com/Haivision/srt/archive/refs/tags/v1.5.5-rc.1.tar.gz",
FFmpegEnables: []string{"libsrt"},
BuildSystem: &CMakeBuild{},
ConfigureArgs: func(os string) []string {
Expand Down Expand Up @@ -907,15 +907,13 @@ func touchAutomakeFiles(srcPath string) error {
}

// Also touch any Makefile.in files in subdirectories
filepath.Walk(srcPath, func(path string, info os.FileInfo, err error) error {
return filepath.WalkDir(srcPath, func(path string, d os.DirEntry, err error) error {
if err != nil {
return err
}
if !info.IsDir() && info.Name() == "Makefile.in" {
if !d.IsDir() && d.Name() == "Makefile.in" {
os.Chtimes(path, now, now)
}
return nil
})

return nil
}
4 changes: 2 additions & 2 deletions lib/fetch.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import (
"os"
"path/filepath"
"runtime"
"sort"
"slices"
"strings"
)

Expand Down Expand Up @@ -161,7 +161,7 @@ func findViaAPI(prefix string) (string, error) {
}

// Sort to find highest version (lib-8.0.0.0 < lib-8.0.0.1 < lib-8.0.0.3)
sort.Strings(matchingReleases)
slices.Sort(matchingReleases)

// Return the last (highest) version
return matchingReleases[len(matchingReleases)-1], nil
Expand Down
Loading