On Tue, 26 Apr 2011 00:16:54 +0200, Stefano Sabatini <stefano.sabatini-l...@poste.it> wrote: > On date Monday 2011-04-25 01:46:48 +0200, Stefano Sabatini encoded: > > On date Sunday 2011-04-24 18:43:41 +0200, Stefano Sabatini encoded: > > > On date Saturday 2011-04-23 17:28:30 +0200, Stefano Sabatini encoded: > > > > On date Saturday 2011-04-23 13:54:52 +0200, Nicolas George encoded: > > > > > Le quartidi 4 floréal, an CCXIX, Stefano Sabatini a écrit : > > > > > > This breaks ABI as it redefines the previous values (since the first > > > > > > symbol will have a value of 0 rather than 1, consistent with enum > > > > > > definitions and allows the AV_*_NB trick). > > > > > > > > > > Couldn't you add some sort of AV_PICTURE_TYPE_UNSPEC =0 to preserve > > > > > the > > > > > values? > > > > > > > > Rethinking about it, I dropped the redefinition (which were causing > > > > regressions, since the literal pict_type values are used in MPEG > > > > video) and the *_NB trick. > > > > > > > > No ABI breaks anymore. > > > > > > Patch updated with removal guards added. > > > > ...and with APIchanges entry (already approved on the FFmpeg side, > > waiting on the Libav side, as for me I'd prefer to have it applied in > > both). > > Updated with lavfi micro bump. > From 6b99d1fffbe56ac21a1095883fa41cfb61470be5 Mon Sep 17 00:00:00 2001 > From: Stefano Sabatini <stefano.sabatini-l...@poste.it> > Date: Sat, 23 Apr 2011 13:38:50 +0200 > Subject: [PATCH] lavc: deprecate FF_*_TYPE macros in favor of > AV_PICTURE_TYPE_* enums > > Also deprecate av_get_pict_type_char() in favor of > av_get_picture_type_char(). > > The new enum and av_get_picture_type_char() are defined in libavutil. > This allows the use in libavfilter without the need to link against > libavcodec. > > Signed-off-by: Stefano Sabatini <stefano.sabatini-l...@poste.it> > --- > doc/APIchanges | 5 +++++ > libavcodec/avcodec.h | 24 +++++++++++++++--------- > libavcodec/utils.c | 13 +++---------- > libavcodec/version.h | 5 ++++- > libavfilter/avfilter.h | 4 ++-- > libavutil/avutil.h | 21 ++++++++++++++++++++- > libavutil/utils.c | 14 ++++++++++++++ > 7 files changed, 63 insertions(+), 23 deletions(-) > > diff --git a/doc/APIchanges b/doc/APIchanges > index 8b1130b..af805bd 100644 > --- a/doc/APIchanges > +++ b/doc/APIchanges > @@ -13,6 +13,11 @@ libavutil: 2011-04-18 > > API changes, most recent first: > > +2011-04-XX - XXXXXXX - lavu 51.1.0 - avutil.h > + Add AVPictureType enum and av_get_picture_type_char(), deprecate > + FF_*_TYPE defines and av_get_pict_type_char() defined in > + libavcodec/avcodec.h. > + > 2011-04-21 - 94f7451 - lavc 53.1.0 - avcodec.h > Add CODEC_CAP_SLICE_THREADS for codecs supporting sliced threading. > > diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h > index 58a38fa..6835102 100644 > --- a/libavcodec/avcodec.h > +++ b/libavcodec/avcodec.h > @@ -766,7 +766,7 @@ typedef struct AVPanScan{ > * - encoding: Set by libavcodec. for coded_picture (and set by user for > input).\ > * - decoding: Set by libavcodec.\ > */\ > - int pict_type;\ > + enum AVPictureType pict_type;\ > \ > /**\ > * presentation timestamp in time_base units (time when frame should be > shown to user)\ > @@ -1016,14 +1016,16 @@ typedef struct AVPanScan{ > #define FF_BUFFER_TYPE_SHARED 4 ///< Buffer from somewhere else; don't > deallocate image (data/base), all other tables are not shared. > #define FF_BUFFER_TYPE_COPY 8 ///< Just a (modified) copy of some other > buffer, don't deallocate anything. > > - > -#define FF_I_TYPE 1 ///< Intra > -#define FF_P_TYPE 2 ///< Predicted > -#define FF_B_TYPE 3 ///< Bi-dir predicted > -#define FF_S_TYPE 4 ///< S(GMC)-VOP MPEG4 > -#define FF_SI_TYPE 5 ///< Switching Intra > -#define FF_SP_TYPE 6 ///< Switching Predicted > -#define FF_BI_TYPE 7 > +#if FF_API_OLD_FF_PICT_TYPES > +/* DEPRECATED, directly use the AV_PICTURE_TYPE_* enum values */ > +#define FF_I_TYPE AV_PICTURE_TYPE_I ///< Intra > +#define FF_P_TYPE AV_PICTURE_TYPE_P ///< Predicted > +#define FF_B_TYPE AV_PICTURE_TYPE_B ///< Bi-dir predicted > +#define FF_S_TYPE AV_PICTURE_TYPE_S ///< S(GMC)-VOP MPEG4 > +#define FF_SI_TYPE AV_PICTURE_TYPE_SI ///< Switching Intra > +#define FF_SP_TYPE AV_PICTURE_TYPE_SP ///< Switching Predicted > +#define FF_BI_TYPE AV_PICTURE_TYPE_BI > +#endif > > #define FF_BUFFER_HINTS_VALID 0x01 // Buffer hints value is meaningful > (if 0 ignore). > #define FF_BUFFER_HINTS_READABLE 0x02 // Codec will read from buffer. > @@ -3866,13 +3868,17 @@ void avcodec_default_free_buffers(AVCodecContext *s); > > /* misc useful functions */ > > +#if FF_API_OLD_FF_PICT_TYPES > /** > * Return a single letter to describe the given picture type pict_type. > * > * @param[in] pict_type the picture type > * @return A single character representing the picture type. > + * @deprecated Use av_get_picture_type_char() instead. > */ > +attribute_deprecated > char av_get_pict_type_char(int pict_type); > +#endif > > /** > * Return codec bits per sample. > diff --git a/libavcodec/utils.c b/libavcodec/utils.c > index d6b71b4..6cdbb43 100644 > --- a/libavcodec/utils.c > +++ b/libavcodec/utils.c > @@ -1105,18 +1105,11 @@ void avcodec_default_free_buffers(AVCodecContext *s){ > s->internal_buffer_count=0; > } > > +#if FF_API_OLD_FF_PICT_TYPES > char av_get_pict_type_char(int pict_type){ > - switch(pict_type){ > - case FF_I_TYPE: return 'I'; > - case FF_P_TYPE: return 'P'; > - case FF_B_TYPE: return 'B'; > - case FF_S_TYPE: return 'S'; > - case FF_SI_TYPE:return 'i'; > - case FF_SP_TYPE:return 'p'; > - case FF_BI_TYPE:return 'b'; > - default: return '?'; > - } > + return av_get_picture_type_char(pict_type); > } > +#endif > > int av_get_bits_per_sample(enum CodecID codec_id){ > switch(codec_id){ > diff --git a/libavcodec/version.h b/libavcodec/version.h > index e5ca102..ad49a27 100644 > --- a/libavcodec/version.h > +++ b/libavcodec/version.h > @@ -22,7 +22,7 @@ > > #define LIBAVCODEC_VERSION_MAJOR 53 > #define LIBAVCODEC_VERSION_MINOR 1 > -#define LIBAVCODEC_VERSION_MICRO 0 > +#define LIBAVCODEC_VERSION_MICRO 1 > > #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ > LIBAVCODEC_VERSION_MINOR, \ > @@ -68,5 +68,8 @@ > #ifndef FF_API_THREAD_INIT > #define FF_API_THREAD_INIT (LIBAVCODEC_VERSION_MAJOR < 54) > #endif > +#ifndef FF_API_OLD_FF_PICT_TYPES > +#define FF_API_OLD_FF_PICT_TYPES (LIBAVCODEC_VERSION_MAJOR < 54) > +#endif > > #endif /* AVCODEC_VERSION_H */ > diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h > index 6525f57..1d6a748 100644 > --- a/libavfilter/avfilter.h > +++ b/libavfilter/avfilter.h > @@ -27,7 +27,7 @@ > > #define LIBAVFILTER_VERSION_MAJOR 2 > #define LIBAVFILTER_VERSION_MINOR 0 > -#define LIBAVFILTER_VERSION_MICRO 0 > +#define LIBAVFILTER_VERSION_MICRO 1 > > #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ > LIBAVFILTER_VERSION_MINOR, \ > @@ -115,7 +115,7 @@ typedef struct AVFilterBufferRefVideoProps { > AVRational pixel_aspect; ///< pixel aspect ratio > int interlaced; ///< is frame interlaced > int top_field_first; ///< field order > - int pict_type; ///< Picture type of the frame > + enum AVPictureType pict_type; ///< picture type of the frame > int key_frame; ///< 1 -> keyframe, 0-> not > } AVFilterBufferRefVideoProps; > > diff --git a/libavutil/avutil.h b/libavutil/avutil.h > index 307a585..b0462f1 100644 > --- a/libavutil/avutil.h > +++ b/libavutil/avutil.h > @@ -40,7 +40,7 @@ > #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) > > #define LIBAVUTIL_VERSION_MAJOR 51 > -#define LIBAVUTIL_VERSION_MINOR 0 > +#define LIBAVUTIL_VERSION_MINOR 1 > #define LIBAVUTIL_VERSION_MICRO 0 > > #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ > @@ -97,6 +97,25 @@ enum AVMediaType { > #define AV_TIME_BASE 1000000 > #define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE} > > +enum AVPictureType { > + AV_PICTURE_TYPE_I = 1, ///< Intra > + AV_PICTURE_TYPE_P, ///< Predicted > + AV_PICTURE_TYPE_B, ///< Bi-dir predicted > + AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG4 > + AV_PICTURE_TYPE_SI, ///< Switching Intra > + AV_PICTURE_TYPE_SP, ///< Switching Predicted > + AV_PICTURE_TYPE_BI, ///< BI type > +}; > + > +/** > + * Return a single letter to describe the given picture type > + * pict_type. > + * > + * @param[in] pict_type the picture type @return a single character > + * representing the picture type, '?' if pict_type is unknown > + */ > +char av_get_picture_type_char(enum AVPictureType pict_type); > + > #include "common.h" > #include "error.h" > #include "mathematics.h" > diff --git a/libavutil/utils.c b/libavutil/utils.c > index 8a1d32e..c77a060 100644 > --- a/libavutil/utils.c > +++ b/libavutil/utils.c > @@ -39,3 +39,17 @@ const char *avutil_license(void) > #define LICENSE_PREFIX "libavutil license: " > return LICENSE_PREFIX FFMPEG_LICENSE + sizeof(LICENSE_PREFIX) - 1; > } > + > +char av_get_picture_type_char(enum AVPictureType pict_type) > +{ > + switch (pict_type) { > + case AV_PICTURE_TYPE_I: return 'I'; > + case AV_PICTURE_TYPE_P: return 'P'; > + case AV_PICTURE_TYPE_B: return 'B'; > + case AV_PICTURE_TYPE_S: return 'S'; > + case AV_PICTURE_TYPE_SI: return 'i'; > + case AV_PICTURE_TYPE_SP: return 'p'; > + case AV_PICTURE_TYPE_BI: return 'b'; > + default: return '?'; > + } > +} > -- > 1.7.2.3
Pushed. -- Anton Khirnov _______________________________________________ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel