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

Side by Side Diff: content/browser/media/capture/web_contents_video_capture_device_unittest.cc

Issue 1016773002: MJPEG acceleration for video capture using VAAPI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix many thread issues 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/media/capture/web_contents_video_capture_device.h" 5 #include "content/browser/media/capture/web_contents_video_capture_device.h"
6 6
7 #include "base/bind_helpers.h" 7 #include "base/bind_helpers.h"
8 #include "base/debug/debugger.h" 8 #include "base/debug/debugger.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 CHECK_EQ(format, media::VideoFrame::I420); 329 CHECK_EQ(format, media::VideoFrame::I420);
330 const size_t frame_bytes = 330 const size_t frame_bytes =
331 media::VideoFrame::AllocationSize(media::VideoFrame::I420, dimensions); 331 media::VideoFrame::AllocationSize(media::VideoFrame::I420, dimensions);
332 int buffer_id_to_drop = VideoCaptureBufferPool::kInvalidId; // Ignored. 332 int buffer_id_to_drop = VideoCaptureBufferPool::kInvalidId; // Ignored.
333 int buffer_id = 333 int buffer_id =
334 buffer_pool_->ReserveForProducer(frame_bytes, &buffer_id_to_drop); 334 buffer_pool_->ReserveForProducer(frame_bytes, &buffer_id_to_drop);
335 if (buffer_id == VideoCaptureBufferPool::kInvalidId) 335 if (buffer_id == VideoCaptureBufferPool::kInvalidId)
336 return NULL; 336 return NULL;
337 void* data; 337 void* data;
338 size_t size; 338 size_t size;
339 buffer_pool_->GetBufferInfo(buffer_id, &data, &size); 339 base::SharedMemoryHandle handle;
340 buffer_pool_->GetBufferInfo(buffer_id, &data, &size, &handle);
340 return scoped_refptr<media::VideoCaptureDevice::Client::Buffer>( 341 return scoped_refptr<media::VideoCaptureDevice::Client::Buffer>(
341 new AutoReleaseBuffer(buffer_pool_, buffer_id, data, size)); 342 new AutoReleaseBuffer(buffer_pool_, buffer_id, data, size, handle));
342 } 343 }
343 344
344 void OnIncomingCapturedVideoFrame( 345 void OnIncomingCapturedVideoFrame(
345 const scoped_refptr<Buffer>& buffer, 346 const scoped_refptr<Buffer>& buffer,
346 const scoped_refptr<media::VideoFrame>& frame, 347 const scoped_refptr<media::VideoFrame>& frame,
347 const base::TimeTicks& timestamp) override { 348 const base::TimeTicks& timestamp) override {
348 EXPECT_EQ(gfx::Size(kTestWidth, kTestHeight), frame->visible_rect().size()); 349 EXPECT_EQ(gfx::Size(kTestWidth, kTestHeight), frame->visible_rect().size());
349 EXPECT_EQ(media::VideoFrame::I420, frame->format()); 350 EXPECT_EQ(media::VideoFrame::I420, frame->format());
350 double frame_rate = 0; 351 double frame_rate = 0;
351 EXPECT_TRUE( 352 EXPECT_TRUE(
(...skipping 10 matching lines...) Expand all
362 } 363 }
363 364
364 void OnError(const std::string& reason) override { error_callback_.Run(); } 365 void OnError(const std::string& reason) override { error_callback_.Run(); }
365 366
366 private: 367 private:
367 class AutoReleaseBuffer : public media::VideoCaptureDevice::Client::Buffer { 368 class AutoReleaseBuffer : public media::VideoCaptureDevice::Client::Buffer {
368 public: 369 public:
369 AutoReleaseBuffer(const scoped_refptr<VideoCaptureBufferPool>& pool, 370 AutoReleaseBuffer(const scoped_refptr<VideoCaptureBufferPool>& pool,
370 int buffer_id, 371 int buffer_id,
371 void* data, 372 void* data,
372 size_t size) 373 size_t size,
374 base::SharedMemoryHandle handle)
373 : pool_(pool), 375 : pool_(pool),
374 id_(buffer_id), 376 id_(buffer_id),
375 data_(data), 377 data_(data),
376 size_(size) { 378 size_(size),
379 handle_(handle) {
377 DCHECK(pool_.get()); 380 DCHECK(pool_.get());
378 } 381 }
379 int id() const override { return id_; } 382 int id() const override { return id_; }
380 void* data() const override { return data_; } 383 void* data() const override { return data_; }
381 size_t size() const override { return size_; } 384 size_t size() const override { return size_; }
385 base::SharedMemoryHandle handle() const override { return handle_; }
382 386
383 private: 387 private:
384 ~AutoReleaseBuffer() override { pool_->RelinquishProducerReservation(id_); } 388 ~AutoReleaseBuffer() override { pool_->RelinquishProducerReservation(id_); }
385 389
386 const scoped_refptr<VideoCaptureBufferPool> pool_; 390 const scoped_refptr<VideoCaptureBufferPool> pool_;
387 const int id_; 391 const int id_;
388 void* const data_; 392 void* const data_;
389 const size_t size_; 393 const size_t size_;
394 const base::SharedMemoryHandle handle_;
390 }; 395 };
391 396
392 scoped_refptr<VideoCaptureBufferPool> buffer_pool_; 397 scoped_refptr<VideoCaptureBufferPool> buffer_pool_;
393 base::Callback<void(SkColor)> color_callback_; 398 base::Callback<void(SkColor)> color_callback_;
394 base::Closure error_callback_; 399 base::Closure error_callback_;
395 400
396 DISALLOW_COPY_AND_ASSIGN(StubClient); 401 DISALLOW_COPY_AND_ASSIGN(StubClient);
397 }; 402 };
398 403
399 class StubClientObserver { 404 class StubClientObserver {
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 source()->SetSolidColor(SK_ColorGREEN); 862 source()->SetSolidColor(SK_ColorGREEN);
858 ASSERT_NO_FATAL_FAILURE(client_observer()->WaitForNextColor(SK_ColorGREEN)); 863 ASSERT_NO_FATAL_FAILURE(client_observer()->WaitForNextColor(SK_ColorGREEN));
859 source()->SetSolidColor(SK_ColorRED); 864 source()->SetSolidColor(SK_ColorRED);
860 ASSERT_NO_FATAL_FAILURE(client_observer()->WaitForNextColor(SK_ColorRED)); 865 ASSERT_NO_FATAL_FAILURE(client_observer()->WaitForNextColor(SK_ColorRED));
861 866
862 device()->StopAndDeAllocate(); 867 device()->StopAndDeAllocate();
863 } 868 }
864 869
865 } // namespace 870 } // namespace
866 } // namespace content 871 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698