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

Side by Side Diff: content/browser/renderer_host/media/video_capture_buffer_pool.cc

Issue 1016773002: MJPEG acceleration for video capture using VAAPI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: support multiple jpeg decoder Created 5 years, 8 months 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 (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 10
(...skipping 25 matching lines...) Expand all
36 36
37 // Tracker specifics for SharedMemory. 37 // Tracker specifics for SharedMemory.
38 class VideoCaptureBufferPool::SharedMemTracker final : public Tracker { 38 class VideoCaptureBufferPool::SharedMemTracker final : public Tracker {
39 public: 39 public:
40 SharedMemTracker(); 40 SharedMemTracker();
41 41
42 bool Init(VideoFrame::Format format, const gfx::Size& dimensions) override; 42 bool Init(VideoFrame::Format format, const gfx::Size& dimensions) override;
43 void* storage() override { return shared_memory_.memory(); } 43 void* storage() override { return shared_memory_.memory(); }
44 size_t requested_size() override { return shared_memory_.requested_size(); } 44 size_t requested_size() override { return shared_memory_.requested_size(); }
45 size_t mapped_size() override { return shared_memory_.mapped_size(); } 45 size_t mapped_size() override { return shared_memory_.mapped_size(); }
46 base::SharedMemoryHandle handle() override { return shared_memory_.handle(); }
46 47
47 bool ShareToProcess(base::ProcessHandle process_handle, 48 bool ShareToProcess(base::ProcessHandle process_handle,
48 base::SharedMemoryHandle* new_handle) override { 49 base::SharedMemoryHandle* new_handle) override {
49 return shared_memory_.ShareToProcess(process_handle, new_handle); 50 return shared_memory_.ShareToProcess(process_handle, new_handle);
50 } 51 }
51 52
52 private: 53 private:
53 // The memory created to be shared with renderer processes. 54 // The memory created to be shared with renderer processes.
54 base::SharedMemory shared_memory_; 55 base::SharedMemory shared_memory_;
55 }; 56 };
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 if (tracker->ShareToProcess(process_handle, &remote_handle)) { 101 if (tracker->ShareToProcess(process_handle, &remote_handle)) {
101 *memory_size = tracker->mapped_size(); 102 *memory_size = tracker->mapped_size();
102 return remote_handle; 103 return remote_handle;
103 } 104 }
104 DPLOG(ERROR) << "Error mapping Shared Memory."; 105 DPLOG(ERROR) << "Error mapping Shared Memory.";
105 return base::SharedMemoryHandle(); 106 return base::SharedMemoryHandle();
106 } 107 }
107 108
108 bool VideoCaptureBufferPool::GetBufferInfo(int buffer_id, 109 bool VideoCaptureBufferPool::GetBufferInfo(int buffer_id,
109 void** storage, 110 void** storage,
110 size_t* size) { 111 size_t* size,
112 base::SharedMemoryHandle* handle) {
111 base::AutoLock lock(lock_); 113 base::AutoLock lock(lock_);
112 114
113 Tracker* tracker = GetTracker(buffer_id); 115 Tracker* tracker = GetTracker(buffer_id);
114 if (!tracker) { 116 if (!tracker) {
115 NOTREACHED() << "Invalid buffer_id."; 117 NOTREACHED() << "Invalid buffer_id.";
116 return false; 118 return false;
117 } 119 }
118 120
119 DCHECK(tracker->held_by_producer()); 121 DCHECK(tracker->held_by_producer());
120 *storage = tracker->storage(); 122 *storage = tracker->storage();
121 *size = tracker->mapped_size(); 123 *size = tracker->mapped_size();
124 *handle = tracker->handle();
122 return true; 125 return true;
123 } 126 }
124 127
125 int VideoCaptureBufferPool::ReserveForProducer(media::VideoPixelFormat format, 128 int VideoCaptureBufferPool::ReserveForProducer(media::VideoPixelFormat format,
126 const gfx::Size& dimensions, 129 const gfx::Size& dimensions,
127 int* buffer_id_to_drop) { 130 int* buffer_id_to_drop) {
128 base::AutoLock lock(lock_); 131 base::AutoLock lock(lock_);
129 return ReserveForProducerInternal(format, dimensions, buffer_id_to_drop); 132 return ReserveForProducerInternal(format, dimensions, buffer_id_to_drop);
130 } 133 }
131 134
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 return buffer_id; 232 return buffer_id;
230 } 233 }
231 234
232 VideoCaptureBufferPool::Tracker* VideoCaptureBufferPool::GetTracker( 235 VideoCaptureBufferPool::Tracker* VideoCaptureBufferPool::GetTracker(
233 int buffer_id) { 236 int buffer_id) {
234 TrackerMap::const_iterator it = trackers_.find(buffer_id); 237 TrackerMap::const_iterator it = trackers_.find(buffer_id);
235 return (it == trackers_.end()) ? NULL : it->second; 238 return (it == trackers_.end()) ? NULL : it->second;
236 } 239 }
237 240
238 } // namespace content 241 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698