misc/winutils/include/libavutil/log.h
changeset 7813 7ac83d79b897
equal deleted inserted replaced
7812:00696c1450da 7813:7ac83d79b897
       
     1 /*
       
     2  * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
       
     3  *
       
     4  * This file is part of Libav.
       
     5  *
       
     6  * Libav 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  * Libav 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 Libav; if not, write to the Free Software
       
    18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
       
    19  */
       
    20 
       
    21 #ifndef AVUTIL_LOG_H
       
    22 #define AVUTIL_LOG_H
       
    23 
       
    24 #include <stdarg.h>
       
    25 #include "avutil.h"
       
    26 #include "attributes.h"
       
    27 
       
    28 /**
       
    29  * Describe the class of an AVClass context structure. That is an
       
    30  * arbitrary struct of which the first field is a pointer to an
       
    31  * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.).
       
    32  */
       
    33 typedef struct AVClass {
       
    34     /**
       
    35      * The name of the class; usually it is the same name as the
       
    36      * context structure type to which the AVClass is associated.
       
    37      */
       
    38     const char* class_name;
       
    39 
       
    40     /**
       
    41      * A pointer to a function which returns the name of a context
       
    42      * instance ctx associated with the class.
       
    43      */
       
    44     const char* (*item_name)(void* ctx);
       
    45 
       
    46     /**
       
    47      * a pointer to the first option specified in the class if any or NULL
       
    48      *
       
    49      * @see av_set_default_options()
       
    50      */
       
    51     const struct AVOption *option;
       
    52 
       
    53     /**
       
    54      * LIBAVUTIL_VERSION with which this structure was created.
       
    55      * This is used to allow fields to be added without requiring major
       
    56      * version bumps everywhere.
       
    57      */
       
    58 
       
    59     int version;
       
    60 
       
    61     /**
       
    62      * Offset in the structure where log_level_offset is stored.
       
    63      * 0 means there is no such variable
       
    64      */
       
    65     int log_level_offset_offset;
       
    66 
       
    67     /**
       
    68      * Offset in the structure where a pointer to the parent context for loging is stored.
       
    69      * for example a decoder that uses eval.c could pass its AVCodecContext to eval as such
       
    70      * parent context. And a av_log() implementation could then display the parent context
       
    71      * can be NULL of course
       
    72      */
       
    73     int parent_log_context_offset;
       
    74 
       
    75     /**
       
    76      * Return next AVOptions-enabled child or NULL
       
    77      */
       
    78     void* (*child_next)(void *obj, void *prev);
       
    79 
       
    80     /**
       
    81      * Return an AVClass corresponding to next potential
       
    82      * AVOptions-enabled child.
       
    83      *
       
    84      * The difference between child_next and this is that
       
    85      * child_next iterates over _already existing_ objects, while
       
    86      * child_class_next iterates over _all possible_ children.
       
    87      */
       
    88     const struct AVClass* (*child_class_next)(const struct AVClass *prev);
       
    89 } AVClass;
       
    90 
       
    91 /* av_log API */
       
    92 
       
    93 #define AV_LOG_QUIET    -8
       
    94 
       
    95 /**
       
    96  * Something went really wrong and we will crash now.
       
    97  */
       
    98 #define AV_LOG_PANIC     0
       
    99 
       
   100 /**
       
   101  * Something went wrong and recovery is not possible.
       
   102  * For example, no header was found for a format which depends
       
   103  * on headers or an illegal combination of parameters is used.
       
   104  */
       
   105 #define AV_LOG_FATAL     8
       
   106 
       
   107 /**
       
   108  * Something went wrong and cannot losslessly be recovered.
       
   109  * However, not all future data is affected.
       
   110  */
       
   111 #define AV_LOG_ERROR    16
       
   112 
       
   113 /**
       
   114  * Something somehow does not look correct. This may or may not
       
   115  * lead to problems. An example would be the use of '-vstrict -2'.
       
   116  */
       
   117 #define AV_LOG_WARNING  24
       
   118 
       
   119 #define AV_LOG_INFO     32
       
   120 #define AV_LOG_VERBOSE  40
       
   121 
       
   122 /**
       
   123  * Stuff which is only useful for libav* developers.
       
   124  */
       
   125 #define AV_LOG_DEBUG    48
       
   126 
       
   127 /**
       
   128  * Send the specified message to the log if the level is less than or equal
       
   129  * to the current av_log_level. By default, all logging messages are sent to
       
   130  * stderr. This behavior can be altered by setting a different av_vlog callback
       
   131  * function.
       
   132  *
       
   133  * @param avcl A pointer to an arbitrary struct of which the first field is a
       
   134  * pointer to an AVClass struct.
       
   135  * @param level The importance level of the message, lower values signifying
       
   136  * higher importance.
       
   137  * @param fmt The format string (printf-compatible) that specifies how
       
   138  * subsequent arguments are converted to output.
       
   139  * @see av_vlog
       
   140  */
       
   141 void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4);
       
   142 
       
   143 void av_vlog(void *avcl, int level, const char *fmt, va_list);
       
   144 int av_log_get_level(void);
       
   145 void av_log_set_level(int);
       
   146 void av_log_set_callback(void (*)(void*, int, const char*, va_list));
       
   147 void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl);
       
   148 const char* av_default_item_name(void* ctx);
       
   149 
       
   150 /**
       
   151  * av_dlog macros
       
   152  * Useful to print debug messages that shouldn't get compiled in normally.
       
   153  */
       
   154 
       
   155 #ifdef DEBUG
       
   156 #    define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__)
       
   157 #else
       
   158 #    define av_dlog(pctx, ...)
       
   159 #endif
       
   160 
       
   161 /**
       
   162  * Skip repeated messages, this requires the user app to use av_log() instead of
       
   163  * (f)printf as the 2 would otherwise interfere and lead to
       
   164  * "Last message repeated x times" messages below (f)printf messages with some
       
   165  * bad luck.
       
   166  * Also to receive the last, "last repeated" line if any, the user app must
       
   167  * call av_log(NULL, AV_LOG_QUIET, ""); at the end
       
   168  */
       
   169 #define AV_LOG_SKIP_REPEATED 1
       
   170 void av_log_set_flags(int arg);
       
   171 
       
   172 #endif /* AVUTIL_LOG_H */