ffmpeg.git
70 min agotests/fate/mov: add a test for HEIF files with multiple thumbnails master
James Almer [Fri, 18 Jul 2025 19:00:54 +0000 (16:00 -0300)]
tests/fate/mov: add a test for HEIF files with multiple thumbnails

As well as entries in iloc and iinf being not being stored in the same order.

Signed-off-by: James Almer <[email protected]>
114 min agoavfilter/x86/vf_blackdetect: add missing preprocessor check
James Almer [Fri, 18 Jul 2025 18:17:02 +0000 (15:17 -0300)]
avfilter/x86/vf_blackdetect: add missing preprocessor check

Signed-off-by: James Almer <[email protected]>
2 hours agoavformat/mov: don't assume iloc and iinf entries for each item_id will be in the...
James Almer [Fri, 18 Jul 2025 00:47:49 +0000 (21:47 -0300)]
avformat/mov: don't assume iloc and iinf entries for each item_id will be in the same order

Nothing forbids them to be in any order the muxer desires.

Fixes demuxing heif samples generated by S1II.

Tested-by: Lynne <[email protected]>
Signed-off-by: James Almer <[email protected]>
2 hours agofate/lavf-container: add test for APV in MP4
James Almer [Tue, 15 Jul 2025 22:00:21 +0000 (19:00 -0300)]
fate/lavf-container: add test for APV in MP4

Signed-off-by: James Almer <[email protected]>
2 hours agoavformat/mov_muxer: Extended MOV muxer to handle APV video content
Dawid Kozinski [Mon, 14 Jul 2025 09:18:57 +0000 (11:18 +0200)]
avformat/mov_muxer: Extended MOV muxer to handle APV video content

- Changes in mov_write_video_tag function to handle APV elementary stream
- Provided structure APVDecoderConfigurationRecord that specifies the decoder configuration information for APV video content

Co-Authored-by: James Almer <[email protected]>
Signed-off-by: Dawid Kozinski <[email protected]>
Signed-off-by: James Almer <[email protected]>
2 hours agoavcodec/motion_est: don't add offsets to NULL pointers
James Almer [Sun, 13 Jul 2025 23:01:26 +0000 (20:01 -0300)]
avcodec/motion_est: don't add offsets to NULL pointers

Fixes: libavcodec/motion_est.c:94:31: runtime error: applying zero offset to null pointer
Signed-off-by: James Almer <[email protected]>
2 hours agoswscale/swscale_unscaled: don't add offsets to NULL pointers
James Almer [Sun, 13 Jul 2025 22:50:57 +0000 (19:50 -0300)]
swscale/swscale_unscaled: don't add offsets to NULL pointers

Fixes: libswscale/swscale_unscaled.c:916:20: runtime error: applying zero offset to null pointer
Signed-off-by: James Almer <[email protected]>
4 hours agoavfilter/x86/vf_blackdetect_init: don't enable the ASM functions on targets where...
James Almer [Fri, 18 Jul 2025 16:01:29 +0000 (13:01 -0300)]
avfilter/x86/vf_blackdetect_init: don't enable the ASM functions on targets where it's known they will be slower

Signed-off-by: James Almer <[email protected]>
4 hours agoavfilter/x86/vf_blackdetect: don't use rax to return a 32bit integer
James Almer [Fri, 18 Jul 2025 16:00:22 +0000 (13:00 -0300)]
avfilter/x86/vf_blackdetect: don't use rax to return a 32bit integer

Fixes compilation on x86_32.

Signed-off-by: James Almer <[email protected]>
8 hours agoavfilter/vf_blackdetect: Fix header guard
Zhao Zhili [Fri, 18 Jul 2025 11:32:42 +0000 (19:32 +0800)]
avfilter/vf_blackdetect: Fix header guard

Fix fate-source failure.

11 hours agotests/checkasm: add test for vf_blackdetect
Niklas Haas [Thu, 17 Jul 2025 10:39:26 +0000 (12:39 +0200)]
tests/checkasm: add test for vf_blackdetect

11 hours agoavfilter/vf_blackdetect: add AVX2 SIMD version
Niklas Haas [Thu, 10 Jul 2025 13:30:36 +0000 (15:30 +0200)]
avfilter/vf_blackdetect: add AVX2 SIMD version

Requested by a user. Even with autovectorization enabled, the compiler
performs a quite poor job of optimizing this function, due to not being
able to take advantage of the pmaxub + pcmpeqb trick for counting the number
of pixels less than or equal-to a threshold.

blackdetect8_c:                                       4625.0 ( 1.00x)
blackdetect8_avx2:                                     155.1 (29.83x)
blackdetect16_c:                                      2529.4 ( 1.00x)
blackdetect16_avx2:                                    163.6 (15.46x)

13 hours agoavcodec/ohenc: Add h264/hevc OpenHarmony encoders
Zhao Zhili [Sun, 6 Jul 2025 11:57:08 +0000 (19:57 +0800)]
avcodec/ohenc: Add h264/hevc OpenHarmony encoders

13 hours agoavcodec/ohdec: Add h264/hevc OpenHarmony decoders
Zhao Zhili [Sun, 6 Jul 2025 08:05:53 +0000 (16:05 +0800)]
avcodec/ohdec: Add h264/hevc OpenHarmony decoders

13 hours agoavutil/hwcontext: Add ohcodec device and pixel format
Zhao Zhili [Sun, 6 Jul 2025 08:05:38 +0000 (16:05 +0800)]
avutil/hwcontext: Add ohcodec device and pixel format

Signed-off-by: Zhao Zhili <[email protected]>
17 hours agoavdevice/android_camera: Set image linesize aligment to 1
wangbin [Mon, 23 Jun 2025 03:48:38 +0000 (11:48 +0800)]
avdevice/android_camera: Set image linesize aligment to 1

Can't read alignment from packet, codecpar or decoded frame linesizes, so don't
set it. My test device redmi k60 produces images in 4624x3472, not 32 aligned

Signed-off-by: Zhao Zhili <[email protected]>
19 hours agoavformat/mov: Enable jpeg streams in HEIF MOVContext
Eric Joyner [Thu, 17 Jul 2025 02:30:02 +0000 (19:30 -0700)]
avformat/mov: Enable jpeg streams in HEIF MOVContext

Nikon HEIFs from a camera or NX studio include a small jpeg thumbnail in addition to
the expected HEVC thumbnails; allowing jpegs allows all thumbnails to
have an associated stream for Nikon HEIF files.

With this, Nikon HEIFs can finally be decoded without failing and the
thumbnails can be extracted into their own files.

Signed-off-by: Eric Joyner <[email protected]>
Reviewed-by: Lynne <[email protected]>
Signed-off-by: James Almer <[email protected]>
19 hours agoavformat/mov: Support multiple thumbnails in HEIF
Eric Joyner [Thu, 17 Jul 2025 02:30:01 +0000 (19:30 -0700)]
avformat/mov: Support multiple thumbnails in HEIF

Prevents ffmpeg/ffprobe from erroring out when reading an HEIF that
contains multiple hvcC thumbnails (e.g. from a Nikon Z6III camera).

Before, move_read_iref_thmb() would always override the stored
thmb_item_id in the MOVContext with each new read thumbnail, causing a
stream and item_id mismatch later in mov_parse_heif_items(), resulting
in the "HEIF thumbnail doesn't reference a stream" error message.

To solve this,

- Turn thmb_item_id into an array of IDs because multiple thumbnails can
  exist
- Change check in mov_parse_heif_items() to compare against all stored
  thumbnail IDs to see if any item missing a stream is in the list of
  thumbnail IDs.

Signed-off-by: Eric Joyner <[email protected]>
Reviewed-by: Lynne <[email protected]>
Signed-off-by: James Almer <[email protected]>
31 hours agoavformat/whip: force NONBLOCK for rtp
Jack Lau [Thu, 17 Jul 2025 12:10:22 +0000 (20:10 +0800)]
avformat/whip: force NONBLOCK for rtp

We need to ensure rtp sets NONBLOCK since the dtls
handshake has potentially overriden the sockets mode.

Signed-off-by: Jack Lau <[email protected]>
Signed-off-by: Timo Rothenpieler <[email protected]>
32 hours agoavformat/tls_openssl: avoid unusual inline-if style
Timo Rothenpieler [Thu, 17 Jul 2025 12:06:07 +0000 (14:06 +0200)]
avformat/tls_openssl: avoid unusual inline-if style

32 hours agoavformat/tls_openssl: make tls and dtls use one close function
Jack Lau [Sat, 12 Jul 2025 09:03:02 +0000 (17:03 +0800)]
avformat/tls_openssl: make tls and dtls use one close function

Signed-off-by: Jack Lau <[email protected]>
Signed-off-by: Timo Rothenpieler <[email protected]>
33 hours agoavfilter/vf_thumbnail: unroll and use multiple histograms
Niklas Haas [Sat, 12 Jul 2025 11:30:07 +0000 (13:30 +0200)]
avfilter/vf_thumbnail: unroll and use multiple histograms

This naive hist[p[x]]++ loop suffers badly when there are large regions of
identical values in the image, because of store-to-load forwarding delay.

Splitting up the histogram into four "parallel" histograms and processing
them one at a time speeds things up significantly, about 40% on my end.

33 hours agoavfilter/x86/scene_sad: add high bit depth AVX2/AVX512 version
Niklas Haas [Fri, 11 Jul 2025 18:48:28 +0000 (20:48 +0200)]
avfilter/x86/scene_sad: add high bit depth AVX2/AVX512 version

Since psadbw only exists for 8-bits, we have to emulate it for 16-bit
inputs. The simplest sequence is to use a normal subtraction, which is safe
as long as the inputs do not exceed 32767 - so limit this implementation
to 15-bit inputs and below.

For 16-bit inputs, we could in theory instead use a pminw / pmaxw to ensure
the resulting difference does not overflow, but this is slower, and also
breaks the subsequent use of pmaddwd, so I opted to skip 16-bit SIMD for
now.

scene_sad10_c:                                      114175.6 ( 1.00x)
scene_sad10_avx2:                                     9617.7 (11.87x)
scene_sad10_avx512:                                   5208.8 (21.92x)
scene_sad12_c:                                      114537.8 ( 1.00x)
scene_sad12_avx2:                                     9614.0 (11.91x)
scene_sad12_avx512:                                   5186.3 (22.08x)
scene_sad14_c:                                      114113.9 ( 1.00x)
scene_sad14_avx2:                                     9612.9 (11.87x)
scene_sad14_avx512:                                   5186.0 (22.00x)
scene_sad15_c:                                      114108.9 ( 1.00x)
scene_sad15_avx2:                                     9612.3 (11.87x)
scene_sad15_avx512:                                   5186.4 (22.00x)
scene_sad16_c:                                      114136.0 ( 1.00x)

33 hours agoavfilter/x86/scene_sad: add AVX512 implementation
Niklas Haas [Fri, 11 Jul 2025 11:52:37 +0000 (13:52 +0200)]
avfilter/x86/scene_sad: add AVX512 implementation

Trivial to add, but a lot faster (on my machine).

scene_sad8_c:                                       114476.4 ( 1.00x)
scene_sad8_sse2:                                      8644.3 (13.24x)
scene_sad8_avx2:                                      4520.1 (25.33x)
scene_sad8_avx512:                                    3153.0 (36.31x)

33 hours agotests/checkasm: add scene_sad checkasm test
Niklas Haas [Fri, 11 Jul 2025 13:56:09 +0000 (15:56 +0200)]
tests/checkasm: add scene_sad checkasm test

33 hours agoavfilter/scene_sad: pass true depth to ff_scene_sad_get_fn()
Niklas Haas [Sat, 12 Jul 2025 09:15:56 +0000 (11:15 +0200)]
avfilter/scene_sad: pass true depth to ff_scene_sad_get_fn()

I need to be able to distinguish between 10/12/14 and 16 bit depths, for
overflow reasons.

43 hours agoavformat/tls_openssl: remove all redundant "TLS: " in log with AVClass
Jack Lau [Mon, 7 Jul 2025 07:26:35 +0000 (15:26 +0800)]
avformat/tls_openssl: remove all redundant "TLS: " in log with AVClass

Signed-off-by: Jack Lau <[email protected]>
Signed-off-by: Timo Rothenpieler <[email protected]>
43 hours agoavformat/tls_openssl: replace 1 with TLS_ST_OK to be more clear
Jack Lau [Sat, 12 Jul 2025 13:39:54 +0000 (21:39 +0800)]
avformat/tls_openssl: replace 1 with TLS_ST_OK to be more clear

Signed-off-by: Jack Lau <[email protected]>
Signed-off-by: Timo Rothenpieler <[email protected]>
43 hours agoavformat/whip: free udp socket after dtls free
Jack Lau [Sat, 12 Jul 2025 09:05:13 +0000 (17:05 +0800)]
avformat/whip: free udp socket after dtls free

the SSL_shutdown in tls_close need call the url_bio_bwrite
so we should keep udp still alive

Signed-off-by: Jack Lau <[email protected]>
Signed-off-by: Timo Rothenpieler <[email protected]>
43 hours agoavformat/tls_openssl: unset nonblock flag on correct URLContext during dtls handshake
Timo Rothenpieler [Thu, 17 Jul 2025 00:11:00 +0000 (02:11 +0200)]
avformat/tls_openssl: unset nonblock flag on correct URLContext during dtls handshake

The internal BIO functions do not in fact look at this flag, only the outer
tls_read and tls_write functions do.

44 hours agoavformat/tls_openssl: set tlsext host name after init ssl
Jack Lau [Wed, 16 Jul 2025 23:38:54 +0000 (07:38 +0800)]
avformat/tls_openssl: set tlsext host name after init ssl

Signed-off-by: Jack Lau <[email protected]>
Signed-off-by: Timo Rothenpieler <[email protected]>
45 hours agoconfigure: add -Wl when linker is called indirectly
Kacper Michajłow [Thu, 19 Jun 2025 23:52:05 +0000 (01:52 +0200)]
configure: add -Wl when linker is called indirectly

It's possible to call linker indirectly through driver like Clang. In
which cases linker args has to be prefixed with -Wl.

Signed-off-by: Kacper Michajłow <[email protected]>
45 hours agocheckasm/swscale: fix function prototypes
Kacper Michajłow [Thu, 3 Jul 2025 20:59:02 +0000 (22:59 +0200)]
checkasm/swscale: fix function prototypes

This aligns declared function types in checkasm with real definition.

Fixes FATE: checkasm-{sw_rgb,sw_scale,sw_yuv2rgb,sw_yuv2yuv}

Fixes: runtime error: call to function <func> through pointer to incorrect function type
Fixes: c1a0e657638f7007dcc807a2d985c22631fcd6d3
Signed-off-by: Kacper Michajłow <[email protected]>
2 days agoavformat/flvdec: don't skip backwards or over EOF
Timo Rothenpieler [Mon, 14 Jul 2025 19:54:35 +0000 (21:54 +0200)]
avformat/flvdec: don't skip backwards or over EOF

Skipping backwards (and even forwards) resets the EOF flag, and can thus
lead to infinite looping if the conditions are just right.

Fixes: Infinite loop
Fixes: 427538726/clusterfuzz-testcase-minimized-ffmpeg_dem_FLV_fuzzer-6582567304495104
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Timo Rothenpieler <[email protected]>
2 days agoavformat/tls_openssl: automatically generate self-signed certificate when none is...
Timo Rothenpieler [Sun, 13 Jul 2025 19:08:16 +0000 (21:08 +0200)]
avformat/tls_openssl: automatically generate self-signed certificate when none is provided in listen mode

2 days agoavformat/tls_openssl: make generating fingerprints optional
Timo Rothenpieler [Sun, 13 Jul 2025 19:08:05 +0000 (21:08 +0200)]
avformat/tls_openssl: make generating fingerprints optional

2 days agoavformat/tls_openssl: don't expose deprecated EC_KEY outside of its function
Timo Rothenpieler [Sun, 13 Jul 2025 19:05:44 +0000 (21:05 +0200)]
avformat/tls_openssl: don't expose deprecated EC_KEY outside of its function

2 days agoavformat/tls_openssl: properly free generated/read keys and certificates
Timo Rothenpieler [Sun, 13 Jul 2025 18:49:03 +0000 (20:49 +0200)]
avformat/tls_openssl: properly free generated/read keys and certificates

2 days agoavformat/tls_openssl: don't enable read_ahead in dtls mode
Timo Rothenpieler [Sun, 13 Jul 2025 14:35:55 +0000 (16:35 +0200)]
avformat/tls_openssl: don't enable read_ahead in dtls mode

OpenSSL docs say:
These functions have no impact when used with DTLS.

2 days agoavformar/tls_openssl: use correct info callback in DTLS mode
Timo Rothenpieler [Sun, 13 Jul 2025 14:35:47 +0000 (16:35 +0200)]
avformar/tls_openssl: use correct info callback in DTLS mode

2 days agoavformat/tls_openssl: clean up peer verify logic in dtls mode
Timo Rothenpieler [Sun, 13 Jul 2025 14:35:20 +0000 (16:35 +0200)]
avformat/tls_openssl: clean up peer verify logic in dtls mode

2 days agoavformat/tls_openssl: don't hardcode ciphers and curves for dtls
Timo Rothenpieler [Sun, 13 Jul 2025 14:34:44 +0000 (16:34 +0200)]
avformat/tls_openssl: don't hardcode ciphers and curves for dtls

2 days agoavformat/tls_openssl: properly limit written size to data mtu
Timo Rothenpieler [Sun, 13 Jul 2025 14:08:33 +0000 (16:08 +0200)]
avformat/tls_openssl: properly limit written size to data mtu

2 days agoavformat/tls_openssl: set default MTU if none is set
Timo Rothenpieler [Sat, 12 Jul 2025 20:11:17 +0000 (22:11 +0200)]
avformat/tls_openssl: set default MTU if none is set

2 days agoavformat/tls_openssl: initialize DTLS context with correct method
Timo Rothenpieler [Sat, 12 Jul 2025 20:08:24 +0000 (22:08 +0200)]
avformat/tls_openssl: initialize DTLS context with correct method

2 days agoavformat/tls_openssl: don't abort if dtls has no key/cert set
Timo Rothenpieler [Sat, 12 Jul 2025 20:07:39 +0000 (22:07 +0200)]
avformat/tls_openssl: don't abort if dtls has no key/cert set

2 days agoavformat/tls_openssl: force dtls handshake to be blocking
Timo Rothenpieler [Sat, 12 Jul 2025 20:06:33 +0000 (22:06 +0200)]
avformat/tls_openssl: force dtls handshake to be blocking

There is no sensible way to handle this otherwise anyway, one just has
to loop over this function until it succeeds.

2 days agoavformat/tls_openssl: set dtls remote addr in listen mode
Timo Rothenpieler [Sat, 12 Jul 2025 19:42:59 +0000 (21:42 +0200)]
avformat/tls_openssl: set dtls remote addr in listen mode

Taken from the first received packet, which will signify the now
permanent peer of this DTLS "connection".

3 days agoavcodec/ffv1dec: don't add offsets to NULL pointers
James Almer [Sun, 13 Jul 2025 22:56:13 +0000 (19:56 -0300)]
avcodec/ffv1dec: don't add offsets to NULL pointers

Fixes: libavcodec/ffv1dec.c:452:43: runtime error: applying zero offset to null pointer
Signed-off-by: James Almer <[email protected]>
3 days agoavformat/tls_schannel: add check for Windows 10 only types and defines
James Almer [Sun, 13 Jul 2025 19:56:20 +0000 (16:56 -0300)]
avformat/tls_schannel: add check for Windows 10 only types and defines

Old Mingw-w64 releases provided by some distros seemingly don't have them, so
check for them and disable the dtls protocol if unavailable.

Signed-off-by: James Almer <[email protected]>
3 days agoavutil/hwcontext_vulkan: don't over-map buffers with prior padding
Niklas Haas [Tue, 15 Jul 2025 10:46:11 +0000 (12:46 +0200)]
avutil/hwcontext_vulkan: don't over-map buffers with prior padding

If the image data is not at the start of the buffer allocation, such as
when the buffer has padding before the image data, this function maps too
much memory, since src_data + src_buf->size exceeds the buffer size.

Fix this by subtracting the difference between the buffer start and the
provided image data pointer from the size of the memory range to map.

An easy way to reproduce this issue is using the vf_pad filter, which
allocates image data buffers with a nonzero offset whenever padding is
requested before the start of the image data.

3 days agoaacenc_tns: clamp filter direction energy measurement
Lynne [Sat, 8 Feb 2025 03:35:31 +0000 (04:35 +0100)]
aacenc_tns: clamp filter direction energy measurement

The issue is that:

float en[2];
...
tns->n_filt[w] = is8 ? 1 : order != TNS_MAX_ORDER ? 2 : 3;
for (g = 0; g < tns->n_filt[w]; g++) {
    tns->direction[w][g] = slant != 2 ? slant : en[g] < en[!g];

When using the AAC Main profile, n_filt = 3, and slant is by
default 2 (normal long frames), g can go above 1.

en is the evolution of energy in the frequency domain for every
band at the given window. E.g. whether the energy is concentrated
at the top of each band, or the bottom.

For 2-pole filters, its straightforward.
For 3-pole filters, we need more than 2 measurements.

This commit properly implements support for 3-pole filters, by measuring
the band energy across three areas.

Do note that even xHE-AAC caps n_filt to 2, and only AAC Main allows
n_filt == 3.

Fixes https://trac.ffmpeg.org/ticket/11418

3 days agoMAINTAINERS: add myself
Kacper Michajłow [Fri, 11 Jul 2025 17:06:02 +0000 (19:06 +0200)]
MAINTAINERS: add myself

Signed-off-by: Kacper Michajłow <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
4 days agotests/fate: add fate test for excessive frame buffering when using filters
Marton Balint [Sun, 6 Jul 2025 18:08:36 +0000 (20:08 +0200)]
tests/fate: add fate test for excessive frame buffering when using filters

Based on the command line of ticket #10959.

Signed-off-by: Marton Balint <[email protected]>
4 days agofftools/ffmpeg: add support for setting maximum buffered frames in a filtergraph
Marton Balint [Sun, 6 Jul 2025 09:28:13 +0000 (11:28 +0200)]
fftools/ffmpeg: add support for setting maximum buffered frames in a filtergraph

Signed-off-by: Marton Balint <[email protected]>
4 days agoavfilter/avfilter: add AVFilterGraph->max_buffered_frames to limit buffered frames
Marton Balint [Sun, 6 Jul 2025 08:14:34 +0000 (10:14 +0200)]
avfilter/avfilter: add AVFilterGraph->max_buffered_frames to limit buffered frames

Signed-off-by: Marton Balint <[email protected]>
4 days agoavfilter/framequeue: add support for limiting and tracking buffered frames in the...
Marton Balint [Sun, 6 Jul 2025 08:03:46 +0000 (10:03 +0200)]
avfilter/framequeue: add support for limiting and tracking buffered frames in the queues

Signed-off-by: Marton Balint <[email protected]>
6 days agolibavcodec/alsdec.c: Add check for av_malloc_array() and av_calloc()
Jiasheng Jiang [Thu, 10 Jul 2025 16:26:39 +0000 (16:26 +0000)]
libavcodec/alsdec.c: Add check for av_malloc_array() and av_calloc()

Add check for the return value of av_malloc_array() and av_calloc()
to avoid potential NULL pointer dereference.

Fixes: dcfd24b10c ("avcodec/alsdec: Implement floating point sample data decoding")
Signed-off-by: Jiasheng Jiang <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
6 days agoavfilter/vf_thumbnail: switch to query_func2
Niklas Haas [Fri, 20 Jun 2025 14:04:39 +0000 (16:04 +0200)]
avfilter/vf_thumbnail: switch to query_func2

Instead of enumerating a static list of planar formats to support, walk
through the format list and enable all supported formats.

As of writing, this generates the following format list:
- gbrap
- gbrap10le
- gbrap12le
- gbrap14le
- gbrap16le
- gbrp
- gbrp10le
- gbrp12le
- gbrp14le
- gbrp16le
- gbrp9le
- gray
- gray10le
- gray12le
- gray14le
- gray16le
- gray9le
- ya16le
- ya8
- yuv410p
- yuv411p
- yuv420p
- yuv420p10le
- yuv420p12le
- yuv420p14le
- yuv420p16le
- yuv420p9le
- yuv422p
- yuv422p10le
- yuv422p12le
- yuv422p14le
- yuv422p16le
- yuv422p9le
- yuv440p
- yuv440p10le
- yuv440p12le
- yuv444p
- yuv444p10le
- yuv444p12le
- yuv444p14le
- yuv444p16le
- yuv444p9le
- yuva420p
- yuva420p10le
- yuva420p16le
- yuva420p9le
- yuva422p
- yuva422p10le
- yuva422p12le
- yuva422p16le
- yuva422p9le
- yuva444p
- yuva444p10le
- yuva444p12le
- yuva444p16le
- yuva444p9le
- yuvj411p
- yuvj420p
- yuvj422p
- yuvj440p
- yuvj444p

6 days agoavfilter/vf_thumbnail: support more planar formats
Niklas Haas [Thu, 12 Jun 2025 14:43:24 +0000 (16:43 +0200)]
avfilter/vf_thumbnail: support more planar formats

This adds support for high bit depth formats, as well as formats with fewer
than 3 planes. The implementation for HBD is the same as for 8 bit formats,
just right shifted to 8 bits.

It's worth pointing out that this also works for HDR formats (and even DV),
because the underlying implementation is just trying to minimize the histogram
difference. If anything, using a HDR format will result in a *more* accurate
detection, because HDR formats tend to be more perceptually uniform.

7 days agoavcodec/nvdec: switch to proper pixfmts on next major bump
Timo Rothenpieler [Fri, 4 Jul 2025 16:51:59 +0000 (18:51 +0200)]
avcodec/nvdec: switch to proper pixfmts on next major bump

7 days agoavcodec/nvenc: add support for new 10 bit MSB pixel formats
Timo Rothenpieler [Fri, 4 Jul 2025 16:52:25 +0000 (18:52 +0200)]
avcodec/nvenc: add support for new 10 bit MSB pixel formats

7 days agoswscale: add support for new 10/12 bit MSB formats
Timo Rothenpieler [Fri, 4 Jul 2025 22:17:20 +0000 (00:17 +0200)]
swscale: add support for new 10/12 bit MSB formats

7 days agoavutils/pixfmt: add YUV444/GBRP 10 and 12 bit MSB formats
Timo Rothenpieler [Fri, 4 Jul 2025 22:17:19 +0000 (00:17 +0200)]
avutils/pixfmt: add YUV444/GBRP 10 and 12 bit MSB formats

7 days agoavfilter/overlay_cuda: add timeline editing support
Jorge Estrada [Mon, 7 Jul 2025 22:53:04 +0000 (15:53 -0700)]
avfilter/overlay_cuda: add timeline editing support

Enables timeline editing options for overlay_cuda similar to what overlay allows

Example overlaying an image on a video between 30 to 60 seconds:

ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i sample-video.mp4 -i sample-image.jpg
-filter_complex "[1:v]hwupload_cuda[image],[0:v]scale_npp=format=yuv420p[video],[video][image]overlay_cuda=enable='between(t,30,60)'"
-c:v h264_nvenc -c:a copy -y overlay-output-gpu.mp4

Signed-off-by: Jorge Estrada <[email protected]>
Signed-off-by: Timo Rothenpieler <[email protected]>
7 days agoavformat/tls_schannel: fix non-blocking write breaking TLS sessions
Timo Rothenpieler [Sun, 6 Jul 2025 18:13:59 +0000 (20:13 +0200)]
avformat/tls_schannel: fix non-blocking write breaking TLS sessions

7 days agoavformat/tls_schannel: add option to load server certificate from store
Timo Rothenpieler [Thu, 3 Jul 2025 19:57:53 +0000 (21:57 +0200)]
avformat/tls_schannel: add option to load server certificate from store

7 days agoavformat/tls_schannel: add DTLS support
Timo Rothenpieler [Tue, 24 Jun 2025 17:30:19 +0000 (19:30 +0200)]
avformat/tls_schannel: add DTLS support

7 days agoavformat/tls: make passing an external socket universal
Timo Rothenpieler [Tue, 1 Jul 2025 16:07:24 +0000 (18:07 +0200)]
avformat/tls: make passing an external socket universal

7 days agoavformat/udp: add function to set remote address directly
Timo Rothenpieler [Sat, 28 Jun 2025 18:58:20 +0000 (20:58 +0200)]
avformat/udp: add function to set remote address directly

7 days agoavformat/udp: separate rx and tx fifo
Timo Rothenpieler [Sat, 28 Jun 2025 18:14:51 +0000 (20:14 +0200)]
avformat/udp: separate rx and tx fifo

7 days agoavformat/udp: make recv addr of each packet available
Timo Rothenpieler [Sat, 28 Jun 2025 18:08:14 +0000 (20:08 +0200)]
avformat/udp: make recv addr of each packet available

7 days agoavformat/tls: move whip specific init out of generic tls code
Timo Rothenpieler [Wed, 25 Jun 2025 23:42:36 +0000 (01:42 +0200)]
avformat/tls: move whip specific init out of generic tls code

7 days agoavformat/rtsp: check copy_tls_opts_dict
Marvin Scholz [Tue, 8 Jul 2025 15:09:01 +0000 (17:09 +0200)]
avformat/rtsp: check copy_tls_opts_dict

Properly check av_dict_set return values and propagate them to
the caller so they can be handled.

7 days agoavformat/rtsp: use av_unreachable
Marvin Scholz [Tue, 8 Jul 2025 14:19:34 +0000 (16:19 +0200)]
avformat/rtsp: use av_unreachable

7 days agoavformat/rtsp: fix misleading indentation
Marvin Scholz [Tue, 8 Jul 2025 14:11:53 +0000 (16:11 +0200)]
avformat/rtsp: fix misleading indentation

7 days agoavcodec/mpegvideo_dec: Avoid implicit NULL + offset
Andreas Rheinhardt [Thu, 3 Jul 2025 20:32:15 +0000 (22:32 +0200)]
avcodec/mpegvideo_dec: Avoid implicit NULL + offset

Happens since 4fc874ef0813d39983f9b634cec42798aa94b57a
when this code is called via error resilience.
Also do the same for wmv2dec.c.
Fixes the vsynth_{1,2,3,_lena}-mpeg4-error and wmv2-drm-dec FATE-tests.

Signed-off-by: Andreas Rheinhardt <[email protected]>
7 days agoavcodec/opus/dec: Simplify resetting AVAudioFifo
Andreas Rheinhardt [Fri, 4 Jul 2025 06:58:06 +0000 (08:58 +0200)]
avcodec/opus/dec: Simplify resetting AVAudioFifo

Signed-off-by: Andreas Rheinhardt <[email protected]>
7 days agoavcodec/opus/dec: Don't call function multiple times in FFMAX
Andreas Rheinhardt [Fri, 4 Jul 2025 06:48:26 +0000 (08:48 +0200)]
avcodec/opus/dec: Don't call function multiple times in FFMAX

Signed-off-by: Andreas Rheinhardt <[email protected]>
7 days agoavcodec/opus/dec: Remove unused parameters
Andreas Rheinhardt [Thu, 3 Jul 2025 21:17:09 +0000 (23:17 +0200)]
avcodec/opus/dec: Remove unused parameters

The parameters here are not only unused, but buf_size's value
is actually wrong when flushing (it comes from the subpacket
of the last packet sent and is therefore outdated).

Signed-off-by: Andreas Rheinhardt <[email protected]>
7 days agoavcodec/get_bits: Remove GetBitContext.buffer_end
Andreas Rheinhardt [Fri, 4 Jul 2025 12:31:13 +0000 (14:31 +0200)]
avcodec/get_bits: Remove GetBitContext.buffer_end

It is unused. Furthermore, this automatically fixes the issue
that init_get_bits() failure would lead to NULL + 0 (when
setting buffer_end) which is UB before C23. This happened
in the fic-avi and fic-avi-skip_cursor FATE-tests.

This saved 7296B of .text here.

Signed-off-by: Andreas Rheinhardt <[email protected]>
7 days agoavcodec/get_bits: Add get_bits_bytesize()
Andreas Rheinhardt [Fri, 4 Jul 2025 12:22:31 +0000 (14:22 +0200)]
avcodec/get_bits: Add get_bits_bytesize()

And use it to avoid accesses to GetBitContext.buffer_end.

Signed-off-by: Andreas Rheinhardt <[email protected]>
7 days agoavcodec/vvc/dec: Don't use GetBit-API when byte-aligned
Andreas Rheinhardt [Fri, 4 Jul 2025 12:06:50 +0000 (14:06 +0200)]
avcodec/vvc/dec: Don't use GetBit-API when byte-aligned

Signed-off-by: Andreas Rheinhardt <[email protected]>
7 days agoavcodec/bytestream: Add const where appropriate
Andreas Rheinhardt [Fri, 4 Jul 2025 12:05:06 +0000 (14:05 +0200)]
avcodec/bytestream: Add const where appropriate

Signed-off-by: Andreas Rheinhardt <[email protected]>
7 days agoavformat/scd: ensure SCD_MIN_HEADER_SIZE bytes are read
Kacper Michajłow [Mon, 7 Jul 2025 19:25:30 +0000 (21:25 +0200)]
avformat/scd: ensure SCD_MIN_HEADER_SIZE bytes are read

Instead of accessing unintialized data when input is shorter than
expected size.

Fixes use of uninitialized value in MSAN build.
Found by OSS-Fuzz.

Signed-off-by: Kacper Michajłow <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
8 days agofftools/ffmpeg_demux: don't flag timestamps as unreliable if they are generated
James Almer [Tue, 8 Jul 2025 18:00:29 +0000 (15:00 -0300)]
fftools/ffmpeg_demux: don't flag timestamps as unreliable if they are generated

Regardless of the source being an AVFMT_NOTIMESTAMPS format, if the timestamps
are generated like when using the use_wallclock_as_timestamps demuxer option,
then they are reliable.

Fixes ticket #11268

Signed-off-by: James Almer <[email protected]>
8 days agoavformat/rtsp: fix leak of options dict on error
Marvin Scholz [Tue, 8 Jul 2025 18:15:13 +0000 (20:15 +0200)]
avformat/rtsp: fix leak of options dict on error

Fix CID 1655306

Reviewed-by: Kieran Kunhya <[email protected]>
8 days agoavcodec/adpcm: squelch uninitialized variable warnings
Peter Ross [Tue, 8 Jul 2025 08:49:08 +0000 (18:49 +1000)]
avcodec/adpcm: squelch uninitialized variable warnings

Fixes CID1655273 and CID1655274.

Signed-off-by: Marvin Scholz <[email protected]>
10 days agodoc/scaler.texi: add missing gamma option
Desmond Liu [Tue, 8 Jul 2025 01:15:00 +0000 (01:15 +0000)]
doc/scaler.texi: add missing gamma option

Add missing 'gamma correct scaling' option to documentation.

Signed-off-by: Desmond Liu <[email protected]>
10 days agoavformat/tls: rename accidentally changed options
Marvin Scholz [Mon, 7 Jul 2025 21:41:01 +0000 (23:41 +0200)]
avformat/tls: rename accidentally changed options

These were accidentally renamed back to the old names in
ba9817df9df5911ceb2edff37d9ec970c29329e2

Reviewed-by: Timo Rothenpieler <[email protected]>
11 days agoChangelog: mention dropping OpenSSL < 1.1.0
Marvin Scholz [Mon, 7 Jul 2025 13:57:17 +0000 (15:57 +0200)]
Changelog: mention dropping OpenSSL < 1.1.0

11 days agoavformat/mov: add support for APV streams
Dawid Kozinski [Tue, 6 May 2025 09:28:29 +0000 (11:28 +0200)]
avformat/mov: add support for APV streams

Signed-off-by: Dawid Kozinski <[email protected]>
Signed-off-by: James Almer <[email protected]>
11 days agoAPIchanges: Add entry for AV_PKT_DATA_RTCP_SR
Marvin Scholz [Mon, 7 Jul 2025 15:19:44 +0000 (17:19 +0200)]
APIchanges: Add entry for AV_PKT_DATA_RTCP_SR

11 days agoavcodec: bump minor after adding AV_PKT_DATA_RTCP_SR
Marvin Scholz [Mon, 7 Jul 2025 15:18:48 +0000 (17:18 +0200)]
avcodec: bump minor after adding AV_PKT_DATA_RTCP_SR

11 days agoavformat: rtsp: export AV_PKT_DATA_RTCP_SR
Marvin Scholz [Fri, 25 Apr 2025 16:19:04 +0000 (18:19 +0200)]
avformat: rtsp: export AV_PKT_DATA_RTCP_SR

11 days agoavcodec: add AV_PKT_DATA_RTCP_SR side data type
Marvin Scholz [Fri, 25 Apr 2025 16:19:04 +0000 (18:19 +0200)]
avcodec: add AV_PKT_DATA_RTCP_SR side data type

11 days agolavf: add and use AVRTCPSenderReport struct
Marvin Scholz [Fri, 25 Apr 2025 16:18:21 +0000 (18:18 +0200)]
lavf: add and use AVRTCPSenderReport struct

This will be used in a future commit to expose the SR as side-data.

11 days agolavf/rtpdec: fix RTCP SR packet length check
Marvin Scholz [Thu, 24 Apr 2025 18:36:52 +0000 (20:36 +0200)]
lavf/rtpdec: fix RTCP SR packet length check

The minimum valid packet length is 28, given that the length includes
the packet header.

This didn't cause any issues so far as the code did not care about the
last two fields in the SR section, but will be relevant in a future
commit.

11 days agoavformat/tls_openssl: use SSL_CTX_set_min_proto_version
Marvin Scholz [Wed, 25 Jun 2025 19:55:41 +0000 (21:55 +0200)]
avformat/tls_openssl: use SSL_CTX_set_min_proto_version

Using SSL_CTX_set_options to disallow specific versions is
discouraged by the documentation, which recommends to use
SSL_CTX_set_min_proto_version instead.

11 days agoavformat/tls_openssl: use TLS_[client|server]_method
Marvin Scholz [Wed, 25 Jun 2025 19:46:34 +0000 (21:46 +0200)]
avformat/tls_openssl: use TLS_[client|server]_method

SSLv23_*_method was just a define for these anyway since OpenSSL 1.1.0
and the old functions are deprecated.