Commit Graph

97481 Commits

Author SHA1 Message Date
Andreas Rheinhardt a501947a84 avcodec/mjpeg2jpeg_bsf: Remove unnecessary header
libavutil/mem.h is unneeded since 33d18982fa,
the commit that introduced the new packet-based bsf API, because with
this switch the allocations were no longer performed directly, but by
av_new_packet().

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-24 05:00:15 +02:00
Andreas Rheinhardt 88a37f0f5b avcodec/noise_bsf: Remove unnecessary headers
With 33d18982fa, the commit introducing
the new packet-based bsf API, a new buffer was no longer allocated
directly, but via av_new_packet(), so that libavutil/mem.h was no longer
needed.

Moreover since commit dc99ee6b08
av_packet_make_writable() is employed which copies the data in case it
is unavoidable so that string.h is no longer used (it was used for
memcpy()).

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-24 05:00:15 +02:00
Andreas Rheinhardt 60f9ecdccd avcodec/dump_extradata_bsf: Remove unnecessary header
Since 33d18982fa (the commit that
introduced the new bsf API) allocating an enlarged buffer in case
extradata needs to be added to a packet is done via av_new_packet(),
so that libavutil/mem.h is no longer needed.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-24 05:00:15 +02:00
Andreas Rheinhardt 6063b39e4d avcodec/dca_core_bsf: Remove unnecessary header
This bsf never needed libavutil/mem.h.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-24 05:00:15 +02:00
Andreas Rheinhardt 9f8dc586a0 avcodec/chomp_bsf: Remove unnecessary header
This bsf never needed internal.h.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-24 05:00:15 +02:00
Andreas Rheinhardt cc489e43de avcodec/vp9_raw_reorder_bsf: Remove unnecessary header
This bsf doesn't have any options, so including libavutil/opt.h is
unnecessary.

Reviewed-by: Peter Ross <pross@xvid.org>
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-24 05:00:02 +02:00
Andreas Rheinhardt 9f3d3ff2ec avformat/mux: Remove unnecessary headers
mux.c was split from utils.c in 55f9037f38
and during this split all headers were simply copied without checking if
they were only needed in the part that stayed in utils.c (or whether
these haeders were needed at all). As a result quite a lot of headers
in mux.c are unnecessary. This commit removes them.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-24 04:44:14 +02:00
Andreas Rheinhardt 7afb161bc1 avformat/utils: Remove superfluous headers
stdarg.h has been included in 780d7897a9
for ff_url_join(). This header became unnecessary when this function was
moved into a separate file in df9f22d42b.

libavutil/pixdesc.h has been included for av_get_pix_fmt_name() in
603b8bc2a1 and is unused since commit
2fb7501938 that removed the stuff belonging
to FF_API_FORMAT_PARAMETERS. Notice that this file still uses
AV_PIX_FMT_NONE and that therefore the header libavutil/pixfmt.h has
been included (this header is included in pixdesc.h as well as also in
libavutil/internal.h which is also included).

libavutil/time_internal.h has been included for gmtime_r() in commit
e7dd97b5d8cd6ea150446591f37a5946e8ab7cfb; it is unused since commit
b72a7b96f8 which basically moved the code
making use of gmtime_r() to libavutil/dict.c to use in
avpriv_dict_set_timestamp().

audiointerleave.h has been added in c26e58e32c
because of ff_interleave_compare_dts() (at that time the muxing code
was not split from utils.c yet); said function became static in commit
101e1f6ff9, making this header redundant.

metadata.h has been mostly included for what now resides in
libavutil/dict.h. The stuff that now resides in metadata.h has only been
used briefly: From commits ed7694d8cf to
d60a9f52eb.

riff.h has been added in 45da8124a0
because riff.h once contained declarations for (ff_)codec_get_tag().
This was changed in bfe5454cd2.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-24 04:42:28 +02:00
Andreas Rheinhardt e35a59ea63 avformat/webvttdec: Remove write-only variable
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-23 20:09:38 +02:00
Andreas Rheinhardt 476a724357 avformat/r3d: Remove write-only array
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-23 20:09:38 +02:00
Andreas Rheinhardt 6b0c94780d libavcodec/avpacket: Don't simply forward return value of av_dict_set()
The documentation of av_dict_set() states that values >= 0 indicate
success, whereas av_packet_unpack_dictionary() implies that return
values > 0 are impossible. So only forward the return value of
av_dict_set() in av_packet_unpack_dictionary() on error.

(Btw: av_dict_set() does currently not return values > 0.)

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-23 19:42:03 +02:00
Michael Niedermayer ae2537f53e avcodec/hevc_mp4toannexb_bsf: Check nalu_size
Fixes: Timeout (29sec -> 5ms)
Fixes: 20237/clusterfuzz-testcase-minimized-ffmpeg_BSF_HEVC_MP4TOANNEXB_fuzzer-5165615044362240

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-04-23 19:30:07 +02:00
Gautam Ramakrishnan e58766ba12 libavcodec/jpeg2000dec.c: ROI marker support
This patch adds support for decoding images
with a Region of Interest. Allows decoding
samples such as p0_03.j2k. This patch should
fix ticket #4681.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-04-23 19:30:07 +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
ManojGuptaBonda 4e81324362 configure: enable ffnvcodec, nvenc, nvdec for aarch64
Adding the support to build FFMPEG with HW accelerated decode(nvdec) and
encode on aarch64 architecture.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2020-04-23 12:44:42 +02:00
Gyan Doshi fc8a239e9d avformat/mpegtsenc: use av_log_once for data stream warning 2020-04-23 11:31:35 +05:30
Jun Zhao 54f100272a doc/APIChanges: add AV_PKT_DATA_DOVI_CONF entry
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-04-23 08:06:42 +08:00
Jun Zhao 7fd70ad9e9 lavc/version: bump minor version for DOVI sidedata
Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-04-23 08:06:30 +08:00
Jun Zhao b8243b3edf lavf/movenc: enable dvcC/dvvC box support from DOVI sidedata
enable dvcC/dvvC box support from DOVI sidedata.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-04-23 08:06:19 +08:00
Jun Zhao e689a759c6 fftools/ffprobe: support DOVI sidedata
support DOVI sidedata.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-04-23 08:06:07 +08:00
Jun Zhao 446dac9ccf lavf/dump: dump DOVI side data
dump DOVI side data.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-04-23 08:05:56 +08:00
vacingfang 1483cfa817 lavf/mov: support dvcC/dvvC box for DOVI
support dvcC/dvcC box from spec Dolby Vision Streams Within the
ISO Base MediaFile Format Version 2.1.2
(https://www.dolby.com/in/en/technologies/dolby-vision/dolby-vision\
-bitstreams-within-the-iso-base-media-file-format-v2.1.2.pdf)

export the DOVI information to sidedata.

Signed-off-by: vacingfang <vacingfang@tencent.com>
2020-04-23 08:05:46 +08:00
vacingfang 22b05ccb38 lavf/mpegts: support DOVI Video Stream Descriptor
support DOVI Video Stream Descriptor from Dolby Vision Streams
Within the MPEG-2 Transport Stream Format V1.2

From the spec: https://www.dolby.com/us/en/technologies/\
dolby-vision/dolby-vision-bitstreams-in-mpeg-2-transport-\
stream-multiplex-v1.2.pdf.

export the DOVI information with sidedata.

Signed-off-by: vacingfang <vacingfang@tencent.com>
2020-04-23 08:05:33 +08:00
vacingfang 103885d955 lavutil: add DOVI related header
add DOVI related struct

Signed-off-by: vacingfang <vacingfang@tencent.com>
2020-04-23 08:05:15 +08:00
Jun Zhao 0e1db79e37 lavc: add a new sidedata type for DOVI
add a new sidedata type for DOVI.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-04-23 08:05:06 +08:00
Vitaly Buka f163d30de2 mpeg4videoenc: Don't crash with -fsanitize=bounds
Also the patch makes this code consistent with mpeg4videodec.c

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-04-22 23:21:10 +02:00
Gautam Ramakrishnan 6bd4a26168 libavcodec/jpeg2000dec.c: Support for CRG marker
This patch adds support to skip the CRG marker.
The CRG marker, is an informational marker.
Allows samples such as p0_03.j2k to be decoded.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-04-22 22:57:38 +02:00
Michael Niedermayer b4a33387cb avcodec/iff: Check length before memcpy() in decode_deep_rle32()
Fixes: out of array read
Fixes: 20796/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_IFF_ILBM_fuzzer-5111364702175232.fuzz

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-04-22 22:57:38 +02:00
Michael Niedermayer bc41a29a5a avcodec/iff: Fix invalid pointer intermediates in decode_deep_rle32()
Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-04-22 22:57:38 +02:00
Thilo Borgmann 64b80cb04b lavd/avfoundation.m: Do not use transport controls for screen capture devices. 2020-04-22 16:52:36 +02:00
Thilo Borgmann 3c9185bf3a lavd/avfoundation.m: Remove transport controls for iOS. 2020-04-22 16:52:36 +02:00
Gyan Doshi 68d9c0be89 avformat/mpegtsenc: don't print warning for DVB text streams
They can be demuxed by ffmpeg.
2020-04-22 16:07:04 +05:30
Guo, Yejun 2e38c63630 dnn-layer-mathbinary-test: add unit test for divide
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
2020-04-22 13:15:09 +08: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 265b5bd324 dnn-layer-mathbinary-test: add unit test for 'mul'
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
2020-04-22 13:14:55 +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 17006196a6 dnn-layer-mathbinary-test: add unit test for add
Signed-off-by: Guo, Yejun <yejun.guo@intel.com>
2020-04-22 13:14:39 +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
Jun Zhao 36083450a4 lavf/tls_mbedtls: fix resource leak
fix resource leak in mbedtls part.

fix #8614

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-04-22 12:41:29 +08:00
Andreas Rheinhardt 904b25a550 avformat/matroskaenc: Use comparison instead of assignment
This bug was introduced in 3589b3f2e2.
Fixes Coverity ID 1462425.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-22 03:45:44 +02:00
Martin Storsjö 9025d5c5ce swscale: aarch64: Don't clobber callee-saved registers v8-v15
Signed-off-by: Martin Storsjö <martin@martin.st>
2020-04-21 23:41:13 +03:00
Marton Balint 7f2649bb46 avformat/mpegtsenc: use the correct stream_types and write HDMV descriptors for m2ts
Fixes ticket #2622.

Signed-off-by: Marton Balint <cus@passwd.hu>
2020-04-21 21:28:42 +02:00
Marton Balint 3958244c91 avformat/mpegtsenc: factorize determining stream_type
Signed-off-by: Marton Balint <cus@passwd.hu>
2020-04-21 21:28:29 +02:00
Marton Balint bcc19933af avformat/mpegtsenc: only allow one program in m2ts mode
The standard does not allow more.

Signed-off-by: Marton Balint <cus@passwd.hu>
2020-04-21 21:28:29 +02:00
Marton Balint 422f0a6136 avformat/mpegtsenc: use standard pids for m2ts
Signed-off-by: Marton Balint <cus@passwd.hu>
2020-04-21 21:28:29 +02:00
Błażej Szczygieł 561ba15c97 lavf/tls_gnutls: check for interrupt inside handshake loop
fixes #8080

Signed-off-by: Błażej Szczygieł <spaz16@wp.pl>
2020-04-21 21:14:26 +03:00
Lynne e3c7b22451
hwcontext_vulkan: correctly download and upload flipped images
We derive the destination buffer stride from the input stride,
which meant if the image was flipped with a negative stride,
we'd be FFALIGNING a negative number which ends up being huge,
thus making the Vulkan buffer allocation fail and the whole
image transfer fail.

Only found out about this as OpenGL compositors can copy an entire
image with a single call if its flipped, rather than iterate over
each line.
2020-04-21 19:00:51 +01:00
Andreas Rheinhardt 8a4fda029a avformat/matroskaenc: Cosmetics
Reindentation, removal of { } if they contain only one statement
and moving the return statement to a line of its own in situations
like "if (ret < 0) return ret;". Moreover, several overlong lines
were made shorter and a camelCase variable received a name in line
with our naming conventions.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-21 08:50:22 +02:00
Andreas Rheinhardt e3c54b549a avformat/matroskaenc: Redo handling of FlagDefault
Up until now, the Matroska muxer would mark a track as default if it had
the disposition AV_DISPOSITION_DEFAULT or if there was no track with
AV_DISPOSITION_DEFAULT set; in the latter case even more than one track
of a kind (audio, video, subtitles) was marked as default which is not
sensible.

This commit changes the logic used to mark tracks as default. There are
now three modes for this:
a) In the "infer" mode the first track of every type (audio, video,
subtitles) with default disposition set will be marked as default; if
there is no such track (for a given type), then the first track of this
type (if existing) will be marked as default. This behaviour is inspired
by mkvmerge. It ensures that the default flags will be set in a sensible
way even if the input comes from containers that lack the concept of
default flags. This mode is the default mode.
b) The "infer_no_subs" mode is similar to the "infer" mode; the
difference is that if no subtitle track with default disposition exists,
no subtitle track will be marked as default at all.
c) The "passthrough" mode: Here the track will be marked as default if
and only the corresponding input stream had disposition default.

This fixes ticket #8173 (the passthrough mode is ideal for this) as
well as ticket #8416 (the "infer_no_subs" mode leads to the desired
output).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-04-21 08:36:20 +02:00