summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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