Bug 1385155. P3 - let MP4Stream use SourceBufferResource instead of MediaResourceIndex. draft
authorJW Wang <jwwang@mozilla.com>
Thu, 27 Jul 2017 17:58:45 +0800
changeset 617171 9d793f64987363b559c2862bb57515e1a36da05c
parent 617170 6bdb05f8bbd51f141b8ba47a2af916cf25792510
child 639728 db371686b6792459af96c853113f4a9e169d62df
push id70960
push userjwwang@mozilla.com
push dateFri, 28 Jul 2017 02:41:41 +0000
bugs1385155
milestone56.0a1
Bug 1385155. P3 - let MP4Stream use SourceBufferResource instead of MediaResourceIndex. MozReview-Commit-ID: Gf6FEQAOLRk
dom/media/mediasource/ContainerParser.cpp
--- a/dom/media/mediasource/ContainerParser.cpp
+++ b/dom/media/mediasource/ContainerParser.cpp
@@ -358,33 +358,33 @@ private:
   Maybe<WebMTimeDataOffset> mLastMapping;
 };
 
 #ifdef MOZ_FMP4
 
 class MP4Stream : public mp4_demuxer::Stream
 {
 public:
-  explicit MP4Stream(MediaResource* aResource);
+  explicit MP4Stream(SourceBufferResource* aResource);
   virtual ~MP4Stream();
   bool ReadAt(int64_t aOffset,
               void* aBuffer,
               size_t aCount,
               size_t* aBytesRead) override;
   bool CachedReadAt(int64_t aOffset,
                     void* aBuffer,
                     size_t aCount,
                     size_t* aBytesRead) override;
   bool Length(int64_t* aSize) override;
 
 private:
-  MediaResourceIndex mResource;
+  RefPtr<SourceBufferResource> mResource;
 };
 
-MP4Stream::MP4Stream(MediaResource* aResource)
+MP4Stream::MP4Stream(SourceBufferResource* aResource)
   : mResource(aResource)
 {
   MOZ_COUNT_CTOR(MP4Stream);
   MOZ_ASSERT(aResource);
 }
 
 MP4Stream::~MP4Stream()
 {
@@ -401,32 +401,32 @@ MP4Stream::ReadAt(int64_t aOffset,
 }
 
 bool
 MP4Stream::CachedReadAt(int64_t aOffset,
                         void* aBuffer,
                         size_t aCount,
                         size_t* aBytesRead)
 {
-  nsresult rv = mResource.GetResource()->ReadFromCache(
+  nsresult rv = mResource->ReadFromCache(
     reinterpret_cast<char*>(aBuffer), aOffset, aCount);
   if (NS_FAILED(rv)) {
     *aBytesRead = 0;
     return false;
   }
   *aBytesRead = aCount;
   return true;
 }
 
 bool
 MP4Stream::Length(int64_t* aSize)
 {
-  if (mResource.GetLength() < 0)
+  if (mResource->GetLength() < 0)
     return false;
-  *aSize = mResource.GetLength();
+  *aSize = mResource->GetLength();
   return true;
 }
 
 class MP4ContainerParser : public ContainerParser
 {
 public:
   explicit MP4ContainerParser(const MediaContainerType& aType)
     : ContainerParser(aType)