summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/webcodecs/plane.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/webcodecs/plane.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/webcodecs/plane.cc121
1 files changed, 0 insertions, 121 deletions
diff --git a/chromium/third_party/blink/renderer/modules/webcodecs/plane.cc b/chromium/third_party/blink/renderer/modules/webcodecs/plane.cc
deleted file mode 100644
index aa4b37e8360..00000000000
--- a/chromium/third_party/blink/renderer/modules/webcodecs/plane.cc
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2020 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "third_party/blink/renderer/modules/webcodecs/plane.h"
-
-#include <string.h>
-
-#include "third_party/blink/renderer/platform/bindings/exception_code.h"
-#include "third_party/blink/renderer/platform/bindings/exception_state.h"
-#include "ui/gfx/gpu_memory_buffer.h"
-
-namespace blink {
-
-namespace {
-
-void CopyPlane(const uint8_t* plane,
- size_t copy_size,
- size_t trailing_zeros_size,
- uint8_t* dest) {
- // Copy plane bytes.
- memcpy(dest, plane, copy_size);
-
- // Zero trailing padding bytes.
- memset(dest + copy_size, 0, trailing_zeros_size);
-}
-
-} // namespace
-
-Plane::Plane(scoped_refptr<VideoFrameHandle> handle, size_t plane)
- : handle_(std::move(handle)), plane_(plane) {
-#if DCHECK_IS_ON()
- // Validate the plane index, but only if the handle is valid.
- auto local_frame = handle_->frame();
- if (local_frame) {
- DCHECK(local_frame->IsMappable() || local_frame->HasGpuMemoryBuffer());
- DCHECK_LT(plane, local_frame->layout().num_planes());
- }
-#endif // DCHECK_IS_ON()
-}
-
-uint32_t Plane::stride() const {
- auto local_frame = handle_->frame();
- if (!local_frame)
- return 0;
- // TODO(sandersd): Consider returning row_bytes() instead. This would imply
- // removing padding bytes in copyInto().
- return local_frame->stride(plane_);
-}
-
-uint32_t Plane::rows() const {
- auto local_frame = handle_->frame();
- if (!local_frame)
- return 0;
- return local_frame->rows(plane_);
-}
-
-uint32_t Plane::length() const {
- auto local_frame = handle_->frame();
- if (!local_frame)
- return 0;
-
- // Note: this could be slightly larger than the actual data size. readInto()
- // will pad with zeros.
- return local_frame->rows(plane_) * local_frame->stride(plane_);
-}
-
-void Plane::readInto(MaybeShared<DOMArrayBufferView> dst,
- ExceptionState& exception_state) {
- auto local_frame = handle_->frame();
- if (!local_frame) {
- exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
- "Cannot read from closed VideoFrame.");
- return;
- }
-
- // Note: these methods all return int.
- size_t rows = local_frame->rows(plane_);
- size_t row_bytes = local_frame->row_bytes(plane_);
- size_t stride = local_frame->stride(plane_);
-
- DCHECK_GT(rows, 0u); // should fail VideoFrame::IsValidConfig()
- DCHECK_GT(row_bytes, 0u); // should fail VideoFrame::IsValidConfig()
- DCHECK_GE(stride, row_bytes);
-
- size_t total_size = rows * stride;
- size_t trailing_zeros_size = stride - row_bytes;
- size_t copy_size = total_size - trailing_zeros_size;
-
- // Note: byteLength is zero if the buffer is detached.
- uint8_t* base = static_cast<uint8_t*>(dst->BaseAddressMaybeShared());
- if (!base) {
- exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
- "Destination buffer is not valid.");
- return;
- }
- if (total_size > dst->byteLength()) {
- exception_state.ThrowDOMException(
- DOMExceptionCode::kInvalidStateError,
- "Destination buffer is not large enough.");
- return;
- }
-
- if (local_frame->IsMappable()) {
- CopyPlane(local_frame->data(plane_), copy_size, trailing_zeros_size, base);
- return;
- }
-
- DCHECK(local_frame->HasGpuMemoryBuffer());
- auto* gmb = local_frame->GetGpuMemoryBuffer();
- if (!gmb->Map()) {
- exception_state.ThrowDOMException(DOMExceptionCode::kInvalidStateError,
- "Could not map video frame into memory.");
- return;
- }
- CopyPlane(static_cast<const uint8_t*>(gmb->memory(plane_)), copy_size,
- trailing_zeros_size, base);
- gmb->Unmap();
-}
-
-} // namespace blink