Index: media/video/capture/video_capture_types.cc |
diff --git a/media/video/capture/video_capture_types.cc b/media/video/capture/video_capture_types.cc |
index 2cddeee9cbac36cc2d321ae1e54fec02d402f854..a20ea4faf729504910e9a0d2d7e4add28435813e 100644 |
--- a/media/video/capture/video_capture_types.cc |
+++ b/media/video/capture/video_capture_types.cc |
@@ -31,6 +31,36 @@ bool VideoCaptureFormat::IsValid() const { |
(pixel_format < PIXEL_FORMAT_MAX); |
} |
+size_t VideoCaptureFormat::ImageAllocationSize() const { |
+ size_t result_frame_size = frame_size.GetArea(); |
+ switch (pixel_format) { |
+ case PIXEL_FORMAT_I420: |
+ case PIXEL_FORMAT_YV12: |
+ case PIXEL_FORMAT_NV12: |
+ case PIXEL_FORMAT_NV21: |
+ result_frame_size = result_frame_size * 3 / 2; |
+ break; |
+ case PIXEL_FORMAT_UYVY: |
+ case PIXEL_FORMAT_YUY2: |
+ result_frame_size *= 2; |
+ break; |
+ case PIXEL_FORMAT_RGB24: |
+ result_frame_size *= 3; |
+ break; |
+ case PIXEL_FORMAT_ARGB: |
+ result_frame_size *= 4; |
+ break; |
+ case PIXEL_FORMAT_MJPEG: |
+ case PIXEL_FORMAT_TEXTURE: |
+ result_frame_size = 0; |
+ break; |
+ default: // Sizes for the rest of the formats are unknown. |
+ NOTREACHED() << "Unknown pixel format provided."; |
+ break; |
+ } |
+ return result_frame_size; |
+} |
+ |
std::string VideoCaptureFormat::ToString() const { |
return base::StringPrintf("resolution: %s, fps: %.3f, pixel format: %s", |
frame_size.ToString().c_str(), |