Commit graph

40971 commits

Author SHA1 Message Date
Mark Thompson
7ba63695b7 mjpegdec: Fill raw huffman tables with default values too
These may be used by hwaccel decoders when the standard tables are not
otherwise available.  At the same time, clean up that code into an array
so it's a little less repetitive.
2018-11-18 17:40:24 +00:00
Mark Thompson
7a20656474 cbs_h265: Add a lot more SEI parsing support
Supports both prefix and suffix SEI, decoding all of the common SEI
types and some more obscure ones.  Most of this is tested by the
existing tests in fate.
2018-11-18 17:33:26 +00:00
Michael Niedermayer
1f99674ddd avcodec/pngdec: Check compression method
method 0 (inflate/deflate) is the only specified in the specification and the only supported

Fixes: Timeout
Fixes: 10976/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PNG_fuzzer-5729372588736512

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-16 10:13:42 +01:00
Chirag Lathia
d6b1248fc6 avcodec/libvpxenc: Add a maximum constraint of 16 encoder threads.
Signed-off-by: Chirag Lathia <clathia@google.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-11-15 21:25:53 -03:00
Philip Langdale
19d3d0c057 avutil/hwcontext_cuda: Define and use common CHECK_CU()
We have a pattern of wrapping CUDA calls to print errors and
normalise return values that is used in a couple of places. To
avoid duplication and increase consistency, let's put the wrapper
implementation in a shared place and use it everywhere.

Affects:

* avcodec/cuviddec
* avcodec/nvdec
* avcodec/nvenc
* avfilter/vf_scale_cuda
* avfilter/vf_scale_npp
* avfilter/vf_thumbnail_cuda
* avfilter/vf_transpose_npp
* avfilter/vf_yadif_cuda
2018-11-14 17:39:42 -08:00
James Almer
f0f2832a5c avcodec/cbs_av1: fix parsing signed integer values
Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-11-14 20:48:30 -03:00
James Almer
79831f4531 avcodec/cbs_av1: fix storage size for segmentation_params feature_value fields
The valid range is -255 to 255.

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-11-14 20:48:29 -03:00
James Almer
752659327d avcodec/libdav1d: fix build after a recent API break
Signed-off-by: James Almer <jamrial@gmail.com>
2018-11-14 10:05:25 -03:00
Paul B Mahol
759589b55e avcodec/huffyuvenc: add support for gbrp16 2018-11-14 09:29:18 +01:00
Michael Niedermayer
2f888771cd avcodec/shorten: Fix integer overflow with offset
Fixes: signed integer overflow: -1625810908 - 582229060 cannot be represented in type 'int'
Fixes: 10977/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SHORTEN_fuzzer-5732602018267136

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-13 22:28:27 +01:00
Michael Niedermayer
6b4c9854da avcodec/golomb: Speed up long ur_golomb codes
Fixes: Timeout
Fixes: 10972/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FLAC_fuzzer-5707569640243200

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-13 22:28:12 +01:00
Andreas Rheinhardt
3c9c9b1568 h264_metadata: Don't use inferred value of buffering frames
Using the value of buffering frames inferred from the old level is
not a sensible approach when one wants to guess the level.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@googlemail.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
2018-11-13 21:12:28 +00:00
Andreas Rheinhardt
959521b58d h264_levels, h264_metadata_bsf: Fix levels typo
profile_idc for level 1b should be 11, not 10.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@googlemail.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
2018-11-13 21:03:00 +00:00
Martin Vignali
13ee107afd avcodec/prores_metadata_bsf : fix colorspace check
Report by coverity
CID 1441165
2018-11-13 11:39:14 +01:00
Tobias Rapp
7992c2867e avcodec/libopenh264enc: fix class_name
Reverts some accidental change in commit e621b1ca64.

Reviewed-by: Jan Ekström <jeebjp@gmail.com>
Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
2018-11-13 08:16:22 +01:00
Akemi
233cd89056 lavc/videotoolbox: Fix cropping with HEVC and H264 videos
videotoolbox returns an already cropped stream which led to double
cropping. this issue was introduced with the refactor of the cropping
mechanism in commit 07596e4 for h264 and 000fb61 for HEVC.

to fix this we set the cropping of the frame and the output frame to 0.

Tested-by: ponpon
Fixes ticket #7544.
2018-11-12 12:32:17 +01:00
Paul B Mahol
26772b789b avcodec/tiff: add initial bayer and sub image support 2018-11-12 09:43:32 +01:00
Andreas Rheinhardt
ee47ac97d7 cbs_h2645: Improve performance of writing slices
Instead of using a combination of bitreader and -writer for copying data,
one can byte-align the (obsolete and removed) bitreader to improve performance.
With the right alignment one can even use memcpy. The right alignment
normally exists for CABAC and hence for H.265 in general.
For aligned data this reduced the time to copy the slicedata from
776520 decicycles to 33889 with 262144 runs and a 6.5mb/s H.264 video.
For unaligned data the number went down from 279196 to 97739 decicycles.

Signed-off-by: Mark Thompson <sw@jkqxz.net>
2018-11-12 00:12:06 +00:00
Martin Vignali
0aba92d42d avcodec : add prores_metadata bsf for set the color property of each prores frame 2018-11-11 21:06:34 +01:00
Andreas Rheinhardt
6df9020f45 cbs_mpeg2: Improve performance of writing slices
Instead of using a combination of bitreader and -writer for copying data,
one can byte-align the (obsolete and removed) bitreader to improve performance.
One can even use memcpy in the normal case.
This improved the time needed for writing the slicedata from 33618 to
2370 decicycles when tested on a video originating from a DVD (4194394
runs).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@googlemail.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
2018-11-11 19:22:52 +00:00
Mark Thompson
252e79663d cbs_h265: Add PTL parsing for sublayers
With fate test using the SLPPLP_A_VIDYO_2 conformance file, which contains
two sublayers with full PTL information.
2018-11-11 17:22:09 +00:00
Michael Niedermayer
c305e134ce avcodec/imm4: Use ff_set_dimensions()
Fixes: Out of memory
Fixes: 10970/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_IMM4_fuzzer-5698750043914240

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-10 23:48:27 +01:00
Andreas Rheinhardt
6dafcb6fdb h264_redundant_pps: Fix logging context
The first element of H264RedundantPPSContext is not a pointer to an
AVClass as required.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@googlemail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-10 23:47:25 +01:00
Mark Wu
10bc4c3a7d avcodec/hevcdec: fix non-ref frame judgement
After inspecting the source code of x265, mpv and ffmpeg, I've found that
ffmpeg mistakenly regards EVC_NAL_BLA_N_LP and HEVC_NAL_IDR_N_LP as non-
reference frames, which are acutally reference frames according to the
specification in x265, and drops them.

This patch should address the problem. I have tested it with mpv.

Signed-off-by: Mark Wu <wfwf1997@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-11-10 14:32:17 -03:00
bnnm
27e114b451 avcodec/wmaprodec: improve XMA missing samples
Writes missing (delay) samples after EOF.

Signed-off-by: bnnm <bananaman255@gmail.com>
2018-11-10 18:13:40 +01:00
James Zern
55e021f39b libvpxenc: extend auto-alt-ref range
vp9 now supports [0, 6]

Reviewed-by: James Almer <jamrial@gmail.com>
Signed-off-by: James Zern <jzern@google.com>
2018-11-09 17:54:16 -08:00
James Zern
6d3890ee34 libvpxenc,vp9: add enable-tpl option
enables temporal dependency model

Signed-off-by: James Zern <jzern@google.com>
2018-11-09 17:41:31 -08:00
Michael Niedermayer
07bc603757 avcodec/qpeg: Optimize full width runs in qpeg_decode_intra()
This improves the speed of decoding large patches of constant color

Fixes: Timeout
Fixes: 10967/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_QPEG_fuzzer-5630803793936384

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-08 22:40:46 +01:00
Martin Vignali
ff3b4f91cd avcodec/prores_aw : add support for prores 444 with alpha
only 16b alpha is supported (not 8 bits)

following official encoder, alpha data doesn't impact
yuv plane quality.

So the alpha data encoding is done after the yuv part.
It's also avoid to loose quality in yuv part when
alpha is not uniform.

the alpha encoding funcs is mainly take from prores_ks
encoder, except for the alpha data reorganization
2018-11-08 22:21:13 +01:00
Martin Vignali
4d32c2b4e0 avcodec/prores_aw : cosmetic indent and add comment to describe frame header value
description are based on multimedia wiki documentation
2018-11-08 22:21:10 +01:00
Martin Vignali
105891cd58 avcodec/prores_aw : change src pix_fmt and alpha description
use b64a as src pix fmt (doesn't seems to have an impact on decoding)
but it's the value use by official encoder
2018-11-08 22:21:04 +01:00
Andreas Rheinhardt
8d1cf2d894 cbs_h264: Fix handling of auxiliary pictures
The earlier code used the most recent non-auxiliary slice to determine
whether an auxiliary slice has the syntax of an IDR slice, even when
the most recent slice was from a slice of a redundant frame. Now only
slices of the primary coded picture are used, as the specifications
mandate.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@googlemail.com>
2018-11-08 21:19:35 +00:00
Linjie Fu
87368884a5 lavc/qsvdec: flush buffered data before reinit
Flush the buffered data in libmfx before video param reinit
in case the frames drop.

Cache the first frame causing the reinit and decode zero-size
pkt to flush the buffered pkt before reinit. After all the
buffered pkts being flushed, resume to reinit and decode.

Fix the issue in ticket #7399.

[V2]: Move the definition of zero_pkt to where it is exactly
used.

Signed-off-by: Linjie Fu <linjie.fu@intel.com>
Signed-off-by: Zhong Li <zhong.li@intel.com>
2018-11-06 17:42:29 +08:00
James Almer
beaa350e24 avcodec: libdav1d AV1 decoder wrapper.
Originally written by Ronald S. Bultje, with fixes, optimizations and
improvements by James Almer.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-11-05 21:48:11 -03:00
Mark Thompson
f5894178fb cbs_av1: Support redundant frame headers 2018-11-05 23:00:59 +00:00
Mark Thompson
6bdb7712ae cbs_av1: Fix header writing when already aligned 2018-11-05 23:00:58 +00:00
Vittorio Giovara
d37faad0cd mjpeg: Use profile names in the encoder and decoder 2018-11-05 12:39:23 -05:00
Vittorio Giovara
aefbb2bf02 proresdec2: Parse codec_tag and export profile information 2018-11-05 12:39:23 -05:00
Vittorio Giovara
cdc487bfc8 prores: Use profile names in the various encoders and decoders
Export FF_PROFILE_PRORES_* symbols publicly, add a missing one.
2018-11-05 12:36:05 -05:00
Vittorio Giovara
febaa63b0f proresenc_anatoliy: Rename a profile name with the correct one
In all Apple documentation, this profile is called Prores 4444.
2018-11-05 12:27:34 -05:00
Valery Kot
be827e1d38 libopenh264enc: Handle sample_aspect_ratio 2018-11-05 15:46:15 +00:00
Martin Storsjö
882ae091d4 libx264: Pass the reordered_opaque field through the encoder
libx264 does have a field for opaque data to pass along with frames
through the encoder, but it is a pointer, while the libavcodec
reordered_opaque field is an int64_t. Therefore, allocate an array
within the libx264 wrapper, where reordered_opaque values in flight
are stored, and pass a pointer to this array to libx264.

Update the public libavcodec documentation for the AVCodecContext
field to explain this usage, and add a codec capability that allows
detecting whether an encoder handles this field.

Signed-off-by: Martin Storsjö <martin@martin.st>
2018-11-05 15:52:14 +02:00
James Almer
89a0d33e3a avcodec/cbs_av1: fix decoder/encoder_buffer_delay variable types
buffer_delay_length_minus_1 is five bits long, meaning decode_buffer_delay and
encoder_buffer_delay can have values up to 32 bits long.

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-11-04 21:56:40 -03:00
Michael Niedermayer
c1cee05656 avcodec/cavsdec: Propagate error codes inside decode_mb_i()
Fixes: Timeout
Fixes: 10702/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CAVS_fuzzer-5669940938407936

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-04 20:21:24 +01:00
Michael Niedermayer
074187d599 avcodec/mpeg4videodec: Clear partitioned frame in decode_studio_vop_header()
partitioned_frame is also set/cleared in decode_vop_header()

Fixes: out of array read
Fixes: 9789/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MPEG4_fuzzer-5638681627983872

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-04 20:21:24 +01:00
Michael Niedermayer
470700bc96 avcodec/pictordec: Error out if more than one plane is unused
Fixes: Timeout
Fixes: 9797/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PICTOR_fuzzer-5664441659031552

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-04 12:53:16 +01:00
Michael Niedermayer
df91af140c avcodec/mpegaudio_parser: Consume more than 0 bytes in case of the unsupported mp3adu case
Fixes: Timeout
Fixes: 10966/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MP3ADU_fuzzer-5348695024336896
Fixes: 10969/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MP3ADUFLOAT_fuzzer-5691669402877952

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-04 12:53:16 +01:00
Michael Niedermayer
66425add27 avcodec/prosumer: Simplify bit juggling of the c variable in decompress()
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-02 23:46:31 +01:00
Michael Niedermayer
1dfa0b6f36 avcodec/prosumer: Remove always true check in decompress()
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-02 23:46:31 +01:00
Michael Niedermayer
506839a3e9 avcodec/prosumer: Remove unneeded ()
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-11-02 23:46:31 +01:00