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

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

Issue 1267883002: Pass GpuMemoryBuffer backed VideoFrame from browser to renderer processes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gmbtracker-multiple
Patch Set: reveman@ comment: remove multiple textures. Created 5 years, 4 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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_device_client.h" 5 #include "content/browser/renderer_host/media/video_capture_device_client.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 class AutoReleaseBuffer : public media::VideoCaptureDevice::Client::Buffer { 114 class AutoReleaseBuffer : public media::VideoCaptureDevice::Client::Buffer {
115 public: 115 public:
116 AutoReleaseBuffer(const scoped_refptr<VideoCaptureBufferPool>& pool, 116 AutoReleaseBuffer(const scoped_refptr<VideoCaptureBufferPool>& pool,
117 int buffer_id) 117 int buffer_id)
118 : id_(buffer_id), 118 : id_(buffer_id),
119 pool_(pool), 119 pool_(pool),
120 buffer_handle_(pool_->GetBufferHandle(buffer_id).Pass()) { 120 buffer_handle_(pool_->GetBufferHandle(buffer_id).Pass()) {
121 DCHECK(pool_.get()); 121 DCHECK(pool_.get());
122 } 122 }
123 int id() const override { return id_; } 123 int id() const override { return id_; }
124 size_t size() const override { return buffer_handle_->size(); } 124 gfx::Size dimensions() const override { return buffer_handle_->dimensions(); }
125 size_t mapped_size() const override { return buffer_handle_->mapped_size(); }
125 void* data(int plane) override { return buffer_handle_->data(plane); } 126 void* data(int plane) override { return buffer_handle_->data(plane); }
126 ClientBuffer AsClientBuffer(int plane) override { 127 ClientBuffer AsClientBuffer(int plane) override {
127 return buffer_handle_->AsClientBuffer(plane); 128 return buffer_handle_->AsClientBuffer(plane);
128 } 129 }
129 #if defined(OS_POSIX) 130 #if defined(OS_POSIX)
130 base::FileDescriptor AsPlatformFile() override { 131 base::FileDescriptor AsPlatformFile() override {
131 return buffer_handle_->AsPlatformFile(); 132 return buffer_handle_->AsPlatformFile();
132 } 133 }
133 #endif 134 #endif
134 135
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 break; 348 break;
348 case media::VIDEO_CAPTURE_PIXEL_FORMAT_MJPEG: 349 case media::VIDEO_CAPTURE_PIXEL_FORMAT_MJPEG:
349 origin_colorspace = libyuv::FOURCC_MJPG; 350 origin_colorspace = libyuv::FOURCC_MJPG;
350 break; 351 break;
351 default: 352 default:
352 NOTREACHED(); 353 NOTREACHED();
353 } 354 }
354 355
355 // The input |length| can be greater than the required buffer size because of 356 // The input |length| can be greater than the required buffer size because of
356 // paddings and/or alignments, but it cannot be smaller. 357 // paddings and/or alignments, but it cannot be smaller.
357 DCHECK_GE(static_cast<size_t>(length), frame_format.ImageAllocationSize()); 358 // DCHECK_GE(static_cast<size_t>(length), frame_format.ImageAllocationSize());
reveman 2015/08/26 11:54:04 why comment this out?
emircan 2015/08/26 21:23:11 My bad, leftover from crbug.com/520740.
358 359
359 if (external_jpeg_decoder_) { 360 if (external_jpeg_decoder_) {
360 const VideoCaptureGpuJpegDecoder::STATUS status = 361 const VideoCaptureGpuJpegDecoder::STATUS status =
361 external_jpeg_decoder_->GetStatus(); 362 external_jpeg_decoder_->GetStatus();
362 if (status == VideoCaptureGpuJpegDecoder::FAILED) { 363 if (status == VideoCaptureGpuJpegDecoder::FAILED) {
363 external_jpeg_decoder_.reset(); 364 external_jpeg_decoder_.reset();
364 } else if (status == VideoCaptureGpuJpegDecoder::INIT_PASSED && 365 } else if (status == VideoCaptureGpuJpegDecoder::INIT_PASSED &&
365 frame_format.pixel_format == media::VIDEO_CAPTURE_PIXEL_FORMAT_MJPEG && 366 frame_format.pixel_format == media::VIDEO_CAPTURE_PIXEL_FORMAT_MJPEG &&
366 rotation == 0 && !flip) { 367 rotation == 0 && !flip) {
367 external_jpeg_decoder_->DecodeCapturedData(data, length, frame_format, 368 external_jpeg_decoder_->DecodeCapturedData(data, length, frame_format,
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 void VideoCaptureDeviceClient::TextureWrapHelper::OnError( 768 void VideoCaptureDeviceClient::TextureWrapHelper::OnError(
768 const std::string& message) { 769 const std::string& message) {
769 DCHECK(capture_task_runner_->BelongsToCurrentThread()); 770 DCHECK(capture_task_runner_->BelongsToCurrentThread());
770 DLOG(ERROR) << message; 771 DLOG(ERROR) << message;
771 BrowserThread::PostTask( 772 BrowserThread::PostTask(
772 BrowserThread::IO, FROM_HERE, 773 BrowserThread::IO, FROM_HERE,
773 base::Bind(&VideoCaptureController::DoErrorOnIOThread, controller_)); 774 base::Bind(&VideoCaptureController::DoErrorOnIOThread, controller_));
774 } 775 }
775 776
776 } // namespace content 777 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698