From 9f84f025ab2a6e0d8d9da2ba520652ac8f657524 Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Thu, 12 Mar 2009 16:49:37 +0200 Subject: [PATCH] libavutil callback cannot assume it has a VLC object This fixes a crash from the avformat (de)mux. --- modules/codec/avcodec/avutil.h | 36 ++++++++-------------------------- 1 file changed, 8 insertions(+), 28 deletions(-) diff --git a/modules/codec/avcodec/avutil.h b/modules/codec/avcodec/avutil.h index 08b11567d8..48a5222b26 100644 --- a/modules/codec/avcodec/avutil.h +++ b/modules/codec/avcodec/avutil.h @@ -28,12 +28,8 @@ static inline void LibavutilCallback( void *p_opaque, int i_level, const char *psz_format, va_list va ) { - int i_vlc_level; AVCodecContext *p_avctx = (AVCodecContext *)p_opaque; const AVClass *p_avc; - vlc_object_t *p_this; - char *psz_new_format; - const char *psz_item_name; p_avc = p_avctx ? p_avctx->av_class : 0; @@ -48,33 +44,17 @@ static inline void LibavutilCallback( void *p_opaque, int i_level, } #undef cln - p_this = (vlc_object_t *)p_avctx->opaque; - switch( i_level ) { - case AV_LOG_QUIET: - i_vlc_level = VLC_MSG_ERR; - break; - case AV_LOG_ERROR: - i_vlc_level = VLC_MSG_WARN; - break; - case AV_LOG_INFO: - i_vlc_level = VLC_MSG_DBG; - break; case AV_LOG_DEBUG: + case AV_LOG_INFO: /* Print debug messages if they were requested */ - if( p_avctx->debug ) vfprintf( stderr, psz_format, va ); - return; - default: - return; - } + if( !p_avctx->debug ) + break; - psz_item_name = p_avc->item_name(p_opaque); - psz_new_format = malloc( strlen(psz_format) + strlen(psz_item_name) - + 18 + 5 ); - snprintf( psz_new_format, strlen(psz_format) + strlen(psz_item_name) - + 18 + 5, "%s (%s@%p)", psz_format, p_avc->item_name(p_opaque), p_opaque ); - msg_GenericVa( p_this, i_vlc_level, - MODULE_STRING, psz_new_format, va ); - free( psz_new_format ); + case AV_LOG_ERROR: + case AV_LOG_QUIET: + vfprintf( stderr, psz_format, va ); + break; + } } -- 2.39.2