From 7195f3a30cc73e1540a590c519c9a2ecec137952 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Tue, 29 Jun 2010 10:07:04 +0000 Subject: r27159 broke mpegplayer but not the mpa codec because its libmad init wasn't also updated to be compatible with the changes. Fix that. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27171 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/mpegplayer/audio_thread.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/apps/plugins/mpegplayer/audio_thread.c b/apps/plugins/mpegplayer/audio_thread.c index d626df6681..84f0229000 100644 --- a/apps/plugins/mpegplayer/audio_thread.c +++ b/apps/plugins/mpegplayer/audio_thread.c @@ -225,20 +225,22 @@ static int audio_buffer(struct stream *str, enum stream_parse_mode type) /* Initialise libmad */ static void init_mad(void) { - /*init the sbsample buffer*/ - frame.sbsample = &sbsample; + /* init the sbsample buffer */ frame.sbsample_prev = &sbsample; - + frame.sbsample = &sbsample; + + /* We do this so libmad doesn't try to call codec_calloc(). This needs to + * be called before mad_stream_init(), mad_frame_inti() and + * mad_synth_init(). */ + frame.overlap = &mad_frame_overlap; + stream.main_data = &mad_main_data; + + /* Call mad initialization. Those will zero the arrays frame.overlap, + * frame.sbsample and frame.sbsample_prev. Therefore there is no need to + * zero them here. */ mad_stream_init(&stream); mad_frame_init(&frame); mad_synth_init(&synth); - - /* We do this so libmad doesn't try to call codec_calloc() */ - rb->memset(mad_frame_overlap, 0, sizeof(mad_frame_overlap)); - frame.overlap = (void *)mad_frame_overlap; - - rb->memset(mad_main_data, 0, sizeof(mad_main_data)); - stream.main_data = &mad_main_data; } /* Sync audio stream to a particular frame - see main decoder loop for -- cgit v1.2.3