1 /* 2 * copyright (c) 2003 Fabrice Bellard 3 * 4 * This file is part of FFmpeg. 5 * 6 * FFmpeg is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * FFmpeg is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with FFmpeg; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 21 /** 22 * @file 23 * @ingroup lavu 24 * Libavutil version macros 25 */ 26 27 #ifndef AVUTIL_VERSION_H 28 #define AVUTIL_VERSION_H 29 30 #include "macros.h" 31 32 /** 33 * @addtogroup version_utils 34 * 35 * Useful to check and match library version in order to maintain 36 * backward compatibility. 37 * 38 * The FFmpeg libraries follow a versioning sheme very similar to 39 * Semantic Versioning (http://semver.org/) 40 * The difference is that the component called PATCH is called MICRO in FFmpeg 41 * and its value is reset to 100 instead of 0 to keep it above or equal to 100. 42 * Also we do not increase MICRO for every bugfix or change in git master. 43 * 44 * Prior to FFmpeg 3.2 point releases did not change any lib version number to 45 * avoid aliassing different git master checkouts. 46 * Starting with FFmpeg 3.2, the released library versions will occupy 47 * a separate MAJOR.MINOR that is not used on the master development branch. 48 * That is if we branch a release of master 55.10.123 we will bump to 55.11.100 49 * for the release and master will continue at 55.12.100 after it. Each new 50 * point release will then bump the MICRO improving the usefulness of the lib 51 * versions. 52 * 53 * @{ 54 */ 55 56 #define AV_VERSION_INT(a, b, c) ((a)<<16 | (b)<<8 | (c)) 57 #define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c 58 #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) 59 60 /** 61 * Extract version components from the full ::AV_VERSION_INT int as returned 62 * by functions like ::avformat_version() and ::avcodec_version() 63 */ 64 #define AV_VERSION_MAJOR(a) ((a) >> 16) 65 #define AV_VERSION_MINOR(a) (((a) & 0x00FF00) >> 8) 66 #define AV_VERSION_MICRO(a) ((a) & 0xFF) 67 68 /** 69 * @} 70 */ 71 72 /** 73 * @defgroup lavu_ver Version and Build diagnostics 74 * 75 * Macros and function useful to check at compiletime and at runtime 76 * which version of libavutil is in use. 77 * 78 * @{ 79 */ 80 81 #define LIBAVUTIL_VERSION_MAJOR 56 82 #define LIBAVUTIL_VERSION_MINOR 70 83 #define LIBAVUTIL_VERSION_MICRO 100 84 85 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ 86 LIBAVUTIL_VERSION_MINOR, \ 87 LIBAVUTIL_VERSION_MICRO) 88 #define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ 89 LIBAVUTIL_VERSION_MINOR, \ 90 LIBAVUTIL_VERSION_MICRO) 91 #define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT 92 93 #define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) 94 95 /** 96 * @defgroup lavu_depr_guards Deprecation Guards 97 * FF_API_* defines may be placed below to indicate public API that will be 98 * dropped at a future version bump. The defines themselves are not part of 99 * the public API and may change, break or disappear at any time. 100 * 101 * @note, when bumping the major version it is recommended to manually 102 * disable each FF_API_* in its own commit instead of disabling them all 103 * at once through the bump. This improves the git bisect-ability of the change. 104 * 105 * @{ 106 */ 107 108 #ifndef FF_API_VAAPI 109 #define FF_API_VAAPI (LIBAVUTIL_VERSION_MAJOR < 57) 110 #endif 111 #ifndef FF_API_FRAME_QP 112 #define FF_API_FRAME_QP (LIBAVUTIL_VERSION_MAJOR < 57) 113 #endif 114 #ifndef FF_API_PLUS1_MINUS1 115 #define FF_API_PLUS1_MINUS1 (LIBAVUTIL_VERSION_MAJOR < 57) 116 #endif 117 #ifndef FF_API_ERROR_FRAME 118 #define FF_API_ERROR_FRAME (LIBAVUTIL_VERSION_MAJOR < 57) 119 #endif 120 #ifndef FF_API_PKT_PTS 121 #define FF_API_PKT_PTS (LIBAVUTIL_VERSION_MAJOR < 57) 122 #endif 123 #ifndef FF_API_CRYPTO_SIZE_T 124 #define FF_API_CRYPTO_SIZE_T (LIBAVUTIL_VERSION_MAJOR < 57) 125 #endif 126 #ifndef FF_API_FRAME_GET_SET 127 #define FF_API_FRAME_GET_SET (LIBAVUTIL_VERSION_MAJOR < 57) 128 #endif 129 #ifndef FF_API_PSEUDOPAL 130 #define FF_API_PSEUDOPAL (LIBAVUTIL_VERSION_MAJOR < 57) 131 #endif 132 #ifndef FF_API_CHILD_CLASS_NEXT 133 #define FF_API_CHILD_CLASS_NEXT (LIBAVUTIL_VERSION_MAJOR < 57) 134 #endif 135 #ifndef FF_API_BUFFER_SIZE_T 136 #define FF_API_BUFFER_SIZE_T (LIBAVUTIL_VERSION_MAJOR < 57) 137 #endif 138 #ifndef FF_API_D2STR 139 #define FF_API_D2STR (LIBAVUTIL_VERSION_MAJOR < 58) 140 #endif 141 #ifndef FF_API_DECLARE_ALIGNED 142 #define FF_API_DECLARE_ALIGNED (LIBAVUTIL_VERSION_MAJOR < 58) 143 #endif 144 145 /** 146 * @} 147 * @} 148 */ 149 150 #endif /* AVUTIL_VERSION_H */ 151