ffmpeg.git
20 months agoavutil/aes_ctr: Add method to set 16-byte IV.
Jacob Trimble [Mon, 8 Jan 2018 22:12:43 +0000 (14:12 -0800)]
avutil/aes_ctr: Add method to set 16-byte IV.

Signed-off-by: Jacob Trimble <modmaker@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agoavcodec: v4l2_context: remove unnecessary code
Jorge Ramirez-Ortiz [Tue, 23 Jan 2018 08:41:29 +0000 (09:41 +0100)]
avcodec: v4l2_context: remove unnecessary code

Fixes CID 1418358

Signed-off-by: Jorge Ramirez-Ortiz <jramirez@baylibre.com>
20 months agov4l2_m2m: Fix integer overflow in timestamp handling
Mark Thompson [Sun, 21 Jan 2018 00:52:18 +0000 (00:52 +0000)]
v4l2_m2m: Fix integer overflow in timestamp handling

20 months agoavcodec/mpeg12dec: fix preprocessor check for mpeg1_nvdec hwaccel
James Almer [Mon, 22 Jan 2018 01:57:41 +0000 (22:57 -0300)]
avcodec/mpeg12dec: fix preprocessor check for mpeg1_nvdec hwaccel

Signed-off-by: James Almer <jamrial@gmail.com>
20 months agov4l2_m2m: Fix free of the wrong pointer in an error path
Mark Thompson [Sun, 21 Jan 2018 22:59:29 +0000 (22:59 +0000)]
v4l2_m2m: Fix free of the wrong pointer in an error path

Fixes CIDs #1427821 and #1427822.

20 months agolavfi: add denoise and sharpness VAAPI video filters.
Jun Zhao [Mon, 8 Jan 2018 08:19:17 +0000 (16:19 +0800)]
lavfi: add denoise and sharpness VAAPI video filters.

Most code between them is common, so put them in a new file for
miscellaneous VAAPI filters.

Signed-off-by: Yun Zhou <yunx.z.zhou@intel.com>
Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
20 months agolavfi: add ProcAmp (color balance) VAAPI video filter.
Jun Zhao [Mon, 8 Jan 2018 08:12:41 +0000 (16:12 +0800)]
lavfi: add ProcAmp (color balance) VAAPI video filter.

Add ProcAmp(color balance) vaapi video filter, use the option
like -vf "procamp_vaapi=b=10:h=120:c=2.8:s=3.7" to set
brightness/hue/contrast/saturation.

Signed-off-by: Yun Zhou <yunx.z.zhou@intel.com>
Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
20 months agolavfi: use common VAAPI VPP infrastructure for vf_deinterlace_vaapi.
Jun Zhao [Mon, 8 Jan 2018 08:07:38 +0000 (16:07 +0800)]
lavfi: use common VAAPI VPP infrastructure for vf_deinterlace_vaapi.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
20 months agolavfi: use common VAAPI VPP infrastructure for vf_scale_vaapi.
Jun Zhao [Mon, 8 Jan 2018 08:02:35 +0000 (16:02 +0800)]
lavfi: use common VAAPI VPP infrastructure for vf_scale_vaapi.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
20 months agolavfi: VAAPI VPP common infrastructure.
Jun Zhao [Mon, 8 Jan 2018 07:56:43 +0000 (15:56 +0800)]
lavfi: VAAPI VPP common infrastructure.

Re-work the VAAPI common infrastructure to avoid code duplication
between filters.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
20 months agoavcodec/truemotion2: Fix integer overflow in TM2_RECALC_BLOCK()
Michael Niedermayer [Sat, 20 Jan 2018 03:10:50 +0000 (04:10 +0100)]
avcodec/truemotion2: Fix integer overflow in TM2_RECALC_BLOCK()

Fixes: signed integer overflow: 1477974040 - -1877995504 cannot be represented in type 'int'
Fixes: 4861/clusterfuzz-testcase-minimized-4570316383715328

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agoMAINTAINERS: add myself for avcodec/v4l2_
Jorge Ramirez-Ortiz [Fri, 19 Jan 2018 16:52:32 +0000 (17:52 +0100)]
MAINTAINERS: add myself for avcodec/v4l2_

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agolavc/svq3: Do not write into memory defined as const.
Carl Eugen Hoyos [Thu, 18 Jan 2018 22:31:48 +0000 (23:31 +0100)]
lavc/svq3: Do not write into memory defined as const.

Fixes a warning on ppc:
libavcodec/svq3.c:1055:21: warning: passing argument 1 of ‘av_write_bswap32’ discards 'const' qualifier from pointer target type

20 months agolibavformat/dashdec: Fix for ticket 6856 (filename limited to 1024)
Colin NG [Sun, 21 Jan 2018 05:56:57 +0000 (13:56 +0800)]
libavformat/dashdec: Fix for ticket 6856 (filename limited to 1024)

20 months agolibavformat/dashdec: Fix for ticket 6658 (Dash demuxer segfault)
Colin NG [Sun, 21 Jan 2018 05:35:30 +0000 (13:35 +0800)]
libavformat/dashdec: Fix for ticket 6658 (Dash demuxer segfault)

1 Add function 'resolve_content_path' to propagate the baseURL from
upper level nodes.
 * if no baseURL is available, the path of mpd file will be set as the baseURL.
2 Remove checking for newly established connection.
3 Establish the communication protocol in each connection rather than
 applying one protocol to all connection.

20 months agoavformat/dashdec.c: Download dash content with byte range info
Colin NG [Sun, 21 Jan 2018 05:27:48 +0000 (13:27 +0800)]
avformat/dashdec.c: Download dash content with byte range info

20 months agodashdec: Only free url string if being reused
Brendan McGrath [Sun, 21 Jan 2018 05:20:02 +0000 (13:20 +0800)]
dashdec: Only free url string if being reused

If no representation bandwidth value is set, the url value returned
by get_content_url is corrupt (as it has been freed).
This change ensures the url string is not freed unless it is about
to be reused
Changes since v1:
 1 removed the unneeded 'if' statement (as pointed out by Michael Niedermayer
 2 added comment to make it clear why the av_free was required
Signed-off-by: Brendan McGrath <redmcg@redmandi.dyndns.org>
20 months agoavformat/hlsenc: Check that data is set
Brendan McGrath [Sun, 21 Jan 2018 05:16:42 +0000 (13:16 +0800)]
avformat/hlsenc: Check that data is set

If codecpar->extradata is not set (for example, when the stream goes
through the 'tee' muxer), then a segfault occurs.
This patch ensures the data variable is not null before attempting
to access it
Before the var_stream_map option was available - I was using the tee
muxer to create each resolution as an individual stream.
When running this configuration after the most recent hlsenc change
I hit a segfault
The most simple command which recreates the segfault is:
ffmpeg -i in.ts -map 0:a -map 0:v -c:a aac -c:v h264 -f tee [select=\'a,v\':f=hls]tv_hls_hd.m3u8

Signed-off-by: Brendan McGrath <redmcg@redmandi.dyndns.org>
20 months agodashdec: Make use of frame rate specified in Representation
sfan5 [Sun, 21 Jan 2018 05:14:51 +0000 (13:14 +0800)]
dashdec: Make use of frame rate specified in Representation

If the manifest provides this, setting r_frame_rate
avoids warnings regarding frame rate estimation.

20 months agoavcodec/hevc_parser: use ff_hevc_uninit_parameter_sets()
James Almer [Sat, 20 Jan 2018 19:55:00 +0000 (16:55 -0300)]
avcodec/hevc_parser: use ff_hevc_uninit_parameter_sets()

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
20 months agoavcodec/hevcdec: use ff_hevc_uninit_parameter_sets()
James Almer [Sat, 20 Jan 2018 19:54:51 +0000 (16:54 -0300)]
avcodec/hevcdec: use ff_hevc_uninit_parameter_sets()

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
20 months agoavcodec/hevc_ps: add a function to uninitialize parameter set buffers
James Almer [Sat, 20 Jan 2018 19:54:15 +0000 (16:54 -0300)]
avcodec/hevc_ps: add a function to uninitialize parameter set buffers

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
20 months agolavf/rawdec: Also probe the last byte of mjpeg streams.
Carl Eugen Hoyos [Sat, 20 Jan 2018 15:07:25 +0000 (16:07 +0100)]
lavf/rawdec: Also probe the last byte of mjpeg streams.

Fixes ticket #6957.

20 months agoavcodec: v4l2_m2m: context: fix raising warning on POLLERR
Jorge Ramirez-Ortiz [Tue, 9 Jan 2018 22:56:43 +0000 (23:56 +0100)]
avcodec: v4l2_m2m: context: fix raising warning on POLLERR

During the initialization stage, the codec attempts to get free
buffers from the driver before any have been queued (this is to keep
the code simple and generic)

When the kernel driver detects this situation, it returns POLLERR in
revents and ffmpeg therefore raises a warning.

This commit disables the warning since no buffers were queued to the
driver yet.

Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
20 months agoavcodec: v4l2_m2m: remove unnecessary timeout.
Jorge Ramirez-Ortiz [Tue, 9 Jan 2018 22:56:42 +0000 (23:56 +0100)]
avcodec: v4l2_m2m: remove unnecessary timeout.

Qualcomm's db410c/db820 Venus driver currently present in mainline
kernel has a bug which mishandles the CMD_STOP requests causing the
decoder to block while draining [1].

This patch removes the workaround that was used to prevent that
situation.

Encoding/Decoding tested on db820c.

[1] on CMD_STOP, the driver is flushing all buffers and never raising
IPIPE which ends up in blocking on poll.

20 months agoavcodec: v4l2_m2m: fix races around freeing data on close
Mark Thompson [Tue, 9 Jan 2018 22:56:41 +0000 (23:56 +0100)]
avcodec: v4l2_m2m: fix races around freeing data on close

Refcount all of the context information. This also fixes a potential
segmentation fault when accessing freed memory  (buffer returned after
the codec has been closed).

Tested-by: Jorge Ramirez-Ortiz <jorge.ramirez.ortiz@gmail.com>
20 months agoavfilter/drawtext - implement fix_bounds
Gyan Doshi [Thu, 11 Jan 2018 13:00:16 +0000 (18:30 +0530)]
avfilter/drawtext - implement fix_bounds

When enabled, text, including effects like shadow or box, will be
completely bound within the video frame.

Default value changed to false to keep continuity of behaviour.

Fixes #6960.

Signed-off-by: Kyle Swanson <k@ylo.ph>
20 months agoavcodec/snowdec: Fix integer overflow before htaps check
Michael Niedermayer [Mon, 15 Jan 2018 02:03:36 +0000 (03:03 +0100)]
avcodec/snowdec: Fix integer overflow before htaps check

Fixes: runtime error: signed integer overflow: -1094995529 * 2 cannot be represented in type 'int'
Fixes: 4828/clusterfuzz-testcase-minimized-5100849937252352

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agoavcodec/ulti: Check number of blocks at init
Michael Niedermayer [Mon, 15 Jan 2018 18:03:48 +0000 (19:03 +0100)]
avcodec/ulti: Check number of blocks at init

Fixes: Timeout
Fixes: 4832/clusterfuzz-testcase-4699096590843904

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agoavformat/lrcdec: Fix memory leak in lrc_read_header()
Nikolas Bowe [Fri, 19 Jan 2018 21:17:07 +0000 (13:17 -0800)]
avformat/lrcdec: Fix memory leak in lrc_read_header()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agox86inc: Drop cpuflags_slowctz
Henrik Gramner [Thu, 18 Jan 2018 22:20:33 +0000 (23:20 +0100)]
x86inc: Drop cpuflags_slowctz

20 months agox86inc: Correctly set mmreg variables
Henrik Gramner [Sat, 6 Jan 2018 16:47:42 +0000 (17:47 +0100)]
x86inc: Correctly set mmreg variables

20 months agox86inc: Support creating global symbols from local labels
Henrik Gramner [Wed, 16 Aug 2017 13:59:16 +0000 (15:59 +0200)]
x86inc: Support creating global symbols from local labels

On ELF platforms such symbols needs to be flagged as functions with the
correct visibility to please certain linkers in some scenarios.

20 months agox86inc: Use .rdata instead of .rodata on Windows
Henrik Gramner [Tue, 15 Aug 2017 14:11:32 +0000 (16:11 +0200)]
x86inc: Use .rdata instead of .rodata on Windows

The standard section for read-only data on Windows is .rdata. Nasm will
flag non-standard sections as executable by default which isn't ideal.

20 months agox86inc: Enable AVX emulation for floating-point pseudo-instructions
Henrik Gramner [Fri, 4 Aug 2017 22:09:52 +0000 (00:09 +0200)]
x86inc: Enable AVX emulation for floating-point pseudo-instructions

There are 32 pseudo-instructions for each floating-point comparison
instruction, but only 8 of them are actually valid in legacy-encoded mode.
The remaining 24 requires the use of VEX-encoded (v-prefixed) instructions
and can therefore be disregarded for this purpose.

20 months agoavdevice/decklink: Fix compilation of module on OSX
Devin Heitmueller [Tue, 9 Jan 2018 01:16:58 +0000 (20:16 -0500)]
avdevice/decklink: Fix compilation of module on OSX

Clang applies the missing-prototypes warning on C++ files, whereas
gcc only applies it to C.  As a result, the decklink_common.cpp file
fails to build because of missing prototypes in DecklinkDispatch.cpp
(which is #included by decklink_common.cpp).

We don't want to change the actual Blackmagic SDK sources, so
suppress the warning just for that one #include.

Signed-off-by: Devin Heitmueller <dheitmueller@ltnglobal.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
20 months agoavdevice/decklink: Suppress warning about misuse of struct instead of class
Devin Heitmueller [Tue, 9 Jan 2018 01:16:56 +0000 (20:16 -0500)]
avdevice/decklink: Suppress warning about misuse of struct instead of class

When building with Clang, the following warning is shown:

warning: struct 'IDeckLinkVideoFrame' was previously declared as a
class [-Wmismatched-tags]

The function incorrectly casts IDeckLinkVideoFrame as a struct
instead of a class pointer.

Signed-off-by: Devin Heitmueller <dheitmueller@ltnglobal.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
20 months agoavdevice/decklink: addition of absolute wallclock option for pts source
Vishwanath Dixit [Mon, 15 Jan 2018 08:22:26 +0000 (13:52 +0530)]
avdevice/decklink: addition of absolute wallclock option for pts source

Signed-off-by: Marton Balint <cus@passwd.hu>
20 months agoavdevice/decklink: addition of PTS_SRC_NB in enum DecklinkPtsSource
Vishwanath Dixit [Mon, 15 Jan 2018 08:22:11 +0000 (13:52 +0530)]
avdevice/decklink: addition of PTS_SRC_NB in enum DecklinkPtsSource

Signed-off-by: Marton Balint <cus@passwd.hu>
20 months agoavdevice/decklink: addition of copyts option
Vishwanath Dixit [Mon, 15 Jan 2018 08:21:46 +0000 (13:51 +0530)]
avdevice/decklink: addition of copyts option

Signed-off-by: Marton Balint <cus@passwd.hu>
20 months agoavfilter/formats: remove support for deprecated channel count specification
Marton Balint [Sat, 6 Jan 2018 21:04:21 +0000 (22:04 +0100)]
avfilter/formats: remove support for deprecated channel count specification

Signed-off-by: Marton Balint <cus@passwd.hu>
20 months agolavf/swfdec: Reduce score when auto-detecting swf files.
Carl Eugen Hoyos [Thu, 18 Jan 2018 20:25:49 +0000 (21:25 +0100)]
lavf/swfdec: Reduce score when auto-detecting swf files.

Not more than 32bit are tested.

20 months agoavcodec/cuviddec: set key frame for decoded frames
Yogender Gupta [Thu, 18 Jan 2018 06:46:19 +0000 (12:16 +0530)]
avcodec/cuviddec: set key frame for decoded frames

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
20 months agoavformat/matroskadec: Fix float-cast-overflow undefined behavior in matroska_parse_tr...
Nikolas Bowe [Thu, 18 Jan 2018 23:21:56 +0000 (15:21 -0800)]
avformat/matroskadec: Fix float-cast-overflow undefined behavior in matroska_parse_tracks()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agoavformat/hlsenc: Add CODECS attribute to master playlist
Karthick Jeyapal [Fri, 19 Jan 2018 09:03:09 +0000 (17:03 +0800)]
avformat/hlsenc: Add CODECS attribute to master playlist

20 months agolavfi/vf_scale_vaapi: set output SAR
Rodger Combs [Sat, 13 Jan 2018 01:08:27 +0000 (19:08 -0600)]
lavfi/vf_scale_vaapi: set output SAR

20 months agofate: update filter-acrossfade test reference file
James Almer [Thu, 18 Jan 2018 22:12:30 +0000 (19:12 -0300)]
fate: update filter-acrossfade test reference file

<jamrial> durandal_1707: 8088b5d69c broke the acrossfade test
<@durandal_1707> jamrial: there was test?
<jamrial> durandal_1707: fate-filter-acrossfade
<@durandal_1707> what broke?
<jamrial> what used to be one frame is now two
<@durandal_1707> ahh, just update test

Signed-off-by: James Almer <jamrial@gmail.com>
20 months agoavformat: small AVFormatContext doxy cosmetics
James Almer [Thu, 18 Jan 2018 16:00:25 +0000 (13:00 -0300)]
avformat: small AVFormatContext doxy cosmetics

Signed-off-by: James Almer <jamrial@gmail.com>
20 months agoavfilter/af_afade: acrossfade: switch to activate
Paul B Mahol [Thu, 18 Jan 2018 10:17:03 +0000 (11:17 +0100)]
avfilter/af_afade: acrossfade: switch to activate

Signed-off-by: Paul B Mahol <onemda@gmail.com>
20 months agoavformat: small cosmetics after 6512ff72f9
James Almer [Wed, 17 Jan 2018 22:39:24 +0000 (19:39 -0300)]
avformat: small cosmetics after 6512ff72f9

Signed-off-by: James Almer <jamrial@gmail.com>
20 months agoavfilter/vidstab: check bytesPerPixel only for packed formats.
Gyan Doshi [Sat, 23 Dec 2017 10:44:25 +0000 (16:14 +0530)]
avfilter/vidstab: check bytesPerPixel only for packed formats.

libvidstab introduced this variable only for packed formats but in
vf_vidstab*.c, it's checked for all inputs. So the filter errors out for YUV422/444P streams.

Fixes #6736.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agolavfi/deinterlace_vaapi: fix can't show full option information.
Jun Zhao [Tue, 16 Jan 2018 14:44:02 +0000 (22:44 +0800)]
lavfi/deinterlace_vaapi: fix can't show full option information.

use ffmpeg -h filter=deinterlace_vaapi can't get full help information,
the root cause is not setting the flags fileld in options.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agoMerge commit 'cbe28bc069dde1d53d937ee10700bb123279c7c8'
Mark Thompson [Tue, 16 Jan 2018 23:29:36 +0000 (23:29 +0000)]
Merge commit 'cbe28bc069dde1d53d937ee10700bb123279c7c8'

* commit 'cbe28bc069dde1d53d937ee10700bb123279c7c8':
  qsv: better to use alignment by 16 and HEVC 10b requires alignment by 32

Merged-by: Mark Thompson <sw@jkqxz.net>
20 months agoMerge commit '34c113335b53d83ed343de49741f0823aa1f8cc6'
Mark Thompson [Tue, 16 Jan 2018 23:25:27 +0000 (23:25 +0000)]
Merge commit '34c113335b53d83ed343de49741f0823aa1f8cc6'

* commit '34c113335b53d83ed343de49741f0823aa1f8cc6':
  Add support for H.264 and HEVC hardware encoding for AMD GPUs based on AMF SDK

Most of this was already present from 9ea6607d294526688ab1b1342cb36ee159683e88,
this just applies some minor fixups and adds the general documentation.

Merged-by: Mark Thompson <sw@jkqxz.net>
20 months agoMerge commit '7b0b5bc810cdb9ef100492c9a9f2d30602c04336'
Mark Thompson [Tue, 16 Jan 2018 23:01:20 +0000 (23:01 +0000)]
Merge commit '7b0b5bc810cdb9ef100492c9a9f2d30602c04336'

* commit '7b0b5bc810cdb9ef100492c9a9f2d30602c04336':
  cmdutils: update copyright year to 2018

This commit is a noop, see bddf31ba7570325dd2c8d033eae3d0dd74127f96

Merged-by: Mark Thompson <sw@jkqxz.net>
20 months agoMerge commit '1efbbfedcaf4a3cecab980273ad809ba3ade2f74'
Mark Thompson [Tue, 16 Jan 2018 22:57:09 +0000 (22:57 +0000)]
Merge commit '1efbbfedcaf4a3cecab980273ad809ba3ade2f74'

* commit '1efbbfedcaf4a3cecab980273ad809ba3ade2f74':
  examples/qsvdec: do not set the deprecated field refcounted_frames

Merged-by: Mark Thompson <sw@jkqxz.net>
20 months agoMerge commit 'e23190269fb6e8217d080918893641ba3e0e3556'
Mark Thompson [Tue, 16 Jan 2018 22:57:02 +0000 (22:57 +0000)]
Merge commit 'e23190269fb6e8217d080918893641ba3e0e3556'

* commit 'e23190269fb6e8217d080918893641ba3e0e3556':
  lavu/qsv: add log message for libmfx version

Merged-by: Mark Thompson <sw@jkqxz.net>
20 months agolavc/snow_dwt: add struct MpegEncContext to fix headers check.
Jun Zhao [Mon, 15 Jan 2018 10:57:33 +0000 (18:57 +0800)]
lavc/snow_dwt: add struct MpegEncContext to fix headers check.

add missing struct MpegEncContext, use make checkheaders
found this warning.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agohwcontext_d3d11va: implement av_hwdevice_get_hwframe_constraints()
wm4 [Tue, 16 Jan 2018 12:23:55 +0000 (13:23 +0100)]
hwcontext_d3d11va: implement av_hwdevice_get_hwframe_constraints()

D3D11 has rather fine grained per format capabilities for different uses
that can be queried at runtime. Since we don't know what the user wants
to do with the formats when av_hwdevice_get_hwframe_constraints() is
called, we simply return all formats that have the most basic support.

20 months agoavformat: make avformat_network_init() explicitly optional
wm4 [Tue, 16 Jan 2018 11:57:04 +0000 (12:57 +0100)]
avformat: make avformat_network_init() explicitly optional

It was sort of optional before - if you didn't call it, networking was
initialized on demand, and an ugly warning was logged. Also, the doxygen
comments threatened that it would be made strictly required one day.

Make it explicitly optional. I would prefer to deprecate it fully, but
there might still be legitimate reasons to use this. But the average
user won't need it.

This is needed only for two reasons: to initialize TLS libraries like
OpenSSL and GnuTLS, and winsock.

OpenSSL and GnuTLS were already silently initialized on demand if the
global network init function was not called. They also have various
thread-safety acrobatics, which make concurrent initialization within
libavformat safe. In addition, the libraries are moving towards making
their global init functions safe, which removes all need for central
global init. In particular, GnuTLS 3.5.16 and OpenSSL 1.1.0g have been
found to have safe init functions. In all cases, they use internal
reference counters to avoid that the global uninit functions interfere
with concurrent uses of the library by other API users who called global
init.

winsock should be thread-safe as well, and maintains an internal
reference counter as well.

Since we still support ancient TLS libraries, which do not have this
fixed, and since it's unknown whether winsock and GnuTLS
reinitialization is costly in any way, don't deprecate the libavformat
functions yet.

20 months agoavformat: deprecate another ffserver API leftover
wm4 [Mon, 15 Jan 2018 12:09:31 +0000 (13:09 +0100)]
avformat: deprecate another ffserver API leftover

20 months agoavcodec/wavpack: Fix integer overflows in wv_unpack_stereo / mono
Michael Niedermayer [Sat, 13 Jan 2018 23:39:41 +0000 (00:39 +0100)]
avcodec/wavpack: Fix integer overflows in wv_unpack_stereo / mono

Fixes: runtime error: signed integer overflow: 2146276249 + 1487583 cannot be represented in type 'int'
Fixes: 4823/clusterfuzz-testcase-minimized-4551896611160064

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agoavcodec/jpeg2000: Check sum of sizes of band->prec before allocating
Michael Niedermayer [Sat, 13 Jan 2018 23:39:40 +0000 (00:39 +0100)]
avcodec/jpeg2000: Check sum of sizes of band->prec before allocating

Fixes: OOM
Fixes: 4810/clusterfuzz-testcase-minimized-6034253235093504

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
20 months agoavcodec/ac3dec_fixed: Fix integer overflow in scale_coefs()
Michael Niedermayer [Sat, 13 Jan 2018 23:39:39 +0000 (00:39 +0100)]
avcodec/ac3dec_fixed: Fix integer overflow in scale_coefs()

Fixes: runtime error: signed integer overflow: 2147483520 + 128 cannot be represented in type 'int'
Fixes: 4800/clusterfuzz-testcase-minimized-6110372403609600

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agohwcontext_vdpau: implement av_hwdevice_get_hwframe_constraints()
wm4 [Sat, 13 Jan 2018 06:05:09 +0000 (07:05 +0100)]
hwcontext_vdpau: implement av_hwdevice_get_hwframe_constraints()

In addition, this does not allow creating frames contexts with sw_format
for which no known transfer formats exist. In theory, we should check
whether the chroma format (i.e. the sw_format) is supported at all by
the vdpau driver, but checking for transfer formats has the same effect.

Note that the pre-existing code adds 1 to priv->nb_pix_fmts[i] for
unknown reason, and some checks need to account for that to check for
empty lists. They are not off-by-one errors.

21 months agohttp: cosmetics: reformat reconnect check for better readability
wm4 [Thu, 11 Jan 2018 01:27:20 +0000 (02:27 +0100)]
http: cosmetics: reformat reconnect check for better readability

The condition was a bit too long, and most editors will break the line
and turn it into an unreadable mess. Move out some of the conditions.

This should not change the behavior.

21 months agoavfilter/vf_idet: added more YUVA formats to idet query_formats
Robert Nagy [Sat, 13 Jan 2018 15:51:43 +0000 (16:51 +0100)]
avfilter/vf_idet: added more YUVA formats to idet query_formats

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agodashdec: Support SegmentTemplate inside Period
sfan5 [Sun, 14 Jan 2018 15:02:26 +0000 (23:02 +0800)]
dashdec: Support SegmentTemplate inside Period

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
21 months agodashdec: Avoid trying to read any segments beyond the last
sfan5 [Sun, 14 Jan 2018 15:01:45 +0000 (23:01 +0800)]
dashdec: Avoid trying to read any segments beyond the last

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
21 months agodashdec: Correct seeking behaviour
sfan5 [Sun, 14 Jan 2018 14:36:02 +0000 (22:36 +0800)]
dashdec: Correct seeking behaviour

dash_read_seek() is called only once to issue a seek
of *all* streams to the specified timestamp. But to
avoid reopening each stream, do a "dry run" for streams
that are in a discarded state.

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
21 months agodashdec: Search for segment timeline inside AdaptionSets too
sfan5 [Sun, 14 Jan 2018 14:35:31 +0000 (22:35 +0800)]
dashdec: Search for segment timeline inside AdaptionSets too

21 months agodashdec: Support for multiple video/audio streams
sfan5 [Sun, 14 Jan 2018 14:34:43 +0000 (22:34 +0800)]
dashdec: Support for multiple video/audio streams

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
21 months agodashdec: Expose bandwidth and representation ID as metadata
sfan5 [Sun, 14 Jan 2018 14:33:57 +0000 (22:33 +0800)]
dashdec: Expose bandwidth and representation ID as metadata

The primary goal was making it viable to play YouTube/Vimeo/... videos
using the native demuxer, since mpv currently uses a workaround in form
of Edit Decision Lists (EDL).

Implemented features:

1 Exposing id / bitrate as stream metadata (similar to the HLS demuxer)
2 Support for multiple video and audio streams
3 A few minor parts of the specification that are in use at YouTube

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
21 months agoavformat/adtsenc: allow only AAC streams
Gyan Doshi [Sun, 14 Jan 2018 12:00:23 +0000 (17:30 +0530)]
avformat/adtsenc: allow only AAC streams

The ADTS muxer will silently (attempt to) mux any audio stream passed to it.
Patch adds a codec check.

Signed-off-by: James Almer <jamrial@gmail.com>
21 months agoavformat/adtsenc: add adts_init()
James Almer [Mon, 29 May 2017 21:12:51 +0000 (18:12 -0300)]
avformat/adtsenc: add adts_init()

Signed-off-by: James Almer <jamrial@gmail.com>
21 months agodcaenc: move all tables inside context and fix incorrect coding style
Rostislav Pehlivanov [Sat, 13 Jan 2018 18:27:36 +0000 (18:27 +0000)]
dcaenc: move all tables inside context and fix incorrect coding style

Functionally identical to the old code, with less lines wasted.
Partially fixes the complete disregard for the 80 col/line guide.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
21 months agoavcodec/dcaenc: Use ffmpeg mdct instead of own implementation
Daniil Cherednik [Sun, 7 Jan 2018 22:39:22 +0000 (22:39 +0000)]
avcodec/dcaenc: Use ffmpeg mdct instead of own implementation

Signed-off-by: Daniil Cherednik <dan.cherednik@gmail.com>
21 months agodcaenc: cleanup on init failure and add a threadsafe init codec cap
Rostislav Pehlivanov [Sat, 13 Jan 2018 18:03:42 +0000 (18:03 +0000)]
dcaenc: cleanup on init failure and add a threadsafe init codec cap

The encoder didn't clean up if a malloc failed during init.
It also doesn't need any external tables to be initialized on init.
Finally, it didn't need to check for whether avctx->priv_data exists during
uninit.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
21 months agoopusenc_psy: Typo, use all coeffs in range for band tonality calculation
Daniil Cherednik [Tue, 9 Jan 2018 18:15:20 +0000 (21:15 +0300)]
opusenc_psy: Typo, use all coeffs in range for band tonality calculation

21 months agofate: remove the fate-aac-ltp-encode test
Rostislav Pehlivanov [Sat, 13 Jan 2018 12:03:49 +0000 (12:03 +0000)]
fate: remove the fate-aac-ltp-encode test

It tests a useless profile which sounds no better than regular aac and which
takes extremely long to encoder something. Also it has been behind experimental
flag for as long as it has been supported.
Should be removed altogether sometime in the future.

21 months agoaacenc: use the fast coder as the default
Rostislav Pehlivanov [Sat, 13 Jan 2018 11:46:29 +0000 (11:46 +0000)]
aacenc: use the fast coder as the default

The twoloop coder sounds decent at low bitrates, however at higher bitrates
it sounds worse than the fast coder (which used to be the old twoloop coder
before October 2015) and needs quite a lot more CPU.
Change the default to fast. It has been well tested and has had little changes
over the years so its been confirmed to be quite stable.
Also change its description (not valid for more than a year) and the
documentation.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
21 months agolavc/libx265: support all color parameters that x265 does
Rodger Combs [Mon, 18 Dec 2017 12:18:57 +0000 (06:18 -0600)]
lavc/libx265: support all color parameters that x265 does

21 months agoavfilter/vf_framerate: simplify filter
Marton Balint [Tue, 19 Dec 2017 22:49:41 +0000 (23:49 +0100)]
avfilter/vf_framerate: simplify filter

The framerate filter was quite convoluted with some filter_frame /
request_frame logic bugs. It seemed easier to rewrite the whole filter_frame /
request_frame part and also the frame interpolation ratio calculation part in
one step.

Notable changes:
- The filter now only stores 2 frames instead of 3
- filter_frame outputs all the frames it can to be able to handle consecutive
  filter_frame calls which previously caused early drops of buffered frames.
- because of this, request_frame is largely simplified and it only outputs
  frames on flush. Previously consecuitve request_frame calls could cause the
  filter to think it is in flush mode filling its buffer with the same frames
  causing a "ghost" effect on the output.
- PTS discontinuities are handled better
- frames with unknown PTS values are now dropped

Fixes ticket #4870.
Probably fixes ticket #5493.

Signed-off-by: Marton Balint <cus@passwd.hu>
21 months agoavcodec/utils: Avoid hardcoding duplicated types in sizeof()
Michael Niedermayer [Sat, 3 Jun 2017 23:53:58 +0000 (01:53 +0200)]
avcodec/utils: Avoid hardcoding duplicated types in sizeof()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agoavcodec/opus: Add {} over multiline if() body
Michael Niedermayer [Sun, 31 Dec 2017 21:47:38 +0000 (22:47 +0100)]
avcodec/opus: Add {} over multiline if() body

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agoavcodec/arm/sbrdsp_neon: Use a free register instead of putting 2 things in one
Michael Niedermayer [Thu, 11 Jan 2018 21:47:10 +0000 (22:47 +0100)]
avcodec/arm/sbrdsp_neon: Use a free register instead of putting 2 things in one

Fixes high pitched shriek
Fixes: 25420848_1478428308873746_4255813235963330560_n.mp4

Reported-by: Dale Curtis <dalecurtis@google.com>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agoavformat/http: fix memory leak in parse_cookie.
Richard Shaffer [Thu, 11 Jan 2018 22:28:52 +0000 (14:28 -0800)]
avformat/http: fix memory leak in parse_cookie.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agoavcodec/ffv1enc: mark RGB48 support as non-experimental
Jérôme Martinez [Fri, 5 Jan 2018 10:09:01 +0000 (11:09 +0100)]
avcodec/ffv1enc: mark RGB48 support as non-experimental

Resulting bitstream was tested with a conformance checker
using the last draft of FFV1 specifications.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Also the files are already in the wild, and decoder support is
thus needed. And with decoders widely supporting it, there is no
advantage in not allowing it in the encoder.
The exact bitstream format may change in future versions of the
spec, if improvments are found.

21 months agoavdevice/gdigrab: Fix screen size and mouse position calculations on hi-DPI screens
Harald Gaechter [Tue, 28 Nov 2017 08:59:02 +0000 (09:59 +0100)]
avdevice/gdigrab: Fix screen size and mouse position calculations on hi-DPI screens

Signed-off-by: Harald Gaechter <harald.gaechter@wolfvision.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agoavformat/libopenmpt: Update to libopenmpt 0.3 API
Jörn Heusipp [Thu, 11 Jan 2018 08:11:30 +0000 (09:11 +0100)]
avformat/libopenmpt: Update to libopenmpt 0.3 API

libopenmpt 0.3 deprecates openmpt_module_create_from_memory() and
provides a replacement function openmpt_module_create_from_memory2().

Detecting libopenmpt 0.3 can be done at build time via the API
version macros provided by libopenmpt. libopenmpt 0.2 did not provide
all required macros, however libopenmpt documents the required #define
shims that can be safely added for libopenmpt 0.2.

Using openmpt_module_create_from_memory2() instead of
openmpt_module_create_from_memory() avoids the deprecation warning
when building ffmpeg with libopenmpt 0.3.

openmpt_module_create_from_memory2() provides more fine-grained error
reporting and in particular allows distinguishing out-of-memory from
input file parsing errors. Return appropriate ffmpeg errors
accordingly.

libopenmpt 0.3 is ABI and API compatible with applications built
against libopenmpt 0.2. Building ffmpeg with libopenmpt 0.2 is still
supported.

Signed-off-by: Jörn Heusipp <osmanx@problemloesungsmaschine.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agoavformat/libopenmpt: Fix mixed code and declarations
Jörn Heusipp [Thu, 11 Jan 2018 08:11:29 +0000 (09:11 +0100)]
avformat/libopenmpt: Fix mixed code and declarations

Signed-off-by: Jörn Heusipp <osmanx@problemloesungsmaschine.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agoexamples/vaapi_encode: Remove redundancy check when free context.
Jun Zhao [Thu, 11 Jan 2018 05:21:58 +0000 (13:21 +0800)]
examples/vaapi_encode: Remove redundancy check when free context.

avcodec_free_context have handle NULL pointer case, so caller doesn't
need to check the NULL before call this function.

Signe-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agoavcodec: increase AV_INPUT_BUFFER_PADDING_SIZE to 64
James Almer [Sun, 7 Jan 2018 03:45:37 +0000 (00:45 -0300)]
avcodec: increase AV_INPUT_BUFFER_PADDING_SIZE to 64

AVX-512 support has been introduced, and even if no functions currently
use zmm registers (able to load as much as 64 bytes of consecutive data
per instruction), they will be added eventually.

Reviewed-by: Rostislav Pehlivanov <atomnuker@gmail.com>
Tested-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
21 months agoavfilter/x86/vf_interlace : add AVX2 version
Martin Vignali [Sat, 30 Dec 2017 18:30:56 +0000 (19:30 +0100)]
avfilter/x86/vf_interlace : add AVX2 version

21 months agoavutil/mastering_display_metadata: fix copyright header wrongly formated as doxy
James Almer [Thu, 11 Jan 2018 14:35:51 +0000 (11:35 -0300)]
avutil/mastering_display_metadata: fix copyright header wrongly formated as doxy

Signed-off-by: James Almer <jamrial@gmail.com>
21 months agoconfigure: Simplify detection of static x264 on systems without pkg-config.
Carl Eugen Hoyos [Thu, 11 Jan 2018 10:12:38 +0000 (11:12 +0100)]
configure: Simplify detection of static x264 on systems without pkg-config.

Fixes a regression since 6dfcbd80.

21 months agoavformat/aiffdec: AIFF fix in case of ANNO
Eduard Sinelnikov [Mon, 8 Jan 2018 14:03:40 +0000 (14:03 +0000)]
avformat/aiffdec: AIFF fix in case of ANNO

Apple's AIFF protocol clearly states that each chucnk which is odd sized a padding should be added.
In the old version of aiffdec adding of padding was done in `get_meta`. And in case of unknown chunk name it was done in defalut case.
The new version has deleted the padding in default case and added padding adding after the switch.
But the new version didn't removed the padding adding in the `get_meta` function so in some cases padding was added twice which leaded to a bug.

Fixes: sample.aiff

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
21 months agovf_program_opencl: Add missing error code returns
Mark Thompson [Wed, 10 Jan 2018 23:27:19 +0000 (23:27 +0000)]
vf_program_opencl: Add missing error code returns

Fixes CID #1427285.

21 months agovf_overlay_opencl: Don't leak output frame on error
Mark Thompson [Wed, 10 Jan 2018 23:25:56 +0000 (23:25 +0000)]
vf_overlay_opencl: Don't leak output frame on error

Fixes CID #1423277.

21 months agodoc/filters: fix error in aiir options names
Paul B Mahol [Wed, 10 Jan 2018 19:32:22 +0000 (20:32 +0100)]
doc/filters: fix error in aiir options names

Signed-off-by: Paul B Mahol <onemda@gmail.com>