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 ?
Thanks
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Concerning the gods, I have no means of knowing whether they exist or not
or of what sort they may be, because of the obscurity of the subject, and
the brevity of human life -- Protagoras
signature.asc
Description: PGP signature
_______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
