@@ -15,12 +15,13 @@ requires "checksums"
15
15
import std/ os
16
16
import std/ [strutils, strformat]
17
17
18
+ var disableHevc = (if getEnv(" DISABLE_HEVC" ).len > 0 : " -d:disable_hevc" else : " " )
18
19
19
20
task test, " Test the project" :
20
- exec " nim c -r tests/rationals"
21
+ exec & " nim c { disableHevc } -r tests/rationals "
21
22
22
23
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 "
24
25
when defined(macosx):
25
26
exec " strip -ur auto-editor"
26
27
exec " stat -f \" %z bytes\" ./auto-editor"
@@ -58,6 +59,7 @@ type Package = object
58
59
sha256: string
59
60
buildArguments: seq [string ]
60
61
buildSystem: string = " autoconf"
62
+ ffFlag: string = " "
61
63
62
64
let nvheaders = Package(
63
65
name: " nv-codec-headers" ,
@@ -69,43 +71,50 @@ let lame = Package(
69
71
sourceUrl: " http://deb.debian.org/debian/pool/main/l/lame/lame_3.100.orig.tar.gz" ,
70
72
sha256: " ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e" ,
71
73
buildArguments: @ [" --disable-frontend" , " --disable-decoder" , " --disable-gtktest" ],
74
+ ffFlag: " --enable-libmp3lame" ,
72
75
)
73
76
let opus = Package(
74
77
name: " opus" ,
75
78
sourceUrl: " https://github.com/xiph/opus/releases/download/v1.5.2/opus-1.5.2.tar.gz" ,
76
79
sha256: " 65c1d2f78b9f2fb20082c38cbe47c951ad5839345876e46941612ee87f9a7ce1" ,
77
80
buildArguments: @ [" --disable-doc" , " --disable-extra-programs" ],
81
+ ffFlag: " --enable-libopus" ,
78
82
)
79
83
let vpx = Package(
80
84
name: " libvpx" ,
81
85
sourceUrl: " https://github.com/webmproject/libvpx/archive/refs/tags/v1.15.2.tar.gz" ,
82
86
sha256: " 26fcd3db88045dee380e581862a6ef106f49b74b6396ee95c2993a260b4636aa" ,
83
87
buildArguments: " --disable-dependency-tracking --disable-examples --disable-unit-tests --enable-pic --enable-runtime-cpu-detect --enable-vp9-highbitdepth" .split(" " ),
88
+ ffFlag: " --enable-libvpx" ,
84
89
)
85
90
let dav1d = Package(
86
91
name: " dav1d" ,
87
92
sourceUrl: " https://code.videolan.org/videolan/dav1d/-/archive/1.5.1/dav1d-1.5.1.tar.bz2" ,
88
93
sha256: " 4eddffd108f098e307b93c9da57b6125224dc5877b1b3d157b31be6ae8f1f093" ,
89
94
buildSystem: " meson" ,
95
+ ffFlag: " --enable-libdav1d" ,
90
96
)
91
97
let svtav1 = Package(
92
98
name: " libsvtav1" ,
93
99
sourceUrl: " https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v3.1.0/SVT-AV1-v3.1.0.tar.bz2" ,
94
100
sha256: " 8231b63ea6c50bae46a019908786ebfa2696e5743487270538f3c25fddfa215a" ,
95
101
buildSystem: " cmake" ,
96
102
buildArguments: @ [" -DBUILD_APPS=OFF" , " -DBUILD_DEC=OFF" , " -DBUILD_ENC=ON" , " -DENABLE_NASM=ON" ],
103
+ ffFlag: " --enable-libsvtav1" ,
97
104
)
98
105
let x264 = Package(
99
106
name: " x264" ,
100
107
sourceUrl: " https://code.videolan.org/videolan/x264/-/archive/32c3b801191522961102d4bea292cdb61068d0dd/x264-32c3b801191522961102d4bea292cdb61068d0dd.tar.bz2" ,
101
108
sha256: " d7748f350127cea138ad97479c385c9a35a6f8527bc6ef7a52236777cf30b839" ,
102
109
buildArguments: " --disable-cli --disable-lsmash --disable-swscale --disable-ffms --enable-strip" .split(" " ),
110
+ ffFlag: " --enable-libx264" ,
103
111
)
104
112
let x265 = Package(
105
113
name: " x265" ,
106
114
sourceUrl: " https://bitbucket.org/multicoreware/x265_git/downloads/x265_4.1.tar.gz" ,
107
115
sha256: " a31699c6a89806b74b0151e5e6a7df65de4b49050482fe5ebf8a4379d7af8f29" ,
108
116
buildSystem: " x265" ,
117
+ ffFlag: " --enable-libx265"
109
118
)
110
119
let ffmpeg = Package(
111
120
name: " ffmpeg" ,
@@ -115,7 +124,10 @@ let ffmpeg = Package(
115
124
var packages: seq [Package] = @ []
116
125
if not defined(macosx):
117
126
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
+
119
131
120
132
func location(package: Package): string = # tar location
121
133
if package.name == " libvpx" :
@@ -450,21 +462,19 @@ var commonFlags = &"""
450
462
--disable-indevs \
451
463
--disable-outdevs \
452
464
--disable-xlib \
465
+ --disable-bsfs \
453
466
--disable-filters \
454
467
--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 \
462
468
--disable-encoder={ encodersDisabled} \
463
469
--disable-decoder={ decodersDisabled} \
464
470
--disable-demuxer={ demuxersDisabled} \
465
471
--disable-muxer={ muxersDisabled} \
466
472
"""
467
473
474
+ for package in packages:
475
+ if package.ffFlag != " " :
476
+ commonFlags &= & " { package.ffFlag} \\\n "
477
+
468
478
if defined(arm) or defined(arm64):
469
479
commonFlags &= " --enable-neon \\\n "
470
480
@@ -535,7 +545,7 @@ task windows, "Cross-compile to Windows (requires mingw-w64)":
535
545
if not dirExists(" build" ):
536
546
echo " FFmpeg for Windows not found. Run 'nimble makeffwin' first."
537
547
else :
538
- exec " nim c -d:danger --os:windows --cpu:amd64 --cc:gcc " &
548
+ exec " nim c -d:danger " & disableHevc & " --os:windows --cpu:amd64 --cc:gcc " &
539
549
" --gcc.exe:x86_64-w64-mingw32-gcc " &
540
550
" --gcc.linkerexe:x86_64-w64-mingw32-gcc " &
541
551
" --passL:-lbcrypt " & # Add Windows Bcrypt library
0 commit comments