OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/video_capture_buffer_pool.h" | 5 #include "content/browser/renderer_host/media/video_capture_buffer_pool.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
11 #include "content/browser/gpu/browser_gpu_memory_buffer_manager.h" | 11 #include "content/browser/gpu/browser_gpu_memory_buffer_manager.h" |
12 #include "content/public/browser/browser_thread.h" | 12 #include "content/public/browser/browser_thread.h" |
13 #include "ui/gfx/buffer_format_util.h" | 13 #include "ui/gfx/buffer_format_util.h" |
14 | 14 |
15 namespace content { | 15 namespace content { |
16 | 16 |
17 const int VideoCaptureBufferPool::kInvalidId = -1; | 17 const int VideoCaptureBufferPool::kInvalidId = -1; |
18 | 18 |
19 // A simple holder of a memory-backed buffer and accessors to it. | 19 // A simple holder of a memory-backed buffer and accessors to it. |
20 class SimpleBufferHandle final : public VideoCaptureBufferPool::BufferHandle { | 20 class SimpleBufferHandle final : public VideoCaptureBufferPool::BufferHandle { |
21 public: | 21 public: |
22 SimpleBufferHandle(void* data, | 22 SimpleBufferHandle(void* data, |
23 size_t mapped_size, | 23 size_t mapped_size, |
24 base::SharedMemoryHandle handle) | 24 base::SharedMemoryHandle handle) |
25 : data_(data), | 25 : data_(data), |
26 mapped_size_(mapped_size) | 26 mapped_size_(mapped_size) |
27 #if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS)) | 27 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
28 , | 28 , |
29 handle_(handle) | 29 handle_(handle) |
30 #endif | 30 #endif |
31 { | 31 { |
32 } | 32 } |
33 ~SimpleBufferHandle() override {} | 33 ~SimpleBufferHandle() override {} |
34 | 34 |
35 gfx::Size dimensions() const override { | 35 gfx::Size dimensions() const override { |
36 NOTREACHED(); | 36 NOTREACHED(); |
37 return gfx::Size(); | 37 return gfx::Size(); |
38 } | 38 } |
39 size_t mapped_size() const override { return mapped_size_; } | 39 size_t mapped_size() const override { return mapped_size_; } |
40 void* data(int plane) override { | 40 void* data(int plane) override { |
41 DCHECK_EQ(plane, 0); | 41 DCHECK_EQ(plane, 0); |
42 return data_; | 42 return data_; |
43 } | 43 } |
44 ClientBuffer AsClientBuffer(int plane) override { | 44 ClientBuffer AsClientBuffer(int plane) override { |
45 NOTREACHED(); | 45 NOTREACHED(); |
46 return nullptr; | 46 return nullptr; |
47 } | 47 } |
48 #if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS)) | 48 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
49 base::FileDescriptor AsPlatformFile() override { | 49 base::FileDescriptor AsPlatformFile() override { |
50 return handle_; | 50 return handle_; |
51 } | 51 } |
52 #endif | 52 #endif |
53 | 53 |
54 private: | 54 private: |
55 void* const data_; | 55 void* const data_; |
56 const size_t mapped_size_; | 56 const size_t mapped_size_; |
57 #if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS)) | 57 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
58 const base::SharedMemoryHandle handle_; | 58 const base::SharedMemoryHandle handle_; |
59 #endif | 59 #endif |
60 }; | 60 }; |
61 | 61 |
62 // A holder of a GpuMemoryBuffer-backed buffer. Holds weak references to | 62 // A holder of a GpuMemoryBuffer-backed buffer. Holds weak references to |
63 // GpuMemoryBuffer-backed buffers and provides accessors to their data. | 63 // GpuMemoryBuffer-backed buffers and provides accessors to their data. |
64 class GpuMemoryBufferBufferHandle final | 64 class GpuMemoryBufferBufferHandle final |
65 : public VideoCaptureBufferPool::BufferHandle { | 65 : public VideoCaptureBufferPool::BufferHandle { |
66 public: | 66 public: |
67 GpuMemoryBufferBufferHandle(const gfx::Size& dimensions, | 67 GpuMemoryBufferBufferHandle(const gfx::Size& dimensions, |
(...skipping 10 matching lines...) Expand all Loading... |
78 DCHECK_GE(plane, 0); | 78 DCHECK_GE(plane, 0); |
79 DCHECK_LT(plane, static_cast<int>(gmbs_->size())); | 79 DCHECK_LT(plane, static_cast<int>(gmbs_->size())); |
80 DCHECK((*gmbs_)[plane]); | 80 DCHECK((*gmbs_)[plane]); |
81 return (*gmbs_)[plane]->memory(0); | 81 return (*gmbs_)[plane]->memory(0); |
82 } | 82 } |
83 ClientBuffer AsClientBuffer(int plane) override { | 83 ClientBuffer AsClientBuffer(int plane) override { |
84 DCHECK_GE(plane, 0); | 84 DCHECK_GE(plane, 0); |
85 DCHECK_LT(plane, static_cast<int>(gmbs_->size())); | 85 DCHECK_LT(plane, static_cast<int>(gmbs_->size())); |
86 return (*gmbs_)[plane]->AsClientBuffer(); | 86 return (*gmbs_)[plane]->AsClientBuffer(); |
87 } | 87 } |
88 #if defined(OS_POSIX) && !(defined(OS_MACOSX) && !defined(OS_IOS)) | 88 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
89 base::FileDescriptor AsPlatformFile() override { | 89 base::FileDescriptor AsPlatformFile() override { |
90 NOTREACHED(); | 90 NOTREACHED(); |
91 return base::FileDescriptor(); | 91 return base::FileDescriptor(); |
92 } | 92 } |
93 #endif | 93 #endif |
94 | 94 |
95 private: | 95 private: |
96 const gfx::Size dimensions_; | 96 const gfx::Size dimensions_; |
97 std::vector<scoped_ptr<gfx::GpuMemoryBuffer>>* const gmbs_; | 97 std::vector<scoped_ptr<gfx::GpuMemoryBuffer>>* const gmbs_; |
98 }; | 98 }; |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 return buffer_id; | 456 return buffer_id; |
457 } | 457 } |
458 | 458 |
459 VideoCaptureBufferPool::Tracker* VideoCaptureBufferPool::GetTracker( | 459 VideoCaptureBufferPool::Tracker* VideoCaptureBufferPool::GetTracker( |
460 int buffer_id) { | 460 int buffer_id) { |
461 TrackerMap::const_iterator it = trackers_.find(buffer_id); | 461 TrackerMap::const_iterator it = trackers_.find(buffer_id); |
462 return (it == trackers_.end()) ? NULL : it->second; | 462 return (it == trackers_.end()) ? NULL : it->second; |
463 } | 463 } |
464 | 464 |
465 } // namespace content | 465 } // namespace content |
OLD | NEW |