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