Commit graph

40221 commits

Author SHA1 Message Date
Jérôme Martinez
b5788e7025 avcodec/dpx: Support for RGB 12-bit packed decoding
Limited to widths multiple of 8 (RGB) due to lack of test files for such corner case

This partially fixes ticket #5639

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-12 02:54:14 +02:00
Aman Gupta
19128408ac avcodec/mpegpicture: fix "stride changed" failures in gray mode
Before adding uvlinesize check, I was seeing failures decoding
some video with ffmpeg compiled with --enable-gray and using AV_CODEC_FLAG_GRAY.

[mpeg2video @ 0x7fa193818c00] get_buffer() failed (stride changed: linesize=1280/1280 uvlinesize=0/640)
[mpeg2video @ 0x7fa193818c00] get_buffer() failed (stride changed: linesize=1280/1280 uvlinesize=0/640)

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-11 16:19:46 -07:00
Timo Rothenpieler
2108a6736f avcodec/nvenc: update required driver versions for nvenc 2018-04-11 14:55:28 +02:00
Timo Rothenpieler
86e9dba8fa avcodec/nvenc: add support for B frames as ref 2018-04-11 14:55:28 +02:00
Matt Wolenetz
e43e97f0e0 lavc/libopusdec: Allow avcodec_open2 to call .close
If there is a decoder initialization failure detected in avcodec_open2
after .init is called, allow graceful decoder .close to prevent leaking
libopus decoder allocations.

BUG=828526

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-11 02:42:41 +02:00
Alexander Kravchenko
05f1a3face lavc/amfenc: Retain a reference to D3D frames used as input during the encoding process
Fixes ticket #6990.

Tested-by: James Almer <jamrial@gmail.com>
Reviewed-by: Mark Thompson <sw@jkqxz.net>
2018-04-10 23:59:21 +01:00
Rodger Combs
4c0798578c lavc/videotoolbox: fix failure to decode PAFF
Signed-off-by: Aman Gupta <aman@tmm1.net>
2018-04-10 10:24:28 -07:00
Meng Wang
3b2fd96048 avcodec/arm/hevcdsp_sao : add NEON optimization for sao
Signed-off-by: Meng Wang <wangmeng.kids@bytedance.com>
Reviewed-by: Shengbin Meng <shengbinmeng@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-09 03:45:15 +02:00
Michael Niedermayer
249aca8f98 avcodec/movtextdec: Check style_start/end
Limits based on 3GPP TS 26.245 V14.0.0
Fixes: Timeout
Fixes: 6377/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MOVTEXT_fuzzer-5175929115508736

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Philip Langdale <philipl@overt.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-09 03:09:08 +02:00
Michael Niedermayer
c837918f50 avcodec/aacsbr_fixed: Fix integer overflow in sbr_hf_assemble()
Fixes: runtime error: signed integer overflow: 2052929346 + 204817098 cannot be represented in type 'int'

This was missed in b1bef755f6
Fixes: 5275/clusterfuzz-testcase-minimized-5367635958038528

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-07 23:34:47 +02:00
Carl Eugen Hoyos
916632dfbb lavc/clearvideo: Allow decoding without extradata. 2018-04-07 22:13:20 +02:00
Michael Niedermayer
6cd81d68c5 libavcodec/rv34: error out earlier on missing references
Fixes visual corruption on seeking

Fixes: downloadTest_clip_24M.rmvb

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-07 19:16:37 +02:00
Michael Niedermayer
6261ef4251 avcodec/get_bits: Document skip_bits_long()
Found-by: Kieran
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-07 19:16:37 +02:00
Martin Vignali
1425114af2 avcodec/prores_ks : do not call estimate_alpha at each quantification step
also remove unused arg in estimate_alpha_plane

Improve quality of Prores 4444 encoding
2018-04-05 22:06:30 +02:00
Valery Kot
67fd8df419 avcodec/openh264enc.c: generate IDR frame in response to I frame pict_type
Signed-off-by: Valery Kot <valery.kot@gmail.com>
2018-04-05 15:59:18 -03:00
wm4
709e0291d6 avcodec/decode: fix warning when decoding pseudo paletted formats
The pseudo palette allocation is optional now. But if it's still
allocated (like the internal get_buffer2 implementation does, for
compatibility), it shouldn't print a warning.
2018-04-05 16:58:40 +02:00
James Almer
2f27370111 avcodec/mpeg4videodec: unbreak multithreading decoding
Should fix double free related crashes.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-04 11:09:11 -03:00
James Almer
2accdd3871 avcodec/libaomdec: fix broken pix_fmt changes from the previous commit
Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-04 02:13:40 -03:00
James Almer
a866cc3ad3 avcodec/mpeg4videodec: free studio profile VLCs when closing the decoder
Fixes memleaks.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-04 00:45:16 -03:00
James Almer
fefe47b701 avcodec/clearvideo: fix mixed code and declarations
Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-04 00:43:01 -03:00
James Almer
9df784db6e avcodec/sheervideo: add missing wrappers to sheervideodata.h
Fixes make fate-source

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-03 23:32:03 -03:00
James Almer
4d89b5f844 avcodec/clearvideo: add missing wrappers to clearvideodata.h
Fixes make fate-source

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-03 23:31:36 -03:00
James Almer
f3fae82042 avcodec/libaomdec: add support for monochrome files
All such files are signaled as I42016, as there's no monochrome value
in aom_img_fmt_t.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-03 15:33:48 -03:00
James Almer
d5343a5005 avcodec/libaomdec: remove duplicate code
Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-03 15:27:18 -03:00
Gagandeep Singh
673604e0e3 lavc/cfhd: fix distortion of lowest 8 lines when height is not multiple of 16
Also update fate reference. Fixes ticket #6675.
2018-04-03 18:20:30 +02:00
wm4
d6fc031caf avutil/pixdesc: deprecate AV_PIX_FMT_FLAG_PSEUDOPAL
PSEUDOPAL pixel formats are not paletted, but carried a palette with the
intention of allowing code to treat unpaletted formats as paletted. The
palette simply mapped the byte values to the resulting RGB values,
making it some sort of LUT for RGB conversion.

It was used for 1 byte formats only: RGB4_BYTE, BGR4_BYTE, RGB8, BGR8,
GRAY8. The first 4 are awfully obscure, used only by some ancient bitmap
formats. The last one, GRAY8, is more common, but its treatment is
grossly incorrect. It considers full range GRAY8 only, so GRAY8 coming
from typical Y video planes was not mapped to the correct RGB values.
This cannot be fixed, because AVFrame.color_range can be freely changed
at runtime, and there is nothing to ensure the pseudo palette is
updated.

Also, nothing actually used the PSEUDOPAL palette data, except xwdenc
(trivially changed in the previous commit). All other code had to treat
it as a special case, just to ignore or to propagate palette data.

In conclusion, this was just a very strange old mechnaism that has no
real justification to exist anymore (although it may have been nice and
useful in the past). Now it's an artifact that makes the API harder to
use: API users who allocate their own pixel data have to be aware that
they need to allocate the palette, or FFmpeg will crash on them in
_some_ situations. On top of this, there was no API to allocate the
pseuo palette outside of av_frame_get_buffer().

This patch not only deprecates AV_PIX_FMT_FLAG_PSEUDOPAL, but also makes
the pseudo palette optional. Nothing accesses it anymore, though if it's
set, it's propagated. It's still allocated and initialized for
compatibility with API users that rely on this feature. But new API
users do not need to allocate it. This was an explicit goal of this
patch.

Most changes replace AV_PIX_FMT_FLAG_PSEUDOPAL with FF_PSEUDOPAL. I
first tried #ifdefing all code, but it was a mess. The FF_PSEUDOPAL
macro reduces the mess, and still allows defining FF_API_PSEUDOPAL to 0.

Passes FATE with FF_API_PSEUDOPAL enabled and disabled. In addition,
FATE passes with FF_API_PSEUDOPAL set to 1, but with allocation
functions manually changed to not allocating a palette.
2018-04-03 17:53:00 +02:00
wm4
e53d3348d1 avcodec/xwdenc: do not rely on AV_PIX_FMT_FLAG_PSEUDOPAL palettes
This is the only code I found within FFmpeg that still inherently
requires AV_PIX_FMT_FLAG_PSEUDOPAL. It's easily changed not to require
it.

Preparation for the next patch.
2018-04-03 17:52:06 +02:00
Paul B Mahol
be3a051ca8 avcodec/sheervideo: move tables to own header
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-04-03 17:28:16 +02:00
Paul B Mahol
a874586994 avcodec/clearvideo: add inter-frame decoding
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-04-03 17:28:16 +02:00
Simon Thelen
8c2c97403b avcodec/imgconvert: fix possible null pointer dereference
regression since 354b26a394
2018-04-03 16:20:31 +02:00
Michael Niedermayer
197a4e8fee avcodec/aacdec_fixed: Fix integer overflow in apply_independent_coupling_fixed()
I was not able to reproduce this, this fix is based on just the fuzzer log.
Fixes: 4959/clusterfuzz-testcase-minimized-6035350934781952

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-02 23:27:51 +02:00
Michael Niedermayer
d52be5d4e9 avcodec/cscd: Error out when LZ* decompression fails
Fixes: Timeout
Fixes: 6304/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CSCD_fuzzer-5754772461191168

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-02 23:27:51 +02:00
James Almer
4897c80cc6 avcodec/libaomdec: remove references to gbrp pixfmt
Support for this needs testing, so remove for now.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-02 17:54:36 -03:00
James Almer
877aff2bea avcodec/libaomenc: remove references to gbrp pixfmt
Support for this needs testing, so remove for now.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-02 17:54:36 -03:00
Paul B Mahol
5710fdaeae avcodec/aic: fix decoding of videos which height is not multiple of 16
Fate output changes and under close inspection looks more correct.
Fixes #6187.

Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-04-02 16:17:18 +02:00
Paul B Mahol
324954cf96 avcodec/scpr: fix decoding of prev+top-topleft prediction in keyframes
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-04-02 16:05:23 +02:00
Kieran Kunhya
f9d3841ae6 mpeg4video: Add support for MPEG-4 Simple Studio Profile.
This is a profile supporting > 8-bit video and has a higher quality DCT
2018-04-02 13:06:23 +01:00
Kieran Kunhya
699fa8f382 simple_idct: Template functions to support an input bitdepth parameter 2018-04-02 13:06:19 +01:00
Paul B Mahol
22a878ecd1 avcodec/scpr: check for possible out of array access
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2018-04-02 09:02:25 +02:00
James Almer
265ec55983 avcodec/bsf: use av_packet_make_refcounted to ensure packets are ref counted
Simplifies code.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-02 00:37:46 -03:00
James Almer
e61d8b82a2 avcodec/encode: use av_packet_make_refcounted to ensure packets are ref counted
Simplifies code.

Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-01 23:40:42 -03:00
James Almer
de0526070e avcodec/frame_thread_encoder: remove usage of av_dup_packet()
Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-01 23:40:41 -03:00
James Almer
860086ee16 avcodec/avpacket: add av_packet_make_refcounted()
It works as a drop in replacement for the deprecated av_dup_packet(),
to ensure a packet is reference counted.

Reviewed-by: Michael Niedermayer <michael@niedermayer.cc>
Signed-off-by: James Almer <jamrial@gmail.com>
2018-04-01 23:40:41 -03:00
Josh de Kock
89029bd2c7 lav*,tests: remove several register_all calls
avdevice_register_all() is still required to register devices into
lavf (this is required due to lavd being somewhat of a hack).

Signed-off-by: Josh de Kock <josh@itanimul.li>
2018-04-02 03:26:22 +01:00
heimdallr
354b26a394 avcodec/imgconvert: Fix loss mask bug in avcodec_find_best_pix_fmt_of_list()
example:

AVPixelFormat pixFmts[] = { AV_PIX_FMT_RGB24, AV_PIX_FMT_RGBA };
int loss = 0;
AVPixelFormat best = avcodec_find_best_pix_fmt_of_list(pixFmts, AV_PIX_FMT_BGRA, 1, &loss);

best is AV_PIX_FMT_RGB24. But AV_PIX_FMT_RGBA is better.

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-01 19:53:51 +02:00
Rostislav Pehlivanov
a1b91b0cc2 lavc: prefer the mp3float decoder to the mp3 decoder
On modern x86 systems its around 2x faster. For systems without
FPUs it'll be slower, but our policy is to prefer floating point
implementations and to let users decide what's best (or just not
compile them on systems without FPUs).

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2018-04-01 13:02:12 +01:00
Michael Niedermayer
47b7c68ae5 avcodec/utvideodec: Set pro flag based on fourcc
This avoids mixing 8bit variants with pro and 10bit with non pro mode.
Fixes: out of array read
Fixes: poc_03_30.avi

Found-by: GwanYeong Kim <gy741.kim@gmail.com>
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2018-04-01 02:58:51 +02:00
Martin Storsjö
5f83935de4 arm: hevcdsp: Add commas between macro arguments
When targeting darwin, clang requires commas between arguments,
while the no-comma form is allowed for other targets.

Since Xcode 9.3, the bundled clang supports altmacro and doesn't
require using gas-preprocessor any longer.

Signed-off-by: Martin Storsjö <martin@martin.st>
2018-03-31 21:59:01 +03:00
Martin Storsjö
6660bc034d arm: hevcdsp: Avoid using macro expansion counters
Clang supports the macro expansion counter (used for making unique
labels within macro expansions), but not when targeting darwin.

Convert uses of the counter into normal local labels, as used
elsewhere.

Since Xcode 9.3, the bundled clang supports altmacro and doesn't
require using gas-preprocessor any longer.

Signed-off-by: Martin Storsjö <martin@martin.st>
2018-03-31 21:55:32 +03:00
James Almer
a7109b82c4 Merge commit 'ab05d3934d'
* commit 'ab05d3934d':
  arm: vc1dsp: Add commas between macro arguments

Merged-by: James Almer <jamrial@gmail.com>
2018-03-30 15:47:31 -03:00