[vlc-devel] commit: libavutil callback cannot assume it has a VLC object ( Rémi Denis-Courmont )
git version control
git at videolan.org
Thu Mar 12 15:57:55 CET 2009
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Mar 12 16:49:37 2009 +0200| [9f84f025ab2a6e0d8d9da2ba520652ac8f657524] | committer: Rémi Denis-Courmont
libavutil callback cannot assume it has a VLC object
This fixes a crash from the avformat (de)mux.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9f84f025ab2a6e0d8d9da2ba520652ac8f657524
---
modules/codec/avcodec/avutil.h | 36 ++++++++----------------------------
1 files changed, 8 insertions(+), 28 deletions(-)
diff --git a/modules/codec/avcodec/avutil.h b/modules/codec/avcodec/avutil.h
index 08b1156..48a5222 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;
+ }
}
More information about the vlc-devel
mailing list