diff libmpcodecs/vd_ffmpeg.c @ 33871:30f5e5cd3676

Move code for setting up libav* logging callbacks from vd_ffmpeg to a separate file and also use it when only initializing libavformat.
author reimar
date Tue, 09 Aug 2011 19:57:00 +0000
parents 15e182c07689
children a5f1aaf21790
line wrap: on
line diff
--- a/libmpcodecs/vd_ffmpeg.c	Tue Aug 09 19:23:41 2011 +0000
+++ b/libmpcodecs/vd_ffmpeg.c	Tue Aug 09 19:57:00 2011 +0000
@@ -25,6 +25,7 @@
 #include "mp_msg.h"
 #include "help_mp.h"
 #include "av_opts.h"
+#include "av_helpers.h"
 
 #include "libavutil/common.h"
 #include "libavutil/intreadwrite.h"
@@ -32,7 +33,6 @@
 #include "fmt-conversion.h"
 
 #include "vd_internal.h"
-#include "vd_ffmpeg.h"
 
 static const vd_info_t info = {
     "FFmpeg's libavcodec codec family",
@@ -54,8 +54,6 @@
 #include "libavcodec/xvmc.h"
 #endif
 
-int avcodec_initialized=0;
-
 typedef struct {
     AVCodecContext *avctx;
     AVFrame *pic;
@@ -181,59 +179,6 @@
     return CONTROL_UNKNOWN;
 }
 
-static void mp_msp_av_log_callback(void *ptr, int level, const char *fmt,
-                                   va_list vl)
-{
-    static int print_prefix=1;
-    AVClass *avc= ptr ? *(AVClass **)ptr : NULL;
-    int type= MSGT_FIXME;
-    int mp_level;
-
-    switch(level){
-    case AV_LOG_VERBOSE: mp_level = MSGL_V ; break;
-    case AV_LOG_DEBUG:  mp_level= MSGL_V   ; break;
-    case AV_LOG_INFO :  mp_level= MSGL_INFO; break;
-    case AV_LOG_ERROR:  mp_level= MSGL_ERR ; break;
-    default          :  mp_level= level > AV_LOG_DEBUG ? MSGL_DBG2 : MSGL_ERR; break;
-    }
-
-    if (ptr && !avc)
-        mp_msg(MSGT_DECVIDEO, MSGL_ERR, "libav* called av_log with context containing a broken AVClass!\n");
-    if (avc) {
-        if(!strcmp(avc->class_name, "AVCodecContext")){
-            AVCodecContext *s= ptr;
-            if(s->codec){
-                if(s->codec->type == AVMEDIA_TYPE_AUDIO){
-                    if(s->codec->decode)
-                        type= MSGT_DECAUDIO;
-                }else if(s->codec->type == AVMEDIA_TYPE_VIDEO){
-                    if(s->codec->decode)
-                        type= MSGT_DECVIDEO;
-                }
-                //FIXME subtitles, encoders (what msgt for them? there is no appropriate ...)
-            }
-        }else if(!strcmp(avc->class_name, "AVFormatContext")){
-            type= MSGT_DEMUXER;
-#if 0 //needs libavformat include FIXME iam too lazy to do this cleanly, probably the whole should be moved out of this file ...
-            AVFormatContext *s= ptr;
-            if(s->iformat)
-                type= MSGT_DEMUXER;
-            else if(s->oformat)
-                type= MSGT_MUXER;
-#endif
-        }
-    }
-
-    if (!mp_msg_test(type, mp_level)) return;
-
-    if(print_prefix && avc) {
-        mp_msg(type, mp_level, "[%s @ %p]", avc->item_name(ptr), avc);
-    }
-
-    print_prefix= strchr(fmt, '\n') != NULL;
-    mp_msg_va(type, mp_level, fmt, vl);
-}
-
 static void set_format_params(struct AVCodecContext *avctx, enum PixelFormat fmt){
     int imgfmt;
     if (fmt == PIX_FMT_NONE)
@@ -261,16 +206,6 @@
     }
 }
 
-void init_avcodec(void)
-{
-    if (!avcodec_initialized) {
-        avcodec_init();
-        avcodec_register_all();
-        avcodec_initialized = 1;
-        av_log_set_callback(mp_msp_av_log_callback);
-    }
-}
-
 // init driver
 static int init(sh_video_t *sh){
     AVCodecContext *avctx;