diff --git a/NEWS b/NEWS index 714cb533e..be041afd7 100644 --- a/NEWS +++ b/NEWS @@ -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 diff --git a/src/decoder/ffmpeg_decoder_plugin.c b/src/decoder/ffmpeg_decoder_plugin.c index 37ed3bd48..f1cc1c4b5 100644 --- a/src/decoder/ffmpeg_decoder_plugin.c +++ b/src/decoder/ffmpeg_decoder_plugin.c @@ -40,11 +40,38 @@ #include #include #include +#include #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;