Merge commit '35cf146a33ce41a1adb6c9bd5a0827eacb1b6bfc'
authorJames Almer <jamrial@gmail.com>
Mon, 23 Oct 2017 21:20:07 +0000 (18:20 -0300)
committerJames Almer <jamrial@gmail.com>
Mon, 23 Oct 2017 21:20:07 +0000 (18:20 -0300)
* commit '35cf146a33ce41a1adb6c9bd5a0827eacb1b6bfc':
  lavu: Drop deprecated av_dlog macro

Merged-by: James Almer <jamrial@gmail.com>
1  2 
libavutil/log.h
libavutil/version.h

diff --combined libavutil/log.h
@@@ -1,20 -1,20 +1,20 @@@
  /*
   * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * 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.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * 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 Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
  #include "attributes.h"
  #include "version.h"
  
 +typedef enum {
 +    AV_CLASS_CATEGORY_NA = 0,
 +    AV_CLASS_CATEGORY_INPUT,
 +    AV_CLASS_CATEGORY_OUTPUT,
 +    AV_CLASS_CATEGORY_MUXER,
 +    AV_CLASS_CATEGORY_DEMUXER,
 +    AV_CLASS_CATEGORY_ENCODER,
 +    AV_CLASS_CATEGORY_DECODER,
 +    AV_CLASS_CATEGORY_FILTER,
 +    AV_CLASS_CATEGORY_BITSTREAM_FILTER,
 +    AV_CLASS_CATEGORY_SWSCALER,
 +    AV_CLASS_CATEGORY_SWRESAMPLER,
 +    AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40,
 +    AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT,
 +    AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT,
 +    AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT,
 +    AV_CLASS_CATEGORY_DEVICE_OUTPUT,
 +    AV_CLASS_CATEGORY_DEVICE_INPUT,
 +    AV_CLASS_CATEGORY_NB  ///< not part of ABI/API
 +}AVClassCategory;
 +
 +#define AV_IS_INPUT_DEVICE(category) \
 +    (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT) || \
 +     ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT) || \
 +     ((category) == AV_CLASS_CATEGORY_DEVICE_INPUT))
 +
 +#define AV_IS_OUTPUT_DEVICE(category) \
 +    (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT) || \
 +     ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT) || \
 +     ((category) == AV_CLASS_CATEGORY_DEVICE_OUTPUT))
 +
 +struct AVOptionRanges;
 +
  /**
   * Describe the class of an AVClass context structure. That is an
   * arbitrary struct of which the first field is a pointer to an
@@@ -121,25 -88,6 +121,25 @@@ typedef struct AVClass 
       * child_class_next iterates over _all possible_ children.
       */
      const struct AVClass* (*child_class_next)(const struct AVClass *prev);
 +
 +    /**
 +     * Category used for visualization (like color)
 +     * This is only set if the category is equal for all objects using this class.
 +     * available since version (51 << 16 | 56 << 8 | 100)
 +     */
 +    AVClassCategory category;
 +
 +    /**
 +     * Callback to return the category.
 +     * available since version (51 << 16 | 59 << 8 | 100)
 +     */
 +    AVClassCategory (*get_category)(void* ctx);
 +
 +    /**
 +     * Callback to return the supported/allowed ranges.
 +     * available since version (52.12)
 +     */
 +    int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags);
  } AVClass;
  
  /**
   */
  #define AV_LOG_TRACE    56
  
 +#define AV_LOG_MAX_OFFSET (AV_LOG_TRACE - AV_LOG_QUIET)
 +
  /**
   * @}
   */
   * Requires 256color terminal support. Uses outside debugging is not
   * recommended.
   */
 -#define AV_LOG_C(x) (x << 8)
 +#define AV_LOG_C(x) ((x) << 8)
  
  /**
   * Send the specified message to the log if the level is less than or equal
   * @see av_log_set_callback
   *
   * @param avcl A pointer to an arbitrary struct of which the first field is a
 - *        pointer to an AVClass struct.
 + *        pointer to an AVClass struct or NULL if general log.
   * @param level The importance level of the message expressed using a @ref
   *        lavu_log_constants "Logging Constant".
   * @param fmt The format string (printf-compatible) that specifies how
@@@ -272,9 -218,6 +272,9 @@@ void av_log_set_level(int level)
  /**
   * Set the logging callback
   *
 + * @note The callback must be thread safe, even if the application does not use
 + *       threads itself as some codecs are multithreaded.
 + *
   * @see av_log_default_callback
   *
   * @param callback A logging function with a compatible signature.
@@@ -305,69 -248,17 +305,55 @@@ void av_log_default_callback(void *avcl
   * @return The AVClass class_name
   */
  const char* av_default_item_name(void* ctx);
 +AVClassCategory av_default_get_category(void *ptr);
 +
 +/**
 + * Format a line of log the same way as the default callback.
 + * @param line          buffer to receive the formatted line
 + * @param line_size     size of the buffer
 + * @param print_prefix  used to store whether the prefix must be printed;
 + *                      must point to a persistent integer initially set to 1
 + */
 +void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl,
 +                        char *line, int line_size, int *print_prefix);
 +
 +/**
 + * Format a line of log the same way as the default callback.
 + * @param line          buffer to receive the formatted line;
 + *                      may be NULL if line_size is 0
 + * @param line_size     size of the buffer; at most line_size-1 characters will
 + *                      be written to the buffer, plus one null terminator
 + * @param print_prefix  used to store whether the prefix must be printed;
 + *                      must point to a persistent integer initially set to 1
 + * @return Returns a negative value if an error occurred, otherwise returns
 + *         the number of characters that would have been written for a
 + *         sufficiently large buffer, not including the terminating null
 + *         character. If the return value is not less than line_size, it means
 + *         that the log message was truncated to fit the buffer.
 + */
 +int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl,
 +                        char *line, int line_size, int *print_prefix);
  
- #if FF_API_DLOG
- /**
-  * av_dlog macros
-  * @deprecated unused
-  * Useful to print debug messages that shouldn't get compiled in normally.
-  */
- #ifdef DEBUG
- #    define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__)
- #else
- #    define av_dlog(pctx, ...) do { if (0) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__); } while (0)
- #endif
- #endif /* FF_API_DLOG */
  /**
   * Skip repeated messages, this requires the user app to use av_log() instead of
   * (f)printf as the 2 would otherwise interfere and lead to
   * "Last message repeated x times" messages below (f)printf messages with some
   * bad luck.
   * Also to receive the last, "last repeated" line if any, the user app must
 - * call av_log(NULL, AV_LOG_QUIET, ""); at the end
 + * call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end
   */
  #define AV_LOG_SKIP_REPEATED 1
 +
 +/**
 + * Include the log severity in messages originating from codecs.
 + *
 + * Results in messages such as:
 + * [rawvideo @ 0xDEADBEEF] [error] encode did not produce valid pts
 + */
 +#define AV_LOG_PRINT_LEVEL 2
 +
  void av_log_set_flags(int arg);
 +int av_log_get_flags(void);
  
  /**
   * @}
diff --combined libavutil/version.h
@@@ -1,72 -1,47 +1,72 @@@
  /*
 - * This file is part of Libav.
 + * copyright (c) 2003 Fabrice Bellard
   *
 - * Libav is free software; you can redistribute it and/or
 + * 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.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * 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 Libav; if not, write to the Free Software
 + * 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"
  
  /**
 - * @defgroup version_utils Library Version Macros
 + * @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_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)
  
  /**
 - * @file
 - * @ingroup lavu
 - * Libavutil version macros
 + * @}
   */
  
  /**
   * @{
   */
  
 -#define LIBAVUTIL_VERSION_MAJOR 56
 -#define LIBAVUTIL_VERSION_MINOR  0
 -#define LIBAVUTIL_VERSION_MICRO  0
 +
 +#define LIBAVUTIL_VERSION_MAJOR  56
 +#define LIBAVUTIL_VERSION_MINOR   0
 +#define LIBAVUTIL_VERSION_MICRO 100
  
  #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
                                                 LIBAVUTIL_VERSION_MINOR, \
  #define LIBAVUTIL_IDENT         "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
  
  /**
 - * @}
 - *
 - * @defgroup depr_guards Deprecation guards
 + * @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.
 + *
   * @{
   */
  
- #ifndef FF_API_DLOG
- #define FF_API_DLOG                     (LIBAVUTIL_VERSION_MAJOR < 56)
- #endif
 -#ifndef FF_API_CRYPTO_CONTEXT
 -#define FF_API_CRYPTO_CONTEXT           (LIBAVUTIL_VERSION_MAJOR < 57)
 +#ifndef FF_API_VAAPI
 +#define FF_API_VAAPI                    (LIBAVUTIL_VERSION_MAJOR < 57)
 +#endif
 +#ifndef FF_API_FRAME_QP
 +#define FF_API_FRAME_QP                 (LIBAVUTIL_VERSION_MAJOR < 57)
  #endif
  #ifndef FF_API_PLUS1_MINUS1
  #define FF_API_PLUS1_MINUS1             (LIBAVUTIL_VERSION_MAJOR < 57)
  #ifndef FF_API_ERROR_FRAME
  #define FF_API_ERROR_FRAME              (LIBAVUTIL_VERSION_MAJOR < 57)
  #endif
 -#ifndef FF_API_VAAPI
 -#define FF_API_VAAPI                    (LIBAVUTIL_VERSION_MAJOR < 57)
 -#endif
  #ifndef FF_API_PKT_PTS
  #define FF_API_PKT_PTS                  (LIBAVUTIL_VERSION_MAJOR < 57)
  #endif
  
  /**
   * @}
 + * @}
   */
  
  #endif /* AVUTIL_VERSION_H */