Mercurial > libavutil.hg
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 |
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 | 21 #ifndef AVUTIL_LOG_H |
22 #define AVUTIL_LOG_H | |
81 | 23 |
24 #include <stdarg.h> | |
602 | 25 #include "avutil.h" |
81 | 26 |
27 /** | |
636 | 28 * Describes the class of an AVClass context structure. That is an |
499 | 29 * arbitrary struct of which the first field is a pointer to an |
30 * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). | |
81 | 31 */ |
32 typedef struct AVCLASS AVClass; | |
33 struct AVCLASS { | |
499 | 34 /** |
504 | 35 * The name of the class; usually it is the same name as the |
503 | 36 * context structure type to which the AVClass is associated. |
499 | 37 */ |
81 | 38 const char* class_name; |
499 | 39 |
40 /** | |
636 | 41 * A pointer to a function which returns the name of a context |
42 * instance \p ctx associated with the class. | |
499 | 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 */ | |
144 | 51 const struct AVOption *option; |
81 | 52 }; |
53 | |
54 /* av_log API */ | |
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 | 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 | 64 * Something went wrong and recovery is not possible. |
65 * For example, no header was found for a format which depends | |
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 | 71 * Something went wrong and cannot losslessly be recovered. |
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 | 77 * Something somehow does not look correct. This may or may not |
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 | 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 | 89 |
270
55cd41bc50bf
Move the unaltered Doxygen docs from the log source code to the accompanying
takis
parents:
233
diff
changeset
|
90 /** |
636 | 91 * Sends the specified message to the log if the level is less than or equal |
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 | 104 #ifdef __GNUC__ |
494 | 105 void av_log(void*, int level, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 3, 4))); |
81 | 106 #else |
494 | 107 void av_log(void*, int level, const char *fmt, ...); |
81 | 108 #endif |
109 | |
494 | 110 void av_vlog(void*, int level, const char *fmt, va_list); |
111 int av_log_get_level(void); | |
112 void av_log_set_level(int); | |
113 void av_log_set_callback(void (*)(void*, int, const char*, va_list)); | |
114 void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl); | |
81 | 115 |
567 | 116 #endif /* AVUTIL_LOG_H */ |