bare-ffmpeg 1.0.0-8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +32 -10
- package/README.md +65 -769
- package/binding.cc +5372 -0
- package/cmake/ports/ffmpeg/port.cmake +513 -0
- package/cmake/ports/libdrm/port.cmake +32 -0
- package/cmake/ports/libva/port.cmake +53 -0
- package/cmake/ports/opus/patches/01-windows-clang.patch +52 -0
- package/cmake/ports/opus/port.cmake +42 -0
- package/cmake/ports/svt-av1/port.cmake +42 -0
- package/cmake/ports/x264/patches/01-windows-clang.patch +33 -0
- package/cmake/ports/x264/port.cmake +162 -0
- package/index.js +28 -9
- package/lib/audio-fifo.js +47 -0
- package/lib/channel-layout.js +35 -0
- package/lib/codec-context.js +185 -7
- package/lib/codec-parameters.js +252 -4
- package/lib/codec.js +17 -0
- package/lib/constants.js +340 -12
- package/lib/dictionary.js +20 -0
- package/lib/errors.js +26 -0
- package/lib/filter-context.js +7 -0
- package/lib/filter-graph.js +42 -0
- package/lib/filter-inout.js +52 -0
- package/lib/filter.js +7 -0
- package/lib/format-context.js +43 -23
- package/lib/frame.js +81 -12
- package/lib/hw-device-context.js +31 -0
- package/lib/hw-frames-constraints.js +54 -0
- package/lib/hw-frames-context.js +92 -0
- package/lib/image.js +14 -3
- package/lib/input-format.js +36 -2
- package/lib/io-context.js +29 -4
- package/lib/log.js +16 -0
- package/lib/output-format.js +33 -2
- package/lib/packet.js +143 -1
- package/lib/rational.js +46 -1
- package/lib/resampler.js +23 -17
- package/lib/samples.js +85 -0
- package/lib/scaler.js +3 -9
- package/lib/stream.js +51 -14
- package/package.json +9 -5
- package/prebuilds/android-arm/bare-ffmpeg.bare +0 -0
- package/prebuilds/android-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/android-ia32/bare-ffmpeg.bare +0 -0
- package/prebuilds/android-x64/bare-ffmpeg.bare +0 -0
- package/prebuilds/darwin-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/darwin-x64/bare-ffmpeg.bare +0 -0
- package/prebuilds/ios-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/ios-arm64-simulator/bare-ffmpeg.bare +0 -0
- package/prebuilds/ios-x64-simulator/bare-ffmpeg.bare +0 -0
- package/prebuilds/linux-arm64/bare-ffmpeg/libva-drm.so.2 +0 -0
- package/prebuilds/linux-arm64/bare-ffmpeg/libva.so.2 +0 -0
- package/prebuilds/linux-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/linux-x64/bare-ffmpeg/libva-drm.so.2 +0 -0
- package/prebuilds/linux-x64/bare-ffmpeg/libva.so.2 +0 -0
- package/prebuilds/linux-x64/bare-ffmpeg.bare +0 -0
- package/prebuilds/win32-arm64/bare-ffmpeg.bare +0 -0
- package/prebuilds/win32-x64/bare-ffmpeg.bare +0 -0
|
@@ -0,0 +1,513 @@
|
|
|
1
|
+
include_guard(GLOBAL)
|
|
2
|
+
|
|
3
|
+
set(libraries
|
|
4
|
+
avcodec
|
|
5
|
+
avdevice
|
|
6
|
+
avfilter
|
|
7
|
+
avformat
|
|
8
|
+
avutil
|
|
9
|
+
swresample
|
|
10
|
+
swscale
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
set(byproducts)
|
|
14
|
+
|
|
15
|
+
foreach(name IN LISTS libraries)
|
|
16
|
+
add_library(${name} STATIC IMPORTED GLOBAL)
|
|
17
|
+
|
|
18
|
+
list(APPEND byproducts lib/lib${name}.a)
|
|
19
|
+
endforeach()
|
|
20
|
+
|
|
21
|
+
set(path)
|
|
22
|
+
set(args
|
|
23
|
+
--disable-autodetect
|
|
24
|
+
--disable-doc
|
|
25
|
+
--disable-programs
|
|
26
|
+
--disable-network
|
|
27
|
+
|
|
28
|
+
--enable-pic
|
|
29
|
+
--enable-cross-compile
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
if(CMAKE_BUILD_TYPE MATCHES "Release")
|
|
33
|
+
list(APPEND args --disable-debug)
|
|
34
|
+
elseif(CMAKE_BUILD_TYPE MATCHES "Debug")
|
|
35
|
+
list(APPEND args --disable-optimizations)
|
|
36
|
+
elseif(CMAKE_BUILD_TYPE MATCHES "MinSizeRel")
|
|
37
|
+
list(APPEND args --disable-debug --enable-small)
|
|
38
|
+
endif()
|
|
39
|
+
|
|
40
|
+
if(APPLE AND CMAKE_OSX_ARCHITECTURES)
|
|
41
|
+
set(arch ${CMAKE_OSX_ARCHITECTURES})
|
|
42
|
+
elseif(MSVC AND CMAKE_GENERATOR_PLATFORM)
|
|
43
|
+
set(arch ${CMAKE_GENERATOR_PLATFORM})
|
|
44
|
+
elseif(ANDROID AND CMAKE_ANDROID_ARCH_ABI)
|
|
45
|
+
set(arch ${CMAKE_ANDROID_ARCH_ABI})
|
|
46
|
+
elseif(CMAKE_SYSTEM_PROCESSOR)
|
|
47
|
+
set(arch ${CMAKE_SYSTEM_PROCESSOR})
|
|
48
|
+
else()
|
|
49
|
+
set(arch ${CMAKE_HOST_SYSTEM_PROCESSOR})
|
|
50
|
+
endif()
|
|
51
|
+
|
|
52
|
+
string(TOLOWER "${arch}" arch)
|
|
53
|
+
|
|
54
|
+
if(arch MATCHES "arm64|aarch64")
|
|
55
|
+
set(arch "aarch64")
|
|
56
|
+
elseif(arch MATCHES "armv7-a|armeabi-v7a")
|
|
57
|
+
set(arch "arm")
|
|
58
|
+
elseif(arch MATCHES "x64|x86_64|amd64")
|
|
59
|
+
set(arch "x64")
|
|
60
|
+
elseif(arch MATCHES "x86|i386|i486|i586|i686")
|
|
61
|
+
set(arch "x86_32")
|
|
62
|
+
else()
|
|
63
|
+
message(FATAL_ERROR "Unsupported architecture '${arch}'")
|
|
64
|
+
endif()
|
|
65
|
+
|
|
66
|
+
list(APPEND args --arch=${arch})
|
|
67
|
+
|
|
68
|
+
if(APPLE)
|
|
69
|
+
list(APPEND args
|
|
70
|
+
--target-os=darwin
|
|
71
|
+
|
|
72
|
+
"--sysroot=${CMAKE_OSX_SYSROOT}"
|
|
73
|
+
|
|
74
|
+
--enable-avfoundation
|
|
75
|
+
--enable-videotoolbox
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
if(NOT IOS)
|
|
79
|
+
list(APPEND args
|
|
80
|
+
--enable-appkit
|
|
81
|
+
--enable-audiotoolbox
|
|
82
|
+
)
|
|
83
|
+
endif()
|
|
84
|
+
elseif(LINUX)
|
|
85
|
+
list(APPEND args
|
|
86
|
+
--target-os=linux
|
|
87
|
+
|
|
88
|
+
"--sysroot=${CMAKE_SYSROOT}"
|
|
89
|
+
|
|
90
|
+
--enable-pthreads
|
|
91
|
+
)
|
|
92
|
+
elseif(ANDROID)
|
|
93
|
+
list(APPEND args
|
|
94
|
+
--target-os=android
|
|
95
|
+
|
|
96
|
+
"--sysroot=${CMAKE_SYSROOT}"
|
|
97
|
+
|
|
98
|
+
--enable-jni
|
|
99
|
+
--enable-mediacodec
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
if(arch MATCHES "x86_32")
|
|
103
|
+
list(APPEND args --disable-asm)
|
|
104
|
+
endif()
|
|
105
|
+
elseif(WIN32)
|
|
106
|
+
list(APPEND args
|
|
107
|
+
--target-os=win32
|
|
108
|
+
|
|
109
|
+
--enable-w32threads
|
|
110
|
+
--enable-d3d11va
|
|
111
|
+
--enable-d3d12va
|
|
112
|
+
--enable-dxva2
|
|
113
|
+
--enable-mediafoundation
|
|
114
|
+
)
|
|
115
|
+
endif()
|
|
116
|
+
|
|
117
|
+
set(env)
|
|
118
|
+
|
|
119
|
+
if(CMAKE_C_COMPILER)
|
|
120
|
+
cmake_path(GET CMAKE_C_COMPILER PARENT_PATH CC_path)
|
|
121
|
+
cmake_path(GET CMAKE_C_COMPILER FILENAME CC_filename)
|
|
122
|
+
|
|
123
|
+
if(WIN32 AND CC_filename MATCHES "clang-cl.exe")
|
|
124
|
+
set(CC_filename "clang.exe")
|
|
125
|
+
endif()
|
|
126
|
+
|
|
127
|
+
list(APPEND path "${CC_path}")
|
|
128
|
+
list(APPEND args
|
|
129
|
+
"--cc=${CC_filename}"
|
|
130
|
+
"--host-cc=${CC_filename}"
|
|
131
|
+
"--extra-cflags=--target=${CMAKE_C_COMPILER_TARGET}"
|
|
132
|
+
"--ld=${CC_filename}"
|
|
133
|
+
"--host-ld=${CC_filename}"
|
|
134
|
+
"--extra-ldflags=--target=${CMAKE_C_COMPILER_TARGET}"
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
if(CMAKE_LINKER_TYPE MATCHES "LLD")
|
|
138
|
+
list(APPEND args --extra-ldflags=-fuse-ld=lld)
|
|
139
|
+
endif()
|
|
140
|
+
endif()
|
|
141
|
+
|
|
142
|
+
if(CMAKE_CXX_COMPILER)
|
|
143
|
+
cmake_path(GET CMAKE_CXX_COMPILER PARENT_PATH CXX_path)
|
|
144
|
+
cmake_path(GET CMAKE_CXX_COMPILER FILENAME CXX_filename)
|
|
145
|
+
|
|
146
|
+
if(WIN32 AND CXX_filename MATCHES "clang-cl.exe")
|
|
147
|
+
set(CXX_filename "clang.exe")
|
|
148
|
+
endif()
|
|
149
|
+
|
|
150
|
+
list(APPEND path "${CXX_path}")
|
|
151
|
+
list(APPEND args
|
|
152
|
+
"--cxx=${CXX_filename}"
|
|
153
|
+
"--extra-cxxflags=--target=${CMAKE_CXX_COMPILER_TARGET}"
|
|
154
|
+
)
|
|
155
|
+
endif()
|
|
156
|
+
|
|
157
|
+
if(CMAKE_OBJC_COMPILER)
|
|
158
|
+
cmake_path(GET CMAKE_OBJC_COMPILER PARENT_PATH OBJC_path)
|
|
159
|
+
cmake_path(GET CMAKE_OBJC_COMPILER FILENAME OBJC_filename)
|
|
160
|
+
|
|
161
|
+
list(APPEND path "${OBJC_path}")
|
|
162
|
+
list(APPEND args
|
|
163
|
+
"--objcc=${OBJC_filename}"
|
|
164
|
+
"--extra-objcflags=--target=${CMAKE_OBJC_COMPILER_TARGET}"
|
|
165
|
+
)
|
|
166
|
+
endif()
|
|
167
|
+
|
|
168
|
+
if(CMAKE_ASM_COMPILER)
|
|
169
|
+
cmake_path(GET CMAKE_ASM_COMPILER PARENT_PATH AS_path)
|
|
170
|
+
cmake_path(GET CMAKE_ASM_COMPILER FILENAME AS_filename)
|
|
171
|
+
|
|
172
|
+
if(WIN32 AND AS_filename MATCHES "clang-cl.exe")
|
|
173
|
+
set(AS_filename "clang.exe")
|
|
174
|
+
endif()
|
|
175
|
+
|
|
176
|
+
list(APPEND path "${AS_path}")
|
|
177
|
+
list(APPEND args "--as=${AS_filename}")
|
|
178
|
+
endif()
|
|
179
|
+
|
|
180
|
+
if(CMAKE_RC_COMPILER)
|
|
181
|
+
cmake_path(GET CMAKE_RC_COMPILER PARENT_PATH RC_path)
|
|
182
|
+
cmake_path(GET CMAKE_RC_COMPILER FILENAME RC_filename)
|
|
183
|
+
|
|
184
|
+
list(APPEND path "${RC_path}")
|
|
185
|
+
list(APPEND args "--windres=${RC_filename}")
|
|
186
|
+
endif()
|
|
187
|
+
|
|
188
|
+
if(CMAKE_AR)
|
|
189
|
+
cmake_path(GET CMAKE_AR PARENT_PATH AR_path)
|
|
190
|
+
cmake_path(GET CMAKE_AR FILENAME AR_filename)
|
|
191
|
+
|
|
192
|
+
if(WIN32 AND AR_filename MATCHES "llvm-lib.exe")
|
|
193
|
+
set(AR_filename "llvm-ar.exe")
|
|
194
|
+
endif()
|
|
195
|
+
|
|
196
|
+
list(APPEND path "${AR_path}")
|
|
197
|
+
list(APPEND args "--ar=${AR_filename}")
|
|
198
|
+
endif()
|
|
199
|
+
|
|
200
|
+
if(CMAKE_NM)
|
|
201
|
+
cmake_path(GET CMAKE_NM PARENT_PATH NM_path)
|
|
202
|
+
cmake_path(GET CMAKE_NM FILENAME NM_filename)
|
|
203
|
+
|
|
204
|
+
list(APPEND path "${NM_path}")
|
|
205
|
+
list(APPEND args "--nm=${NM_filename}")
|
|
206
|
+
endif()
|
|
207
|
+
|
|
208
|
+
if(CMAKE_RANLIB)
|
|
209
|
+
cmake_path(GET CMAKE_RANLIB PARENT_PATH RANLIB_path)
|
|
210
|
+
cmake_path(GET CMAKE_RANLIB FILENAME RANLIB_filename)
|
|
211
|
+
|
|
212
|
+
list(APPEND path "${RANLIB_path}")
|
|
213
|
+
list(APPEND args "--ranlib=${RANLIB_filename}")
|
|
214
|
+
endif()
|
|
215
|
+
|
|
216
|
+
if(CMAKE_STRIP)
|
|
217
|
+
cmake_path(GET CMAKE_STRIP PARENT_PATH STRIP_path)
|
|
218
|
+
cmake_path(GET CMAKE_STRIP FILENAME STRIP_filename)
|
|
219
|
+
|
|
220
|
+
list(APPEND path "${STRIP_path}")
|
|
221
|
+
list(APPEND args "--strip=${STRIP_filename}")
|
|
222
|
+
endif()
|
|
223
|
+
|
|
224
|
+
set(depends)
|
|
225
|
+
set(pkg_config_path)
|
|
226
|
+
|
|
227
|
+
if("gpl" IN_LIST features)
|
|
228
|
+
list(APPEND args --enable-gpl)
|
|
229
|
+
endif()
|
|
230
|
+
|
|
231
|
+
if("zlib" IN_LIST features)
|
|
232
|
+
list(APPEND args --enable-zlib)
|
|
233
|
+
endif()
|
|
234
|
+
|
|
235
|
+
if("dav1d" IN_LIST features)
|
|
236
|
+
find_port(dav1d)
|
|
237
|
+
|
|
238
|
+
list(APPEND depends dav1d)
|
|
239
|
+
list(APPEND args --enable-libdav1d)
|
|
240
|
+
list(APPEND pkg_config_path "${dav1d_PREFIX}/lib/pkgconfig")
|
|
241
|
+
|
|
242
|
+
target_link_libraries(avcodec INTERFACE dav1d)
|
|
243
|
+
endif()
|
|
244
|
+
|
|
245
|
+
if("svt-av1" IN_LIST features)
|
|
246
|
+
find_port(svt-av1)
|
|
247
|
+
|
|
248
|
+
list(APPEND depends svt-av1)
|
|
249
|
+
list(APPEND args --enable-libsvtav1)
|
|
250
|
+
list(APPEND pkg_config_path "${svt-av1_PREFIX}/lib/pkgconfig")
|
|
251
|
+
|
|
252
|
+
target_link_libraries(avcodec INTERFACE svt-av1)
|
|
253
|
+
endif()
|
|
254
|
+
|
|
255
|
+
if("x264" IN_LIST features)
|
|
256
|
+
find_port(x264)
|
|
257
|
+
|
|
258
|
+
list(APPEND depends x264)
|
|
259
|
+
list(APPEND args --enable-libx264)
|
|
260
|
+
list(APPEND pkg_config_path "${x264_PREFIX}/lib/pkgconfig")
|
|
261
|
+
|
|
262
|
+
target_link_libraries(avcodec INTERFACE x264)
|
|
263
|
+
endif()
|
|
264
|
+
|
|
265
|
+
if("opus" IN_LIST features)
|
|
266
|
+
find_port(opus)
|
|
267
|
+
|
|
268
|
+
list(APPEND depends opus)
|
|
269
|
+
list(APPEND args --enable-libopus)
|
|
270
|
+
list(APPEND pkg_config_path "${opus_PREFIX}/lib/pkgconfig")
|
|
271
|
+
|
|
272
|
+
target_link_libraries(avcodec INTERFACE opus)
|
|
273
|
+
endif()
|
|
274
|
+
|
|
275
|
+
if(LINUX)
|
|
276
|
+
find_port(libva)
|
|
277
|
+
|
|
278
|
+
list(APPEND args --enable-vaapi)
|
|
279
|
+
list(APPEND pkg_config_path "${libva_PREFIX}/lib/pkgconfig")
|
|
280
|
+
list(APPEND pkg_config_path "${libdrm_PREFIX}/lib/pkgconfig")
|
|
281
|
+
endif()
|
|
282
|
+
|
|
283
|
+
if(CMAKE_HOST_WIN32)
|
|
284
|
+
find_path(
|
|
285
|
+
msys2
|
|
286
|
+
NAMES msys2.exe
|
|
287
|
+
PATHS "C:/tools/msys64"
|
|
288
|
+
REQUIRED
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
find_program(
|
|
292
|
+
pkg-config
|
|
293
|
+
NAMES pkg-config
|
|
294
|
+
PATHS "${msys2}/usr/bin"
|
|
295
|
+
REQUIRED
|
|
296
|
+
NO_DEFAULT_PATH
|
|
297
|
+
)
|
|
298
|
+
else()
|
|
299
|
+
find_program(
|
|
300
|
+
pkg-config
|
|
301
|
+
NAMES pkg-config
|
|
302
|
+
REQUIRED
|
|
303
|
+
)
|
|
304
|
+
endif()
|
|
305
|
+
|
|
306
|
+
foreach(part "$ENV{PATH}")
|
|
307
|
+
cmake_path(NORMAL_PATH part)
|
|
308
|
+
|
|
309
|
+
list(APPEND path "${part}")
|
|
310
|
+
endforeach()
|
|
311
|
+
|
|
312
|
+
list(APPEND args
|
|
313
|
+
"--pkg-config=${pkg-config}"
|
|
314
|
+
"--pkg-config-flags=--static"
|
|
315
|
+
)
|
|
316
|
+
|
|
317
|
+
list(REMOVE_DUPLICATES path)
|
|
318
|
+
list(REMOVE_DUPLICATES pkg_config_path)
|
|
319
|
+
|
|
320
|
+
if(CMAKE_HOST_WIN32)
|
|
321
|
+
list(TRANSFORM path REPLACE "([A-Z]):" "/\\1")
|
|
322
|
+
list(TRANSFORM pkg_config_path REPLACE "([A-Z]):" "/\\1")
|
|
323
|
+
endif()
|
|
324
|
+
|
|
325
|
+
list(JOIN path ":" path)
|
|
326
|
+
list(JOIN pkg_config_path ":" pkg_config_path)
|
|
327
|
+
|
|
328
|
+
list(APPEND env
|
|
329
|
+
"PATH=${path}"
|
|
330
|
+
"PKG_CONFIG_PATH=${pkg_config_path}"
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
declare_port(
|
|
334
|
+
"github:FFmpeg/FFmpeg#n8.0"
|
|
335
|
+
ffmpeg
|
|
336
|
+
AUTOTOOLS
|
|
337
|
+
DEPENDS ${depends}
|
|
338
|
+
BYPRODUCTS ${byproducts}
|
|
339
|
+
ARGS ${args}
|
|
340
|
+
ENV ${env}
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
file(MAKE_DIRECTORY "${ffmpeg_PREFIX}/include")
|
|
344
|
+
|
|
345
|
+
foreach(name IN LISTS libraries)
|
|
346
|
+
add_dependencies(${name} ${ffmpeg})
|
|
347
|
+
|
|
348
|
+
set_target_properties(
|
|
349
|
+
${name}
|
|
350
|
+
PROPERTIES
|
|
351
|
+
IMPORTED_LOCATION "${ffmpeg_PREFIX}/lib/lib${name}.a"
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
target_include_directories(
|
|
355
|
+
${name}
|
|
356
|
+
INTERFACE "${ffmpeg_PREFIX}/include"
|
|
357
|
+
)
|
|
358
|
+
|
|
359
|
+
if(LINUX OR ANDROID)
|
|
360
|
+
target_link_options(
|
|
361
|
+
${name}
|
|
362
|
+
INTERFACE
|
|
363
|
+
"-Wl,-Bsymbolic"
|
|
364
|
+
)
|
|
365
|
+
endif()
|
|
366
|
+
endforeach()
|
|
367
|
+
|
|
368
|
+
target_link_libraries(
|
|
369
|
+
avcodec
|
|
370
|
+
INTERFACE
|
|
371
|
+
avutil
|
|
372
|
+
swresample
|
|
373
|
+
)
|
|
374
|
+
|
|
375
|
+
target_link_libraries(
|
|
376
|
+
avdevice
|
|
377
|
+
INTERFACE
|
|
378
|
+
avcodec
|
|
379
|
+
avfilter
|
|
380
|
+
avformat
|
|
381
|
+
avutil
|
|
382
|
+
swresample
|
|
383
|
+
swscale
|
|
384
|
+
)
|
|
385
|
+
|
|
386
|
+
target_link_libraries(
|
|
387
|
+
avfilter
|
|
388
|
+
INTERFACE
|
|
389
|
+
avcodec
|
|
390
|
+
avformat
|
|
391
|
+
avutil
|
|
392
|
+
swresample
|
|
393
|
+
swscale
|
|
394
|
+
)
|
|
395
|
+
|
|
396
|
+
target_link_libraries(
|
|
397
|
+
avformat
|
|
398
|
+
INTERFACE
|
|
399
|
+
avcodec
|
|
400
|
+
avutil
|
|
401
|
+
swresample
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
target_link_libraries(
|
|
405
|
+
swresample
|
|
406
|
+
INTERFACE
|
|
407
|
+
avutil
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
target_link_libraries(
|
|
411
|
+
swscale
|
|
412
|
+
INTERFACE
|
|
413
|
+
avutil
|
|
414
|
+
)
|
|
415
|
+
|
|
416
|
+
if(APPLE)
|
|
417
|
+
target_link_libraries(
|
|
418
|
+
avcodec
|
|
419
|
+
INTERFACE
|
|
420
|
+
"-framework VideoToolbox"
|
|
421
|
+
"-framework CoreFoundation"
|
|
422
|
+
"-framework CoreMedia"
|
|
423
|
+
"-framework CoreVideo"
|
|
424
|
+
"-framework CoreServices"
|
|
425
|
+
)
|
|
426
|
+
|
|
427
|
+
target_link_libraries(
|
|
428
|
+
avdevice
|
|
429
|
+
INTERFACE
|
|
430
|
+
"-framework AVFoundation"
|
|
431
|
+
"-framework CoreAudio"
|
|
432
|
+
"-framework CoreGraphics"
|
|
433
|
+
"-framework CoreMedia"
|
|
434
|
+
"-framework CoreVideo"
|
|
435
|
+
"-framework Foundation"
|
|
436
|
+
)
|
|
437
|
+
|
|
438
|
+
target_link_libraries(
|
|
439
|
+
avutil
|
|
440
|
+
INTERFACE
|
|
441
|
+
"-framework VideoToolbox"
|
|
442
|
+
"-framework CoreFoundation"
|
|
443
|
+
"-framework CoreMedia"
|
|
444
|
+
"-framework CoreVideo"
|
|
445
|
+
"-framework CoreServices"
|
|
446
|
+
)
|
|
447
|
+
|
|
448
|
+
if(NOT IOS)
|
|
449
|
+
target_link_libraries(
|
|
450
|
+
avcodec
|
|
451
|
+
INTERFACE
|
|
452
|
+
"-framework AudioToolbox"
|
|
453
|
+
)
|
|
454
|
+
|
|
455
|
+
target_link_libraries(
|
|
456
|
+
avdevice
|
|
457
|
+
INTERFACE
|
|
458
|
+
"-framework AudioToolbox"
|
|
459
|
+
)
|
|
460
|
+
endif()
|
|
461
|
+
elseif(ANDROID)
|
|
462
|
+
target_link_libraries(
|
|
463
|
+
avcodec
|
|
464
|
+
INTERFACE
|
|
465
|
+
android
|
|
466
|
+
mediandk
|
|
467
|
+
)
|
|
468
|
+
|
|
469
|
+
target_link_libraries(
|
|
470
|
+
avdevice
|
|
471
|
+
INTERFACE
|
|
472
|
+
android
|
|
473
|
+
camera2ndk
|
|
474
|
+
mediandk
|
|
475
|
+
)
|
|
476
|
+
|
|
477
|
+
target_link_libraries(
|
|
478
|
+
avutil
|
|
479
|
+
INTERFACE
|
|
480
|
+
android
|
|
481
|
+
mediandk
|
|
482
|
+
)
|
|
483
|
+
elseif(WIN32)
|
|
484
|
+
target_link_libraries(
|
|
485
|
+
avcodec
|
|
486
|
+
INTERFACE
|
|
487
|
+
mfuuid
|
|
488
|
+
ole32
|
|
489
|
+
ole32
|
|
490
|
+
strmiids
|
|
491
|
+
user32
|
|
492
|
+
)
|
|
493
|
+
|
|
494
|
+
target_link_libraries(
|
|
495
|
+
avdevice
|
|
496
|
+
INTERFACE
|
|
497
|
+
gdi32
|
|
498
|
+
ole32
|
|
499
|
+
oleaut32
|
|
500
|
+
psapi
|
|
501
|
+
shlwapi
|
|
502
|
+
strmiids
|
|
503
|
+
uuid
|
|
504
|
+
vfw32
|
|
505
|
+
)
|
|
506
|
+
|
|
507
|
+
target_link_libraries(
|
|
508
|
+
avutil
|
|
509
|
+
INTERFACE
|
|
510
|
+
user32
|
|
511
|
+
bcrypt
|
|
512
|
+
)
|
|
513
|
+
endif()
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
include_guard(GLOBAL)
|
|
2
|
+
|
|
3
|
+
declare_port(
|
|
4
|
+
"git:gitlab.freedesktop.org/mesa/drm#libdrm-2.4.128"
|
|
5
|
+
libdrm
|
|
6
|
+
MESON
|
|
7
|
+
BYPRODUCTS
|
|
8
|
+
lib/libdrm.a
|
|
9
|
+
ARGS
|
|
10
|
+
-Dcairo-tests=disabled
|
|
11
|
+
-Dman-pages=disabled
|
|
12
|
+
-Dvalgrind=disabled
|
|
13
|
+
-Dinstall-test-programs=false
|
|
14
|
+
-Dudev=true
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
add_library(drm STATIC IMPORTED GLOBAL)
|
|
18
|
+
|
|
19
|
+
add_dependencies(drm ${libdrm})
|
|
20
|
+
|
|
21
|
+
set_target_properties(
|
|
22
|
+
drm
|
|
23
|
+
PROPERTIES
|
|
24
|
+
IMPORTED_LOCATION "${libdrm_PREFIX}/lib/libdrm.a"
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
file(MAKE_DIRECTORY "${libdrm_PREFIX}/include")
|
|
28
|
+
|
|
29
|
+
target_include_directories(
|
|
30
|
+
drm
|
|
31
|
+
INTERFACE "${libdrm_PREFIX}/include"
|
|
32
|
+
)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
include_guard(GLOBAL)
|
|
2
|
+
|
|
3
|
+
find_port(libdrm)
|
|
4
|
+
|
|
5
|
+
declare_port(
|
|
6
|
+
"github:intel/libva#2.22.0"
|
|
7
|
+
libva
|
|
8
|
+
MESON
|
|
9
|
+
DEPENDS drm
|
|
10
|
+
BYPRODUCTS
|
|
11
|
+
lib/libva.so.2.2200.0
|
|
12
|
+
lib/libva-drm.so.2.2200.0
|
|
13
|
+
ARGS
|
|
14
|
+
-Denable_docs=false
|
|
15
|
+
-Ddisable_drm=false
|
|
16
|
+
ENV
|
|
17
|
+
"PKG_CONFIG_PATH=${libdrm_PREFIX}/lib/pkgconfig"
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
add_library(va SHARED IMPORTED GLOBAL)
|
|
21
|
+
add_library(va-drm SHARED IMPORTED GLOBAL)
|
|
22
|
+
|
|
23
|
+
add_dependencies(va ${libva})
|
|
24
|
+
add_dependencies(va-drm ${libva})
|
|
25
|
+
|
|
26
|
+
set_target_properties(
|
|
27
|
+
va
|
|
28
|
+
PROPERTIES
|
|
29
|
+
IMPORTED_LOCATION "${libva_PREFIX}/lib/libva.so.2.2200.0"
|
|
30
|
+
IMPORTED_SONAME libva.so.2
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
set_target_properties(
|
|
34
|
+
va-drm
|
|
35
|
+
PROPERTIES
|
|
36
|
+
IMPORTED_LOCATION "${libva_PREFIX}/lib/libva-drm.so.2.2200.0"
|
|
37
|
+
IMPORTED_SONAME libva-drm.so.2
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
file(MAKE_DIRECTORY "${libva_PREFIX}/include")
|
|
41
|
+
|
|
42
|
+
target_include_directories(
|
|
43
|
+
va
|
|
44
|
+
INTERFACE "${libva_PREFIX}/include"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
target_include_directories(
|
|
48
|
+
va-drm
|
|
49
|
+
INTERFACE "${libva_PREFIX}/include"
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
target_link_libraries(va INTERFACE drm)
|
|
53
|
+
target_link_libraries(va-drm INTERFACE drm va)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
From 7dba6a92ee0eb2d114495106367ddb327eca6428 Mon Sep 17 00:00:00 2001
|
|
2
|
+
From: DoumanAsh <douman@gmx.se>
|
|
3
|
+
Date: Sat, 11 May 2024 16:54:02 +0900
|
|
4
|
+
Subject: [PATCH] Add sse4.1 flag when using clang-cl on MSVC targets
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
CMakeLists.txt | 14 +++++++++++---
|
|
8
|
+
1 file changed, 11 insertions(+), 3 deletions(-)
|
|
9
|
+
|
|
10
|
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
11
|
+
index 8535ad5f3..702a7ec82 100644
|
|
12
|
+
--- a/CMakeLists.txt
|
|
13
|
+
+++ b/CMakeLists.txt
|
|
14
|
+
@@ -14,6 +14,14 @@ include(GNUInstallDirs)
|
|
15
|
+
include(CMakeDependentOption)
|
|
16
|
+
include(FeatureSummary)
|
|
17
|
+
|
|
18
|
+
+# Detect clang-cl
|
|
19
|
+
+set(MSVC_CLANG_CL false BOOL)
|
|
20
|
+
+if (MSVC)
|
|
21
|
+
+ if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
|
|
22
|
+
+ set(MSVC_CLANG_CL true BOOL)
|
|
23
|
+
+ endif()
|
|
24
|
+
+endif()
|
|
25
|
+
+
|
|
26
|
+
set(OPUS_BUILD_SHARED_LIBRARY_HELP_STR "build shared library.")
|
|
27
|
+
option(OPUS_BUILD_SHARED_LIBRARY ${OPUS_BUILD_SHARED_LIBRARY_HELP_STR} OFF)
|
|
28
|
+
if(OPUS_BUILD_SHARED_LIBRARY OR BUILD_SHARED_LIBS OR OPUS_BUILD_FRAMEWORK)
|
|
29
|
+
@@ -484,20 +492,20 @@ if(NOT OPUS_DISABLE_INTRINSICS)
|
|
30
|
+
add_sources_group(opus lpcnet ${dnn_sources_sse4_1})
|
|
31
|
+
endif()
|
|
32
|
+
target_compile_definitions(opus PRIVATE OPUS_X86_MAY_HAVE_SSE4_1)
|
|
33
|
+
- if(NOT MSVC)
|
|
34
|
+
+ if(NOT MSVC OR MSVC_CLANG_CL)
|
|
35
|
+
set_source_files_properties(${celt_sources_sse4_1} ${silk_sources_sse4_1} ${dnn_sources_sse4_1} PROPERTIES COMPILE_FLAGS -msse4.1)
|
|
36
|
+
endif()
|
|
37
|
+
|
|
38
|
+
if(OPUS_FIXED_POINT)
|
|
39
|
+
add_sources_group(opus silk ${silk_sources_fixed_sse4_1})
|
|
40
|
+
- if(NOT MSVC)
|
|
41
|
+
+ if(NOT MSVC OR MSVC_CLANG_CL)
|
|
42
|
+
set_source_files_properties(${silk_sources_fixed_sse4_1} PROPERTIES COMPILE_FLAGS -msse4.1)
|
|
43
|
+
endif()
|
|
44
|
+
endif()
|
|
45
|
+
endif()
|
|
46
|
+
if(OPUS_X86_PRESUME_SSE4_1)
|
|
47
|
+
target_compile_definitions(opus PRIVATE OPUS_X86_PRESUME_SSE4_1)
|
|
48
|
+
- if(NOT MSVC)
|
|
49
|
+
+ if(NOT MSVC OR MSVC_CLANG_CL)
|
|
50
|
+
target_compile_options(opus PRIVATE -msse4.1)
|
|
51
|
+
endif()
|
|
52
|
+
endif()
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
include_guard(GLOBAL)
|
|
2
|
+
|
|
3
|
+
if(WIN32)
|
|
4
|
+
set(lib opus.lib)
|
|
5
|
+
else()
|
|
6
|
+
set(lib libopus.a)
|
|
7
|
+
endif()
|
|
8
|
+
|
|
9
|
+
set(args
|
|
10
|
+
-DBUILD_SHARED_LIBS=OFF
|
|
11
|
+
-DBUILD_TESTING=OFF
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
if(WIN32)
|
|
15
|
+
list(APPEND args -DOPUS_DISABLE_INTRINSICS=ON)
|
|
16
|
+
endif()
|
|
17
|
+
|
|
18
|
+
declare_port(
|
|
19
|
+
"github:xiph/opus@v1.5.2"
|
|
20
|
+
opus
|
|
21
|
+
BYPRODUCTS lib/${lib}
|
|
22
|
+
ARGS ${args}
|
|
23
|
+
PATCHES
|
|
24
|
+
patches/01-windows-clang.patch
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
add_library(opus STATIC IMPORTED GLOBAL)
|
|
28
|
+
|
|
29
|
+
add_dependencies(opus ${opus})
|
|
30
|
+
|
|
31
|
+
set_target_properties(
|
|
32
|
+
opus
|
|
33
|
+
PROPERTIES
|
|
34
|
+
IMPORTED_LOCATION "${opus_PREFIX}/lib/${lib}"
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
file(MAKE_DIRECTORY "${opus_PREFIX}/include")
|
|
38
|
+
|
|
39
|
+
target_include_directories(
|
|
40
|
+
opus
|
|
41
|
+
INTERFACE "${opus_PREFIX}/include"
|
|
42
|
+
)
|