Michael Niedermayer: > On Sun, Jul 05, 2020 at 12:54:53AM +0200, Jan Engelhardt wrote: >> Greetings. >> >> >> Between ffmpeg-4.2.3 and ffmpeg-4.3, struct AVCodecContext, >> publicly exposed through /usr/include, has been changed thus: >> >> --- avcodec.h 2020-06-11 11:45:16.000000000 +0200 >> +++ avcodec.h 2020-07-01 03:45:24.000000000 +0200 >> @@ -3370,6 +2334,24 @@ typedef struct AVCodecContext { >> * - encoding: unused >> */ >> int discard_damaged_percentage; >> + >> + /** >> + * The number of samples per frame to maximally accept. >> + * >> + * - decoding: set by user >> + * - encoding: set by user >> + */ >> + int64_t max_samples; >> + >> + /** >> + * Bit set of AV_CODEC_EXPORT_DATA_* flags, which affects the kind of >> + * metadata exported in frame, packet, or coded stream side data by >> + * decoders and encoders. >> + * >> + * - decoding: set by user >> + * - encoding: set by user >> + */ >> + int export_side_data; >> } AVCodecContext; >> >> #if FF_API_CODEC_GET_SET >> >> >> Second, struct AVDCT, which is publicly exposed through /usr/include, has >> been >> changed: >> >> --- avdct.h 2020-06-11 11:45:16.000000000 +0200 >> +++ avdct.h 2020-07-01 03:45:24.000000000 +0200 >> @@ -67,6 +67,10 @@ typedef struct AVDCT { >> ptrdiff_t line_size); >> >> int bits_per_sample; >> + >> + void (*get_pixels_unaligned)(int16_t *block /* align 16 */, >> + const uint8_t *pixels, >> + ptrdiff_t line_size); >> } AVDCT; >> >> /** >> >> >> The abidiff(1) utility confirms this situation such: >> >> $ abidiff >> b42/usr/lib/debug/usr/lib64/libavcodec.so.58.54.100-4.2.3-1.1.x86_64.debug \ >> >> b43/usr/lib/debug/usr/lib64/libavcodec.so.58.91.100-4.3-136.2.x86_64.debug >> >> [...] in pointed to type 'struct AVCodecContext' at avcodec.h:526:1: >> type size changed from 8448 to 8576 (in bits) >> [...] >> underlying type 'struct AVDCT' at avdct.h:29:1 changed: >> type size changed from 896 to 960 (in bits) >> >> >> These struct changes constitute an ABI break, and ABI breaks require SO >> version >> bumps, but which was not done for 4.3. This is bad. > > Quoting the AVCodecContext documentation from FFmpeg 4.2.3 > > /** > * main external API structure. > * New fields can be added to the end with minor version bumps. > * Removal, reordering and changes to existing fields require a major > * version bump. > * You can use AVOptions (av_opt* / av_set/get*()) to access these fields > from user > * applications. > * The name string for AVOptions options matches the associated command line > * parameter name and can be found in libavcodec/options_table.h > * The AVOption/command line parameter names differ in some cases from the C > * structure field names for historic reasons or brevity. > * sizeof(AVCodecContext) must not be used outside libav*. > */ > typedef struct AVCodecContext { > > >> >> A user has summarily reported crashes through {not a proper bug reporting >> medium} already. >> https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-4 > > have you identified what exactly causes the crashes ? > This is the user report:
"Unfortunately, this version is binary incompatible to 4.2.3 in some aspects. Chromium crashes when accessing some sites, e.g. https://www.xometry.com/ and push the quote button. Blender cannot export PNG files anymore." This crash is due to Chromium using av_max_alloc in an undocumented way; more exactly, the Chromium FFmpeg fork changes the allocation functions so that if max_alloc_size is zero, the limit is completely disabled; and of course it also sets the limit to zero. Up until 4.2, this worked with a normal FFmpeg, because FFmpeg didn't max_alloc_size as is, but instead max_alloc_size - 32. But since 731c77589841c02e014aa7f8285dcfc8b20f2ee5 this is no longer so. The relevant chromium bug is at https://bugs.chromium.org/p/chromium/issues/detail?id=1095962 I don't know what the issue with Blender is. - Andreas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".