some fixes for non-blocking seek :-)
git-svn-id: https://svn.musicpd.org/mpd/trunk@1100 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
a81573ef05
commit
70d4397366
@ -264,7 +264,6 @@ int aac_decode(OutputBuffer * cb, DecoderControl * dc) {
|
|||||||
unsigned int sampleCount;
|
unsigned int sampleCount;
|
||||||
char * sampleBuffer;
|
char * sampleBuffer;
|
||||||
size_t sampleBufferLen;
|
size_t sampleBufferLen;
|
||||||
int chunkLen = 0;
|
|
||||||
/*float * seekTable;
|
/*float * seekTable;
|
||||||
long seekTableEnd = -1;
|
long seekTableEnd = -1;
|
||||||
int seekPositionFound = 0;*/
|
int seekPositionFound = 0;*/
|
||||||
@ -383,17 +382,6 @@ int aac_decode(OutputBuffer * cb, DecoderControl * dc) {
|
|||||||
|
|
||||||
if(dc->state != DECODE_STATE_DECODE) return -1;
|
if(dc->state != DECODE_STATE_DECODE) return -1;
|
||||||
|
|
||||||
if(!dc->stop && chunkLen>0) {
|
|
||||||
cb->chunkSize[cb->end] = chunkLen;
|
|
||||||
++cb->end;
|
|
||||||
|
|
||||||
if(cb->end>=buffered_chunks) {
|
|
||||||
cb->end = 0;
|
|
||||||
cb->wrap = 1;
|
|
||||||
}
|
|
||||||
chunkLen = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(dc->seek) dc->seek = 0;
|
if(dc->seek) dc->seek = 0;
|
||||||
|
|
||||||
if(dc->stop) {
|
if(dc->stop) {
|
||||||
|
@ -410,7 +410,10 @@ void decodeParent(PlayerControl * pc, DecoderControl * dc, OutputBuffer * cb) {
|
|||||||
processDecodeInput();
|
processDecodeInput();
|
||||||
handleDecodeStart();
|
handleDecodeStart();
|
||||||
if(!dc->seek && seeking) {
|
if(!dc->seek && seeking) {
|
||||||
if(dc->seekChunk >= 0) cb->begin = dc->seekChunk;
|
if(dc->seekChunk >= 0) {
|
||||||
|
cb->begin = dc->seekChunk;
|
||||||
|
cb->wrap = 0;
|
||||||
|
}
|
||||||
seeking = 0;
|
seeking = 0;
|
||||||
}
|
}
|
||||||
if(dc->state==DECODE_STATE_STOP &&
|
if(dc->state==DECODE_STATE_STOP &&
|
||||||
|
@ -105,7 +105,6 @@ int mp4_decode(OutputBuffer * cb, DecoderControl * dc) {
|
|||||||
char * sampleBuffer;
|
char * sampleBuffer;
|
||||||
size_t sampleBufferLen;
|
size_t sampleBufferLen;
|
||||||
unsigned int initial = 1;
|
unsigned int initial = 1;
|
||||||
int chunkLen = 0;
|
|
||||||
float * seekTable;
|
float * seekTable;
|
||||||
long seekTableEnd = -1;
|
long seekTableEnd = -1;
|
||||||
int seekPositionFound = 0;
|
int seekPositionFound = 0;
|
||||||
@ -219,7 +218,6 @@ int mp4_decode(OutputBuffer * cb, DecoderControl * dc) {
|
|||||||
|
|
||||||
if(dc->seek && seekPositionFound) {
|
if(dc->seek && seekPositionFound) {
|
||||||
seekPositionFound = 0;
|
seekPositionFound = 0;
|
||||||
chunkLen = 0;
|
|
||||||
clearOutputBuffer(cb);
|
clearOutputBuffer(cb);
|
||||||
dc->seekChunk = cb->end;
|
dc->seekChunk = cb->end;
|
||||||
dc->seek = 0;
|
dc->seek = 0;
|
||||||
@ -299,17 +297,6 @@ int mp4_decode(OutputBuffer * cb, DecoderControl * dc) {
|
|||||||
|
|
||||||
if(dc->state != DECODE_STATE_DECODE) return -1;
|
if(dc->state != DECODE_STATE_DECODE) return -1;
|
||||||
|
|
||||||
if(!dc->stop && !dc->seek && chunkLen>0) {
|
|
||||||
cb->chunkSize[cb->end] = chunkLen;
|
|
||||||
++cb->end;
|
|
||||||
|
|
||||||
if(cb->end>=buffered_chunks) {
|
|
||||||
cb->end = 0;
|
|
||||||
cb->wrap = 1;
|
|
||||||
}
|
|
||||||
chunkLen = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(dc->seek) dc->seek = 0;
|
if(dc->seek) dc->seek = 0;
|
||||||
|
|
||||||
if(dc->stop) {
|
if(dc->stop) {
|
||||||
|
Loading…
Reference in New Issue
Block a user