Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ffmpeg-gl-transition from ffmpeg/4.2 #4

Open
wants to merge 154 commits into
base: release/4.2
Choose a base branch
from

Conversation

RPing
Copy link

@RPing RPing commented Aug 29, 2019

No description provided.

michaelni and others added 30 commits November 2, 2018 01:33
Signed-off-by: Michael Niedermayer <[email protected]>
Fixes ticket #7521

Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 8096f52)
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 1052578)
I'm writing a cuda implementation of yadif, and while this
obviously has a very different implementation of the actual
filtering, all the frame management is unchanged. To avoid
duplicating that logic, let's make it shareable.

From the perspective of the existing filter, the only real change
is introducing a function pointer for the filter() function so it
can be specified for the specific filter.

(cherry picked from commit 598f0f3)
This is a cuda implementation of yadif, which gives us a way to
do deinterlacing when using the nvdec hwaccel. In that scenario
we don't have access to the nvidia deinterlacer.

(cherry picked from commit d5272e9)
With the cuda yadif filter in use, the number of mapped decoder
frames could increase by two, as the filter holds on to additional
frames.

(cherry picked from commit 1b41115)
This requires a newer version of CUDA than we want to require.

(cherry picked from commit 8e50215)
Fixes: Infinite loop
Fixes: 10685/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_PROSUMER_fuzzer-5652236881887232

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 9acdf17)
Signed-off-by: Michael Niedermayer <[email protected]>
Reviewed-by: Paul B Mahol <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 506839a)
Signed-off-by: Michael Niedermayer <[email protected]>
Reviewed-by: Paul B Mahol <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 1dfa0b6)
Signed-off-by: Michael Niedermayer <[email protected]>
…ss()

Reviewed-by: Paul B Mahol <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 66425ad)
Signed-off-by: Michael Niedermayer <[email protected]>
…supported 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 <[email protected]>
(cherry picked from commit df91af1)
Signed-off-by: Michael Niedermayer <[email protected]>
…eader()

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 <[email protected]>
(cherry picked from commit 074187d)
Signed-off-by: Michael Niedermayer <[email protected]>
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 <[email protected]>
(cherry picked from commit c1cee05)
Signed-off-by: Michael Niedermayer <[email protected]>
Fixes ticket #7481.

Signed-off-by: Marton Balint <[email protected]>
(cherry picked from commit 8e5a249)
…r OBUs if needed

Reviewed-by: Mark Thompson <[email protected]>
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 2d2af23)
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 <[email protected]>
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 89a0d33)
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 <[email protected]>
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 10bc4c3)
Fixes #7538.

(cherry picked from commit 2ce3a48)
…ue fields

The valid range is -255 to 255.

Reviewed-by: Mark Thompson <[email protected]>
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 79831f4)
Reviewed-by: Mark Thompson <[email protected]>
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit f0f2832)
A fade out (usually at the end of a video) can easily start beyond
INT32_MAX (about 36 minutes).  Regression since d40dc64.

(cherry picked from commit ae43235)
Signed-off-by: Marton Balint <[email protected]>
(cherry picked from commit aecd63b)
Fixes ticket #7494.

Signed-off-by: Marton Balint <[email protected]>
(cherry picked from commit e3a9630)
guoyejun and others added 29 commits March 14, 2019 11:49
Signed-off-by: Guo, Yejun <[email protected]>
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 402bf26)
Signed-off-by: Michael Niedermayer <[email protected]>
Signed-off-by: Guo, Yejun <[email protected]>
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit d9b2668)
Signed-off-by: Michael Niedermayer <[email protected]>
Fixes: Division by 0
Fixes: ffmpeg_zero_division.bin

Found-by: Anatoly Trosinenko <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 3838140)
Signed-off-by: Michael Niedermayer <[email protected]>
Fixes: Timeout (17 sec -> 65 milli sec)
Fixes: 13264/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CDGRAPHICS_fuzzer-5711167941509120

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 9a9f0e2)
Signed-off-by: Michael Niedermayer <[email protected]>
Reference: ETSI EN 300 743 V1.2.1  7.2.2 Region composition segment

Fixes: Timeout
Fixes: 13325/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DVBSUB_fuzzer-5143979392237568

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit a8c5ae4)
Signed-off-by: Michael Niedermayer <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
…n the picture

Fixes deadlocks when decoding packets containing more than one of the aforementioned
slices when using frame threads.

Tested-by: Derek Buitenhuis <[email protected]>
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 70c8c8a)
Fixes: Timeout (19sec -> 419msec)
Fixes: 13411/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_CLEARVIDEO_fuzzer-5733153811988480

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 41f93f9)
Signed-off-by: Michael Niedermayer <[email protected]>
Fixes: Timeout (11sec -> 3sec)
Fixes: 13218/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_DFA_fuzzer-5661074316066816

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit f20760f)
Signed-off-by: Michael Niedermayer <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
…parsing fails

The first frame contains the sequence header, which is needed to parse every
following frame.

This fixes parsing streams with broken extradata but correct packet data.

Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 699d0c2)
…me Metadata OBUs

Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 40490b3)
Fixes: signed integer overflow: 1111638592 - -2122219136 cannot be represented in type 'int'
Fixes: 13441/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_TRUEMOTION2_fuzzer-5732769815068672

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 1223696)
Signed-off-by: Michael Niedermayer <[email protected]>
…ad_trun()

No testcase

Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit ff13a92)
Signed-off-by: Michael Niedermayer <[email protected]>
Fixes: OOM
Fixes: 13710/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_MPEG4_fuzzer-5633152942342144

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 635067b)
Signed-off-by: Michael Niedermayer <[email protected]>
Found by Mingi Cho, Seoyoung Kim, and Taekyoung Kwon
of the Information Security Lab, Yonsei University.

(cherry picked from commit 1e34014)
Signed-off-by: Michael Niedermayer <[email protected]>
Fixes: NULL pointer dereference and out of array access
Fixes: 13871/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_HEVC_fuzzer-5746167087890432
Fixes: 13845/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_HEVC_fuzzer-5650370728034304

This also fixes the return code for explode mode

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: James Almer <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 5465562)
Signed-off-by: Michael Niedermayer <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
This makes sure the data is available when writing the moov atom during the
second pass triggered by the faststart movflag.

Fixes ticket #7780

Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 27c94c5)
Fixes: Out of array access
Fixes: 13984/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_RSCC_fuzzer-5734128093233152

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Paul B Mahol <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
(cherry picked from commit 3a0ec15)
Signed-off-by: Michael Niedermayer <[email protected]>
Signed-off-by: Michael Niedermayer <[email protected]>
Reviewed-by: Mark Thompson <[email protected]>
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 461303f)
Otherwise, AV1 encodes with FFmpeg trigger use-of-uninitialized-value
warnings under MemorySanitizer, and the output buffer potentially
changes from run to run.

Signed-off-by: James Almer <[email protected]>
(cherry picked from commit bb5efd1)
Signed-off-by: James Almer <[email protected]>
(cherry picked from commit 1ec777d)
There are 2 types of problems when using adaptive deinterlace with cuvid:

1. Sometimes, in the middle of transcoding, cuvid outputs frames with visible horizontal lines (as though weave deinterlace method was chosen);
2. Occasionally, on scene changes, cuvid outputs a wrong frame, which should have been shown several seconds before (as if the frame was assigned some wrong PTS value).

The reason is that sometimes CUVIDPARSERDISPINFO has property progressive_frame equal to 1 with interlaced videos.
In order to fix the problem we should check if the video is interlaced or progressive in the beginning of a video sequence (cuvid_handle_video_sequence).
And then we just use this information instead of the property progressive_frame in CUVIDPARSERDISPINFO (which is unreliable).

Signed-off-by: Timo Rothenpieler <[email protected]>
10 bytes (id3v2 header amount of bytes) were being read before any checks
were made on the bitstream. The result was that we were overreading into
the next frame if the current one was 8 or 9 bytes long.

Fixes tickets #7271 and #7869.

Signed-off-by: James Almer <[email protected]>
(cherry picked from commit d88193c)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.