decoder/ffmpeg: implement the libavutil log callback
Pass everything to the GLib logging library. No direct stderr access.
This commit is contained in:
parent
4e364854ab
commit
ae56901863
1
NEWS
1
NEWS
|
@ -24,6 +24,7 @@ ver 0.16 (20??/??/??)
|
||||||
- don't fall back to "mad" unless no plugin matches
|
- don't fall back to "mad" unless no plugin matches
|
||||||
- ffmpeg: support multiple tags
|
- ffmpeg: support multiple tags
|
||||||
- ffmpeg: convert metadata to generic format
|
- ffmpeg: convert metadata to generic format
|
||||||
|
- ffmpeg: implement the libavutil log callback
|
||||||
- sndfile: new decoder plugin based on libsndfile
|
- sndfile: new decoder plugin based on libsndfile
|
||||||
- flac: moved CUE sheet support to a playlist plugin
|
- flac: moved CUE sheet support to a playlist plugin
|
||||||
- flac: support streams without STREAMINFO block
|
- flac: support streams without STREAMINFO block
|
||||||
|
|
|
@ -40,11 +40,38 @@
|
||||||
#include <libavcodec/avcodec.h>
|
#include <libavcodec/avcodec.h>
|
||||||
#include <libavformat/avformat.h>
|
#include <libavformat/avformat.h>
|
||||||
#include <libavformat/avio.h>
|
#include <libavformat/avio.h>
|
||||||
|
#include <libavutil/log.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#undef G_LOG_DOMAIN
|
#undef G_LOG_DOMAIN
|
||||||
#define G_LOG_DOMAIN "ffmpeg"
|
#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 {
|
struct ffmpeg_stream {
|
||||||
/** hack - see url_to_struct() */
|
/** hack - see url_to_struct() */
|
||||||
char url[64];
|
char url[64];
|
||||||
|
@ -116,6 +143,10 @@ static URLProtocol mpd_ffmpeg_fileops = {
|
||||||
static bool
|
static bool
|
||||||
ffmpeg_init(G_GNUC_UNUSED const struct config_param *param)
|
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();
|
av_register_all();
|
||||||
register_protocol(&mpd_ffmpeg_fileops);
|
register_protocol(&mpd_ffmpeg_fileops);
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue