summaryrefslogtreecommitdiff
path: root/configure
Commit message (Collapse)AuthorAge
* libavformat/dvdvideo: add DVD-Video demuxer, powered by libdvdread and libdvdnavMarth642024-03-02
| | | | | Signed-off-by: Marth64 <marth64@proxyid.net> Signed-off-by: Anton Khirnov <anton@khirnov.net>
* configure: Add missing vvc_decoder->cbs_h266 dependencyAndreas Rheinhardt2024-03-02
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avutil/hwcontext_opencl: Add map from Videotoolbox to OpenCLZhao Zhili2024-03-01
| | | | | | | | | | | | | For example: ./ffmpeg -hwaccel videotoolbox \ -hwaccel_output_format videotoolbox_vld \ -i foo.mp4 \ -vf hwmap=derive_device=opencl,transpose_opencl=dir=clock,hwmap,format=nv12 \ -c:v hevc_videotoolbox \ -c:a copy \ -b:v 2M -tag:v hvc1 bar.mp4 Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* configure: Disable linker warnings for common symbolsAndreas Rheinhardt2024-02-26
| | | | | | | | | | | | | | | | | | | | | | | | | | Common symbols are not part of ISO-C and therefore not used by FFmpeg at all. Yet linker warnings to ensure it stays that way are nevertheless wrong, because the existence of common symbols does not imply that there is a bug in our code. More precisely, Clang's ASAN implementation uses a common symbol ___asan_globals_registered when used on Elf targets with the -fsanitize-address-globals-dead-stripping option; said option is the default since Clang 17 [1]. This leads to 1883 warnings about ___asan_globals_registered when linking here. (Even without that option there were warnings like _ZN14__interception10real_vforkE being overridden.) Said warning is also unnecessary: The proper way to ensure that our code is free of common symbols is to let the compiler enforce this. But this is already the default since GCC 10 and Clang 11, so there is no risk of introducing our own common symbols. [1]: https://reviews.llvm.org/D152604 Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* configure: select iamfenc as movenc depGyan Doshi2024-02-24
| | | | | | Unbreaks movenc compilation in minimal configuration. Signed-off-by: James Almer <jamrial@gmail.com>
* configure: Fix a typoMartin Storsjö2024-02-21
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* avformat/mov: add support for Immersive Audio Model and Formats in ISOBMFFJames Almer2024-02-20
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/iamfenc: further split into shareable modulesJames Almer2024-02-19
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/iamfdec: further split into shareable modulesJames Almer2024-02-19
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* configure, libavutil/version: Remove unused HAVE_MMX2Andreas Rheinhardt2024-02-20
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* configure: fix compilation with glslang 14Lynne2024-02-18
| | | | | | | | | | The configure check already had fallback for the previous version of glslang, which had different requirements for flags. This commit simply moves the flags needed for glslang 13 to the fallback, while first trying to use new flags for glslang 14. This drops support for ~3 year old glslang versions, which I'm not sure had the complete C API we're using anyway.
* Require compilers to support C11.Anton Khirnov2024-02-18
| | | | | | | | | It should be available in all relevant modern compilers and will allow us to use features like anonymous unions. Note that stdatomic.h is still emulated on MSVC, as current versions require the /experimental:c11atomics, and do not support ATOMIC_VAR_INIT() anyway.
* avutil/thread: add support for setting thread name on *bsd and solarisBrad Smith2024-02-04
| | | | | | | FreeBSD/DragonFly/Solaris use pthread_setname_np(). OpenBSD uses pthread_set_name_np(). Signed-off-by: Brad Smith <brad@comstyle.com> Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/mpegts: add ts stream types for H266/VVCThomas Siedel2024-01-31
| | | | | | | | | | | | | | Add transport stream stream type 0x33 for vvc. Add STREAM_TYPE_VIDEO_VVC to MPEG-1/2 and MPEG-2 transport stream. Add basic transport stream support for TS mux/demux. Tested with: ffmpeg -i NovosobornayaSquare_1920x1080.mp4 -c:v libvvenc test.ts && ffmpeg -i test.ts -f null - ffmpeg -i NovosobornayaSquare_1920x1080.mp4 -c:v copy test.ts && ffmpeg -i test.ts -f md5 - Signed-off-by: Marton Balint <cus@passwd.hu> Signed-off-by: Thomas Siedel <thomas.ff@spin-digital.com> Co-Authored-By: Nuo Mi <nuomi2021@gmail.com>
* lavc/dxvenc: add DXV encoder with support for DXT1 texture formatConnor Worley2024-01-23
| | | | Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
* configure: remove Bitrig OSBrad Smith2024-01-12
| | | | | | | Bitrig has been defunct for 7 years. Signed-off-by: Brad Smith <brad@comstyle.com> Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* configure: autodetect libdrmHaihao Xiang2024-01-09
| | | | | | | | | | | option kernel_driver for vaapi device creation can be used to choose the desired device on Linux, which is more convenient than DRM render node in a multiple-device system (e.g. Intel iGPU + AMD dGPU or inverse), but this option requires libdrm works. vaapi is autodetected at configuration time, let's make libdrm autodetected too. Reviewed-by: Zhao Zhili <quinkblack@foxmail.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* configure: Don't pass -mfp16-format to MSVC on ARMMartin Storsjö2024-01-05
| | | | | | | | | | | | | | | | | | | The check for this option does succeed - MSVC accepts the option, but prints a warning about it being unknown and ignored, for each compiled object file: cl : Command line warning D9002 : ignoring unknown option '-mfp16-format=ieee' The configure script only attempts to add this option on ARM, therefore this warning isn't seen by the majority of people building with MSVC. Making this option into a no-op probably isn't entirely right, but on the other hand, we don't want to litter the code that checks for support for the option with compiler specific conditions either. Signed-off-by: Martin Storsjö <martin@martin.st>
* configure: Disable inline assembly with nonlocal labels with LTO on Clang on ↵Martin Storsjö2024-01-05
| | | | | | | | | | | | | | | Windows The file libavcodec/x86/mlpdsp_init.c uses inline assembly with nonlocal labels that are referenced outside of the assembly in C. This fails to link with LTO when built with Clang when targeting Windows. The root cause has been reported upstream at https://github.com/llvm/llvm-project/issues/76046. Fixes: https://trac.ffmpeg.org/ticket/10548 Signed-off-by: Martin Storsjö <martin@martin.st>
* avfilter: Add fsync filterThilo Borgmann2024-01-05
|
* vvcdec: add vvc decoderNuo Mi2024-01-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | vvc decoder plug-in to avcodec. split frames into slices/tiles and send them to vvc_thread for further decoding reorder and wait for the frame decoding to be done and output the frame Features: + Support I, P, B frames + Support 8/10/12 bits, chroma 400, 420, 422, and 444 and range extension + Support VVC new tools like MIP, CCLM, AFFINE, GPM, DMVR, PROF, BDOF, LMCS, ALF + 295 conformace clips passed - Not support RPR, IBC, PALETTE, and other minor features yet Performance: C code FPS on an i7-12700K (x86): BQTerrace_1920x1080_60_10_420_22_RA.vvc 93.0 Chimera_8bit_1080P_1000_frames.vvc 184.3 NovosobornayaSquare_1920x1080.bin 191.3 RitualDance_1920x1080_60_10_420_32_LD.266 150.7 RitualDance_1920x1080_60_10_420_37_RA.266 170.0 Tango2_3840x2160_60_10_420_27_LD.266 33.7 C code FPS on a M1 Mac Pro (ARM): BQTerrace_1920x1080_60_10_420_22_RA.vvc 58.7 Chimera_8bit_1080P_1000_frames.vvc 153.3 NovosobornayaSquare_1920x1080.bin 150.3 RitualDance_1920x1080_60_10_420_32_LD.266 105.0 RitualDance_1920x1080_60_10_420_37_RA.266 133.0 Tango2_3840x2160_60_10_420_27_LD.266 21.7 Asm optimizations still working in progress. please check https://github.com/ffvvc/FFmpeg/wiki#performance-data for the latest Contributors (based on code merge order): Nuo Mi <nuomi2021@gmail.com> Xu Mu <toxumu@outlook.com> Frank Plowman <post@frankplowman.com> Shaun Loo <shaunloo10@gmail.com> Wu Jianhua <toqsxw@outlook.com> Thank you for reporting issues and providing performance reports: Łukasz Czech <lukaszcz18@wp.pl> Xu Fulong <839789740@qq.com> Thank you for providing review comments: Ronald S. Bultje <rsbultje@gmail.com> James Almer <jamrial@gmail.com> Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Co-authored-by: Xu Mu <toxumu@outlook.com> Co-authored-by: Frank Plowman <post@frankplowman.com> Co-authored-by: Shaun Loo <shaunloo10@gmail.com> Co-authored-by: Wu Jianhua <toqsxw@outlook.com>
* lavfi: add quirc filterStefano Sabatini2024-01-01
|
* lavfi: add qrencode source and filterStefano Sabatini2024-01-01
|
* configure: correct lensfun header function checkGyan Doshi2024-01-01
| | | | | | | | | The function lf_db_new was deprecated in lensfun 09dcd3e7ad in 2017 in favour of lf_db_create. The AVfilter was adjusted in 8b78eb312d but the configure check wasn't changed. lensfun removed lf_db_new declaration in lf 35c0017593 so configure fails to find lensfun.
* configure: update copyright yearLynne2024-01-01
|
* configure: Enable section_data_rel_ro for FreeBSD and NetBSD aarch64 / armBrad Smith2023-12-25
| | | | | | | Fixes the build. It's a requirement when utilizing PIE. Signed-off-by: Brad Smith <brad@comstyle.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* configure: Fix linking d3d12va in UWP modeMartin Storsjö2023-12-22
| | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* configure: Remove/factorize a redundant check for UWP modeMartin Storsjö2023-12-22
| | | | | | | | | | The check for UWP mode was duplicated from right above, in d54127c41a81cf2078a3504f78e0e4232cfe11b7. Also, instead of several lines with "enabled uwp && ...", make one "if enabled uwp; then" block. Signed-off-by: Martin Storsjö <martin@martin.st>
* configure: Add a --disable-version-tracking optionMartin Storsjö2023-12-21
| | | | | | | | | | This disables regenerating ffversion.h whenever the checked out git commit changes, speeding up development rebuilds. Whenever this option is set, force the version to be printed as "unknown" rather than showing potentially stale information. Signed-off-by: Martin Storsjö <martin@martin.st>
* avcodec: add D3D12VA hardware accelerated VC1 decodingWu Jianhua2023-12-21
| | | | | | | | The command below is how to enable d3d12va: ffmpeg -hwaccel d3d12va -i input.mp4 output.mp4 Signed-off-by: Wu Jianhua <toqsxw@outlook.com> Signed-off-by: Tong Wu <tong1.wu@intel.com>
* avcodec: add D3D12VA hardware accelerated MPEG-2 decodingWu Jianhua2023-12-21
| | | | | | | | The command below is how to enable d3d12va: ffmpeg -hwaccel d3d12va -i input.mp4 output.mp4 Signed-off-by: Wu Jianhua <toqsxw@outlook.com> Signed-off-by: Tong Wu <tong1.wu@intel.com>
* avcodec: add D3D12VA hardware accelerated AV1 decodingWu Jianhua2023-12-21
| | | | | | | | The command below is how to enable d3d12va: ffmpeg -hwaccel d3d12va -i input.mp4 output.mp4 Signed-off-by: Wu Jianhua <toqsxw@outlook.com> Signed-off-by: Tong Wu <tong1.wu@intel.com>
* avcodec: add D3D12VA hardware accelerated VP9 decodingWu Jianhua2023-12-21
| | | | | | | | The command below is how to enable d3d12va: ffmpeg -hwaccel d3d12va -i input.mp4 output.mp4 Signed-off-by: Wu Jianhua <toqsxw@outlook.com> Signed-off-by: Tong Wu <tong1.wu@intel.com>
* avcodec: add D3D12VA hardware accelerated HEVC decodingWu Jianhua2023-12-21
| | | | | | | | The command below is how to enable d3d12va: ffmpeg -hwaccel d3d12va -i input.mp4 output.mp4 Signed-off-by: Wu Jianhua <toqsxw@outlook.com> Signed-off-by: Tong Wu <tong1.wu@intel.com>
* avcodec: add D3D12VA hardware accelerated H264 decodingWu Jianhua2023-12-21
| | | | | | | | | | | | | | | | The implementation is based on: https://learn.microsoft.com/en-us/windows/win32/medfound/direct3d-12-video-overview With the Direct3D 12 video decoding support, we can render or process the decoded images by the pixel shaders or compute shaders directly without the extra copy overhead, which is beneficial especially if you are trying to render or post-process a 4K or 8K video. The command below is how to enable d3d12va: ffmpeg -hwaccel d3d12va -i input.mp4 output.mp4 Signed-off-by: Wu Jianhua <toqsxw@outlook.com> Signed-off-by: Tong Wu <tong1.wu@intel.com>
* libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12Wu Jianhua2023-12-21
| | | | | Signed-off-by: Wu Jianhua <toqsxw@outlook.com> Signed-off-by: Tong Wu <tong1.wu@intel.com>
* lavc/libopenh264: Drop openh264 runtime version checksKalev Lember2023-12-18
| | | | | | | | | | | | | | | | | | | | | With the way the runtime checks are currently set up, every single openh264 release, no matter how minor, is considered an ABI break and requires ffmpeg recompilation. This is unnecessarily strict because it doesn't allow downstream distributions to ship any openh264 bug fix version updates without breaking ffmpeg's openh264 support. Years ago, at the time when ffmpeg's openh264 support was merged, openh264 releases were done without a versioned soname (the library was just libopenh264.so, unversioned). Since then, starting with version 1.3.0, openh264 has started using versioned sonames and the intent has been to bump the soname every time there's a new release with an ABI change. This patch drops the exact version check and instead adds a minimum requirement on 1.3.0 to the configure script. Signed-off-by: Kalev Lember <klember@redhat.com> Signed-off-by: Martin Storsjö <martin@martin.st>
* configure: check VTPixelTransferSessionCreate for scale_vtZhao Zhili2023-12-17
| | | | | | | | | It's available on macOS since 10.8, but not available on iOS until 16.0. Reported and tested by xufuji456. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* riscv: test for assembler supportRémi Denis-Courmont2023-12-08
| | | | | This should fix the build on LLVM 16 and earlier, at the cost of turning all non-RVV optimisations off.
* configure: don't warn deprecated symbols from libvplHaihao Xiang2023-12-05
| | | | | | | | | | | libvpl deprecated some symbols (e.g. MFX_EXTBUFF_VPP_DENOISE2 is used to replace MFX_EXTBUFF_VPP_DENOISE), however the new symbols aren't support by MediaSDK runtime. In order to support the combination of libvpl and MediaSDK runtime on legacy devices, we continue to use the deprecated symbols in FFmpeg. This patch added -DMFX_DEPRECATED_OFF to CFLAGS to silence the corresponding compilation warnings. Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* avcodec/evc_decoder: Provided support for EVC decoderDawid Kozinski2023-11-20
| | | | | | | | | - Added EVC decoder wrapper - Changes in project configuration file and libavcodec Makefile - Added documentation for xevd wrapper Signed-off-by: Dawid Kozinski <d.kozinski@samsung.com> Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/evc_encoder: Provided support for EVC encoderDawid Kozinski2023-11-20
| | | | | | | | | - Added EVC encoder wrapper - Changes in project configuration file and libavcodec Makefile - Added documentation for xeve wrapper Signed-off-by: Dawid Kozinski <d.kozinski@samsung.com> Signed-off-by: James Almer <jamrial@gmail.com>
* riscv: set fast half-precision conversionRémi Denis-Courmont2023-11-19
| | | | | | | | This is only supported at compilation time. If Zfhmin is supported, then conversions are fast, which is what the flag is used for. At this time, run-tiem detection is not possible, as in not supported by Linux. But even if it were, the current FFmpeg approach seems unable to deal with it (same problem as on x86, really).
* avcodec/cbs_vp8: Add support for VP8 codec bitstreamDai, Jianhui J2023-11-15
| | | | | | | | | | | | | | | | | | | | | | This commit adds support for VP8 bitstream read methods to the cbs codec. This enables the trace_headers bitstream filter to support VP8, in addition to AV1, H.264, H.265, and VP9. This can be useful for debugging VP8 stream issues. The CBS VP8 implements a simple VP8 boolean decoder using GetBitContext to read the bitstream. Only the read methods `read_unit` and `split_fragment` are implemented. The write methods `write_unit` and `assemble_fragment` return the error code AVERROR_PATCHWELCOME. This is because CBS VP8 write is unlikely to be used by any applications at the moment. The write methods can be added later if there is a real need for them. TESTS: ffmpeg -i fate-suite/vp8/frame_size_change.webm -vcodec copy -bsf:v trace_headers -f null - Signed-off-by: Jianhui Dai <jianhui.j.dai@intel.com> Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
* fftools/ffplay: add hwaccel decoding supportZhao Zhili2023-11-15
| | | | | | | | | | | | | | | | Add vulkan renderer via libplacebo. Simple usage: $ ffplay -hwaccel vulkan foo.mp4 Use cuda to vulkan map: $ ffplay -hwaccel cuda foo.mp4 Create vulkan instance by libplacebo, and enable debug: $ ffplay -hwaccel vulkan \ -vulkan_params create_by_placebo=1:debug=1 foo.mp4 Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* avcodec: LEAD MCMP decoderPeter Ross2023-11-08
| | | | | | | | | Partially fixes ticket #798 Reviewed-by: James Almer <jamrial@gmail.com> Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Peter Ross <pross@xvid.org>
* configure: warn when threading is disabledAnton Khirnov2023-11-05
| | | | Explicitly state what the implications of this are.
* configure: fix _Pragma check.Reimar Döffinger2023-11-02
| | | | | | | | The test can currently pass when _Pragma is not supported, since _Pragma might be treated as a implicitly declared function. This happens e.g. with tinycc. Extending the check to 2 pragmas both matches the actual use better and avoids this misdetection.
* configure: Improve aarch64 feature detection on older, broken Clang versionsMartin Storsjö2023-10-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clang versions before 17 (Xcode versions up to and including 15.0) had a very annoying bug in its behaviour of the ".arch" directive in assembly. If the directive only contained a level, such as ".arch armv8.2-a", it did validate the name of the level, but it didn't apply the level to what instructions are allowed. The level was applied if the directive contained an extra feature enabled, such as ".arch armv8.2-a+crc" though. It was also applied on the next ".arch_extension" directive. This bug, combined with the fact that the same versions of Clang didn't support the dotprod/i8mm extension names in either ".arch <level>+<feature>" or in ".arch_extension", could lead to unexepcted build failures. As the dotprod/i8mm extensions couldn't be enabled dynamically via the ".arch_extension" directive, someone building ffmpeg could try to enable them by configuring their build with --extra-cflags="-march=armv8.6-a". During configure, we test for support for the i8mm instructions like this: # Built with -march=armv8.6-a .arch armv8.2-a # Has no visible effect here #.arch_extension i8mm # Omitted as the extension name isn't known usdot v0.4s, v0.16b, v0.16b # Successfully assembled as armv8.6-a is the effective level, # and i8mm is enabled implicitly in armv8.6-a. Thus, we would enable assembling those instructions. However if we later check for another extension, such as sve (which those versions of Clang actually do support), we can later run into the following situation when building actual code: # Built with -march=armv8.6-a .arch armv8.2-a # Has no visible effect here #.arch_extension i8mm # Omitted as the extension name isn't known .arch_extension sve # Included as "sve" is as supported extension name # .arch_extension effectively activates the previous .arch directive, # so the effective level is armv8.2-a+sve now. usdot v0.4s, v0.16b, v0.16b # Fails to build the instructions that require i8mm. Despite the # configure check, the unrelated ".arch_extension sve" directive # breaks the functionality of the i8mm feature. This patch avoids this situation: - By adding a dummy feature such as "+crc" on the .arch directive (if supported), we make sure that it does get applied immediately, avoiding it taking effect spuriously at a later unrelated ".arch_extension" directive. - By checking for higher arch levels such as armv8.4-a and armv8.6-a, we can assemble the dotprod and i8mm extensions without the user needing to pass -march=armv8.6-a. This allows using the dotprod/i8mm codepaths via runtime detection while keeping the binary runnable on older versions. I.e. this enables the i8mm codepaths on Apple M2 machines while built with Xcode's Clang. TL;DR: Enable the I8MM extensions for Apple M2 without the user needing to do a custom configuration; avoid potential build breakage if a user does such a custom configuration. Once Xcode versions that have these issues fixed are prevalent, we can consider reverting this change. Signed-off-by: Martin Storsjö <martin@martin.st>
* lavc/libaribcaption: add MSZ character related optionsTADANO Tokumei2023-10-29
| | | | | | | | | | | | | | | | | | | | | This patch adds two MSZ (Middle Size; half width) character related options, mapping against newly added upstream functionality: * `replace_msz_japanese`, which was introduced in version 1.0.1 of libaribcaption. * `replace_msz_glyph`, which was introduced in version 1.1.0 of libaribcaption. The latter option improves bitmap type rendering if specified fonts contain half-width glyphs (e.g., BIZ UDGothic), even if both ASCII and Japanese MSZ replacement options are set to false. As these options require newer versions of libaribcaption, the configure requirement has been bumped accordingly. Signed-off-by: TADANO Tokumei <aimingoff@pc.nifty.jp>