1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00
Commit Graph

7690 Commits

Author SHA1 Message Date
Jun Zhao
6f6769f3ec lavf/showinfo: support mastering display sidedata
support mastering display sidedata.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-08-08 17:57:12 +08:00
Linjie Fu
af3ddd581f lavf/vf_vpp_qsv: add support for QSV transpose filter
Add transpose support for qsv_vpp with rotate and hflip:
    - rotate: [0, 3] support clockwise rotation of 0, 90, 180, 270;
    - hflip:  [0, 1] support horizontal flip;

Configure with:
{"cclock_hflip","clock","cclock","clock_hflip","reversal","hflip","vflip"}

CMD:
ffmpeg -hwaccel qsv -c:v h264_qsv -i input.h264
    -vf 'format=qsv,vpp_qsv=transpose=clock' -c:v h264_qsv output.h264

ffmpeg -init_hw_device qsv=hw -filter_hw_device hw -c:v h264_qsv -i input.h264
    -vf 'hwupload=extra_hw_frames=64,format=qsv,vpp_qsv=transpose=cclock_hflip'
                            -f rawvideo -pix_fmt nv12 ./transpose.yuv

Signed-off-by: Linjie Fu <linjie.fu@intel.com>
Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-08-07 20:58:49 +08:00
Ruiling Song
98e419cbf5 avfilter/vf_convolution: add x86 SIMD for filter_3x3()
Tested using a simple command (apply edge enhance):
./ffmpeg_g -i ~/Downloads/bbb_sunflower_1080p_30fps_normal.mp4 \
 -vf convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128" \
 -an -vframes 1000 -f null /dev/null

The fps increase from 151 to 270 on my local machine.

Signed-off-by: Ruiling Song <ruiling.song@intel.com>
2019-08-07 14:31:28 +08:00
Andriy Gelman
f60b1211b2 lavfi/zmq: Avoid mem copy past the end of input buffer 2019-08-01 19:10:05 +02:00
Rodger Combs
a0c1970781 lavfi/vf_thumbnail_cuda: fix operator precedence bug
Discovered via a warning when building with clang

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2019-07-30 15:17:22 +02:00
Guo, Yejun
ccbab41039 dnn: convert tf.pad to native model in python script, and load/execute it in the c code.
since tf.pad is enabled, the conv2d(valid) changes back to its original behavior.

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-07-29 12:34:19 -03:00
Guo, Yejun
df8db34552 dnn: add layer pad which is equivalent to tf.pad
the reason to add this layer first is that vf_sr uses it in its
tensorflow model, and the next plan is to update the python script
to convert tf.pad into native model.

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-07-29 12:34:19 -03:00
Gyan Doshi
43891ea8ab avfilter/fade: don't allow nb_frames == 0
In filter init, there's a division by nb_frames but value isn't checked.
2019-07-29 12:46:59 +05:30
Mark Thompson
20fed2f0ab lavfi: addroi filter
This can be used to add region of interest side data to video frames.
2019-07-28 22:34:33 +01:00
Guo, Yejun
1b9064e3f4 libavfilter/dnn: move dnn files from libavfilter to libavfilter/dnn
it is expected that there will be more files to support native mode,
so put all the dnn codes under libavfilter/dnn

The main change of this patch is to move the file location, see below:
modified:   libavfilter/Makefile
new file:   libavfilter/dnn/Makefile
renamed:    libavfilter/dnn_backend_native.c -> libavfilter/dnn/dnn_backend_native.c
renamed:    libavfilter/dnn_backend_native.h -> libavfilter/dnn/dnn_backend_native.h
renamed:    libavfilter/dnn_backend_tf.c -> libavfilter/dnn/dnn_backend_tf.c
renamed:    libavfilter/dnn_backend_tf.h -> libavfilter/dnn/dnn_backend_tf.h
renamed:    libavfilter/dnn_interface.c -> libavfilter/dnn/dnn_interface.c

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-07-26 13:07:43 -03:00
Paul B Mahol
73afea3ccc avfilter/af_dynaudnorm: add more descriptive aliases for options 2019-07-24 15:20:47 +01:00
Paul B Mahol
3883c9d147 avfilter/vf_ciescope: add DCI-P3 2019-07-22 22:56:21 +01:00
Limin Wang
b696caba1a avformat/f_select: add support for more pixel formats for scene change score calculations
This avoids automatic conversions to rgb if scene change score is used in the expression.

Below is the tested results for the new added pixel format without autoscale to rgb24:
1. AV_PIX_FMT_YUVJ420P
time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
"sws_flags=+accurate_rnd+bitexact;movie=../fate-suite/svq3/Vertical400kbit.sorenson3.mov,select=gt(scene\,.25)"

master:
pkt_pts=1620|tag:lavfi.scene_score=1.000000
pkt_pts=4140|tag:lavfi.scene_score=0.875036
pkt_pts=5800|tag:lavfi.scene_score=1.000000
pkt_pts=6720|tag:lavfi.scene_score=0.461625
pkt_pts=8160|tag:lavfi.scene_score=1.000000
pkt_pts=9760|tag:lavfi.scene_score=1.000000
pkt_pts=14080|tag:lavfi.scene_score=0.838916
pkt_pts=15700|tag:lavfi.scene_score=1.000000
pkt_pts=18500|tag:lavfi.scene_score=0.474948
pkt_pts=20040|tag:lavfi.scene_score=0.379700
pkt_pts=21760|tag:lavfi.scene_score=1.000000
./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  0.71s user 0.01s system 99% cpu 0.721 total

patch applied:
pkt_pts=1620|tag:lavfi.scene_score=1.000000
pkt_pts=4140|tag:lavfi.scene_score=0.668643
pkt_pts=5800|tag:lavfi.scene_score=0.996721
pkt_pts=6720|tag:lavfi.scene_score=0.357390
pkt_pts=8160|tag:lavfi.scene_score=0.886268
pkt_pts=9760|tag:lavfi.scene_score=0.926219
pkt_pts=14080|tag:lavfi.scene_score=0.650033
pkt_pts=15700|tag:lavfi.scene_score=1.000000
pkt_pts=18500|tag:lavfi.scene_score=0.316402
pkt_pts=20040|tag:lavfi.scene_score=0.269509
pkt_pts=21760|tag:lavfi.scene_score=1.000000
./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  0.19s user 0.01s system 81% cpu 0.240 total

2. AV_PIX_FMT_YUV420P
time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
"sws_flags=+accurate_rnd+bitexact;movie=../Passengers_Breakfast_1080-sdr.mkv,select=gt(scene\,.2)"
master:
pkt_pts=3587|tag:lavfi.scene_score=0.462364
pkt_pts=4838|tag:lavfi.scene_score=0.419519
pkt_pts=6548|tag:lavfi.scene_score=0.397027
pkt_pts=9968|tag:lavfi.scene_score=0.419245
pkt_pts=12471|tag:lavfi.scene_score=0.413084
pkt_pts=16225|tag:lavfi.scene_score=0.506370
pkt_pts=19645|tag:lavfi.scene_score=0.507538
pkt_pts=22314|tag:lavfi.scene_score=0.504319
pkt_pts=24817|tag:lavfi.scene_score=0.417544
pkt_pts=25651|tag:lavfi.scene_score=0.413916
pkt_pts=26652|tag:lavfi.scene_score=0.487707
18.58s user 0.07s system 99% cpu 18.663 total

patch applied:
pkt_pts=3587|tag:lavfi.scene_score=0.272173
pkt_pts=4838|tag:lavfi.scene_score=0.247841
pkt_pts=6548|tag:lavfi.scene_score=0.233134
pkt_pts=9968|tag:lavfi.scene_score=0.247253
pkt_pts=12471|tag:lavfi.scene_score=0.244129
pkt_pts=16225|tag:lavfi.scene_score=0.302531
pkt_pts=19645|tag:lavfi.scene_score=0.303560
pkt_pts=22314|tag:lavfi.scene_score=0.301861
pkt_pts=24817|tag:lavfi.scene_score=0.249331
pkt_pts=25651|tag:lavfi.scene_score=0.247096
pkt_pts=26652|tag:lavfi.scene_score=0.287728
10.90s user 0.06s system 99% cpu 10.967 total

3. AV_PIX_FMT_YUV422P

time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
"sws_flags=+accurate_rnd+bitexact;movie=../Passengers_Breakfast_1080-sdr.mkv,format=yuv422p,select=gt(scene\,.2)"
master:

patched applied:
pkt_pts=3587|tag:lavfi.scene_score=0.224017
pkt_pts=4838|tag:lavfi.scene_score=0.204225
pkt_pts=9968|tag:lavfi.scene_score=0.204636
pkt_pts=12471|tag:lavfi.scene_score=0.202772
pkt_pts=16225|tag:lavfi.scene_score=0.248765
pkt_pts=19645|tag:lavfi.scene_score=0.250144
pkt_pts=22314|tag:lavfi.scene_score=0.248802
pkt_pts=24817|tag:lavfi.scene_score=0.208362
pkt_pts=25651|tag:lavfi.scene_score=0.205777
pkt_pts=26652|tag:lavfi.scene_score=0.230742

4.  AV_PIX_FMT_YUV420P10
time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
"sws_flags=+accurate_rnd+bitexact;movie=../Passengers_Breakfast_4k.mkv,select=gt(scene\,.2)"

master:
pkt_pts=3587|tag:lavfi.scene_score=0.269890
pkt_pts=4838|tag:lavfi.scene_score=0.248957
pkt_pts=6548|tag:lavfi.scene_score=0.234619
pkt_pts=9969|tag:lavfi.scene_score=0.224912
pkt_pts=12471|tag:lavfi.scene_score=0.225158
pkt_pts=16225|tag:lavfi.scene_score=0.289809
pkt_pts=19645|tag:lavfi.scene_score=0.285013
pkt_pts=22314|tag:lavfi.scene_score=0.280295
pkt_pts=24817|tag:lavfi.scene_score=0.206486
pkt_pts=25651|tag:lavfi.scene_score=0.208556
pkt_pts=26652|tag:lavfi.scene_score=0.249577
./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  76.03s user 0.22s system 99% cpu 1:16.27 total

patch applied
pkt_pts=3587|tag:lavfi.scene_score=0.269890
pkt_pts=4838|tag:lavfi.scene_score=0.248957
pkt_pts=6548|tag:lavfi.scene_score=0.234619
pkt_pts=9969|tag:lavfi.scene_score=0.224912
pkt_pts=12471|tag:lavfi.scene_score=0.225158
pkt_pts=16225|tag:lavfi.scene_score=0.289809
pkt_pts=19645|tag:lavfi.scene_score=0.285013
pkt_pts=22314|tag:lavfi.scene_score=0.280295
pkt_pts=24817|tag:lavfi.scene_score=0.206486
pkt_pts=25651|tag:lavfi.scene_score=0.208556
pkt_pts=26652|tag:lavfi.scene_score=0.249577
./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f  50.27s user 0.20s system 99% cpu 50.476 total

5. AV_PIX_FMT_RGBA, AV_PIX_FMT_ABGR, AV_PIX_FMT_BGRA, AV_PIX_FMT_GRAY8
are tested by format= with the fate sample: Vertical400kbit.sorenson3.mov like below:
time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
"sws_flags=+accurate_rnd+bitexact;movie=../fate-suite/svq3/Vertical400kbit.sorenson3.mov,format=rgba,select=gt(scene\,.25)"

patch applied:
pkt_pts=1620|tag:lavfi.scene_score=1.000000
pkt_pts=4140|tag:lavfi.scene_score=0.656277
pkt_pts=5800|tag:lavfi.scene_score=1.000000
pkt_pts=6720|tag:lavfi.scene_score=0.346218
pkt_pts=8160|tag:lavfi.scene_score=0.987686
pkt_pts=9760|tag:lavfi.scene_score=1.000000
pkt_pts=14080|tag:lavfi.scene_score=0.629187
pkt_pts=15700|tag:lavfi.scene_score=1.000000
pkt_pts=18500|tag:lavfi.scene_score=0.356211
pkt_pts=20040|tag:lavfi.scene_score=0.284775
pkt_pts=21760|tag:lavfi.scene_score=1.000000

6. AV_PIX_FMT_YUVJ422P
time ./ffprobe -of compact=p=0 -show_entries frame=pkt_pts:frame_tags -bitexact -f lavfi \
"sws_flags=+accurate_rnd+bitexact;movie=../fate-suite/svq3/Vertical400kbit.sorenson3.mov,format=yuvj422p,select=gt(scene\,.25)"

patch applied:
pkt_pts=1620|tag:lavfi.scene_score=0.838281
pkt_pts=4140|tag:lavfi.scene_score=0.541382
pkt_pts=5800|tag:lavfi.scene_score=0.780588
pkt_pts=6720|tag:lavfi.scene_score=0.298274
pkt_pts=8160|tag:lavfi.scene_score=0.699106
pkt_pts=9760|tag:lavfi.scene_score=0.730136
pkt_pts=14080|tag:lavfi.scene_score=0.537742
pkt_pts=15700|tag:lavfi.scene_score=0.811946
pkt_pts=18500|tag:lavfi.scene_score=0.263382
pkt_pts=21760|tag:lavfi.scene_score=0.880773

Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2019-07-22 22:54:51 +02:00
Limin Wang
53462cea2f avformat/f_select: support scenecut with more pixel formats
This patch does not make other pixel formats usable yet to make sure the test
result is the same with rgb32 format.

Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2019-07-22 22:54:51 +02:00
Michael Niedermayer
80bb65fafa Bump minor versions again on master to keep 4.2 versions separate from master
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-07-21 18:36:31 +02:00
Michael Niedermayer
22db337a40 Bump minor versions to separate 4.2 from master
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-07-21 18:36:18 +02:00
Jun Zhao
7eec3d22fc lavfi/showinfo: support regions of interest sidedata
support regions of interest sidedata

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-07-21 10:05:27 +08:00
Paul B Mahol
97698b15a2 avfilter/vf_hysteresis: use time_base from framesync
Fixes non-monotonous timestamps.
2019-07-14 19:14:10 +02:00
Paul B Mahol
54fc8d370e avfilter/vf_remap: add option to control output format 2019-07-14 18:20:18 +02:00
Paul B Mahol
be822eb6f8 avfilter/vf_remap: use time_base from framesync
Fixes non-monotonous timestamps.
2019-07-14 18:20:18 +02:00
Paul B Mahol
077bf9058f avfilter/vf_displace: use time_base from framesync
Fixes non-monotonous timestamps.
2019-07-14 18:20:18 +02:00
Paul B Mahol
6882427841 avfilter/vf_midequalizer: always use framesync timestamps 2019-07-14 17:45:42 +02:00
Paul B Mahol
74236f675e avfilter/vf_maskedmerge: always use framesync timestamps 2019-07-14 17:38:26 +02:00
Paul B Mahol
3d78ad43f7 avfilter/vf_threshold: use time_base from framesync
Fixes non-monotonous timestamps.
2019-07-14 17:28:04 +02:00
Paul B Mahol
37e69b40df avfilter/vf_blend: add 9bit support 2019-07-14 17:00:58 +02:00
Paul B Mahol
80dacbedba avfilter/af_aiir: calculate group delay too 2019-07-13 15:45:06 +02:00
Paul B Mahol
60e6db2f5b avfilter/af_aiir: do not ignore k option for audio filtering
Previously it was used only for displaying frequency response.
2019-07-13 12:29:52 +02:00
Paul B Mahol
74d4fd0822 avfilter/avf_showfreqs: make selecting window size simpler
The previous solution was very bad.
2019-07-10 16:03:34 +02:00
Paul B Mahol
57a2688fe3 avfilter/af_afftfilt: make selecting window size simpler
Next step after this one will be adding support for more window sizes.
2019-07-10 15:57:38 +02:00
Paul B Mahol
9e78c73d86 avfilter/vf_readeia608: implement lowpass operation prior to processing lines 2019-07-08 19:21:59 +02:00
Paul B Mahol
dc481105a1 avfilter/vf_tinterlace: re-enable lowpass option 2019-07-08 17:57:31 +02:00
Paul B Mahol
2a801e8856 avfilter/af_aiir: implement mix option 2019-07-08 16:48:10 +02:00
Paul B Mahol
034a9d2507 avfilter/af_biquads: clip gain picked from command to sane values 2019-07-08 16:29:15 +02:00
Paul B Mahol
7b2d39fc27 avfilter/af_biquads: implement mix option to all filters 2019-07-08 16:20:57 +02:00
Calvin Walton
2bd21b9609 vf_drawtext: Add pkt_pos, pkt_duration, pkt_size as variables
Changes to vf_drawtext.c written by
Calvin Walton <calvin.walton@kepstin.ca>

Changes to filters.texi written by
greg Luce <electron.rotoscope@gmail.com>
with lots of help from Moritz Barsnick and Gyan

Fixes #7947.
2019-07-07 11:12:07 +05:30
Paul B Mahol
b9a6106842 avfilter/af_afftfilt: remove invalid scaling 2019-07-06 12:01:38 +02:00
Jun Zhao
3ed0b3f6f7 lavfi/scale: Add sub-options for in_color_matrix/out_color_matrix
Add sub-options for in_color_matrix/out_color_matrix

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-07-06 13:12:13 +08:00
Paul B Mahol
0f39ef4db2 avfilter/vf_lut: fix regression with >8bit planar filtering 2019-07-05 12:55:02 +02:00
Yonglin Luo
664a27ea40 libavfilter/vf_colorspace.c: fix demarcation point of gamma linearize function
The linearize function (usually refered to EOTF) is the inverse of
delinearize function (usually referred to OETF). Demarcation point of
EOTF should be beta*delta, but the actual value used now in the source
code is beta.

For ITU Rec.709, they are 0.081 (0.018*4.5) and 0.018 respectively
(beta = 0.018 and delta = 4.5), and they correspond to pixel value 5
and 21 for an 8-bit image. Linearized result of pixel within that range
(5-21) will be different, but this commit will make linearize function
of the filter more accurate in the mathematical sense.

Signed-off-by: Yonglin Luo <vincenluo@tencent.com>
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
2019-07-03 13:57:11 -04:00
Paul B Mahol
1ac643f066 avfilter/vf_lut2: use time_base from framesync
Fixes non-monotonous timestamps.
2019-07-03 14:54:05 +02:00
Paul B Mahol
cc5c636780 avfilter/vf_midequalizer: use time_base from framesync
Fixes non-monotonous timestamps.
2019-07-03 14:54:05 +02:00
Paul B Mahol
d49d7d238f avfilter/vf_blend: use time_base from framesync
Fixes non-monotonous timestamps.
2019-07-03 14:54:05 +02:00
Paul B Mahol
d71dafb2ab avfilter/vf_maskedclamp: use time_base from framesync
Fixes non-monotonous timestamps.
2019-07-03 14:54:05 +02:00
Paul B Mahol
8a0636a93b avfilter/vf_maskedmerge: use time_base from framesync
Fixes non-monotonous timestamps.
2019-07-03 14:54:05 +02:00
Paul B Mahol
93a73df54d avfilter/af_deesser: remove extra ; 2019-07-03 08:53:35 +02:00
Paul B Mahol
bd5e92ef8a avfilter: add deesser audio filter 2019-07-02 19:02:54 +02:00
Paul B Mahol
1b262004d3 avfilter/af_silenceremove: use input timestamp for timestamp recalculation 2019-07-02 19:01:42 +02:00
Zhong Li
dd662bbdd2 lavf/qsv_scale: add scaling modes support
low_power mode will use a fixed HW engine (SFC), thus can offload EU usage.
high quality mode will take EU usage (AVS sampler).

Performance and EU usage (Render usage) comparsion on Intel(R) Xeon(R) CPU E3-1225 v5 @ 3.30GHz:

High quality mode : ffmpeg -hwaccel qsv -c:v h264_qsv -i bbb_sunflower_1080p_30fps_normal_2000frames.h264 \
-vf scale_qsv=w=1280:h=736:mode=hq -f null -
fps=389
RENDER usage: 28.10 (provided by MSDK metrics_monitor)

Low Power mode: ffmpeg -hwaccel qsv -c:v h264_qsv -i ~/bbb_sunflower_1080p_30fps_normal_2000frames.h264 \
-vf scale_qsv=w=1280:h=736:mode=low_power -f null -
fps=343
RENDER usage: 0.00

Low power mode (SFC) may be disabled if not supported by
MSDK/Driver/HW, and replaced by AVS mode interanlly.

Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-06-25 11:33:12 +08:00
Jun Zhao
ebcf4d354f lavfi/af_asetnsamples: Remove the redundant condition check
Redundant condition: '!A || B' is equivalent to '!A || (A && B)' but
more clearly.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-06-18 23:27:07 +08:00
Limin Wang
c9c1711f49 libavfilter/vf_blend.c: remove duplicate code with macro-defined function
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2019-06-14 13:37:45 +02:00
Limin Wang
24321b8751 libavfilter/vf_blend.c: remove duplicate code with same function
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2019-06-14 13:37:35 +02:00
Zhong Li
4208b428c4 lavf/qsv_vpp: add frame format option
1. Currently output format is hard-coded as NV12, thus means
   CSC is always done for not NV12 input such as P010.
   Follow original input format as default output.
2. Add an option to specify output format.

Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-06-14 10:27:33 +08:00
James Almer
b8f1542dcb avfilter/vf_gblur: add missing preprocessor check
Fixes compilation on x86_32

Signed-off-by: James Almer <jamrial@gmail.com>
2019-06-12 10:54:59 -03:00
Ruiling Song
83f9da7768 avfilter/vf_gblur: add x86 SIMD optimizations
The horizontal pass get ~2x performance with the patch
under single thread.

Tested overall performance using the command(avx2 enabled):
./ffmpeg -i 1080p.mp4 -vf gblur -f null /dev/null
./ffmpeg -i 1080p.mp4 -vf gblur=threads=1 -f null /dev/null
For single thread, the fps improves from 43 to 60, about 40%.
For multi-thread, the fps improves from 110 to 130, about 20%.

Signed-off-by: Ruiling Song <ruiling.song@intel.com>
2019-06-12 08:53:11 +08:00
Limin Wang
5fc8d87ba6 libavfilter/vf_cover_rect.c: free the allocated frame
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2019-06-11 23:53:26 +02:00
Paul B Mahol
80e68ce116 avfilter/vf_normalize: fix filtering of RGB0 formats 2019-06-10 23:11:57 +02:00
Zhong Li
e62f625163 lavf/qsvvpp: add P010 output format support
Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-06-10 13:48:41 +08:00
Zhong Li
ef56c28b25 lavf/qsvvpp: add extra_hw_frames support
extra_hw_frames is needed for some cases.
(eg: qsv decoding + qsv vpp + qsv look_ahead encoding, transcoding
 failed if no extra_hw_frames supported:
 ffmpeg -hwaccel qsv -c:v h264_qsv -i bbb_sunflower_1080p_30fps_normal_2000frames.mp4 \
-vf vpp_qsv=w=1280:h=720:extra_hw_frames=100 -v verbose  -c:v h264_qsv \
-look_ahead 1 -look_ahead_depth 100 out1.mp4
)

Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-06-10 13:48:06 +08:00
Paul B Mahol
a9bf656577 avfilter/vf_lut2: add slice threading 2019-06-09 14:07:00 +02:00
Mark Thompson
a53f9fde45 lavfi/vaapi: Fix build with libva 2.1 and 2.2
While the VAProcColorProperties structure was added in libva 2.1, the
colour primaries/transfer/space fields were not added until libva 2.3.
2019-06-07 21:15:29 +01:00
Xuewei Meng
78e1d7f421 libavfilter: Add derain filter
Remove the rain in the input image/video by applying the derain
methods based on convolutional neural networks. Training scripts
as well as scripts for model generation are provided in the
repository at https://github.com/XueweiMeng/derain_filter.git.

Signed-off-by: Xuewei Meng <xwmeng96@gmail.com>
2019-06-06 13:59:43 +08:00
Gyan Doshi
3be4490014 avfilter/framesync: fix shortest with eof_action=pass
Shifted check of shortest to after repeatlast,
to ensure shortest=1 is always honoured.
2019-06-06 10:19:14 +05:30
Paul B Mahol
d3f236b300 avilter/avf_showwaves: switch to activate in showwaves filter 2019-06-04 09:28:07 +02:00
Paul B Mahol
97ddc5d1f7 avfilter/af_anlmdn: add support for commands 2019-06-03 14:20:19 +02:00
Jun Zhao
0b7bfa8ad7 lavf/sr: Refine the coding style for init
We perfer the coding style like:

/* some stuff */
if (error) {
    /* error handling */
    return -(errorcode);
}
/* normal actions */
do_something()

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-06-03 13:04:23 +08:00
Jun Zhao
5c1fbc4239 lavf/sr: Don't need to check NULL before sws_freeContext
sws_freeContext have check the NULL pointer, so don't need to check
NULL before sws_freeContext.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-06-03 13:04:23 +08:00
Jun Zhao
51b0e81216 lavf/sr: Dump input pixel format in error message
Dump input pixel format in error message, it's will help to debugging

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-06-03 13:04:23 +08:00
Zhong Li
165eabf19b lavf/qsv: use av_cold for init/uninit
Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-06-03 05:39:06 +08:00
Ruiling Song
94ceeba9f9 avfilter/vf_unsharp: enable slice threading
benchmarking with a simple command:
ffmpeg -i 1080p.mp4 -vf unsharp=la=3:ca=3 -an -f null /dev/null
with the patch, the fps increase from 50 to 120 on my local machine (i7-6770HQ).

Signed-off-by: Ruiling Song <ruiling.song@intel.com>
2019-06-03 10:49:57 +08:00
Jun Zhao
bbad0bc5ff lavfi/lut: Add slice threading support
Used the command for 1080p h264 clip as follow:

a). ffmpeg -i input -vf lutyuv="u=128:v=128" -f null /dev/null
b). ffmpeg -i input -vf lutrgb="g=0:b=0" -f null /dev/null

after enabled the slice threading, the fps change from:

a). 144fps to 258fps (lutyuv)
b). 94fps  to 153fps (lutrgb)

in Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-06-03 09:38:28 +08:00
Jun Zhao
360bee8ca4 lavfi/colorlevels: Add slice threading support
Add slice threading support, use the command like:

./ffmpeg -i input -vf colorlevels -f null /dev/null

with 1080p h264 clip, the fps from 39 fps to 79 fps
in the local(Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz)

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-06-03 09:36:14 +08:00
Mark Thompson
ef2f89bbcc vf_scale_vaapi: Add options to configure output colour properties
The "out_color_matrix" and "out_range" properties match the same options
in vf_scale; the others attempt to follow the same pattern.
2019-06-02 17:30:41 +01:00
Mark Thompson
5051b7f898 lavfi/vaapi: Improve support for colour properties
Attempts to pick the set of supported colour properties best matching the
input.  Output is then set with the same values, except for the colour
matrix which may change when converting between RGB and YUV.
2019-06-02 17:30:41 +01:00
Mark Thompson
5fb9eb9ed2 vf_misc_vaapi: Add missing return value checks
Parameter buffer creation can fail.
2019-06-02 17:30:41 +01:00
Mark Thompson
6ed34a4379 lavfi/vaapi: Factorise out common code for parameter buffer setup
Also enables cropping on all VAAPI filters, inherited from the existing
support in scale_vaapi.
2019-06-02 17:30:41 +01:00
Mark Thompson
f1b359aaf5 vf_crop: Add support for cropping hardware frames
Set the cropping fields in the AVFrame.
2019-06-02 17:30:41 +01:00
Paul B Mahol
fcfe85220d avfilter/af_anlmdn: avoid creating frames with zero samples 2019-06-02 13:00:35 +02:00
Paul B Mahol
1a266a1ef9 avfilter/af_anlmdn: try to recover when cache becomes negative 2019-06-02 12:59:57 +02:00
Paul B Mahol
b535577465 avfilter/af_anlmdn: add smooth factor option 2019-06-02 11:58:49 +02:00
Paul B Mahol
cbaa60329a avfilter/vf_xmedian: remove limitation of only odd number of inputs 2019-06-02 11:07:46 +02:00
Carl Eugen Hoyos
d1b4ea2f61 lavfi/showspatial: Remove two write-only variables.
Fixes two warnings:
libavfilter/avf_showspatial.c:157:26: warning: variable ‘w’ set but not used
libavfilter/avf_showspatial.c:157:23: warning: variable ‘h’ set but not used
2019-05-31 22:30:46 +02:00
Paul B Mahol
b19550367f avfilter: add showspatial multimedia filter 2019-05-31 12:53:20 +02:00
Linjie Fu
6895b350c3 lavf/qsvvpp: avoid the double-free when working in sys memory mode
Currently, picref will be freed by calling av_frame_free(&picref) in
submit_frame() in qsvvpp.c when working in system memory mode,and normally it
is freed in filter_frame() in vf_vpp_qsv.c when working in other modes.

Double free happens when working in system memory mode, remove to
fix the memory issue.

Reproduce:
ffmpeg -init_hw_device qsv=foo -filter_hw_device foo -f rawvideo -pix_fmt nv12 -s:v 852x480 \
-i 852x480.nv12 -vf 'vpp_qsv=w=500:h=400' -f rawvideo -pix_fmt nv12 qsv.nv12

Signed-off-by: Linjie Fu <linjie.fu@intel.com>
Signed-off-by: Zhong Li <zhong.li@intel.com>
2019-05-30 09:33:21 +08:00
Paul B Mahol
819ed1df94 avfilter/avf_aphasemeter: make use of av_rescale 2019-05-28 11:10:51 +02:00
Paul B Mahol
62c8707e2a avfilter/avf_showwaves: make use of av_rescale_q 2019-05-28 11:07:47 +02:00
Paul B Mahol
cd75396897 avfilter/avf_ahistogram: make use of av_rescale 2019-05-28 10:51:57 +02:00
Paul B Mahol
d2e76a1f96 avfilter/avf_showvolume: make use of av_rescale 2019-05-28 10:49:09 +02:00
Paul B Mahol
618f8bb0a4 avfilter/avf_abitscope: make use of av_rescale 2019-05-28 10:46:38 +02:00
Paul B Mahol
b16806b09d avfilter/avf_avectorscope: make use of av_rescale 2019-05-28 10:43:25 +02:00
Jun Zhao
9b069eb14e lavfi/sr: Change the backend type from flags to int
native and tensorflow is exclusive, so change the type from
flags to int.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-05-28 09:13:36 +08:00
Jun Zhao
b983e71bde lavfi/sr: Remove slice thread flag
sr didn't enable the slice threading, so remove the flag

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-05-28 09:13:36 +08:00
Paul B Mahol
5ddaedcaec avfilter/avf_showvolume: switch to activate 2019-05-27 18:44:19 +02:00
Paul B Mahol
293489d835 avfilter/af_superequalizer: switch to activate 2019-05-27 17:36:30 +02:00
Paul B Mahol
fc0de1c04b avfilter/avf_showfreqs: switch to activate 2019-05-26 17:11:17 +02:00
Marton Balint
1eb54323c8 avfilter/f_loop: warn about unset loop sizes
Signed-off-by: Marton Balint <cus@passwd.hu>
2019-05-24 21:39:07 +02:00
Marton Balint
87e0247a6c avfilter/f_loop: fix video loop issues with 0 size or when size is bigger than input
Fixes infinte loop with -vf loop=loop=1 and also fixes looping when the input
is less frames than the specified loop size.

Possible regressions since ef1aadffc7.

Signed-off-by: Marton Balint <cus@passwd.hu>
2019-05-24 21:39:07 +02:00
Josh Allmann
4cfc34d9a8 avfilter/vf_scale_cuda: reset frame size after acquiring from hwframe
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2019-05-24 19:03:34 +02:00
Paul B Mahol
5073adcc42 avfilter/vf_xmedian: set sar to outlink 2019-05-24 18:37:41 +02:00
Paul B Mahol
a1992637ac avfilter/vf_mix: set sar to outlink 2019-05-24 18:37:41 +02:00
Paul B Mahol
a9b5af0d19 avfilter/vf_mix: use time_base from framesync 2019-05-24 18:33:16 +02:00
Ruiling Song
1d74150a7d lavfi/opencl: add nlmeans_opencl filter
Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: Ruiling Song <ruiling.song@intel.com>
2019-05-24 15:09:22 +08:00
Xuewei Meng
023ea5e360 libavfilter/dnn_native: Add support of dilated convolution in dnn_native.
Add dilation parameter in dnn native to support dilated convolution.

Signed-off-by: Xuewei Meng <xwmeng96@gmail.com>
Signed-off-by: Steven Liu <lq@onvideo.cn>
2019-05-24 11:49:50 +08:00
Jun Zhao
98663a0bb8 lavfi/lensfun: Use ff_filter_get_nb_threads() get number of threads
ff_filter_get_nb_threads() respect AVFilterContext.nb_threads and
graph->nb_threads both, in most case, we perfer this API than using
ctx->graph->nb_threads directly.

Reviewed-by: Steven Liu <lq@onvideo.cn>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-05-22 17:34:18 +08:00
Xuewei Meng
ecc096513c libavfilter/dnn_native: Add multiple activation functions in dnn native
Add "Leaky_relu" and "None" option in activation function.

Reviewed-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Xuewei Meng <xwmeng96@gmail.com>
Signed-off-by: Steven Liu <lq@onvideo.cn>
2019-05-22 10:28:07 +08:00
Xuewei Meng
e45e6005ce libavfilter/dnn_native: Add multiple padding methods in dnn native
Add another two padding methods "VALID" and "SAME" as tensorflow,
and keep the existing "SAME_CLAMP_TO_EDGE" method suggested by sr filter.
As "SAME_CLAMP_TO_EDGE"can keep the output with the same size as original input,
and gives a slight better result as mentioned by sr filter.

Reviewed-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Xuewei Meng <xwmeng96@gmail.com>
Signed-off-by: Steven Liu <lq@onvideo.cn>
2019-05-21 12:53:58 +08:00
Paul B Mahol
96c79d4e1f avfilter/vf_ocr: also export confidence of result 2019-05-17 19:10:12 +02:00
Paul B Mahol
6276b4db97 avfilter/vf_separatefields: switch to activate
Fixes timestamp of last output frame.
2019-05-16 12:31:57 +02:00
Gyan Doshi
8cf947ca4c avfilter/drawtext: stop resource leak
Fixes Coverity CID 1445099
2019-05-16 10:30:28 +05:30
Philip Langdale
13168ecbdc avfilter/vf_scale_cuda: Simplify output plane addressing
I'm not sure why this was written the way it was originally. We
initialise the plane addresses correctly in hwcontext_cuda so
why try and play games to calculate the plane offsets directly
in this code?
2019-05-15 11:40:50 -07:00
Philip Langdale
bfbde996cf avfilter/vf_scale_cuda: Add support for YUV444P16
This format is interesting because it's what you get for decoded
10/12bit HEVC 4:4:4.
2019-05-15 11:40:50 -07:00
Philip Langdale
89bd7554b2 avfilter/vf_scale_cuda: Fix incorrect scaling of > 8bit content
When i converted the filter to use texture objects instead of
texture references, I incorrect dropped the `pixel_size` scaling
factor when setting `pitchInBytes`. `src_pitch` is in pixels and
so must be scaled up.
2019-05-15 11:40:50 -07:00
Paul B Mahol
f49cec2ba8 avfilter: add asr filter 2019-05-14 15:17:14 +02:00
Andreas Rheinhardt
670251de56 avfilter/vf_stack: Don't modify const strings
b3b7ba62 introduced undefined behaviour: A (non-modifiable) string
literal has been assigned to a modifiable string; said string was indeed
modified later via av_strtok.
This of course caused compiler warnings because of the discarded
qualifier; these are in particular fixed by this commit.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2019-05-14 14:47:51 +02:00
Paul B Mahol
8ef163ba9e avfilter: add xmedian filter 2019-05-14 14:43:56 +02:00
Paul B Mahol
f1c9d6fe70 avfilter/vf_chromahold: implement blend option 2019-05-13 12:15:32 +02:00
Gyan Doshi
87db1ca632 avfilter/drawtext: make command processing error-resilient
Prevents crash or interruption in text rendering
if new option string contains invalid values.
2019-05-13 10:34:32 +05:30
Paul B Mahol
bd6942b4c0 avfilter/af_astats: fix calculations involving last sample 2019-05-12 17:12:06 +02:00
Paul B Mahol
2a4a364f6a avfilter/af_astats: fix initial values of variables 2019-05-12 17:12:06 +02:00
Paul B Mahol
59fb8cae5e avfilter: add colorhold filter
Fixes #7671.
2019-05-11 20:16:45 +02:00
Jun Zhao
c967128952 lavf/cover_rect: Fix logic check issue
Fix logic check issue #6741

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2019-05-10 09:07:29 +08:00
Pavel Koshevoy
181031906e avfilter/af_atempo: Make ffplay display correct timestamps when seeking
NOTE: this is a refinement of the patch from Paul B Mahol
offset all output timestamps by same amount of first input timestamp
2019-05-08 23:38:10 -06:00
Guo, Yejun
c636dc9819 libavfilter/dnn: add more data type support for dnn model input
currently, only float is supported as model input, actually, there
are other data types, this patch adds uint8.

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-05-08 12:33:00 -03:00
Guo, Yejun
25c1cd909f libavfilter/dnn: support multiple outputs for tensorflow model
some models such as ssd, yolo have more than one output.

the clean up code in this patch is a little complex, it is because
that set_input_output_tf could be called for many times together
with ff_dnn_execute_model_tf, we have to clean resources for the
case that the two interfaces are called interleaved.

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-05-08 12:33:00 -03:00
Guo, Yejun
7adfb6132e libavfilter/dnn: avoid memcpy for tensorflow dnn output
use TF_Tensor's cpu address to avoid extra memcpy.

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-05-08 12:33:00 -03:00
Guo, Yejun
e2b92896c4 libavfilter/dnn: determine dnn output during execute_model instead of set_input_output
Currently, within interface set_input_output, the dims/memory of the tensorflow
dnn model output is determined by executing the model with zero input,
actually, the output dims might vary with different input data for networks
such as object detection models faster-rcnn, ssd and yolo.

This patch moves the logic from set_input_output to execute_model which
is suitable for all the cases. Since interface changed, and so dnn_backend_native
also changes.

In vf_sr.c, it knows it's srcnn or espcn by executing the model with zero input,
so execute_model has to be called in function config_props

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-05-08 12:33:00 -03:00
Guo, Yejun
05f86f05bb libavfilter/dnn: remove limit for the name of DNN model input/output
remove the requirment that the name of DNN model input/output
should be "x"/"y",

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-05-08 12:33:00 -03:00
Guo, Yejun
05aec8bb13 libavfilter/vf_sr: refine code to remove keyword 'else'
remove 'else' since there is always 'return' in 'if' scope,
so the code will be clean for later maintenance

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-05-08 12:33:00 -03:00
Guo, Yejun
014b6a56f8 libavfilter/dnn_backend_tf.c: set layer_add_res for input layer
otherwise, the following check will return error if layer_add_res
is randomly initialized.

Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2019-05-08 12:33:00 -03:00
Paul B Mahol
c539dd992c avfilter/af_afftfilt: switch to activate 2019-05-08 15:03:22 +02:00
Ruiling Song
06ba4783a0 lavfi/gblur: doing several columns at the same time
Instead of doing each column one by one, doing several columns
together gives about 30% better performance.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Ruiling Song <ruiling.song@intel.com>
2019-05-08 10:39:43 +08:00
Gyan Doshi
b3b7ba623f avfilter/vf_xstack: set better error msg for
missing layout
2019-05-07 16:45:11 +05:30
Paul B Mahol
e668260ba9 avfilter/af_rubberband: also do not ignore failures 2019-05-06 21:09:43 +02:00
Paul B Mahol
066864aca8 avfilter/af_rubberband: handle case when no frame is given 2019-05-06 21:04:52 +02:00
Marton Balint
328a96839d avfilter/vf_freezedetect: fix missing freeze_start when the freeze length is around the detection duration
Fixes ticket #7875.

Signed-off-by: Marton Balint <cus@passwd.hu>
2019-05-05 20:07:35 +02:00
Paul B Mahol
73f234fdf8 avfilter/f_interleave: switch to activate 2019-05-05 19:51:44 +02:00
Paul B Mahol
38baaa1617 avfilter/vf_vibrance: add alternate option 2019-05-05 13:29:34 +02:00
Paul B Mahol
526bc2205b avfilter/vf_vibrance: factor some calculations out of loop 2019-05-05 13:09:37 +02:00
Moritz Barsnick
98541f7032 avfilter/f_realtime: add option to scale speed 2019-05-04 19:39:38 +02:00
Paul B Mahol
e94447cd49 avfilter/af_amultiply: use pts from frame from first input 2019-05-04 11:28:14 +02:00
Paul B Mahol
3d8e99eba3 avfilter/vf_vmafmotion: remove unused header 2019-05-04 11:09:47 +02:00
Paul B Mahol
16154c019f avfilter/vf_blend: remove unused header 2019-05-03 20:48:18 +02:00
Paul B Mahol
d3d1d5936f avfilter/vf_tonemap: add slice threading 2019-05-01 21:19:58 +02:00
Paul B Mahol
a7fa89fa0b avfilter/avf_abitscope: switch to activate 2019-05-01 21:17:55 +02:00
Paul B Mahol
255feeccc5 avfilter/af_biquads: add timeline support 2019-05-01 12:59:54 +02:00
Paul B Mahol
01204c04b0 avfilter/af_stereowiden: add timeline support 2019-05-01 12:40:25 +02:00
Paul B Mahol
0ee65ea95c avfilter/af_extrastereo: add timeline support 2019-05-01 12:33:56 +02:00
Paul B Mahol
d010bfad31 avfilter/af_crossfeed: add timeline support 2019-05-01 12:31:52 +02:00
Paul B Mahol
5a39b797ac avfilter/avf_showspectrum: convert some doubles to floats 2019-04-30 20:36:33 +02:00
Paul B Mahol
38c170d54c avfilter/af_asoftclip: add timeline support 2019-04-30 11:02:36 +02:00
Paul B Mahol
9cc10418b3 avfilter/af_dynaudnorm: add timeline support 2019-04-30 10:56:39 +02:00