• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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