Home | History | Annotate | Download | only in capture
      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
     73