Commit 62bfb1a2 authored by Max Kellermann's avatar Max Kellermann

decoder/mad: reduce memory usage while scanning tags

Allocate the frame pointers only when actually decoding the file.
parent 38e86af7
......@@ -14,6 +14,7 @@ ver 0.20 (not yet released)
* decoder
- ffmpeg: support ReplayGain and MixRamp
- ffmpeg: support stream tags
- mad: reduce memory usage while scanning tags
- mpcdec: read the bit rate
* playlist
- cue: don't skip pregap
......
......@@ -167,6 +167,15 @@ struct MadDecoder {
bool DecodeFirstFrame(Tag **tag);
void AllocateBuffers() {
assert(max_frames > 0);
assert(frame_offsets == nullptr);
assert(times == nullptr);
frame_offsets = new long[max_frames];
times = new mad_timer_t[max_frames];
}
gcc_pure
long TimeToFrame(SongTime t) const;
......@@ -819,9 +828,6 @@ MadDecoder::DecodeFirstFrame(Tag **tag)
return false;
}
frame_offsets = new long[max_frames];
times = new mad_timer_t[max_frames];
return true;
}
......@@ -1049,6 +1055,8 @@ mp3_decode(Decoder &decoder, InputStream &input_stream)
return;
}
data.AllocateBuffers();
Error error;
AudioFormat audio_format;
if (!audio_format_init_checked(audio_format,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment