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 57 82 #define LIBAVUTIL_VERSION_MINOR 28 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 #define FF_API_D2STR (LIBAVUTIL_VERSION_MAJOR < 58) 109 #define FF_API_DECLARE_ALIGNED (LIBAVUTIL_VERSION_MAJOR < 58) 110 #define FF_API_COLORSPACE_NAME (LIBAVUTIL_VERSION_MAJOR < 58) 111 #define FF_API_AV_MALLOCZ_ARRAY (LIBAVUTIL_VERSION_MAJOR < 58) 112 #define FF_API_FIFO_PEEK2 (LIBAVUTIL_VERSION_MAJOR < 58) 113 #define FF_API_FIFO_OLD_API (LIBAVUTIL_VERSION_MAJOR < 58) 114 #define FF_API_XVMC (LIBAVUTIL_VERSION_MAJOR < 58) 115 #define FF_API_OLD_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_MAJOR < 58) 116 #define FF_API_AV_FOPEN_UTF8 (LIBAVUTIL_VERSION_MAJOR < 58) 117 118 /** 119 * @} 120 * @} 121 */ 122 123 #endif /* AVUTIL_VERSION_H */ 124