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

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

Issue 2735083002: [Mojo Video Capture] Add test coverage for accelerated jpeg decoding (Closed)
Patch Set: Remove example code that accidentally slipped in with Patch Set 4 Created 3 years, 9 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/renderer_host/media/video_capture_controller.h" 5 #include "content/browser/renderer_host/media/video_capture_controller.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 28 matching lines...) Expand all
39 namespace content { 39 namespace content {
40 40
41 namespace { 41 namespace {
42 42
43 static const int kInfiniteRatio = 99999; 43 static const int kInfiniteRatio = 99999;
44 44
45 #define UMA_HISTOGRAM_ASPECT_RATIO(name, width, height) \ 45 #define UMA_HISTOGRAM_ASPECT_RATIO(name, width, height) \
46 UMA_HISTOGRAM_SPARSE_SLOWLY( \ 46 UMA_HISTOGRAM_SPARSE_SLOWLY( \
47 name, (height) ? ((width)*100) / (height) : kInfiniteRatio); 47 name, (height) ? ((width)*100) / (height) : kInfiniteRatio);
48 48
49 void CallOnError(VideoCaptureControllerEventHandler* client,
50 VideoCaptureControllerID id) {
51 client->OnError(id);
52 }
53
54 void CallOnStarted(VideoCaptureControllerEventHandler* client,
55 VideoCaptureControllerID id) {
56 client->OnStarted(id);
57 }
58
59 void CallOnStartedUsingGpuDecode(VideoCaptureControllerEventHandler* client,
60 VideoCaptureControllerID id) {
61 client->OnStartedUsingGpuDecode(id);
62 }
63
49 } // anonymous namespace 64 } // anonymous namespace
50 65
51 struct VideoCaptureController::ControllerClient { 66 struct VideoCaptureController::ControllerClient {
52 ControllerClient(VideoCaptureControllerID id, 67 ControllerClient(VideoCaptureControllerID id,
53 VideoCaptureControllerEventHandler* handler, 68 VideoCaptureControllerEventHandler* handler,
54 media::VideoCaptureSessionId session_id, 69 media::VideoCaptureSessionId session_id,
55 const media::VideoCaptureParams& params) 70 const media::VideoCaptureParams& params)
56 : controller_id(id), 71 : controller_id(id),
57 event_handler(handler), 72 event_handler(handler),
58 session_id(session_id), 73 session_id(session_id),
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 // because it contains the consumer hold. 456 // because it contains the consumer hold.
442 if (!buffer_context_iter->HasConsumers()) 457 if (!buffer_context_iter->HasConsumers())
443 ReleaseBufferContext(buffer_context_iter); 458 ReleaseBufferContext(buffer_context_iter);
444 else 459 else
445 buffer_context_iter->set_is_retired(); 460 buffer_context_iter->set_is_retired();
446 } 461 }
447 462
448 void VideoCaptureController::OnError() { 463 void VideoCaptureController::OnError() {
449 DCHECK_CURRENTLY_ON(BrowserThread::IO); 464 DCHECK_CURRENTLY_ON(BrowserThread::IO);
450 state_ = VIDEO_CAPTURE_STATE_ERROR; 465 state_ = VIDEO_CAPTURE_STATE_ERROR;
451 466 PerformForClientsWithOpenSession(base::Bind(&CallOnError));
452 for (const auto& client : controller_clients_) {
453 if (client->session_closed)
454 continue;
455 client->event_handler->OnError(client->controller_id);
456 }
457 } 467 }
458 468
459 void VideoCaptureController::OnLog(const std::string& message) { 469 void VideoCaptureController::OnLog(const std::string& message) {
460 DCHECK_CURRENTLY_ON(BrowserThread::IO); 470 DCHECK_CURRENTLY_ON(BrowserThread::IO);
461 MediaStreamManager::SendMessageToNativeLog("Video capture: " + message); 471 MediaStreamManager::SendMessageToNativeLog("Video capture: " + message);
462 } 472 }
463 473
464 void VideoCaptureController::OnStarted() { 474 void VideoCaptureController::OnStarted() {
465 DCHECK_CURRENTLY_ON(BrowserThread::IO); 475 PerformForClientsWithOpenSession(base::Bind(&CallOnStarted));
476 }
466 477
467 for (const auto& client : controller_clients_) { 478 void VideoCaptureController::OnStartedUsingGpuDecode() {
468 if (client->session_closed) 479 PerformForClientsWithOpenSession(base::Bind(&CallOnStartedUsingGpuDecode));
469 continue;
470 client->event_handler->OnStarted(client->controller_id);
471 }
472 } 480 }
473 481
474 VideoCaptureController::ControllerClient* VideoCaptureController::FindClient( 482 VideoCaptureController::ControllerClient* VideoCaptureController::FindClient(
475 VideoCaptureControllerID id, 483 VideoCaptureControllerID id,
476 VideoCaptureControllerEventHandler* handler, 484 VideoCaptureControllerEventHandler* handler,
477 const ControllerClients& clients) { 485 const ControllerClients& clients) {
478 for (const auto& client : clients) { 486 for (const auto& client : clients) {
479 if (client->controller_id == id && client->event_handler == handler) 487 if (client->controller_id == id && client->event_handler == handler)
480 return client.get(); 488 return client.get();
481 } 489 }
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 buffer_context_iter->buffer_context_id()); 544 buffer_context_iter->buffer_context_id());
537 if (entry_iter != std::end(client->known_buffer_context_ids)) { 545 if (entry_iter != std::end(client->known_buffer_context_ids)) {
538 client->known_buffer_context_ids.erase(entry_iter); 546 client->known_buffer_context_ids.erase(entry_iter);
539 client->event_handler->OnBufferDestroyed( 547 client->event_handler->OnBufferDestroyed(
540 client->controller_id, buffer_context_iter->buffer_context_id()); 548 client->controller_id, buffer_context_iter->buffer_context_id());
541 } 549 }
542 } 550 }
543 buffer_contexts_.erase(buffer_context_iter); 551 buffer_contexts_.erase(buffer_context_iter);
544 } 552 }
545 553
554 void VideoCaptureController::PerformForClientsWithOpenSession(
555 EventHandlerAction action) {
556 DCHECK_CURRENTLY_ON(BrowserThread::IO);
557 for (const auto& client : controller_clients_) {
558 if (client->session_closed)
559 continue;
560 action.Run(client->event_handler, client->controller_id);
561 }
562 }
563
546 } // namespace content 564 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698