ingore mp3 CRC's for files and not streams

git-svn-id: https://svn.musicpd.org/mpd/trunk@1161 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
Warren Dukes 2004-05-25 19:31:51 +00:00
parent 2a76d4c8cf
commit 90c75b1107
3 changed files with 11 additions and 7 deletions

View File

@ -291,7 +291,7 @@ void decodeStart(PlayerControl * pc, OutputBuffer * cb, DecoderControl * dc) {
/*if(fileSuffix == DECODE_SUFFIX_MP3 || (inStream.mime &&
0 == strcmp(inStream.mime, "audio/mpeg")))*/
{
ret = mp3_decode(cb,dc,&inStream);
ret = mp3_decode(cb, dc, &inStream, 0);
break;
}
ret = DECODE_ERROR_UNKTYPE;
@ -299,7 +299,7 @@ void decodeStart(PlayerControl * pc, OutputBuffer * cb, DecoderControl * dc) {
case DECODE_TYPE_FILE:
#ifdef HAVE_MAD
if(suffix == DECODE_SUFFIX_MP3) {
ret = mp3_decode(cb, dc, &inStream);
ret = mp3_decode(cb, dc, &inStream, 1);
break;
}
#endif

View File

@ -152,7 +152,6 @@ void initMp3DecodeData(mp3DecodeData * data, InputStream * inStream) {
data->inStream = inStream;
mad_stream_init(&data->stream);
data->stream.options |= MAD_OPTION_IGNORECRC;
mad_frame_init(&data->frame);
mad_synth_init(&data->synth);
mad_timer_reset(&data->timer);
@ -411,6 +410,7 @@ int getMp3TotalTime(char * file) {
if(openInputStream(&inStream, file) < 0) return -1;
initMp3DecodeData(&data,&inStream);
data.stream.options |= MAD_OPTION_IGNORECRC;
if(decodeFirstFrame(&data, NULL)<0) ret = -1;
else ret = data.totalTime+0.5;
mp3DecodeDataFinalize(&data);
@ -419,9 +419,10 @@ int getMp3TotalTime(char * file) {
}
int openMp3FromInputStream(InputStream * inStream, mp3DecodeData * data,
DecoderControl * dc)
DecoderControl * dc, int ignoreCrc)
{
initMp3DecodeData(data, inStream);
if(ignoreCrc) data->stream.options |= MAD_OPTION_IGNORECRC;
if(decodeFirstFrame(data, dc)<0) {
mp3DecodeDataFinalize(data);
return -1;
@ -561,10 +562,12 @@ void initAudioFormatFromMp3DecodeData(mp3DecodeData * data, AudioFormat * af) {
af->channels = MAD_NCHANNELS(&(data->frame).header);
}
int mp3_decode(OutputBuffer * cb, DecoderControl * dc, InputStream * inStream) {
int mp3_decode(OutputBuffer * cb, DecoderControl * dc, InputStream * inStream,
int ignoreCrc)
{
mp3DecodeData data;
if(openMp3FromInputStream(inStream, &data, dc) < 0) {
if(openMp3FromInputStream(inStream, &data, dc, ignoreCrc) < 0) {
closeInputStream(inStream);
if(!dc->stop) {
ERROR("Input does not appear to be a mp3 bit stream.\n");

View File

@ -29,7 +29,8 @@
/* this is primarily used in tag.c */
int getMp3TotalTime(char * file);
int mp3_decode(OutputBuffer * cb, DecoderControl * dc, InputStream * inStream);
int mp3_decode(OutputBuffer * cb, DecoderControl * dc, InputStream * inStream,
int ignoreCrc);
#endif