video_capture_device.cc revision d0247b1b59f9c528cb6df88b4f2b9afaf80d181e
1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "media/video/capture/video_capture_device.h"
6d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "base/strings/string_util.h"
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace media {
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
10558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochconst std::string VideoCaptureDevice::Name::GetNameAndModel() const {
11d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  const std::string model_id = GetModel();
12d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  if (model_id.empty())
13d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    return device_name_;
14d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  const std::string suffix = " (" + model_id + ")";
15d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  if (EndsWith(device_name_, suffix, true))  // |true| means case-sensitive.
16d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    return device_name_;
17d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  return device_name_ + suffix;
18558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}
19558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochVideoCaptureDevice::Name*
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochVideoCaptureDevice::Names::FindById(const std::string& id) {
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  for (iterator it = begin(); it != end(); ++it) {
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    if (it->id() == id)
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      return &(*it);
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  }
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return NULL;
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)VideoCaptureDevice::~VideoCaptureDevice() {}
30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)VideoCaptureDevice1::VideoCaptureDevice1() {}
32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)VideoCaptureDevice1::~VideoCaptureDevice1() {}
34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
35d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void VideoCaptureDevice1::AllocateAndStart(
36d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    const VideoCaptureCapability& capture_format,
37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    scoped_ptr<EventHandler> client) {
38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  client_ = client.Pass();
39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  Allocate(capture_format, client_.get());
40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  Start();
41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void VideoCaptureDevice1::StopAndDeAllocate() {
44d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  Stop();
45d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  DeAllocate();
46d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  client_.reset();
47d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)};
48d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
49d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace media
51