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

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

Issue 2518143004: [Mojo Video Capture] Replace RESOURCE_UTILIZATION with interface ReceiverLoadObserver (Closed)
Patch Set: Fix for android-only code 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 (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 <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <utility> 10 #include <utility>
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 StubClient( 331 StubClient(
332 const base::Callback<void(SkColor, const gfx::Size&)>& report_callback, 332 const base::Callback<void(SkColor, const gfx::Size&)>& report_callback,
333 const base::Closure& error_callback) 333 const base::Closure& error_callback)
334 : report_callback_(report_callback), 334 : report_callback_(report_callback),
335 error_callback_(error_callback) { 335 error_callback_(error_callback) {
336 buffer_pool_ = new media::VideoCaptureBufferPoolImpl( 336 buffer_pool_ = new media::VideoCaptureBufferPoolImpl(
337 base::MakeUnique<media::VideoCaptureBufferTrackerFactoryImpl>(), 2); 337 base::MakeUnique<media::VideoCaptureBufferTrackerFactoryImpl>(), 2);
338 } 338 }
339 ~StubClient() override {} 339 ~StubClient() override {}
340 340
341 MOCK_METHOD6(OnIncomingCapturedData, 341 MOCK_METHOD7(OnIncomingCapturedData,
342 void(const uint8_t* data, 342 void(const uint8_t* data,
343 int length, 343 int length,
344 const media::VideoCaptureFormat& frame_format, 344 const media::VideoCaptureFormat& frame_format,
345 int rotation, 345 int rotation,
346 base::TimeTicks reference_time, 346 base::TimeTicks reference_time,
347 base::TimeDelta timestamp)); 347 base::TimeDelta timestamp,
348 int frame_feedback_id));
348 349
349 MOCK_METHOD0(DoOnIncomingCapturedBuffer, void(void)); 350 MOCK_METHOD0(DoOnIncomingCapturedBuffer, void(void));
350 351
351 std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> 352 std::unique_ptr<media::VideoCaptureDevice::Client::Buffer>
352 ReserveOutputBuffer(const gfx::Size& dimensions, 353 ReserveOutputBuffer(const gfx::Size& dimensions,
353 media::VideoPixelFormat format, 354 media::VideoPixelFormat format,
354 media::VideoPixelStorage storage) override { 355 media::VideoPixelStorage storage,
356 int frame_feedback_id) override {
355 CHECK_EQ(format, media::PIXEL_FORMAT_I420); 357 CHECK_EQ(format, media::PIXEL_FORMAT_I420);
356 int buffer_id_to_drop = 358 int buffer_id_to_drop =
357 media::VideoCaptureBufferPool::kInvalidId; // Ignored. 359 media::VideoCaptureBufferPool::kInvalidId; // Ignored.
358 const int buffer_id = buffer_pool_->ReserveForProducer( 360 const int buffer_id = buffer_pool_->ReserveForProducer(
359 dimensions, format, storage, &buffer_id_to_drop); 361 dimensions, format, storage, frame_feedback_id, &buffer_id_to_drop);
360 if (buffer_id == media::VideoCaptureBufferPool::kInvalidId) 362 if (buffer_id == media::VideoCaptureBufferPool::kInvalidId)
361 return NULL; 363 return NULL;
362 364
363 return std::unique_ptr<media::VideoCaptureDevice::Client::Buffer>( 365 return std::unique_ptr<media::VideoCaptureDevice::Client::Buffer>(
364 new AutoReleaseBuffer( 366 new AutoReleaseBuffer(buffer_pool_,
365 buffer_pool_, buffer_pool_->GetBufferHandle(buffer_id), buffer_id)); 367 buffer_pool_->GetBufferHandle(buffer_id),
368 buffer_id, frame_feedback_id));
366 } 369 }
367 370
368 // Trampoline method to workaround GMOCK problems with std::unique_ptr<>. 371 // Trampoline method to workaround GMOCK problems with std::unique_ptr<>.
369 void OnIncomingCapturedBuffer(std::unique_ptr<Buffer> buffer, 372 void OnIncomingCapturedBuffer(std::unique_ptr<Buffer> buffer,
370 const media::VideoCaptureFormat& frame_format, 373 const media::VideoCaptureFormat& format,
371 base::TimeTicks reference_time, 374 base::TimeTicks reference_time,
372 base::TimeDelta timestamp) override { 375 base::TimeDelta timestamp) override {
373 DoOnIncomingCapturedBuffer(); 376 DoOnIncomingCapturedBuffer();
374 } 377 }
375 378
376 void OnIncomingCapturedVideoFrame( 379 void OnIncomingCapturedVideoFrame(
377 std::unique_ptr<Buffer> buffer, 380 std::unique_ptr<Buffer> buffer,
378 scoped_refptr<media::VideoFrame> frame) override { 381 scoped_refptr<media::VideoFrame> frame) override {
379 EXPECT_FALSE(frame->visible_rect().IsEmpty()); 382 EXPECT_FALSE(frame->visible_rect().IsEmpty());
380 EXPECT_EQ(media::PIXEL_FORMAT_I420, frame->format()); 383 EXPECT_EQ(media::PIXEL_FORMAT_I420, frame->format());
(...skipping 16 matching lines...) Expand all
397 report_callback_.Run( 400 report_callback_.Run(
398 SkColorSetRGB(frame->data(VideoFrame::kYPlane)[center_offset_y], 401 SkColorSetRGB(frame->data(VideoFrame::kYPlane)[center_offset_y],
399 frame->data(VideoFrame::kUPlane)[center_offset_uv], 402 frame->data(VideoFrame::kUPlane)[center_offset_uv],
400 frame->data(VideoFrame::kVPlane)[center_offset_uv]), 403 frame->data(VideoFrame::kVPlane)[center_offset_uv]),
401 frame->visible_rect().size()); 404 frame->visible_rect().size());
402 } 405 }
403 406
404 std::unique_ptr<media::VideoCaptureDevice::Client::Buffer> 407 std::unique_ptr<media::VideoCaptureDevice::Client::Buffer>
405 ResurrectLastOutputBuffer(const gfx::Size& dimensions, 408 ResurrectLastOutputBuffer(const gfx::Size& dimensions,
406 media::VideoPixelFormat format, 409 media::VideoPixelFormat format,
407 media::VideoPixelStorage storage) override { 410 media::VideoPixelStorage storage,
411 int frame_feedback_id) override {
408 CHECK_EQ(format, media::PIXEL_FORMAT_I420); 412 CHECK_EQ(format, media::PIXEL_FORMAT_I420);
409 const int buffer_id = 413 const int buffer_id =
410 buffer_pool_->ResurrectLastForProducer(dimensions, format, storage); 414 buffer_pool_->ResurrectLastForProducer(dimensions, format, storage);
411 if (buffer_id == media::VideoCaptureBufferPool::kInvalidId) 415 if (buffer_id == media::VideoCaptureBufferPool::kInvalidId)
412 return nullptr; 416 return nullptr;
413 return std::unique_ptr<media::VideoCaptureDevice::Client::Buffer>( 417 return std::unique_ptr<media::VideoCaptureDevice::Client::Buffer>(
414 new AutoReleaseBuffer( 418 new AutoReleaseBuffer(buffer_pool_,
415 buffer_pool_, buffer_pool_->GetBufferHandle(buffer_id), buffer_id)); 419 buffer_pool_->GetBufferHandle(buffer_id),
420 buffer_id, frame_feedback_id));
416 } 421 }
417 422
418 void OnError(const tracked_objects::Location& from_here, 423 void OnError(const tracked_objects::Location& from_here,
419 const std::string& reason) override { 424 const std::string& reason) override {
420 error_callback_.Run(); 425 error_callback_.Run();
421 } 426 }
422 427
423 double GetBufferPoolUtilization() const override { return 0.0; } 428 double GetBufferPoolUtilization() const override { return 0.0; }
424 429
425 private: 430 private:
426 class AutoReleaseBuffer : public media::VideoCaptureDevice::Client::Buffer { 431 class AutoReleaseBuffer : public media::VideoCaptureDevice::Client::Buffer {
427 public: 432 public:
428 AutoReleaseBuffer( 433 AutoReleaseBuffer(
429 const scoped_refptr<media::VideoCaptureBufferPool>& pool, 434 const scoped_refptr<media::VideoCaptureBufferPool>& pool,
430 std::unique_ptr<media::VideoCaptureBufferHandle> buffer_handle, 435 std::unique_ptr<media::VideoCaptureBufferHandle> buffer_handle,
431 int buffer_id) 436 int buffer_id,
437 int frame_feedback_id)
432 : id_(buffer_id), 438 : id_(buffer_id),
439 frame_feedback_id_(frame_feedback_id),
433 pool_(pool), 440 pool_(pool),
434 buffer_handle_(std::move(buffer_handle)) { 441 buffer_handle_(std::move(buffer_handle)) {
435 DCHECK(pool_); 442 DCHECK(pool_);
436 } 443 }
437 int id() const override { return id_; } 444 int id() const override { return id_; }
445 int frame_feedback_id() const override { return frame_feedback_id_; }
438 gfx::Size dimensions() const override { 446 gfx::Size dimensions() const override {
439 return buffer_handle_->dimensions(); 447 return buffer_handle_->dimensions();
440 } 448 }
441 size_t mapped_size() const override { 449 size_t mapped_size() const override {
442 return buffer_handle_->mapped_size(); 450 return buffer_handle_->mapped_size();
443 } 451 }
444 void* data(int plane) override { return buffer_handle_->data(plane); } 452 void* data(int plane) override { return buffer_handle_->data(plane); }
445 #if defined(OS_POSIX) && !defined(OS_MACOSX) 453 #if defined(OS_POSIX) && !defined(OS_MACOSX)
446 base::FileDescriptor AsPlatformFile() override { 454 base::FileDescriptor AsPlatformFile() override {
447 return base::FileDescriptor(); 455 return base::FileDescriptor();
448 } 456 }
449 #endif 457 #endif
450 bool IsBackedByVideoFrame() const override { 458 bool IsBackedByVideoFrame() const override {
451 return buffer_handle_->IsBackedByVideoFrame(); 459 return buffer_handle_->IsBackedByVideoFrame();
452 } 460 }
453 scoped_refptr<media::VideoFrame> GetVideoFrame() override { 461 scoped_refptr<media::VideoFrame> GetVideoFrame() override {
454 return buffer_handle_->GetVideoFrame(); 462 return buffer_handle_->GetVideoFrame();
455 } 463 }
456 464
457 private: 465 private:
458 ~AutoReleaseBuffer() override { pool_->RelinquishProducerReservation(id_); } 466 ~AutoReleaseBuffer() override { pool_->RelinquishProducerReservation(id_); }
459 467
460 const int id_; 468 const int id_;
469 const int frame_feedback_id_;
461 const scoped_refptr<media::VideoCaptureBufferPool> pool_; 470 const scoped_refptr<media::VideoCaptureBufferPool> pool_;
462 const std::unique_ptr<media::VideoCaptureBufferHandle> buffer_handle_; 471 const std::unique_ptr<media::VideoCaptureBufferHandle> buffer_handle_;
463 }; 472 };
464 473
465 scoped_refptr<media::VideoCaptureBufferPool> buffer_pool_; 474 scoped_refptr<media::VideoCaptureBufferPool> buffer_pool_;
466 base::Callback<void(SkColor, const gfx::Size&)> report_callback_; 475 base::Callback<void(SkColor, const gfx::Size&)> report_callback_;
467 base::Closure error_callback_; 476 base::Closure error_callback_;
468 477
469 DISALLOW_COPY_AND_ASSIGN(StubClient); 478 DISALLOW_COPY_AND_ASSIGN(StubClient);
470 }; 479 };
(...skipping 792 matching lines...) Expand 10 before | Expand all | Expand 10 after
1263 for (int i = 0; i < 3; ++i) { 1272 for (int i = 0; i < 3; ++i) {
1264 SimulateRefreshFrameRequest(); 1273 SimulateRefreshFrameRequest();
1265 ASSERT_NO_FATAL_FAILURE(client_observer()->WaitForNextColor(SK_ColorGREEN)); 1274 ASSERT_NO_FATAL_FAILURE(client_observer()->WaitForNextColor(SK_ColorGREEN));
1266 } 1275 }
1267 1276
1268 device()->StopAndDeAllocate(); 1277 device()->StopAndDeAllocate();
1269 } 1278 }
1270 1279
1271 } // namespace 1280 } // namespace
1272 } // namespace content 1281 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698