annotate log.c @ 914:66b39cb91dde libavutil

bswap: add macros to byteswap constants The normal byteswap functions might use inline asm which is suboptimal with constants (and cannot be used in static initialisers), so special macros for constants only is needed. We should not rely on the gcc __builtin_constant_p() test since it is not always available.
author mru
date Thu, 29 Apr 2010 14:41:20 +0000
parents 3f0ed02fff47
children 3ab411c447c4
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 /**
899
0795a743bda1 Remove explicit filename from Doxygen @file commands.
diego
parents: 797
diff changeset
23 * @file
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
901
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
27 #include <unistd.h>
907
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
28 #include <stdlib.h>
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
29 #include "avutil.h"
628
51e8796fe8fc C files should #include the header files of the same name.
diego
parents: 543
diff changeset
30 #include "log.h"
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
31
797
e2fd9fd487ae Make av_log_level static at next lavu major version bump.
ramiro
parents: 672
diff changeset
32 #if LIBAVUTIL_VERSION_MAJOR > 50
e2fd9fd487ae Make av_log_level static at next lavu major version bump.
ramiro
parents: 672
diff changeset
33 static
e2fd9fd487ae Make av_log_level static at next lavu major version bump.
ramiro
parents: 672
diff changeset
34 #endif
88
b39b6310973c removing redundant mess next time we break compatiility
michael
parents: 81
diff changeset
35 int av_log_level = AV_LOG_INFO;
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
36
907
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
37 static int use_ansi_color=-1;
901
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
38
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
39 #undef fprintf
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
40 static void colored_fputs(int color, const char *str){
907
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
41 if(use_ansi_color<0){
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
42 #if HAVE_ISATTY && !defined(_WIN32)
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
43 use_ansi_color= getenv("TERM") && !getenv("NO_COLOR") && isatty(2);
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
44 #else
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
45 use_ansi_color= 0;
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
46 #endif
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
47 }
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
48
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
49 if(use_ansi_color){
904
01dd0deb8e8d Merge the 2 ANSI ESC codes.
michael
parents: 903
diff changeset
50 fprintf(stderr, "\033[%d;3%dm", color>>4, color&15);
901
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
51 }
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
52 fputs(str, stderr);
907
3f0ed02fff47 4th try at getting ansi colors working with a default of color=yes_please.
michael
parents: 905
diff changeset
53 if(use_ansi_color){
903
b0cedb31562f Reenable ANSI colors, use method from VLC as suggested by ramiro.
michael
parents: 902
diff changeset
54 fprintf(stderr, "\033[0m");
901
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
55 }
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
56 }
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
57
163
dfd02ce85c5d Allow to uninstall a custom log callback
gpoirier
parents: 116
diff changeset
58 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
59 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
60 static int print_prefix=1;
672
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
61 static int count;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
62 static char line[1024], prev[1024];
901
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
63 static const uint8_t color[]={0x41,0x41,0x11,0x03,9,9,9};
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
64 AVClass* avc= ptr ? *(AVClass**)ptr : NULL;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
65 if(level>av_log_level)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
66 return;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
67 #undef fprintf
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
68 if(print_prefix && avc) {
672
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
69 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
70 }else
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
71 line[0]=0;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
72
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
73 vsnprintf(line + strlen(line), sizeof(line) - strlen(line), fmt, vl);
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
74
672
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
75 print_prefix= line[strlen(line)-1] == '\n';
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
76 if(print_prefix && !strcmp(line, prev)){
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
77 count++;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
78 return;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
79 }
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
80 if(count>0){
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
81 fprintf(stderr, " Last message repeated %d times\n", count);
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
82 count=0;
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
83 }
901
5b60f5ff30da Coloring the log with ANSI.
michael
parents: 899
diff changeset
84 colored_fputs(color[av_clip(level>>3, 0, 6)], line);
672
4cd8f715ab17 Compact repeated messages to "Last message repeated x times".
michael
parents: 642
diff changeset
85 strcpy(prev, line);
81
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
86 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
87
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
88 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
89
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
90 void av_log(void* avcl, int level, const char *fmt, ...)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
91 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
92 va_list vl;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
93 va_start(vl, fmt);
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
94 av_vlog(avcl, level, fmt, vl);
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
95 va_end(vl);
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
96 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
97
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
98 void av_vlog(void* avcl, int level, const char *fmt, va_list vl)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
99 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
100 av_log_callback(avcl, level, fmt, vl);
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
101 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
102
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
103 int av_log_get_level(void)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
104 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
105 return av_log_level;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
106 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
107
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
108 void av_log_set_level(int level)
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
109 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
110 av_log_level = level;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
111 }
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
112
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
113 void av_log_set_callback(void (*callback)(void*, int, const char*, va_list))
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
114 {
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
115 av_log_callback = callback;
5cfa773a3bdd Move av_log() & friends to libavutil
lucabe
parents:
diff changeset
116 }