aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* lavc/hevcdec: move calling hwaccel decode_slice to decode_slice_data()Anton Khirnov2024-06-111-21/+17
| | | | From decode_nal_unit(), as that is a more appropriate place for it.
* lavc/hevcdec: move calling hwaccel start_frame to hevc_frame_start()Anton Khirnov2024-06-111-7/+5
| | | | From decode_nal_unit(), as that is a more appropriate place for it.
* lavc/hevcdec: move per-slice local_ctx setup out of hls_slice_header()Anton Khirnov2024-06-111-7/+8
| | | | | Into decode_slice_data(). This is a step towards constifying HEVCContext in hls_slice_header().
* lavc/hevcdec: move slice decoding dispatch to its own functionAnton Khirnov2024-06-111-14/+22
| | | | | | | Also move there a sanity check from hls_decode_entry() that should also be performed when WPP is active (note that the check is not moved to hls_slice_header() because it requires the HEVCContext.tab_slice_address to be set up).
* lavc/hevcdec: move a slice segment sanity check to hls_slice_header()Anton Khirnov2024-06-111-6/+2
| | | | Combine it with an existing similar check.
* lavc/hevcdec: store slice header POC in SliceHeaderAnton Khirnov2024-06-112-6/+8
| | | | | | Rather than decoding directly into HEVCContext.poc. This is a step towards constifying HEVCContext in hls_slice_header().
* lavc/hevcdec: drop redundant HEVCContext.threads_{type,number}Anton Khirnov2024-06-115-32/+19
| | | | They are useless duplicates of corresponding AVCodecContext fields.
* lavc/hevc/cabac: do not infer WPP use based on HEVCContext.threads_numberAnton Khirnov2024-06-113-6/+8
| | | | Pass this information explicitly instead.
* lavc/hevcdec: output RASL frames based on the value of no_rasl_output_flagAnton Khirnov2024-06-113-30/+40
| | | | | | | | | | Instead of an ad-hoc scheme. Also, combine skipping RASL frames with skip_frame handling - current code seems flawed as it only executes for the first slice of a RASL frame and unnecessarily unsets is_decoded, which should not be set at this point anyway.. Some RASL frames in fate-hevc-afd-tc-sei that were previously discarded are now output.
* lavc/hevcdec: only set no_rasl_output_flag for IRAP framesAnton Khirnov2024-06-112-1/+4
| | | | | | | Its meaning is only specified for IRAP frames. As it's currently never used otherwise, this should not change decoder behaviour, but will be useful in future commits.
* lavc/hevcdec: do not pass HEVCContext to ff_hevc_frame_nb_refs()Anton Khirnov2024-06-115-8/+8
| | | | | | | | Pass the only things required from it - slice header and PPS - explicitly. Will be useful in the following commits to avoid mofiying HEVCContext in hls_slice_header().
* lavc/hevcdec: only call export_stream_params_from_sei() once per frameAnton Khirnov2024-06-111-4/+4
| | | | | Not once per each slice header, as it makes no sense and may cause races with frame threading.
* lavc/hevcdec: move pocTid0 computation to hevc_frame_start()Anton Khirnov2024-06-112-14/+14
| | | | | It is only done once per frame. Also, rename the variable to poc_tid0 to be consistent with our naming conventions.
* lavc/hevcdec: do not pass HEVCContext to decode_lt_rps()Anton Khirnov2024-06-111-4/+4
| | | | | | Pass the two numbers needed from it explicitly. Makes it clear that HEVCContext is not modified by this function.
* lavc/hevcdec: pass SliceHeader explicitly to pred_weight_table()Anton Khirnov2024-06-111-37/+38
| | | | | | And replace the HEVCContext* parameter by void *logctx. Makes it clear that only SliceHeader is modified by this function.
* lavc/hevcdec: only ignore INVALIDDATA in decode_nal_unit()Anton Khirnov2024-06-111-3/+7
| | | | | | All other errors should cause a failure, regardless of the value of err_recognition. Also, print a warning message when skipping invalid NAL units.
* lavc/hevcdec: drop an always-zero variableAnton Khirnov2024-06-112-8/+2
|
* lavc/hevcdec: move active PPS from HEVCParamSets to HEVCContextAnton Khirnov2024-06-1111-48/+45
| | | | | "Currently active PPS" is a property of the decoding process, not of the list of available parameter sets.
* lavc/hevcdec: stop accessing parameter sets through HEVCParamSetsAnton Khirnov2024-06-111-408/+470
| | | | | | Instead, accept PPS/SPS as function arguments. Makes the code shorter and significantly reduces diff in future commits.
* lavc/hevc/pred: stop accessing parameter sets through HEVCParamSetsAnton Khirnov2024-06-115-197/+202
| | | | | | Instead, accept PPS/SPS as function arguments. Makes the code shorter and significantly reduces diff in future commits.
* lavc/hevc/cabac: stop accessing parameter sets through HEVCParamSetsAnton Khirnov2024-06-113-96/+102
| | | | | | Instead, accept PPS/SPS as function arguments. Makes the code shorter and significantly reduces diff in future commits.
* lavc/hevc/filter: stop accessing parameter sets through HEVCParamSetsAnton Khirnov2024-06-113-161/+188
| | | | | | Instead, accept PPS as a function argument and retrieve SPS through it. Makes the code shorter and significantly reduces diff in future commits.
* lavc/hevc/mvs: stop accessing parameter sets through HEVCParamSetsAnton Khirnov2024-06-113-75/+87
| | | | | | Instead, accept PPS as a function argument and retrieve SPS through it. Makes the code shorter and significantly reduces diff in future commits.
* lavc/hevc/parser: stop using HEVCParamSets.[psv]psAnton Khirnov2024-06-111-31/+30
| | | | The parser does not need to preserve these between frames.
* lavc/hevc_ps: make SPS hold a reference to its VPSAnton Khirnov2024-06-114-8/+14
| | | | | | SPS and its dependent PPSes depend on, and are parsed for, specific VPS data. This will be useful in following commits.
* lavc/hevc_ps: make PPS hold a reference to its SPSAnton Khirnov2024-06-114-8/+10
| | | | | | PPS depends on, and is parsed for, specific SPS data. This will be useful in following commits.
* lavc/hevcdec: drop a redundant assignment in hevc_decode_frame()Anton Khirnov2024-06-111-1/+0
| | | | The exact same code is executed at the beginning of decode_nal_units()
* lavc/hevcdec: simplify conditionAnton Khirnov2024-06-111-1/+1
|
* lavc/hevcdec: do not free SliceHeader arrays in pic_arrays_free()Anton Khirnov2024-06-111-4/+0
| | | | | SliceHeader.{entry_point_offset,size,offset} are not derived from frame size and do not need to be freed here.
* lavf/tls_mbedtls: handle session ticket error code as no-opsfan52024-06-111-0/+3
| | | | | | | | | | When TLSv1.3 and session tickets are enabled mbedtls_ssl_read() will return an error code to inform about a received session ticket. This can simply be handled like EAGAIN instead of errornously aborting the connection. ref: https://github.com/Mbed-TLS/mbedtls/issues/8749 Signed-off-by: Anton Khirnov <anton@khirnov.net>
* lavf/tls_mbedtls: fix handling of certification validation failuressfan52024-06-111-1/+2
| | | | | | | | | | We manually check the verification status after the handshake has completed using mbedtls_ssl_get_verify_result(). However with VERIFY_REQUIRED mbedtls_ssl_handshake() already returns an error, so this code is never reached. Fix that by using VERIFY_OPTIONAL, which performs the verification but does not abort the handshake. Signed-off-by: Anton Khirnov <anton@khirnov.net>
* lavf/tls_mbedtls: hook up debug message callbacksfan52024-06-111-0/+17
| | | | | | | Unfortunately this won't work out-of-the-box because mbedTLS only provides a global (not per-context) debug toggle. Signed-off-by: Anton Khirnov <anton@khirnov.net>
* lavf/tls_mbedtls: add missing call to psa_crypto_initsfan52024-06-111-0/+10
| | | | | | This is mandatory depending on configuration or at least with mbedTLS 3.6.0. Signed-off-by: Anton Khirnov <anton@khirnov.net>
* lavf/tls_mbedtls: handle more error codes for human-readable messagessfan52024-06-111-0/+9
| | | | Signed-off-by: Anton Khirnov <anton@khirnov.net>
* lavc/vc1dsp: match C block layout in inv_trans_4x8_rvvRémi Denis-Courmont2024-06-111-6/+15
| | | | | | | | Although checkasm does not verify this, the decoder requires that the transform updates the input block exactly like the C code does. This fixes vc1-ism, vc1_ilaced_twomv, vc1_sa00040, vc1_sa10091, vc1_sa10143, vc1_sa20021, vc1test_smm0005 and wmv3-drm-dec tests.
* lavc/vc1dsp: match C block layout in inv_trans_4x4_rvvRémi Denis-Courmont2024-06-111-4/+4
| | | | | | | | Although checkasm does not verify this, the decoder requires that the transform updates the input block exactly like the C code does. This fixes vc1-ism, vc1_ilaced_twomv, vc1_sa00040, vc1_sa10091, vc1_sa10143, vc1_sa20021, vc1test_smm0005 and wmv3-drm-dec tests.
* fftools/ffmpeg_mux_init: Fix leak when using non-encoding optionAndreas Rheinhardt2024-06-111-0/+1
| | | | | Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* configure: Disable DNN without backendAndreas Rheinhardt2024-06-111-1/+1
| | | | | | | The DNN filters are useless without a backend. This will also "fix" Coverity issues #1598288 and #1601718. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* fftools/ffmpeg_mux_init: Return error upon errorAndreas Rheinhardt2024-06-111-3/+7
| | | | | | | | | Currently it may return an uninitialized value. Introduced in 840f2bc18eddd72fa886aec30efc82991b920c45. Fixes Coverity issue #1603565. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/vvc/inter: Don't return voidAndreas Rheinhardt2024-06-111-3/+6
| | | | | | | Returning a void is not allowed by the spec. Just return instead. Reviewed-by: Nuo Mi <nuomi2021@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* sws/range_convert: R-V V to/from JPEGRémi Denis-Courmont2024-06-103-1/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | C908 X60 chrRangeFromJpeg_8_c: 2.7 2.5 chrRangeFromJpeg_8_rvv_i32: 1.7 1.5 chrRangeFromJpeg_24_c: 7.5 6.7 chrRangeFromJpeg_24_rvv_i32: 1.7 1.5 chrRangeFromJpeg_128_c: 55.2 34.7 chrRangeFromJpeg_128_rvv_i32: 6.5 3.0 chrRangeFromJpeg_144_c: 44.0 39.2 chrRangeFromJpeg_144_rvv_i32: 7.7 4.5 chrRangeFromJpeg_256_c: 78.2 69.5 chrRangeFromJpeg_256_rvv_i32: 12.2 6.0 chrRangeFromJpeg_512_c: 172.2 138.5 chrRangeFromJpeg_512_rvv_i32: 24.5 11.7 chrRangeToJpeg_8_c: 4.7 4.2 chrRangeToJpeg_8_rvv_i32: 2.0 1.7 chrRangeToJpeg_24_c: 13.7 12.2 chrRangeToJpeg_24_rvv_i32: 2.0 1.5 chrRangeToJpeg_128_c: 72.0 63.7 chrRangeToJpeg_128_rvv_i32: 6.7 3.2 chrRangeToJpeg_144_c: 80.7 71.7 chrRangeToJpeg_144_rvv_i32: 8.5 4.7 chrRangeToJpeg_256_c: 143.2 127.2 chrRangeToJpeg_256_rvv_i32: 13.5 6.5 chrRangeToJpeg_512_c: 285.7 253.7 chrRangeToJpeg_512_rvv_i32: 27.0 13.0 lumRangeFromJpeg_8_c: 1.7 1.5 lumRangeFromJpeg_8_rvv_i32: 1.2 1.0 lumRangeFromJpeg_24_c: 4.2 3.7 lumRangeFromJpeg_24_rvv_i32: 1.2 1.0 lumRangeFromJpeg_128_c: 21.7 19.2 lumRangeFromJpeg_128_rvv_i32: 3.7 1.7 lumRangeFromJpeg_144_c: 24.7 22.0 lumRangeFromJpeg_144_rvv_i32: 4.7 2.7 lumRangeFromJpeg_256_c: 43.7 39.0 lumRangeFromJpeg_256_rvv_i32: 7.5 3.2 lumRangeFromJpeg_512_c: 87.0 77.2 lumRangeFromJpeg_512_rvv_i32: 14.5 6.7 lumRangeToJpeg_8_c: 2.7 2.2 lumRangeToJpeg_8_rvv_i32: 1.0 1.0 lumRangeToJpeg_24_c: 7.2 6.5 lumRangeToJpeg_24_rvv_i32: 1.2 1.0 lumRangeToJpeg_128_c: 37.7 33.7 lumRangeToJpeg_128_rvv_i32: 3.7 2.0 lumRangeToJpeg_144_c: 42.5 37.7 lumRangeToJpeg_144_rvv_i32: 4.7 2.7 lumRangeToJpeg_256_c: 75.0 66.7 lumRangeToJpeg_256_rvv_i32: 7.5 3.5 lumRangeToJpeg_512_c: 149.5 133.0 lumRangeToJpeg_512_rvv_i32: 14.7 7.0
* swscale/aarch64: Add rgb24 to yuv implementationZhao Zhili2024-06-113-0/+228
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Test on Apple M1: rgb24_to_uv_8_c: 0.0 rgb24_to_uv_8_neon: 0.2 rgb24_to_uv_128_c: 1.0 rgb24_to_uv_128_neon: 0.5 rgb24_to_uv_1080_c: 7.0 rgb24_to_uv_1080_neon: 5.7 rgb24_to_uv_1920_c: 12.5 rgb24_to_uv_1920_neon: 9.5 rgb24_to_uv_half_8_c: 0.2 rgb24_to_uv_half_8_neon: 0.2 rgb24_to_uv_half_128_c: 1.0 rgb24_to_uv_half_128_neon: 0.5 rgb24_to_uv_half_1080_c: 6.2 rgb24_to_uv_half_1080_neon: 3.0 rgb24_to_uv_half_1920_c: 11.2 rgb24_to_uv_half_1920_neon: 5.2 rgb24_to_y_8_c: 0.2 rgb24_to_y_8_neon: 0.0 rgb24_to_y_128_c: 0.5 rgb24_to_y_128_neon: 0.5 rgb24_to_y_1080_c: 4.7 rgb24_to_y_1080_neon: 3.2 rgb24_to_y_1920_c: 8.0 rgb24_to_y_1920_neon: 5.7 On Pixel 6: rgb24_to_uv_8_c: 30.7 rgb24_to_uv_8_neon: 56.9 rgb24_to_uv_128_c: 213.9 rgb24_to_uv_128_neon: 173.2 rgb24_to_uv_1080_c: 1649.9 rgb24_to_uv_1080_neon: 1424.4 rgb24_to_uv_1920_c: 2907.9 rgb24_to_uv_1920_neon: 2480.7 rgb24_to_uv_half_8_c: 36.2 rgb24_to_uv_half_8_neon: 33.4 rgb24_to_uv_half_128_c: 167.9 rgb24_to_uv_half_128_neon: 99.4 rgb24_to_uv_half_1080_c: 1293.9 rgb24_to_uv_half_1080_neon: 778.7 rgb24_to_uv_half_1920_c: 2292.7 rgb24_to_uv_half_1920_neon: 1328.7 rgb24_to_y_8_c: 19.7 rgb24_to_y_8_neon: 27.7 rgb24_to_y_128_c: 129.9 rgb24_to_y_128_neon: 96.7 rgb24_to_y_1080_c: 995.4 rgb24_to_y_1080_neon: 767.7 rgb24_to_y_1920_c: 1747.4 rgb24_to_y_1920_neon: 1337.2 Note both tests use clang as compiler, which has vectorization enabled by default with -O3. Reviewed-by: Rémi Denis-Courmont <remi@remlab.net> Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* tests/checkasm: Fix build error when enable linux perf on AndroidZhao Zhili2024-06-111-9/+9
| | | | | | | B0 is defined by system header, see f0f596dbc6b for ref. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* avutil/timer: Add clock_gettime as a fallback of AV_READ_TIMEZhao Zhili2024-06-111-0/+10
| | | | | | Reviewed-by: Rémi Denis-Courmont <remi@remlab.net> Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* avutil/aarch64: Skip define AV_READ_TIME for appleZhao Zhili2024-06-111-7/+1
| | | | | | | It will fallback to mach_absolute_time inside libavutil/timer.h Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
* x86/aacencdsp: fix ff_aac_quantize_bands_avx on unix64 ABIJames Almer2024-06-091-13/+16
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* swscale/x86/rgb_2_rgb: add missing wrap to ff_uyvytoyuv422_avx2James Almer2024-06-091-0/+2
| | | | | | Fixes old yasm. Signed-off-by: James Almer <jamrial@gmail.com>
* swscale/x86/rgb2rgb: add missing wrap for ff_uyvytoyuv422_avx2James Almer2024-06-091-1/+1
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* checkasm/sw_rgb: fix alignment of buffers for rgb_to_yuv testsJames Almer2024-06-091-8/+8
| | | | | | | | src is apparently not guaranteed to be >8 byte aligned, but align to 16 nonetheless as the x86 asm will do unaligned loads anyway. dst is guaranteed to be 32 byte aligned for the Y plane, but 16 byte for UV. Signed-off-by: James Almer <jamrial@gmail.com>
* swscale/x86/rgb2rgb: remove mmxext version of shuffle_bytes_2103James Almer2024-06-092-68/+0
| | | | Signed-off-by: James Almer <jamrial@gmail.com>