From patchwork Sat Jul 4 22:54:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Engelhardt X-Patchwork-Id: 20811 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 0948C4485AD for ; Sun, 5 Jul 2020 01:55:00 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DAC3868AE29; Sun, 5 Jul 2020 01:54:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from a3.inai.de (a3.inai.de [88.198.85.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0792A6804B7 for ; Sun, 5 Jul 2020 01:54:54 +0300 (EEST) Received: by a3.inai.de (Postfix, from userid 25121) id 9FA9A5876F051; Sun, 5 Jul 2020 00:54:53 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by a3.inai.de (Postfix) with ESMTP id 9C67060C62E7D for ; Sun, 5 Jul 2020 00:54:53 +0200 (CEST) Date: Sun, 5 Jul 2020 00:54:53 +0200 (CEST) From: Jan Engelhardt To: ffmpeg-devel@ffmpeg.org Message-ID: User-Agent: Alpine 2.22 (LSU 394 2020-01-19) MIME-Version: 1.0 Subject: [FFmpeg-devel] ABI break in 4.3 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Greetings. Between ffmpeg-4.2.3 and ffmpeg-4.3, struct AVCodecContext, publicly exposed through /usr/include, has been changed thus: 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 --- 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; /**