Niklas Haas
fe2691b3bb
avfilter/framepool: stack-allocate FFFramePool
...
Saves a pointless free/alloc cycle on reinit. For the vast majority of filter
links, this going to be allocated anyway; and on the occasions that it's not,
the waste is marginal.
Signed-off-by: Niklas Haas <git@haasn.dev >
2026-04-10 15:12:18 +02:00
Niklas Haas
ad7956d5bb
avfilter/{audio,video}: switch to ff_frame_pool_*_reinit()
...
Signed-off-by: Niklas Haas <git@haasn.dev >
2026-04-10 15:12:17 +02:00
Niklas Haas
143b810e75
avfilter/framepool: remove alloc argument
...
Not really needed by anything and makes this API a bit clunkier to extend.
Signed-off-by: Niklas Haas <git@haasn.dev >
2026-04-10 15:12:17 +02:00
James Almer
eb36dce742
avfilter/video: reduce potential amount of pool reinitializations
...
Given we now align both dimensions when allocating buffers, don't reinitialize
the pool when dealing with dimension changes that will not affect the existing
pool size.
Signed-off-by: James Almer <jamrial@gmail.com >
2026-02-17 20:19:01 -03:00
Niklas Haas
eea99a77ed
avfilter: add link negotiation for AVAlphaMode
2025-09-02 17:06:08 +02:00
Anton Khirnov
6d75d44d90
lavfi: drop internal.h
...
All that remains in it are things that belong in avfilter_internal.h.
Move them there and remove internal.h
2024-08-19 21:48:04 +02:00
Anton Khirnov
1afe42852b
lavfi/internal: move functions used by filters to filters.h
...
internal.h currently mixes interfaces intended to be used by filters
with those that should be limited to generic filter- or graph-level
code.
2024-08-19 21:45:25 +02:00
Anton Khirnov
7f17e0e6dd
lavfi: move AVFilterLink.hw_frames_ctx to FilterLink
2024-08-15 19:34:24 +02:00
James Almer
41307ff3e9
avfilter/video: don't zero allocated buffers if memory poisoning is used
...
Same as in avcodec/get_buffer.c
Should help in debugging use of uninitialized memory.
Signed-off-by: James Almer <jamrial@gmail.com >
2024-08-12 11:41:38 -03:00
Andreas Rheinhardt
790f793844
avutil/common: Don't auto-include mem.h
...
There are lots of files that don't need it: The number of object
files that actually need it went down from 2011 to 884 here.
Keep it for external users in order to not cause breakages.
Also improve the other headers a bit while just at it.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2024-03-31 00:08:43 +01:00
Andreas Rheinhardt
32538dafca
avfilter/avfilter: Move frame_pool to FilterLinkInternal
...
Avoids ugly casts when uninitializing.
(One could actually avoid allocating this separately if one
were willing to expose FFFramePool to those files including
link_internal.h.)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2024-02-18 16:38:09 +01:00
Niklas Haas
8c7934f73a
avfilter: add negotiation API for color space/range
...
Motivated by YUVJ removal. This change will allow full negotiation
between color ranges and matrices as needed. By default, all ranges and
matrices are marked as supported.
Because grayscale formats are currently handled very inconsistently (and
in particular, assumed as forced full-range by swscale), we exclude them
from negotiation altogether for the time being, to get this API merged.
After filter negotiation is available, we can relax the
grayscale-is-forced-jpeg restriction again, when it will be more
feasible to do so without breaking a million test cases.
Note that this commit updates one FATE test as a consequence of the
sanity fallback for non-YUV formats. In particular, the test case now
writes rgb24(pc, gbr/unspecified/unspecified) to the matroska file,
instead of rgb24(unspecified/unspecified/unspecified) as before.
2023-12-31 13:35:03 -08:00
Andreas Rheinhardt
2f62a433f2
avfilter: Deduplicate default video inputs/outputs
...
Lots of video filters use a very simple input or output:
An array with a single AVFilterPad whose name is "default"
and whose type is AVMEDIA_TYPE_VIDEO; everything else is unset.
Given that we never use pointer equality for inputs or outputs*,
we can simply use a single AVFilterPad instead of dozens; this
even saves .data.rel.ro (8312B here) as well as relocations.
*: In fact, several filters (like the filters in vf_lut.c)
already use the same outputs; furthermore, ff_filter_alloc()
duplicates the input and output pads so that we do not even
work with the pads directly.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2023-08-07 09:21:13 +02:00
Andreas Rheinhardt
859b31de50
avfilter/video: Fix newline in trace output
...
Forgotten in 7e350379f8 .
Reviewed-by: Nicolas George <george@nsup.org >
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2022-09-14 21:49:00 +02:00
Michael Niedermayer
d740782701
avfilter/video: Add ff_default_get_video_buffer2() to set specific alignment
...
Reviewed-by: Paul B Mahol <onemda@gmail.com >
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc >
2022-04-21 22:42:20 +02:00
Zhao Zhili
303ddab7ea
avfilter/video: fix shadowed variable
...
Signed-off-by: Anton Khirnov <anton@khirnov.net >
2022-03-22 18:49:30 +01:00
Paul B Mahol
17a59a634c
avfilter/framepool: fix alignment requirements for audio and video filters
2022-02-22 09:22:03 +01:00
Andreas Rheinhardt
1aa640c7d7
avfilter/internal: Combine get_(audio|video)_buffer into union
...
These fields are mutually exclusive, so putting them in a union
is possible and makes AVFilterPad smaller.
Reviewed-by: Nicolas George <george@nsup.org >
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2021-08-17 19:13:16 +02:00
Andreas Rheinhardt
6e66e2c321
avfilter/internal: Don't include framepool.h, thread.h
...
They are not used by the header at all and only used by very few files;
so include the headers in their users instead of in internal.h.
Reviewed-by: Nicolas George <george@nsup.org >
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2021-08-04 03:03:25 +02:00
Andreas Rheinhardt
2934a4b9a5
Remove unnecessary avassert.h inclusions
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2021-07-22 15:02:30 +02:00
Andreas Rheinhardt
4608f7cc6a
Remove unnecessary mem.h inclusions
...
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com >
2021-07-22 14:47:57 +02:00
Paul B Mahol
4754d70a23
avfilter/video: pick sar from link
...
It should not be needed for each filter that sets sample aspect ratio
to set it explicitly also for each and every frame, instead that is
automatically done in get_buffer call.
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2017-12-23 10:48:14 +01:00
Matthieu Bouron
b265e5ba50
Merge commit '7433feb82f75827884d909de34d341a1c4401d4a'
...
* commit '7433feb82f75827884d909de34d341a1c4401d4a':
lavfi: Make default get_video_buffer work with hardware frames
Merged-by: Matthieu Bouron <matthieu.bouron@gmail.com >
2017-03-29 23:12:00 +02:00
Matthieu Bouron
b1f68f00b1
lavfi/framepool: rename FFVideoFramePool to FFFramePool
2017-01-12 10:22:52 +01:00
Mark Thompson
7433feb82f
lavfi: Make default get_video_buffer work with hardware frames
2016-11-02 20:07:15 +00:00
Matthieu Bouron
0c59d40ae0
lavfi: use a video frame pool for each link of the filtergraph
2015-12-15 10:35:41 +01:00
Hendrik Leppkes
033764e015
Merge commit 'f6974fe651d29ef6eb68d66d73f7b6c011062aa0'
...
* commit 'f6974fe651d29ef6eb68d66d73f7b6c011062aa0':
lavfi: Drop deprecated AVFilterBuffer* code
Merged-by: Hendrik Leppkes <h.leppkes@gmail.com >
2015-09-05 16:22:03 +02:00
Vittorio Giovara
f6974fe651
lavfi: Drop deprecated AVFilterBuffer* code
...
Deprecated in 11/2012.
2015-08-28 16:01:16 +02:00
Michael Niedermayer
5a22877e9d
Merge commit '67a7695c142561fe60f21adffe89c133385d37c9'
...
* commit '67a7695c142561fe60f21adffe89c133385d37c9':
avfilter: Remove unused variable from ff_get_video_buffer()
Conflicts:
libavfilter/video.c
Merged-by: Michael Niedermayer <michaelni@gmx.at >
2014-08-20 00:23:15 +02:00
Diego Biurrun
67a7695c14
avfilter: Remove unused variable from ff_get_video_buffer()
2014-08-19 09:50:18 -07:00
Paul B Mahol
b8b398027c
avfilter/video: remove commented out cruft
...
Signed-off-by: Paul B Mahol <onemda@gmail.com >
2013-09-13 19:17:56 +00:00
Michael Niedermayer
a05a44e205
Merge commit '7e350379f87e7f74420b4813170fe808e2313911'
...
* commit '7e350379f87e7f74420b4813170fe808e2313911':
lavfi: switch to AVFrame.
Conflicts:
doc/filters.texi
libavfilter/af_ashowinfo.c
libavfilter/audio.c
libavfilter/avfilter.c
libavfilter/avfilter.h
libavfilter/buffersink.c
libavfilter/buffersrc.c
libavfilter/buffersrc.h
libavfilter/f_select.c
libavfilter/f_setpts.c
libavfilter/fifo.c
libavfilter/split.c
libavfilter/src_movie.c
libavfilter/version.h
libavfilter/vf_aspect.c
libavfilter/vf_bbox.c
libavfilter/vf_blackframe.c
libavfilter/vf_delogo.c
libavfilter/vf_drawbox.c
libavfilter/vf_drawtext.c
libavfilter/vf_fade.c
libavfilter/vf_fieldorder.c
libavfilter/vf_fps.c
libavfilter/vf_frei0r.c
libavfilter/vf_gradfun.c
libavfilter/vf_hqdn3d.c
libavfilter/vf_lut.c
libavfilter/vf_overlay.c
libavfilter/vf_pad.c
libavfilter/vf_scale.c
libavfilter/vf_showinfo.c
libavfilter/vf_transpose.c
libavfilter/vf_vflip.c
libavfilter/vf_yadif.c
libavfilter/video.c
libavfilter/vsrc_testsrc.c
libavfilter/yadif.h
Following are notes about the merge authorship and various technical details.
Michael Niedermayer:
* Main merge operation, notably avfilter.c and video.c
* Switch to AVFrame:
- afade
- anullsrc
- apad
- aresample
- blackframe
- deshake
- idet
- il
- mandelbrot
- mptestsrc
- noise
- setfield
- smartblur
- tinterlace
* various merge changes and fixes in:
- ashowinfo
- blackdetect
- field
- fps
- select
- testsrc
- yadif
Nicolas George:
* Switch to AVFrame:
- make rawdec work with refcounted frames. Adapted from commit
759001c534 by Anton Khirnov.
Also, fix the use of || instead of | in a flags check.
- make buffer sink and src, audio and video work all together
Clément Bœsch:
* Switch to AVFrame:
- aevalsrc
- alphaextract
- blend
- cellauto
- colormatrix
- concat
- earwax
- ebur128
- edgedetect
- geq
- histeq
- histogram
- hue
- kerndeint
- life
- movie
- mp (with the help of Michael)
- overlay
- pad
- pan
- pp
- pp
- removelogo
- sendcmd
- showspectrum
- showwaves
- silencedetect
- stereo3d
- subtitles
- super2xsai
- swapuv
- thumbnail
- tile
Hendrik Leppkes:
* Switch to AVFrame:
- aconvert
- amerge
- asetnsamples
- atempo
- biquads
Matthieu Bouron:
* Switch to AVFrame
- alphamerge
- decimate
- volumedetect
Stefano Sabatini:
* Switch to AVFrame:
- astreamsync
- flite
- framestep
Signed-off-by: Michael Niedermayer <michaelni@gmx.at >
Signed-off-by: Nicolas George <nicolas.george@normalesup.org >
Signed-off-by: Clément Bœsch <ubitux@gmail.com >
Signed-off-by: Hendrik Leppkes <h.leppkes@gmail.com >
Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com >
Signed-off-by: Stefano Sabatini <stefasab@gmail.com >
Merged-by: Michael Niedermayer <michaelni@gmx.at >
2013-03-10 01:40:35 +01:00
Anton Khirnov
7e350379f8
lavfi: switch to AVFrame.
...
Deprecate AVFilterBuffer/AVFilterBufferRef and everything related to it
and use AVFrame instead.
2013-03-08 07:37:18 +01:00
Nicolas George
82541d8330
lavfi: merge all filtering code into ff_filter_frame.
2013-01-01 15:19:04 +01:00
Nicolas George
a978c04e22
lavfi/video: ensure that filter_frame is called.
...
This is a temporary workaround until all filters have been
upgraded to filter_frame and the framework can forget completely
about start_frame/draw_slice/end_frame.
2012-12-30 18:29:57 +01:00
Michael Niedermayer
c0c0b19644
lavfi: remove some draw_slice related code that has become unneeded
...
Reviewed-by: Nicolas George <nicolas.george@normalesup.org >
Signed-off-by: Michael Niedermayer <michaelni@gmx.at >
2012-12-30 16:58:50 +01:00
Clément Bœsch
33e0eb5109
lavfi/video: remove unused ff_inplace_start_frame().
2012-12-26 21:30:45 +01:00
Michael Niedermayer
db6e960450
lavfi: drop ff_null_start_frame/end_frame/draw_slice.
...
The functions have become unused
Signed-off-by: Michael Niedermayer <michaelni@gmx.at >
2012-12-13 03:38:16 +01:00
Michael Niedermayer
015c2b4066
libavfilter: default to filter_frame when neither it nor start/slice/end is set.
...
this is needed for vf_null and a few others.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at >
2012-11-29 02:08:49 +01:00
Michael Niedermayer
3ed483cdfa
libavfilter: Support using filter_frame for video
...
With this we can mix filters using filter_frame OR start/draw_slice/end
Signed-off-by: Michael Niedermayer <michaelni@gmx.at >
2012-11-28 16:43:34 +01:00
Anton Khirnov
565e4993c6
lavfi: merge start_frame/draw_slice/end_frame
...
Any alleged performance benefits gained from the split are purely
mythological and do not justify added code complexity.
2012-11-28 08:50:19 +01:00
Hendrik Leppkes
79393a8363
Replace usage of the deprecated av_pix_fmt_descriptors array with av_pix_fmt_desc_get
...
Signed-off-by: Michael Niedermayer <michaelni@gmx.at >
2012-10-20 18:00:13 +02:00
Michael Niedermayer
5d2b885074
lavfi: limit matching w/h/fmt asserts to non scale filters
...
This fixes a regression with the scale filters input changing.
In the long run filters should get a flag to indicate support of this
and then this flag be used here.
But the regression should not be left standing until thats done.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at >
2012-10-17 00:06:12 +02:00
Michael Niedermayer
13afee951a
Merge commit '59ee9f78b0cc4fb84ae606fa317d8102ad32a627'
...
* commit '59ee9f78b0cc4fb84ae606fa317d8102ad32a627':
lavfi: do not use av_pix_fmt_descriptors directly.
Conflicts:
libavfilter/buffersrc.c
libavfilter/drawutils.c
libavfilter/filtfmts.c
libavfilter/vf_ass.c
libavfilter/vf_boxblur.c
libavfilter/vf_drawtext.c
libavfilter/vf_lut.c
libavfilter/vf_pad.c
libavfilter/vf_scale.c
libavfilter/vf_showinfo.c
libavfilter/vf_transpose.c
Merged-by: Michael Niedermayer <michaelni@gmx.at >
2012-10-12 17:04:58 +02:00
Anton Khirnov
59ee9f78b0
lavfi: do not use av_pix_fmt_descriptors directly.
2012-10-12 12:45:39 +02:00
Michael Niedermayer
ac627b3d38
Merge commit '716d413c13981da15323c7a3821860536eefdbbb'
...
* commit '716d413c13981da15323c7a3821860536eefdbbb':
Replace PIX_FMT_* -> AV_PIX_FMT_*, PixelFormat -> AVPixelFormat
Conflicts:
doc/examples/muxing.c
ffmpeg.h
ffmpeg_filter.c
ffmpeg_opt.c
ffplay.c
ffprobe.c
libavcodec/8bps.c
libavcodec/aasc.c
libavcodec/aura.c
libavcodec/avcodec.h
libavcodec/avs.c
libavcodec/bfi.c
libavcodec/bmp.c
libavcodec/bmpenc.c
libavcodec/c93.c
libavcodec/cscd.c
libavcodec/cyuv.c
libavcodec/dpx.c
libavcodec/dpxenc.c
libavcodec/eatgv.c
libavcodec/escape124.c
libavcodec/ffv1.c
libavcodec/flashsv.c
libavcodec/fraps.c
libavcodec/h264.c
libavcodec/huffyuv.c
libavcodec/iff.c
libavcodec/imgconvert.c
libavcodec/indeo3.c
libavcodec/kmvc.c
libavcodec/libopenjpegdec.c
libavcodec/libopenjpegenc.c
libavcodec/libx264.c
libavcodec/ljpegenc.c
libavcodec/mjpegdec.c
libavcodec/mjpegenc.c
libavcodec/motionpixels.c
libavcodec/mpeg12.c
libavcodec/mpeg12enc.c
libavcodec/mpeg4videodec.c
libavcodec/mpegvideo_enc.c
libavcodec/pamenc.c
libavcodec/pcxenc.c
libavcodec/pgssubdec.c
libavcodec/pngdec.c
libavcodec/pngenc.c
libavcodec/pnm.c
libavcodec/pnmdec.c
libavcodec/pnmenc.c
libavcodec/ptx.c
libavcodec/qdrw.c
libavcodec/qpeg.c
libavcodec/qtrleenc.c
libavcodec/raw.c
libavcodec/rawdec.c
libavcodec/rl2.c
libavcodec/sgidec.c
libavcodec/sgienc.c
libavcodec/snowdec.c
libavcodec/snowenc.c
libavcodec/sunrast.c
libavcodec/targa.c
libavcodec/targaenc.c
libavcodec/tiff.c
libavcodec/tiffenc.c
libavcodec/tmv.c
libavcodec/truemotion2.c
libavcodec/utils.c
libavcodec/vb.c
libavcodec/vp3.c
libavcodec/wnv1.c
libavcodec/xl.c
libavcodec/xwddec.c
libavcodec/xwdenc.c
libavcodec/yop.c
libavdevice/v4l2.c
libavdevice/x11grab.c
libavfilter/avfilter.c
libavfilter/avfilter.h
libavfilter/buffersrc.c
libavfilter/drawutils.c
libavfilter/formats.c
libavfilter/src_movie.c
libavfilter/vf_ass.c
libavfilter/vf_drawtext.c
libavfilter/vf_fade.c
libavfilter/vf_format.c
libavfilter/vf_hflip.c
libavfilter/vf_lut.c
libavfilter/vf_overlay.c
libavfilter/vf_pad.c
libavfilter/vf_scale.c
libavfilter/vf_transpose.c
libavfilter/vf_yadif.c
libavfilter/video.c
libavfilter/vsrc_testsrc.c
libavformat/movenc.c
libavformat/mxf.h
libavformat/utils.c
libavformat/yuv4mpeg.c
libavutil/imgutils.c
libavutil/pixdesc.c
libswscale/input.c
libswscale/output.c
libswscale/swscale_internal.h
libswscale/swscale_unscaled.c
libswscale/utils.c
libswscale/x86/swscale_template.c
libswscale/x86/yuv2rgb.c
libswscale/x86/yuv2rgb_template.c
libswscale/yuv2rgb.c
Merged-by: Michael Niedermayer <michaelni@gmx.at >
2012-10-08 21:06:57 +02:00
Anton Khirnov
716d413c13
Replace PIX_FMT_* -> AV_PIX_FMT_*, PixelFormat -> AVPixelFormat
2012-10-08 07:13:26 +02:00
Nicolas George
8ad54a44eb
lavfi: check that buffer and link properties match.
2012-09-13 20:09:53 +02:00
Stefano Sabatini
a4cb0af945
lavfi: drop deprecated and pointless avfilter_default_end_frame() function
...
Fix warning when compiling boxblur.
While this is technically a major API break, practically there will be no
one using that function since the filtering API is mostly private, so
that function alone is not usable.
2012-09-09 10:57:28 +02:00
Michael Niedermayer
c9a0f9bf3c
libavfilter: pass QP table through the filter chain
...
Any volunteers to port the pp and spp filters from libmpcodec?
Signed-off-by: Michael Niedermayer <michaelni@gmx.at >
2012-09-07 03:17:28 +02:00