Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / media / video / capture / video_capture_types.h
index 6a4f453..ec57c45 100644 (file)
@@ -27,9 +27,31 @@ enum VideoPixelFormat {
   PIXEL_FORMAT_MJPEG,
   PIXEL_FORMAT_NV21,
   PIXEL_FORMAT_YV12,
+  PIXEL_FORMAT_TEXTURE,  // Capture format as a GL texture.
   PIXEL_FORMAT_MAX,
 };
 
+// Policies for capture devices that has source content with dynamic resolution.
+enum ResolutionChangePolicy {
+  // Capture device outputs a fixed resolution all the time. The resolution of
+  // the first frame is the resolution for all frames.
+  // It is implementation specific for the capture device to scale, letter-box
+  // and pillar-box. The only gurantee is that resolution will never change.
+  RESOLUTION_POLICY_FIXED,
+
+  // Capture device outputs frames with dynamic resolution. The width and height
+  // will not exceed the maximum dimensions specified. The typical scenario is
+  // the frames will have the same aspect ratio as the original content and
+  // scaled down to fit inside the limit.
+  RESOLUTION_POLICY_DYNAMIC_WITHIN_LIMIT,
+
+  RESOLUTION_POLICY_LAST,
+};
+
+// Some drivers use rational time per frame instead of float frame rate, this
+// constant k is used to convert between both: A fps -> [k/k*A] seconds/frame.
+const int kFrameRatePrecision = 10000;
+
 // Video capture format specification.
 // This class is used by the video capture device to specify the format of every
 // frame captured and returned to a client. It is also used to specify a
@@ -38,15 +60,18 @@ class MEDIA_EXPORT VideoCaptureFormat {
  public:
   VideoCaptureFormat();
   VideoCaptureFormat(const gfx::Size& frame_size,
-                     int frame_rate,
+                     float frame_rate,
                      VideoPixelFormat pixel_format);
 
+  std::string ToString() const;
+  static std::string PixelFormatToString(VideoPixelFormat format);
+
   // Checks that all values are in the expected range. All limits are specified
   // in media::Limits.
   bool IsValid() const;
 
   gfx::Size frame_size;
-  int frame_rate;
+  float frame_rate;
   VideoPixelFormat pixel_format;
 };
 
@@ -63,8 +88,8 @@ class MEDIA_EXPORT VideoCaptureParams {
   // Requests a resolution and format at which the capture will occur.
   VideoCaptureFormat requested_format;
 
-  // Allow mid-capture resolution change.
-  bool allow_resolution_change;
+  // Policy for resolution change.
+  ResolutionChangePolicy resolution_change_policy;
 };
 
 }  // namespace media