Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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
Comment thread
flexiondotorg marked this conversation as resolved.
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
Comment thread
flexiondotorg marked this conversation as resolved.

require (
github.com/Newbluecake/bootstrap v0.17.1
Expand Down
32 changes: 16 additions & 16 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,11 +907,11 @@ 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 {
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
Comment thread
cubic-dev-ai[bot] marked this conversation as resolved.
Outdated
Expand Down
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