aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-09-24 15:37:01 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-09-24 15:37:01 +0000
commit1c1c80f0a3157278bf66da98e194729cdeea6631 (patch)
tree5632ed66669858c08d12f4175264d108a6a40cde /libavutil
parent7e117771cdf6ed76c90455ce289dbd027477b7fb (diff)
downloadffmpeg-1c1c80f0a3157278bf66da98e194729cdeea6631.tar.gz
2nd try to fix av_log() repeated detection
Originally committed as revision 25174 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavutil')
-rw-r--r--libavutil/avutil.h2
-rw-r--r--libavutil/log.c9
-rw-r--r--libavutil/log.h11
3 files changed, 20 insertions, 2 deletions
diff --git a/libavutil/avutil.h b/libavutil/avutil.h
index 0b0b4ce0cc..758b012591 100644
--- a/libavutil/avutil.h
+++ b/libavutil/avutil.h
@@ -40,7 +40,7 @@
#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
#define LIBAVUTIL_VERSION_MAJOR 50
-#define LIBAVUTIL_VERSION_MINOR 27
+#define LIBAVUTIL_VERSION_MINOR 28
#define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
diff --git a/libavutil/log.c b/libavutil/log.c
index 2e95068db3..ec16c67ad8 100644
--- a/libavutil/log.c
+++ b/libavutil/log.c
@@ -33,6 +33,7 @@
static
#endif
int av_log_level = AV_LOG_INFO;
+static int flags;
#if defined(_WIN32) && !defined(__MINGW32CE__)
#include <windows.h>
@@ -109,8 +110,9 @@ void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl)
if(!detect_repeats) detect_repeats= isatty(2) ? 1 : -1;
#endif
- if(print_prefix && detect_repeats==1 && !strcmp(line, prev)){
+ if(print_prefix && (flags & AV_LOG_SKIP_REPEATED) && !strcmp(line, prev)){
count++;
+ if(detect_repeats==1)
fprintf(stderr, " Last message repeated %d times\r", count);
return;
}
@@ -150,6 +152,11 @@ void av_log_set_level(int level)
av_log_level = level;
}
+void av_log_set_flags(int arg)
+{
+ flags= arg;
+}
+
void av_log_set_callback(void (*callback)(void*, int, const char*, va_list))
{
av_log_callback = callback;
diff --git a/libavutil/log.h b/libavutil/log.h
index 831c26eae6..3b364bed24 100644
--- a/libavutil/log.h
+++ b/libavutil/log.h
@@ -135,4 +135,15 @@ void av_log_set_callback(void (*)(void*, int, const char*, va_list));
void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl);
const char* av_default_item_name(void* ctx);
+/**
+ * Skip repeated messages, this requires the user app to use av_log() instead of
+ * (f)printf as the 2 would otherwise interfere and lead to
+ * "Last message repeated x times" messages below (f)printf messages with some
+ * bad luck.
+ * Also to receive the last, "last repeated" line if any, the user app must
+ * call av_log(NULL, AV_LOG_QUIET, ""); at the end
+ */
+#define AV_LOG_SKIP_REPEATED 1
+void av_log_set_flags(int arg);
+
#endif /* AVUTIL_LOG_H */