Commit Graph

43409 Commits

Author SHA1 Message Date
Paul B Mahol 4aac742505 avcodec/x86/cfhddsp: try to fix build on x32 2020-08-26 23:39:58 +02:00
Paul B Mahol 389cc142fb avcodec/cfhd: add x86 SIMD
Overall speed changes for 1920x1080, yuv422p10le, 60fps from: 0.19x to 0.343x
2020-08-26 21:13:38 +02:00
Michael Niedermayer b9ea493afe avcodec/tiff: Check jpeg context against jpeg frame parameters
Fixes: out of array access
Fixes: 24825/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TIFF_fuzzer-6326925027704832

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-08-26 20:31:09 +02:00
Michael Niedermayer ad29f9e47c avcodec/tiff: Restrict tag order based on specification
"The entries in an IFD must be sorted in ascending order by Tag. Note that this is
 not the order in which the fields are described in this document."

This way various dimensions, sample and bit sizes cannot be changed at
arbitrary times which reduces the potential for bugs.
The tag reading code also on various places assumes that numerically previous
tags have already been parsed, so this needs to be enforced one way or another.

If this commit causes problems with real world files which are not easy to fix
then some other form of checks are needed to ensure the various dependencies
in the tag reading are not violated.

Fixes: out of array access
Fixes: 24825/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TIFF_fuzzer-6326925027704832

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-08-26 20:31:09 +02:00
Michael Niedermayer ca47402a06 avcodec/tiff: Avoid abort with DNG RAW TIFF with YA8
Fixes: Assertion failure
Fixes: 24707/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TIFF_fuzzer-5179910197608448

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-08-26 20:31:09 +02:00
Michael Niedermayer 7577f8332a avcodec/tiff: Check the linearization table size
Fixes: out of array access
Fixes: 24604/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TIFF_fuzzer-4843529818603520

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-08-26 20:31:09 +02:00
Derek Buitenhuis 649a6969f7 avcodec/libdav1d: Call ff_set_sar in addition to setting the frame SAR
Similar to what we do in libaomdec.c.

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2020-08-26 16:44:03 +01:00
James Almer 98f7e0081b avcodec/cbs_av1: fix setting FrameWidth in frame_size_with_refs()
Section 5.9.7 of the spec states

    UpscaledWidth = RefUpscaledWidth[ ref_frame_idx[ i ] ]
    FrameWidth    = UpscaledWidth
    FrameHeight   = RefFrameHeight[ ref_frame_idx[ i ] ]
    RenderWidth   = RefRenderWidth[ ref_frame_idx[ i ] ]
    RenderHeight  = RefRenderHeight[ ref_frame_idx[ i ] ]

Meaning FrameWidth must not be set to RefFrameWidth[ ref_frame_idx[ i ] ]
like we're currently doing.

Reviewed-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-25 18:46:06 -03:00
James Almer 0892b04509 avcodec/av1_parser: fix parsing show_existing_frame headers
Regression since c8716b5029

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-25 15:01:43 -03:00
James Almer 97819f15a8 avcodec/cbs_av1: use a more appropiate AV1ReferenceFrameState pointer variable name
frame is more commonly used for AV1RawFrameHeader and AV1RawFrame.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-25 14:53:42 -03:00
James Almer e76b4b2a6b avcodec/cbs_av1: fix handling reference frames on show_existing_frame frames
Implement Section 7.21 "Reference frame loading process" and Section 7.20
"Reference frame update process" for show_existing_frame frames, as required by
the definition in Section 7.4 "Decode frame wrapup process".

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-25 14:49:33 -03:00
James Almer afbe9ebac7 avcodec/cbs_av1: infer frame_type in show_existing_frame frames earlier
This follows the spec and will come in handy in the next commit.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-25 14:49:33 -03:00
James Almer e3ed0ce32a avcodec/cbs_av1: add OrderHint to CodedBitstreamAV1Context
This follows the spec and will come in handy in a following commit.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-25 14:49:33 -03:00
Jan Ekström d6f293353c avcodec/aacdec_template: add more checks to make sure only 22.2 gets to 22.2
Validates the set channel layout as well as verifies that the received
layout to the function matches the reference layout, so that it matches
the implemented re-ordering logic.

Fixes #8845
2020-08-25 00:07:07 +03:00
Jan Ekström de1d6aa0a3 avcodec/aacdec_template: keep tabs on layout in sniff_channel_order
This way the layout set at various points can be checked instead
of only having the layout at the end.
2020-08-25 00:06:53 +03:00
James Almer c8716b5029 avcodec/av1_parser: read frame properties directly from AV1RawFrameHeader
Simplifies code

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-23 20:54:15 -03:00
James Almer 6c20207dce avcodec/cbs_av1: infer frame_type when parsing a show_existing_frame frame
Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-23 20:53:58 -03:00
James Almer f1e92ee36b avcodec/cbs_av1: infer frame sizes when not coded in the bitstream
This makes them available for all frames within a Temporal Unit.

Reviewed-by: Mark Thompson <sw@jkqxz.net>
Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-23 20:37:12 -03:00
Mark Thompson b567cb8d0b cbs_av1: Fix test for presence of buffer_removal_time element
The frame must be in both the spatial and temporal layers for the
operating point, not just one of them.
2020-08-23 18:43:58 +01:00
Andriy Gelman 58b8541330 avcodec/v4l2_m2m_enc: reindent after previous commit
Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2020-08-23 13:42:07 -04:00
Andriy Gelman 8bc7f69cef avcodec/v4l2_m2m_enc: buffer frame if it cannot be enqueued
Currently if the frame buffers are full, the frame is unrefed and
dropped.  Instead buffer the frame so that it is enqueued in the
next v4l2_receive_packet() call.  The behavior was observed on
DragonBoard 410c.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
2020-08-23 13:42:07 -04:00
James Almer 994d2567f1 avcodec/cbs_av1: always store temporal_id and spatial_id in CodedBitstreamAV1Context
Also infer them when not coded in the bitstream.

Reviewed-by: jkqxz
Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-23 14:34:32 -03:00
James Almer 751f2a27f7 avcodec/cbs_av1: fix storage size for render_{width,height}_minus_1
Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-23 12:20:44 -03:00
Paul B Mahol 568b7b2777 avcodec/gif: fix disposal method for first frame and transparent gifs
Fixes #7902
2020-08-23 16:21:56 +02:00
Paul B Mahol 1c3a3a4ec6 avcodec/notchlc: add initial alpha support 2020-08-23 16:21:56 +02:00
Clément Bœsch a469d29c08 avcodec/dvbsubdec: error out on unsupported coding methods 2020-08-22 19:02:01 +02:00
Clément Bœsch b0f96f663c avcodec/dvbsubdec: request samples for missing coding methods 2020-08-22 19:02:01 +02:00
Clément Bœsch eb4d220ae1 avcodec/dvbsubenc: fix onject/object typo 2020-08-22 19:02:01 +02:00
Clément Bœsch 80d2a33d83 avcodec/dvbsubenc: reindent after previous commit 2020-08-22 19:02:01 +02:00
Clément Bœsch 5fc075d53e avcodec/dvbsubenc: merge rectangle encode code blocks 2020-08-22 19:02:01 +02:00
Clément Bœsch 4dbd055d5a avcodec/dvbsub: add "enc" suffix to encoder 2020-08-22 19:02:01 +02:00
Clément Bœsch 346309a795 avcodec/dvbsub: remove useless indirection in dvbsub_encode. 2020-08-22 19:02:01 +02:00
Andreas Rheinhardt 01a580f141 avcodec/rzpaenc: Remove set-but-unused variable
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
2020-08-22 09:23:30 +02:00
Derek Buitenhuis 3fc3d712a9 avcodec/libaomdec: Set SAR based on RenderWidth and RenderHeight
This is the same thing we do in libdav1d.c

Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
2020-08-21 23:58:10 +01:00
Michael Bradshaw b97eb35308 avcodec/proresenc: infer array lengths
Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
2020-08-21 15:43:52 -07:00
Paul B Mahol 6158029dfc avcodec: add RPZA encoder 2020-08-21 22:46:07 +02:00
Michael Bradshaw b30f737f7a avcodec/proresenc: add support for PQ and HLG
Signed-off-by: Michael Bradshaw <mjbshaw@google.com>
2020-08-21 11:09:11 -07:00
Paul B Mahol d2206f0c5b avcodec/qdmc: reduce insanely huge tables 2020-08-21 13:55:50 +02:00
James Almer 23bbb01077 avcodec/h2645_parse: reset the H2645NAL type value before parsing a NAL header
This will prevent reporting a bogus value in the log message when
the header parsing fails.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-20 13:50:11 -03:00
James Almer 1e41a9be34 avcodec/h2645_parse: skip empty NAL units earlier
No point in trying to parse nonexistent header bits.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-20 13:50:01 -03:00
James Almer a4d28ea030 avcodec/h2645_parse: always return 0 on successful h{264,evc}_parse_nal_header() calls
HEVC NALs are no longer being skipped based on their nuh_layer_id
value since ad326379c6.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-20 13:17:50 -03:00
James Almer c56d787fe3 avcodec/decode: move the ff_decode_frame_props() prototype to the proper header
Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-20 13:17:50 -03:00
Harry Mallon a606e3b339 libavcodec/proresdec2: Setup qmat_chroma according to RDD36
Signed-off-by: Harry Mallon <harry.mallon@codex.online>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2020-08-20 13:21:20 +02:00
Jun Zhao d5abb11738 lavc/libkvazaar: export encoded frame stats
Export choosen pict_type and qp.

Signed-off-by: Jun Zhao <barryjzhao@tencent.com>
2020-08-20 15:06:14 +08:00
Andriy Gelman 5df9724e42 avcodec/v4l2_context: return EAGAIN to signal full buffers
Return proper error when frame buffers are full. This path is triggered
on the DragonBoard 410c since the encoding API change in commit
827d6fe73d.

Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
Reviewed-by: Mark Thompson <sw@jkqxz.net>
2020-08-16 17:39:13 -04:00
Limin Wang d7af6d1469 avcodec/utils: calculate frame number of HEVC if the framerate > 30FPS
Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
2020-08-16 22:51:11 +08:00
James Almer 161d7f3fee avcodec/bsf: improve the doxy for av_bsf_flush()
Mention an example scenario where the function should be used.

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-15 15:55:22 -03:00
James Almer 34a385b340 avcodec/qsvenc_h264: add missing atsc_a53.h include
Regression since 0de01da1d2

Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-15 14:43:11 -03:00
James Almer 0de01da1d2 avcodec: move ff_alloc_a53_sei() to atsc_53
Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-15 13:01:25 -03:00
James Almer 1ab3ae6fd5 avcodec/hevc_sei: use ff_parse_a53_cc() to parse A53 Closed Captions
Signed-off-by: James Almer <jamrial@gmail.com>
2020-08-15 13:01:19 -03:00