158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file. 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "media/video/capture/video_capture_types.h" 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/logging.h" 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/strings/stringprintf.h" 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "media/base/limits.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace media { 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)VideoCaptureFormat::VideoCaptureFormat() 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch : frame_rate(0.0f), pixel_format(PIXEL_FORMAT_UNKNOWN) {} 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)VideoCaptureFormat::VideoCaptureFormat(const gfx::Size& frame_size, 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) float frame_rate, 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) VideoPixelFormat pixel_format) 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) : frame_size(frame_size), 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) frame_rate(frame_rate), 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) pixel_format(pixel_format) {} 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)bool VideoCaptureFormat::IsValid() const { 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return (frame_size.width() < media::limits::kMaxDimension) && 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) (frame_size.height() < media::limits::kMaxDimension) && 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) (frame_size.GetArea() >= 0) && 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) (frame_size.GetArea() < media::limits::kMaxCanvas) && 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch (frame_rate >= 0.0f) && 2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) (frame_rate < media::limits::kMaxFramesPerSecond) && 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) (pixel_format >= PIXEL_FORMAT_UNKNOWN) && 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) (pixel_format < PIXEL_FORMAT_MAX); 3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} 3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistd::string VideoCaptureFormat::ToString() const { 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return base::StringPrintf("resolution: %s, fps: %f, pixel format: %s", 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci frame_size.ToString().c_str(), 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci frame_rate, 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci PixelFormatToString(pixel_format).c_str()); 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)std::string VideoCaptureFormat::PixelFormatToString(VideoPixelFormat format) { 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) switch (format) { 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_UNKNOWN: 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "UNKNOWN"; 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_I420: 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "I420"; 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_YUY2: 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "YUY2"; 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_UYVY: 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "UYUY"; 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_RGB24: 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "RGB24"; 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_ARGB: 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "ARGB"; 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_MJPEG: 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "MJPEG"; 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_NV21: 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "YV12"; 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_YV12: 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "YV12"; 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_TEXTURE: 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return "TEXTURE"; 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) case PIXEL_FORMAT_MAX: 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) break; 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) NOTREACHED() << "Invalid VideoPixelFormat provided: " << format; 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return ""; 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciVideoCaptureParams::VideoCaptureParams() 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : resolution_change_policy(RESOLUTION_POLICY_FIXED) {} 7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} // namespace media 73