Commit Graph

117448 Commits

Author SHA1 Message Date
James Almer 32e34692fb avcodec/hevc/ps: print the correct unsupported scalability value found
With multilayer001.heic, which signals Spatial scalability:

Before:
[hevc @ ...] Scalability type 1 not supported
[hevc @ ...] Ignoring unsupported VPS extension

After:
[hevc @ ...] Scalability type 2 not supported
[hevc @ ...] Ignoring unsupported VPS extension

Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-05 14:36:04 -03:00
Gyan Doshi 099f88b864 avcodec/libx265: unbreak build for X265_BUILD >= 213
Earlier, x265 made an API change to support alpha and
other multiple layer pictures. We added guards to accommodate
that in 1f801dfdb5

They have now reverted that API change in
https://bitbucket.org/multicoreware/x265_git/commits/78e5b703b1

Updated our wrapper guards to unbreak build again.
2024-10-05 20:18:47 +05:30
Martin Storsjö 2705c0bd81 configure: Enable -Wno-implicit-const-int-float-conversion if available
This silences a lot of compile warnings (around 160 instances at least), when
compiling with Clang.

These warnings look like this:

    libavformat/http.c:176:133: warning: implicit conversion from 'long long' to 'double' changes value from 9223372036854775807 to 9223372036854775808 [-Wimplicit-const-int-float-conversion]
      176 |     { "end_offset", "try to limit the request to bytes preceding this offset", OFFSET(end_off), AV_OPT_TYPE_INT64, { .i64 = 0 }, 0, INT64_MAX, D },
          |     ~                                                                                                                               ^~~~~~~~~

Signed-off-by: Martin Storsjö <martin@martin.st>
2024-10-04 22:57:51 +03:00
Martin Storsjö 5c4ede6b4f libavcodec: x86: Remove an explicit include of config.asm
This file is never included explicitly anywhere else, it's only
included implicitly by passing -Pconfig.asm on the command line.

Signed-off-by: Martin Storsjö <martin@martin.st>
2024-10-04 22:57:38 +03:00
Martin Storsjö a27f3c590f av1dec: Don't crash if decoding of some frames have failed
If decoding with hwaccel, but decoding fails, these pointers
are null at this point.

Signed-off-by: Martin Storsjö <martin@martin.st>
2024-10-04 22:57:03 +03:00
Nuo Mi 846fbc395b avcodec/vvc: simplify priority logical to improve performance for 4K/8K
For 4K/8K video processing, it's possible to have over 1,000 tasks pending on the executor.
In such cases, O(n) and O(log(n)) insertion times are too costly.
Reducing this to O(1) will significantly decrease the time spent in critical sections

clip                                                        | before | after  | delta
------------------------------------------------------------|--------|--------|-------
VVC_HDR_UHDTV2_OpenGOP_7680x4320_50fps_HLG10.bit            |    24  |   27   |  12.5%
VVC_HDR_UHDTV2_OpenGOP_7680x4320_50fps_HLG10_HighBitrate.bit|    12  |   17   |  41.7%
tears_of_steel_4k_8M_8bit_2000.vvc                          |    34  |  102   | 200.0%
VVC_UHDTV1_OpenGOP_3840x2160_60fps_HLG10.bit                |   126  |  128   |   1.6%
RitualDance_1920x1080_60_10_420_37_RA.266                   |   350  |  378   |   8.0%
NovosobornayaSquare_1920x1080.bin                           |   341  |  369   |   8.2%
Tango2_3840x2160_60_10_420_27_LD.266                        |    69  |   70   |   1.4%
RitualDance_1920x1080_60_10_420_32_LD.266                   |   243  |  259   |   6.6%
Chimera_8bit_1080P_1000_frames.vvc                          |   420  |  392   |  -6.7%
BQTerrace_1920x1080_60_10_420_22_RA.vvc                     |   148  |  144   |  -2.7%
2024-10-04 21:58:42 +08:00
Nuo Mi 40a14ef970 avcodec/executor: remove unused ready callback
Due to the nature of multithreading, using a "ready check" mechanism may introduce a deadlock. For example:

Suppose all tasks have been submitted to the executor, and the last thread checks the entire list and finds
no ready tasks. It then goes to sleep, waiting for a new task. However, for some multithreading-related reason,
a task becomes ready after the check. Since no other thread is aware of this and no new tasks are being added to
the executor, a deadlock occurs.

In VVC, this function is unnecessary because we use a scoreboard. All tasks submitted to the executor are ready tasks.
2024-10-04 21:58:42 +08:00
Nuo Mi 8446e27bf3 avcodec: make a local copy of executor
We still need several refactors to improve the current VVC decoder's performance,
which will frequently break the API/ABI. To mitigate this, we've copied the executor from
avutil to avcodec. Once the API/ABI is stable, we will move this class back to avutil
2024-10-04 21:58:42 +08:00
Marvin Scholz f25c9cc213 fftools: log unconnected filter output label 2024-10-04 14:27:20 +02:00
Marvin Scholz 5beeb3a1f9 fftools: do not access out of bounds filtergraph
The log message was logged for `filtergraphs[j]` which would cause a
heap buffer overflow in certain circumstances.

Correctly it should be logged for the current filtergraph, so just
use `fg` here.
2024-10-04 14:27:20 +02:00
Lynne ac092c6707
hwcontext_vulkan: guard all uses of new spec defines and fix stray bracket
This fixes compilation with less recent Vulkan headers.
2024-10-04 10:41:03 +02:00
Lynne a304cbeb8d
vulkan: add profiling debug setting
This simply keeps all shader optimizations, but allows debug
data to be generated.
2024-10-04 10:10:46 +02:00
Lynne 832947be02
vulkan: don't enable GL_EXT_buffer_reference by default
Only nlmeans_vulkan uses it.
2024-10-04 10:10:45 +02:00
Lynne 2bb0b6dd2c
vulkan_shaderc: add more stages, target Vulkan 1.3 and only output debug if needed 2024-10-04 10:10:45 +02:00
Lynne a2a983e1d0
vulkan_glslang: add more stages, target Vulkan 1.3 and output debug info 2024-10-04 10:10:45 +02:00
Lynne 0bc4e03322
lavfi/*vulkan: forward FFVulkanContext to SPIR-V compilers
We need to know what extensions are supported.
2024-10-04 10:10:44 +02:00
Lynne 356d1cc8ff
vulkan: parse instance list and add the DEBUG_UTILS extension
Required to let users know whether debugging is active.
2024-10-04 10:10:44 +02:00
Lynne e3676d96cb
hwcontext_vulkan: move device feature struct setup to a new function 2024-10-04 10:10:43 +02:00
Lynne 535e5eb7f3
hwcontext_vulkan: enable VK_KHR_shader_relaxed_extended_instruction 2024-10-04 10:10:43 +02:00
Lynne 0d5bfd0b21
vulkan_functions: change extension type to a typedef uint64_t
We were getting a bit too close for comfort to the 32-bit limit
on enums.
2024-10-04 10:10:42 +02:00
Lynne d80f9f55c8
vulkan: always enable GL_EXT_scalar_block_layout
This makes std430 (which we use everywhere already) fully match C
layout.
Extension was made mandatory in 1.2.
2024-10-04 10:10:42 +02:00
Lynne 37d5cb84e8
vulkan: check if current buffer has finished execution before picking another
This saves resources, as dependencies are freed/reclaimed with a lower latency,
and provies a speedup.
2024-10-04 10:10:42 +02:00
Lynne 877c5a9692
vulkan: use shader objects if supported
Shader objects finally allow completely independent shaders.
2024-10-04 10:10:41 +02:00
Lynne d233d9902f
vulkan: move shader data execution state to execution pools
This finally permits using fully compiled shaders across
multiple execution contexts.
2024-10-04 10:10:41 +02:00
Lynne 0a37d5a3b1
vulkan: merge FFVkSPIRVShader and FFVkPipeline into FFVkShader
Pipelines are just shaders. There's no reason to treat them
differently.
This also lets us implement shader objects and is an overall
cleanup.
2024-10-04 10:10:36 +02:00
Anton Khirnov aad4d5745d lavfi/vsrc_testsrc: switch to query_func2() 2024-10-04 10:03:34 +02:00
Anton Khirnov 28bde4a141 lavfi/vaf_spectrumsynth: switch to query_func2() 2024-10-04 10:03:34 +02:00
Anton Khirnov 3824ee2faf lavfi/vf_stack_{vaapi,qsv}: replace query_formats with a pixfmt list 2024-10-04 10:03:34 +02:00
Anton Khirnov 014a4214a9 lavfi/src_movie: switch to query_func2() 2024-10-04 10:03:34 +02:00
Anton Khirnov 55c99fb9c4 lavfi/src_avsynctest: switch to query_func2() 2024-10-04 10:03:34 +02:00
Anton Khirnov 534eef2ace lavfi/qrencode: switch to query_func2() 2024-10-04 10:03:34 +02:00
Anton Khirnov f10986a5ec lavfi/f_streamselect: drop useless query_formats() callback
It achieves the same effect as ff_default_query_formats(), which gets
called implicitly.
2024-10-04 10:03:34 +02:00
Anton Khirnov a6f579544a lavfi/f_select: switch to query_func2()
Also, drop redundant calls that also happen implicitly in generic code.
2024-10-04 10:03:34 +02:00
Anton Khirnov 9e1184b122 lavfi/f_graphmonitor: switch to query_func2() 2024-10-04 10:03:34 +02:00
Anton Khirnov 60192367a8 lavfi/f_ebur128: switch to query_func2()
Also, drop redundant calls that also happen implicitly in generic code.
2024-10-04 10:03:34 +02:00
Anton Khirnov 4e66d0c5d0 lavfi/f_drawgraph: switch to query_func2() 2024-10-04 10:03:34 +02:00
Anton Khirnov 670530a927 lavfi/buffersrc: switch to query_func2() 2024-10-04 10:03:34 +02:00
Anton Khirnov a7fe27f964 lavfi/buffersrc: validate hw context presence in video_init()
That is the more appropriate place for it than query_formats().
2024-10-04 10:03:34 +02:00
Anton Khirnov 2fa142f7c0 lavfi/buffersink: switch to query_func2() 2024-10-04 10:03:34 +02:00
Anton Khirnov b8bf2f4e17 lavfi/buffersink: move channel layout parsing to init
That is a more appropriate place for this, and will also be useful in
future commits.
2024-10-04 10:03:34 +02:00
Anton Khirnov 2aad37ffb5 lavfi/buffersink: move the option sanity check to init
Options are set before init, so that is the appropriate place to
validate them.
2024-10-04 10:03:34 +02:00
Zhao Zhili eff9ed7bff avcodec/mediacodecenc: Fix access of uninitialized value
When crop is skipped, av_strlcatf will access `str` which isn't
initialized properly.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2024-10-04 15:43:57 +08:00
Michael Niedermayer 556c767786
avcodec/ffv1enc: Correct error message about unsupported version
Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-10-03 22:05:46 +02:00
James Almer 358fdf3083 avfilter: add missing build deps to msad filter
Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-02 12:44:49 -03:00
James Almer b094c47ab2 fate/mov: add a test for heic images with cropping and rotation metadata
Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-02 12:38:24 -03:00
James Almer 650ce61745 avformat/mov: don't abort on invalid clap box data
Unless explode is requested.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-02 12:38:24 -03:00
James Almer 7573f02840 avformat/mov: get heif image mirroring from imir box
Complements 76eb3e5ff3.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-02 12:38:24 -03:00
James Almer f225e6f3c6 avformat/mov: parse clap boxes that reference heif items
Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-02 12:38:24 -03:00
James Almer ba6eeb2c65 avformat/mov: parse colr boxes that reference tile grids
Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-02 12:38:24 -03:00
James Almer 58c265d956 avformat/mov: factorize getting the current item
Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-02 12:38:24 -03:00