ffmpeg.git
19 months agoavformat/oggparseogm: Check lb against psize
Michael Niedermayer [Fri, 9 Mar 2018 00:05:20 +0000 (01:05 +0100)]
avformat/oggparseogm: Check lb against psize

No testcase, this was found during code review

Found-by: Matt Wolenetz <wolenetz@google.com>
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavformat/oggparseogm: Fix undefined shift in ogm_packet()
Michael Niedermayer [Thu, 8 Mar 2018 22:14:04 +0000 (23:14 +0100)]
avformat/oggparseogm: Fix undefined shift in ogm_packet()

Fixes: shift exponent 48 is too large for 32-bit type 'int'
Fixes: Chromium bug 786793
Reported-by: Matt Wolenetz <wolenetz@google.com>
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavformat/avidec: Fix integer overflow in cum_len check
Michael Niedermayer [Thu, 8 Mar 2018 21:40:50 +0000 (22:40 +0100)]
avformat/avidec: Fix integer overflow in cum_len check

Fixes: signed integer overflow: 3775922176 * 4278190080 cannot be represented in type 'long'
Fixes: Chromium bug 791237

Reported-by: Matt Wolenetz <wolenetz@google.com>
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavformat/oggparsetheora: Do not adjust AV_NOPTS_VALUE
Michael Niedermayer [Thu, 8 Mar 2018 16:28:36 +0000 (17:28 +0100)]
avformat/oggparsetheora: Do not adjust AV_NOPTS_VALUE

Fixes: Chromium bug 795653
Fixes: signed integer overflow: 9223372036854775807 + 1 cannot be represented in type 'long'
Reported-by: Matt Wolenetz <wolenetz@google.com>
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavutil/parseutils: only accept full us duration, do not accept mss duration
Marton Balint [Mon, 5 Mar 2018 23:45:09 +0000 (00:45 +0100)]
avutil/parseutils: only accept full us duration, do not accept mss duration

Accepting 'u' suffix for a time specification is neither intuitive nor
consistent (now that we don't accept m). Also there was a bug in the code
accepting an extra 's' even after 'ms'.

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: do not allow more partitions than INT_MAX/2
Marton Balint [Thu, 8 Mar 2018 23:46:06 +0000 (00:46 +0100)]
avformat/mxfdec: do not allow more partitions than INT_MAX/2

Some math (e.g: partition binary search) overflows if we have that many
parititions.

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: use binary search in mxf_absolute_bodysid_offset
Marton Balint [Sun, 18 Feb 2018 23:43:05 +0000 (00:43 +0100)]
avformat/mxfdec: use binary search in mxf_absolute_bodysid_offset

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: fix opAtom audio demuxing
Marton Balint [Sun, 18 Feb 2018 00:12:01 +0000 (01:12 +0100)]
avformat/mxfdec: fix opAtom audio demuxing

Consider edit rate when determining edit_units_per_packet and also make sure
that checks are done in edit rate time base and not in stream time base.

Fixes some errors reported with the sample in ticket #5863.

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavcodec/extract_extradata: zero initalize the padding bytes in all allocated buffers
James Almer [Fri, 9 Mar 2018 16:00:55 +0000 (13:00 -0300)]
avcodec/extract_extradata: zero initalize the padding bytes in all allocated buffers

Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
19 months agoavformat/mov: print the projection type when reporting it as unsupported
James Almer [Fri, 9 Mar 2018 14:23:23 +0000 (11:23 -0300)]
avformat/mov: print the projection type when reporting it as unsupported

Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
19 months agoffmpeg: Fix stts_data memory allocation
Xiaohan Wang [Tue, 13 Feb 2018 22:45:14 +0000 (14:45 -0800)]
ffmpeg: Fix stts_data memory allocation

In this loop, |i| is the "index". And the memory allocated should be at
least the current "count", which is |i + 1|.

BUG=801821

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavcodec/ffv1enc: remove warning about transparency
Jérôme Martinez [Wed, 7 Mar 2018 12:26:36 +0000 (13:26 +0100)]
avcodec/ffv1enc: remove warning about transparency

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agolavc/videotoolbox: fix threaded decoding
Rodger Combs [Sat, 3 Feb 2018 02:50:13 +0000 (20:50 -0600)]
lavc/videotoolbox: fix threaded decoding

AVHWAccel.end_frame can run on a worker thread. The assumption of the
frame threading code is that the worker thread will change the AVFrame
image data, not the AVFrame fields. So the AVFrame fields are not synced
back to the main thread. But this breaks videotoolbox due to its special
requirements (everything else is fine). It actually wants to update
AVFrame fields.

The actual videotoolbox frame is now stored in the dummy AVBufferRef, so
it mimics what happens in non-videotoolbox cases. (Changing the
AVBufferRef contents is a bit like changing the image data.) The
post_process callback copies that reference to the proper AVFrame field.

Based on a patch by wm4.

Signed-off-by: Aman Gupta <aman@tmm1.net>
19 months agolavfi/drawutils: Do not claim to support P016.
Carl Eugen Hoyos [Tue, 6 Mar 2018 23:36:21 +0000 (00:36 +0100)]
lavfi/drawutils: Do not claim to support P016.

Fixes fate on big-endian.

19 months agolibavfilter/vf_fps: Minor cleanups
Calvin Walton [Thu, 22 Feb 2018 19:10:04 +0000 (14:10 -0500)]
libavfilter/vf_fps: Minor cleanups

Since the config_props function now references both the input and output
links, rename the 'link' variable to 'outlink'.

Fix up some mismatching indentation.

Don't bother setting the width and height on the outlink; the filter
framework does that for us.

19 months agolibavfilter/vf_fps: Rewrite using activate callback
Calvin Walton [Thu, 22 Feb 2018 19:10:03 +0000 (14:10 -0500)]
libavfilter/vf_fps: Rewrite using activate callback

The old version of the filter had a problem where it would queue up
all of the duplicate frames required to fill a timestamp gap in a
single call to filter_frame. In problematic files - I've hit this in
webcam streams with large gaps due to network issues - this will queue
up a potentially huge number of frames. (I've seen it trigger the Linux
OOM-killer on particularly large pts gaps.)

This revised version of the filter using the activate callback will
generate at most 1 frame each time it is called.

19 months agoavfilter/vf_vaguedenoiser: fix plane copy for >8 bit depth formats
Paul B Mahol [Thu, 8 Mar 2018 10:04:12 +0000 (11:04 +0100)]
avfilter/vf_vaguedenoiser: fix plane copy for >8 bit depth formats

Fixes #7072.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
19 months agocheckasm/hevc_sao : add hevc_sao for checkasm
Yingming Fan [Wed, 7 Mar 2018 04:42:30 +0000 (12:42 +0800)]
checkasm/hevc_sao : add hevc_sao for checkasm

Signed-off-by: James Almer <jamrial@gmail.com>
19 months agolavc/vaapi_encode: Don't return error if the underlying driver doesn't support B...
Haihao Xiang [Tue, 6 Feb 2018 08:17:17 +0000 (16:17 +0800)]
lavc/vaapi_encode: Don't return error if the underlying driver doesn't support B frames

The underlying driver need not support B frames - since they are enabled
by default for some codecs, it is better to disable them rather than
returning an error in this case.  This makes the default settings usable
for low-power encoding on Intel platforms.

Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
19 months agoavcodec/mediacodecdec: add more trace logging of input/output buffers
Aman Gupta [Tue, 6 Mar 2018 21:14:51 +0000 (13:14 -0800)]
avcodec/mediacodecdec: add more trace logging of input/output buffers

Signed-off-by: Aman Gupta <aman@tmm1.net>
Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com>
19 months agoavcodec/mediacodecdec: add delay_flush option
Aman Gupta [Tue, 6 Mar 2018 21:07:32 +0000 (13:07 -0800)]
avcodec/mediacodecdec: add delay_flush option

The default behavior of the mediacodec decoder before this commit
was to delay flushes until all pending hardware frames were
returned to the decoder. This was useful for certain types of
applications, but was unexpected behavior for others.

The new default behavior with this commit is now to execute
flushes immediately to invalidate all pending frames. The old
behavior can be enabled by setting delay_flush=1.

With the new behavior, video players implementing seek can simply
call flush on the decoder without having to worry about whether
they have one or more mediacodec frames still buffered in their
rendering pipeline. Previously, all these frames had to be
explictly freed (or rendered) before the seek/flush would execute.

The new behavior matches the behavior of all other lavc decoders,
reducing the amount of special casing required when using the
mediacodec decoder.

Signed-off-by: Aman Gupta <aman@tmm1.net>
Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com>
19 months agoChangelog: list the new SBC codec
Aurelien Jacobs [Sun, 17 Dec 2017 19:27:04 +0000 (20:27 +0100)]
Changelog: list the new SBC codec

19 months agosbcenc: add armv6 and neon asm optimizations
Aurelien Jacobs [Sun, 17 Dec 2017 19:10:32 +0000 (20:10 +0100)]
sbcenc: add armv6 and neon asm optimizations

This was originally based on libsbc, and was fully integrated into ffmpeg.

19 months agosbcenc: add MMX optimizations
Aurelien Jacobs [Sun, 17 Dec 2017 19:07:33 +0000 (20:07 +0100)]
sbcenc: add MMX optimizations

This was originally based on libsbc, and was fully integrated into ffmpeg.

Rough speed test:
C version:    speed= 592x
MMX version:  speed= 785x

19 months agosbc: add raw muxer for SBC
Aurelien Jacobs [Sun, 17 Dec 2017 19:24:21 +0000 (20:24 +0100)]
sbc: add raw muxer for SBC

19 months agosbc: implement SBC encoder (low-complexity subband codec)
Aurelien Jacobs [Sun, 17 Dec 2017 18:59:30 +0000 (19:59 +0100)]
sbc: implement SBC encoder (low-complexity subband codec)

This was originally based on libsbc, and was fully integrated into ffmpeg.

19 months agosbc: add raw demuxer for SBC
Aurelien Jacobs [Sun, 17 Dec 2017 19:23:25 +0000 (20:23 +0100)]
sbc: add raw demuxer for SBC

19 months agosbc: add parser for SBC
Aurelien Jacobs [Sat, 12 Aug 2017 00:35:06 +0000 (02:35 +0200)]
sbc: add parser for SBC

19 months agosbc: implement SBC decoder (low-complexity subband codec)
Aurelien Jacobs [Sun, 17 Dec 2017 18:53:35 +0000 (19:53 +0100)]
sbc: implement SBC decoder (low-complexity subband codec)

This was originally based on libsbc, and was fully integrated into ffmpeg.

19 months agocrc: add AV_CRC_8_SBC as a 8 bits CRC with polynomial 0x1D
Aurelien Jacobs [Wed, 20 Dec 2017 00:29:05 +0000 (01:29 +0100)]
crc: add AV_CRC_8_SBC as a 8 bits CRC with polynomial 0x1D

19 months agoavfilter/af_alimiter: check if buffer_size is valid
Paul B Mahol [Wed, 7 Mar 2018 20:36:12 +0000 (21:36 +0100)]
avfilter/af_alimiter: check if buffer_size is valid

Fixes #7050.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
19 months agoavformat/utils: Fix integer overflow of fps_first/last_dts
Michael Niedermayer [Tue, 6 Mar 2018 23:10:11 +0000 (00:10 +0100)]
avformat/utils: Fix integer overflow of fps_first/last_dts

Fixes: runtime error: signed integer overflow: 7738135736989908991 - -7898362169240453118 cannot be represented in type 'long'
Fixes: Chromium bug 796778
Reported-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavformat/oggdec: Fix metadata memleak on multiple headers
Michael Niedermayer [Tue, 6 Mar 2018 17:14:12 +0000 (18:14 +0100)]
avformat/oggdec: Fix metadata memleak on multiple headers

Fixes: Chromium bug 800123
Reported-by: Matt Wolenetz <wolenetz@google.com>
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agolibavformat/oggparsevorbis: Fix memleak on multiple headers
Michael Niedermayer [Tue, 6 Mar 2018 17:14:12 +0000 (18:14 +0100)]
libavformat/oggparsevorbis: Fix memleak on multiple headers

Fixes: Chromium bug 800123
Reported-by: Matt Wolenetz <wolenetz@google.com>
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavformat/mov: Fix integer overflow in mov_get_stsc_samples()
Michael Niedermayer [Mon, 5 Mar 2018 22:12:57 +0000 (23:12 +0100)]
avformat/mov: Fix integer overflow in mov_get_stsc_samples()

Fixes: runtime error: signed integer overflow: 5 * -2147483647 cannot be represented in type 'int'
Fixes: Chromium bug 817338
Reviewed-by: Matt Wolenetz <wolenetz@google.com>
Reported-by: Matt Wolenetz <wolenetz@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavfilter/vf_*_vaapi: Add missing AV_OPT_FLAG_FILTERING_PARAM
Michael Niedermayer [Mon, 5 Mar 2018 17:59:27 +0000 (18:59 +0100)]
avfilter/vf_*_vaapi: Add missing AV_OPT_FLAG_FILTERING_PARAM

Reviewed-by: Jun Zhao <mypopydev@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavformat/internal: Document the freeing behavior of ff_alloc_extradata()
Michael Niedermayer [Wed, 7 Mar 2018 09:03:46 +0000 (10:03 +0100)]
avformat/internal: Document the freeing behavior of ff_alloc_extradata()

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agolavc/vorbisdec: Allow avcodec_open2 to call .close
Matt Wolenetz [Mon, 5 Mar 2018 23:59:18 +0000 (15:59 -0800)]
lavc/vorbisdec: Allow avcodec_open2 to call .close

If there is a decoder initialization failure detected in avcodec_open2
after .init is called, allow graceful decoder .close to prevent leaking
vorbis decoder allocations such as those from vorbis_parse_setup_*.

BUG=772699

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavcodec/aacdec: log configuration change details
Aman Gupta [Tue, 6 Mar 2018 20:44:59 +0000 (12:44 -0800)]
avcodec/aacdec: log configuration change details

Signed-off-by: Aman Gupta <aman@tmm1.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavcodec/mediacodec_wrapper: fix false positives in swdec blacklist
Stefan _ [Tue, 6 Mar 2018 22:19:36 +0000 (22:19 +0000)]
avcodec/mediacodec_wrapper: fix false positives in swdec blacklist

'OMX.SEC.avc.dec' is a valid hardware decoder, while the decoders
we seek to blacklist all match 'OMX.SEC.*.sw.dec'.

19 months agoavformat/isom: don't free extradata before calling ff_get_extradata()
James Almer [Wed, 7 Mar 2018 02:26:22 +0000 (23:26 -0300)]
avformat/isom: don't free extradata before calling ff_get_extradata()

ff_get_extradata() frees any existing extradata before allocating now,
and using av_free() here leaves a dangling pointer that will result in
a double free.

Fixes a regression since 0ca33b1d4eb2a2a2e78ff3a37f1647917635b0d2.

Tested-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
19 months agompegvideo_parser: fix indentation of an if statement
Masaki Tanaka [Sun, 11 Feb 2018 13:40:55 +0000 (15:40 +0200)]
mpegvideo_parser: fix indentation of an if statement

19 months agolibavformat/tls_libtls: pass numeric hostnames to tls_connect_cbs()
Stefan _ [Wed, 21 Feb 2018 17:57:00 +0000 (17:57 +0000)]
libavformat/tls_libtls: pass numeric hostnames to tls_connect_cbs()

Numeric hosts in certificates are not very common, but supported by LibreSSL.
Forward the IP address to make verification work in this case.

Fixes ticket #7029

19 months agoh264_metadata: Actually fail when sei_user_data option is invalid
Mark Thompson [Tue, 6 Mar 2018 23:39:00 +0000 (23:39 +0000)]
h264_metadata: Actually fail when sei_user_data option is invalid

19 months agoavformat/utils: simplify ff_alloc_extradata()
James Almer [Tue, 6 Mar 2018 04:37:21 +0000 (01:37 -0300)]
avformat/utils: simplify ff_alloc_extradata()

Cosmetic refactor

Reviewed-by: 74a2fa708af88d225ed708af758f236f869b1a57
Signed-off-by: James Almer <jamrial@gmail.com>
19 months agoavformat/utils: free existing extradata before trying to allocate a new one
James Almer [Tue, 6 Mar 2018 04:19:13 +0000 (01:19 -0300)]
avformat/utils: free existing extradata before trying to allocate a new one

This prevents leaks in the rare cases the function is called when extradata
already exists.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
19 months agoMAINTAINERS: add myself to mediacodec
Aman Gupta [Tue, 6 Mar 2018 21:33:20 +0000 (13:33 -0800)]
MAINTAINERS: add myself to mediacodec

Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com>
19 months agoavcodec/mediacodec: reduce loglevel for per-frame logging
Aman Gupta [Tue, 6 Mar 2018 21:33:19 +0000 (13:33 -0800)]
avcodec/mediacodec: reduce loglevel for per-frame logging

Signed-off-by: Aman Gupta <aman@tmm1.net>
Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com>
19 months agoavcodec/mediacodec_wrapper: blacklist more software decoders
Stefan _ [Tue, 6 Mar 2018 18:00:27 +0000 (18:00 +0000)]
avcodec/mediacodec_wrapper: blacklist more software decoders

Additionally blacklist ffmpeg, Samsung and Qualcomm
software implementations offered through MediaCodec.

Signed-off-by: Aman Gupta <aman@tmm1.net>
Signed-off-by: Matthieu Bouron <matthieu.bouron@gmail.com>
19 months agolavc/qsvenc: disable h264 look_ahead by default
Zhong Li [Thu, 1 Mar 2018 05:20:19 +0000 (13:20 +0800)]
lavc/qsvenc: disable h264 look_ahead by default

Look_ahead can provide quality improvements, but would better disable it by default due to some reasons:
1. It is only available for some codecs (e.g. HEVC is not supported) on Intel
   Haswell and plus platforms. Thus means it will be failed on some platforms.
2. It significantly increases encoding latency and memory consumption.
3. It may overwrite some other options such as CBR and CAVLC.

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
19 months agoMerge commit '2d6b3f3a9dce409ca51d70ef4b85c0593bb4b109'
Mark Thompson [Mon, 5 Mar 2018 23:16:29 +0000 (23:16 +0000)]
Merge commit '2d6b3f3a9dce409ca51d70ef4b85c0593bb4b109'

* commit '2d6b3f3a9dce409ca51d70ef4b85c0593bb4b109':
  qsvenc: Provide a detailed error message if the parameters are invalid

Merged-by: Mark Thompson <sw@jkqxz.net>
19 months agoMerge commit 'e2399e0c1aeb110456405d23e211066fab6cb041'
Mark Thompson [Mon, 5 Mar 2018 23:08:34 +0000 (23:08 +0000)]
Merge commit 'e2399e0c1aeb110456405d23e211066fab6cb041'

* commit 'e2399e0c1aeb110456405d23e211066fab6cb041':
  fate: Error out more gracefully on configure failure

This commit is a noop, the configure failure reporting issue does not
appear to affect FFmpeg.

Merged-by: Mark Thompson <sw@jkqxz.net>
19 months agoMerge commit 'dc40e64adb1712b1209c018914a44f809bc32664'
Mark Thompson [Mon, 5 Mar 2018 22:34:24 +0000 (22:34 +0000)]
Merge commit 'dc40e64adb1712b1209c018914a44f809bc32664'

* commit 'dc40e64adb1712b1209c018914a44f809bc32664':
  hvcc: zero initialize the nal buffers past the last written byte

This commit is a noop, see 9482ec1b203e4cf51d7f60c85d261cc13f9a9d2f

Merged-by: Mark Thompson <sw@jkqxz.net>
19 months agoMerge commit '8ca39b855a7b0e4d9f726fa9d285bc8edcb953e6'
Mark Thompson [Mon, 5 Mar 2018 22:31:03 +0000 (22:31 +0000)]
Merge commit '8ca39b855a7b0e4d9f726fa9d285bc8edcb953e6'

* commit '8ca39b855a7b0e4d9f726fa9d285bc8edcb953e6':
  qsv: Default PicStruct to progressive

Merged-by: Mark Thompson <sw@jkqxz.net>
19 months agoparseutils: accept only full "ms" suffix
Rostislav Pehlivanov [Sat, 3 Mar 2018 20:17:46 +0000 (20:17 +0000)]
parseutils: accept only full "ms" suffix

The commit which added those was pushed prematurely before anyone could object
to illogical suffixes like just m for milliseconds. Without this, we'd be locked
into never being able to implement the "m" suffix for minutes.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
19 months agoconfigure: rename cuda to ffnvcodec
Timo Rothenpieler [Sat, 3 Mar 2018 20:28:26 +0000 (21:28 +0100)]
configure: rename cuda to ffnvcodec

Right now, if someone configures ffmpeg with for example --enable-nvenc they will
get an error message complaining about missing cuda.
This is very confusing and already has lead people into installing the CUDA SDK,
even though it's not what they need.

This will make it complain about ffnvcodec instead.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
19 months agoavcodec/cbs: use a reference to the assembled CodedBitstreamFragment buffer when...
James Almer [Mon, 5 Mar 2018 14:04:59 +0000 (11:04 -0300)]
avcodec/cbs: use a reference to the assembled CodedBitstreamFragment buffer when writing packets

This saves one malloc + memcpy per packet

The CodedBitstreamFragment buffer is padded to follow the requirements
of AVPacket.

Reviewed-by: jkqxz
Signed-off-by: James Almer <jamrial@gmail.com>
19 months agoqsvenc: Provide a detailed error message if the parameters are invalid
Zhong Li [Fri, 2 Mar 2018 03:26:27 +0000 (11:26 +0800)]
qsvenc: Provide a detailed error message if the parameters are invalid

Currently it always shows "Selected ratecontrol mode is not supported
by the QSV runtime. Choose a different mode", but sometimes it is not
accurate.

Signed-off-by: Zhong Li <zhong.li@intel.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
19 months agofftools/ffmpeg: update print_report to use AVBPrint API
Tobias Rapp [Mon, 26 Feb 2018 14:13:29 +0000 (15:13 +0100)]
fftools/ffmpeg: update print_report to use AVBPrint API

Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
19 months agofftools/ffmpeg: fix progress log message in case pts is not available
Tobias Rapp [Mon, 12 Feb 2018 10:11:23 +0000 (11:11 +0100)]
fftools/ffmpeg: fix progress log message in case pts is not available

Also fixes sign prefix for progress report.

Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
19 months agoavformat/mov: Initialize a potential gap in ctts_data in mov_build_index
Matt Wolenetz [Fri, 2 Mar 2018 23:12:41 +0000 (15:12 -0800)]
avformat/mov: Initialize a potential gap in ctts_data in mov_build_index

mov_read_ctts ignores ctts entries having count <= 0. Generally, the
aggregate of all ctts entries' count fields resulting from mov_read_ctts
can be less than the corresponding sample_count.

mov_build_index attempts to normalize any existing ctts_data counts to
be 1, to make a 1-1 mapping of a ctts_data entry to a sample.

That 1-1 mapping left a tail of uninitialized ctts_data entries when the
aggregate, normalized ctts_count < sample_count.

Even more generally, later usage of ctts_data may depend on the entire
ctts_allocated_size having been initialized.

This change memsets the entire allocation of the normalized ctts_data in
mov_build_index, to prevent use of uninitialized data later.

BUG=816787

Change-Id: I7fd7db255e3aeed076ee32c90cb2df211741c052
Reviewed-on: https://chromium-review.googlesource.com/947110
Reviewed-by: Xiaohan Wang <xhwang@chromium.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavcodec/vaapi: mask unused bits in bitplane_present.value
Jerome Borsboom [Sun, 25 Feb 2018 19:13:46 +0000 (20:13 +0100)]
avcodec/vaapi: mask unused bits in bitplane_present.value

Due to the union construct, unused bits in bitplane_present.value might
be uninitialized even when the used bits are all set to a value.
Masking the unused bits prevents spurious true values when all used
bits are unset, e.g. skipped pictures.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
19 months agoavcodec/vaapi: add fields for VAAPI VC-1 interlaced decoding
Jerome Borsboom [Thu, 1 Mar 2018 08:07:17 +0000 (09:07 +0100)]
avcodec/vaapi: add fields for VAAPI VC-1 interlaced decoding

Pass necessary bitstream elements to the VAAPI VC-1 decoder in order
to start doing interlaced decoding in hardware.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
19 months agoavcodec/vc1: add bitstream elements for VAAPI VC-1 interlaced decoding
Jerome Borsboom [Sun, 25 Feb 2018 19:09:46 +0000 (20:09 +0100)]
avcodec/vc1: add bitstream elements for VAAPI VC-1 interlaced decoding

We need to pass more bitstream elements to the VAAPI VC-1 decoder in
order to start doing interlaced decoding in hardware.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
19 months agoswscale: Introduce a helper to identify semi-planar formats
Philip Langdale [Fri, 2 Mar 2018 17:09:05 +0000 (09:09 -0800)]
swscale: Introduce a helper to identify semi-planar formats

This cleans up the ever-more-unreadable list of semi-planar
exclusions for selecting the planar copy wrapper.

19 months agodoc/bitstream_filters: correct dump_extra bsfs docs.
Jun Zhao [Fri, 23 Feb 2018 05:53:05 +0000 (13:53 +0800)]
doc/bitstream_filters: correct dump_extra bsfs docs.

Update dump_extra bit stream filter docs to follow current
code implement.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Reviewed-by: Steven Liu <lq@onvideo.cn>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavformat/mov: Add manu/modl to mov_read_udta_string.
Tianqiang Liu [Fri, 2 Mar 2018 17:17:11 +0000 (09:17 -0800)]
avformat/mov: Add manu/modl to mov_read_udta_string.

Documentation: http://mp4ra.org/atoms.html

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavcodec/mediacodecdec: factorize codec declarations
Matthieu Bouron [Fri, 2 Mar 2018 11:06:19 +0000 (12:06 +0100)]
avcodec/mediacodecdec: factorize codec declarations

19 months agoavcodec/mediacodecdec: factorize common extradata functions
Matthieu Bouron [Fri, 2 Mar 2018 09:36:08 +0000 (10:36 +0100)]
avcodec/mediacodecdec: factorize common extradata functions

19 months agoavcodec/mediacodecdec: add missing "libavutil/internal.h" include
Matthieu Bouron [Fri, 2 Mar 2018 11:04:30 +0000 (12:04 +0100)]
avcodec/mediacodecdec: add missing "libavutil/internal.h" include

libavutil/internal.h defines NULL_IF_CONFIG_SMALL.

19 months agoavcodec/mediacodec_wrapper: load and use MediaFormat.constainsKey()
Matthieu Bouron [Wed, 21 Feb 2018 13:15:42 +0000 (14:15 +0100)]
avcodec/mediacodec_wrapper: load and use MediaFormat.constainsKey()

Avoids triggering an exception in MediaFormat getter functions if the
key does not exist.

19 months agoavcodec/mediacodecdec_common: remove unused field from MediaCodecDecContext
Matthieu Bouron [Tue, 20 Feb 2018 10:08:01 +0000 (11:08 +0100)]
avcodec/mediacodecdec_common: remove unused field from MediaCodecDecContext

19 months agoavcodec/mediacodecdec_common: remove spurious space
Matthieu Bouron [Mon, 19 Feb 2018 15:13:51 +0000 (16:13 +0100)]
avcodec/mediacodecdec_common: remove spurious space

19 months agoavcodec/mediacodecdec_common: refactor mediacodec_dec_parse_format()
Matthieu Bouron [Mon, 19 Feb 2018 15:13:00 +0000 (16:13 +0100)]
avcodec/mediacodecdec_common: refactor mediacodec_dec_parse_format()

19 months agoavformat/dashenc: Use HTTP DELETE for HTTP base proto
Serhii Marchuk [Tue, 27 Feb 2018 09:18:10 +0000 (11:18 +0200)]
avformat/dashenc: Use HTTP DELETE for HTTP base proto

19 months agoavformat/dashenc: fix for segment open issue when persistent connection is enabled
Vishwanath Dixit [Fri, 2 Mar 2018 06:22:37 +0000 (11:52 +0530)]
avformat/dashenc: fix for segment open issue when persistent connection is enabled

19 months agoavcodec/nvenc: Declare support for P016
Philip Langdale [Sun, 25 Feb 2018 17:08:06 +0000 (09:08 -0800)]
avcodec/nvenc: Declare support for P016

nvenc doesn't support P016, but we have two problems today:

1) We declare support for YUV444P16 which nvenc also doesn't support.
   We do this because it's the only pix_fmt we have that can
   approximate nvenc's internal format that is YUV444P10 with data in
   MSBs instead of LSBs. Because the declared format is a 16bit one,
   it will be preferrentially chosen when encoding >10bit content,
   but that content will normally be YUV420P12 or P016 which should
   get mapped to P010 and not YUV444P10.

2) Transcoding P016 content with nvenc should be possible in a pure
   hardware pipeline, and that can't be done if nvenc doesn't say it
   accepts P016. By mapping it to P010, we can use it, albeit with
   truncation. I have established that swscale doesn't know how to
   dither to 10bits so we'd get truncation anyway, even if we tried
   to do this 'properly'.

19 months agoswscale: Add p016 output support and generalise yuv420p1x to p010
Philip Langdale [Fri, 2 Mar 2018 04:16:48 +0000 (20:16 -0800)]
swscale: Add p016 output support and generalise yuv420p1x to p010

To make the best use of existing code, I generalised the wrapper
that currently does yuv420p10 to p010 to support any mixture of
input and output sizes between 10 and 16 bits. This had the side
effect of yielding a working code path for all yuv420p1x formats
to p01x.

19 months agoavcodec/hevcdec: Declare that nvdec supports 12bit decoding
Philip Langdale [Sun, 25 Feb 2018 17:44:23 +0000 (09:44 -0800)]
avcodec/hevcdec: Declare that nvdec supports 12bit decoding

19 months agoparseutils: add support for ms and us suffix for AV_OPT_TYPE_DURATION
Aurelien Jacobs [Thu, 1 Mar 2018 18:30:42 +0000 (19:30 +0100)]
parseutils: add support for ms and us suffix for AV_OPT_TYPE_DURATION

supported suffixes are:
- s: seconds (default when no suffix specified)
- m or ms: milliseconds
- u or us: microseconds

19 months agoavformat/mxg: return reference counted packets
James Almer [Tue, 27 Feb 2018 03:09:47 +0000 (00:09 -0300)]
avformat/mxg: return reference counted packets

Reviewed-by: wm4 <nfxjfg@googlemail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
19 months agoavformat/hlsenc: add reference stream index for split segment
Steven Liu [Fri, 2 Mar 2018 02:56:36 +0000 (10:56 +0800)]
avformat/hlsenc: add reference stream index for split segment

fix ticket: #7044
Get the first video stream to reference for split segment
when there have more than one video stream

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
Reviewed-by: Karthick Jeyapal <kjeyapal@akamai.com>
19 months agoffmpeg: Fix memset size on ctts_data in mov_read_trun() (round 2)
Xiaohan Wang [Sat, 24 Feb 2018 01:04:41 +0000 (17:04 -0800)]
ffmpeg: Fix memset size on ctts_data in mov_read_trun() (round 2)

The allocated size of sc->ctts_data is
(st->nb_index_entries + entries) * sizeof(*sc->ctts_data).

The size to memset at offset sc->ctts_data + sc->ctts_count should be
(st->nb_index_entries + entries - sc->ctts_count) *
sizeof(*sc->ctts_data))

The current code missed |entries| I believe, which was introduced in
https://patchwork.ffmpeg.org/patch/5541/.

However, after offline discussion, it seems the original code is much
more clear to read (before https://patchwork.ffmpeg.org/patch/5541/).

Hence this CL revert the memset logic to it's previous state by
remembering the |old_ctts_allocated_size|, and only memset the newly
allocated entries.

BUG=812567

Change-Id: Ibe94c7138e5818bfaae76866bfa6619a9b8a2b6b
Reviewed-on: https://chromium-review.googlesource.com/934925
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavformat/mxfdec: always use a stream which matches the first index table when seeking
Marton Balint [Sat, 17 Feb 2018 18:31:33 +0000 (19:31 +0100)]
avformat/mxfdec: always use a stream which matches the first index table when seeking

Obviously this is still not perfect, but better then it was. Using the first
index table and mxf->current_edit_unit is still hardcoded in many places, so
this change has hopefully the less chance of breaking anything that works
now.

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: compute sample_count after seek from index for audio streams
Marton Balint [Tue, 13 Feb 2018 22:44:05 +0000 (23:44 +0100)]
avformat/mxfdec: compute sample_count after seek from index for audio streams

This fixes audio timestamps if the audio streams are not frame wrapped with the
video.

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: use body_offset of the partitions in mxf_absolute_bodysid_offset
Marton Balint [Thu, 8 Feb 2018 01:38:56 +0000 (02:38 +0100)]
avformat/mxfdec: use body_offset of the partitions in mxf_absolute_bodysid_offset

Use body_offset of the partitions to search for the partition with the given
offset in the essence. This makes the function find the correct partition for
non frame-wrapped essences as well, where only the essence data is part of the
the edit unit byte count, not the KLV-s.

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: set index_duration from the track using the index
Marton Balint [Sat, 17 Feb 2018 15:46:41 +0000 (16:46 +0100)]
avformat/mxfdec: set index_duration from the track using the index

Also use original_duration as index_duration is in edit units.

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: fix sorting of index segments
Marton Balint [Tue, 6 Feb 2018 23:20:01 +0000 (00:20 +0100)]
avformat/mxfdec: fix sorting of index segments

Fixes ticket #5320.

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: use both body_sid and track_number to find the track of a packet
Marton Balint [Tue, 6 Feb 2018 21:41:16 +0000 (22:41 +0100)]
avformat/mxfdec: use both body_sid and track_number to find the track of a packet

In order to do that we have to parse the EssenceContainerData and assign the
proper body_sid and index_sid to the tracks from the corresponding source
packages.

This fixes packets returned in the wrong stream for some OP1-b files.

Based on a patch by Alex Mogurenko from https://github.com/da8eat/FFmpeg

Reference: http://mogurenko.com/2018/01/02/mxf-op1b-ffmpeg-part1/

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: use full UMID to resolve source package
Marton Balint [Mon, 5 Feb 2018 22:27:20 +0000 (23:27 +0100)]
avformat/mxfdec: use full UMID to resolve source package

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: use the first system item if available for calculating essence_offset
Marton Balint [Sat, 17 Feb 2018 14:02:19 +0000 (15:02 +0100)]
avformat/mxfdec: use the first system item if available for calculating essence_offset

Also add an additional system item key.

Fixes parsing of ffmpeg-bugs/trac/ticket2817/warehouse.mxf

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: fix essence_offset calculation
Marton Balint [Sat, 17 Feb 2018 10:47:57 +0000 (11:47 +0100)]
avformat/mxfdec: fix essence_offset calculation

The reference point for a KAG is the first byte of the key of a Partition Pack.

Fixes ticket #2817.
Fixes ticket #5317.

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoavformat/mxfdec: fix indentation
Marton Balint [Mon, 12 Feb 2018 22:34:23 +0000 (23:34 +0100)]
avformat/mxfdec: fix indentation

Signed-off-by: Marton Balint <cus@passwd.hu>
19 months agoframe: add an av_frame_new_side_data_from_buf function
Rostislav Pehlivanov [Tue, 17 Oct 2017 22:57:28 +0000 (23:57 +0100)]
frame: add an av_frame_new_side_data_from_buf function

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
19 months agoavcodec/wmaprodec: support decoding up to 16 channels of xma
Maxton [Tue, 27 Feb 2018 09:43:52 +0000 (04:43 -0500)]
avcodec/wmaprodec: support decoding up to 16 channels of xma

Signed-off by: Maxton <maxton@maxton.xyz>

19 months agoavfilter/avf_concat: add next command
Bodecs Bela [Sun, 25 Feb 2018 16:07:40 +0000 (17:07 +0100)]
avfilter/avf_concat: add next command

This patch makes it possible to dinamically close the current segment
and step to the next one by introducing command handling capabilities
into the filter. This new feature is very usefull when working with
real-time sources or live streams as source. Combinig usage with zmqsend
tool you can interactively end the current segment and step to next one.

Signed-off-by: Bela Bodecs <bodecsb@vivanet.hu>
19 months agoavcodec/Makefile: skip nvdec.h header when nvdec is not enabled
James Almer [Tue, 27 Feb 2018 20:51:02 +0000 (17:51 -0300)]
avcodec/Makefile: skip nvdec.h header when nvdec is not enabled

Fixes make checkheaders now that the cuda headers are no longer in-tree

Signed-off-by: James Almer <jamrial@gmail.com>
19 months agoavcodec/msmpeg4dec: Check for input end in msmpeg4v34_decode_mb()
Michael Niedermayer [Mon, 26 Feb 2018 15:44:50 +0000 (16:44 +0100)]
avcodec/msmpeg4dec: Check for input end in msmpeg4v34_decode_mb()

Fixes: Timeout
Fixes: 6276/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_WMV1_fuzzer-5881196690014208

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavcodec/truemotion2rt: Check input buffer size
Michael Niedermayer [Thu, 22 Feb 2018 02:04:40 +0000 (03:04 +0100)]
avcodec/truemotion2rt: Check input buffer size

Fixes: Timeout
Fixes: 6250/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TRUEMOTION2RT_fuzzer-5479814011027456

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
19 months agoavcodec/g2meet: Check tile dimensions with av_image_check_size2()
Michael Niedermayer [Thu, 22 Feb 2018 01:34:05 +0000 (02:34 +0100)]
avcodec/g2meet: Check tile dimensions with av_image_check_size2()

Fixes: OOM
Fixes: 6216/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_G2M_fuzzer-4983807968018432

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>