summaryrefslogtreecommitdiff
path: root/libavcodec
Commit message (Collapse)AuthorAge
...
* avcodec/hevcdec: Export Dolby Vision RPUs as side dataDerek Buitenhuis2021-11-17
| | | | Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* aarch64: Add Armv8.5-A BTI supportJonathan Wright2021-11-16
| | | | | | | | | | | | | | | | | Add Branch Target Identifiers (BTIs) to all functions defined in AArch64 assembly files. Most of the BTI landing pads are added automatically by the 'function' macro. BTI support is turned on or off at compile time based on the presence of the __ARM_FEATURE_BTI_DEFAULT feature macro. A binary compiled with BTI support can be executed on an Armv8-A processor without BTI support because the instructions are defined in NOP space. Signed-off-by: Jonathan Wright <jonathan.wright@arm.com> Signed-off-by: Elijah Ahmad <elijah.ahmad@arm.com> Signed-off-by: Martin Storsjö <martin@martin.st>
* aarch64: Use ret x<n> instead of br x<n> where possibleJonathan Wright2021-11-16
| | | | | | | | | | | | | | | | | | Change AArch64 assembly code to use: ret x<n> instead of: br x<n> "ret x<n>" is already used in a lot of places so this patch makes it consistent across the code base. This does not change behavior or performance. In addition, this change reduces the number of landing pads needed in a subsequent patch to support the Armv8.5-A Branch Target Identification (BTI) security feature. Signed-off-by: Jonathan Wright <jonathan.wright@arm.com> Signed-off-by: Martin Storsjö <martin@martin.st>
* */version.h: define FF_API macros unconditionallyAnton Khirnov2021-11-15
| | | | | | | There is no reason to wrap them in #ifndef guards, they should only be defined here and nowhere else. The define guards just add the possibility to accidentally use the same FF_API name in different libraries.
* avcodec/speexdec: Check frames_per_packet more completelyMichael Niedermayer2021-11-14
| | | | | | | | | | Fixes: signed integer overflow: 2105344 * 539033345 cannot be represented in type 'int' Fixes: out of array write Fixes: 39956/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SPEEX_fuzzer-4766419250708480 Fixes: 40293/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SPEEX_fuzzer-5219910217760768 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/mlpdec: cover case when >2 channels are in single substreamPaul B Mahol2021-11-11
| | | | Previously it was assumed that all >2 channels streams have >1 substreams.
* avcodec/speexdec: Remove dead codeAndreas Rheinhardt2021-11-09
| | | | | | Fixes Coverity issue #1492840. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/libx264: Simplify copying packet dataAndreas Rheinhardt2021-11-09
| | | | | | | | x264.h: "the payloads of all output NALs are guaranteed to be sequential in memory." Therefore we can omit the loop. Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/libx264: Remove always-false checksAndreas Rheinhardt2021-11-09
| | | | | | | | Always false since this encoder was switched to encode2 and ff_alloc_packet() in 06484d0b8a7d4d1a694ba7ab277e2ec32d6558d7 and f2b20b7a8b6fcbcd8cc669f5211e4e2ed7d8e9f3. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/libx264: Check for overflow if necessaryAndreas Rheinhardt2021-11-09
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/videotoolboxenc: fix pixel buffer memory leaksongyutong2021-11-09
| | | | | | | | In function vtenc_populate_extradata(), there is a manually created pixel buffer that has not been released. So we should use CVPixelBufferRelease to release this pixel buffer at the end, otherwise will cause a memory leak. Signed-off-by: Rick Kern <kernrj@gmail.com>
* avcodec/mjpegdec: Use AVCodecInternal.in_pkt for buffer packetAndreas Rheinhardt2021-11-07
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/libdav1d: Use av_memdup() where appropriateAndreas Rheinhardt2021-11-07
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/libdav1d: Use AVCodecInternal.in_pkt instead of stack packetAndreas Rheinhardt2021-11-07
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/libdav1d: Don't leak side-data-only packetsAndreas Rheinhardt2021-11-07
| | | | | Reviewed-by: James Almer <jamrial@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/cuviddec: Use AVCodecInternal.in_pkt instead of stack packetAndreas Rheinhardt2021-11-07
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/crystalhd: Use AVCodecInternal.in_pkt instead of stack packetAndreas Rheinhardt2021-11-07
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/binkaudio: Use AVCodecInternal.in_pkt for buffer packetAndreas Rheinhardt2021-11-07
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/internal: Allow receive_frame codecs to use decode_simple pktAndreas Rheinhardt2021-11-07
| | | | | | | | | | | | | | | | | | Decoders implementing the receive_frame API currently mostly use stack packets to temporarily hold the packet they receive from ff_decode_get_packet(). This role directly parallels the role of in_pkt, the spare packet used in decode_simple_internal for the decoders implementing the traditional decoding API. Said packet is unused by the generic code for the decoders implementing the receive_frame API, so allow them to use it to fulfill the function it already fulfills for the traditional API for both APIs. There is only one caveat in this: The packet is automatically unreferenced in avcodec_flush_buffers(). But this is actually positive as it means the decoders don't have to do this themselves (in case the packet is preserved between receive_frame calls). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/libx264: fix sei payload leaks on errorJames Almer2021-11-04
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/libaomdec: use intermediate arrays for plane pointers and stridesJames Almer2021-11-01
| | | | | | | | Fixes -Wstringop-overflow warnings with libaom >= 2.0.0, where the unused alpha plane was removed from aom_image. Reviewed-by: James Zern <jzern@google.com> Signed-off-by: James Almer <jamrial@gmail.com>
* libaom: Dont use aom_codec_av1_dx_algo.Matt Oliver2021-10-30
| | | | | | This fixes linking errors where variables cannot be correctly linked in from an external shared library such as with msvc (requires dllimport which is not used by libaom). Instead just call the function that returns the same variable. Signed-off-by: Matt Oliver <protogonoi@gmail.com>
* avcodec/vqavideo: Decode 15-bit VQA3 filesPekka Väänänen2021-10-28
| | | | | | Adds support for 15-bit VQA3 videos used in Westwood Studios' games. Signed-off-by: Pekka Väänänen <pekka.vaananen@iki.fi>
* avcodec/binkaudio: Properly flush the decoderAndreas Rheinhardt2021-10-28
| | | | | | | | | The packets delivered to this decoder are often decoded to more than one frame and if the internal buffer packet is not unreferenced, the decoder will still output frames derived from the old packet (from before the flush). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/binkaudio: Remove AV_CODEC_CAP_DELAYAndreas Rheinhardt2021-10-28
| | | | | | | | | | This decoder may output multiple AVFrames for every AVPacket passed to it, but after it has returned AVERROR(EAGAIN), it is completely drained and there is no reason to flush it at the end with a NULL packet. Furthermore, there is also no delay in the common sense of the word. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/flac_parser: Consider AV_INPUT_BUFFER_PADDING_SIZEMichael Niedermayer2021-10-22
| | | | | | | | | Fixes: out if array read Fixes: 40109/clusterfuzz-testcase-minimized-ffmpeg_dem_FLAC_fuzzer-4805686811295744 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Reviewed-by: Mattias Wadman <mattias.wadman@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/ttadsp: Fix integer overflows in tta_filter_process_c()Michael Niedermayer2021-10-21
| | | | | | | | Fixes: signed integer overflow: 822841647 + 1647055738 cannot be represented in type 'int' Fixes: 39935/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TTA_fuzzer-4592657142251520 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/atsc_a53: use AVERROR_INVALIDDATALimin Wang2021-10-20
| | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avcodec/hevc_sei: remove the duplicate checkLimin Wang2021-10-20
| | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avcodec/libx264: move sei_data_size out of the for loopJames Almer2021-10-20
| | | | | | Otherwise its value will be reset on each iteration. Signed-off-by: James Almer <jamrial@gmail.com>
* avcodec/extract_extradata_bsf: add support for AVS3Limin Wang2021-10-19
| | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avcodec/libx264: copy unregistered data SEI messages to the input x264 pictureJames Almer2021-10-18
| | | | | | Fixes undefined behavior. Signed-off-by: James Almer <jamrial@gmail.com>
* libavcodec/flac_parser: Validate subframe zero bit and typeMattias Wadman2021-10-18
| | | | | | | Reduces the risk of finding false frames that happens to have valid values and CRC. Fixes ticket #9185 ffmpeg flac decoder incorrectly finds junk frame https://trac.ffmpeg.org/ticket/9185
* avcodec/h264_picture: don't assume Film Grain Params side data will be presentJames Almer2021-10-18
| | | | | | | | | | | If a decoding error happens before frame side data is allocated, this assert may be triggered. And since applying film grain is not enforced (we just warn it wasn't applied and move on), we can just do that in such scenarios. Fixes: Assertion failure Fixes: clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_H264_fuzzer-5528650032742400 Signed-off-by: James Almer <jamrial@gmail.com>
* libavcodec/libx264: add user data unregistered SEI encodingBrad Hards2021-10-18
| | | | | | | | | | | | | MISB ST 0604 and ST 2101 require user data unregistered SEI messages (precision timestamps and sensor identifiers) to be included. That currently isn't supported for libx264. This patch adds support for user data unregistered SEI messages in accordance with ISO/IEC 14496-10:2020(E) section D.1.7 (syntax) and D.2.7 (semantics). This code is based on a similar change for libx265 (commit 1f58503013720700a5adfd72c708e6275aefc165). Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
* aarch64: h264qpel: Do vertical filtering without transposingMartin Storsjö2021-10-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This gives rather big speedups on these functions: Before: put_h264_qpel_8_mc01_8_neon: 241.0 131.5 138.7 put_h264_qpel_8_mc02_8_neon: 214.7 121.2 127.5 put_h264_qpel_8_mc03_8_neon: 242.5 131.2 135.7 put_h264_qpel_8_mc11_8_neon: 421.2 218.7 251.0 put_h264_qpel_8_mc12_8_neon: 878.0 509.5 537.5 put_h264_qpel_8_mc13_8_neon: 423.7 217.0 252.0 put_h264_qpel_8_mc21_8_neon: 858.2 479.5 514.0 put_h264_qpel_8_mc22_8_neon: 649.7 385.2 403.0 put_h264_qpel_8_mc23_8_neon: 860.2 476.5 517.7 put_h264_qpel_8_mc31_8_neon: 437.2 219.5 252.5 put_h264_qpel_8_mc32_8_neon: 892.5 510.5 546.0 put_h264_qpel_8_mc33_8_neon: 438.2 218.5 257.0 put_h264_qpel_16_mc01_8_neon: 944.2 509.7 546.7 put_h264_qpel_16_mc02_8_neon: 878.7 469.5 509.7 put_h264_qpel_16_mc03_8_neon: 945.7 510.7 557.0 put_h264_qpel_16_mc11_8_neon: 1663.2 858.5 979.5 put_h264_qpel_16_mc12_8_neon: 3510.2 2027.7 2112.7 put_h264_qpel_16_mc13_8_neon: 1664.7 857.5 980.5 put_h264_qpel_16_mc21_8_neon: 3366.2 1928.5 2030.5 put_h264_qpel_16_mc22_8_neon: 2584.7 1514.7 1590.2 put_h264_qpel_16_mc23_8_neon: 3367.7 1927.7 2035.0 put_h264_qpel_16_mc31_8_neon: 1716.7 849.7 997.0 put_h264_qpel_16_mc32_8_neon: 3564.0 2044.2 3835.2 put_h264_qpel_16_mc33_8_neon: 1717.7 863.0 989.5 After: put_h264_qpel_8_mc01_8_neon: 136.0 73.7 76.0 put_h264_qpel_8_mc02_8_neon: 108.7 65.0 64.0 put_h264_qpel_8_mc03_8_neon: 137.5 72.7 73.0 put_h264_qpel_8_mc11_8_neon: 316.2 159.0 188.5 put_h264_qpel_8_mc12_8_neon: 653.0 375.5 384.7 put_h264_qpel_8_mc13_8_neon: 318.7 165.5 189.5 put_h264_qpel_8_mc21_8_neon: 739.2 385.7 432.5 put_h264_qpel_8_mc22_8_neon: 530.7 295.5 309.5 put_h264_qpel_8_mc23_8_neon: 741.2 393.7 421.0 put_h264_qpel_8_mc31_8_neon: 332.2 162.5 190.0 put_h264_qpel_8_mc32_8_neon: 667.5 378.2 390.5 put_h264_qpel_8_mc33_8_neon: 332.7 166.5 195.5 put_h264_qpel_16_mc01_8_neon: 524.2 285.2 294.0 put_h264_qpel_16_mc02_8_neon: 454.7 252.2 250.2 put_h264_qpel_16_mc03_8_neon: 525.7 286.0 283.0 put_h264_qpel_16_mc11_8_neon: 1243.2 630.7 726.7 put_h264_qpel_16_mc12_8_neon: 2610.2 1479.7 1481.2 put_h264_qpel_16_mc13_8_neon: 1250.5 631.7 727.7 put_h264_qpel_16_mc21_8_neon: 2890.2 1571.2 1679.7 put_h264_qpel_16_mc22_8_neon: 2108.7 1177.5 1223.5 put_h264_qpel_16_mc23_8_neon: 2891.7 1578.7 1667.7 put_h264_qpel_16_mc31_8_neon: 1296.7 630.5 752.5 put_h264_qpel_16_mc32_8_neon: 2664.0 1483.2 1503.5 put_h264_qpel_16_mc33_8_neon: 1297.7 632.5 747.2 I.e. overall a 20%-60% reduction in runtime of these functions. Signed-off-by: Martin Storsjö <martin@martin.st>
* arm/aarch64: Improve scheduling in the avg form of h264_qpelMartin Storsjö2021-10-18
| | | | | | | Don't use the loaded registers directly, avoiding stalls on in order cores. Use vrhadd.u8 with q registers where easily possible. Signed-off-by: Martin Storsjö <martin@martin.st>
* avcodec/speexdec: Seed should be unsigned otherwise the operations done on ↵Michael Niedermayer2021-10-17
| | | | | | | | | | | it are undefined Fixes: signed integer overflow: 1664525000 + 1013904223 cannot be represented in type 'int' Fixes: 39865/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_SPEEX_fuzzer-4979694508834816 Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avcodec/hevc_filter: Correct indentionLimin Wang2021-10-17
| | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avcodec/hevc_filter: remove unneeded headersLimin Wang2021-10-17
| | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avcodec/hevcdec: remove unused codeLimin Wang2021-10-17
| | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avcodec/av1_vaapi: improve decode qualityFei Wang2021-10-16
| | | | | | | | - quantizer delta and matrix level specific. - support loop filter delta. - support use superres. Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* avcodec/av1_vaapi: enable segmentation featuresFei Wang2021-10-16
| | | | Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* avcodec/av1_vaapi: setting 2 output surface for film grainFei Wang2021-10-16
| | | | | | | | VAAPI needs 2 output surface for film grain frame. One used for reference and the other used for applying film grain and pushing to downstream. Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* avcodec/vaapi: increase av1 decode pool sizeFei Wang2021-10-16
| | | | | | | | For film grain clip, vaapi_av1 decoder will cache additional 8 surfaces that will be used to store frames which apply film grain. So increase the pool size by plus 8 to avoid leak of surface. Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* avcodec/dxva2_av1: fix global motion paramsTong Wu2021-10-16
| | | | | | | | | Defined in spec 5.9.24/5.9.25. Since function void global_motion_params(AV1DecContext *s) already updates gm type/params, the wminvalid parameter only need to get the value from cur_frame.gm_invalid. Signed-off-by: Tong Wu <tong1.wu@intel.com>
* avcodec/av1_vaapi: add gm params valid checkFei Wang2021-10-16
| | | | Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* avcodec/av1dec: support setup shear processFei Wang2021-10-16
| | | | | | Defined in spec 7.11.3.6/7.11.3.7. Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* avcodec/av1: extend some definitions in spec section 3Fei Wang2021-10-16
| | | | Signed-off-by: Fei Wang <fei.w.wang@intel.com>
* cbs_av1: fix incorrect data typeFei Wang2021-10-16
| | | | | | | | Since order_hint_bits_minus_1 range is 0~7, cur_frame_hint can be most 128. And similar return value for cbs_av1_get_relative_dist. So if plus them and use int8_t for the result may lose its precision. Signed-off-by: Fei Wang <fei.w.wang@intel.com>