1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-03 05:10:03 +02:00
Commit Graph

11865 Commits

Author SHA1 Message Date
Marton Balint
8d6f3bcb96 avfilter/asrc_sine: increase frequency accuracy
Previously the delta phase was fixed point fractional with 2^32 fractions,
which caused inaccuracies in the output frequency, unless the input
frequency*2^32 was divisable by the sample rate.

This patch improves frequency accuracy by tracking subfractions of the delta
phase fractions. For this we are using a denominator which is a multiple of the
sample rate, making sure that integer frequencies are always accurately
represented.

Signed-off-by: Marton Balint <cus@passwd.hu>
2024-11-29 21:16:22 +01:00
Marton Balint
06247ae746 avfilter/asrc_sine: factorize sampling to a separate context
Signed-off-by: Marton Balint <cus@passwd.hu>
2024-11-29 21:16:22 +01:00
Zhao Zhili
82c208b653 avfilter/textutils: Add missing time_internal.h
This fix build error on Windows with MSVC. We need time_internal.h
for gmtime_r and localtime_r.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2024-11-29 12:30:48 +08:00
Fei Wang
bc991ca048 lavfi/qsvvpp: Copy frame props before modify it
The changes to output frame props in query_frame overlapped since
578ac59887. Move the copy frame props before the changes.

Signed-off-by: Fei Wang <fei.w.wang@intel.com>
2024-11-28 11:13:25 +08:00
Koushik Dutta
ac3f69a4b9 avfilter/scale_vt: implement frame crop
The crop filter has no effect on scale_vt:

-vf crop=100:100,scale_vt=300x300

Hardware frames (AV_PIX_FMT_FLAG_HWACCEL) are expected to use the crop_* properties,
as seen in the implementation vf_crop.c.

Signed-off-by: Koushik Dutta <koushd@gmail.com>
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2024-11-26 11:54:28 +08:00
Koushik Dutta
352333543c avfilter/scale_vt: implement negative width/height aspect ratio sizing
Signed-off-by: Koushik Dutta <koushd@gmail.com>
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2024-11-26 11:26:38 +08:00
Niklas Haas
bcbf3a5630 avfilter/vf_scale: fix off-by-one in loop bounds
Results in over-read of the array. Fortunately, the excess element was
never actually used, but it still triggers ASAN (and could in theory trigger
a segfault).

Fixes: 04ce01df0b
2024-11-25 14:40:49 +01:00
Niklas Haas
04ce01df0b avfilter/vf_scale: switch to new swscale API
Most logic from this filter has been co-opted into swscale itself,
allowing the resulting filter to be substantially simpler as it no
longer has to worry about context initialization, interlacing, etc.

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Niklas Haas <git@haasn.dev>
2024-11-25 11:03:54 +01:00
Marvin Scholz
ecb7232bac avfilter: fix unused variable warning
The ctxi_dst variable is unused outside of the av_assert1,
causing an unused variable warning. The simplest solution
for this is to avoid the intermediate variable here.
2024-11-24 22:11:12 +01:00
Leandro Santiago
69cbda5770 lavfi/vf_drawtext: fix memory management when destroying font face
Ref https://trac.ffmpeg.org/ticket/11152

According to harfbuzz docs, hb_ft_font_set_funcs() does not need to be
called, as, quoted:

```
An #hb_font_t object created with hb_ft_font_create()
is preconfigured for FreeType font functions and does not
require this function to be used.
```

Using this function seems to cause memory management issues between
harfbuzz and freetype, and could be eliminated.

This commit also call hb_ft_font_changed() when the underlying FC_Face
changes size, as stated on hardbuzz:

```
HarfBuzz also provides a utility function called hb_ft_font_changed() that you should call
whenever you have altered the properties of your underlying FT_Face, as well as a hb_ft_get_face()
that you can call on an hb_font_t font object to fetch its underlying FT_Face.
```

Finally, the execution order between hb_font_destroy() and
hb_buffer_destroy() is flipped to match the order of creation of
the respective objects.

Signed-off-by: Leandro Santiago <leandrosansilva@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
2024-11-19 23:50:49 +01:00
Marton Balint
fe18ed3f2a avfilter/f_loop: fix aloop activate logic
The logic did not follow the documented behaviour and that caused skipping of
some audio in the loop and in the leftover buffer.

Example command line which should produce a smooth sine wave for the whole
duration of the output:

ffmpeg -f lavfi -i "sine=r=48000:f=480:d=4" -af "aloop=loop=4:start=48000:size=48000" out.wav

Fixes ticket #11283.

Signed-off-by: Marton Balint <cus@passwd.hu>
2024-11-11 21:56:34 +01:00
Marton Balint
b33a594160 avfilter/f_loop: fix length of aloop leftover buffer
If the audio loop stops inside an audio frame, the leftover buffer contains the
end of the frame, which is not looped. The length supposed to be the part which
was not written to the loop buffer, so we need to drain exactly that number of
bytes from the leftover buffer.

Signed-off-by: Marton Balint <cus@passwd.hu>
2024-11-11 21:56:34 +01:00
James Almer
10c02deccb avfilter/vf_zscale: extend the configuration log message with color space info
And print it in DEBUG level, not TRACE, as it's useful information.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-11-09 19:33:57 -03:00
James Almer
5c8268ac56 avfilter/vf_zscale: remove unecessary argument from realign_frame
Possible since the previous commit.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-11-09 19:33:56 -03:00
James Almer
c8e5c684b3 avfilter/vf_zscale: align the frame buffers
Signed-off-by: James Almer <jamrial@gmail.com>
2024-11-09 19:33:56 -03:00
Pavel Koshevoy
00cf3df03f lavfi/vf_zscale: fix call to av_pix_fmt_count_planes
realign_frame called av_pix_fmt_count_planes with incorrect parameter.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-11-09 19:33:56 -03:00
Pavel Koshevoy
7b302f4db7 lavfi/vf_zscale: fix tmp buffer ptr alignment for zimg_filter_graph_process
Signed-off-by: James Almer <jamrial@gmail.com>
2024-11-09 19:33:56 -03:00
James Almer
f15fc27db5 avfilter/framepool: align the frame buffers
And not just the linesizes. Use the extra align bytes allocated for this purpose.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-11-09 19:33:56 -03:00
Anton Khirnov
3e9b0f7c01 lavfi/vf_libplacebo: eliminate LibplaceboInput.link
Setting it was broken in 8160178dfc, since
links are not yet set up during init. It is also redundant, as the
struct also stores the input index.

Reported-By: llyyr <llyyr.public@gmail.com>
2024-11-09 02:45:58 +01:00
James Almer
c8438546ff avfilter/vsrc_testsrc: add support for RGB48/RGBA64
Signed-off-by: James Almer <jamrial@gmail.com>
2024-11-06 17:34:32 -03:00
James Almer
165f124129 vsrc_testsrc: add support for x2rgb10le to rgbtestsrc
Signed-off-by: James Almer <jamrial@gmail.com>
2024-11-02 15:01:31 -03:00
Koushik Dutta
0cdcbab9e9 avfilter/scale_cuda: frame crop support
The crop filter has no effect on scale_cuda:

-vf crop=100:100,scale_cuda=100x100

Hardware frames (AV_PIX_FMT_FLAG_HWACCEL) are expected to use the crop_* properties,
as seen in the implementation vf_crop.c.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2024-11-01 17:10:34 +01:00
James Almer
42b748f738 avfilter/vsrc_testsrc: add support for XV48
Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-26 00:04:55 -03:00
James Almer
dfd7acf3ed avfilter/vf_pixdesctest: also take into account undefined alpha components
Ensure those bits are copied, which will result in the output being the same as
the input, where swscale set them to the equivalent of fully opaque.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-21 09:52:58 -03:00
James Almer
8debc5aa41 avfilter/vsrc_testsrc: use the alpha component information for XV3{0,6} and V30X
And add a few more tests to ensure all the pixfmts affected by this change
are tested.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-21 09:52:58 -03:00
arch1t3cht
72e5381123 avfilter/vf_subtitles: Respect YCbCr Matrix header
As specified in libass's ass_types.h, the colors or ASS_Images
should be converted to YCbCr using the matrix/range specified in
the track's YCbCrMatrix field (unless that field is set to YCBCR_NONE,
and defaulting to TV.601 if the header is missing).

This does not affect any subtitles generated or transcoded by ffmpeg,
since these contain a 'YCbCrMatrix: None' header.

Signed-off-by: arch1t3cht <arch1t3cht@gmail.com>
Signed-off-by: rcombs <rcombs@rcombs.me>
2024-10-19 11:08:34 -05:00
James Almer
062fcacc8f avfilter/vsrc_testsrc: fill the xv30le alpha bits
As with other pixel formats, set the undefined alpha bits to opaque.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-17 11:59:30 -03:00
James Almer
5601c5bb2e avfilter/vsrc_testsrc: add support for XV36 and AYUV64
Signed-off-by: James Almer <jamrial@gmail.com>
2024-10-17 11:57:36 -03:00
Anton Khirnov
c034213083 lavfi/vsrc_perlin: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
e0aa644978 lavfi/vsrc_life: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
2094a7256c lavfi/vsrc_life: avoid modifying the context in query_formats()
It is supposed to be free of side effects. Do it in init instead.
2024-10-17 11:00:35 +02:00
Anton Khirnov
d08feb9003 lavfi/vf_zscale: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
6bff95be03 lavfi/vf_weave: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
ab01f0522b lavfi/vf_vpp_qsv: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
e5b530f137 lavfi/vf_vmafmotion: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
73c863fad8 lavfi/vf_v360: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
223327d51a lavfi/vf_untile: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
5d0fbd7145 lavfi/vf_transpose: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
ef4913e30d lavfi/vf_tpad: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
ce5aa74045 lavfi/vf_tile: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
14ece0bf58 lavfi/vf_telecine: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
a18418f39d lavfi/vf_swapuv: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
06292d34de lavfi/vf_swaprect: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
05aad90c69 lavfi/vf_subtitles: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
6ed357ce77 lavfi/vf_stereo3d: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
bdaaddb65c lavfi/vf_stack: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
e2f4c69779 lavfi/vf_shuffleplanes: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
965e9b646e lavfi/vf_showpalette: convert to query_func2() 2024-10-17 11:00:35 +02:00
Anton Khirnov
a96244df77 lavfi/vf_setparams: convert to query_func2() 2024-10-17 11:00:35 +02:00
Lynne
4b128de44a
vulkan: enable selecting a compatible representation of format
When using **integer** images inside shaders, it turns out
that conversion doesn't automatically happen, but we need to
explicitly use the imageviews to get the image exposed as
a suitable representation for the shader.

Finally enables bitexact image representations.
2024-10-16 12:48:15 +02:00