see if we can skip past tags
git-svn-id: https://svn.musicpd.org/mpd/trunk@199 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
124854ff51
commit
4e4faf6174
|
@ -47,8 +47,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#define FADE_CHUNKS 1024
|
|
||||||
|
|
||||||
int * decode_pid = NULL;
|
int * decode_pid = NULL;
|
||||||
|
|
||||||
void decodeSigHandler(int sig) {
|
void decodeSigHandler(int sig) {
|
||||||
|
@ -91,7 +89,7 @@ void quitDecode(PlayerControl * pc, DecoderControl * dc) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int calculateCrossFadeChunks(PlayerControl * pc, AudioFormat * af) {
|
int calculateCrossFadeChunks(PlayerControl * pc, AudioFormat * af) {
|
||||||
int chunks;
|
long chunks;
|
||||||
|
|
||||||
if(pc->crossFade<=0) return 0;
|
if(pc->crossFade<=0) return 0;
|
||||||
|
|
||||||
|
@ -104,7 +102,7 @@ int calculateCrossFadeChunks(PlayerControl * pc, AudioFormat * af) {
|
||||||
|
|
||||||
if(chunks<0) chunks = 0;
|
if(chunks<0) chunks = 0;
|
||||||
|
|
||||||
return chunks;
|
return (int)chunks;
|
||||||
}
|
}
|
||||||
|
|
||||||
int waitOnDecode(PlayerControl * pc, AudioFormat * af, DecoderControl * dc,
|
int waitOnDecode(PlayerControl * pc, AudioFormat * af, DecoderControl * dc,
|
||||||
|
|
|
@ -25,6 +25,13 @@
|
||||||
#else
|
#else
|
||||||
#include <mad.h>
|
#include <mad.h>
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_ID3TAG
|
||||||
|
#ifdef USE_MPD_ID3TAG
|
||||||
|
#include "libid3tag/id3tag.h"
|
||||||
|
#else
|
||||||
|
#include <id3tag.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#include "playerData.h"
|
#include "playerData.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
@ -181,7 +188,19 @@ int decodeNextFrameHeader(mp3DecodeData * data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(mad_header_decode(&data->frame.header,&data->stream)) {
|
if(mad_header_decode(&data->frame.header,&data->stream)) {
|
||||||
if((data->stream).error==MAD_ERROR_LOSTSYNC) return DECODE_SKIP;
|
if((data->stream).error==MAD_ERROR_LOSTSYNC) {
|
||||||
|
#ifdef HAVE_ID3TAG
|
||||||
|
signed long tagsize = id3_tag_query(
|
||||||
|
(data->stream).this_frame,
|
||||||
|
(data->stream).bufend-
|
||||||
|
(data->stream).this_frame);
|
||||||
|
if(tagsize>0) {
|
||||||
|
mad_stream_skip(&(data->stream),tagsize);
|
||||||
|
return DECODE_CONT;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return DECODE_SKIP;
|
||||||
|
}
|
||||||
if(MAD_RECOVERABLE((data->stream).error)) return DECODE_CONT;
|
if(MAD_RECOVERABLE((data->stream).error)) return DECODE_CONT;
|
||||||
else {
|
else {
|
||||||
if((data->stream).error==MAD_ERROR_BUFLEN) return DECODE_CONT;
|
if((data->stream).error==MAD_ERROR_BUFLEN) return DECODE_CONT;
|
||||||
|
@ -206,7 +225,19 @@ int decodeNextFrame(mp3DecodeData * data) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(mad_frame_decode(&data->frame,&data->stream)) {
|
if(mad_frame_decode(&data->frame,&data->stream)) {
|
||||||
if((data->stream).error==MAD_ERROR_LOSTSYNC) return DECODE_SKIP;
|
if((data->stream).error==MAD_ERROR_LOSTSYNC) {
|
||||||
|
#ifdef HAVE_ID3TAG
|
||||||
|
signed long tagsize = id3_tag_query(
|
||||||
|
(data->stream).this_frame,
|
||||||
|
(data->stream).bufend-
|
||||||
|
(data->stream).this_frame);
|
||||||
|
if(tagsize>0) {
|
||||||
|
mad_stream_skip(&(data->stream),tagsize);
|
||||||
|
return DECODE_CONT;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return DECODE_SKIP;
|
||||||
|
}
|
||||||
if(MAD_RECOVERABLE((data->stream).error)) return DECODE_CONT;
|
if(MAD_RECOVERABLE((data->stream).error)) return DECODE_CONT;
|
||||||
else {
|
else {
|
||||||
if((data->stream).error==MAD_ERROR_BUFLEN) return DECODE_CONT;
|
if((data->stream).error==MAD_ERROR_BUFLEN) return DECODE_CONT;
|
||||||
|
|
Loading…
Reference in New Issue