Cleanup. Improve error reporting. Fix a broken assertion.
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "RageSoundReader_MP3.h"
|
#include "RageSoundReader_MP3.h"
|
||||||
#include "RageLog.h"
|
#include "RageLog.h"
|
||||||
|
#include "RageUtil.h"
|
||||||
#include "SDL_utils.h"
|
#include "SDL_utils.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -404,10 +405,7 @@ int RageSoundReader_MP3::do_mad_frame_decode()
|
|||||||
if( bytes_read > 25000 )
|
if( bytes_read > 25000 )
|
||||||
{
|
{
|
||||||
/* We've read this much without actually getting a frame; error. */
|
/* We've read this much without actually getting a frame; error. */
|
||||||
if(mad_timer_compare(mad->Timer, mad_timer_zero) == 0)
|
SetError( "Can't find data" );
|
||||||
SetError( "Not an MP3 stream" );
|
|
||||||
else
|
|
||||||
SetError( "Lost sync" );
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -593,8 +591,7 @@ SoundReader_FileReader::OpenResult RageSoundReader_MP3::Open( CString filename_
|
|||||||
}
|
}
|
||||||
if( ret == -1 )
|
if( ret == -1 )
|
||||||
{
|
{
|
||||||
/* XXX: an error is already set */
|
SetError( ssprintf("%s (not an MP3 stream?)", GetError().c_str()) );
|
||||||
SetError( "Not an MP3 stream?" );
|
|
||||||
return OPEN_NO_MATCH;
|
return OPEN_NO_MATCH;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -738,11 +735,11 @@ bool RageSoundReader_MP3::MADLIB_rewind()
|
|||||||
|
|
||||||
/* Returns 1 on success, 0 on error, -1 if we couldn't it (don't have
|
/* Returns 1 on success, 0 on error, -1 if we couldn't it (don't have
|
||||||
* a Xing tag or a length). */
|
* a Xing tag or a length). */
|
||||||
int RageSoundReader_MP3::SetPosition_toc( int ms, int Xing )
|
int RageSoundReader_MP3::SetPosition_toc( int ms, bool Xing )
|
||||||
{
|
{
|
||||||
int percent;
|
int percent;
|
||||||
|
|
||||||
ASSERT( !Xing && mad->has_xing );
|
ASSERT( !Xing || mad->has_xing );
|
||||||
ASSERT( mad->length != -1 );
|
ASSERT( mad->length != -1 );
|
||||||
|
|
||||||
/* This leaves our timer accurate if we're using our own TOC, and inaccurate
|
/* This leaves our timer accurate if we're using our own TOC, and inaccurate
|
||||||
@@ -863,7 +860,7 @@ int RageSoundReader_MP3::SetPosition_estimate( int ms )
|
|||||||
int RageSoundReader_MP3::SetPosition_Accurate( int ms )
|
int RageSoundReader_MP3::SetPosition_Accurate( int ms )
|
||||||
{
|
{
|
||||||
/* Seek using our own internal (accurate) TOC. */
|
/* Seek using our own internal (accurate) TOC. */
|
||||||
if( SetPosition_toc( ms, 0 ) == -1 )
|
if( SetPosition_toc( ms, false ) == -1 )
|
||||||
return -1; /* error */
|
return -1; /* error */
|
||||||
|
|
||||||
/* Align exactly. */
|
/* Align exactly. */
|
||||||
@@ -874,7 +871,7 @@ int RageSoundReader_MP3::SetPosition_Fast( int ms )
|
|||||||
{
|
{
|
||||||
/* We can do a fast jump in VBR with Xing with more accuracy than without Xing. */
|
/* We can do a fast jump in VBR with Xing with more accuracy than without Xing. */
|
||||||
if( mad->has_xing )
|
if( mad->has_xing )
|
||||||
return SetPosition_toc( ms, 1 );
|
return SetPosition_toc( ms, true );
|
||||||
|
|
||||||
/* Guess. This is only remotely accurate when we're not VBR, but also
|
/* Guess. This is only remotely accurate when we're not VBR, but also
|
||||||
* do it if we have no Xing tag. */
|
* do it if we have no Xing tag. */
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
bool MADLIB_rewind();
|
bool MADLIB_rewind();
|
||||||
int SetPosition_toc( int ms, int Xing );
|
int SetPosition_toc( int ms, bool Xing );
|
||||||
int SetPosition_hard( int ms );
|
int SetPosition_hard( int ms );
|
||||||
int SetPosition_estimate( int ms );
|
int SetPosition_estimate( int ms );
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user