ffmpeg.git
12 months agolavfi/Makefile: move dnn_*.o under vf_srcnn
Jan Ekström [Sat, 2 Jun 2018 15:07:22 +0000 (18:07 +0300)]
lavfi/Makefile: move dnn_*.o under vf_srcnn

These files depend on libavformat, and the vf_srcnn filter
currently is the only thing utilizing these dnn_* files and
already happens to have a dependency on libavformat.

This fixes compilation in cases where libavformat is not a
dependency for libavfilter.

Reported by Kam_ on IRC.

12 months agodoc/ffmpeg: rewrite Stream Selection chapter
Gyan Doshi [Thu, 24 May 2018 13:41:00 +0000 (19:11 +0530)]
doc/ffmpeg: rewrite Stream Selection chapter

Flesh out with details and examples to show quirks and limitations.

12 months agoavfilter: add adeclick and adeclip audio filters
Paul B Mahol [Mon, 8 Jan 2018 14:02:59 +0000 (15:02 +0100)]
avfilter: add adeclick and adeclip audio filters

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agolibavformat/mov: Fix heap buffer overflow.
Jacob Trimble [Thu, 31 May 2018 17:41:29 +0000 (10:41 -0700)]
libavformat/mov: Fix heap buffer overflow.

Found by Chrome's ClusterFuzz: https://crbug.com/847060

Signed-off-by: Jacob Trimble <modmaker@google.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agolavc/libx265: allow users to set closed GOP via generic lavc flag
Gyan Doshi [Fri, 1 Jun 2018 10:44:02 +0000 (16:14 +0530)]
lavc/libx265: allow users to set closed GOP via generic lavc flag

lavc flag 'cgop' can be used to set closed GOP.

Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
12 months agoavcodec/dpx: Support for RGBA 12-bit packed decoding
Jérôme Martinez [Fri, 1 Jun 2018 08:09:01 +0000 (10:09 +0200)]
avcodec/dpx: Support for RGBA 12-bit packed decoding

Limited to widths multiple of 2 due to lack of test files for such corner case

This partially fixes ticket #5639

12 months agoavcodec/dnxhdenc: do not free nonexistent slice threads data when frame threading...
Paul B Mahol [Fri, 1 Jun 2018 08:54:39 +0000 (10:54 +0200)]
avcodec/dnxhdenc: do not free nonexistent slice threads data when frame threading is used

Forgotten in 28e9ba951d1a0b0aca53b242aa64f484ca75e874.
Fixes #7241.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agodoc/ffmpeg: remove non-existent vdt option
Gyan Doshi [Thu, 31 May 2018 19:53:12 +0000 (01:23 +0530)]
doc/ffmpeg: remove non-existent vdt option

12 months agoavfilter: use av_clip_uintp2_c where clip is variable
John Cox [Thu, 31 May 2018 14:22:59 +0000 (16:22 +0200)]
avfilter: use av_clip_uintp2_c where clip is variable

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavformat/mxfdec: add some missing picture_essence_container_uls
Marton Balint [Sun, 20 May 2018 16:32:11 +0000 (18:32 +0200)]
avformat/mxfdec: add some missing picture_essence_container_uls

Signed-off-by: Marton Balint <cus@passwd.hu>
12 months agoavformat/mxfdec: use int math for sample count calculation
Marton Balint [Sat, 26 May 2018 08:51:16 +0000 (10:51 +0200)]
avformat/mxfdec: use int math for sample count calculation

This also changes the rounding to nearest.

Signed-off-by: Marton Balint <cus@passwd.hu>
12 months agoavformat/mxfdec: fix klv_decode_ber_length return value usage
Marton Balint [Sun, 27 May 2018 18:39:09 +0000 (20:39 +0200)]
avformat/mxfdec: fix klv_decode_ber_length return value usage

Signed-off-by: Marton Balint <cus@passwd.hu>
12 months agotools/crypto_bench: add missing RC4 implementation from tomcrypt
James Almer [Wed, 30 May 2018 17:34:57 +0000 (14:34 -0300)]
tools/crypto_bench: add missing RC4 implementation from tomcrypt

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agotools/crypto_bench: add missing RC4 implementation from gcrypt
James Almer [Wed, 30 May 2018 16:52:28 +0000 (13:52 -0300)]
tools/crypto_bench: add missing RC4 implementation from gcrypt

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agotools/crypto_bench: add support for mbedcrypto
James Almer [Sun, 27 May 2018 21:17:54 +0000 (18:17 -0300)]
tools/crypto_bench: add support for mbedcrypto

Requires mbed TLS 2.7.0 or newer

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoavcodec/h263dec: Reinitialize idct context if it has not been setup for the active...
Michael Niedermayer [Mon, 28 May 2018 20:29:58 +0000 (22:29 +0200)]
avcodec/h263dec: Reinitialize idct context if it has not been setup for the active profile

The profile after reading headers can be different from when the context was initialized

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/idctdsp: Clear idct/idct_add for studio profile
Michael Niedermayer [Mon, 28 May 2018 20:29:57 +0000 (22:29 +0200)]
avcodec/idctdsp: Clear idct/idct_add for studio profile

This does not leave them "as before" which may be a value from a previous profile

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/idctdsp: Transmit studio_profile to init instead of using AVCodecContext...
Michael Niedermayer [Mon, 28 May 2018 19:19:08 +0000 (21:19 +0200)]
avcodec/idctdsp: Transmit studio_profile to init instead of using AVCodecContext profile

These 2 fields are not always the same, it is simpler to always use the same field
for detecting studio profile

Fixes: null pointer dereference
Fixes: ffmpeg_crash_3.avi

Found-by: Thuan Pham <thuanpv@comp.nus.edu.sg>, Marcel Böhme, Andrew Santosa and Alexandru RazvanCaciulescu with AFLSmart
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavfilter/af_aiir: draw IR frequency response
Paul B Mahol [Wed, 30 May 2018 10:43:09 +0000 (12:43 +0200)]
avfilter/af_aiir: draw IR frequency response

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoavfilter/af_afir: fix picking of IR channel
Paul B Mahol [Wed, 30 May 2018 10:30:24 +0000 (12:30 +0200)]
avfilter/af_afir: fix picking of IR channel

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoflvenc: Fix sequence header update timestamps
Alex Converse [Thu, 26 Apr 2018 20:46:28 +0000 (13:46 -0700)]
flvenc: Fix sequence header update timestamps

12 months agoflvenc: Factorize timestamp writing
Alex Converse [Fri, 11 May 2018 01:08:01 +0000 (18:08 -0700)]
flvenc: Factorize timestamp writing

The code is trivial but the semantics in the spec are ambiguous. This
should help keep parts of the muxer interpreting them consistently.

12 months agolavfi/tests: Fix 16-bit vf_blend test to avoid memory not aligned to 2 bytes
Andrey Semashev [Wed, 23 May 2018 21:07:36 +0000 (00:07 +0300)]
lavfi/tests: Fix 16-bit vf_blend test to avoid memory not aligned to 2 bytes

Generic C implementation of vf_blend performs reads and writes of 16-bit
elements, which requires the buffers to be aligned to at least 2-byte
boundary.

Also, the change fixes source buffer overrun caused by src_offset being
added to to test handling of misaligned buffers.

Fixes: #7226

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoqt-faststart - stricter input validations
erankor [Tue, 29 May 2018 13:18:05 +0000 (16:18 +0300)]
qt-faststart - stricter input validations

1. validate the moov size before checking for cmov atom
2. avoid performing arithmetic operations on unvalidated numbers
3. verify the stco/co64 offset count does not overflow the stco/co64
atom (not only the moov atom)

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/qtrle: Do not output duplicated frames on insufficient input
Michael Niedermayer [Sun, 27 May 2018 19:59:58 +0000 (21:59 +0200)]
avcodec/qtrle: Do not output duplicated frames on insufficient input

This improves performance and makes qtrle behave more similar to other decoders.
Libavcodec does generally not output known duplicated frames, instead the calling Application
can insert them as it needs.

Fixes: Timeout
Fixes: 6383/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_QTRLE_fuzzer-6199846902956032

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoffplay: Print codec_name if decoder for codec_id could not be found.
Carl Eugen Hoyos [Tue, 29 May 2018 23:09:49 +0000 (01:09 +0200)]
ffplay: Print codec_name if decoder for codec_id could not be found.

Reviewed-by: Marton Balint
12 months agoavfilter/af_afir: draw IR frequency response
Paul B Mahol [Tue, 29 May 2018 16:24:22 +0000 (18:24 +0200)]
avfilter/af_afir: draw IR frequency response

Signed-off-by: Paul B Mahol <onemda@gmail.com>
12 months agoAdds dnn inference module for simple convolutional networks. Reimplements srcnn filte...
Sergey Lavrushkin [Fri, 25 May 2018 17:31:04 +0000 (20:31 +0300)]
Adds dnn inference module for simple convolutional networks. Reimplements srcnn filter based on it.

Signed-off-by: Pedro Arthur <bygrandao@gmail.com>
12 months agodoc/ffmpeg: update disposition values
Gyan Doshi [Tue, 29 May 2018 06:27:58 +0000 (11:57 +0530)]
doc/ffmpeg: update disposition values

Thumbnail example added. Avoid transcoding in older examples.

12 months agoavformat/movenc: creating producer reference time (PRFT) box
Vishwanath Dixit [Mon, 7 May 2018 09:57:51 +0000 (15:27 +0530)]
avformat/movenc: creating producer reference time (PRFT) box

The producer reference time box supplies relative wall-clock times
at which movie fragments, or files containing movie fragments
(such as segments) were produced.
The box is mainly useful in live streaming use cases. A media player
can parse the box and utilize the time fields to measure and improve
the latency during real time playout.

12 months agoavformat/utils: function to get the formatted ntp time
Vishwanath Dixit [Mon, 7 May 2018 09:57:36 +0000 (15:27 +0530)]
avformat/utils: function to get the formatted ntp time

This utility function creates 64-bit NTP time format as per the RFC
5905.
A simple explaination of 64-bit NTP time format is here
http://www.beaglesoft.com/Manual/page53.htm

12 months agoavcodec/vc1: store zero MVs for all blocks in a MB
Jerome Borsboom [Mon, 28 May 2018 21:50:28 +0000 (23:50 +0200)]
avcodec/vc1: store zero MVs for all blocks in a MB

Direct prediction for interlace frame B pictures references the mv in the
second block in an MB in the backward reference frame for the twomv case.
When the backward reference frame is an I frame, this value may be unset.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
12 months agoavcodec/vc1: fix mquant calculation for interlace field pictures
Jerome Borsboom [Fri, 18 May 2018 15:06:23 +0000 (17:06 +0200)]
avcodec/vc1: fix mquant calculation for interlace field pictures

For interlace field pictures s->mb_height indicates the height of the full
picture in MBs, i.e. the two fields combined. A single field is half this
size. When calculating mquant for interlace field pictures, the bottom edge
is the last MB row of the field.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
12 months agoavcodec/allcodecs: Provide empty codec_list in allcodecs when ossfuzz is used
Michael Niedermayer [Mon, 28 May 2018 00:37:48 +0000 (02:37 +0200)]
avcodec/allcodecs: Provide empty codec_list in allcodecs when ossfuzz is used

The last workaround is not sufficient to make oss fuzz work with the iterate API
as it did not provide a FFmpeg that external libs can be linked to.

This patch does not fully restore the pre iterate functionality. My attempts to
do this have so far failed.

The problem with this solution is that it renders the fuzzers virtual system
ffmpeg (libs) non functional. Which differs from a real system compared to the
virtual system tested by the fuzzer.
It should theoretically not matter as the system ffmpeg wouldnt be used.
But with more cases being fuzzed we likely will hit a case where a external
lib is involved and it does matter ...

Working around this may be possible with weak symbols but so far my attempts
failed

Alternatively multiple ffmpeg could be built, this becomes messy though
quickly as they need to be all linked together. That is we need a FFmpeg
that has the iterate API modified so it can work with the resources
available to ossfuzz. And at the same time we need a ffmpeg that has
its full functionality for any external libs which use ffmpeg and are
used by ffmpeg.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agolavf/libssh: translate a read of 0 to EOF
Jan Ekström [Mon, 28 May 2018 00:21:35 +0000 (03:21 +0300)]
lavf/libssh: translate a read of 0 to EOF

Yet another case of forgotten 0 =! EOF translation.

While the documentation for this specific synchronous read
function does not mention it, the documentation for
`sftp_async_read` documents it, as well as looking at the
implementation of this function leads one to find
`if (handle->eof) { return 0; }`.

Reported by stnutt on IRC.

12 months agocmdutils: dump supported hardware devices in print_codec()
Jun Zhao [Sat, 26 May 2018 12:57:45 +0000 (20:57 +0800)]
cmdutils: dump supported hardware devices in print_codec()

dump the supported hardware devices for codec when use the command
like ./ffmpeg -h decoder=h264.

Signed-off-by: Jun Zhao <mypopydev@gmail.com>
12 months agocmdutils: print missing caps in print_codec().
Jun Zhao [Fri, 25 May 2018 06:57:48 +0000 (14:57 +0800)]
cmdutils: print missing caps in print_codec().

print full caps type in print_codec().

Signed-off-by: Jun Zhao <mypopydev@gmail.com>
12 months agoavformat/dashenc: Added a warning for incorrect segment name extension
Karthick Jeyapal [Mon, 14 May 2018 05:51:46 +0000 (11:21 +0530)]
avformat/dashenc: Added a warning for incorrect segment name extension

Applicable only to webm output format.
By default all the segment filenames end with .m4s extension.
When someone chooses webm output format, we recommend they also override the relevant segment name options to end with .webm extension. This patch will issue a warning for he same

12 months agoavformat/dashenc: Added option for Segment file format
Karthick Jeyapal [Fri, 4 May 2018 05:15:58 +0000 (10:45 +0530)]
avformat/dashenc: Added option for Segment file format

Right now segment file format is chosen to be either mp4 or webm based on the codec format.
This patch makes that choice configurable by the user, instead of being decided by the muxer.

Also with this change per-stream choice segment file format(based on codec type) is not possible.
All the output audio and video streams should be in the same file format.

12 months agoavcodec/ac3dec: Check that the number of channels with dependant streams is valid
Michael Niedermayer [Fri, 25 May 2018 20:55:19 +0000 (22:55 +0200)]
avcodec/ac3dec: Check that the number of channels with dependant streams is valid

Fixes: left shift of 1 by 63 places cannot be represented in type 'long long'
Fixes: out of array access
Fixes: 7284/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AC3_fuzzer-5767914968842240

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/ac3dec: Fix null pointer dereference in ac3_decode_frame()
Michael Niedermayer [Fri, 25 May 2018 20:22:27 +0000 (22:22 +0200)]
avcodec/ac3dec: Fix null pointer dereference in ac3_decode_frame()

Fixes: index 8 out of bounds for type 'uint8_t *[8]'
Fixes: 7273/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_EAC3_fuzzer-6296497667702784

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/aacdec_fixed: use 64bit to avoid overflow in rounding in apply_dependent_coup...
Michael Niedermayer [Fri, 25 May 2018 20:06:48 +0000 (22:06 +0200)]
avcodec/aacdec_fixed: use 64bit to avoid overflow in rounding in apply_dependent_coupling_fixed()

Fixes: signed integer overflow: -2141499320 + -14469590 cannot be represented in type 'int'
Fixes: 7351/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AAC_FIXED_fuzzer-6351214791884800

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agooavcodec/aacpsdsp_template: Use unsigned for hs0X to prevent undefined behavior
Michael Niedermayer [Fri, 25 May 2018 20:02:20 +0000 (22:02 +0200)]
oavcodec/aacpsdsp_template: Use unsigned for hs0X to prevent undefined behavior

Fixes: signed integer overflow: 1073741842 + 1784008138 cannot be represented in type 'int'
Fixes: 6792/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_AAC_FIXED_fuzzer-5677589835284480

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/g723_1dec: Clip bits2 in both directions
Michael Niedermayer [Fri, 25 May 2018 19:56:04 +0000 (21:56 +0200)]
avcodec/g723_1dec: Clip bits2 in both directions

Fixes: shift exponent 33 is too large for 32-bit type 'int'
Fixes: 6743/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_G723_1_fuzzer-5823772687859712

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoavcodec/mpeg4videoenc: Use 64 bit for times in mpeg4_encode_gop_header()
Michael Niedermayer [Mon, 21 May 2018 21:08:05 +0000 (23:08 +0200)]
avcodec/mpeg4videoenc: Use 64 bit for times in mpeg4_encode_gop_header()

Fixes truncation
Fixes Assertion n <= 31 && value < (1U << n) failed at libavcodec/put_bits.h:169
Fixes: ffmpeg_crash_2.avi

Found-by: Thuan Pham <thuanpv@comp.nus.edu.sg>, Marcel Böhme, Andrew Santosa and Alexandru RazvanCaciulescu with AFLSmart
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agolavc/hevcdec: Treat clean random access nals as keyframes for -skip_frame.
Carl Eugen Hoyos [Sun, 27 May 2018 20:51:06 +0000 (22:51 +0200)]
lavc/hevcdec: Treat clean random access nals as keyframes for -skip_frame.

Fixes ticket #7227.

Reviewed-by: Mark Thompson
12 months agolibavformat/mxfenc: Add some () to attempt to workaround build issue on osx
Michael Niedermayer [Tue, 22 May 2018 18:57:13 +0000 (20:57 +0200)]
libavformat/mxfenc: Add some () to attempt to workaround build issue on osx

fixes ticket7209

Tested-by: Jim DeLaHunt <from.ffmpeg-dev@jdlh.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoconfigure: Omit fsanitize flags if they are already specified by the user
Michael Niedermayer [Sat, 26 May 2018 00:28:57 +0000 (02:28 +0200)]
configure: Omit fsanitize flags if they are already specified by the user

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
12 months agoconfigure: fix check for mbedtls
Reino Wijnsma [Wed, 23 May 2018 00:11:30 +0000 (02:11 +0200)]
configure: fix check for mbedtls

Add missing libraries needed when linking with a static build of MbedTLS.

Signed-off-by: James Almer <jamrial@gmail.com>
12 months agoavformat/mxf: fix NTSC 59.94 samples per frame layout
Marton Balint [Thu, 24 May 2018 20:03:43 +0000 (22:03 +0200)]
avformat/mxf: fix NTSC 59.94 samples per frame layout

FFmbc uses this.
bmx uses this.
XAVC MXF Mapping and Operating Points prefers this.
Basic rounding rules also yields these numbers.

Signed-off-by: Marton Balint <cus@passwd.hu>
12 months agolavc/cfhd: interlaced frame decoding added
Gagandeep Singh [Tue, 22 May 2018 15:40:21 +0000 (21:10 +0530)]
lavc/cfhd: interlaced frame decoding added

ticket #5522 output of given samples significantly improved

13 months agoavcodec/mlpdec: Only change noise_type if the related fields are valid
Michael Niedermayer [Thu, 17 May 2018 11:58:46 +0000 (13:58 +0200)]
avcodec/mlpdec: Only change noise_type if the related fields are valid

Fixes: inconsistency
Fixes:runtime error: index 8 out of bounds for type 'int32_t [8]'
Fixes: 6686/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TRUEHD_fuzzer-5191383498358784

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoindeo4: Decode all or nothing of a band header.
Michael Niedermayer [Thu, 17 May 2018 11:40:38 +0000 (13:40 +0200)]
indeo4: Decode all or nothing of a band header.

This avoids inconsistent value combinations.
Alternatively it would be possible to add more checks and careful use of
temporary variables, but my try of this quickly seemed to become
a rather large change.
The disadvantage of this, is that the struct is copied back and forth.

Fixes: index 6 out of bounds for type 'const uint16_t [5][16]'
Fixes: 6557/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_INDEO4_fuzzer-4787296550256640

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavcodec/ac3dec: Use frame_size if superframe_size is 0
Michael Niedermayer [Thu, 17 May 2018 23:48:38 +0000 (01:48 +0200)]
avcodec/ac3dec: Use frame_size if superframe_size is 0

Fixes: Infinite loop
Fixes: 7669/clusterfuzz-testcase-ffmpeg_AV_CODEC_ID_AC3_FIXED_fuzzer-4689042185650176
Fixes: 7670/clusterfuzz-testcase-ffmpeg_AV_CODEC_ID_AC3_fuzzer-4706306762997760
Fixes: 7672/clusterfuzz-testcase-ffmpeg_AV_CODEC_ID_EAC3_fuzzer-4702108499574784

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agolavc/hevc_ps: Use correct pix_fmt AV_PIX_FMT_GRAY9 for 9-bit 4:0:0 input.
Carl Eugen Hoyos [Fri, 25 May 2018 18:46:11 +0000 (20:46 +0200)]
lavc/hevc_ps: Use correct pix_fmt AV_PIX_FMT_GRAY9 for 9-bit 4:0:0 input.

13 months agolavc/j2kenc: Support AV_PIX_FMT_PAL8.
Carl Eugen Hoyos [Tue, 22 May 2018 00:21:04 +0000 (02:21 +0200)]
lavc/j2kenc: Support AV_PIX_FMT_PAL8.

13 months agolavf/img2dec: Auto-detect xwd images.
Carl Eugen Hoyos [Fri, 25 May 2018 18:06:34 +0000 (20:06 +0200)]
lavf/img2dec: Auto-detect xwd images.

13 months agodoc/codecs: Remove option sc_factor.
Carl Eugen Hoyos [Thu, 24 May 2018 16:21:05 +0000 (18:21 +0200)]
doc/codecs: Remove option sc_factor.

Fixes ticket #7228.
The option was disabled since 4a62f477 and removed in 6e69525e.

13 months agoavformat/hlsenc: support http method for hls fmp4
Steven Liu [Thu, 24 May 2018 03:55:58 +0000 (11:55 +0800)]
avformat/hlsenc: support http method for hls fmp4

fix ticket: 7160

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
13 months agoavformat/dashdec: replace user-agent to user_agent for deprecate warning message
Steven Liu [Thu, 24 May 2018 03:43:35 +0000 (11:43 +0800)]
avformat/dashdec: replace user-agent to user_agent for deprecate warning message

13 months agoavformat/dashdec: Fix for ticket 7149 (Segfault when decoding dash streams)
Colin NG [Thu, 24 May 2018 03:10:17 +0000 (11:10 +0800)]
avformat/dashdec: Fix for ticket 7149 (Segfault when decoding dash streams)

simplify the code to check common init section

13 months agoavformat/dashdec: Fix for ticket 7149 (Segfault when decoding dash streams)
Colin NG [Thu, 24 May 2018 03:09:20 +0000 (11:09 +0800)]
avformat/dashdec: Fix for ticket 7149 (Segfault when decoding dash streams)

Add NULL pointer check for init_section

13 months agohwcontext_vaapi: Fix mapping from DRM
Mark Thompson [Thu, 24 May 2018 00:17:12 +0000 (01:17 +0100)]
hwcontext_vaapi: Fix mapping from DRM

This was broken by bed670a1de29b58fcb3fe046562d8bd125b1457f, which added
an assert that always failed.

13 months agoavformat/mov: replace a value error by clipping into valid range in mov_read_stsc()
Michael Niedermayer [Mon, 21 May 2018 01:16:58 +0000 (03:16 +0200)]
avformat/mov: replace a value error by clipping into valid range in mov_read_stsc()

Fixes: #7165

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavformat/bintext: Reduce detection for random .bin files as it more likely is not...
Michael Niedermayer [Sat, 12 May 2018 16:33:26 +0000 (18:33 +0200)]
avformat/bintext: Reduce detection for random .bin files as it more likely is not a multimedia related file

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agolavc/jpeg2000dec: Move a variable declaration closer to its usage.
Carl Eugen Hoyos [Tue, 22 May 2018 10:55:46 +0000 (12:55 +0200)]
lavc/jpeg2000dec: Move a variable declaration closer to its usage.

13 months agolavc/jpeg2000dec: Use a define to clarify the meaning of a constant.
Carl Eugen Hoyos [Tue, 22 May 2018 10:54:32 +0000 (12:54 +0200)]
lavc/jpeg2000dec: Use a define to clarify the meaning of a constant.

13 months agolavc/h264_parse: Remove a superfluous linebreak.
Carl Eugen Hoyos [Tue, 22 May 2018 10:48:53 +0000 (12:48 +0200)]
lavc/h264_parse: Remove a superfluous linebreak.

13 months agolibavformat: add mbedTLS based TLS
Thomas Volkert [Sat, 21 Apr 2018 13:53:31 +0000 (15:53 +0200)]
libavformat: add mbedTLS based TLS

Signed-off-by: James Almer <jamrial@gmail.com>
13 months agoavcodec/libvpxenc: fix setting amount of threads used for encoding
James Almer [Sat, 19 May 2018 18:01:56 +0000 (15:01 -0300)]
avcodec/libvpxenc: fix setting amount of threads used for encoding

The libvpx doxy says that a value of 0 for the g_threads field is
equivalent to a value of 1, whereas for avctx->thread_count it means
the maximum amount of threads possible for the host system.

Use av_cpu_count() to get the correct thread count when auto threads
is requested.

Reviewed-by: James Zern <jzern@google.com>
Signed-off-by: James Almer <jamrial@gmail.com>
13 months agohwcontext: Add test for device creation and derivation
Mark Thompson [Tue, 15 May 2018 22:15:03 +0000 (23:15 +0100)]
hwcontext: Add test for device creation and derivation

This uses any devices it can find on the host system - on a system with no
hardware device support or in builds with no support included it will do
nothing and pass.

13 months agoavformat/mpegts: fix memory leak with merge_pmt_versions=1
Aman Gupta [Mon, 21 May 2018 19:13:06 +0000 (12:13 -0700)]
avformat/mpegts: fix memory leak with merge_pmt_versions=1

Signed-off-by: Aman Gupta <aman@tmm1.net>
13 months agodoc: remove AVStream private fields from APIchanges
Aman Gupta [Mon, 21 May 2018 19:12:46 +0000 (12:12 -0700)]
doc: remove AVStream private fields from APIchanges

Signed-off-by: Aman Gupta <aman@tmm1.net>
13 months agoavformat/mpegts: rename variable to clarify meaning
Aman Gupta [Mon, 21 May 2018 19:11:45 +0000 (12:11 -0700)]
avformat/mpegts: rename variable to clarify meaning

Both stream_id and stream_identifier are used in this file,
and have different meanings. The latter comes from the
stream_identifier_descriptor.

Signed-off-by: Aman Gupta <aman@tmm1.net>
13 months agoavformat/mov: Only fail for STCO/STSC contradictions if both exist
Michael Niedermayer [Tue, 15 May 2018 15:07:00 +0000 (17:07 +0200)]
avformat/mov: Only fail for STCO/STSC contradictions if both exist

Fixes regression with playback of GF9720Repeal20the20Eighth20with20Helen20Linehan.m4a
See: crbug 822666

Found-by: "Mattias Wadman <mattias.wadman@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavformat/mov: Break out early if chunk_count is 0 in mov_build_index()
Michael Niedermayer [Tue, 15 May 2018 15:06:59 +0000 (17:06 +0200)]
avformat/mov: Break out early if chunk_count is 0 in mov_build_index()

Without this some operations might overflow (undefined behavior)
even though the index adding loop would never execute

No testcase known

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavcodec/vc1: FIELDTX is only present in interlaced frame I/BI pictures
Jerome Borsboom [Sun, 20 May 2018 11:45:56 +0000 (13:45 +0200)]
avcodec/vc1: FIELDTX is only present in interlaced frame I/BI pictures

If v->fieldtx_is_raw is not reset to zero, it may spill over from a previous
interlaced frame I/BI picture.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavformat/mp3dec: require 90% of a file to be mp3 if only 1 mp3 frame is found in...
Michael Niedermayer [Sat, 12 May 2018 16:33:29 +0000 (18:33 +0200)]
avformat/mp3dec: require 90% of a file to be mp3 if only 1 mp3 frame is found in sequence

This eliminates several low score detections of non mp3 files

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavformat/mp3dec: Require 50% of the file to be mp3 frames in the maxframes>200 probin...
Michael Niedermayer [Sat, 12 May 2018 16:33:28 +0000 (18:33 +0200)]
avformat/mp3dec: Require 50% of the file to be mp3 frames in the maxframes>200 probing test

This corrects several misdetections of large files

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavformat/mp3dec: Require probing data to be 50% mp3 frames for low score probing...
Michael Niedermayer [Sat, 12 May 2018 16:33:27 +0000 (18:33 +0200)]
avformat/mp3dec: Require probing data to be 50% mp3 frames for low score probing to succeed

This massively reduces the detection of random data as low score mp3
It may improve security by making it harder to read non multimedia data

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavcodec/vc1: fix calculation of the last line of a slice
Jerome Borsboom [Fri, 18 May 2018 15:06:32 +0000 (17:06 +0200)]
avcodec/vc1: fix calculation of the last line of a slice

Only for the last slice of the first field is the last line of the slice
equal to the height of the field.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavcodec/vc1: DIRECTBIT is only present in inter MBs
Jerome Borsboom [Fri, 18 May 2018 15:06:28 +0000 (17:06 +0200)]
avcodec/vc1: DIRECTBIT is only present in inter MBs

DIRECTBIT was decoded before the intra/inter MB branching when decoding
interlace frame B pictures. Resulting in mistakenly also decoding it for intra
MBs where this syntax element is not present.

Signed-off-by: Jerome Borsboom <jerome.borsboom@carpalis.nl>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavdevice/sdl2 : add option to define if the window quit action is available
Martin Vignali [Tue, 8 May 2018 09:55:40 +0000 (11:55 +0200)]
avdevice/sdl2 : add option to define if the window quit action is available

13 months agoavdevice/sdl2output : fix setting window_size
Martin Vignali [Tue, 8 May 2018 09:47:13 +0000 (11:47 +0200)]
avdevice/sdl2output : fix setting window_size

13 months agoavformat/mpegts: add merge_pmt_versions option
Aman Gupta [Tue, 8 May 2018 23:12:12 +0000 (16:12 -0700)]
avformat/mpegts: add merge_pmt_versions option

This new optional flag makes it easier to deal with mpegts
samples where the PMT is updated and elementary streams move
to different PIDs in the middle of playback.

Previously, new AVStreams were created per PID, and it was up
to the user to figure out which streams had migrated to a new PID
(by iterating over the list of AVProgram and making guesses), and
switch seamlessly to the new AVStream during playback.

Transcoding or remuxing these streams with ffmpeg on the CLI was
also quite painful, and the user would need to extract each set
of PIDs into a separate file and then stitch them back together.

With this new option, the mpegts demuxer will automatically detect
PMT changes and feed data from the new PID to the original AVStream
that was created for the orignal PID. For mpegts samples with
stream_identifier_descriptor available, the unique ID is used to
merge PIDs together. If the stream id is not available, the demuxer
attempts to map PIDs based on their position within the PMT.

With this change, I am able to playback and transcode/remux these
two samples which previously caused issues:

    https://tmm1.s3.amazonaws.com/pmt-version-change.ts
    https://kuroko.fushizen.eu/videos/pid_switch_sample.ts

I also have another longer sample in which the PMT changes
repeatedly and ES streams move to different pids three times
during playback:

    https://tmm1.s3.amazonaws.com/multiple-pmt-change.ts

Demuxing this sample with the new option shows several new log
messages as the PMT changes are handled:

    [mpegts] detected PMT change (program=1, version=3/6, pcr_pid=0xf98/0xfb7)
    [mpegts] re-using existing video stream 0 (pid=0xf98) for new pid=0xfb7
    [mpegts] re-using existing audio stream 1 (pid=0xf99) for new pid=0xfb8
    [mpegts] re-using existing audio stream 2 (pid=0xf9a) for new pid=0xfb9
    [mpegts] detected PMT change (program=1, version=6/3, pcr_pid=0xfb7/0xf98)
    [mpegts] detected PMT change (program=1, version=3/4, pcr_pid=0xf98/0xf9b)
    [mpegts] re-using existing video stream 0 (pid=0xf98) for new pid=0xf9b
    [mpegts] re-using existing audio stream 1 (pid=0xf99) for new pid=0xf9c
    [mpegts] re-using existing audio stream 2 (pid=0xf9a) for new pid=0xf9d
    [mpegts] detected PMT change (program=1, version=4/5, pcr_pid=0xf9b/0xfa9)
    [mpegts] re-using existing video stream 0 (pid=0xf98) for new pid=0xfa9
    [mpegts] re-using existing audio stream 1 (pid=0xf99) for new pid=0xfaa
    [mpegts] re-using existing audio stream 2 (pid=0xf9a) for new pid=0xfab
    [mpegts] detected PMT change (program=1, version=5/6, pcr_pid=0xfa9/0xfb7)

Signed-off-by: Aman Gupta <aman@tmm1.net>
13 months agoavformat/mpegts: keep track of PMT details in AVProgram/AVStream
Aman Gupta [Thu, 17 May 2018 22:31:11 +0000 (15:31 -0700)]
avformat/mpegts: keep track of PMT details in AVProgram/AVStream

With these fields, the user has enough information to
detect PMT changes and switch to new streams when the PMT
is updated with new ES pids.

To do so, the user would monitor the AVProgram they're interested
in for changes to pmt_version. If the version changes, they would
iterate over the program's streams to find new streams added with
the updated version number.

If new versions of streams are found, then the user would first try
to replace existing streams where stream_identifier matched.
If stream_identifier is not available, then the user would compare
pmt_stream_idx instead to replace the stream that was previously
at the same position within the PMT.

Signed-off-by: Aman Gupta <aman@tmm1.net>
13 months agoavformat: add fields to AVProgram/AVStream for PMT change tracking
Aman Gupta [Thu, 17 May 2018 22:30:21 +0000 (15:30 -0700)]
avformat: add fields to AVProgram/AVStream for PMT change tracking

These fields will allow the mpegts demuxer to expose details about
the PMT/program which created the AVProgram and its AVStreams.

In mpegts, a PMT which advertises streams has a version number
which can be incremented at any time. When the version changes,
the pids which correspond to each of it's streams can also change.

Since ffmpeg creates a new AVStream per pid by default, an API user
needs the ability to (a) detect when the PMT changed, and (b) tell
which AVStream were added to replace earlier streams.

This has been a long-standing issue with ffmpeg's handling of mpegts
streams with PMT changes, and I found two related patches in the wild
that attempt to solve the same problem:

The first is in MythTV's ffmpeg fork, where they added a
void (*streams_changed)(void*); to AVFormatContext and call it from
their fork of the mpegts demuxer whenever the PMT changes.

The second was proposed by XBMC in
https://ffmpeg.org/pipermail/ffmpeg-devel/2012-December/135036.html,
where they created a new AVMEDIA_TYPE_DATA stream with id=0 and
attempted to send packets to it whenever the PMT changed.

Signed-off-by: Aman Gupta <aman@tmm1.net>
13 months agoavfilter/vsrc_testsrc: fix a preprocessor check
James Almer [Fri, 18 May 2018 20:42:57 +0000 (17:42 -0300)]
avfilter/vsrc_testsrc: fix a preprocessor check

Signed-off-by: James Almer <jamrial@gmail.com>
13 months agoavcodec/videotoolbox: fix decoding of some HEVC videos
Aman Gupta [Fri, 4 May 2018 22:41:30 +0000 (15:41 -0700)]
avcodec/videotoolbox: fix decoding of some HEVC videos

In a normal hwaccel, the AVHWFramesContext sets AVFrame.hw_frames_ctx
when it initializes a new AVFrame in av_hwframe_get_buffer().

But the VT hwaccel doesn't know what hw_frames_ctx to assign when
the AVFrame is first created, because it depends on the format of
the pixbuf that the decoder eventually decides to return. Thus
newly created AVFrames always have a NULL hw_frames_ctx, and the
hwaccel would only assign the ctx once a frame was done decoding.
This worked fine with the H264 decoder, but with the HEVC decoder
the frame's data may be moved to another empty AVFrame. Since the
empty AVFrame never had hw_frames_ctx set, a frame with a NULL
ctx could be returned to the API user.

This patch works around the issue by moving the derived
hw_frames_ctx from the AVFrame to a new VTHWFrame which now holds
both the CVPixelBufferRef and the AVBuffer. The hw_frames_ctx
is only copied to the AVFrame right before it is about to be
returned to the user in videotoolbox_postproc_frame() (since
in the case of VT, the hw_frames_ctx is only there for the API
user anyway).

Fixes playback on macOS and iOS of some hevc videos like
https://s3.amazonaws.com/tmm1/videotoolbox/germany-hevc-zdf.ts

Signed-off-by: Aman Gupta <aman@tmm1.net>
13 months agoavformat/mpegts: add skip_unknown_pmt option
Aman Gupta [Tue, 8 May 2018 19:49:43 +0000 (12:49 -0700)]
avformat/mpegts: add skip_unknown_pmt option

Some filtered mpegts streams may erroneously include PMTs for
programs that are not advertised in the PAT. This confuses ffmpeg
and most players because multiple audio/video streams are created
and it is unclear which ones actually contain data.

See for example https://tmm1.s3.amazonaws.com/unknown-pmts.ts

In this sample, the PAT advertises exactly one program. But the
pid it points to for the program's PMT contains PMTs for other
programs as well. This is because the broadcaster decided to
re-use the same pid for multiple program PMTs.

The hardware that filtered the original multi-program stream
into a single-program stream did so by rewriting the PAT to
contain only the program that was requested. But since it just
passed through the PMT pid referenced in the PAT, multiple PMTs
are still present for the other programs.

Before:

    Input #0, mpegts, from 'unknown-pmts.ts':
      Duration: 00:00:10.11, start: 80741.189700, bitrate: 9655 kb/s
      Program 4
        Stream #0:2[0x41]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 11063 kb/s, 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc
        Stream #0:3[0x44](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
        Stream #0:4[0x45](spa): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 128 kb/s
      No Program
        Stream #0:0[0x31]: Video: mpeg2video ([2][0][0][0] / 0x0002), none(tv), 90k tbr, 90k tbn, 90k tbc
        Stream #0:1[0x34](eng): Audio: ac3 (AC-3 / 0x332D4341), 0 channels, fltp
        Stream #0:5[0x51]: Video: mpeg2video ([2][0][0][0] / 0x0002), none, 90k tbr, 90k tbn
        Stream #0:6[0x54](eng): Audio: ac3 (AC-3 / 0x332D4341), 0 channels

With skip_unknown_pmt=1:

    Input #0, mpegts, from 'unknown-pmts.ts':
      Duration: 00:00:10.11, start: 80741.189700, bitrate: 9655 kb/s
      Program 4
        Stream #0:0[0x41]: Video: mpeg2video (Main) ([2][0][0][0] / 0x0002), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 11063 kb/s, 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc
        Stream #0:1[0x44](eng): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, 5.1(side), fltp, 384 kb/s
        Stream #0:2[0x45](spa): Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, fltp, 128 kb/s

Signed-off-by: Aman Gupta <aman@tmm1.net>
13 months agotests/checkasm/nlmeans: fix invalid read/write on ii buffer
Clément Bœsch [Fri, 18 May 2018 17:12:11 +0000 (19:12 +0200)]
tests/checkasm/nlmeans: fix invalid read/write on ii buffer

13 months agoavfilter/vsrc_testsrc: add pal75bars and pal100bars video filter sources
Tobias Rapp [Tue, 8 May 2018 09:43:50 +0000 (11:43 +0200)]
avfilter/vsrc_testsrc: add pal75bars and pal100bars video filter sources

Generates color bar test patterns based on EBU PAL recommendations.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
13 months agoavfilter/vf_waveform: add slice threading
Paul B Mahol [Tue, 15 May 2018 07:22:33 +0000 (09:22 +0200)]
avfilter/vf_waveform: add slice threading

Signed-off-by: Paul B Mahol <onemda@gmail.com>
13 months agoopusenc: use for loops with declarations
Rostislav Pehlivanov [Fri, 18 May 2018 01:38:08 +0000 (02:38 +0100)]
opusenc: use for loops with declarations

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
13 months agodoc/developer: update style guidelines to include for loops with declarations
Rostislav Pehlivanov [Fri, 18 May 2018 01:24:28 +0000 (02:24 +0100)]
doc/developer: update style guidelines to include for loops with declarations

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
13 months agoconfigure: error out on unsupported MSVC versions
Rostislav Pehlivanov [Mon, 14 May 2018 23:53:26 +0000 (00:53 +0100)]
configure: error out on unsupported MSVC versions

The FATE tests for MSVC versions older than 2013 are untested in FATE
and apparently are no longer supported.

This commit makes the configure process error out in case an older version
is used, and suggests to use a supported version of MSVC to compile.

This also changes the documentation to reflect this.

As discussed on IRC:

2018-05-12 19:45:16     jamrial then again, most of those were for old msvc, and i think we're not supporting versions older than 2013 (first one c99 compliant) anymore
2018-05-12 19:45:43     +JEEB   yea, I think 2013 update 2 is needed

22:53 <@atomnuker> nevcairiel: which commit broke/unsupported support for msvc 2013?
23:23 <@atomnuker> okay, it was JEEB
23:25 <+JEEB> which was for 2012 and older
23:25 <+JEEB> and IIRC we no longer test those in FATE so that was my assumption
23:26 <+JEEB> 2013 is when MS got trolled enough to actually update their C part
23:26 <+JEEB> aand actually advertised FFmpeg support
23:26 <+JEEB> (although it was semi-failing until VS2013 update 1 or 2)

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
13 months agoavformat/mpegts: tag video streams with still images
Aman Gupta [Tue, 15 May 2018 18:26:07 +0000 (11:26 -0700)]
avformat/mpegts: tag video streams with still images

Parses the video_stream_descriptor (H.222 2.6.2) to look
for the still_picture_flag. This is exposed to the user
via a new AV_DISPOSITION_STILL_IMAGE.

See for example https://tmm1.s3.amazonaws.com/music-choice.ts,
whose video stream only updates every ~6 seconds.

Signed-off-by: Aman Gupta <aman@tmm1.net>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
13 months agoavformat: add skip_estimate_duration_from_pts
Aman Gupta [Tue, 15 May 2018 22:56:45 +0000 (15:56 -0700)]
avformat: add skip_estimate_duration_from_pts

For seekable mpegts streams, duration is calculated from
pts by seeking to the end of the file for a pts and subtracting
the initial pts to compute a duration.

This can be expensive in terms of added latency during
probe, especially when streaming over a network. This new
option lets you skip the duration calculation, which is useful
when you don't care about the value and want to save some overhead.

This patch is particularly useful when dealing with live mpegts
streams. Normally such streams are not seekable, so durations
are not calculated. However in my case I am dealing with a seekable
live mpegts stream (networked access to a .ts file which is still
being appended to).

Signed-off-by: Aman Gupta <aman@tmm1.net>
13 months agolavc/v210dec: Skip Canopus C210 extradata.
Carl Eugen Hoyos [Thu, 10 May 2018 20:45:07 +0000 (22:45 +0200)]
lavc/v210dec: Skip Canopus C210 extradata.

Unbreaks files with unknown extradata, the Canopus decoder accepts both files
with and without this extradata (24 byte "INFO", 16 byte "RDRT", rest "FIEL").

Reported-by: Peter Bubestinger
Tested-by: Piotr Bandurski
13 months agoavcodec/dirac_dwt: Fix integer overflow in COMPOSE_DD97iH0 / COMPOSE_DD137iL0
Michael Niedermayer [Sun, 13 May 2018 22:10:33 +0000 (00:10 +0200)]
avcodec/dirac_dwt: Fix integer overflow in COMPOSE_DD97iH0 / COMPOSE_DD137iL0

Fixes: negation of -2147483648 cannot be represented in type 'int32_t' (aka 'int');
Fixes: 6500/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DIRAC_fuzzer-4523620274536448

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