annotate log.h @ 728:1fa3820b1a84 libavutil

ARM asm for AV_RN*() ARMv6 and later support unaligned loads and stores for single word/halfword but not double/multiple. GCC is ignorant of this and will always use bytewise accesses for unaligned data. Casting to an int32_t pointer is dangerous since a load/store double or multiple instruction might be used (this happens with some code in FFmpeg). Implementing the AV_[RW]* macros with inline asm using only supported instructions gives fast and safe unaligned accesses. ARM RVCT does the right thing with generic code. This gives an overall speedup of up to 10%.
author mru
date Sat, 18 Apr 2009 00:00:28 +0000
parents 0b26a018b46f
children 4f98a323598c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
1 /*
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
2 * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at>
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
3 *
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
4 * This file is part of FFmpeg.
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
5 *
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
8 * License as published by the Free Software Foundation; either
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
10 *
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
14 * Lesser General Public License for more details.
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
15 *
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 108
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
108
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
19 */
11be8e0d1344 Add official LGPL license headers to the files that were missing them.
diego
parents: 88
diff changeset
20
567
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 504
diff changeset
21 #ifndef AVUTIL_LOG_H
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 504
diff changeset
22 #define AVUTIL_LOG_H
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
23
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
24 #include <stdarg.h>
602
0b84593767d8 add the necessary include for LIBAV*_VERSION_*
aurel
parents: 567
diff changeset
25 #include "avutil.h"
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
26
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
27 /**
636
c04808220c83 spelling/grammar/consistency review part II
diego
parents: 602
diff changeset
28 * Describes the class of an AVClass context structure. That is an
499
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
29 * arbitrary struct of which the first field is a pointer to an
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
30 * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.).
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
31 */
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
32 typedef struct AVCLASS AVClass;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
33 struct AVCLASS {
499
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
34 /**
504
b66f7eda69d1 minor wording fix
diego
parents: 503
diff changeset
35 * The name of the class; usually it is the same name as the
503
1a16a6f15796 minor spelling fix
diego
parents: 499
diff changeset
36 * context structure type to which the AVClass is associated.
499
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
37 */
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
38 const char* class_name;
499
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
39
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
40 /**
636
c04808220c83 spelling/grammar/consistency review part II
diego
parents: 602
diff changeset
41 * A pointer to a function which returns the name of a context
c04808220c83 spelling/grammar/consistency review part II
diego
parents: 602
diff changeset
42 * instance \p ctx associated with the class.
499
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
43 */
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
44 const char* (*item_name)(void* ctx);
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
45
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
46 /**
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
47 * a pointer to the first option specified in the class if any or NULL
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
48 *
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
49 * @see av_set_default_options()
67ea650d4590 Enhance documentation for AVClass
benoit
parents: 494
diff changeset
50 */
144
daeb1d7eec41 make option field const
bcoudurier
parents: 116
diff changeset
51 const struct AVOption *option;
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
52 };
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
53
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
54 /* av_log API */
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
55
233
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
56 #define AV_LOG_QUIET -8
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
57
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
58 /**
636
c04808220c83 spelling/grammar/consistency review part II
diego
parents: 602
diff changeset
59 * Something went really wrong and we will crash now.
233
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
60 */
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
61 #define AV_LOG_PANIC 0
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
62
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
63 /**
637
683a6dbdd2b2 spelling/grammar/consistency review part III
diego
parents: 636
diff changeset
64 * Something went wrong and recovery is not possible.
683a6dbdd2b2 spelling/grammar/consistency review part III
diego
parents: 636
diff changeset
65 * For example, no header was found for a format which depends
683a6dbdd2b2 spelling/grammar/consistency review part III
diego
parents: 636
diff changeset
66 * on headers or an illegal combination of parameters is used.
233
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
67 */
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
68 #define AV_LOG_FATAL 8
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
69
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
70 /**
637
683a6dbdd2b2 spelling/grammar/consistency review part III
diego
parents: 636
diff changeset
71 * Something went wrong and cannot losslessly be recovered.
683a6dbdd2b2 spelling/grammar/consistency review part III
diego
parents: 636
diff changeset
72 * However, not all future data is affected.
233
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
73 */
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
74 #define AV_LOG_ERROR 16
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
75
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
76 /**
637
683a6dbdd2b2 spelling/grammar/consistency review part III
diego
parents: 636
diff changeset
77 * Something somehow does not look correct. This may or may not
683a6dbdd2b2 spelling/grammar/consistency review part III
diego
parents: 636
diff changeset
78 * lead to problems. An example would be the use of '-vstrict -2'.
233
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
79 */
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
80 #define AV_LOG_WARNING 24
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
81
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
82 #define AV_LOG_INFO 32
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
83 #define AV_LOG_VERBOSE 40
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
84
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
85 /**
636
c04808220c83 spelling/grammar/consistency review part II
diego
parents: 602
diff changeset
86 * Stuff which is only useful for libav* developers.
233
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
87 */
0e59652783b7 Increase the av_log() levels, and add some documentation for them
lucabe
parents: 163
diff changeset
88 #define AV_LOG_DEBUG 48
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
89
270
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
90 /**
636
c04808220c83 spelling/grammar/consistency review part II
diego
parents: 602
diff changeset
91 * Sends the specified message to the log if the level is less than or equal
c04808220c83 spelling/grammar/consistency review part II
diego
parents: 602
diff changeset
92 * to the current av_log_level. By default, all logging messages are sent to
270
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
93 * stderr. This behavior can be altered by setting a different av_vlog callback
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
94 * function.
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
95 *
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
96 * @param avcl A pointer to an arbitrary struct of which the first field is a
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
97 * pointer to an AVClass struct.
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
98 * @param level The importance level of the message, lower values signifying
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
99 * higher importance.
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
100 * @param fmt The format string (printf-compatible) that specifies how
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
101 * subsequent arguments are converted to output.
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
102 * @see av_vlog
55cd41bc50bf Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents: 233
diff changeset
103 */
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
104 #ifdef __GNUC__
494
4b4a3fb11c25 remove useless extern keyword.
benoit
parents: 408
diff changeset
105 void av_log(void*, int level, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4)));
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
106 #else
494
4b4a3fb11c25 remove useless extern keyword.
benoit
parents: 408
diff changeset
107 void av_log(void*, int level, const char *fmt, ...);
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
108 #endif
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
109
494
4b4a3fb11c25 remove useless extern keyword.
benoit
parents: 408
diff changeset
110 void av_vlog(void*, int level, const char *fmt, va_list);
4b4a3fb11c25 remove useless extern keyword.
benoit
parents: 408
diff changeset
111 int av_log_get_level(void);
4b4a3fb11c25 remove useless extern keyword.
benoit
parents: 408
diff changeset
112 void av_log_set_level(int);
4b4a3fb11c25 remove useless extern keyword.
benoit
parents: 408
diff changeset
113 void av_log_set_callback(void (*)(void*, int, const char*, va_list));
4b4a3fb11c25 remove useless extern keyword.
benoit
parents: 408
diff changeset
114 void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl);
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
115
567
bd4052d9050c Globally rename the header inclusion guard names.
stefano
parents: 504
diff changeset
116 #endif /* AVUTIL_LOG_H */