[FFmpeg-devel] ABI break in 4.3

Jan Engelhardt jengelh at inai.de
Sun Jul 5 01:54:53 EEST 2020


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.

A user has summarily reported crashes through {not a proper bug reporting
medium} already.
https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-4


More information about the ffmpeg-devel mailing list