| OLD | NEW |
| (Empty) |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "content/browser/renderer_host/media/shared_memory_buffer_tracker.h" | |
| 6 | |
| 7 #include "base/memory/ptr_util.h" | |
| 8 #include "content/browser/renderer_host/media/shared_memory_buffer_handle.h" | |
| 9 #include "mojo/public/cpp/system/platform_handle.h" | |
| 10 | |
| 11 namespace content { | |
| 12 | |
| 13 SharedMemoryBufferTracker::SharedMemoryBufferTracker() | |
| 14 : VideoCaptureBufferTracker() {} | |
| 15 | |
| 16 bool SharedMemoryBufferTracker::Init(const gfx::Size& dimensions, | |
| 17 media::VideoPixelFormat format, | |
| 18 media::VideoPixelStorage storage_type, | |
| 19 base::Lock* lock) { | |
| 20 DVLOG(2) << __func__ << "allocating ShMem of " << dimensions.ToString(); | |
| 21 set_dimensions(dimensions); | |
| 22 // |dimensions| can be 0x0 for trackers that do not require memory backing. | |
| 23 set_max_pixel_count(dimensions.GetArea()); | |
| 24 set_pixel_format(format); | |
| 25 set_storage_type(storage_type); | |
| 26 mapped_size_ = | |
| 27 media::VideoCaptureFormat(dimensions, 0.0f, format, storage_type) | |
| 28 .ImageAllocationSize(); | |
| 29 if (!mapped_size_) | |
| 30 return true; | |
| 31 return shared_memory_.CreateAndMapAnonymous(mapped_size_); | |
| 32 } | |
| 33 | |
| 34 std::unique_ptr<media::VideoCaptureBufferHandle> | |
| 35 SharedMemoryBufferTracker::GetBufferHandle() { | |
| 36 return base::MakeUnique<SharedMemoryBufferHandle>(this); | |
| 37 } | |
| 38 | |
| 39 mojo::ScopedSharedBufferHandle | |
| 40 SharedMemoryBufferTracker::GetHandleForTransit() { | |
| 41 return mojo::WrapSharedMemoryHandle( | |
| 42 base::SharedMemory::DuplicateHandle(shared_memory_.handle()), | |
| 43 mapped_size_, false /* read_only */); | |
| 44 } | |
| 45 | |
| 46 } // namespace content | |
| OLD | NEW |