aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* vulkan_decode: port to the new queue family APILynne2024-08-113-9/+28
|
* vulkan: load queue families upon loading propertiesLynne2024-08-111-18/+23
| | | | | Avoids the need to call ff_vk_qf_init if manually filling in a queue family structure.
* hwcontext_vulkan: correct comment in headerLynne2024-08-111-3/+2
|
* vulkan_decode: add \n to error messageLynne2024-08-111-1/+1
|
* libavutil: deprecate the old Vulkan queue API, add doc/APIchanges entriesLynne2024-08-114-0/+30
|
* vulkan: add support for encode feedback queriesLynne2024-08-111-10/+16
|
* hwcontext_vulkan: add support for Vulkan encodingLynne2024-08-113-0/+22
|
* vulkan_decode: force layered_dpb to 0 when dedicated_dpb is 0Lynne2024-08-111-2/+2
| | | | | | | layered_dpb only makes sense when dedicated_dpb is set to 1. For some mysterious reason, some Nvidia drivers stopped indicating SEPARATE_REFRENCES, but kept the COINCIDE flag, which broke the code.
* vulkan: use allocator callback for buffer creationLynne2024-08-111-1/+1
| | | | This would've let to a segfault if custom allocators were used.
* hwcontext_vulkan: add support for VK_EXT_shader_objectLynne2024-08-113-3/+19
| | | | | We'd like to use it eventually, and its already covered by the minimum version of the headers we require.
* vulkan_shaderc: add debug information to shadersLynne2024-08-111-0/+1
|
* hwcontext_vulkan: enable storageBuffer16BitAccess if availableLynne2024-08-111-0/+2
|
* vulkan_shaderc: fix error reporting for certain errorsLynne2024-08-111-0/+3
| | | | | | | | The issue is that shaderc_result_get_num_errors may sometime return 0 even when shaderc_result_get_compilation_status returns a non-zero error code. Since we use the result from the former, override the status if it returned 0.
* hwcontext_vulkan: constify validation layer features tableLynne2024-08-111-1/+1
| | | | | The struct data seem to get corrupted otherwise. Possibly a validation layer or libvulkan issue.
* hwcontext_vulkan: add HOST_CACHED flag to transfer bufferLynne2024-08-111-1/+2
| | | | Significantly speeds up downloads on devices without host mapping.
* hwcontext_vulkan: rewrite upload/downloadLynne2024-08-112-182/+326
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit was long overdue. The old transfer dubiously tried to merge as much code as possible, and had very little in the way of optimizations, apart from basic host-mapping. The new code uses buffer pools for any temporary bufflers, and handles falling back to buffer-based uploads if host-mapping fails. Roundtrip performance difference: ffmpeg -init_hw_device "vulkan=vk:0,debug=0,disable_multiplane=1" -f lavfi \ -i color=red:s=3840x2160 -vf hwupload,hwdownload,format=yuv420p -f null - 7900XTX: Before: 224fps After: 502fps Ada, with proprietary drivers: Before: 29fps After: 54fps Alder Lake: Before: 85fps After: 108fps With the host-mapping codepath disabled: Before: 32fps After: 51fps
* hwcontext_vulkan: remove unused structLynne2024-08-111-13/+0
|
* vulkan_video: remove NIH pooled buffer implementationLynne2024-08-114-112/+28
| | | | The code predates ff_vk_get_pooled_buffer().
* hwcontext_vulkan: initialize optical flow queues if availableLynne2024-08-115-4/+30
| | | | Lets us implement FPS conversion.
* hwcontext_vulkan: rewrite queue picking system for the new APILynne2024-08-111-95/+167
| | | | | This allows us to support different video ops on different queues, as well as any other arbitrary queues we need.
* vulkan: use the new queue family mechanismLynne2024-08-112-49/+21
|
* hwcontext_vulkan: add a new mechanism to expose used queue familiesLynne2024-08-113-18/+94
| | | | | | | | | | | The issue with the old mechanism is that we had to introduce new API each time we needed a new queue family, and all the queue families were functionally fixed to a given purpose. Nvidia's GPUs are able to handle video encoding and compute on the same queue, which results in a speedup when pre-processing is required. Also, this enables us to expose optical flow queues for frame interpolation.
* avcodec/jpeg2000dec: Fix HT decodingOsamu Watanabe2024-08-103-60/+89
| | | | | | | Fixes incorrect handling of MAGB_P value in Ccap15. Fixes bugs in HT block decoding. Signed-off-by: Pierre-Anthony Lemieux <pal@palemieux.com>
* avcodec/jpeg2000dec: Add support for placeholder passesOsamu Watanabe2024-08-104-118/+326
| | | | | | See Rec. ITU-T T.814 | ISO/IEC 15444-15, Annex B. Signed-off-by: Pierre-Anthony Lemieux <pal@palemieux.com>
* avcodec/jpeg2000dec: Add support for CAP and CPF markersOsamu Watanabe2024-08-103-1/+148
| | | | Signed-off-by: Pierre-Anthony Lemieux <pal@palemieux.com>
* tools/target_dec_fuzzer: Use av_buffer_allocz() to avoid missing slices to ↵Michael Niedermayer2024-08-101-1/+1
| | | | | | | | | | | | have unpredictable content This matches production code which also zeros these buffers Fixes: use of uninitialized values Fixes: 70885/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_VP6F_fuzzer-4610946029387776 (and likely others) Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavc/qsv: Use vendor id to create deviceFei Wang2024-08-091-2/+2
| | | | | | | | | | New kernel driver "xe" will be supported from Lunar Lake instead of "i915". "xe" kernel driver: https://github.com/torvalds/linux/tree/master/drivers/gpu/drm/xe Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* lavu/hwcontext_qsv: Use vendor id to create deviceFei Wang2024-08-091-2/+2
| | | | | | | | | | New kernel driver "xe" will be supported from Lunar Lake instead of "i915". "xe" kernel driver: https://github.com/torvalds/linux/tree/master/drivers/gpu/drm/xe Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* lavu/hwcontext_vaapi: Add option to allow to specify vendor id when init hw ↵Fei Wang2024-08-093-1/+38
| | | | | | | | | | device Vendor id will help to select desired device in case of kernel driver is unknow or unsupported, for vendor may support different kernel driver on different platforms. Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* avformat/wtvdec: Check length of read mpeg2_descriptorMichael Niedermayer2024-08-081-1/+2
| | | | | | | | | Fixes: Use of uninitialized value Fixes: 70900/clusterfuzz-testcase-minimized-ffmpeg_dem_WTV_fuzzer-6286909377150976 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Reviewed-by: Peter Ross <pross@xvid.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/wtvdec: clear sectorsMichael Niedermayer2024-08-081-1/+1
| | | | | | | | | | The code can leave uninitialized holes in the array. Fixes: use of uninitialized values Fixes: 70883/clusterfuzz-testcase-minimized-ffmpeg_dem_WTV_fuzzer-6698694567591936 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Reviewed-by: Peter Ross <pross@xvid.org> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/mov: ensure required number of bytes is readKacper Michajłow2024-08-081-1/+1
| | | | | | | | Fixes: use-of-uninitialized-value Found by OSS-Fuzz. Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* add tools/target_swr_fuzzerMichael Niedermayer2024-08-083-0/+151
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/iamf: use aligned intreadwrite macros where possibleJames Almer2024-08-073-14/+14
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/movenc: use stream indexes when generating track idsJames Almer2024-08-071-1/+5
| | | | | | | | | | | In some scenarios nb_tracks isn't the same as nb_streams, so a given id may end up being used for two separate streams. e.g. when muxing an IAMF track followed by a video track, if the IAMF track consists of several streams, the video track would end up having an id of 2, which may also be used by one of the IAMF streams. Signed-off-by: James Almer <jamrial@gmail.com>
* avutil/frame: use the maximum compile time supported alignment for stridesJames Almer2024-08-071-1/+3
| | | | | | | | | | | | This puts lavu frame buffer allocator helpers in sync with lavc's decoder frame buffer allocator's STRIDE_ALIGN define. Remove the comment about av_cpu_max_align() while at it as using it is not ideal when CPU flags can be changed mid process. Should fix ticket #11116. Signed-off-by: James Almer <jamrial@gmail.com>
* avformat/rtpproto: free ip filters on open errorKacper Michajłow2024-08-071-0/+1
| | | | | | | Found by OSS-Fuzz. Signed-off-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/srtpproto: pass options to nested protocolKacper Michajłow2024-08-071-3/+3
| | | | | | | | | This fixes passing options dict. Fixes some timeouts found by OSS-Fuzz. Signed-off-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/wmavoice: use av_clipd for double valuesKacper Michajłow2024-08-071-1/+1
| | | | | | | Fixes Clang warning. Signed-off-by: Kacper Michajłow <kasper93@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/vp9mvs: fix misaligned access when clearing VP9mvKacper Michajłow2024-08-071-1/+2
| | | | | | | | | | | | Fixes runtime error: member access within misaligned address <addr> for type 'av_alias64', which requires 8 byte alignment. VP9mv is aligned to 4 bytes, so instead doing 8 bytes clear, let's do 2 times 4 bytes. Signed-off-by: Kacper Michajłow <kasper93@gmail.com> Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/cbs_sei: Always zero-initialize SEI payloadAndreas Rheinhardt2024-08-061-3/+1
| | | | | | | | Fixes: Use-of-uninitialized value Fixes: clusterfuzz-testcase-minimized-ffmpeg_BSF_H264_METADATA_fuzzer-5458626041413632 Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/parser: ensure input padding is zeroedKacper Michajłow2024-08-051-0/+1
| | | | | | | | | | | Fixes use of uninitialized value, reported by MSAN. Found by OSS-Fuzz. Signed-off-by: Kacper Michajłow <kasper93@gmail.com> Fixes: 70852/clusterfuzz-testcase-minimized-ffmpeg_IO_DEMUXER_fuzzer-5179190066872320 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/jpegxl_anim_dec: ensure input padding is zeroedKacper Michajłow2024-08-051-0/+2
| | | | | | | | | | | Fixes use of uninitialized value, reported by MSAN. Found by OSS-Fuzz. Signed-off-by: Kacper Michajłow <kasper93@gmail.com> Fixes: 70837/clusterfuzz-testcase-minimized-ffmpeg_dem_JPEGXL_ANIM_fuzzer-5089407768526848 Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/img2dec: Clear padding data after EOFMichael Niedermayer2024-08-051-0/+1
| | | | | | | | | Fixes: use-of-uninitialized-value Fixes: 70852/clusterfuzz-testcase-minimized-ffmpeg_IO_DEMUXER_fuzzer-5179190066872320 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Reviewed-by: Kacper Michajlow <kasper93@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avformat/wavdec: Check if there are 16 bytes before testing themMichael Niedermayer2024-08-051-2/+1
| | | | | | | | Fixes: use-of-uninitialized-value Fixes: 70839/clusterfuzz-testcase-minimized-ffmpeg_dem_W64_fuzzer-5212907590189056 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* lavu/cpu: deprecate RISC-V F, D and zba CPU flagsRémi Denis-Courmont2024-08-053-1/+11
|
* lavu/riscv: drop probing for zba CPU capabilityRémi Denis-Courmont2024-08-054-12/+1
|
* sws/riscv: depend on RVB and simplify accordinglyRémi Denis-Courmont2024-08-052-7/+5
|
* lavfi/riscv: depend on RVB and simplify accordinglyRémi Denis-Courmont2024-08-051-1/+1
|
* lavc/riscv: depend on RVB and simplify accordinglyRémi Denis-Courmont2024-08-0522-47/+45
| | | | | | | | | | There is no known (real) hardware with V and without the complete B extension. B was indeed required in the RISC-V application profile from 2022, earlier than V. There should not be any relevant hardware in the future either. In practice, different R-V Vector optimisations in FFmpeg already depend on every constituent of the B extension anyhow, so it would not work well.