mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 675045 - Abort DecodeToTarget() when we detect a poorly muxed file. r=kinetik
This commit is contained in:
parent
b355e967d6
commit
b97df9d7cd
@ -335,12 +335,23 @@ nsresult nsBuiltinDecoderReader::DecodeToTarget(PRInt64 aTarget)
|
|||||||
audio = nsnull;
|
audio = nsnull;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (startSample > targetSample) {
|
||||||
|
// The seek target doesn't lie in the audio block just after the last
|
||||||
|
// audio samples we've seen which were before the seek target. This
|
||||||
|
// could have been the first audio data we've seen after seek, i.e. the
|
||||||
|
// seek terminated after the seek target in the audio stream. Just
|
||||||
|
// abort the audio decode-to-target, the state machine will play
|
||||||
|
// silence to cover the gap. Typically this happens in poorly muxed
|
||||||
|
// files.
|
||||||
|
NS_WARNING("Audio not synced after seek, maybe a poorly muxed file?");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// The seek target lies somewhere in this SoundData's samples, strip off
|
// The seek target lies somewhere in this SoundData's samples, strip off
|
||||||
// any samples which lie before the seek target, so we'll begin playback
|
// any samples which lie before the seek target, so we'll begin playback
|
||||||
// exactly at the seek target.
|
// exactly at the seek target.
|
||||||
NS_ASSERTION(targetSample >= startSample, "Target must at or be after data start.");
|
NS_ASSERTION(targetSample >= startSample, "Target must at or be after data start.");
|
||||||
NS_ASSERTION(startSample + audio->mSamples > targetSample, "Data must end after target.");
|
NS_ASSERTION(targetSample < startSample + audio->mSamples, "Data must end after target.");
|
||||||
|
|
||||||
PRInt64 samplesToPrune = targetSample - startSample;
|
PRInt64 samplesToPrune = targetSample - startSample;
|
||||||
if (samplesToPrune > audio->mSamples) {
|
if (samplesToPrune > audio->mSamples) {
|
||||||
|
Loading…
Reference in New Issue
Block a user