Bug 1369326 - Make mp4_demuxer::ResourceStream use a MediaResourceIndex - r=cpearce

Access the MediaResource through a MediaResourceIndex, which brings caching
reads (and therefore can avoid some of the repeated locking and IOs from
consecutive read operations).

MozReview-Commit-ID: Crk6ZgLWdw8

--HG--
extra : rebase_source : 9cc8c3577747829e8bd5931e9f48c782d6423fe6
This commit is contained in:
Gerald Squelart 2017-05-31 18:17:37 +12:00
parent 64def1c9bb
commit 7e4d1255aa
2 changed files with 8 additions and 8 deletions

View File

@ -30,7 +30,7 @@ ResourceStream::ReadAt(int64_t aOffset, void* aBuffer, size_t aCount,
uint64_t offset = aOffset + sum;
char* buffer = reinterpret_cast<char*>(aBuffer) + sum;
uint32_t toRead = aCount - sum;
nsresult rv = mResource->ReadAt(offset, buffer, toRead, &bytesRead);
nsresult rv = mResource.ReadAt(offset, buffer, toRead, &bytesRead);
if (NS_FAILED(rv)) {
return false;
}
@ -45,8 +45,8 @@ bool
ResourceStream::CachedReadAt(int64_t aOffset, void* aBuffer, size_t aCount,
size_t* aBytesRead)
{
nsresult rv = mResource->ReadFromCache(reinterpret_cast<char*>(aBuffer),
aOffset, aCount);
nsresult rv = mResource.GetResource()->ReadFromCache(
reinterpret_cast<char*>(aBuffer), aOffset, aCount);
if (NS_FAILED(rv)) {
*aBytesRead = 0;
return false;
@ -58,9 +58,9 @@ ResourceStream::CachedReadAt(int64_t aOffset, void* aBuffer, size_t aCount,
bool
ResourceStream::Length(int64_t* aSize)
{
if (mResource->GetLength() < 0)
if (mResource.GetLength() < 0)
return false;
*aSize = mResource->GetLength();
*aSize = mResource.GetLength();
return true;
}

View File

@ -25,13 +25,13 @@ public:
void Pin()
{
mResource->Pin();
mResource.GetResource()->Pin();
++mPinCount;
}
void Unpin()
{
mResource->Unpin();
mResource.GetResource()->Unpin();
MOZ_ASSERT(mPinCount);
--mPinCount;
}
@ -40,7 +40,7 @@ protected:
virtual ~ResourceStream();
private:
RefPtr<mozilla::MediaResource> mResource;
mozilla::MediaResourceIndex mResource;
uint32_t mPinCount;
};