From ee9c02ea4eb0e09bf466ff1b83de0c021b59b335 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 3 Oct 2003 22:22:34 +0000 Subject: [PATCH] much faster RageSoundReader_MP3::Copy --- stepmania/src/RageSoundReader_MP3.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/stepmania/src/RageSoundReader_MP3.cpp b/stepmania/src/RageSoundReader_MP3.cpp index f57c06459c..6e3dd28e63 100644 --- a/stepmania/src/RageSoundReader_MP3.cpp +++ b/stepmania/src/RageSoundReader_MP3.cpp @@ -735,7 +735,23 @@ SoundReader_FileReader::OpenResult RageSoundReader_MP3::Open( CString filename_ SoundReader *RageSoundReader_MP3::Copy() const { RageSoundReader_MP3 *ret = new RageSoundReader_MP3; - ret->Open( filename ); + + ret->filename = filename; + ret->rw = fopen(filename, "rb"); + ASSERT( rw ); + + ret->mad->filesize = mad->filesize; + ret->mad->bitrate = mad->bitrate; + ret->SampleRate = SampleRate; + ret->mad->framelength = mad->framelength; + ret->Channels = Channels; + ret->OffsetFix = OffsetFix; + ret->mad->length = mad->length; + +// int n = ret->do_mad_frame_decode(); +// ASSERT( n > 0 ); +// ret->synth_output(); + return ret; } @@ -1075,9 +1091,7 @@ int RageSoundReader_MP3::GetLengthInternal( bool fast ) int RageSoundReader_MP3::GetLengthConst( bool fast ) const { - RageSoundReader_MP3 *cpy = new RageSoundReader_MP3; - SoundReader_FileReader::OpenResult ret = cpy->Open( filename ); - ASSERT( ret == OPEN_OK ); + RageSoundReader_MP3 *cpy = (RageSoundReader_MP3 *) Copy(); int length = cpy->GetLengthInternal( fast );