summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2010-06-29 10:07:04 +0000
committerMichael Sevakis <jethead71@rockbox.org>2010-06-29 10:07:04 +0000
commit7195f3a30cc73e1540a590c519c9a2ecec137952 (patch)
tree6c59ec9b8ff5835370cc0831c36cdbe36bfca480
parentd16467873890e1fbe73fd194b01d9fee90878ad1 (diff)
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
-rw-r--r--apps/plugins/mpegplayer/audio_thread.c22
1 files 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