Commit graph

46708 commits

Author SHA1 Message Date
Andreas Rheinhardt
3524e82a08 avcodec/dv: Remove unnecessary header
Forgotten in 6d484671ec.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-09 20:06:47 +02:00
Andreas Rheinhardt
ad5040a442 avcodec/cbs: Mark init and close functions as av_cold
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-09 20:05:14 +02:00
Andreas Rheinhardt
e4f7a2b003 avcodec/encode: Avoid check whose result is known in advance
encode_send_frame_internal() is always only called if
the buffer packet is empty and except when we are dealing
with an audio codec that does not allow variable frame size
it stays that way until a call to av_frame_ref() at the end
of encode_send_frame_internal(). In case we are dealing
with the small last frame of an audio encoder requiring
constant frame size the frame will be allocated by pad_last_frame()
and this the only case where this is so. So by returning directly
after pad_last_frame(), we can avoid having to recheck
whether the frame is still empty before av_frame_ref().

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-09 20:03:37 +02:00
Andreas Rheinhardt
4ad686269d avcodec: Add const to decoder packet data pointers
The packets given to decoder need not be writable,
so it is best to access them via const uint8_t*.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-09 19:37:53 +02:00
Andreas Rheinhardt
e4a10dd637 avcodec/apng: Add APNG_FCTL_CHUNK_SIZE define
Also use it where appropriate.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-09 19:37:52 +02:00
James Almer
f9785a78da avcodec/aacdec: fix parsing of dual mono files
Dual mono files report a channel count of 2 with each individual channel in its
own SCE, instead of both in a single CPE as is the case with standard stereo.
This commit handles this non default channel configuration scenario.

Fixes ticket #1614

Signed-off-by: James Almer <jamrial@gmail.com>
2022-07-08 10:05:24 -03:00
Andreas Schneider
59018254c7 avcodec/openh264: return (DE|EN)CODER_NOT_FOUND if version check fails
A cosmetic change only, it basically just changes the user facing error message
to clients that interpret the errors to something that makes sense.

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Signed-off-by: Marton Balint <cus@passwd.hu>
2022-07-08 00:49:37 +02:00
Michael Niedermayer
b418ad75c2 avcodec/flashsv: Clear pointers
Fixes: Use after free
Fixes: 47399/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_FLASHSV2_fuzzer-5718646686613504

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-07-07 21:52:52 +02:00
Michael Niedermayer
af2ed09220 avcodec/aasc: Fix indention
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-07-07 21:52:52 +02:00
Michael Niedermayer
8f6432cd77 avcodec/flashsv: Check inflate() for failure
Fixes: CID1047223

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-07-07 21:52:52 +02:00
Michael Niedermayer
7796d740bd avcodec/smacker: fix indention after previous commit
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-07-07 21:52:52 +02:00
Michael Niedermayer
08e82e5b57 avcodec/smacker: Optimize constant 16bit audio output
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-07-07 21:52:52 +02:00
Paul B Mahol
42518d8dd0 avcodec/exrenc: add av_cold to some functions 2022-07-06 19:41:44 +02:00
Timo Rothenpieler
85bc6b5abf avcodec/nvenc: add support for additional (10 bit) RGB pixel formats 2022-07-05 18:27:37 +02:00
Anton Khirnov
c9a2506de9 get_bits: move check_marker() to mpegvideodec.h
It is only used by mpegvideo-based decoders - specifically mpeg12, intelh263,
ituh263, mpeg4video.
2022-07-04 18:16:11 +02:00
Andreas Rheinhardt
8cfb44cd2e avcodec/mscc: Don't modify input packet
This packet may not be writable, hence we must not write to it.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-04 15:04:08 +02:00
Andreas Rheinhardt
930e560da3 avcodec/decoders: Use const uint8_t* to access input packet data
These packets need not be writable, so we must not modify them.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-04 15:04:01 +02:00
Andreas Rheinhardt
88f9b1fc45 avcodec/dcadec: Treat the input packet's data as const
A decoder's input packet need not be writable, so we must not modify
the data.

Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-04 15:03:53 +02:00
Zhao Zhili
066368e837 avcodec/libdavs2: workaround memory leak
davs2_decoder_close doesn't free those on the fly frames which
don't get output yet. It's a design bug, but easy to workaround.

Before the patch:
Direct leak of 1198606 byte(s) in 2 object(s) allocated from:
    #0 0x563af5e1e5f0 in malloc (ffmpeg+0x6675f0)
    #1 0x563af9765ef3 in davs2_malloc davs2/source/common/common.h:1240
    #2 0x563af9765ef3 in davs2_alloc_picture davs2/source/common/header.cc:815

Indirect leak of 3595818 byte(s) in 6 object(s) allocated from:
    #0 0x563af5e1e5f0 in malloc (ffmpeg+0x6675f0)
    #1 0x563af9765ef3 in davs2_malloc davs2/source/common/common.h:1240
    #2 0x563af9765ef3 in davs2_alloc_picture davs2/source/common/header.cc:815

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2022-07-04 11:30:08 +08:00
Michael Niedermayer
9fec43a92d avcodec/alsdec: No channels cannot be accessed
Fixes: out of array access
Fixes: 48145/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ALS_fuzzer-5054524173189120

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Reviewed-by: Thilo Borgmann <thilo.borgmann@mail.de>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-07-03 19:36:26 +02:00
Michael Niedermayer
cd847f86d3 avcodec/qdrw: adjust max colors to array size
Fixes: out of array access
Fixes: 48429/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_QDRAW_fuzzer-4608329791438848

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>
2022-07-03 19:36:26 +02:00
Paul B Mahol
d70a443977 avcodec/pnmenc: support both endian variants for PFM 2022-07-03 15:16:31 +02:00
Paul B Mahol
ff1450e449 avcodec: add PHM decoder and encoder 2022-07-03 15:16:31 +02:00
Andreas Rheinhardt
33fe3b73c2 avcodec/tests/snowenc: Remove unused-but-set variable
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-03 11:49:31 +02:00
Andreas Rheinhardt
563c2ed272 avcodec/qoidec: Remove unused-but-set variable
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-03 11:41:23 +02:00
Andreas Rheinhardt
a88e8341cc avcodec/j2kenc: Remove unused-but-set variable
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-03 11:41:23 +02:00
Andreas Rheinhardt
8f99a72878 avcodec/imc: Remove unused-but-set variable
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-03 11:41:23 +02:00
Andreas Rheinhardt
bdaff63723 avcodec/hevc_ps: Remove unused-but-set variable
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-03 11:41:23 +02:00
Michael Niedermayer
8709f4c10a avcodec/alacdsp: Make intermediates unsigned
Fixes: signed integer overflow: -14914387 + -2147418648 cannot be represented in type 'int'
Fixes: 46464/clusterfuzz-testcase-minimized-ffmpeg_AV_CODEC_ID_ALAC_fuzzer-474307197311385

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2022-07-02 21:07:04 +02:00
Andreas Rheinhardt
55c605f72c avcodec/cbs_h2645: Remove unnecessary (h264|hevc)_sei.h inclusions
They are unnecessary since the SEI enum has been moved
to sei.h.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-02 08:58:20 +02:00
Andreas Rheinhardt
804bf898da avcodec/pthread_slice: Don't reinitialise initialised mutex
It results in undefined behaviour. Instead initialize the mutexes
and condition variables once during init (and check these
initializations).

Also combine the corresponding mutex and condition variable
into one structure so that one can allocate their array
jointly.

Reviewed-by: Tomas Härdin <tjoppen@acc.umu.se>
Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-01 15:35:11 +02:00
Wujian(Chin)
26e7d7b14e avcodec/v4l2_m2m: Check if the file descriptor is valid before closing
Fixes ticket #9507.

Reviewed-by: Steven Liu <liuqi05@kuaishou.com>
Signed-off-by: wujian_nanjing <wujian2@huawei.com>
2022-07-01 09:59:48 +08:00
Andreas Rheinhardt
bf13a177d2 avcodec/libx264: Avoid duplicating strings
Also removes some unchecked allocations.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-07-01 00:40:02 +02:00
Jan Ekström
92dc9c9d68 avcodec/ac3_parser{,_internal}: expose AC-3 bit_rate_code
Required by MP4's AC3SpecificBox and MPEG-TS AC-3 audio_descriptor,
of which the former is implemented in our MP4 writer.

Signed-off-by: Jan Ekström <jan.ekstrom@24i.com>
2022-06-30 16:14:05 +03:00
Paul B Mahol
3f72155fc6 avcodec/exrenc: add grayf32 format support 2022-06-30 15:07:55 +02:00
Andreas Rheinhardt
03b2ed9a50 avcodec/hevcdec: Return immediately upon hevc_init_context() failure
This function is only called from the decoder's init function
and given that this decoder has FF_CODEC_CAP_INIT_CLEANUP set,
hevc_decode_free() is called automatically (currently it would
be called twice with the second call being redundant).

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-06-30 11:06:46 +02:00
Andreas Rheinhardt
a3b833c3ea avcodec/hevcdec: Remove redundant context_initialized
All contexts are always initialized during init, regardless
of whether frame threading is in use or not.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-06-30 11:06:20 +02:00
Andreas Rheinhardt
9a167a15c7 avcodec/avcodec: Don't mention removed function
avcodec_thread_init() has been removed in
9a79bb552a.

Reviewed-by: Anton Khirnov <anton@khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-06-30 11:02:21 +02:00
Paul B Mahol
42d75f2faa avcodec/pnmenc: reindent 2022-06-29 09:52:24 +02:00
Paul B Mahol
ed4bad9977 avcodec/pnmenc: add support for grayf32 in PFM image 2022-06-29 09:51:05 +02:00
Swinney, Jonathan
c471cc7474 lavc/aarch64: motion estimation functions in neon
- ff_pix_abs16_neon
 - ff_pix_abs16_xy2_neon

In direct micro benchmarks of these ff functions verses their C implementations,
these functions performed as follows on AWS Graviton 3.

ff_pix_abs16_neon:
pix_abs_0_0_c: 141.1
pix_abs_0_0_neon: 19.6

ff_pix_abs16_xy2_neon:
pix_abs_0_3_c: 269.1
pix_abs_0_3_neon: 39.3

Tested with:
./tests/checkasm/checkasm --test=motion --bench --disable-linux-perf

Signed-off-by: Jonathan Swinney <jswinney@amazon.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
2022-06-28 00:51:39 +03:00
Jan Ekström
49027e7612 avcodec/libx265: make X265 CSP selection pixel format independent
Currently the format listing misses the J formats completely, yet
they are marked as supported in the encoder. Thus to make the logic
support them while not explicitly listing them, make the logic
utilize chroma subsampling information in both width and height
available through the pixel format descriptor.
2022-06-27 09:25:22 +03:00
Yue Heng
53baf60603 libavcodec/qsvenc: Enable fixed QP configure in qsv CQP runtime
Enable dynamic QP configuration in runtime on qsv encoder. Through
AVFrame->metadata, we can set key "qsv_config_qp" to change QP
configuration when we encode video in CQP mode.

Signed-off-by: Yue Heng <yue.heng@intel.com>
Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
2022-06-27 12:09:44 +08:00
Wenbin Chen
afa20e6db8 libavcodec/qsvenc_hevc: Use default value from MSDK to set bf.
Change the default value of "bf" for hevc_qsv to -1. 8 isn't the best
choice so let MSDK to decide the number of b frames.

Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
2022-06-27 12:09:44 +08:00
Zhao Zhili
07bcedc232 avcodec/cuviddec: fix null pointer dereference
It can happened on error path of cuvid_decode_init().

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2022-06-26 21:44:12 +02:00
Zhao Zhili
ffc91940a4 avcodec/cuviddec: fix AV1 decoding error
cuvidParseVideoData only supports pure OBUs, it reports an unknown
error with AV1CodecConfigurationRecord. Check whether extradata
is AV1CodecConfigurationRecord and skip the first 4 bytes to fix
the issue.

The bug is revealed in ffmpeg cmd since 45e3b6a68 and ffd1316e.

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2022-06-26 21:41:31 +02:00
Jack Bruienne
75638fe940 avcodec: fix time reporting for DFPWM streams
This adds the exact bits per sample for DFPWM to
av_get_exact_bits_per_sample.
Previously, the DTS and PTS were set to 0 because the codec never
reported them, but adding this allows libavformat to automatically
set DTS and PTS from the byte position of the stream.

Signed-off-by: Jack Bruienne <jackbruienne@gmail.com>
2022-06-26 17:04:42 +02:00
Andreas Rheinhardt
9dfec90253 avcodec/x86/h264_qpel: Remove unused functions
Forgotten in 4011a76494.
The reason for this is that these functtions are marked
as av_always_inline and GCC does not emit warnings
if such functions are unused, so this went unnoticed.
Yet Clang does, so this commit removes them.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2022-06-26 07:09:16 +02:00
Leo Izen
59a58d1a85 avcodec/libjxlenc: properly read input colorspace
Whether an ICC profile is present or not, the libjxl
encoder wrapper should now properly read colorspace tags
and forward them to libjxl appropriately, rather than just
assume sRGB as before. It will also print warnings when
colorimetric assumptions are made about the input data.

Reviewed-by: Niklas Haas <git@haasn.dev>
Signed-off-by: Leo Izen <leo.izen@gmail.com>
2022-06-25 17:07:35 +02:00
Leo Izen
ef43767911 avcodec/libjxldec: properly tag output colorspace
Whether an ICC profile is present or not, the decoder
should now properly tag the colorspace of pixel data
received by the decoder.

Reviewed-by: Niklas Haas <git@haasn.dev>
Signed-off-by: Leo Izen <leo.izen@gmail.com>
2022-06-25 17:07:09 +02:00