aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* avcodec/mips/aaccoder_mips: Remove MIPS-specific aaccoderAndreas Rheinhardt2024-03-184-2509/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ff_aac_coder_init_mips() modifies a static const structure of function pointers. This will crash if the binary uses relro and is a data race in any case. Furthermore it points to a maintainability issue: The AACCoefficientsEncoder structures have been constified in commit fd9212f2edfe9b107c3c08ba2df5fd2cba5ab9e3, a Libav commit merged in 318778de9ebec276cb9dfc65509231ca56590d13. Libav did not have the MIPS-specific AAC code and so this was fine for them; yet FFmpeg had them, but this was not recognized. Commit 75a099fc734a4ee2b1347d0a3d8c53d883b95174 points to another maintainability issue: Contrary to ordinary DSP code, this code here is way more complex and needs to be constantly kept in sync with the ordinary code which it mimicks and replaces. Said commit is the only commit actually changing aaccoder.c in the last few years and the same change has not been performed for the MIPS clone; before that, it even happened several times that the mips code was broken due to changes of the generic code (see commits 97437bd17a8c5d4135b2f3b1b299bd7bb72ce02c and de262d018d7d7d9c967af1dfd1b861c4b9eb2a60 or 860dbe0275e57cbf4228f3f653f872ff66ca596b or 933309a6ca0f18bf1d40e917fff455221f57fb4b or b65ffa316e377213c29736929beba584d0d80d7c). This might even lead to scenarios where someone changing non-dsp aacenc code would have to modify mips inline asm in order to keep them in sync. This is obviously a significant burden (if the AAC encoder were actively developed). Finally, the code does not even compile here due to errors like "Error: float register should be even, was 1". Reviewed-by: Lynne <dev@lynne.ee> Reviewed-by: Jean-Baptiste Kempf <jb@videolan.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avutil/hash: Avoid relocations for hash namesAndreas Rheinhardt2024-03-181-31/+41
| | | | | | | | These strings are so short (longest takes 11B) that using pointers is wasteful. Avoiding them also moves hashdesc into .rodata (from .data.rel.ro). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/aiffenc: Usw avio_wb32() where possibleAndreas Rheinhardt2024-03-171-6/+6
| | | | | | AIFF is a big-endian format, so this is more natural. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/aiffenc: Simplify padding tagAndreas Rheinhardt2024-03-171-4/+6
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* fate/lavf-audio: Test writing AIFF-native tagsAndreas Rheinhardt2024-03-173-17/+18
| | | | | | | | In particular, test writing tags with odd strlen. (These tags are zero-padded to even size.) Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/mpegaudio(data|dsp): Mark symbols as hiddenAndreas Rheinhardt2024-03-172-0/+6
| | | | | | | | Avoids .got entries for ff_mpa_bitrate_tab, ff_mpa_synth_window_fixed, ff_band_size_long, ff_mpa_pretab, ff_band_size_short, ff_mpa_synth_window_float and ff_band_index_long here. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/vorbis_data: Mark symbols as hiddenAndreas Rheinhardt2024-03-171-0/+3
| | | | | | Avoids .got entries for ff_vorbis_ch_layouts. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/dirac_arith: Only include x86/asm.h for ARCH_X86Andreas Rheinhardt2024-03-171-0/+4
| | | | Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avdevice/alldevices: Mark iterators as av_coldAndreas Rheinhardt2024-03-171-7/+8
| | | | | | Because they are. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avdevice/alldevices: Mark devices as hiddenAndreas Rheinhardt2024-03-171-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both GCC and Clang create code that inlines the loops in next_input() and next_output() at high optimization levels (presumably when there are not too many devices) and this code leads to the creation of .got entries: e7: 48 3b 3d 00 00 00 00 cmp 0x0(%rip),%rdi # ee <av_input_video_device_next+0xe> ea: R_X86_64_REX_GOTPCRELX ff_alsa_demuxer-0x4 ee: 74 43 je 133 <av_input_video_device_next+0x53> f0: 48 3b 3d 00 00 00 00 cmp 0x0(%rip),%rdi # f7 <av_input_video_device_next+0x17> f3: R_X86_64_REX_GOTPCRELX ff_fbdev_demuxer-0x4 f7: 74 41 je 13a <av_input_video_device_next+0x5a> These relocations can't be fixed up lateron when it is known that the symbols exist in the same DSO. This commit therefore marks these symbols as hidden, leading to code like this: f7: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # fe <av_input_video_device_next+0xe> fa: R_X86_64_PC32 ff_alsa_demuxer-0x4 fe: 48 39 c7 cmp %rax,%rdi 101: 74 55 je 158 <av_input_video_device_next+0x68> 103: 48 8d 05 00 00 00 00 lea 0x0(%rip),%rax # 10a <av_input_video_device_next+0x1a> 106: R_X86_64_PC32 ff_fbdev_demuxer-0x4 10a: 48 39 c7 cmp %rax,%rdi 10d: 74 50 je 15f <av_input_video_device_next+0x6f> (Note: It is actually strange that the compiler creates code that tries to read the addresses from the .got given that the addresses can be read directly from indev_list/outdev_list.) Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avcodec/ac3tab: Remove enum CustomChannelMapLocationAndreas Rheinhardt2024-03-171-16/+0
| | | | | | Forgotten in 4c8d9b1d0901b0fba0887e53463574913e8862c5. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avformat/iamf: Mark symbols as hiddenAndreas Rheinhardt2024-03-171-0/+3
| | | | | | | | | Avoids .got entries for ff_iamf_scalable_ch_layouts and ff_iamf_sound_system_map (whether they would have been created otherwise depends upon the compiler and compiler options). Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* fftools/ffmpeg_opt: Check before accessing union memberAndreas Rheinhardt2024-03-171-5/+7
| | | | | | | | | | | OptionDef.u is only an offset (i.e. its off member) iff OPT_FLAG_OFFSET is true. Otherwise, the pointer arithmetic can be undefined behaviour. UBSan warns about this (on 32bit arches): src/fftools/ffmpeg_opt.c:102:15: runtime error: pointer index expression with base 0xffa4db10 overflowed to 0x56059a50 This commit fixes this by checking for OPT_FLAG_OFFSET first. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avutil/x86util: Fix broken pre-SSE4.1 PMINSD emulationHenrik Gramner2024-03-172-9/+0
| | | | | | Fixes yadif-16 which allows FATE to pass. Broken since 2904db90458a1253e4aea6844ba9a59ac11923b6 (2017).
* doc/filters: Change rdiv (vf_convolution) documentation to reflect actual ↵Stone Chen2024-03-161-1/+1
| | | | | | | | | | | | behavior The documentation correctly states that the rdiv is a multiplier but incorrectly states the default behavior is to multiply by the sum of all matrix elements - it multiplies by 1/sum. This changes the documentation to match the code. Address trac #10889 Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/mxfdec: signal channel layouts using the new channel layout apiMarton Balint2024-03-161-76/+51
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avutil/channel_layout: add specific text versions for unknown and unused ↵Marton Balint2024-03-163-1/+18
| | | | | | channels Signed-off-by: Marton Balint <cus@passwd.hu>
* avutil/channel_layout: fix some (un)initialization issues in ↵Marton Balint2024-03-162-2/+11
| | | | | | | | | av_channel_layout_from_string() Also make initialization/uninitialization behaviour more explicit in the docs, and make sure we do not leak a channel map on error. Signed-off-by: Marton Balint <cus@passwd.hu>
* avutil/channel_layout: factorize parsing list of channel namesMarton Balint2024-03-162-118/+62
| | | | | | | Also make use of the av_channel_from_string() function to determine the channel id. This fixes some parse issues in av_channel_layout_from_string(). Signed-off-by: Marton Balint <cus@passwd.hu>
* avutil/tests/channel_layout: add some av_channel_from_string and ↵Marton Balint2024-03-162-0/+52
| | | | | | | | | av_channel_layout_from_string tests We lacked tests which supposed to fail, and there are some which should fail but right now it does not. This will be fixed in a later commit. Signed-off-by: Marton Balint <cus@passwd.hu>
* avutil/tests/channel_layout: make printing results part of the testsMarton Balint2024-03-162-273/+186
| | | | | | | | | | Deduplicates a lot of code. Some minor differences (mostly white space and inconsistent use of quotes) are expected in the fate tests, there was no point aiming for exactly the same formatting. Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/mov_chan: simplify channel layout canonicalizationMarton Balint2024-03-161-8/+4
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avutil/channel_layout: add AV_CHANNEL_LAYOUT_RETYPE_FLAG_CANONICALMarton Balint2024-03-164-1/+41
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/pcm: decrease target audio frame per sec to 10Marton Balint2024-03-1695-7912/+3153
| | | | | | | | | | This makes the wav and pcm demuxer demux bigger packets, which is more efficient. As a side effect of the bigger packets, audio durations can become less exact for command lines such as "ffmpeg -i $INPUT -c:a copy -t 1.0 $OUTPUT". Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/wavdec: use ff_pcm_default_packet_size for the default packet sizeMarton Balint2024-03-1616-638/+1487
| | | | Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/pcm: factorize and improve determining the default packet sizeMarton Balint2024-03-164-58/+76
| | | | | | | | | | | | | | - Remove the 1024 cap on the number of samples, for high sample rate audio it was suboptimal, calculate the low neighbour power of two for the number of samples (audio blocks) instead. - Make the function work correctly also for non-pcm codecs by using the stream bitrate to estimate the target packet size. A previous version of this patch used av_get_audio_frame_duration2() the estimate the desired packet size, but for some codecs that returns the duration of a single audio frame regardless of frame_bytes. - Fallback to 4096/block_align*block_align if bitrate is not available. Signed-off-by: Marton Balint <cus@passwd.hu>
* avformat/mpegtsenc: correct bitstream checkGyan Doshi2024-03-161-1/+1
| | | | | | | | | | | 8559cce3c3 made the bitstream check generic using a LUT. However, one of the comparisons which involves a bitwise AND and equality check is faulty due to operator precedence. First reported and analysed at https://github.com/streamlink/streamlink/issues/5876 Fixes #10908
* tools/target_dec_fuzzer: force experimental flag for decoders that need itJames Almer2024-03-151-0/+2
| | | | | | | Otherwise they will not even open. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
* avfilter/vsrc_ddagrab: clear all flags of buffer textureTimo Rothenpieler2024-03-161-0/+3
| | | | | | One some system, one some displays, for unknown reasons, these contain rather bad flags that cause all kinds of weird behaviour.
* fate/wmavoice: add missing aresample filter dependencyJames Almer2024-03-151-8/+8
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/vqf: add missing aresample filter dependencyJames Almer2024-03-151-1/+1
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/voice: add missing aresample filter dependencyJames Almer2024-03-151-2/+2
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/vorbis: add missing aresample filter dependencyJames Almer2024-03-151-3/+5
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/real: add missing aresample filter dependencyJames Almer2024-03-151-3/+3
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/pcm: add missing aresample filter dependencyJames Almer2024-03-151-5/+5
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/mpc: add missing aresample filter dependencyJames Almer2024-03-151-1/+1
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/mp3: add missing aresample filter dependencyJames Almer2024-03-151-1/+1
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/mov: add missing aresample filter dependencyJames Almer2024-03-151-5/+7
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/monkeysaudio: add missing aresample filter dependencyJames Almer2024-03-151-1/+1
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/lossless-audio: add missing aresample filter dependencyJames Almer2024-03-151-7/+7
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/libswresample: add missing aresample filter dependencyJames Almer2024-03-151-1/+1
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/iamf: add missing aresample filter dependencyJames Almer2024-03-151-7/+7
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/hlsenc: add missing aresample filter dependencyJames Almer2024-03-151-8/+8
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/gapless: add missing aresample filter dependencyJames Almer2024-03-151-39/+39
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/ffprobe: add missing aresample filter dependencyJames Almer2024-03-152-17/+17
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/ffmpeg: add missing aresample filter dependencyJames Almer2024-03-151-1/+1
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/filter-audio: add missing aresample filter dependencyJames Almer2024-03-151-22/+22
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/fate-container: add missing aresample filter dependencyJames Almer2024-03-151-2/+2
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/demux: add missing aresample filter dependencyJames Almer2024-03-151-2/+2
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* fate/audio: add missing aresample filter dependencyJames Almer2024-03-151-13/+15
| | | | Signed-off-by: James Almer <jamrial@gmail.com>