mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Backed out 1 changesets (bug 1207915) for windows m3 test failures
Backed out changeset 84fd96dc7ddc (bug 1207915)
This commit is contained in:
parent
4890f364b1
commit
478b2883ea
@ -605,9 +605,6 @@ SendStreamAudio(DecodedStreamData* aStream, int64_t aStartTime,
|
|||||||
MediaData* aData, AudioSegment* aOutput,
|
MediaData* aData, AudioSegment* aOutput,
|
||||||
uint32_t aRate, double aVolume)
|
uint32_t aRate, double aVolume)
|
||||||
{
|
{
|
||||||
// The amount of audio frames that is used to fuzz rounding errors.
|
|
||||||
static const int64_t AUDIO_FUZZ_FRAMES = 1;
|
|
||||||
|
|
||||||
MOZ_ASSERT(aData);
|
MOZ_ASSERT(aData);
|
||||||
AudioData* audio = aData->As<AudioData>();
|
AudioData* audio = aData->As<AudioData>();
|
||||||
// This logic has to mimic AudioSink closely to make sure we write
|
// This logic has to mimic AudioSink closely to make sure we write
|
||||||
@ -619,11 +616,11 @@ SendStreamAudio(DecodedStreamData* aStream, int64_t aStartTime,
|
|||||||
if (!audioWrittenOffset.isValid() ||
|
if (!audioWrittenOffset.isValid() ||
|
||||||
!frameOffset.isValid() ||
|
!frameOffset.isValid() ||
|
||||||
// ignore packet that we've already processed
|
// ignore packet that we've already processed
|
||||||
frameOffset.value() < audioWrittenOffset.value()) {
|
frameOffset.value() + audio->mFrames <= audioWrittenOffset.value()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (audioWrittenOffset.value() + AUDIO_FUZZ_FRAMES < frameOffset.value()) {
|
if (audioWrittenOffset.value() < frameOffset.value()) {
|
||||||
int64_t silentFrames = frameOffset.value() - audioWrittenOffset.value();
|
int64_t silentFrames = frameOffset.value() - audioWrittenOffset.value();
|
||||||
// Write silence to catch up
|
// Write silence to catch up
|
||||||
AudioSegment silence;
|
AudioSegment silence;
|
||||||
@ -633,17 +630,20 @@ SendStreamAudio(DecodedStreamData* aStream, int64_t aStartTime,
|
|||||||
aOutput->AppendFrom(&silence);
|
aOutput->AppendFrom(&silence);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Always write the whole sample without truncation to be consistent with
|
MOZ_ASSERT(audioWrittenOffset.value() >= frameOffset.value());
|
||||||
// DecodedAudioDataSink::PlayFromAudioQueue()
|
|
||||||
|
int64_t offset = audioWrittenOffset.value() - frameOffset.value();
|
||||||
|
size_t framesToWrite = audio->mFrames - offset;
|
||||||
|
|
||||||
audio->EnsureAudioBuffer();
|
audio->EnsureAudioBuffer();
|
||||||
nsRefPtr<SharedBuffer> buffer = audio->mAudioBuffer;
|
nsRefPtr<SharedBuffer> buffer = audio->mAudioBuffer;
|
||||||
AudioDataValue* bufferData = static_cast<AudioDataValue*>(buffer->Data());
|
AudioDataValue* bufferData = static_cast<AudioDataValue*>(buffer->Data());
|
||||||
nsAutoTArray<const AudioDataValue*, 2> channels;
|
nsAutoTArray<const AudioDataValue*, 2> channels;
|
||||||
for (uint32_t i = 0; i < audio->mChannels; ++i) {
|
for (uint32_t i = 0; i < audio->mChannels; ++i) {
|
||||||
channels.AppendElement(bufferData + i * audio->mFrames);
|
channels.AppendElement(bufferData + i * audio->mFrames + offset);
|
||||||
}
|
}
|
||||||
aOutput->AppendFrames(buffer.forget(), channels, audio->mFrames);
|
aOutput->AppendFrames(buffer.forget(), channels, framesToWrite);
|
||||||
aStream->mAudioFramesWritten += audio->mFrames;
|
aStream->mAudioFramesWritten += framesToWrite;
|
||||||
aOutput->ApplyVolume(aVolume);
|
aOutput->ApplyVolume(aVolume);
|
||||||
|
|
||||||
aStream->mNextAudioTime = audio->GetEndTime();
|
aStream->mNextAudioTime = audio->GetEndTime();
|
||||||
|
Loading…
Reference in New Issue
Block a user