Paul B Mahol
4dbb75c437
avfilter/vf_xfade: check that fps between inputs are valid
2020-08-11 10:57:04 +02:00
Ting Fu
91efc41a69
dnn/native: add native support for avg_pool
...
Not support pooling strides in channel dimension yet.
Signed-off-by: Ting Fu <ting.fu@intel.com>
Reviewed-by: Guo, Yejun <yejun.guo@intel.com>
2020-08-10 16:37:39 +08:00
Mingyu Yin
fab00b0ae0
dnn_backend_native_layer_mathunary: add floor support
...
It can be tested with the model generated with below python script:
import tensorflow as tf
import os
import numpy as np
import imageio
from tensorflow.python.framework import graph_util
name = 'floor'
pb_file_path = os.getcwd()
if not os.path.exists(pb_file_path+'/{}_savemodel/'.format(name)):
os.mkdir(pb_file_path+'/{}_savemodel/'.format(name))
with tf.Session(graph=tf.Graph()) as sess:
in_img = imageio.imread('detection.jpg')
in_img = in_img.astype(np.float32)
in_data = in_img[np.newaxis, :]
input_x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
y_ = tf.math.floor(input_x*255)/255
y = tf.identity(y_, name='dnn_out')
sess.run(tf.global_variables_initializer())
constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
with tf.gfile.FastGFile(pb_file_path+'/{}_savemodel/model.pb'.format(name), mode='wb') as f:
f.write(constant_graph.SerializeToString())
print("model.pb generated, please in ffmpeg path use\n \n \
python tools/python/convert.py {}_savemodel/model.pb --outdir={}_savemodel/ \n \nto generate model.model\n".format(name,name))
output = sess.run(y, feed_dict={ input_x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
print("To verify, please ffmpeg path use\n \n \
./ffmpeg -i detection.jpg -vf format=rgb24,dnn_processing=model={}_savemodel/model.pb:input=dnn_in:output=dnn_out:dnn_backend=tensorflow -f framemd5 {}_savemodel/tensorflow_out.md5\n \
or\n \
./ffmpeg -i detection.jpg -vf format=rgb24,dnn_processing=model={}_savemodel/model.pb:input=dnn_in:output=dnn_out:dnn_backend=tensorflow {}_savemodel/out_tensorflow.jpg\n \nto generate output result of tensorflow model\n".format(name, name, name, name))
print("To verify, please ffmpeg path use\n \n \
./ffmpeg -i detection.jpg -vf format=rgb24,dnn_processing=model={}_savemodel/model.model:input=dnn_in:output=dnn_out:dnn_backend=native -f framemd5 {}_savemodel/native_out.md5\n \
or \n \
./ffmpeg -i detection.jpg -vf format=rgb24,dnn_processing=model={}_savemodel/model.model:input=dnn_in:output=dnn_out:dnn_backend=native {}_savemodel/out_native.jpg\n \nto generate output result of native model\n".format(name, name, name, name))
Signed-off-by: Mingyu Yin <mingyu.yin@intel.com>
2020-08-07 10:34:22 +08:00
Mingyu Yin
9fbdd5454b
dnn_backend_native_layer_mathunary: add ceil support
...
It can be tested with the model generated with below python script:
import tensorflow as tf
import os
import numpy as np
import imageio
from tensorflow.python.framework import graph_util
name = 'ceil'
pb_file_path = os.getcwd()
if not os.path.exists(pb_file_path+'/{}_savemodel/'.format(name)):
os.mkdir(pb_file_path+'/{}_savemodel/'.format(name))
with tf.Session(graph=tf.Graph()) as sess:
in_img = imageio.imread('detection.jpg')
in_img = in_img.astype(np.float32)
in_data = in_img[np.newaxis, :]
input_x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
y = tf.math.ceil( input_x, name='dnn_out')
sess.run(tf.global_variables_initializer())
constant_graph = graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
with tf.gfile.FastGFile(pb_file_path+'/{}_savemodel/model.pb'.format(name), mode='wb') as f:
f.write(constant_graph.SerializeToString())
print("model.pb generated, please in ffmpeg path use\n \n \
python tools/python/convert.py ceil_savemodel/model.pb --outdir=ceil_savemodel/ \n \n \
to generate model.model\n")
output = sess.run(y, feed_dict={ input_x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
print("To verify, please ffmpeg path use\n \n \
./ffmpeg -i detection.jpg -vf format=rgb24,dnn_processing=model=ceil_savemodel/model.pb:input=dnn_in:output=dnn_out:dnn_backend=tensorflow -f framemd5 ceil_savemodel/tensorflow_out.md5\n \n \
to generate output result of tensorflow model\n")
print("To verify, please ffmpeg path use\n \n \
./ffmpeg -i detection.jpg -vf format=rgb24,dnn_processing=model=ceil_savemodel/model.model:input=dnn_in:output=dnn_out:dnn_backend=native -f framemd5 ceil_savemodel/native_out.md5\n \n \
to generate output result of native model\n")
Signed-off-by: Mingyu Yin <mingyu.yin@intel.com>
Reviewed-by: Guo, Yejun <yejun.guo@intel.com>
2020-08-04 19:56:54 +08:00
Andreas Rheinhardt
8129c32e48
avcodec, avfilter, avformat: Remove redundant avpriv_align_put_bits
...
flush_put_bits() already fills the bitstream with zeroes, so it is
unnecessary to align the bitstream before.
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-08-01 18:56:32 +02:00
Paul B Mahol
17f6bd6e58
avfilter/vf_xfade: add hblur transition
2020-07-21 23:29:55 +02:00
Paul B Mahol
c4c989c7ca
avfilter/vf_yaepblur: fix naming of filter class
2020-07-20 16:12:56 +02:00
Paul B Mahol
fa8345cf05
avfilter/vf_bilateral: simplify code a little
...
Make alpha_ calculation faster.
2020-07-18 10:22:12 +02:00
Paul B Mahol
3a37aa597f
avfilter/avf_showwavespic: add filter mode
2020-07-17 14:26:48 +02:00
Paul B Mahol
d363afb30e
avfilter/vf_tinterlace: fix mergex2, first frame is always considered odd
2020-07-17 13:53:55 +02:00
Paul B Mahol
24fea4d09b
avfilter/vf_tinterlace: use frame counter from lavfi
...
Remove internal counter.
2020-07-17 13:53:55 +02:00
leozhang
fe591393cd
avfilter/vf_bilateral: remove useless memcpy
...
Signed-off-by: leozhang <leozhang@qiyi.com>
2020-07-17 13:53:22 +02:00
Paul B Mahol
241cdded0f
avfilter/vf_bilateral: stop using sigmaS as percent of width/height
2020-07-17 13:53:22 +02:00
James Almer
320694ff84
x86/vf_blend: fix warnings about trailing empty parameters
...
Finishes fixing ticket #8771
Signed-off-by: James Almer <jamrial@gmail.com>
2020-07-12 11:30:23 -03:00
Jun Zhao
04037e2966
lavfi/setpts: fix setpts/asetpts option dump error
...
fix the command ffmpeg -h filter=setpts/asetpts both dump the expr
option with "FVA" flags.
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-07-12 08:11:42 +08:00
Ben Clayton
4dab04622a
libavfilter/glslang: Remove unused header
...
The <glslang/Include/revision.h> include was not used, and revision.h has
been removed from glslang master.
See: https://github.com/KhronosGroup/glslang/pull/2277
2020-07-11 13:01:33 +01:00
Paul B Mahol
6f84e92172
avfilter/vf_chromanr: move thres calculation to filter_frame()
2020-07-10 23:09:19 +02:00
Limin Wang
f9277cd796
avfilter/vf_showinfo: add dump_s12m_timecode() helper function
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-07-08 23:14:04 +08:00
Limin Wang
3ede8acba6
avfilter/vf_showinfo: check sd->size before reference the sd->data
...
Or it'll cause null pointer dereference if size < sizeof(uint32_t), also
in case tc[0] > 3, the code will report error directly.
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-07-08 23:12:48 +08:00
Paul B Mahol
6cdddb773f
avfilter: add chromanr video filter
2020-07-08 15:23:43 +02:00
Valery Kot
855d51bf48
avfilter/vf_edgedetect: properly implement double_threshold()
...
Important part of this algorithm is the double threshold step: pixels
above "high" threshold being kept, pixels below "low" threshold dropped,
pixels in between (weak edges) are kept if they are neighboring "high"
pixels.
The weak edge check uses a neighboring context and should not be applied
on the plane's border. The condition was incorrect and has been fixed in
the commit.
Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
Reviewed-by: Andriy Gelman <andriy.gelman@gmail.com>
2020-07-06 23:20:53 -04:00
Reimar Döffinger
584f396132
dnn_backend_native: Add overflow check for length calculation.
...
We should not silently allocate an incorrect sized buffer.
Fixes trac issue #8718 .
Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Reviewed-by: Guo, Yejun <yejun.guo@intel.com>
2020-07-06 20:22:30 +08:00
Ting Fu
c0cdeea0ee
dnn_backend_native_layer_mathunary: add atanh support
...
It can be tested with the model generated with below python script:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
please uncomment the part you want to test
x_sinh_1 = tf.sinh(x)
x_out = tf.divide(x_sinh_1, 1.176) # sinh(1.0)
x_cosh_1 = tf.cosh(x)
x_out = tf.divide(x_cosh_1, 1.55) # cosh(1.0)
x_tanh_1 = tf.tanh(x)
x__out = tf.divide(x_tanh_1, 0.77) # tanh(1.0)
x_asinh_1 = tf.asinh(x)
x_out = tf.divide(x_asinh_1, 0.89) # asinh(1.0/1.1)
x_acosh_1 = tf.add(x, 1.1)
x_acosh_2 = tf.acosh(x_acosh_1) # accept (1, inf)
x_out = tf.divide(x_acosh_2, 1.4) # acosh(2.1)
x_atanh_1 = tf.divide(x, 1.1)
x_atanh_2 = tf.atanh(x_atanh_1) # accept (-1, 1)
x_out = tf.divide(x_atanh_2, 1.55) # atanhh(1.0/1.1)
y = tf.identity(x_out, name='dnn_out') #please only preserve the x_out you want to test
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Ting Fu <ting.fu@intel.com>
2020-07-06 12:45:14 +08:00
Ting Fu
cd2e3a864d
dnn_backend_native_layer_mathunary: add acosh support
...
Signed-off-by: Ting Fu <ting.fu@intel.com>
2020-07-06 12:45:14 +08:00
Ting Fu
9d14b38d9d
dnn_backend_native_layer_mathunary: add asinh support
...
Signed-off-by: Ting Fu <ting.fu@intel.com>
2020-07-06 12:45:14 +08:00
Ting Fu
ea71e731f4
dnn_backend_native_layer_mathunary: add tanh support
...
Signed-off-by: Ting Fu <ting.fu@intel.com>
2020-07-06 12:45:14 +08:00
Ting Fu
62fc7e3035
dnn_backend_native_layer_mathunary: add cosh support
...
Signed-off-by: Ting Fu <ting.fu@intel.com>
2020-07-06 12:45:14 +08:00
Ting Fu
91b4037101
dnn_backend_native_layer_mathunary: add sinh support
...
Signed-off-by: Ting Fu <ting.fu@intel.com>
2020-07-06 12:45:14 +08:00
Limin Wang
49054fe94c
FATE: fix colorbalance fate test failed on x86_32
...
floating point precision will cause rgb*max generate different value on
x86_32 and x86_64. have pass fate test on x86_32 and x86_64 by using
lrintf to get the nearest integral value for rgb * max before av_clip.
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-07-02 21:12:37 +08:00
Guo, Yejun
9bcf2aa477
vf_dnn_processing.c: add dnn backend openvino
...
We can try with the srcnn model from sr filter.
1) get srcnn.pb model file, see filter sr
2) convert srcnn.pb into openvino model with command:
python mo_tf.py --input_model srcnn.pb --data_type=FP32 --input_shape [1,960,1440,1] --keep_shape_ops
See the script at https://github.com/openvinotoolkit/openvino/tree/master/model-optimizer
We'll see srcnn.xml and srcnn.bin at current path, copy them to the
directory where ffmpeg is.
I have also uploaded the model files at https://github.com/guoyejun/dnn_processing/tree/master/models
3) run with openvino backend:
ffmpeg -i input.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=openvino:model=srcnn.xml:input=x:output=srcnn/Maximum -y srcnn.ov.jpg
(The input.jpg resolution is 720*480)
Also copy the logs on my skylake machine (4 cpus) locally with openvino backend
and tensorflow backend. just for your information.
$ time ./ffmpeg -i 480p.mp4 -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.tf.mp4
…
frame= 343 fps=2.1 q=31.0 Lsize= 2172kB time=00:00:11.76 bitrate=1511.9kbits/s speed=0.0706x
video:1973kB audio:187kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.517637%
[aac @ 0x2f5db80] Qavg: 454.353
real 2m46.781s
user 9m48.590s
sys 0m55.290s
$ time ./ffmpeg -i 480p.mp4 -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=openvino:model=srcnn.xml:input=x:output=srcnn/Maximum -y srcnn.ov.mp4
…
frame= 343 fps=4.0 q=31.0 Lsize= 2172kB time=00:00:11.76 bitrate=1511.9kbits/s speed=0.137x
video:1973kB audio:187kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.517640%
[aac @ 0x31a9040] Qavg: 454.353
real 1m25.882s
user 5m27.004s
sys 0m0.640s
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2020-07-02 09:56:55 +08:00
Guo, Yejun
ff37ebaf30
dnn: add openvino as one of dnn backend
...
OpenVINO is a Deep Learning Deployment Toolkit at
https://github.com/openvinotoolkit/openvino , it supports CPU, GPU
and heterogeneous plugins to accelerate deep learning inferencing.
Please refer to https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md
to build openvino (c library is built at the same time). Please add
option -DENABLE_MKL_DNN=ON for cmake to enable CPU path. The header
files and libraries are installed to /usr/local/deployment_tools/inference_engine/
with default options on my system.
To build FFmpeg with openvion, take my system as an example, run with:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/deployment_tools/inference_engine/lib/intel64/:/usr/local/deployment_tools/inference_engine/external/tbb/lib/
$ ../ffmpeg/configure --enable-libopenvino --extra-cflags=-I/usr/local/deployment_tools/inference_engine/include/ --extra-ldflags=-L/usr/local/deployment_tools/inference_engine/lib/intel64
$ make
Here are the features provided by OpenVINO inference engine:
- support more DNN model formats
It supports TensorFlow, Caffe, ONNX, MXNet and Kaldi by converting them
into OpenVINO format with a python script. And torth model
can be first converted into ONNX and then to OpenVINO format.
see the script at https://github.com/openvinotoolkit/openvino/tree/master/model-optimizer/mo.py
which also does some optimization at model level.
- optimize at inference stage
It optimizes for X86 CPUs with SSE, AVX etc.
It also optimizes based on OpenCL for Intel GPUs.
(only Intel GPU supported becuase Intel OpenCL extension is used for optimization)
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
2020-07-02 09:36:34 +08:00
Paul B Mahol
cca982ee01
avfilter/vf_colorbalance: remove wrong addition
2020-06-29 14:52:37 +02:00
Limin Wang
12c42c709e
avfilter/vf_showinfo: add a \n for end of ERROR and WARNNING log
...
Note for info level, one extra \n will be print after the log.
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-06-28 09:00:28 +08:00
exwm
32d6fe23b6
avfilter/zoompan: add in_time variable
...
Currently, the zoompan filter exposes a 'time' variable (missing from docs) for use in
the 'zoom', 'x', and 'y' expressions. This variable is perhaps better named
'out_time' as it represents the timestamp in seconds of each output frame
produced by zoompan. This patch adds aliases 'out_time' and 'ot' for 'time'.
This patch also adds an 'in_time' (alias 'it') variable that provides access
to the timestamp in seconds of each input frame to the zoompan filter.
This helps to design zoompan filters that depend on the input video timestamps.
For example, it makes it easy to zoom in instantly for only some portion of a video.
Both the 'out_time' and 'in_time' variables have been added in the documentation
for zoompan.
Example usage of 'in_time' in the zoompan filter to zoom in 2x for the
first second of the input video and 1x for the rest:
zoompan=z='if(between(in_time,0,1),2,1):d=1'
V2: Fix zoompan filter documentation stating that the time variable
would be NAN if the input timestamp is unknown.
V3: Add 'it' alias for 'in_time. Add 'out_time' and 'ot' aliases for 'time'.
Minor corrections to zoompan docs.
Signed-off-by: exwm <thighsman@protonmail.com>
2020-06-25 10:27:07 +02:00
Ting Fu
13f5613e68
dnn_backend_native_layer_mathunary: add atan support
...
It can be tested with the model generated with below python script:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.atan(x)
x2 = tf.divide(x1, 3.1416/4) # pi/4
y = tf.identity(x2, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
2020-06-25 08:41:50 +08:00
Ting Fu
461485feac
dnn_backend_native_layer_mathunary: add acos support
...
It can be tested with the model generated with below python script:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.acos(x)
x2 = tf.divide(x1, 3.1416/2) # pi/2
y = tf.identity(x2, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
2020-06-25 08:41:50 +08:00
Ting Fu
486c0c419d
dnn_backend_native_layer_mathunary: add asin support
...
It can be tested with the model generated with below python script:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.asin(x)
x2 = tf.divide(x1, 3.1416/2) # pi/2
y = tf.identity(x2, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
2020-06-25 08:41:50 +08:00
Paul B Mahol
ce297b44d3
avfilter/vf_v360: do not ignore return value of allocate_plane()
2020-06-23 21:55:40 +02:00
Paul B Mahol
00a5df71ad
avfilter/vf_v360: add orthographic projection support
2020-06-23 16:00:02 +02:00
Paul B Mahol
44ce333f03
avfilters/vf_v360: add equisolid projection support
2020-06-22 14:41:36 +02:00
Andreas Rheinhardt
3f2be5372e
avfilter/vf_showpalette: Don't pretend disp_palette can fail
...
It can't fail, yet it returns an int and other code checks whether it
failed; yet if it did fail, an AVFrame would leak. One could of course
add an av_frame_free for this (that compilers could optimize away), yet
it is easier to simply stop pretending that disp_palette could fail.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-06-22 13:52:01 +02:00
Paul B Mahol
fdac3c80ac
avfilter/af_ladspa: check return value of getenv()
2020-06-21 21:35:40 +02:00
Paul B Mahol
683a1599d4
avfilter/af_ladspa: add latency compensation
2020-06-21 21:35:40 +02:00
Paul B Mahol
842bc312ad
avfilter/af_ladspa: check another directory for plugins
2020-06-21 14:48:27 +02:00
Limin Wang
548ef7a12b
avfilter: add D2TS, TS2D, TS2T as a common macro in internal.h
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-06-19 23:12:49 +08:00
Limin Wang
dacae40a4b
avfilter/vf_overlay: add yuv420p10 and yuv422p10 10bit format support
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-06-19 07:14:46 +08:00
Limin Wang
4d787c16e8
avfilter/vf_overlay: support for 8bit and 10bit overlay with macro-based function
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-06-19 07:14:46 +08:00
Guo Yejun
0b3bd001ac
dnn_backend_native: check operand index
...
it fixed the issue in https://trac.ffmpeg.org/ticket/8716
2020-06-17 13:42:52 +08:00
Guo Yejun
fc932195ab
dnn_backend_native.c: refine code for fail case
2020-06-17 13:42:52 +08:00
Limin Wang
567d571b20
avfilter/vf_showinfo: display H.26[45] user data unregistered sei message
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-06-15 07:19:55 +08:00
Paul B Mahol
c0e7164ba6
avfilter/vf_vaguedenoiser: fix small typo in option explanation
2020-06-13 00:41:16 +02:00
Paul B Mahol
e65d76fb94
avfilter/af_rubberband: adjust nb_samples after every command
2020-06-13 00:21:07 +02:00
Ting Fu
22d0860c13
dnn_backend_native_layer_mathunary: add tan support
...
It can be tested with the model generated with below python scripy
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.multiply(x, 0.78)
x2 = tf.tan(x1)
y = tf.identity(x2, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
2020-06-11 11:10:51 +08:00
Ting Fu
88fb494f42
dnn_backend_native_layer_mathunary: add cos support
...
It can be tested with the model generated with below python scripy
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.multiply(x, 1.5)
x2 = tf.cos(x1)
y = tf.identity(x2, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
2020-06-11 11:10:51 +08:00
Ting Fu
0b6d3f0d83
dnn_backend_native_layer_mathunary: add sin support
...
It can be tested with the model file generated with below python scripy:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.multiply(x, 3.14)
x2 = tf.sin(x1)
y = tf.identity(x2, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo Yejun <yejun.guo@intel.com>
2020-06-11 11:10:51 +08:00
Anton Khirnov
c7d8d8d8d9
vf_spp: switch to child_class_iterate()
2020-06-10 12:36:44 +02:00
Anton Khirnov
6bfac4ee6f
vf_scale: switch to child_class_iterate()
2020-06-10 12:36:44 +02:00
Anton Khirnov
344149cf01
framesync: switch to child_class_iterate()
2020-06-10 12:36:44 +02:00
Anton Khirnov
aba98de6b8
avfilter: switch to child_class_iterate()
2020-06-10 12:36:44 +02:00
Anton Khirnov
342230a537
af_resample: switch to child_class_iterate()
2020-06-10 12:36:44 +02:00
Anton Khirnov
3dd324427a
af_aresample: switch to child_class_iterate()
2020-06-10 12:36:44 +02:00
Anton Khirnov
0d6b4351c6
Remove unnecessary use of avcodec_close().
...
Replace it with avcodec_free_context() or drop it completely as
appropriate.
2020-06-10 11:31:16 +02:00
Michael Niedermayer
c5079bf3bc
Bump minor versions after branching 4.3
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-06-08 22:49:04 +02:00
Michael Niedermayer
0a8a96c251
Bump minor versions to separate 4.3 from master
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-06-08 22:49:04 +02:00
Paul B Mahol
bd6336b970
avfilter/vf_vaguedenoiser: add new type of threshold
2020-06-07 15:20:25 +02:00
Paul B Mahol
6c57b0d63a
avfilter/vf_vaguedenoiser: remove excessive code from soft thresholding
2020-06-07 15:20:11 +02:00
Paul B Mahol
7826fbfeaa
avfilter/avf_showspectrum: properly handle EOF case
2020-06-06 19:49:14 +02:00
Paul B Mahol
1c32d7dfcf
avfilter/asrc_anoisesrc: switch to activate
...
Allows to set EOF timestamp.
2020-06-06 15:53:07 +02:00
Wu Zhiwen
b6d7c4c1d4
dnn/native: fix typo for definition of DOT_INTERMEDIATE
...
Signed-off-by: Wu Zhiwen <zhiwen.wu@intel.com>
Reviewed-by: Guo Yejun <yejun.guo@intel.com>
2020-06-03 09:57:22 +08:00
Andreas Rheinhardt
317b722c51
avfilter/vf_lut3d: Fix mixed declaration and code
...
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-06-01 15:21:40 +02:00
Mark Reid
a1221b96d8
avfilter/vf_lut3d: prelut support for 3d cinespace luts
...
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-05-31 00:55:12 +02:00
Paul B Mahol
1329db8cfb
avfilter/af_aiir: simplify polynomial evaluation
2020-05-30 18:04:14 +02:00
Paul B Mahol
aac16abd92
avfilter/af_aiir: use correct size when allocating in zp2tf
2020-05-30 18:04:14 +02:00
Paul B Mahol
726dbc57f8
avfilter: add dblur video filter
2020-05-30 18:04:14 +02:00
Jun Zhao
018cd437f8
lavfi/aiir: Refine the pad/vpad related operation
...
move the pad/vpad related operation with more natural
coding style.
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-05-30 19:02:43 +08:00
Jun Zhao
ff8329a730
lavfi/afir: fix vpad.name leak
...
Fix vpad.name leak in error path, move the vpad related operation
only if enabled show IR frequency response.
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-05-30 19:02:34 +08:00
Paul B Mahol
6485b54477
Revert "avfilter/af_aiir: move response drawing as last step"
...
This reverts commit ca7095a907
.
2020-05-30 10:05:19 +02:00
Paul B Mahol
3fc7b01c52
avfilter/af_aiir: improve response calculation with zp coefficients
2020-05-30 10:05:19 +02:00
Paul B Mahol
e2e8121eaa
avfilter/af_aiir: add S-plane support
2020-05-30 10:05:19 +02:00
Paul B Mahol
327b52412d
avfilter/af_aiir: make it clear that transfer function is digital one
2020-05-30 10:05:19 +02:00
Paul B Mahol
1206a10d9c
avfilter/af_biquads: implement 1st order allpass
2020-05-30 09:57:04 +02:00
Lynne
83fa39eb06
lavfi/vulkan: use av_get_random_seed instead of rand
...
We need at least a few bits of entropy to determine the start index of each
queue, in order to let filters run in parallel as much as possible, and
rand() is not thread safe and disrupts any external API's usage of rand,
so instead replace it with av_get_random_seed.
While it has more overhead than rand, we only run it once per filter upon init.
2020-05-29 13:10:58 +01:00
Ting Fu
f73cc61bf5
dnn_backend_native_layer_mathunary: add abs support
...
more math unary operations will be added here
It can be tested with the model file generated with below python scripy:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpeg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.subtract(x, 0.5)
x2 = tf.abs(x1)
y = tf.identity(x2, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Ting Fu <ting.fu@intel.com>
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
2020-05-28 11:04:21 +08:00
Paul B Mahol
d5f87f8567
avfilter/vf_blend: add support for float formats
2020-05-26 23:27:02 +02:00
Lynne
c0344cbfb0
lavfi/vulkan: fix queue counts and set indices
2020-05-26 10:52:11 +01:00
Lynne
fb49d5c0b1
lavfi/vulkan: use dedicated allocation for buffers when necessary
2020-05-26 10:52:11 +01:00
Lynne
727cac88b8
lavfi/vulkan: use all enabled queues in the queue family
...
This should significantly improve the performance with certain
filterchains.
2020-05-23 19:07:50 +01:00
Lynne
fac17fd46f
lavfi/vulkan: fix 2 minor memory leaks
2020-05-23 19:07:48 +01:00
Nicolas George
88567a2e52
lavfi: add untile filter.
2020-05-23 15:52:27 +02:00
Nicolas George
2a52f19a91
lavfi/framesync: use av_gcd_q().
2020-05-23 15:51:45 +02:00
Nicolas George
beb98c0181
lavfi/tests/formats: reindent.
2020-05-23 15:50:20 +02:00
Nicolas George
d5e5c6862b
lavfi/formats: remove dead code.
...
Move the contents of all_channel_layouts.inc directly into
libavfilter/tests/formats.c.
2020-05-23 15:50:20 +02:00
Nicolas George
df123590f0
lavfi/vf_crop: use ff_formats_pixdesc_filter().
2020-05-23 15:50:20 +02:00
Nicolas George
563e1df5d6
lavfi/formats: add ff_formats_pixdesc_filter().
2020-05-23 15:50:20 +02:00
Mark Reid
04f67dcccf
avfilter/vf_lut3d: initial float pixel format support
...
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-05-23 00:26:38 +02:00
Anton Khirnov
f30a41a608
Stop hardcoding align=32 in av_frame_get_buffer() calls.
...
Use 0, which selects the alignment automatically.
2020-05-22 14:38:57 +02:00
Paul B Mahol
ca7095a907
avfilter/af_aiir: move response drawing as last step
2020-05-22 14:14:15 +02:00
Paul B Mahol
8c825e43f8
avfilter/af_aiir: fix first denominator calculation
2020-05-22 14:12:06 +02:00
Paul B Mahol
07a9e5ec5e
avfilter/af_aiir: add more descriptive options aliases
2020-05-22 12:37:17 +02:00
Paul B Mahol
ffda57b800
avfilter/af_aiir: export normalize option
...
And enable it in all modes by default.
2020-05-22 12:30:59 +02:00
Paul B Mahol
1fc5ddf774
avfilter/af_aiir: fix first delay value
2020-05-22 11:02:45 +02:00
Paul B Mahol
86822cfcd9
avfilter/af_aiir: fix phase and group delay calculation
...
Properly unwrap phase.
2020-05-20 12:08:32 +02:00
Paul B Mahol
b559a5882f
avfilter/af_aiir: fix invalid memory access with tf filtering
2020-05-19 20:10:34 +02:00
Paul B Mahol
5646d02cb3
avfilter/vf_chromakey: fix formula for calculation of difference
2020-05-19 20:10:34 +02:00
Paul B Mahol
8b0575d763
avfilter/vf_colorkey: fix formula for calculation of difference
...
Also fixes colorhold filtering.
2020-05-19 20:10:34 +02:00
Paul B Mahol
f63939dedb
avfilter: add gradients source video filter
2020-05-19 20:10:34 +02:00
Paul B Mahol
1ead7ed5bf
avfilter/vsrc_sierpinski: unbreak configuring rate value
2020-05-16 11:13:46 +02:00
Paul B Mahol
d99ed7367b
avfilter/vsrc_mandelbrot: unbreak configuring rate value
2020-05-16 11:10:32 +02:00
Marton Balint
b4bcae4e0e
Revert "avfilter/vf_framerate: if metadata lavfi.scd.mafd exists, we'll use it first"
...
This reverts commit 339593ca90
.
Fixes null pointer dereference.
Signed-off-by: Marton Balint <cus@passwd.hu>
2020-05-15 18:35:51 +02:00
Marton Balint
7f3a946216
Revert "avfilter/vf_minterpolate: if metadata lavfi.scd.mafd exists, we'll use it first"
...
This reverts commit d88e1c9838
.
Fixes null pointer dereference.
Signed-off-by: Marton Balint <cus@passwd.hu>
2020-05-15 18:35:51 +02:00
Limin Wang
815a3b393c
avfilter/vf_minterpolate: change the default threshold to get better scene change detect result
...
./ffmpeg -loglevel debug -i ../fate-suite/svq3/Vertical400kbit.sorenson3.mov -vf
minterpolate=fps=60:mi_mode=blend -an -f null -
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 1600
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 4120
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 5780
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 6700
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 8140
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 9740
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 14060
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 15680
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 18480
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 20020
[Parsed_minterpolate_0 @ 0x7fe7f3e193c0] scene changed, input pts 21740
The results are consistent with tests/ref/fate/filter-metadata-scenedetect
For the master, it'll detect more than 20 scene change for the same source.
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-14 23:03:07 +08:00
Limin Wang
61cc009d53
avfilter/vf_minterpolate: correct the mafd calculation
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-14 23:03:07 +08:00
Limin Wang
d88e1c9838
avfilter/vf_minterpolate: if metadata lavfi.scd.mafd exists, we'll use it first
...
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-14 23:03:07 +08:00
Limin Wang
339593ca90
avfilter/vf_framerate: if metadata lavfi.scd.mafd exists, we'll use it first
...
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-14 23:03:06 +08:00
Limin Wang
d62d4e05e8
avfilter/vf_scdet: add filter to detect scene change
...
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-14 23:03:06 +08:00
lance.lmwang@gmail.com
5ed20a74b7
avfilter/vf_colorbalance:: Fix for framecrc bitexact for 32bit and 64bit system
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-14 09:15:46 +08:00
Martin Storsjö
353aecbb28
pixblockdsp, avdct: Add get_pixels_unaligned
...
Use this in vf_spp.c, where the get_pixels operation is done on
unaligned source addresses.
Hook up the x86 (mmx and sse) versions of get_pixels to this
function pointer, as those implementations seem to support unaligned
use.
This fixes fate-filter-spp on armv7.
Signed-off-by: Martin Storsjö <martin@martin.st>
2020-05-13 13:20:08 +03:00
Anton Khirnov
b84a2b91fd
vf_showinfo: support AV_FRAME_DATA_VIDEO_ENC_PARAMS
2020-05-12 09:37:47 +02:00
Michael Niedermayer
52cc86cae1
avfilter/vf_spp: Fix endian-dependance in add_block()
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-05-12 01:00:28 +02:00
Michael Niedermayer
dde86d0ddf
avfilter/vf_spp: Remove unused AVCodecContext
...
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-05-12 01:00:28 +02:00
Lynne
70d396c8af
Revert "hwcontext_vulkan: only use one semaphore per image"
...
This reverts commit 97b526c192
.
It broke the API, and assumed no other APIs used multiple semaphores.
This also disallowed certain optimizations to happen.
Dealing with APIs that give or expect single semaphores is easier when
we use per-image semaphores.
2020-05-11 23:48:26 +01:00
Limin Wang
a058d81570
avfilter/vf_signalstats: reindent after last commit
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-10 22:32:34 +08:00
Limin Wang
25bb72af62
avfilter/vf_signalstats: make the alloc array used for any bit depth
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-10 22:32:34 +08:00
Limin Wang
764efda192
avfilter/vf_signalstats: add SignalstatsContext.maxsize variable
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-10 22:32:34 +08:00
Limin Wang
a8c762a17d
avfilter/vf_signalstats: rename config_props -> config_output
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-10 22:32:34 +08:00
Guo, Yejun
71e28c5422
dnn/native: add native support for minimum
...
it can be tested with model file generated with below python script:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
x1 = tf.minimum(0.7, x)
x2 = tf.maximum(x1, 0.4)
y = tf.identity(x2, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
2020-05-08 15:22:27 +08:00
Sebastian Dröge
ed3da72583
s->target_i and global are in dB but s->target_tp and true_peak are
...
linear. Instead of mixing these in the calculations, convert the former
first to have all following calculations in the same unit.
Signed-off-by: Kyle Swanson <k@ylo.ph>
2020-05-01 21:36:07 -07:00
Limin Wang
f441fadbcf
avfilter/af_adelay: Check sscanf() return value
...
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-01 06:36:36 +08:00
Limin Wang
ee5d6d2ef8
avfilter/vf_mix: Check sscanf() return value
...
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-05-01 06:36:36 +08:00
Paul B Mahol
0a181c2cb1
avfilter/af_crossfeed: make options runtime configurable
2020-04-30 12:18:36 +02:00
Paul B Mahol
35d6001815
avfilter/af_crossfeed: make slope configurable
2020-04-30 12:18:36 +02:00
Paul B Mahol
0ec61fcff7
avfilter/af_crossfeed: fix calculation of alpha parameter
...
Use A in calculation.
2020-04-30 12:18:36 +02:00
Paul B Mahol
c7d8082357
avfilter: add asubboost filter
2020-04-30 12:18:36 +02:00
Paul B Mahol
2970846fc1
avfilter/vf_v360: make FOV adjusted for dual fisheye too
...
Remove any usage of padding for this format.
2020-04-29 19:18:25 +02:00
Paul B Mahol
d8147c4e2d
avfilter/af_amix: make weights option runtime configured
2020-04-29 19:18:25 +02:00
Steven Liu
d813e43b3d
avfilter/vf_v360: adjustment out_pad and in_pad maximum value to 1/10
...
Because not every user know about in_pad and out_pad reasonable value range
so maybe try to set 1.0, but setting 1.0 is so hugh to get an fatal error.
Suggested-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
2020-04-29 13:48:02 +01:00
Paul B Mahol
f53fc935b8
avfilter/vf_pixscope: also show standard deviation of zoomed area
2020-04-26 12:27:36 +02:00
Paul B Mahol
35bcbfd6da
avfilter/f_interleave: no need to check for inlink eof if non-empty queue
...
Also set state to ready if there is any inlink with queued frame.
2020-04-25 13:35:22 +02:00
Paul B Mahol
ec3b5deab4
avfilter/f_interleave: make sure that all frames in inlink queue are used
2020-04-25 13:07:13 +02:00
Paul B Mahol
b29b934e4f
avfilter/f_interleave: add duration option
2020-04-25 12:35:22 +02:00
Lynne
b136a98303
scale_vulkan: take frame cropping parameters in account when scaling
...
Then sample_aspect_ratio line at the bottom was cargo-culted from the vaapi
scaling filter, but its unnecesary.
2020-04-23 18:23:45 +01:00
Lynne
f66ac83c22
overlay_vulkan: add support for overlaying images with an alpha channel
2020-04-23 18:23:45 +01:00
Guo, Yejun
8ce9d88f93
dnn/native: add native support for divide
...
it can be tested with model file generated with below python script:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
z1 = 2 / x
z2 = 1 / z1
z3 = z2 / 0.25 + 0.3
z4 = z3 - x * 1.5 - 0.3
y = tf.identity(z4, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
2020-04-22 13:15:00 +08:00
Guo, Yejun
ef79408e97
dnn/native: add native support for 'mul'
...
it can be tested with model file generated from above python script:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
z1 = 0.5 + 0.3 * x
z2 = z1 * 4
z3 = z2 - x - 2.0
y = tf.identity(z3, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
2020-04-22 13:14:47 +08:00
Guo, Yejun
6aa7e07e7c
dnn/native: add native support for 'add'
...
It can be tested with the model file generated with below python script:
import tensorflow as tf
import numpy as np
import imageio
in_img = imageio.imread('input.jpg')
in_img = in_img.astype(np.float32)/255.0
in_data = in_img[np.newaxis, :]
x = tf.placeholder(tf.float32, shape=[1, None, None, 3], name='dnn_in')
z1 = 0.039 + x
z2 = x + 0.042
z3 = z1 + z2
z4 = z3 - 0.381
z5 = z4 - x
y = tf.math.maximum(z5, 0.0, name='dnn_out')
sess=tf.Session()
sess.run(tf.global_variables_initializer())
graph_def = tf.graph_util.convert_variables_to_constants(sess, sess.graph_def, ['dnn_out'])
tf.train.write_graph(graph_def, '.', 'image_process.pb', as_text=False)
print("image_process.pb generated, please use \
path_to_ffmpeg/tools/python/convert.py to generate image_process.model\n")
output = sess.run(y, feed_dict={x: in_data})
imageio.imsave("out.jpg", np.squeeze(output))
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
2020-04-22 13:14:30 +08:00
Paul B Mahol
4457f75c65
avfilter: add maskedthreshold filter
2020-04-18 12:34:49 +02:00
Paul B Mahol
9987f6d01e
avfilter: add tmedian filter
2020-04-18 12:34:49 +02:00
Limin Wang
403bee30a5
avfilter/af_acrossover: Check sscanf() return value
...
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-04-17 16:56:13 +02:00
Paul B Mahol
24db9372eb
avfilter/af_astats: add noise floor count stat
2020-04-17 13:28:01 +02:00
Paul B Mahol
715da29501
avfilter/af_astats: add slice threading support
2020-04-17 13:26:44 +02:00