Commit graph

39473 commits

Author SHA1 Message Date
James Almer
2760454945 avcodec/nvdec: fix copyright headers
Fixes fate-source.

Signed-off-by: James Almer <jamrial@gmail.com>
2017-11-10 21:06:58 -03:00
James Almer
1178babaca Merge commit 'b90fdb2c71'
* commit 'b90fdb2c71':
  hevcdec: add a CUVID hwaccel

Adapted for ffmpeg by Timo Rothenpieler.

Merged-by: James Almer <jamrial@gmail.com>
2017-11-10 20:43:15 -03:00
James Almer
7762942045 Merge commit '00fd914d49'
* commit '00fd914d49':
  hevcdec: set the active SPS before calling get_format()

Merged-by: James Almer <jamrial@gmail.com>
2017-11-10 20:31:55 -03:00
Anton Khirnov
0e00624389 h264dec: add a NVDEC hwaccel
Some parts of the code are based on a patch by
Timo Rothenpieler <timo@rothenpieler.org>

Merges Libav commit b9129ec466.

Due to the name clash with our cuvid decoder, rename it to nvdec.

This commit also changes the Libav code to dynamic loading of the
cuda/cuvid libraries.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2017-11-10 22:48:53 +01:00
wm4
0aecc08e5f avcodec/decode: add missing \n to log message 2017-11-10 22:48:34 +01:00
wm4
ae5046e492 avcodec: allow multiple hwaccels for the same codec/pixfmt
Currently, AVHWAccels are looked up using a (codec_id, pixfmt) tuple.
This means it's impossible to have 2 decoders for the same codec and
using the same opaque hardware pixel format.

This breaks merging Libav's CUVID hwaccel. FFmpeg has its own CUVID
support, but it's a full stream decoder, using NVIDIA's codec parser.
The Libav one is a true hwaccel, which is based on the builtin software
decoders.

Fix this by introducing another field to disambiguate AVHWAccels, and
use it for our CUVID decoders. FF_CODEC_CAP_HWACCEL_REQUIRE_CLASS makes
this mechanism backwards compatible and optional.
2017-11-10 22:48:34 +01:00
wm4
5593049466 avcodec/cuvid: rename cuvid.c to cuviddec.c
cuvid.c is used by Libav's CUVID hwaccel. Resolve the conflict and
avoid future merge problems by renaming our decoder.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2017-11-10 22:48:34 +01:00
Aurelien Jacobs
a337b36b8b aptx: implement the aptX bluetooth codec
The encoder was reverse engineered from binary library and from
EP0398973B1 patent (long expired).
The decoder was simply deduced from the encoder.
2017-11-10 21:32:06 +00:00
Anton Khirnov
81c021c6a2 decode: add a per-frame private data for hwaccel use
This will be useful in the CUVID hwaccel. It should also eventually
replace current decoder-specific mechanisms used by various other
hwaccels.

Merges Libav commit 704311b294.
2017-11-10 19:48:09 +01:00
Anton Khirnov
7fa64514c8 decode: add a mechanism for performing delayed processing on the decoded frames
This will be useful in the CUVID hwaccel.

Merges Libav commit badf0951f5.
2017-11-10 19:48:05 +01:00
Anton Khirnov
9f1cfd88af decode: add a method for attaching lavc-internal data to frames
Use the AVFrame.private_ref field.

This new struct will be useful in the following commits.

Merges Libav commit 359a8a3e2d.
2017-11-10 16:56:54 +01:00
Jun Zhao
dd435c957a lavc/libx265: switch to ff_alloc_packet2
ff_alloc_packet have been deprecated, switch to use
ff_alloc_packet2.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-10 00:53:11 +01:00
Jun Zhao
2c6b0315d9 lavc/libkvazaar: switch to ff_alloc_packet2.
ff_alloc_packet have been deprecated, switch to use the
ff_alloc_packet2.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Reviewed-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-10 00:53:11 +01:00
Michael Niedermayer
51090133b3 avcodec/cngdec: Fix integer clipping
Fixes: runtime error: value -36211.7 is outside the range of representable values of type 'short'
Fixes: 2992/clusterfuzz-testcase-6649611793989632

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-09 19:49:32 +01:00
Nicolas George
dfa859b85a lavc/pngdec: fix av_bprint_finalize() usage. 2017-11-09 14:08:29 +01:00
Rostislav Pehlivanov
fc9dcfe7d5 aacenc: mark the preset 5.0/5.1 layouts correctly with back speakers
The spec is correct, it does list these layouts as having rear speakers.
Questionable how many decoders correctly interpret those correctly since
side is way more popular.
Also fixes fate-aac-yoraw-encode.

Reported-by: pkviet <pkv.stream@gmail.com>
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-11-09 12:58:42 +00:00
Rostislav Pehlivanov
7b7775a604 aacenc: use the PCE comment field for encoder ID
Also handle extradata of variable size (for bitexact/if PCEs aren't used).

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-11-09 04:35:31 +00:00
Rostislav Pehlivanov
fbf295e2bd aacenc: support extended channel layouts using PCEs
This commit implements support for PCE (Program Configuration Elements) in the
AAC encoder, and as such allows for encoding of channel layouts not present
in the presets defined by the spec (which only lists the 8 most common ones).

This has been a highly requested feature and is also the first open source encoder
to support this many layouts.

Many thanks to pkviet <pkv.stream@gmail.com> who implemented support for and
verified all channel layouts.
2017-11-09 03:37:48 +00:00
Rostislav Pehlivanov
0a771e6b32 pngdec: expose gAMA and cHRM chunks as side/meta data
Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-11-09 02:56:53 +00:00
Rostislav Pehlivanov
723b6baaf8 pngdec: check for bprint finalization sucess on icc data parsing
It can fail in case of OOM.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-11-09 02:34:54 +00:00
Rostislav Pehlivanov
3228ac730c vc2enc_dwt: pad the temporary buffer by the slice size
Since non-Haar wavelets need to look into pixels outside the frame, we
need to pad the buffer. The old factor of two seemed to be a workaround
that fact and only padded to the left and bottom. This correctly pads
by the slice size and as such reduces memory usage and potential
exploits.
Reported by Liu Bingchang.

Ideally, there should be no temporary buffer but the encoder is designed
to deinterleave the coefficients into the classical wavelet structure
with the lower frequency values in the top left corner.

Signed-off-by: Rostislav Pehlivanov <atomnuker@gmail.com>
2017-11-09 00:05:48 +00:00
Kaustubh Raste
372a4dda33 avcodec/mips: Improve hevc non-uni hv mc msa functions
Use mask buffer.

Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-08 20:58:56 +01:00
Kaustubh Raste
4fba8728e8 avcodec/mips: Improve hevc uni weighted 4 tap vt mc msa functions
Use global mask buffer for appropriate mask load.
Use immediate unsigned saturation for clip to max saving one vector register.
Remove unused macro.

Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-08 20:58:56 +01:00
Kaustubh Raste
350721e9fd avcodec/mips: Improve hevc uni 4 tap hv mc msa functions
Use global mask buffer for appropriate mask load.
Remove unused macro and table.

Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-08 20:58:56 +01:00
Kaustubh Raste
4878854eef avcodec/mips: Improve hevc bi wgt 4 tap hv mc msa functions
Use global mask buffer for appropriate mask load.
Use immediate unsigned saturation for clip to max saving one vector register.

Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-08 20:58:56 +01:00
James Almer
9d3eb75cf6 avcodec/qsvenc_jpeg: fix copyright header
Fixes fate-source after 1926f13a20.

Signed-off-by: James Almer <jamrial@gmail.com>
2017-11-08 14:58:51 -03:00
James Almer
bc987cf91d Merge commit '45c4bf3df0'
* commit '45c4bf3df0':
  h264dec: track the last seen value of x264_build

Merged-by: James Almer <jamrial@gmail.com>
2017-11-08 14:23:48 -03:00
James Almer
1926f13a20 Merge commit '2fd6e7d077'
* commit '2fd6e7d077':
  libavcodec/mjpeg_qsv: Add QSV MJPEG encoder

Merged-by: James Almer <jamrial@gmail.com>
2017-11-08 13:45:09 -03:00
Carl Eugen Hoyos
ba79a101a2 lavc/dnxhddata: Do not print frame rates with supported profiles.
The list is unmaintained, misleading and the frame rates are
ignored by all compatible players.
2017-11-08 09:40:44 +01:00
James Almer
ec703910af Merge commit '0f5ad12ba2'
* commit '0f5ad12ba2':
  flac: Use a local cache for decode_residual()

Merged-by: James Almer <jamrial@gmail.com>
2017-11-07 19:08:46 -03:00
James Almer
ff55b62a65 Merge commit '15f1cc09a4'
* commit '15f1cc09a4':
  flac: Postpone unlikely condition checks

Merged-by: James Almer <jamrial@gmail.com>
2017-11-07 18:59:43 -03:00
James Almer
17fa37cf41 Merge commit 'fd92dafaff'
* commit 'fd92dafaff':
  bink: Split read_dct_coeffs()

Merged-by: James Almer <jamrial@gmail.com>
2017-11-07 18:44:44 -03:00
James Almer
5371274329 Merge commit 'ed3b2a999d'
* commit 'ed3b2a999d':
  cinepakenc: misc small changes
  cinepakenc: K&R formatting cosmetics
  cinepakenc: Stop using AVPicture
  cinepakenc: Drop broken debug code
  cinepakenc: add option handling for flexibility
  cinepakenc: fixes and improvements
  Add Cinepak encoder

See
59dbc36f49
762c4dc082
bf23642dcc
0ab25dac2f

Merged-by: James Almer <jamrial@gmail.com>
2017-11-07 18:32:53 -03:00
Kaustubh Raste
991eca0f87 avcodec/mips: Improve hevc bi 4 tap hv mc msa functions
Use global mask buffer for appropriate mask load.
Use immediate unsigned saturation for clip to max saving one vector register.

Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-07 04:24:06 +01:00
Kaustubh Raste
ecd69cade8 avcodec/mips: Improve avc avg mc 10, 30, 01 and 03 msa functions
Align the mask buffer to 64 bytes.
Load the specific destination bytes instead of MSA load and pack.
Remove unused macros and functions.

Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-07 04:24:06 +01:00
Martin Vignali
7e1f21148d libavcodec/mepgvideo : remove warning introduce by previous patch
Signed-off-by: James Almer <jamrial@gmail.com>
2017-11-06 21:23:19 -03:00
Martin Vignali
0380b72d35 libavcodec/lossless_video_dsp : cosmetic add better separator for each function, in order to make reading of the asm file easier 2017-11-07 00:56:54 +01:00
Martin Vignali
da62128ea1 libavcodec/lossless_videodsp : add add_bytes avx2 version 2017-11-07 00:56:02 +01:00
Martin Vignali
9c71473189 libavcodec/utvideo : simplify decode_plane
the func is only call with step = 1
no need to pass it in the func
2017-11-07 00:51:17 +01:00
Martin Vignali
97ac8a47dd libavcodec/blockdsp : fix comment. clear_block need 32 aligned now 2017-11-07 00:48:11 +01:00
Martin Vignali
4ada428aae avcodec: remove remaining uses of avcodec_get_chroma_sub_sample
Replace them with av_pix_fmt_get_chroma_sub_sample.

Signed-off-by: James Almer <jamrial@gmail.com>
2017-11-06 19:13:03 -03:00
James Almer
7d1c79f533 Merge commit 'a594f17f83'
* commit 'a594f17f83':
  dvbsubdec: Free subrect memory on allocation error
  dvbsubdec: Fixed segfault when decoding subtitles

See
fbb59a3bf4
39dfe6801a

Merged-by: James Almer <jamrial@gmail.com>
2017-11-06 18:46:05 -03:00
Michael Niedermayer
981e99ab99 avcodec/sbrdsp_fixed: Fix integer overflow in shift in sbr_hf_g_filt_c()
Fixes: runtime error: shift exponent 66 is too large for 64-bit type 'long long'
Fixes: 3642/clusterfuzz-testcase-minimized-5443853801750528

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-05 22:13:16 +01:00
Michael Niedermayer
7d1dec4668 avcodec/aacsbr_fixed: Fix division by zero in sbr_gain_calc()
Fixes: 3642/clusterfuzz-testcase-minimized-5443853801750528

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-05 22:13:16 +01:00
Michael Niedermayer
e131b8cedb avcodec/h264idct_template: Fix integer overflows in ff_h264_idct8_add()
Fixes: runtime error: signed integer overflow: -503316480 + -2013265038 cannot be represented in type 'int'
Fixes: 3805/clusterfuzz-testcase-minimized-6578427831255040

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-05 22:13:16 +01:00
Carl Eugen Hoyos
2cc51d5025 lavc/v4l2_context: Change the type of the ioctl cmd to uint32_t.
Fixes a warning on recent Linux:
libavcodec/v4l2_context.c: In function 'ff_v4l2_context_set_status':
libavcodec/v4l2_context.c:496:26: warning: comparison is always false due to limited range of data type
2017-11-05 19:25:29 +01:00
Piotr Bandurski
6ea7711532 avcodec/qdrw: support 16bpp files with bppcnt == 2 && bpp == 8 2017-11-05 10:49:17 +01:00
Kaustubh Raste
b9cd26f556 avcodec/mips: Improve hevc uni weighted 4 tap hz mc msa functions
Use global mask buffer for appropriate mask load.
Use immediate unsigned saturation for clip to max saving one vector register.
Remove unused macro.

Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-05 03:12:35 +01:00
Kaustubh Raste
1e7e9fbb03 avcodec/mips: Improve hevc uni 4 tap hz and vt mc msa functions
Use global mask buffer for appropriate mask load.

Signed-off-by: Kaustubh Raste <kaustubh.raste@imgtec.com>
Reviewed-by: Manojkumar Bhosale <Manojkumar.Bhosale@imgtec.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-05 03:12:35 +01:00
Michael Niedermayer
4b51437dcc avcodec/xan: Check for bitstream end in xan_huffman_decode()
Fixes: Timeout
Fixes: 3707/clusterfuzz-testcase-6465922706440192

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2017-11-05 03:12:35 +01:00