зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1165585: Part1. Use AsyncReadmetadata with web audio. r=cpearce
This commit is contained in:
Родитель
4de76e37b8
Коммит
55b9aa9ddd
|
@ -126,6 +126,8 @@ private:
|
|||
}
|
||||
|
||||
void Decode();
|
||||
void OnMetadataRead(MetadataHolder* aMetadata);
|
||||
void OnMetadataNotRead(ReadMetadataFailureReason aReason);
|
||||
void RequestSample();
|
||||
void SampleDecoded(AudioData* aData);
|
||||
void SampleNotDecoded(MediaDecoderReader::NotDecodedReason aReason);
|
||||
|
@ -254,23 +256,32 @@ MediaDecodeTask::Decode()
|
|||
// backend support.
|
||||
mDecoderReader->SetIgnoreAudioOutputFormat();
|
||||
|
||||
nsAutoPtr<MetadataTags> tags;
|
||||
nsresult rv = mDecoderReader->ReadMetadata(&mMediaInfo, getter_Transfers(tags));
|
||||
if (NS_FAILED(rv)) {
|
||||
mDecoderReader->Shutdown();
|
||||
ReportFailureOnMainThread(WebAudioDecodeJob::InvalidContent);
|
||||
return;
|
||||
}
|
||||
mDecoderReader->AsyncReadMetadata()->Then(mDecoderReader->GetTaskQueue(), __func__, this,
|
||||
&MediaDecodeTask::OnMetadataRead,
|
||||
&MediaDecodeTask::OnMetadataNotRead);
|
||||
}
|
||||
|
||||
if (!mDecoderReader->HasAudio()) {
|
||||
void
|
||||
MediaDecodeTask::OnMetadataRead(MetadataHolder* aMetadata)
|
||||
{
|
||||
mMediaInfo = aMetadata->mInfo;
|
||||
if (!mMediaInfo.HasAudio()) {
|
||||
mDecoderReader->Shutdown();
|
||||
ReportFailureOnMainThread(WebAudioDecodeJob::NoAudio);
|
||||
return;
|
||||
}
|
||||
|
||||
RequestSample();
|
||||
}
|
||||
|
||||
void
|
||||
MediaDecodeTask::OnMetadataNotRead(ReadMetadataFailureReason aReason)
|
||||
{
|
||||
MOZ_RELEASE_ASSERT(aReason != ReadMetadataFailureReason::WAITING_FOR_RESOURCES);
|
||||
mDecoderReader->Shutdown();
|
||||
ReportFailureOnMainThread(WebAudioDecodeJob::InvalidContent);
|
||||
return;
|
||||
}
|
||||
|
||||
void
|
||||
MediaDecodeTask::RequestSample()
|
||||
{
|
||||
|
|
Загрузка…
Ссылка в новой задаче