Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / media / video / capture / video_capture_types.cc
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/video/capture/video_capture_types.h"
6
7 #include "base/logging.h"
8 #include "base/strings/stringprintf.h"
9 #include "media/base/limits.h"
10
11 namespace media {
12
13 VideoCaptureFormat::VideoCaptureFormat()
14     : frame_rate(0.0f), pixel_format(PIXEL_FORMAT_UNKNOWN) {}
15
16 VideoCaptureFormat::VideoCaptureFormat(const gfx::Size& frame_size,
17                                        float frame_rate,
18                                        VideoPixelFormat pixel_format)
19     : frame_size(frame_size),
20       frame_rate(frame_rate),
21       pixel_format(pixel_format) {}
22
23 bool VideoCaptureFormat::IsValid() const {
24   return (frame_size.width() < media::limits::kMaxDimension) &&
25          (frame_size.height() < media::limits::kMaxDimension) &&
26          (frame_size.GetArea() >= 0) &&
27          (frame_size.GetArea() < media::limits::kMaxCanvas) &&
28          (frame_rate >= 0.0f) &&
29          (frame_rate < media::limits::kMaxFramesPerSecond) &&
30          (pixel_format >= PIXEL_FORMAT_UNKNOWN) &&
31          (pixel_format < PIXEL_FORMAT_MAX);
32 }
33
34 std::string VideoCaptureFormat::ToString() const {
35   return base::StringPrintf("resolution: %s, fps: %f, pixel format: %s",
36                             frame_size.ToString().c_str(),
37                             frame_rate,
38                             PixelFormatToString(pixel_format).c_str());
39 }
40
41 std::string VideoCaptureFormat::PixelFormatToString(VideoPixelFormat format) {
42   switch (format) {
43   case PIXEL_FORMAT_UNKNOWN:
44     return "UNKNOWN";
45   case PIXEL_FORMAT_I420:
46     return "I420";
47   case PIXEL_FORMAT_YUY2:
48     return "YUY2";
49   case PIXEL_FORMAT_UYVY:
50     return "UYUY";
51   case PIXEL_FORMAT_RGB24:
52     return "RGB24";
53   case PIXEL_FORMAT_ARGB:
54     return "ARGB";
55   case PIXEL_FORMAT_MJPEG:
56     return "MJPEG";
57   case PIXEL_FORMAT_NV21:
58     return "YV12";
59   case PIXEL_FORMAT_YV12:
60     return "YV12";
61   case PIXEL_FORMAT_TEXTURE:
62     return "TEXTURE";
63   case PIXEL_FORMAT_MAX:
64     break;
65   }
66   NOTREACHED() << "Invalid VideoPixelFormat provided: " << format;
67   return "";
68 }
69
70 VideoCaptureParams::VideoCaptureParams()
71     : resolution_change_policy(RESOLUTION_POLICY_FIXED) {}
72 }  // namespace media