Commit Graph

6918 Commits

Author SHA1 Message Date
James Almer ffe661c48c Merge commit 'efd5f1968a55f63d9f02ccb4517fe6a40b60e6d7'
* commit 'efd5f1968a55f63d9f02ccb4517fe6a40b60e6d7':
  qsv: adding Multi Frame Encode support

Merged-by: James Almer <jamrial@gmail.com>
2018-04-13 20:34:23 -03:00
James Almer 278cb85008 Merge commit 'e1f4467aa217237a0e8550c4399f21e35681e797'
* commit 'e1f4467aa217237a0e8550c4399f21e35681e797':
  lavf/qsvvpp: bypass vpp if not needed.

Merged-by: James Almer <jamrial@gmail.com>
2018-04-13 19:58:47 -03:00
Paul B Mahol eb7ee595bb avfilter: add vfrdet filter
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-04-13 08:41:51 +02:00
Maxym Dmytrychenko efd5f1968a qsv: adding Multi Frame Encode support
Starting from API 1.25 helps to improve performance of the simultaneous
encode, 1:N scenario, like:

./avconv  -y -hwaccel qsv -c:v h264_qsv -r 30000/1001 -i
~/bbb_sunflower_1080p_60fps_normal.mp4  -vframes 600 -an \
    -filter_complex "split=2[s1][s2]; [s1]scale_qsv=1280:720[o1];
[s2]scale_qsv=960:540[o2]" \
    -map [o1] -c:v h264_qsv -b:v 3200k -minrate 3200k -maxrate 3200k -f
rawvideo /tmp/3200a.264 \
    -map [o2] -c:v h264_qsv -b:v 1750k -minrate 1750k -maxrate 1750k -f
rawvideo /tmp/1750a.264

Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
2018-04-08 20:47:59 +02:00
Zhong Li e1f4467aa2 lavf/qsvvpp: bypass vpp if not needed.
Currently vpp pipeline is always created, even for the unnecessary
cases such as setting the option "vpp_qsv=w=1280:h=720" for an input
with native resolution 1280x720. Thus introduces unnecessary performance
dropping, so bypass vpp if not needed.

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Maxym Dmytrychenko <maxim.d33@gmail.com>
2018-04-08 20:47:59 +02:00
Josh de Kock ec51d48dc9 lavfi,lavd: add gitignore for generated static component lists
Signed-off-by: Josh de Kock <josh@itanimul.li>
2018-04-05 22:08:53 +01:00
Martin Vignali 86b8fe02e3 avfilter/x86/vf_blend : add SIMD for 16 bit version of
grainextract
grainmerge
average
extremity
negation
2018-04-05 21:46:16 +02:00
Martin Vignali 5619d2cc9e avfilter/x86/vf_blend : reorganize DIFFERENCE macro to reduce line duplication between 8bit and 16 bit version 2018-04-05 21:46:11 +02:00
wm4 7065f7ea68 avutil/pixdesc: deprecate AV_PIX_FMT_FLAG_PSEUDOPAL
PSEUDOPAL pixel formats are not paletted, but carried a palette with the
intention of allowing code to treat unpaletted formats as paletted. The
palette simply mapped the byte values to the resulting RGB values,
making it some sort of LUT for RGB conversion.

It was used for 1 byte formats only: RGB4_BYTE, BGR4_BYTE, RGB8, BGR8,
GRAY8. The first 4 are awfully obscure, used only by some ancient bitmap
formats. The last one, GRAY8, is more common, but its treatment is
grossly incorrect. It considers full range GRAY8 only, so GRAY8 coming
from typical Y video planes was not mapped to the correct RGB values.
This cannot be fixed, because AVFrame.color_range can be freely changed
at runtime, and there is nothing to ensure the pseudo palette is
updated.

Also, nothing actually used the PSEUDOPAL palette data, except xwdenc
(trivially changed in the previous commit). All other code had to treat
it as a special case, just to ignore or to propagate palette data.

In conclusion, this was just a very strange old mechnaism that has no
real justification to exist anymore (although it may have been nice and
useful in the past). Now it's an artifact that makes the API harder to
use: API users who allocate their own pixel data have to be aware that
they need to allocate the palette, or FFmpeg will crash on them in
_some_ situations. On top of this, there was no API to allocate the
pseuo palette outside of av_frame_get_buffer().

This patch not only deprecates AV_PIX_FMT_FLAG_PSEUDOPAL, but also makes
the pseudo palette optional. Nothing accesses it anymore, though if it's
set, it's propagated. It's still allocated and initialized for
compatibility with API users that rely on this feature. But new API
users do not need to allocate it. This was an explicit goal of this
patch.

Most changes replace AV_PIX_FMT_FLAG_PSEUDOPAL with FF_PSEUDOPAL. I
first tried #ifdefing all code, but it was a mess. The FF_PSEUDOPAL
macro reduces the mess, and still allows defining FF_API_PSEUDOPAL to 0.

Passes FATE with FF_API_PSEUDOPAL enabled and disabled. In addition,
FATE passes with FF_API_PSEUDOPAL set to 1, but with allocation
functions manually changed to not allocating a palette.
2018-04-03 17:53:00 +02:00
Josh de Kock 98ebe042e6 lav*,tests: remove several register_all calls
avdevice_register_all() is still required to register devices into
lavf (this is required due to lavd being somewhat of a hack).

Signed-off-by: Josh de Kock <josh@itanimul.li>
2018-04-02 03:26:22 +01:00
James Almer ea59e6a921 avfilter: bump version for the latest API change
And fix the entry in doc/APIchanges

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-01 23:22:18 -03:00
Paul B Mahol 34e2216feb avfilter/af_amix: add weights option
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-04-01 20:36:35 +02:00
Martin Vignali e2f84381c9 avfilter/showvolume : indent after prev commit and add comment 2018-04-01 15:40:05 +02:00
Martin Vignali 2619f7ad2e avfilter/showvolume : move width test for draw volume to the start of the loop 2018-04-01 15:40:01 +02:00
Martin Vignali 56020ebcb0 avfilter/showvolume : move clear picture part to a func
and use it if fade == 0.
2018-04-01 15:39:57 +02:00
enctac 033c178b04 vf_libvmaf: Fix memory leak
Fixes ticket #6967
2018-03-31 20:58:09 -07:00
Michael Niedermayer 1b1c6c787f avfilter/vf_signature: use av_strlcpy()
Fixes: out of array access

Found-by: Kira <kira_cxy@foxmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-01 02:58:51 +02:00
Josh de Kock 8a90b7301d lavfi: add new iteration API
Signed-off-by: Josh de Kock <josh@itanimul.li>
2018-03-31 23:26:30 +01:00
Paul B Mahol eb03acf9f2 avfilter/avf_showvolume: let fade be also exactly 0
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-31 09:27:57 +02:00
Martin Vignali 6fc8e7934a avfilter/showvolume : indent after prev commit 2018-03-31 09:11:43 +02:00
Martin Vignali f06d696939 avfilter/showvolume : calculate fade only if fade < 1. 2018-03-31 09:11:39 +02:00
Martin Vignali 86d10e59b0 avfilter/showvolume : add comment for orientation condition 2018-03-31 09:11:34 +02:00
Nicolas Gaullier a0e39636ac lavfi/silencedetect: Fix missing log at eos
Fixes ticket #6968
2018-03-29 15:45:27 +02:00
Nicolas Gaullier a32c5f4713 lavfi/silencedetect: Fix silence_end accuracy 2018-03-29 15:45:24 +02:00
Nicolas Gaullier d670562771 lavfi/silencedetect: Fix silence_start accuracy 2018-03-29 15:45:20 +02:00
Nicolas Gaullier 1564cfb457 lavfi/silencedetect: Fix when silence_start=0
0 is a valid value for silence_start
2018-03-29 15:44:47 +02:00
Nicolas Gaullier f7f610e544 lavfi/silencedetect: Add mono mode
In mono mode, silence is detected in any single channel instead of all
of them simultaneously
2018-03-29 15:40:58 +02:00
Marton Balint ba240f69d5 avfilter/af_pan: reject expressions referencing the same channel multiple times
Fixes parsing of expressions like c0=c0+c0 or c0=c0|c0=c1.  Previously no
error was thrown and for input channels, only the last gain factor was used,
for output channels the source channel gains were combined.

Signed-off-by: Marton Balint <cus@passwd.hu>
2018-03-29 00:07:39 +02:00
drfer3 673b7b9de9 avfilter/vf_avgblur_opencl: fix error when clSetKernelArg fails
Fixes Coverity CID 1430382.
2018-03-26 22:28:24 +01:00
Mark Thompson 8199155d21 vf_avgblur_opencl: Don't run kernel on pixels outside the image
The output frame size is larger than the image containing a subsampled
plane - use the actual size of the image being written rather than the
dimensions of the intended output frame.

Reviewed-by: Dylan Fernando <dylanf123@gmail.com>
2018-03-26 22:28:24 +01:00
Danil Iashchenko 1648589805 libavfilter: Add OpenCL convolution filter
Behaves like existing convolution filter.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
2018-03-26 22:26:35 +01:00
Paul B Mahol f5be9cd55d avfilter/af_mcompand: make error message more helpful
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-25 23:26:26 +02:00
Paul B Mahol d67586af90 avfilter/avf_showvolume: implement basic rms metering mode
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-23 22:53:13 +01:00
Paul B Mahol 2295e7c30a avfilter/avf_showwaves: add draw mode which controls how single sample is drawn
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-23 19:02:51 +01:00
Paul B Mahol 6305b1830a avfilter/vf_convolution: disable fast path if rdiv/bias are different from defaults
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-23 16:21:38 +01:00
Paul B Mahol 577156b7c1 avfilter/af_channelsplit: add channels option
So user can pick which channels to extract.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-23 10:11:19 +01:00
Mark Thompson 9662b4e3e1 vf_scale_vaapi: Apply cropping rectangle to input 2018-03-22 23:19:04 +00:00
drfer3 7a1c1697b9 lavfi: Add OpenCL avgblur filter
Behaves like the existing avgblur filter, except working on OpenCL
hardware frames. Takes exactly the same options.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
2018-03-22 23:16:25 +00:00
Mark Thompson 9ede430809 lavfi/opencl: Avoid deprecation warnings when built with post-1.2 headers
The intended target is OpenCL 1.2, so disable warnings for APIs deprecated
after that.  This primarily applies to clCreateCommandQueue(), we can't use
the replacement clCreateCommandQueueWithProperties() because it was
introduced in OpenCL 2.0.

Also remove some unnecessary includes from overlay and program filters so
that the define is available at the right moment.
2018-03-22 23:14:14 +00:00
Mark Thompson 70b854a5c4 lavfi/opencl: Derive global work size from plane image sizes
Add a new function to find the global work size given the output image and
the required block alignment, then use it in the overlay, program and unsharp
filters.  Fixes the overlay and unsharp filters applying the kernel to
locations outside the frame when subsampled planes are present.
2018-03-22 23:12:47 +00:00
Paul B Mahol e424cd4122 avfilter/avf_showvolume: add background opacity option
This makes output more visible when overlayed.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-22 23:08:33 +01:00
Paul B Mahol f5633c38c0 avfilter/vf_waveform: add orange graticule
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-21 12:21:42 +01:00
Paul B Mahol 6c44932968 avfilter/vf_waveform: add xflat mode
Also use macros for xflat and aflat mode.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-21 12:21:42 +01:00
Carl Eugen Hoyos 795a0ece0d lavfi/deshake: Check alignment before calling asm init function.
Do this for every frame to make sure dynamic filters do not
cause crashes.

Fixes ticket #7078.
2018-03-20 01:09:23 +01:00
Martin Vignali 57fde307f8 avfilter/vf_premultiply : fix unpremultiply_offset for rgb input 2018-03-18 13:45:04 +01:00
Paul B Mahol 1947798c95 avfilter/af_surround: drain input at EOF
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-16 12:31:56 +01:00
Paul B Mahol 02aacf0d0f avfilter: add drmeter audio filter
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-03-11 13:43:33 +01:00
Carl Eugen Hoyos 94ea9e159a lavfi/drawutils: Do not claim to support P016.
Fixes fate on big-endian.
2018-03-08 11:56:41 +01:00
Calvin Walton 8761b181c9 libavfilter/vf_fps: Minor cleanups
Since the config_props function now references both the input and output
links, rename the 'link' variable to 'outlink'.

Fix up some mismatching indentation.

Don't bother setting the width and height on the outlink; the filter
framework does that for us.
2018-03-08 11:23:34 +01:00
Calvin Walton 0aa0aafeae libavfilter/vf_fps: Rewrite using activate callback
The old version of the filter had a problem where it would queue up
all of the duplicate frames required to fill a timestamp gap in a
single call to filter_frame. In problematic files - I've hit this in
webcam streams with large gaps due to network issues - this will queue
up a potentially huge number of frames. (I've seen it trigger the Linux
OOM-killer on particularly large pts gaps.)

This revised version of the filter using the activate callback will
generate at most 1 frame each time it is called.
2018-03-08 11:23:34 +01:00