1 // Copyright (c) 2012 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 #ifndef MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_TYPES_H_ 6 #define MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_TYPES_H_ 7 8 #include <vector> 9 10 #include "media/base/media_export.h" 11 #include "ui/gfx/size.h" 12 13 namespace media { 14 15 // TODO(wjia): this type should be defined in a common place and 16 // shared with device manager. 17 typedef int VideoCaptureSessionId; 18 19 // Color formats from camera. 20 enum VideoPixelFormat { 21 PIXEL_FORMAT_UNKNOWN, // Color format not set. 22 PIXEL_FORMAT_I420, 23 PIXEL_FORMAT_YUY2, 24 PIXEL_FORMAT_UYVY, 25 PIXEL_FORMAT_RGB24, 26 PIXEL_FORMAT_ARGB, 27 PIXEL_FORMAT_MJPEG, 28 PIXEL_FORMAT_NV21, 29 PIXEL_FORMAT_YV12, 30 PIXEL_FORMAT_TEXTURE, // Capture format as a GL texture. 31 PIXEL_FORMAT_MAX, 32 }; 33 34 // Some drivers use rational time per frame instead of float frame rate, this 35 // constant k is used to convert between both: A fps -> [k/k*A] seconds/frame. 36 const int kFrameRatePrecision = 10000; 37 38 // Video capture format specification. 39 // This class is used by the video capture device to specify the format of every 40 // frame captured and returned to a client. It is also used to specify a 41 // supported capture format by a device. 42 class MEDIA_EXPORT VideoCaptureFormat { 43 public: 44 VideoCaptureFormat(); 45 VideoCaptureFormat(const gfx::Size& frame_size, 46 float frame_rate, 47 VideoPixelFormat pixel_format); 48 49 // Checks that all values are in the expected range. All limits are specified 50 // in media::Limits. 51 bool IsValid() const; 52 53 gfx::Size frame_size; 54 float frame_rate; 55 VideoPixelFormat pixel_format; 56 }; 57 58 typedef std::vector<VideoCaptureFormat> VideoCaptureFormats; 59 60 // Parameters for starting video capture. 61 // This class is used by the client of a video capture device to specify the 62 // format of frames in which the client would like to have captured frames 63 // returned. 64 class MEDIA_EXPORT VideoCaptureParams { 65 public: 66 VideoCaptureParams(); 67 68 // Requests a resolution and format at which the capture will occur. 69 VideoCaptureFormat requested_format; 70 71 // Allow mid-capture resolution change. 72 bool allow_resolution_change; 73 }; 74 75 } // namespace media 76 77 #endif // MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_TYPES_H_ 78