decoder/ffmpeg: implement the libavutil log callback

Pass everything to the GLib logging library.  No direct stderr access.
This commit is contained in:
Max Kellermann 2010-02-27 19:32:59 +01:00
parent 4e364854ab
commit ae56901863
2 changed files with 32 additions and 0 deletions

1
NEWS
View File

@ -24,6 +24,7 @@ ver 0.16 (20??/??/??)
- don't fall back to "mad" unless no plugin matches
- ffmpeg: support multiple tags
- ffmpeg: convert metadata to generic format
- ffmpeg: implement the libavutil log callback
- sndfile: new decoder plugin based on libsndfile
- flac: moved CUE sheet support to a playlist plugin
- flac: support streams without STREAMINFO block

View File

@ -40,11 +40,38 @@
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavformat/avio.h>
#include <libavutil/log.h>
#endif
#undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "ffmpeg"
#ifndef OLD_FFMPEG_INCLUDES
static GLogLevelFlags
level_ffmpeg_to_glib(int level)
{
if (level <= AV_LOG_FATAL)
return G_LOG_LEVEL_CRITICAL;
if (level <= AV_LOG_ERROR)
return G_LOG_LEVEL_WARNING;
if (level <= AV_LOG_INFO)
return G_LOG_LEVEL_MESSAGE;
return G_LOG_LEVEL_DEBUG;
}
static void
mpd_ffmpeg_log_callback(G_GNUC_UNUSED void *ptr, int level,
const char *fmt, va_list vl)
{
g_logv(G_LOG_DOMAIN, level_ffmpeg_to_glib(level), fmt, vl);
}
#endif /* !OLD_FFMPEG_INCLUDES */
struct ffmpeg_stream {
/** hack - see url_to_struct() */
char url[64];
@ -116,6 +143,10 @@ static URLProtocol mpd_ffmpeg_fileops = {
static bool
ffmpeg_init(G_GNUC_UNUSED const struct config_param *param)
{
#ifndef OLD_FFMPEG_INCLUDES
av_log_set_callback(mpd_ffmpeg_log_callback);
#endif
av_register_all();
register_protocol(&mpd_ffmpeg_fileops);
return true;