Bug 1197125: [webm]. Don't load the entire webm in RAM. r=kinetik

Instead we parse it in chunks of 1MiB max.
This commit is contained in:
Jean-Yves Avenard 2015-08-28 11:19:14 +10:00
Родитель ee6cc113c7
Коммит 549614ffc0
1 изменённых файлов: 9 добавлений и 2 удалений

Просмотреть файл

@ -415,9 +415,16 @@ void WebMBufferedState::UpdateIndex(const nsTArray<MediaByteRange>& aRanges, Med
} }
} }
} }
nsRefPtr<MediaByteBuffer> bytes = aResource->MediaReadAt(offset, length); while (length > 0) {
if(bytes) { static const uint32_t BLOCK_SIZE = 1048576;
uint32_t block = std::min(length, BLOCK_SIZE);
nsRefPtr<MediaByteBuffer> bytes = aResource->MediaReadAt(offset, block);
if (!bytes) {
break;
}
NotifyDataArrived(bytes->Elements(), bytes->Length(), offset); NotifyDataArrived(bytes->Elements(), bytes->Length(), offset);
length -= bytes->Length();
offset += bytes->Length();
} }
} }
} }