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