Skip to content

Commit 36cf4b3

Browse files
committed
Dont build hevc in smoke test
1 parent fe2d4a0 commit 36cf4b3

File tree

4 files changed

+36
-17
lines changed

4 files changed

+36
-17
lines changed

.github/workflows/smoke.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ jobs:
2323
steps:
2424
- name: Checkout
2525
uses: actions/checkout@v4
26+
- name: Python
27+
uses: actions/setup-python@v5
28+
with:
29+
python-version: "3.13"
2630
- name: Nim
2731
if: runner.os != 'macOS'
2832
uses: jiro4989/setup-nim-action@v2
@@ -42,6 +46,7 @@ jobs:
4246
elif [ "${{ matrix.os }}" = "macos-latest" ]; then
4347
echo "MACOSX_DEPLOYMENT_TARGET=14.0" >> $GITHUB_ENV
4448
fi
49+
echo "DISABLE_HEVC=1" >> $GITHUB_ENV
4550
- name: Build FFmpeg
4651
run: nimble makeff
4752
- name: Compile
@@ -66,6 +71,7 @@ jobs:
6671
sudo apt-get update
6772
sudo apt-get install -y mingw-w64 mingw-w64-tools mingw-w64-x86-64-dev
6873
sudo apt-get install -y build-essential pkg-config nasm git
74+
echo "DISABLE_HEVC=1" >> $GITHUB_ENV
6975
- name: Build FFmpeg
7076
run: nimble makeffwin
7177
- name: Compile

ae.nimble

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ requires "checksums"
1515
import std/os
1616
import std/[strutils, strformat]
1717

18+
var disableHevc = (if getEnv("DISABLE_HEVC").len > 0: "-d:disable_hevc" else: "")
1819

1920
task test, "Test the project":
20-
exec "nim c -r tests/rationals"
21+
exec &"nim c {disableHevc} -r tests/rationals"
2122

2223
task make, "Export the project":
23-
exec "nim c -d:danger --out:auto-editor src/main.nim"
24+
exec &"nim c -d:danger {disableHevc} --out:auto-editor src/main.nim"
2425
when defined(macosx):
2526
exec "strip -ur auto-editor"
2627
exec "stat -f \"%z bytes\" ./auto-editor"
@@ -58,6 +59,7 @@ type Package = object
5859
sha256: string
5960
buildArguments: seq[string]
6061
buildSystem: string = "autoconf"
62+
ffFlag: string = ""
6163

6264
let nvheaders = Package(
6365
name: "nv-codec-headers",
@@ -69,43 +71,50 @@ let lame = Package(
6971
sourceUrl: "http://deb.debian.org/debian/pool/main/l/lame/lame_3.100.orig.tar.gz",
7072
sha256: "ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e",
7173
buildArguments: @["--disable-frontend", "--disable-decoder", "--disable-gtktest"],
74+
ffFlag: "--enable-libmp3lame",
7275
)
7376
let opus = Package(
7477
name: "opus",
7578
sourceUrl: "https://github.com/xiph/opus/releases/download/v1.5.2/opus-1.5.2.tar.gz",
7679
sha256: "65c1d2f78b9f2fb20082c38cbe47c951ad5839345876e46941612ee87f9a7ce1",
7780
buildArguments: @["--disable-doc", "--disable-extra-programs"],
81+
ffFlag: "--enable-libopus",
7882
)
7983
let vpx = Package(
8084
name: "libvpx",
8185
sourceUrl: "https://github.com/webmproject/libvpx/archive/refs/tags/v1.15.2.tar.gz",
8286
sha256: "26fcd3db88045dee380e581862a6ef106f49b74b6396ee95c2993a260b4636aa",
8387
buildArguments: "--disable-dependency-tracking --disable-examples --disable-unit-tests --enable-pic --enable-runtime-cpu-detect --enable-vp9-highbitdepth".split(" "),
88+
ffFlag: "--enable-libvpx",
8489
)
8590
let dav1d = Package(
8691
name: "dav1d",
8792
sourceUrl: "https://code.videolan.org/videolan/dav1d/-/archive/1.5.1/dav1d-1.5.1.tar.bz2",
8893
sha256: "4eddffd108f098e307b93c9da57b6125224dc5877b1b3d157b31be6ae8f1f093",
8994
buildSystem: "meson",
95+
ffFlag: "--enable-libdav1d",
9096
)
9197
let svtav1 = Package(
9298
name: "libsvtav1",
9399
sourceUrl: "https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v3.1.0/SVT-AV1-v3.1.0.tar.bz2",
94100
sha256: "8231b63ea6c50bae46a019908786ebfa2696e5743487270538f3c25fddfa215a",
95101
buildSystem: "cmake",
96102
buildArguments: @["-DBUILD_APPS=OFF", "-DBUILD_DEC=OFF", "-DBUILD_ENC=ON", "-DENABLE_NASM=ON"],
103+
ffFlag: "--enable-libsvtav1",
97104
)
98105
let x264 = Package(
99106
name: "x264",
100107
sourceUrl: "https://code.videolan.org/videolan/x264/-/archive/32c3b801191522961102d4bea292cdb61068d0dd/x264-32c3b801191522961102d4bea292cdb61068d0dd.tar.bz2",
101108
sha256: "d7748f350127cea138ad97479c385c9a35a6f8527bc6ef7a52236777cf30b839",
102109
buildArguments: "--disable-cli --disable-lsmash --disable-swscale --disable-ffms --enable-strip".split(" "),
110+
ffFlag: "--enable-libx264",
103111
)
104112
let x265 = Package(
105113
name: "x265",
106114
sourceUrl: "https://bitbucket.org/multicoreware/x265_git/downloads/x265_4.1.tar.gz",
107115
sha256: "a31699c6a89806b74b0151e5e6a7df65de4b49050482fe5ebf8a4379d7af8f29",
108116
buildSystem: "x265",
117+
ffFlag: "--enable-libx265"
109118
)
110119
let ffmpeg = Package(
111120
name: "ffmpeg",
@@ -115,7 +124,10 @@ let ffmpeg = Package(
115124
var packages: seq[Package] = @[]
116125
if not defined(macosx):
117126
packages.add nvheaders
118-
packages &= [lame, opus, vpx, dav1d, svtav1, x264, x265]
127+
packages &= [lame, opus, vpx, dav1d, svtav1, x264]
128+
if disableHevc.len == 0:
129+
packages.add x265
130+
119131

120132
func location(package: Package): string = # tar location
121133
if package.name == "libvpx":
@@ -452,19 +464,16 @@ var commonFlags = &"""
452464
--disable-xlib \
453465
--disable-filters \
454466
--enable-filter=scale,pad,format,gblur,aformat,abuffer,abuffersink,aresample,atempo,anull,anullsrc,volume \
455-
--enable-libmp3lame \
456-
--enable-libopus \
457-
--enable-libvpx \
458-
--enable-libdav1d \
459-
--enable-libsvtav1 \
460-
--enable-libx264 \
461-
--enable-libx265 \
462467
--disable-encoder={encodersDisabled} \
463468
--disable-decoder={decodersDisabled} \
464469
--disable-demuxer={demuxersDisabled} \
465470
--disable-muxer={muxersDisabled} \
466471
"""
467472

473+
for package in packages:
474+
if package.ffFlag != "":
475+
commonFlags &= &" {package.ffFlag} \\\n"
476+
468477
if defined(arm) or defined(arm64):
469478
commonFlags &= " --enable-neon \\\n"
470479

@@ -535,7 +544,7 @@ task windows, "Cross-compile to Windows (requires mingw-w64)":
535544
if not dirExists("build"):
536545
echo "FFmpeg for Windows not found. Run 'nimble makeffwin' first."
537546
else:
538-
exec "nim c -d:danger --os:windows --cpu:amd64 --cc:gcc " &
547+
exec "nim c -d:danger " & disableHevc & " --os:windows --cpu:amd64 --cc:gcc " &
539548
"--gcc.exe:x86_64-w64-mingw32-gcc " &
540549
"--gcc.linkerexe:x86_64-w64-mingw32-gcc " &
541550
"--passL:-lbcrypt " & # Add Windows Bcrypt library

src/ffmpeg.nim

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ when defined(macosx):
44
when defined(linux):
55
{.passL: "-L./build/lib/x86_64-linux-gnu -L./build/lib64"}
66
{.passL: "-L./build/lib -lavfilter -lavformat -lavcodec -lswresample -lswscale -lavutil".}
7-
{.passL: "-lmp3lame -lopus -lvpx -lx264 -lx265 -ldav1d -lSvtAv1Enc -lm".}
8-
9-
when defined(macosx): # For x265
10-
{.passL: "-lc++"}
11-
else:
12-
{.passL: "-lstdc++"}
7+
{.passL: "-lmp3lame -lopus -lvpx -lx264 -ldav1d -lSvtAv1Enc".}
138

9+
when not defined(disable_hevc):
10+
{.passL: "-lx265".}
11+
when defined(macosx):
12+
{.passL: "-lc++"}
13+
else:
14+
{.passL: "-lstdc++"}
15+
{.passL: "-lm".}
1416

1517
import std/posix
1618

tests/test.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,8 @@ def test_decode_hevc(self):
516516
assert output.videos[0].pix_fmt == "yuv420p"
517517

518518
def test_encode_hevc(self):
519+
if len(os.getenv("DISABLE_HEVC", "")) > 0:
520+
raise SkipTest()
519521
out = self.main(["resources/testsrc.mp4"], ["-c:v", "hevc"], "out.mkv")
520522
output = fileinfo(out)
521523
assert output.videos[0].codec == "hevc"

0 commit comments

Comments
 (0)