]> git.sesse.net Git - ffmpeg/log
ffmpeg
3 years agoChangelog: add amv muxer & encoder
Zane van Iperen [Mon, 9 Nov 2020 05:15:27 +0000 (15:15 +1000)]
Changelog: add amv muxer & encoder

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavformat: add amv muxer
Zane van Iperen [Mon, 2 Nov 2020 05:47:32 +0000 (15:47 +1000)]
avformat: add amv muxer

AMV is a hard-coded (and broken) subset of AVI. It's not worth sullying
the existing AVI muxer with its filth.

Fixes ticket #747.

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavcodec: add adpcm_ima_amv encoder
Zane van Iperen [Mon, 2 Nov 2020 05:47:29 +0000 (15:47 +1000)]
avcodec: add adpcm_ima_amv encoder

Fixes ticket #747.

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavcodec/adpcm_ima_amv: document header format
Zane van Iperen [Mon, 2 Nov 2020 05:47:26 +0000 (15:47 +1000)]
avcodec/adpcm_ima_amv: document header format

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavcodec/adpcm_ima_amv: use coded sample count
Zane van Iperen [Mon, 2 Nov 2020 05:47:24 +0000 (15:47 +1000)]
avcodec/adpcm_ima_amv: use coded sample count

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavcodec/adpcm_ima_amv: restrict to 1 channel
Zane van Iperen [Mon, 2 Nov 2020 05:47:21 +0000 (15:47 +1000)]
avcodec/adpcm_ima_amv: restrict to 1 channel

The format doesn't allow for anything else.

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agolavc/amfenc: Add hardware config metadata
OvchinnikovDmitrii [Thu, 15 Oct 2020 00:16:21 +0000 (03:16 +0300)]
lavc/amfenc: Add hardware config metadata

Without this metadata section the ffmpeg utility thinks that the AMF encoder
does not support input from D3D11 and DXVA2 hardware surfaces, causing
hardware pipelines to fail.

Fixes #8953.

3 years agolavc: Mark hw_config pointer arrays as const
Mark Thompson [Sun, 8 Nov 2020 18:51:15 +0000 (18:51 +0000)]
lavc: Mark hw_config pointer arrays as const

They are read-only just like the HWConfig structures they point to.

3 years agotools/target_dem_fuzzer: Consider it an EIO when reading position wraps around 64bit
Michael Niedermayer [Fri, 23 Oct 2020 08:48:36 +0000 (10:48 +0200)]
tools/target_dem_fuzzer: Consider it an EIO when reading position wraps around 64bit

Fixes: signed integer overflow: 9223372036854775807 + 564 cannot be represented in type 'long'
Fixes: 26494/clusterfuzz-testcase-minimized-ffmpeg_dem_VOC_fuzzer-576754158849228
Fixes: 26549/clusterfuzz-testcase-minimized-ffmpeg_dem_AVS_fuzzer-4844306424397824
FIxes: 26875/clusterfuzz-testcase-minimized-ffmpeg_dem_C93_fuzzer-5996226782429184

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/mpegts: Limit copied data to space
Michael Niedermayer [Wed, 4 Nov 2020 00:06:47 +0000 (01:06 +0100)]
avformat/mpegts: Limit copied data to space

Fixes: out of array access
Fixes: 26816/clusterfuzz-testcase-minimized-ffmpeg_dem_MPEGTSRAW_fuzzer-6282861159907328.fuzz
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/adpcm_ima_swf: fix frame size to 4096
Zane van Iperen [Fri, 6 Nov 2020 12:03:37 +0000 (22:03 +1000)]
avcodec/adpcm_ima_swf: fix frame size to 4096

SWF File Format Specification, Version 19 says this is 1 raw
sample + 4095 nibbles.

https://www.adobe.com/content/dam/acom/en/devnet/pdf/swf-file-format-spec.pdf

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoRevert "avcodec/adpcm_swf: support decoding multiple fixed-sized blocks at once"
Zane van Iperen [Fri, 6 Nov 2020 13:55:29 +0000 (23:55 +1000)]
Revert "avcodec/adpcm_swf: support decoding multiple fixed-sized blocks at once"

Is incorrect behaviour. Was covering for an encoder bug where it produced frames
of the wrong size.

This reverts commit e9dd73d30d09043446ac6dd7b8ad31e557873852.

Fixes: out of array write
Fixes: 26821/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ADPCM_SWF_fuzzer-5764465137811456
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavdevice/xcbgrab: Add select_region option
Omar Emara [Sat, 11 Jul 2020 09:29:09 +0000 (11:29 +0200)]
avdevice/xcbgrab: Add select_region option

This patch adds a select_region option to the xcbgrab input device.
If set to 1, the user will be prompted to select the grabbing area
graphically by clicking and dragging. A rectangle will be drawn to
mark the grabbing area. A single click with no dragging will select
the whole screen. The option overwrites the video_size, grab_x, and
grab_y options if set by the user.

For testing, just set the select_region option as follows:

ffmpeg -f x11grab -select_region 1 -i :0.0 output.mp4

The drawing happens directly on the root window using standard rubber
banding techniques, so it is very efficient and doesn't depend on any
X extensions or compositors.

Reviewed-by: Andriy Gelman <andriy.gelman@gmail.com>
Signed-off-by: Omar Emara <mail@OmarEmara.dev>
3 years agoavformat/rtsp: support infinite initial_timeout for rtsp option
Limin Wang [Tue, 3 Nov 2020 10:15:21 +0000 (18:15 +0800)]
avformat/rtsp: support infinite initial_timeout for rtsp option

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agofate/filter-video: add 10bit test for unsharp filter
Limin Wang [Sun, 1 Nov 2020 23:30:21 +0000 (07:30 +0800)]
fate/filter-video: add 10bit test for unsharp filter

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavfilter/vf_unsharp: add more pixel format support
Limin Wang [Mon, 14 Oct 2019 10:27:06 +0000 (18:27 +0800)]
avfilter/vf_unsharp: add more pixel format support

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavfilter/vf_unsharp: add 10bit support
Limin Wang [Mon, 14 Oct 2019 10:27:05 +0000 (18:27 +0800)]
avfilter/vf_unsharp: add 10bit support

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavcodec/truemotion2: Allocate buffers together
Andreas Rheinhardt [Sun, 27 Sep 2020 13:55:27 +0000 (15:55 +0200)]
avcodec/truemotion2: Allocate buffers together

Reduces the number of allocations and frees.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/truemotion2: Cleanup generically on init failure
Andreas Rheinhardt [Sun, 27 Sep 2020 12:33:40 +0000 (14:33 +0200)]
avcodec/truemotion2: Cleanup generically on init failure

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/truemotion2: Remove redundant initializations
Andreas Rheinhardt [Sun, 27 Sep 2020 12:31:46 +0000 (14:31 +0200)]
avcodec/truemotion2: Remove redundant initializations

The codec's private context has already been zeroed generically.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/truemotion2: Replace av_free() by av_freep() in AVCodec.close
Andreas Rheinhardt [Sun, 27 Sep 2020 12:30:18 +0000 (14:30 +0200)]
avcodec/truemotion2: Replace av_free() by av_freep() in AVCodec.close

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/sonic: Don't allocate a temporary buffer for every frame
Andreas Rheinhardt [Sun, 27 Sep 2020 09:34:34 +0000 (11:34 +0200)]
avcodec/sonic: Don't allocate a temporary buffer for every frame

Instead allocate it together with the buffer that it mirrors.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mss4: Fix memleaks upon allocation error
Andreas Rheinhardt [Tue, 3 Nov 2020 22:43:01 +0000 (23:43 +0100)]
avcodec/mss4: Fix memleaks upon allocation error

During init the mts2 decoder allocates several VLCs and then several
buffers in a loop; if one of the latter allocations fails, only the VLCs
are freed, not any buffers that might already have been successfully
allocated. This commit fixes this by setting the
FF_CODEC_CAP_INIT_CLEANUP flag.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavfilter: add adenorm filter
Paul B Mahol [Mon, 2 Nov 2020 16:16:05 +0000 (17:16 +0100)]
avfilter: add adenorm filter

3 years agoAdd support for playing Audible AAXC (.aaxc) files [PATCH v4]
Vesselin Bontchev [Sat, 1 Jan 2000 09:00:00 +0000 (09:00 +0000)]
Add support for playing Audible AAXC (.aaxc) files [PATCH v4]

The AAXC container format is the same as the (already supported) Audible
AAX format but it uses a different encryption scheme.

Note: audible_key and audible_iv values are variable (per file) and are
externally fed.

It is possible to extend https://github.com/mkb79/Audible to derive the
audible_key and audible_key values.

Relevant code:

def decrypt_voucher(deviceSerialNumber, customerId, deviceType, asin, voucher):
    buf = (deviceType + deviceSerialNumber + customerId + asin).encode("ascii")
    digest = hashlib.sha256(buf).digest()
    key = digest[0:16]
    iv = digest[16:]

    # decrypt "voucher" using AES in CBC mode with no padding
    cipher = AES.new(key, AES.MODE_CBC, iv)
    plaintext = cipher.decrypt(voucher).rstrip(b"\x00")  # improve this!
    return json.loads(plaintext)

The decrypted "voucher" has the required audible_key and audible_iv
values.

Update (Nov-2020): This patch has now been tested by multiple folks -
details at the following URL:

https://github.com/mkb79/Audible/issues/3

Signed-off-by: Vesselin Bontchev <vesselin.bontchev@yandex.com>
3 years agotls: Hook up the url_get_short_seek function in the TLS backends
Martin Storsjö [Thu, 29 Oct 2020 19:56:17 +0000 (21:56 +0200)]
tls: Hook up the url_get_short_seek function in the TLS backends

This makes sure that small seeks forward on https don't end up
doing new requests.

Signed-off-by: Martin Storsjö <martin@martin.st>
3 years agoavfilter/scale_cuda: fix pitch calculation for >8 bit formats
Timo Rothenpieler [Wed, 4 Nov 2020 23:46:54 +0000 (00:46 +0100)]
avfilter/scale_cuda: fix pitch calculation for >8 bit formats

3 years agoavformat/bintext: Check width in idf_read_header()
Michael Niedermayer [Sat, 31 Oct 2020 12:51:47 +0000 (13:51 +0100)]
avformat/bintext: Check width in idf_read_header()

Fixes: division by 0
Fixes: 26802/clusterfuzz-testcase-minimized-ffmpeg_dem_IDF_fuzzer-5180591554953216.fuzz
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/iff: check size against INT64_MAX
Michael Niedermayer [Tue, 27 Oct 2020 20:51:08 +0000 (21:51 +0100)]
avformat/iff: check size against INT64_MAX

Bigger sizes are misinterpreted as negative numbers by the API
Fixes: infinite loop
Fixes: 26611/clusterfuzz-testcase-minimized-ffmpeg_dem_IFF_fuzzer-4890614975692800
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/vividas: improve extradata packing checks in track_header()
Michael Niedermayer [Wed, 28 Oct 2020 19:11:54 +0000 (20:11 +0100)]
avformat/vividas: improve extradata packing checks in track_header()

Fixes: out of array accesses
Fixes: 26622/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVIDAS_fuzzer-6581200338288640
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/paf: Check for EOF in read_table()
Michael Niedermayer [Sat, 24 Oct 2020 18:30:48 +0000 (20:30 +0200)]
avformat/paf: Check for EOF in read_table()

Fixes: OOM
Fixes: 26528/clusterfuzz-testcase-minimized-ffmpeg_dem_PAF_fuzzer-5081929248145408
Fixes: 26584/clusterfuzz-testcase-minimized-ffmpeg_dem_PAF_fuzzer-5172661183053824
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/gxf: Check pkt_len
Michael Niedermayer [Mon, 26 Oct 2020 20:08:55 +0000 (21:08 +0100)]
avformat/gxf: Check pkt_len

Fixes: Infinite loop
Fixes: 26576/clusterfuzz-testcase-minimized-ffmpeg_dem_GXF_fuzzer-4823080360476672
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/aiffdec: Check packet size
Michael Niedermayer [Mon, 26 Oct 2020 19:55:31 +0000 (20:55 +0100)]
avformat/aiffdec: Check packet size

Fixes: Fixes infinite loop
Fixes: 26575/clusterfuzz-testcase-minimized-ffmpeg_dem_AIFF_fuzzer-5727522236661760
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agolibavformat/aviobuf: Forward error from avio_read in ffio_read_size()
Michael Niedermayer [Sat, 31 Oct 2020 09:29:56 +0000 (10:29 +0100)]
libavformat/aviobuf: Forward error from avio_read in ffio_read_size()

Suggested-by: Andreas Rheinhardt
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/rmdec: remove unneeded memset() on packet allocation
Michael Niedermayer [Mon, 2 Nov 2020 00:21:27 +0000 (01:21 +0100)]
avformat/rmdec: remove unneeded memset() on packet allocation

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/argo_brp: remove block_align check for audio
Zane van Iperen [Tue, 3 Nov 2020 13:41:53 +0000 (23:41 +1000)]
avformat/argo_brp: remove block_align check for audio

Causes a divide-by-zero in the rare case where:
- the file has an audio stream,
- the first audio frame isn't within the first BRP_BASF_LOOKAHEAD frames,
- an audio frame is encountered later, and
- its chunk header (except num_blocks) contains all zeros
   (matching the uninitialised structure in the context)

The decoder will discard any garbage data, so the check isn't really needed.

Fixes: division by 0
Fixes: 26667/clusterfuzz-testcase-minimized-ffmpeg_dem_ARGO_BRP_fuzzer-5645146928185344.fuzz
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavcodec/sonic: Don't hardcode sizeof(int) == 4
Andreas Rheinhardt [Sun, 1 Nov 2020 13:52:49 +0000 (14:52 +0100)]
avcodec/sonic: Don't hardcode sizeof(int) == 4

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/sonic: Allocate several buffers together
Andreas Rheinhardt [Sun, 27 Sep 2020 09:33:41 +0000 (11:33 +0200)]
avcodec/sonic: Allocate several buffers together

It simplifies freeing them and reduces the amount of allocations.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavfilter/scale_cuda: simplify linesize calculation
Timo Rothenpieler [Wed, 4 Nov 2020 19:00:35 +0000 (20:00 +0100)]
avfilter/scale_cuda: simplify linesize calculation

3 years agoavfilter/scale_cuda: add support for RGB formats
Timo Rothenpieler [Wed, 4 Nov 2020 18:53:41 +0000 (19:53 +0100)]
avfilter/scale_cuda: add support for RGB formats

3 years agoavfilter/scale_cuda: expose optional algorithm parameter
Timo Rothenpieler [Wed, 4 Nov 2020 17:10:19 +0000 (18:10 +0100)]
avfilter/scale_cuda: expose optional algorithm parameter

3 years agoavfilter/scale_cuda: add lanczos algorithm
Timo Rothenpieler [Wed, 4 Nov 2020 00:43:00 +0000 (01:43 +0100)]
avfilter/scale_cuda: add lanczos algorithm

3 years agoavutil/hwcontext_cuda: fix edge case with non-even frame heights
Timo Rothenpieler [Wed, 4 Nov 2020 00:36:48 +0000 (01:36 +0100)]
avutil/hwcontext_cuda: fix edge case with non-even frame heights

3 years agoavutil/hwcontext_cuda: query correct alignment from device
Timo Rothenpieler [Tue, 3 Nov 2020 23:19:55 +0000 (00:19 +0100)]
avutil/hwcontext_cuda: query correct alignment from device

3 years agovaapi_encode_mpeg2: Fix setting colour properties
Mark Thompson [Mon, 2 Nov 2020 22:46:49 +0000 (22:46 +0000)]
vaapi_encode_mpeg2: Fix setting colour properties

Follow the same pattern as the previous commits for H.264 and H.265.

Reviewed-By: Jan Ekström <jeebjp@gmail.com>
Tested-By: Xu, Yefeng <yefengx.xu@intel.com>
3 years agovaapi_encode_h265: Fix setting colour properties
Mark Thompson [Mon, 2 Nov 2020 22:46:48 +0000 (22:46 +0000)]
vaapi_encode_h265: Fix setting colour properties

Matching the previous commit for H.264.

Reviewed-By: Jan Ekström <jeebjp@gmail.com>
Tested-By: Xu, Yefeng <yefengx.xu@intel.com>
3 years agovaapi_encode_h264: Fix setting colour properties
Mark Thompson [Mon, 2 Nov 2020 22:46:47 +0000 (22:46 +0000)]
vaapi_encode_h264: Fix setting colour properties

The properties should always be set; only the presence flags want to be
conditional.

Fixes #8959.

Reviewed-By: Jan Ekström <jeebjp@gmail.com>
Tested-By: Xu, Yefeng <yefengx.xu@intel.com>
3 years agoavfilter/scale_cuda: add nearest neighbour algorithm
Timo Rothenpieler [Tue, 3 Nov 2020 18:28:06 +0000 (19:28 +0100)]
avfilter/scale_cuda: add nearest neighbour algorithm

3 years agoavfilter/scale_cuda: code cleanup
Timo Rothenpieler [Tue, 3 Nov 2020 17:33:55 +0000 (18:33 +0100)]
avfilter/scale_cuda: code cleanup

3 years agoavfilter/scale_cuda: add bicubic interpolation
Timo Rothenpieler [Sat, 31 Oct 2020 19:22:33 +0000 (20:22 +0100)]
avfilter/scale_cuda: add bicubic interpolation

3 years agoavutil/hwcontext_cuda: increase CUDA frame alignment to 512
Timo Rothenpieler [Mon, 2 Nov 2020 20:31:35 +0000 (21:31 +0100)]
avutil/hwcontext_cuda: increase CUDA frame alignment to 512

At least on Turing, a frame without 512 byte alignment cannot be passed
to cuTexObjectCreate.

3 years agoavcodec/mpc8: Unobfuscate sign-extension
Andreas Rheinhardt [Thu, 29 Oct 2020 22:58:51 +0000 (23:58 +0100)]
avcodec/mpc8: Unobfuscate sign-extension

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/mimic: Inline constants
Andreas Rheinhardt [Wed, 28 Oct 2020 13:06:23 +0000 (14:06 +0100)]
avcodec/mimic: Inline constants

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/tscc2: Don't check for errors for complete VLCs
Andreas Rheinhardt [Thu, 29 Oct 2020 14:26:06 +0000 (15:26 +0100)]
avcodec/tscc2: Don't check for errors for complete VLCs

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/apngdec: Remove goto fail that does nothing
Andreas Rheinhardt [Wed, 11 Dec 2019 11:15:05 +0000 (12:15 +0100)]
avformat/apngdec: Remove goto fail that does nothing

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/apngdec: Check fcTL chunk length when reading header
Andreas Rheinhardt [Sat, 31 Oct 2020 13:07:27 +0000 (14:07 +0100)]
avformat/apngdec: Check fcTL chunk length when reading header

Reading the header terminates when an fcTL chunk is encountered in which
case read_header returned success without checking the length of said
chunk. Yet when read_packet processes this chunk, it checks for the
length to be 26 and errors out otherwise. So do so when reading the header,
too.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/apngdec: Fix size/overflow checks
Andreas Rheinhardt [Sun, 12 Jan 2020 16:36:05 +0000 (17:36 +0100)]
avformat/apngdec: Fix size/overflow checks

apng data consists of parts containing a small header (including a
four-byte size field) and a data part; the size field does not account
for everything and is actually twelve bytes short of the actual size. In
order to make sure that the size fits into an int, the size field is
checked for being > INT_MAX; yet this does not account for the + 12 and
upon conversion to int (which happens when calling append_extradata()),
the size parameter can still wrap around. In this case the currently
used check would lead to undefined signed integer overflow.

Furthermore, append_extradata() appends the new data to the already
existing extradata and therefore needs to make sure that the combined
size of new and old data as well as padding fits into an int. The check
used for this is "if (old_size > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE -
new_size)". If new_size is > INT_MAX - AV_INPUT_BUFFER_PADDING_SIZE
the right side becomes negative if the types are signed (as they are
now); yet changing this to "if (new_size > INT_MAX -
AV_INPUT_BUFFER_PADDING_SIZE - old_size)" is better as this also works
for unsigned types (where it is of course presumed that INT_MAX is
replaced by the corresponding maximum for the new type).

Both of these issues have been fixed.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavformat/apngdec: Return error for incomplete header
Andreas Rheinhardt [Tue, 10 Dec 2019 10:47:57 +0000 (11:47 +0100)]
avformat/apngdec: Return error for incomplete header

If avio_read() could read anything, it returns the number of bytes read,
even if it could not read as much as the caller desired.
apng_read_header() only checked the return value of its avio_read() calls
for being negative and this meant that it was possible for an incomplete
header to not be detected. The return value of the last successfull call
has been returned instead. This commit changes this.

Fixes: OOM
Fixes: 26608/clusterfuzz-testcase-minimized-ffmpeg_dem_APNG_fuzzer-4839491644424192
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavfilter/af_asoftclip: add asserts in default switch cases
Paul B Mahol [Tue, 3 Nov 2020 11:28:02 +0000 (12:28 +0100)]
avfilter/af_asoftclip: add asserts in default switch cases

3 years agoavfitler/af_asoftclip: add hard type
Paul B Mahol [Tue, 3 Nov 2020 11:21:48 +0000 (12:21 +0100)]
avfitler/af_asoftclip: add hard type

3 years agoavfilter/af_asoftclip: add erf soft clip type
Paul B Mahol [Tue, 3 Nov 2020 11:05:24 +0000 (12:05 +0100)]
avfilter/af_asoftclip: add erf soft clip type

3 years agodoc: mark "ADPCM IMA High Voltage Software ALP" as encodable
Zane van Iperen [Thu, 29 Oct 2020 10:57:18 +0000 (20:57 +1000)]
doc: mark "ADPCM IMA High Voltage Software ALP" as encodable

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavcodec/utils: add adpcm_ima_alp to av_get_exact_bits_per_sample()
Zane van Iperen [Thu, 29 Oct 2020 10:55:41 +0000 (20:55 +1000)]
avcodec/utils: add adpcm_ima_alp to av_get_exact_bits_per_sample()

Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavformat/argo_brp: bail if no video frames
Zane van Iperen [Mon, 2 Nov 2020 11:57:19 +0000 (21:57 +1000)]
avformat/argo_brp: bail if no video frames

Fixes: Assertion failure
Fixes: 26572/clusterfuzz-testcase-minimized-ffmpeg_dem_ARGO_BRP_fuzzer-5166735591997440
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Zane van Iperen <zane@zanevaniperen.com>
3 years agoavcodec/magicyuv: Free previous VLC table
Michael Niedermayer [Mon, 2 Nov 2020 00:21:25 +0000 (01:21 +0100)]
avcodec/magicyuv: Free previous VLC table

Fixes: memleak
Fixes: 26788/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MAGICYUV_fuzzer-5184116808744960
Regression since: 1bf30a1beb7527887c9b466d07765d20fa3b5412

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/concatdec: use av_strstart()
Michael Niedermayer [Sat, 31 Oct 2020 22:46:33 +0000 (23:46 +0100)]
avformat/concatdec: use av_strstart()

Fixes: out array read
Fixes: 26610/clusterfuzz-testcase-minimized-ffmpeg_dem_CONCAT_fuzzer-5631838049271808
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Reviewed-by: Nicolas George <george@nsup.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec: add av1 VAAPI decoder
Fei Wang [Thu, 29 Oct 2020 06:54:25 +0000 (14:54 +0800)]
avcodec: add av1 VAAPI decoder

Example cmdline:
ffmpeg -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -v verbose \
-c:v av1 -i input.ivf -pix_fmt yuv420p -vsync passthrough -f md5     \
-y out.md5

Signed-off-by: Fei Wang <fei.w.wang@intel.com>
3 years agodoc/APIchanges: add missing marker for release 4.3
James Almer [Mon, 2 Nov 2020 21:54:30 +0000 (18:54 -0300)]
doc/APIchanges: add missing marker for release 4.3

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavfilter/af_biquads: make commands work reliably within biquad filter
Paul B Mahol [Mon, 2 Nov 2020 12:24:32 +0000 (13:24 +0100)]
avfilter/af_biquads: make commands work reliably within biquad filter

Previously changing single coefficient would give unexpected results.

3 years agoavfilter/af_biquads: add lattice-ladder form
Paul B Mahol [Mon, 2 Nov 2020 12:09:23 +0000 (13:09 +0100)]
avfilter/af_biquads: add lattice-ladder form

3 years agoswscale/x86/yuv2rgb: fix crashes when loading alpha from unaligned buffers
Marton Balint [Wed, 28 Oct 2020 22:11:37 +0000 (23:11 +0100)]
swscale/x86/yuv2rgb: fix crashes when loading alpha from unaligned buffers

Regression since fc6a5883d6af8cae0e96af84dda0ad74b360a084 on SSSE3 enabled
CPUs.

Fixes ticket #8955.

Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agofate: Add test for Musepack SV8 decoding
Andreas Rheinhardt [Fri, 30 Oct 2020 11:48:17 +0000 (12:48 +0100)]
fate: Add test for Musepack SV8 decoding

While the FATE suite contains a sample file for Musepack 8, it did not
use it to test the decoder; it is only used in the mpc8-demux test that
tests the demuxer via streamcopy. Therefore this commit adds an actual
encoder test.

The test uses the framecrc output, because Musepack SV8 is an encoder
that returns multiple frames for a single packet, so that timing
information in the test output is valueable. Output seeking has been
used in order to limit the size of the ref file as well as to test this
codepath for the first time.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agofftools/ffmpeg: fix the wrong bitrate and speed stats
Limin Wang [Tue, 20 Oct 2020 14:51:08 +0000 (22:51 +0800)]
fftools/ffmpeg: fix the wrong bitrate and speed stats

The bitrate and speed stats are wrong if the copyts is enabled.
Please test with below command:
wget http://samples.mplayerhq.hu/MPEG2/foxksaz.ts
./ffmpeg -y -copyts -i ./foxksaz.ts -c:v libx264 -x264opts \
    nal-hrd=cbr:force-cfr=1 -b:v 3500k -minrate 3500k -maxrate 3500k -bufsize \
    1000k  -c:a mp2 -muxrate 4500k  -vframes 1000 test.ts

before:
frame= 1000 fps=112 q=-1.0 Lsize=    9063kB time=09:10:12.41 bitrate=   2.2kbits/s speed=3.7e+03x
after:
frame= 1000 fps=112 q=-1.0 Lsize=    9062kB time=00:00:15.78 bitrate=4703.4kbits/s speed=1.77x

Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavcodec/nvenc: fix build with older SDKs
Timo Rothenpieler [Fri, 30 Oct 2020 19:43:38 +0000 (20:43 +0100)]
avcodec/nvenc: fix build with older SDKs

3 years agoavformat/wavdec: Refuse to read chunks bigger than the filesize in w64_read_header()
Michael Niedermayer [Sat, 17 Oct 2020 21:50:57 +0000 (23:50 +0200)]
avformat/wavdec: Refuse to read chunks bigger than the filesize in w64_read_header()

Fixes: OOM
Fixes: 26414/clusterfuzz-testcase-minimized-ffmpeg_dem_FWSE_fuzzer-5070632544632832
Fixes: 26475/clusterfuzz-testcase-minimized-ffmpeg_dem_W64_fuzzer-5770207722995712
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/rsd: Check size and start before computing duration
Michael Niedermayer [Wed, 21 Oct 2020 16:15:53 +0000 (18:15 +0200)]
avformat/rsd: Check size and start before computing duration

Fixes: signed integer overflow: 100794754 * 28 cannot be represented in type 'int'
Fixes: 26474/clusterfuzz-testcase-minimized-ffmpeg_dem_RSD_fuzzer-5181797606096896
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/vividas: better check of current_sb_entry
Michael Niedermayer [Wed, 21 Oct 2020 21:05:41 +0000 (23:05 +0200)]
avformat/vividas: better check of current_sb_entry

This is the simplest fix for the problem, it is possible to instead check
this when the variables are set and propagate errors and then fail earlier

Fixes: out of array access
Fixes: 26490/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVIDAS_fuzzer-5723367078100992
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/iff: More completely check body_size
Michael Niedermayer [Wed, 21 Oct 2020 20:56:17 +0000 (22:56 +0200)]
avformat/iff: More completely check body_size

Fixes: infinite loop
Fixes: 26485/clusterfuzz-testcase-minimized-ffmpeg_dem_IFF_fuzzer-5126561373880320
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/vividas use avpriv_set_pts_info()
Michael Niedermayer [Wed, 21 Oct 2020 20:16:37 +0000 (22:16 +0200)]
avformat/vividas use avpriv_set_pts_info()

Fixes: assertion failure
Fixes: 26482/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVIDAS_fuzzer-4905102324006912
Fixes: 26491/clusterfuzz-testcase-minimized-ffmpeg_dem_VIVIDAS_fuzzer-6002953141616640
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavformat/xwma: Check for EOF in dpds_table read code
Michael Niedermayer [Wed, 21 Oct 2020 17:37:45 +0000 (19:37 +0200)]
avformat/xwma: Check for EOF in dpds_table read code

Fixes: Timeout (>30 -> 140ms)
Fixes: 26478/clusterfuzz-testcase-minimized-ffmpeg_dem_XWMA_fuzzer-5918147066200064
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoavcodec/nvenc: only enforce explicitly set twopass mode
Timo Rothenpieler [Fri, 30 Oct 2020 16:26:32 +0000 (17:26 +0100)]
avcodec/nvenc: only enforce explicitly set twopass mode

3 years agoavcodec/nvenc: only auto-pick vbr rc in cq mode
Timo Rothenpieler [Fri, 30 Oct 2020 16:21:13 +0000 (17:21 +0100)]
avcodec/nvenc: only auto-pick vbr rc in cq mode

3 years agoavformat/mpegtsenc: check that not only first pts but also first dts is valid
Limin Wang [Thu, 29 Oct 2020 01:24:29 +0000 (09:24 +0800)]
avformat/mpegtsenc: check that not only first pts but also first dts is valid

Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavformat/mpegtsenc: first_pts_check -> first_pts_checked
Limin Wang [Tue, 27 Oct 2020 14:26:22 +0000 (22:26 +0800)]
avformat/mpegtsenc: first_pts_check -> first_pts_checked

change to first_pts_checked and reverse the logic.

Reviewed-by: Marton Balint <cus@passwd.hu>
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
3 years agoavformat/jacosubdec: Fix unintended fallthrough
Andreas Rheinhardt [Thu, 29 Oct 2020 12:36:22 +0000 (13:36 +0100)]
avformat/jacosubdec: Fix unintended fallthrough

Regression since 715ff75e5dbbbefff7337351db596a9b7a5d4379.

Fixes Coverity issues #1468654 and #1468656.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/nvenc: all presets are SDK10 presets now
Timo Rothenpieler [Thu, 29 Oct 2020 20:59:37 +0000 (21:59 +0100)]
avcodec/nvenc: all presets are SDK10 presets now

3 years agoavcodec/utils: Check sample rate before use for AV_CODEC_ID_BINKAUDIO_DCT in get_audi...
Michael Niedermayer [Tue, 27 Oct 2020 16:21:19 +0000 (17:21 +0100)]
avcodec/utils: Check sample rate before use for AV_CODEC_ID_BINKAUDIO_DCT in get_audio_frame_duration()

Fixes: shift exponent 95 is too large for 32-bit type 'int'
Fixes: 26590/clusterfuzz-testcase-minimized-ffmpeg_dem_SMACKER_fuzzer-5120609937522688
Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
3 years agoffmpeg: move field order decision making to encoder initialization
Jan Ekström [Sun, 20 Sep 2020 18:00:52 +0000 (21:00 +0300)]
ffmpeg: move field order decision making to encoder initialization

We now have the possibility of getting AVFrames here, and we should
not touch the muxer's codecpar after writing the header.

Results of FATE tests change as the MXF and Matroska muxers actually
write down the field/frame coding type of a stream in their
respective headers. Before this change, these values in codecpar
would only be set after the muxer was initialized. Now, the
information is also available for encoder and muxer initialization.

3 years agoffmpeg: pass decoded or filtered AVFrame to output stream initialization
Jan Ekström [Thu, 10 Sep 2020 21:36:23 +0000 (00:36 +0300)]
ffmpeg: pass decoded or filtered AVFrame to output stream initialization

Additionally, reap the first rewards by being able to set the
color related encoding values based on the passed AVFrame.

The only tests that seem to have changed their results with this
change seem to be the MXF tests. There, the muxer writes the
limited/full range flag to the output container if the encoder
is not set to "unspecified".

3 years agoffmpeg: move A/V non-streamcopy initialization to a later point
Jan Ekström [Thu, 10 Sep 2020 21:25:21 +0000 (00:25 +0300)]
ffmpeg: move A/V non-streamcopy initialization to a later point

- For video, this means a single initialization point in do_video_out.
- For audio we unfortunately need to do it in two places just
  before the buffer sink is utilized (if av_buffersink_get_samples
  would still work according to its specification after a call to
  avfilter_graph_request_oldest was made, we could at least remove
  the one in transcode_step).

Other adjustments to make things work:
- As the AVFrame PTS adjustment to encoder time base needs the encoder
  to be initialized, so it is now moved to do_{video,audio}_out,
  right after the encoder has been initialized. Due to this,
  the additional parameter in do_video_out is removed as it is no
  longer necessary.

3 years agoffmpeg: move AVFrame time base adjustment into a function
Jan Ekström [Sun, 13 Sep 2020 08:41:41 +0000 (11:41 +0300)]
ffmpeg: move AVFrame time base adjustment into a function

This will have to be called later for video down the line.

3 years agoffmpeg: add a data size threshold for muxing queue size
Jan Ekström [Thu, 15 Oct 2020 18:21:05 +0000 (21:21 +0300)]
ffmpeg: add a data size threshold for muxing queue size

This way the old max queue size limit based behavior for streams
where each individual packet is large is kept, while for smaller
streams more packets can be buffered (current default is at 50
megabytes per stream).

For some explanation, by default ffmpeg copies packets from before
the appointed seek point/start time and puts them into the local
muxing queue. Before, it getting utilized was much less likely
since as soon as the filter chain was initialized, the encoder
(and thus output stream) was also initialized.

Now, since we will be pushing the encoder initialization to when the
first AVFrame is decoded and filtered - which only happens after
the exact seek point is hit as packets are ignored until then -
this queue will be seeing much more usage.

In more layman's terms, this attempts to fix cases such as where:
- seek point ends up being 5 seconds before requested time.
- audio is set to copy, and thus immediately begins filling the
  muxing queue.
- video is being encoded, and thus all received packets are skipped
  until the requested time is hit.

3 years agoavcodec/vp3: Don't check for errors for complete VLC
Andreas Rheinhardt [Mon, 26 Oct 2020 08:46:25 +0000 (09:46 +0100)]
avcodec/vp3: Don't check for errors for complete VLC

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/cllc: Don't unnecessarily free VLC
Andreas Rheinhardt [Sat, 24 Oct 2020 16:05:34 +0000 (18:05 +0200)]
avcodec/cllc: Don't unnecessarily free VLC

The Canopus Lossless decoder uses several VLCs and if initializing the
ith VLC fails, all the VLCs 0..i have been freed; the ith VLC's table is
initialized to NULL for this purpose. Yet it is totally unnecessary to
free the ith VLC table at all: ff_init_vlc_sparse() cleans up after
itself on error and if an error happens before ff_init_vlc_sparse(),
the ith VLC hasn't been touched yet and doesn't need freeing.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agoavcodec/clearvideo: Don't check for errors for complete VLC
Andreas Rheinhardt [Sat, 24 Oct 2020 13:26:55 +0000 (15:26 +0200)]
avcodec/clearvideo: Don't check for errors for complete VLC

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
3 years agolavf/url: fix relative url parsing when the query string or fragment has a colon
ruiquan.crq [Sat, 17 Oct 2020 15:17:14 +0000 (23:17 +0800)]
lavf/url: fix relative url parsing when the query string or fragment has a colon

This disallows the usage of ? and # in libavformat specific scheme options
(e.g. subfile,,start,32815239,end,0,,:video.ts) but this change was considered
acceptable.

Signed-off-by: ruiquan.crq <caihaoning83@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
3 years agoavcodec/codec2utils: move the remaining avpriv functions to lavf
James Almer [Mon, 26 Oct 2020 14:18:03 +0000 (11:18 -0300)]
avcodec/codec2utils: move the remaining avpriv functions to lavf

They are only used by the codec2 demuxers.

The symbols are kept around until the next major bump.

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agolibavcodec/codec2utils: remove codec2_version_from_extradata()
James Almer [Wed, 28 Oct 2020 14:59:16 +0000 (11:59 -0300)]
libavcodec/codec2utils: remove codec2_version_from_extradata()

It's only used in the codec2 demuxers, and can be simplified with an AV_RB16()
call instead.

Suggested-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavcodec/codec2utils: remove avpriv prefix from inline functions
James Almer [Mon, 26 Oct 2020 13:58:51 +0000 (10:58 -0300)]
avcodec/codec2utils: remove avpriv prefix from inline functions

Signed-off-by: James Almer <jamrial@gmail.com>
3 years agoavcodec/av1dec: fix loading PrevGmParams for frames with primary_ref_frame none
James Almer [Wed, 28 Oct 2020 14:23:44 +0000 (11:23 -0300)]
avcodec/av1dec: fix loading PrevGmParams for frames with primary_ref_frame none

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>