• 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_MAX,
31 };
32 
33 // Video capture format specification.
34 // This class is used by the video capture device to specify the format of every
35 // frame captured and returned to a client. It is also used to specify a
36 // supported capture format by a device.
37 class MEDIA_EXPORT VideoCaptureFormat {
38  public:
39   VideoCaptureFormat();
40   VideoCaptureFormat(const gfx::Size& frame_size,
41                      int frame_rate,
42                      VideoPixelFormat pixel_format);
43 
44   // Checks that all values are in the expected range. All limits are specified
45   // in media::Limits.
46   bool IsValid() const;
47 
48   gfx::Size frame_size;
49   int frame_rate;
50   VideoPixelFormat pixel_format;
51 };
52 
53 typedef std::vector<VideoCaptureFormat> VideoCaptureFormats;
54 
55 // Parameters for starting video capture.
56 // This class is used by the client of a video capture device to specify the
57 // format of frames in which the client would like to have captured frames
58 // returned.
59 class MEDIA_EXPORT VideoCaptureParams {
60  public:
61   VideoCaptureParams();
62 
63   // Requests a resolution and format at which the capture will occur.
64   VideoCaptureFormat requested_format;
65 
66   // Allow mid-capture resolution change.
67   bool allow_resolution_change;
68 };
69 
70 }  // namespace media
71 
72 #endif  // MEDIA_VIDEO_CAPTURE_VIDEO_CAPTURE_TYPES_H_
73