Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Side by Side Diff: media/capture/video/shared_memory_buffer_tracker.cc

Issue 2523773002: [Mojo Video Capture] Move SharedMem Tracker/BufferHandle/Factory from content to media (Closed)
Patch Set: mcasas comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/media/shared_memory_buffer_tracker.h" 5 #include "media/capture/video/shared_memory_buffer_tracker.h"
6 6
7 #include "base/memory/ptr_util.h" 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" 8 #include "mojo/public/cpp/system/platform_handle.h"
10 9
11 namespace content { 10 namespace media {
12 11
13 SharedMemoryBufferTracker::SharedMemoryBufferTracker() 12 SharedMemoryBufferTracker::SharedMemoryBufferTracker()
14 : VideoCaptureBufferTracker() {} 13 : VideoCaptureBufferTracker() {}
15 14
16 bool SharedMemoryBufferTracker::Init(const gfx::Size& dimensions, 15 bool SharedMemoryBufferTracker::Init(const gfx::Size& dimensions,
17 media::VideoPixelFormat format, 16 VideoPixelFormat format,
18 media::VideoPixelStorage storage_type, 17 VideoPixelStorage storage_type,
19 base::Lock* lock) { 18 base::Lock* lock) {
20 DVLOG(2) << __func__ << "allocating ShMem of " << dimensions.ToString(); 19 DVLOG(2) << __func__ << "allocating ShMem of " << dimensions.ToString();
21 set_dimensions(dimensions); 20 set_dimensions(dimensions);
22 // |dimensions| can be 0x0 for trackers that do not require memory backing. 21 // |dimensions| can be 0x0 for trackers that do not require memory backing.
23 set_max_pixel_count(dimensions.GetArea()); 22 set_max_pixel_count(dimensions.GetArea());
24 set_pixel_format(format); 23 set_pixel_format(format);
25 set_storage_type(storage_type); 24 set_storage_type(storage_type);
26 mapped_size_ = 25 mapped_size_ = VideoCaptureFormat(dimensions, 0.0f, format, storage_type)
27 media::VideoCaptureFormat(dimensions, 0.0f, format, storage_type) 26 .ImageAllocationSize();
28 .ImageAllocationSize();
29 if (!mapped_size_) 27 if (!mapped_size_)
30 return true; 28 return true;
31 return shared_memory_.CreateAndMapAnonymous(mapped_size_); 29 return shared_memory_.CreateAndMapAnonymous(mapped_size_);
32 } 30 }
33 31
34 std::unique_ptr<media::VideoCaptureBufferHandle> 32 std::unique_ptr<VideoCaptureBufferHandle>
35 SharedMemoryBufferTracker::GetBufferHandle() { 33 SharedMemoryBufferTracker::GetBufferHandle() {
36 return base::MakeUnique<SharedMemoryBufferHandle>(this); 34 return base::MakeUnique<SharedMemoryBufferHandle>(this);
37 } 35 }
38 36
39 mojo::ScopedSharedBufferHandle 37 mojo::ScopedSharedBufferHandle
40 SharedMemoryBufferTracker::GetHandleForTransit() { 38 SharedMemoryBufferTracker::GetHandleForTransit() {
41 return mojo::WrapSharedMemoryHandle( 39 return mojo::WrapSharedMemoryHandle(
42 base::SharedMemory::DuplicateHandle(shared_memory_.handle()), 40 base::SharedMemory::DuplicateHandle(shared_memory_.handle()),
43 mapped_size_, false /* read_only */); 41 mapped_size_, false /* read_only */);
44 } 42 }
45 43
46 } // namespace content 44 SharedMemoryBufferHandle::SharedMemoryBufferHandle(
45 SharedMemoryBufferTracker* tracker)
46 : tracker_(tracker) {}
47
48 SharedMemoryBufferHandle::~SharedMemoryBufferHandle() = default;
49
50 gfx::Size SharedMemoryBufferHandle::dimensions() const {
51 return tracker_->dimensions();
52 }
53
54 size_t SharedMemoryBufferHandle::mapped_size() const {
55 return tracker_->mapped_size_;
56 }
57
58 void* SharedMemoryBufferHandle::data(int plane) {
59 DCHECK_EQ(0, plane);
60 return tracker_->shared_memory_.memory();
61 }
62
63 #if defined(OS_POSIX) && !defined(OS_MACOSX)
64 base::FileDescriptor SharedMemoryBufferHandle::AsPlatformFile() {
65 return tracker_->shared_memory_.handle();
66 }
67 #endif
68
69 bool SharedMemoryBufferHandle::IsBackedByVideoFrame() const {
70 return false;
71 }
72
73 scoped_refptr<VideoFrame> SharedMemoryBufferHandle::GetVideoFrame() {
74 return scoped_refptr<VideoFrame>();
75 }
76
77 } // namespace media
OLDNEW
« no previous file with comments | « media/capture/video/shared_memory_buffer_tracker.h ('k') | media/capture/video/video_capture_buffer_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698