From 6e16398aa3be09e068cc2d99f850672d58955fca Mon Sep 17 00:00:00 2001 From: Vitor Sessak Date: Wed, 5 Jan 2011 19:38:42 +0000 Subject: [PATCH] Make dc_lum_vlc and dc_chroma_vlc non-static symbols, this fixed the decoding of version 3 PSX MDEC files. Originally committed as revision 26230 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/mpeg12.c | 7 +++++-- libavcodec/mpeg12.h | 8 ++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 6a331eb3fc..d93474fe29 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -137,6 +137,9 @@ void ff_mpeg1_clean_buffers(MpegEncContext *s){ /******************************************/ /* decoding */ +VLC ff_dc_lum_vlc; +VLC ff_dc_chroma_vlc; + static VLC mv_vlc; static VLC mbincr_vlc; static VLC mb_ptype_vlc; @@ -150,10 +153,10 @@ av_cold void ff_mpeg12_init_vlcs(void) if (!done) { done = 1; - INIT_VLC_STATIC(&dc_lum_vlc, DC_VLC_BITS, 12, + INIT_VLC_STATIC(&ff_dc_lum_vlc, DC_VLC_BITS, 12, ff_mpeg12_vlc_dc_lum_bits, 1, 1, ff_mpeg12_vlc_dc_lum_code, 2, 2, 512); - INIT_VLC_STATIC(&dc_chroma_vlc, DC_VLC_BITS, 12, + INIT_VLC_STATIC(&ff_dc_chroma_vlc, DC_VLC_BITS, 12, ff_mpeg12_vlc_dc_chroma_bits, 1, 1, ff_mpeg12_vlc_dc_chroma_code, 2, 2, 514); INIT_VLC_STATIC(&mv_vlc, MV_VLC_BITS, 17, diff --git a/libavcodec/mpeg12.h b/libavcodec/mpeg12.h index 30bb675d35..541b66bd94 100644 --- a/libavcodec/mpeg12.h +++ b/libavcodec/mpeg12.h @@ -27,8 +27,8 @@ #define DC_VLC_BITS 9 #define TEX_VLC_BITS 9 -static VLC dc_lum_vlc; -static VLC dc_chroma_vlc; +extern VLC ff_dc_lum_vlc; +extern VLC ff_dc_chroma_vlc; extern uint8_t ff_mpeg12_static_rl_table_store[2][2][2*MAX_RUN + MAX_LEVEL + 3]; @@ -40,9 +40,9 @@ static inline int decode_dc(GetBitContext *gb, int component) int code, diff; if (component == 0) { - code = get_vlc2(gb, dc_lum_vlc.table, DC_VLC_BITS, 2); + code = get_vlc2(gb, ff_dc_lum_vlc.table, DC_VLC_BITS, 2); } else { - code = get_vlc2(gb, dc_chroma_vlc.table, DC_VLC_BITS, 2); + code = get_vlc2(gb, ff_dc_chroma_vlc.table, DC_VLC_BITS, 2); } if (code < 0){ av_log(NULL, AV_LOG_ERROR, "invalid dc code at\n");