Motown: Stop requiring size when releasing payload buffers.
PayloadAllocator and related classes in Motown have required the size of
a payload buffer to be specified on release. This was done to check for
agreement with the allocation. Providing the size on release isn't
always convenient. In getting video to work, a case has come up in which
the added code complexity required to provide the size parameter is too
high a penalty to pay for the small increment in safety.

R=kulakowski@chromium.org

Review URL: https://codereview.chromium.org/2081753002 .
diff --git a/mojo/services/media/common/cpp/fifo_allocator.cc b/mojo/services/media/common/cpp/fifo_allocator.cc
index 0823b44..b92b4e1 100644
--- a/mojo/services/media/common/cpp/fifo_allocator.cc
+++ b/mojo/services/media/common/cpp/fifo_allocator.cc
@@ -67,22 +67,20 @@
   return allocated->offset;
 }
 
-void FifoAllocator::ReleaseRegion(uint64_t size, uint64_t offset) {
+void FifoAllocator::ReleaseRegion(uint64_t offset) {
   // Start at active_->next. That's usually the region we're looking for.
-  bool released = Release(size, offset, active_->next, nullptr) ||
-                  Release(size, offset, front_, active_);
+  bool released = Release(offset, active_->next, nullptr) ||
+                  Release(offset, front_, active_);
   MOJO_DCHECK(released);
 }
 
-bool FifoAllocator::Release(uint64_t size,
-                            uint64_t offset,
+bool FifoAllocator::Release(uint64_t offset,
                             Region* begin,
                             Region* end) {
   MOJO_DCHECK(begin != nullptr || end == nullptr);
   for (Region* region = begin; region != end; region = region->next) {
     if (region->offset == offset) {
       MOJO_DCHECK(region->allocated);
-      MOJO_DCHECK(region->size == size);
       region->allocated = false;
 
       Region* prev = region->prev;
diff --git a/mojo/services/media/common/cpp/fifo_allocator.h b/mojo/services/media/common/cpp/fifo_allocator.h
index 06e66e5..f2e07d4 100644
--- a/mojo/services/media/common/cpp/fifo_allocator.h
+++ b/mojo/services/media/common/cpp/fifo_allocator.h
@@ -77,7 +77,7 @@
   uint64_t AllocateRegion(uint64_t size);
 
   // Releases a previously-allocated region.
-  void ReleaseRegion(uint64_t size, uint64_t offset);
+  void ReleaseRegion(uint64_t offset);
 
  private:
   // List element to track allocated and free regions.
@@ -93,7 +93,7 @@
 
   // Releases the specified region if it's found between begin (inclusive) and
   // end (exclusive).
-  bool Release(uint64_t size, uint64_t offset, Region* begin, Region* end);
+  bool Release(uint64_t offset, Region* begin, Region* end);
 
   // Advances the active region to one that's at least the specified size.
   // Returns false if none could be found.
diff --git a/mojo/services/media/common/cpp/shared_media_buffer_allocator.h b/mojo/services/media/common/cpp/shared_media_buffer_allocator.h
index 994e83f..3700a13 100644
--- a/mojo/services/media/common/cpp/shared_media_buffer_allocator.h
+++ b/mojo/services/media/common/cpp/shared_media_buffer_allocator.h
@@ -36,9 +36,9 @@
 
   // Releases a region of the buffer previously allocated by calling
   // AllocateRegionByOffset.
-  void ReleaseRegionByOffset(uint64_t size, uint64_t offset) {
+  void ReleaseRegionByOffset(uint64_t offset) {
     std::lock_guard<std::mutex> lock(lock_);
-    fifo_allocator_.ReleaseRegion(size, offset);
+    fifo_allocator_.ReleaseRegion(offset);
   }
 
   // Allocates a region of the buffer returning a pointer. If the requested
@@ -49,8 +49,8 @@
 
   // Releases a region of the buffer previously allocated by calling
   // AllocateRegion.
-  void ReleaseRegion(uint64_t size, void* ptr) {
-    ReleaseRegionByOffset(size, OffsetFromPtr(ptr));
+  void ReleaseRegion(void* ptr) {
+    ReleaseRegionByOffset(OffsetFromPtr(ptr));
   }
 
  protected:
diff --git a/services/media/framework/packet.cc b/services/media/framework/packet.cc
index eef3e3e..3c96701 100644
--- a/services/media/framework/packet.cc
+++ b/services/media/framework/packet.cc
@@ -32,7 +32,7 @@
     // payload() and handling deallocation themselves, so allocator_ can be
     // nullptr even when payload() is not.
     if (payload() != nullptr && allocator_ != nullptr) {
-      allocator_->ReleasePayloadBuffer(size(), payload());
+      allocator_->ReleasePayloadBuffer(payload());
     }
     delete this;
   }
diff --git a/services/media/framework/payload_allocator.cc b/services/media/framework/payload_allocator.cc
index 3687100..45198f8 100644
--- a/services/media/framework/payload_allocator.cc
+++ b/services/media/framework/payload_allocator.cc
@@ -19,7 +19,7 @@
   // PayloadAllocator implementation.
   void* AllocatePayloadBuffer(size_t size) override;
 
-  void ReleasePayloadBuffer(size_t size, void* buffer) override;
+  void ReleasePayloadBuffer(void* buffer) override;
 };
 
 void* DefaultAllocator::AllocatePayloadBuffer(size_t size) {
@@ -27,8 +27,7 @@
   return std::malloc(static_cast<size_t>(size));
 }
 
-void DefaultAllocator::ReleasePayloadBuffer(size_t size, void* buffer) {
-  DCHECK(size > 0);
+void DefaultAllocator::ReleasePayloadBuffer(void* buffer) {
   DCHECK(buffer);
   std::free(buffer);
 }
diff --git a/services/media/framework/payload_allocator.h b/services/media/framework/payload_allocator.h
index 8e398f3..633cdaa 100644
--- a/services/media/framework/payload_allocator.h
+++ b/services/media/framework/payload_allocator.h
@@ -21,7 +21,7 @@
   virtual void* AllocatePayloadBuffer(size_t size) = 0;
 
   // Releases a buffer previously allocated via AllocatePayloadBuffer.
-  virtual void ReleasePayloadBuffer(size_t size, void* buffer) = 0;
+  virtual void ReleasePayloadBuffer(void* buffer) = 0;
 };
 
 }  // namespace media
diff --git a/services/media/framework_ffmpeg/ffmpeg_decoder_base.h b/services/media/framework_ffmpeg/ffmpeg_decoder_base.h
index 63dd2ed..e829fca 100644
--- a/services/media/framework_ffmpeg/ffmpeg_decoder_base.h
+++ b/services/media/framework_ffmpeg/ffmpeg_decoder_base.h
@@ -57,7 +57,7 @@
 
       if (size_ != 0) {
         DCHECK(buffer_ != nullptr);
-        allocator_->ReleasePayloadBuffer(size_, buffer_);
+        allocator_->ReleasePayloadBuffer(buffer_);
         return;
       }
 
diff --git a/services/media/framework_mojo/mojo_allocator.cc b/services/media/framework_mojo/mojo_allocator.cc
index 6622357..65298fd 100644
--- a/services/media/framework_mojo/mojo_allocator.cc
+++ b/services/media/framework_mojo/mojo_allocator.cc
@@ -13,8 +13,8 @@
   return AllocateRegion(size);
 }
 
-void MojoAllocator::ReleasePayloadBuffer(size_t size, void* buffer) {
-  ReleaseRegion(size, buffer);
+void MojoAllocator::ReleasePayloadBuffer(void* buffer) {
+  ReleaseRegion(buffer);
 }
 
 }  // namespace media
diff --git a/services/media/framework_mojo/mojo_allocator.h b/services/media/framework_mojo/mojo_allocator.h
index 75a8371..a32d600 100644
--- a/services/media/framework_mojo/mojo_allocator.h
+++ b/services/media/framework_mojo/mojo_allocator.h
@@ -20,7 +20,7 @@
   // PayloadAllocator implementation.
   void* AllocatePayloadBuffer(size_t size) override;
 
-  void ReleasePayloadBuffer(size_t size, void* buffer) override;
+  void ReleasePayloadBuffer(void* buffer) override;
 };
 
 }  // namespace media