annotate log.c @ 806:757914de10e1 libavutil

Add replacements for log2f(), exp2() and exp2f() for platforms that lacks it. Should fix build breakage on some platforms introduced in r21125.
author vitor
date Tue, 12 Jan 2010 02:19:51 +0000
parents e2fd9fd487ae
children 0795a743bda1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
1 /*
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
2 * log functions
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
3 * Copyright (c) 2003 Michel Bardiaux
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
4 *
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 88
diff changeset
5 * This file is part of FFmpeg.
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 88
diff changeset
6 *
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 88
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
9 * 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: 88
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
11 *
116
d76a36742464 Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 88
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
15 * Lesser General Public License for more details.
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
16 *
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
17 * 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: 88
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
20 */
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
21
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
22 /**
642
70bdd5501662 Use full internal pathname in doxygen @file directives.
diego
parents: 637
diff changeset
23 * @file libavutil/log.c
637
683a6dbdd2b2 spelling/grammar/consistency review part III
diego
parents: 628
diff changeset
24 * logging functions
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
25 */
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
26
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
27 #include "avutil.h"
628
51e8796fe8fc C files should #include the header files of the same name.
diego
parents: 543
diff changeset
28 #include "log.h"
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
29
797
e2fd9fd487ae Make av_log_level static at next lavu major version bump.
ramiro
parents: 672
diff changeset
30 #if LIBAVUTIL_VERSION_MAJOR > 50
e2fd9fd487ae Make av_log_level static at next lavu major version bump.
ramiro
parents: 672
diff changeset
31 static
e2fd9fd487ae Make av_log_level static at next lavu major version bump.
ramiro
parents: 672
diff changeset
32 #endif
88
b39b6310973c removing redundant mess next time we break compatiility
michael
parents: 81
diff changeset
33 int av_log_level = AV_LOG_INFO;
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
34
163
dfd02ce85c5d Allow to uninstall a custom log callback
gpoirier
parents: 116
diff changeset
35 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
36 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
37 static int print_prefix=1;
672
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
38 static int count;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
39 static char line[1024], prev[1024];
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
40 AVClass* avc= ptr ? *(AVClass**)ptr : NULL;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
41 if(level>av_log_level)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
42 return;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
43 #undef fprintf
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
44 if(print_prefix && avc) {
672
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
45 snprintf(line, sizeof(line), "[%s @ %p]", avc->item_name(ptr), ptr);
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
46 }else
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
47 line[0]=0;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
48
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
49 vsnprintf(line + strlen(line), sizeof(line) - strlen(line), fmt, vl);
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
50
672
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
51 print_prefix= line[strlen(line)-1] == '\n';
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
52 if(print_prefix && !strcmp(line, prev)){
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
53 count++;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
54 return;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
55 }
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
56 if(count>0){
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
57 fprintf(stderr, " Last message repeated %d times\n", count);
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
58 count=0;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
59 }
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
60 fputs(line, stderr);
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
61 strcpy(prev, line);
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
62 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
63
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
64 static void (*av_log_callback)(void*, int, const char*, va_list) = av_log_default_callback;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
65
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
66 void av_log(void* avcl, int level, const char *fmt, ...)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
67 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
68 va_list vl;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
69 va_start(vl, fmt);
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
70 av_vlog(avcl, level, fmt, vl);
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
71 va_end(vl);
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
72 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
73
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
74 void av_vlog(void* avcl, int level, const char *fmt, va_list vl)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
75 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
76 av_log_callback(avcl, level, fmt, vl);
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
77 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
78
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
79 int av_log_get_level(void)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
80 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
81 return av_log_level;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
82 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
83
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
84 void av_log_set_level(int level)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
85 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
86 av_log_level = level;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
87 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
88
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
89 void av_log_set_callback(void (*callback)(void*, int, const char*, va_list))
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
90 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
91 av_log_callback = callback;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
92 }