Commit Graph

6286 Commits

Author SHA1 Message Date
Nicolas George c619a4e525 lavfi: make two functions static.
ff_request_frame_to_filter() and ff_filter_frame_to_filter()
are only used in avfilter.c.
2017-01-12 14:06:16 +01:00
Nicolas George ae4650f0b9 lavfi: disallow ff_request_frame for filters using activate.
Having two different functions allows to have stricter tests
and detect errors earlier.
2017-01-12 14:06:16 +01:00
Nicolas George 9eb4c79afd lavfi: add ff_inlink_request_frame(). 2017-01-12 14:06:16 +01:00
Nicolas George d3cb140433 lavfi: move ff_update_link_current_pts() into the utility functions.
It does not change anything for the existing filters and makes
better code fatrorization when future code will use the utility
functions.
2017-01-12 14:06:16 +01:00
Nicolas George 7910127a8e lavfi: cosmetic: remove forward declaration. 2017-01-12 14:06:16 +01:00
Nicolas George 3ff01feda3 lavfi: add AVFilter.activate. 2017-01-12 14:06:16 +01:00
Nicolas George db4a71c0ff lavfi: use the consume helpers in ff_filter_frame_to_filter(). 2017-01-12 14:06:16 +01:00
Nicolas George d360ddf03b lavfi: add helpers to consume frames from link FIFOs. 2017-01-12 14:06:16 +01:00
Nicolas George 2e5af443c3 lavfi: pass min explicitly to samples_ready(). 2017-01-12 14:06:16 +01:00
Nicolas George e7e4c8dfbe lavfi: add ff_inlink_evaluate_timeline_at_frame(). 2017-01-12 14:06:16 +01:00
Nicolas George 0e3d2496e2 lavfi: add ff_inlink_process_commands(). 2017-01-12 14:06:16 +01:00
Nicolas George 846f142134 lavfi: merge two variables after a recent commit. 2017-01-12 14:06:16 +01:00
Nicolas George 28c62df672 lavfi: implement ff_inlink_make_frame_writable().
Unlike av_frame_is_writable(), it uses the link's alloc callback,
making direct rendering possible.

The code comes from ff_filter_frame_framed(), moved with mostly
trivial changes.
2017-01-12 14:06:16 +01:00
Nicolas George 918891e146 lavfi: export ff_filter_set_ready() to the library. 2017-01-12 14:06:16 +01:00
Nicolas George 4c24f3ac16 lavfi: add ff_inlink_acknowledge_status().
Also introduce libavfilter/filters.h for all functions needed
to implement filters.
2017-01-12 14:06:16 +01:00
Nicolas George 485617ea0f lavfi: document that AVFilterLink is not for applications. 2017-01-12 14:06:16 +01:00
Nicolas George e9ecada1d4 lavfi/tests/filtfmts: include internal.h. 2017-01-12 14:06:16 +01:00
Nicolas George dbe9dbed31 lavfi/buffersink: add accessors for the stream properties.
av_buffersink_get_frame_rate() did already exist; its argument becomes const.
2017-01-12 14:06:16 +01:00
Nicolas George 0b66c456f9 lavfi, ffmpeg: simplify filter names.
The names are only used for technical output and debugging.
Make them similar to C identifiers for easier quick reading
of debug dumps.
2017-01-12 14:06:16 +01:00
Matthieu Bouron e1f4971209 lavfi: use an audio frame pool for each link of the filtergraph 2017-01-12 10:22:52 +01:00
Matthieu Bouron b1ed7957b8 lavfi/framepool: cosmetic style fixes 2017-01-12 10:22:52 +01:00
Matthieu Bouron e2d336cf64 lavfi/framepool: re-indent after previous commit 2017-01-12 10:22:52 +01:00
Matthieu Bouron eb3368178e lavfi/framepool: add audio support 2017-01-12 10:22:52 +01:00
Matthieu Bouron b1f68f00b1 lavfi/framepool: rename FFVideoFramePool to FFFramePool 2017-01-12 10:22:52 +01:00
Steven Liu 184c13f64a avfilter/vf_libopencv: fix resource leak in read_shape_frame_filter
CID: 1324298
add a label when error goto the label to release resource

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2017-01-11 09:59:55 +08:00
Paul B Mahol 7aef56864c avfilter/af_sofalizer: speed and clean up fast convolution a little
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-01-09 18:38:25 +01:00
Paul B Mahol 0ddc24d232 avfilter/af_dynaudnorm: fix hang with too short input
The only thing we can do at such point is return samples unchanged.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-01-08 20:42:17 +01:00
Clément Bœsch 27627c281e lavfi/selectivecolor: add a link to algorithm explanations 2017-01-07 14:25:57 +01:00
Michael Niedermayer bc6b53ae99 avfilter/asrc_flite: Fix textbuf leak
Fixes CID1244189

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-01-06 16:26:05 +01:00
Paul B Mahol 520c0736fd avfilter/vf_shuffleframes: allow also dropping frames
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-01-06 12:27:46 +01:00
Paul B Mahol 72d6101510 avfilter/avf_aphasemeter: fix memleaks
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2017-01-04 13:15:19 +01:00
Michael Niedermayer 3d8a8fd27e avfilter/vf_pad: Fix segfault if reconfiguration fails
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-01-02 18:42:31 +01:00
Clément Bœsch 771b3a956e lavfi/selectivecolor: rename adjust_range to scale
This variable corresponds to the final scale of the adjustement for a
given color range.
2016-12-31 13:01:04 +01:00
Michael Niedermayer ffc3337e0b avfilter/vf_pad: Add eval=frame support
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-12-30 02:29:19 +01:00
Paul B Mahol 49abd5dbb8 avfilter/avf_aphasemeter: make video output optional
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-28 17:03:57 +01:00
Clément Bœsch afaaf8db18 lavfi/selectivecolor: simplify crazy mid val computations 2016-12-27 23:56:23 +01:00
Clément Bœsch 571a360157 lavfi/transpose: add missing const options flags
Fixes ffmpeg -h filter=transpose
2016-12-27 23:49:44 +01:00
Marton Balint 0db48ee425 avfilter/af_amerge: properly handle unknown input layouts
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
2016-12-25 21:10:03 +01:00
Paul B Mahol c6c888e996 avfilter/vf_w3fdif: add >8 but <16 bit support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-25 09:50:36 +01:00
Nicolas George 0ff5567a30 lavfi/buffersrc: push the frame deeper if requested.
Reduce peak memory consumption with ffmpeg in certain cases.
2016-12-24 13:18:03 +01:00
Nicolas George 3b64e3ea45 lavf/framesync: detect EOF immediately.
Fix an infinite loop in forward_status_change().
2016-12-24 13:18:02 +01:00
James Almer e1b8271949 avfilter/framequeue: add missing check for ASSERT_LEVEL
Signed-off-by: James Almer <jamrial@gmail.com>
2016-12-24 01:56:24 -03:00
Paul B Mahol 9b26bf7e2a avfilter/vf_deband: do not use uninitialized value
Fixes coverity report.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-23 18:53:20 +01:00
Nicolas George 373f21a911 lavfi: avfilter_graph_request_oldest: request a frame again before returning.
With min_samples, if a frame arrives but is too small, it clears
frame_wanted_out. In most cases, the destination filter would be
activated again later because of frame_wanted_out on its own
outputs, but not sinks.
avfilter_graph_request_oldest() is doing the work of the sink
itself, and is therefore allowed to use frame_blocked_in.
2016-12-23 15:21:43 +01:00
Nicolas George 8156b5ac94 avfilter/af_amerge: detect EOF immediately
Fix an infinite loop in forward_status_change().

Signed-off-by: Nicolas George <george@nsup.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
2016-12-23 03:47:43 +01:00
Paul B Mahol fdcb7a85cf avfilter/vf_deband: add planes coupling mode
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-22 21:51:44 +01:00
Nicolas George ff8b17c998 lavfi: take_samples: free frames after taking all samples. 2016-12-22 10:35:48 +01:00
Paul B Mahol 9933579a9b avfilter/vf_psnr: add gray10 and gray12 support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-21 21:37:22 +01:00
Nicolas George bec8ea20c8 lavfi/framequeue: avoid empty structs.
Fix compilation on MSVC.
2016-12-20 09:37:25 +01:00
Pavel Koshevoy 4240e5b047 lavfi/atempo: avoid false triggering an assertion failure
Steps to reproduce:
./ffmpeg_g -f s16be -i /dev/null -af atempo=0.5 -y /tmp/atempo.wav

Signed-off-by: Marton Balint <cus@passwd.hu>
2016-12-19 21:59:13 +01:00
Nicolas George 02aa0701ae lavfi: make filter_frame non-recursive.
A lot of changes happen at the same time:

- Add a framequeue fifo to AVFilterLink.

- split AVFilterLink.status into status_in and status_out: requires
  changes to the few filters and programs that use it directly
  (f_interleave, split, filtfmts).

- Add a field ready to AVFilterContext, marking when the filter is ready
  and its activation priority.

- Add flags to mark blocked links.

- Change ff_filter_frame() to enqueue the frame.

- Change all filtering functions to update the ready field and the
  blocked flags.

- Update ff_filter_graph_run_once() to use the ready field.

- buffersrc: always push the frame immediately.
2016-12-18 10:38:52 +01:00
Nicolas George 62b11db0a0 lavfi: add FFFrameQueue API. 2016-12-18 10:38:52 +01:00
Paul B Mahol 334fad3645 avfilter/vf_ssim: add >8 bit depth suppport
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-17 16:33:16 +01:00
Paul B Mahol 745f4bcc2c avfilter/vsrc_testsrc: draw_bar: make sure width is not negative
Reported-by: Josh de Kock
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-15 16:03:48 +01:00
Paul B Mahol 458fbee221 avfilter/af_sofalizer: warn if user gives unknown channel names
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-14 22:47:38 +01:00
Marton Balint 265d45183b avfilter/avfilter: fix filtering frames with unknown channel layouts for filters needing writable frames
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
2016-12-13 09:57:10 +01:00
Marton Balint df694a5e9d avfilter/af_ashowinfo: properly show input channel layout for unknown channel layouts
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
2016-12-10 11:57:12 +01:00
Marton Balint 01a19f77ca avfilter/af_channelmap: add support for unknown input channel layouts
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
2016-12-10 11:57:11 +01:00
Marton Balint bffc2bcd75 avfilter/af_atempo: add support for unknown channel layouts
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
2016-12-10 11:57:11 +01:00
Marton Balint 7ceb9e6b11 avfilter/formats: allow unknown channel layouts by default
Since the default in the libav fork is to only allow known layouts, making
unknown layouts allowed by default here can be a security risk for filters
directly merged from libav. However, usually it is simple to detect such cases,
use of av_get_channel_layout_nb_channels is a good indicator, so I suggest we
change this regardless.

See http://ffmpeg.org/pipermail/ffmpeg-devel/2016-November/203204.html.

This patch indirectly adds unknown channel layout support for filters where
query_formats is not specified:

abench
afifo
ainterleave
anullsink
apad
aperms
arealtime
aselect
asendcmd
asetnsamples
asetpts
asettb
ashowinfo
azmq

It introduces a query_formats callback for the asyncts filter, which only
supports known channel layouts since it is using libavresample.

And it removes .query_formats callback from filters where it was only there to
support unknown layouts, as this is now the default:

aloop
ametadata
anull
asidedata
asplit
atrim

Acked-by: Nicolas George <george@nsup.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
2016-12-10 11:57:11 +01:00
Paul B Mahol a251149833 avfilter/vf_deband: fix silly mistakes
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-08 21:29:58 +01:00
Srinath K R 4df5a6a26a avfilter/vf_hwupload_cuda: Add min/max limits for the 'device' option
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-12-08 11:11:26 +01:00
Michael Niedermayer 7d1b1b660b avfilter/vf_premultiply: remove redundant semicolons
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-12-02 19:37:00 +01:00
Paul B Mahol 6e713841e8 avfilter: add premultiply filter
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-12-01 22:12:21 +01:00
Carl Eugen Hoyos d44af9a38e lavfi: Fix aix compilation.
Rename hz in af_apulsator.c and avf_showspectrum.c as hertz.

The aix header sys/m_param.h defines hz as __hz.
2016-12-01 09:53:38 +01:00
Timo Rothenpieler 7dafb3a25a avfilter/vf_hwupload_cuda: fix potential leak 2016-11-30 12:36:23 +01:00
Timo Rothenpieler 88281a5256 avfilter/vf_scale_npp: check ff_set_common_formats return value 2016-11-30 12:36:23 +01:00
Miroslav Slugeň 1d056dd855 avfilter/vf_scale_npp: move aspect ratio correction after av_frame_copy_props
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2016-11-30 12:36:23 +01:00
Paul B Mahol 9e9c2276c3 avfilter/vf_masked*: add gray10 and gray12 support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-11-29 16:50:38 +01:00
Paul B Mahol c9dcd25288 avfilter/vf_bitplanenoise: add gray10 and gray12 suppport
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-11-29 16:32:33 +01:00
Paul B Mahol 46752d6b12 avfilter/vf_extractplanes: add extract support for 10bit and 12bit formats
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-11-29 14:50:28 +01:00
Paul B Mahol 57ef0f0f17 avfilter/vf_waveform: add gray10 and gray12 support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-11-29 11:34:48 +01:00
Vittorio Giovara afb84857bf vf_colorspace: Forbid odd dimensions
This prevents writing past bounds.

Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2016-11-28 11:24:09 -05:00
Clément Bœsch 5d7be07a8b lavfi/f_ebur128: relicense to LGPL
All copyright holders have agreed to the relicensing.

Approved-by: Andreas Cadhalpun <andreas.cadhalpun@googlemail.com>
Approved-by: David Sedacca <sedacca@comcast.net>
Approved-by: Ganesh Ajjanagadde <gajjanag@mit.edu>
Approved-by: Jean First <jeanfirst@gmail.com>
Approved-by: Kyle Swanson <k@ylo.ph>
Approved-by: Michael Niedermayer <michael@niedermayer.cc>
Approved-by: Nicolas George <george@nsup.org>
Approved-by: Paul B Mahol <onemda@gmail.com>
Approved-by: Thilo Borgmann <thilo.borgmann@mail.de>
2016-11-27 20:46:20 +01:00
Paul B Mahol 4719e563a4 avfilter/vf_zscale: export approximate gamma option and enable it by default
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-11-27 11:43:54 +01:00
Wan-Teh Chang dceac9a4a7 avfilter/tests/.gitignore: add integral
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-11-24 21:10:37 +01:00
Moritz Barsnick 0700d02a69 lavfi/pan: allow negative gain parameters also for other inputs than the first named
Expands the parser to also accept the separator '-' in addition to
'+', and take the negative sign into consideration.

The optional sign for the first factor in the expression is already
covered by parsing for an integer.

Signed-off-by: Moritz Barsnick <barsnick@gmx.net>
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-11-24 00:54:52 +01:00
Paul B Mahol b96a6e2024 avfilter/vf_zscale: add support for some recent new additions
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2016-11-23 19:02:20 +01:00
Timo Rothenpieler 0faf3c3a25 avfilter/vf_hwupload_cuda: check ff_formats_ref for errors 2016-11-22 10:34:27 +01:00
Timo Rothenpieler b0ca90d7cb avfilter/vf_hwupload_cuda: use new hwdevice allocation API 2016-11-22 10:34:27 +01:00
Timo Rothenpieler a0c9e76942 avfilter/vf_scale_npp: use dynamically loaded CUDA 2016-11-22 10:34:27 +01:00
Kyle Swanson 83b6b434ff lavfi/ebur128: use ff_ prefix
Signed-off-by: Kyle Swanson <k@ylo.ph>
2016-11-13 19:11:07 -06:00
Hendrik Leppkes 1f8e1c209d Merge commit 'c3f113d58488df7594a489bdbb993a69ad47063c'
* commit 'c3f113d58488df7594a489bdbb993a69ad47063c':
  vf_hwdownload: allocate the destination frame for the pool size

Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
2016-11-13 22:35:57 +01:00
Mark Thompson 1a359e5341 vf_scale_vaapi: Respect driver quirks around buffer destruction
(cherry picked from commit 582d4211e0)
2016-11-13 20:39:48 +00:00
Nicolas George 183ce55b0d lavfi: split frame_count between input and output.
AVFilterLink.frame_count is supposed to count the number of frames
that were passed on the link, but with min_samples, that number is
not always the same for the source and destination filters.
With the addition of a FIFO on the link, the difference will become
more significant.

Split the variable in two: frame_count_in counts the number of
frames that entered the link, frame_count_out counts the number
of frames that were sent to the destination filter.
2016-11-13 10:41:16 +01:00
Marton Balint 0f8b852a64 lavfi/ebur128: specify scaling_factor directly
This should fix build with Solaris CC.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Marton Balint <cus@passwd.hu>
2016-11-13 03:11:16 +01:00
Marton Balint 005d058f42 lavfi/loudnorm: add an internal libebur128 library
Also contains the following changes to the library:
- add ff_ prefix to functions
- remove cplusplus defines.
- add FF_ prefix to contants and some structs
- remove true peak calculation feature, since it uses its own resampler, and
  af_loudnorm does not need it.
- remove version info and some fprintf(stderr) functions
- convert to use av_malloc
- always use histogram mode for LRA calculation, otherwise LRA data is slowly
  consuming memory making af_loudnorm unfit for 24/7 operation. It also uses a
  BSD style linked list implementation which is probably not available on all
  platforms. So let's just remove the classic mode which not uses histogram.
- add ff_thread_once for calculating static histogram tables
- convert some functions to void which cannot fail
- remove intrinsics and some unused headers
- add support for planar audio
- remove channel / sample rate changer function, in ffmpeg usually we simply
  alloc a new context
- convert some static variables to defines
- declare static histogram variables as aligned
- convert some initalizations to mallocz
- add window size parameter to init function and remove window size setter
  function
- convert return codes to AVERROR
- fix indentation

Signed-off-by: Marton Balint <cus@passwd.hu>
2016-11-11 19:37:54 +01:00
Alex Agranovsky 88db6c2890 avfilter/vf_drawtext: fixed default/flt formatting ignoring offset parameter
Signed-off-by: Alex Agranovsky <alex@sighthound.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-11-06 23:02:38 +01:00
Michael Niedermayer 0e66dcd733 avfilter/af_volumedetect: Remove dependency on channel layout
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-11-06 16:59:20 +01:00
Muhammad Faiz b4e9252ae3 avfilter/af_firequalizer: add fft2 option
2-channels convolution using complex fft
improves speed significantly

not sure if it should be enabled by default
so disable it by default

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-11-04 09:45:01 +07:00
Vittorio Giovara 6f2ad32a16 vf_colorspace: Add support for film primaries
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2016-11-01 17:47:25 -04:00
Vittorio Giovara 4697f60444 vf_colorspace: Add support for smpte 431/432 (dci/display p3) primaries
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2016-11-01 17:47:25 -04:00
Vittorio Giovara 2996604acd vf_colorspace: Add support for ycgco color space
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2016-11-01 17:47:25 -04:00
Carl Eugen Hoyos bf52730051 lavfi/mergeplanes: Fix little endian yuv formats >8 bit and <16bit.
Fixes remaining cases of ticket #5916.
2016-11-01 12:28:36 +01:00
Carl Eugen Hoyos 1a65d2a3cc lavfi/mergeplanes: Fix >8 bit for big endian formats and yuv4xxp16le.
Fixes part of ticket #5916.
2016-11-01 12:24:57 +01:00
Vittorio Giovara 5a123f1424 vf_colorspace: Add support for iec61966-2.4 (xvYCC) transfer
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-10-31 21:02:12 +01:00
Muhammad Faiz 0686537002 avfilter/avf_showcqt: add bar_t option
custom bargraph transparency

Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
2016-10-29 22:11:58 +07:00
Rodger Combs f53c26c694
lavfi/vf_overlay: support NV12 and NV21
Tested-by: Michael on x86-32/64 linux, mingw, mips/arm qemu linux
2016-10-26 20:13:30 -05:00
Michael Niedermayer 1609935b6c Bump minor versions after 3.2 branchpoint to seperate release
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-10-26 20:52:42 +02:00
Michael Niedermayer 3f3025205f Bump minor versions for 3.2
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2016-10-26 20:52:42 +02:00