Commit graph

26283 commits

Author SHA1 Message Date
Michael Niedermayer
f7900a5609
avformat/demux: Check packet duration
Fixes: signed integer overflow: 24320 + 9223372036854775573 cannot be represented in type 'long'
Fixes: 71001/clusterfuzz-testcase-minimized-ffmpeg_dem_MATROSKA_fuzzer-5644785744936960

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-01-01 21:33:46 +01:00
Michael Niedermayer
3f0b95bb17
avformat/jpegxl_anim_dec: clear buffer padding
Fixes: use of uninitialized value
Fixes: 70992/clusterfuzz-testcase-minimized-ffmpeg_dem_IMAGE2_fuzzer-5735819170611200

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-01-01 21:33:46 +01:00
Michael Niedermayer
9578c135d0
avformat/rmdec: check that buf if completely filled
Fixes: use of uninitialized value
Fixes: 70988/clusterfuzz-testcase-minimized-ffmpeg_dem_IVR_fuzzer-5298245077630976

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-01-01 21:33:45 +01:00
Michael Niedermayer
4c62cbcae2
avformat/mxfdec: Check that key was read sucessfull
Fixes: use of uninitialized value
Fixes: 70932/clusterfuzz-testcase-minimized-ffmpeg_dem_MXF_fuzzer-4870202133643264

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-01-01 20:31:07 +01:00
Michael Niedermayer
eab65379bf
avformat/rpl: Fix check for negative values
Fixes: signed integer overflow: 10 * -1923267925333400000 cannot be represented in type 'int64_t' (aka 'long')
Fixes: 378891963/clusterfuzz-testcase-minimized-fuzzer_loadfile_direct-5714338935013376
Found-by: ossfuzz
Reported-by: Kacper Michajlow <kasper93@gmail.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-12-31 19:15:19 +01:00
Michael Niedermayer
bb85423142
avformat/mlvdec: Check avio_read()
Fixes: use-of-uninitialized-value
Fixes: 383170476/clusterfuzz-testcase-minimized-ffmpeg_dem_MLV_fuzzer-4696002884337664

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Peter Ross <pross@xvid.org>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-12-31 04:56:26 +01:00
Michael Niedermayer
53db351654
avformat/mxfdec: Check llen addition for overflow
Fixes: signed integer overflow: 9223372036854775807 + 1 cannot be represented in type 'long'
Fixes: 377971441/clusterfuzz-testcase-minimized-ffmpeg_dem_MXF_fuzzer-4966030696316928

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-12-31 04:56:26 +01:00
Timo Rothenpieler
5f38c82536 avformat: bump version for enhanced flv 2024-12-27 20:24:23 +01:00
Timo Rothenpieler
770f0a2434 avformat/flvdec: propagate av_packet_add_side_data failure 2024-12-27 20:24:23 +01:00
Timo Rothenpieler
741e49c56f avformat/flvenc: prevent writing legacy codecs into extended video tracks 2024-12-27 20:24:23 +01:00
Timo Rothenpieler
e3836d1d05 avformat/rtmpproto: reserve enough space for statusmsg 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
e2a8ece352 avformat/flvdec: support all multi-track modes 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
da32990e83 avformat/flvdec: stop shadowing local variables 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
f8dc4d94fd avformat/rtmpproto: add more enhanced rtmp codecs 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
25faaa311a avformat/flvdec: add support for reading multi track audio 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
bbf1f3cf6f avformat/flvenc: add support for writing multi track audio 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
67b5fb4b59 avformat/flvdec: parse enhanced rtmp multichannel info 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
3db28fb067 avformat/flvenc: write enhanced rtmp multichannel info for audio with more than two channels 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
63613fe915 avformat/flvenc: refactor fourcc writing 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
2f72dc33ff avformat/flvdec: add enhanced audio codecs 2024-12-27 20:24:22 +01:00
Timo Rothenpieler
70067c829b avformat/flvenc: remove !size check for audio packets
At least flac finishes every stream with an empty side-data only packet,
that would trigger an assertion/error were these checks still in place.
2024-12-27 20:24:22 +01:00
Dennis Sädtler
466a400b94 avformat/flvdec: add support for demuxing multi-track FLV
Based on enhanced-rtmp v2 spec published by Veovera:
https://veovera.github.io/enhanced-rtmp/docs/enhanced/enhanced-rtmp-v2

Signed-off-by: Dennis Sädtler <dennis@obsproject.com>
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2024-12-27 20:24:09 +01:00
Dennis Sädtler
d8d0175d3a avformat/flvenc: implement support for multi-track video
Based on enhanced-rtmp v2 spec published by Veovera:
https://veovera.github.io/enhanced-rtmp/docs/enhanced/enhanced-rtmp-v2

This implementation maintains some backwards compatibility by only
writing the track information for track indices > 0. This means that
older FFmpeg versions - and possibly other software - can still read the
first video track properly and skip over unsupported packets.

Signed-off-by: Dennis Sädtler <dennis@obsproject.com>
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2024-12-27 20:22:19 +01:00
James Almer
cedd9151f8 avformat/iamf_writer: ensure the stream groups are not empty
Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-27 16:17:51 -03:00
Marth64
3778b1f6f1 avformat/dashdec: reformat and lowercase get_Fragment()
Signed-off-by: Marth64 <marth64@proxyid.net>
2024-12-24 16:36:05 -06:00
Eugene Zemtsov
7c9bde1d0d avformat/mov: fix crash when trying to get a fragment time for a non-existing fragment
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Reviewed-by: Marth64 <marth64@proxyid.net>
Signed-off-by: Marth64 <marth64@proxyid.net>
2024-12-24 15:36:30 -06:00
Michael Niedermayer
954d55c2a4
avformat/mov: dereference pointer after null check
Fixes: null pointer dereference
Fixes: 383397479/clusterfuzz-testcase-minimized-ffmpeg_DEMUXER_fuzzer-4776829338058752

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-12-24 02:55:52 +01:00
Michael Niedermayer
361d24e6d9
avformat/matroskadec: Check pre_ns for overflow
Fixes: signed integer overflow: -3483479120376300096 - 7442323944145700864 cannot be represented in type 'long'
Fixes: 383187489/clusterfuzz-testcase-minimized-ffmpeg_dem_WEBM_DASH_MANIFEST_fuzzer-4561470580391936

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-12-24 02:55:51 +01:00
Michael Niedermayer
e8c94e31da
avformat/mov: free stream_info when the surrounding array is freed
Fixes: memleak
Fixes: 378408474/clusterfuzz-testcase-minimized-ffmpeg_dem_MOV_fuzzer-5699368121860096

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2024-12-24 02:55:50 +01:00
Peter Ross
350ebef112
avformat/iff: remove surplus if statement
Fixes CID 1636854
2024-12-22 06:24:49 -05:00
Peter Ross
b2cba76d4f avformat/riff: map 0069 twocc to ADPCM IMA XBOX decoder 2024-12-22 16:08:33 +11:00
Peter Ross
6bf9252807 avformat/Makefile: include object files for image_vbn_pipe demuxer 2024-12-21 11:38:48 +11:00
Peter Ross
c90e0777da avformat/iff: SndAnim decoding
Fixes ticket #5553.
2024-12-20 20:40:12 +11:00
James Almer
4e2b9df48c avformat/isom: use more of the existing channel layout bitmap defines
Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-19 22:06:22 -03:00
James Almer
76049d1c45 avformat/iamf_writer: fix setting num_samples_per_frame for OPUS
As per section 3.11.1 of the IAMF spec, the sample rate used in Codec Config
for Opus shall be 48kHz, regardless of the original sample rate used during
encoding.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-19 22:06:22 -03:00
Peter Ross
494c961379 avformat/Makefile: add iso_writer golomb_tab from shared library dependency 2024-12-19 10:42:29 +11:00
Timo Rothenpieler
fce0622d0b avformat/hevc: add support for writing alpha layer 2024-12-16 00:50:52 +01:00
James Almer
fb5e8ea971 avformat/iamf_parse: fix setting duration for the last subblock in a parameter definition
When subblock durations are constant, the last block may be smaller and the
value needs to be calculated.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-15 20:41:05 -03:00
James Almer
d38fc25519 avformat/iamf_parse: add checks to parameter definition durations
Section 3.6.1 of the IAMF spec states "When constant_subblock_duration is equal to 0, the summation of all
subblock_duration in this parameter block SHALL be equal to duration.".

Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-15 20:37:39 -03:00
Marth64
8291aedf1a avformat/mov: don't reallocate extradata when converting dvdsub palette
After introduction of ff_dvdclut_palette_extradata_cat() to convert
DVD subtitle palettes from YUV to RGB, a leak is introduced because
of the call to ff_alloc_extradata(). This is not necessary, instead
we should free the extradata because ff_bprint_to_codecpar_extradata()
will finalize the bprint'ed string to the codecpar and set the length.

Fixes leak introduced in 3b0e6c0ecc.

Signed-off-by: Marth64 <marth64@proxyid.net>
2024-12-13 22:41:18 -06:00
James Almer
2d33f66f9a avformat/iamfdec: don't set individual streams as dependent
Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-13 16:36:10 -03:00
James Almer
cc9843dc33 avformat/iamf_writer: add support for expanded channel layouts
Defined in Immersive Audio Model and Formats 1.1.0, sections 3.6.2 and 3.7.3

Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-13 16:36:10 -03:00
James Almer
d255f90242 avformat/iamf_parse: add support for expanded channel layouts
Defined in Immersive Audio Model and Formats 1.1.0, sections 3.6.2 and 3.7.3

Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-13 16:36:10 -03:00
Manuel Lauss
d21134313f avformat/smush: read ANIMv2 a/v parameters
SMUSH ANIM files with subversion 2 provide additional fields for
framerate and samplerate, use them if available, otherwise
default to 12 fps which is the default for almost all ANIMv2
since 1995.

Fixes the too-fast playback of test files from LucasArts games
released 1995-1997.  It was not noticed since Audio for
those isn't decoded by ffmpeg.

Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
2024-12-09 02:05:18 +01:00
Marth64
3b0e6c0ecc avformat/mov: use dvdclut for YUV to RGB conversion of DVD subtitle palettes
Signed-off-by: Marth64 <marth64@proxyid.net>
2024-12-08 16:30:17 -06:00
James Almer
e2953fedf9 avformat/hevc: also print NALU ids
Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-08 19:13:34 -03:00
James Almer
68ee3faf48 avformat/hevc: add a log context to ff_isom_write_{hvcc,lhvc}
Signed-off-by: James Almer <jamrial@gmail.com>
2024-12-08 19:12:19 -03:00
llyyr
550c662a1f
avformat/mpegts: correctly skip TP_extra_header in m2ts
instead of just resyncing and skipping a bunch of TS packets, leading to
a loss of frames.

Before this, a stray byte with the value of 0x47 in TP_extra_header
would throw off the detection of where TS packets start.

A typical file that could cause issues would look like this:

    00000300: 238f 4780 4750 1110 0000 01e0 0000 84c0
                   ^^   ^^
The first four bytes here are TP_extra_header and the actual TS packet
starts at offset 0x304

FFmpeg would try to read a packet at 0x300 but since nothing skips the
4 byte TP_extra_header, find that the first byte is not 0x47 and
immediately go into mpegts_resync, and incorrectly detect the stray 0x47
in the TP_extra_header at 0x302 as the new sync byte.

Fix this by correctly skipping the first 4 bytes if the source packet
is 192 bytes.

Signed-off-by: llyyr <llyyr.public@gmail.com>
Signed-off-by: Hendrik Leppkes <h.leppkes@gmail.com>
2024-12-08 10:54:26 +01:00
Paul B Mahol
8050a7955e avformat/mm: fix packets pts generation and add seek support
Signed-off-by: Peter Ross <pross@xvid.org>
2024-12-08 09:32:35 +11:00
Gyan Doshi
914f89dbc6 avformat/movenc: log stream index for invalid pkt duration 2024-12-07 10:07:35 +05:30