|
|
|
/*
|
|
|
|
* copyright (c) 2003 Fabrice Bellard
|
|
|
|
*
|
|
|
|
* This file is part of FFmpeg.
|
|
|
|
*
|
|
|
|
* FFmpeg is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* FFmpeg is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with FFmpeg; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @file
|
|
|
|
* @ingroup lavu
|
|
|
|
* Libavutil version macros
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef AVUTIL_VERSION_H
|
|
|
|
#define AVUTIL_VERSION_H
|
|
|
|
|
|
|
|
#include "macros.h"
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @addtogroup version_utils
|
|
|
|
*
|
|
|
|
* Useful to check and match library version in order to maintain
|
|
|
|
* backward compatibility.
|
|
|
|
*
|
|
|
|
* The FFmpeg libraries follow a versioning sheme very similar to
|
|
|
|
* Semantic Versioning (http://semver.org/)
|
|
|
|
* The difference is that the component called PATCH is called MICRO in FFmpeg
|
|
|
|
* and its value is reset to 100 instead of 0 to keep it above or equal to 100.
|
|
|
|
* Also we do not increase MICRO for every bugfix or change in git master.
|
|
|
|
*
|
|
|
|
* Prior to FFmpeg 3.2 point releases did not change any lib version number to
|
|
|
|
* avoid aliassing different git master checkouts.
|
|
|
|
* Starting with FFmpeg 3.2, the released library versions will occupy
|
|
|
|
* a separate MAJOR.MINOR that is not used on the master development branch.
|
|
|
|
* That is if we branch a release of master 55.10.123 we will bump to 55.11.100
|
|
|
|
* for the release and master will continue at 55.12.100 after it. Each new
|
|
|
|
* point release will then bump the MICRO improving the usefulness of the lib
|
|
|
|
* versions.
|
|
|
|
*
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define AV_VERSION_INT(a, b, c) ((a)<<16 | (b)<<8 | (c))
|
|
|
|
#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c
|
|
|
|
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Extract version components from the full ::AV_VERSION_INT int as returned
|
|
|
|
* by functions like ::avformat_version() and ::avcodec_version()
|
|
|
|
*/
|
|
|
|
#define AV_VERSION_MAJOR(a) ((a) >> 16)
|
|
|
|
#define AV_VERSION_MINOR(a) (((a) & 0x00FF00) >> 8)
|
|
|
|
#define AV_VERSION_MICRO(a) ((a) & 0xFF)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @defgroup lavu_ver Version and Build diagnostics
|
|
|
|
*
|
|
|
|
* Macros and function useful to check at compiletime and at runtime
|
|
|
|
* which version of libavutil is in use.
|
|
|
|
*
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define LIBAVUTIL_VERSION_MAJOR 58
|
|
|
|
#define LIBAVUTIL_VERSION_MINOR 21
|
|
|
|
#define LIBAVUTIL_VERSION_MICRO 100
|
|
|
|
|
|
|
|
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
|
|
|
|
LIBAVUTIL_VERSION_MINOR, \
|
|
|
|
LIBAVUTIL_VERSION_MICRO)
|
|
|
|
#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \
|
|
|
|
LIBAVUTIL_VERSION_MINOR, \
|
|
|
|
LIBAVUTIL_VERSION_MICRO)
|
|
|
|
#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT
|
|
|
|
|
|
|
|
#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @defgroup lavu_depr_guards Deprecation Guards
|
|
|
|
* FF_API_* defines may be placed below to indicate public API that will be
|
|
|
|
* dropped at a future version bump. The defines themselves are not part of
|
|
|
|
* the public API and may change, break or disappear at any time.
|
|
|
|
*
|
|
|
|
* @note, when bumping the major version it is recommended to manually
|
|
|
|
* disable each FF_API_* in its own commit instead of disabling them all
|
|
|
|
* at once through the bump. This improves the git bisect-ability of the change.
|
|
|
|
*
|
|
|
|
* @{
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define FF_API_FIFO_PEEK2 (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_FIFO_OLD_API (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_XVMC (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_OLD_CHANNEL_LAYOUT (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_AV_FOPEN_UTF8 (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_PKT_DURATION (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_REORDERED_OPAQUE (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_FRAME_PICTURE_NUMBER (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_HDR_VIVID_THREE_SPLINE (LIBAVUTIL_VERSION_MAJOR < 59)
|
lavu/frame: deprecate AVFrame.pkt_{pos,size}
These fields are supposed to store information about the packet the
frame was decoded from, specifically the byte offset it was stored at
and its size.
However,
- the fields are highly ad-hoc - there is no strong reason why
specifically those (and not any other) packet properties should have a
dedicated field in AVFrame; unlike e.g. the timestamps, there is no
fundamental link between coded packet offset/size and decoded frames
- they only make sense for frames produced by decoding demuxed packets,
and even then it is not always the case that the encoded data was
stored in the file as a contiguous sequence of bytes (in order for pos
to be well-defined)
- pkt_pos was added without much explanation, apparently to allow
passthrough of this information through lavfi in order to handle byte
seeking in ffplay. That is now implemented using arbitrary user data
passthrough in AVFrame.opaque_ref.
- several filters use pkt_pos as a variable available to user-supplied
expressions, but there seems to be no established motivation for using them.
- pkt_size was added for use in ffprobe, but that too is now handled
without using this field. Additonally, the values of this field
produced by libavcodec are flawed, as described in the previous
ffprobe conversion commit.
In summary - these fields are ill-defined and insufficiently motivated,
so deprecate them.
2 years ago
|
|
|
#define FF_API_FRAME_PKT (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_INTERLACED_FRAME (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_FRAME_KEY (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_PALETTE_HAS_CHANGED (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
#define FF_API_VULKAN_CONTIGUOUS_MEMORY (LIBAVUTIL_VERSION_MAJOR < 59)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @}
|
|
|
|
* @}
|
|
|
|
*/
|
|
|
|
|
|
|
|
#endif /* AVUTIL_VERSION_H */
|