| Index: media/base/video_capture_types.cc
|
| diff --git a/media/base/video_capture_types.cc b/media/base/video_capture_types.cc
|
| index 4649e4a697565e0bcf6a604bd3704f6586dfe399..c2e71bcca06871b4b8069e179dff1fdfb9cc4a47 100644
|
| --- a/media/base/video_capture_types.cc
|
| +++ b/media/base/video_capture_types.cc
|
| @@ -11,14 +11,29 @@
|
| namespace media {
|
|
|
| VideoCaptureFormat::VideoCaptureFormat()
|
| - : frame_rate(0.0f), pixel_format(PIXEL_FORMAT_UNKNOWN) {}
|
| + : frame_rate(0.0f),
|
| + pixel_format(PIXEL_FORMAT_UNKNOWN),
|
| + pixel_storage(PIXEL_STORAGE_CPU) {
|
| +}
|
|
|
| VideoCaptureFormat::VideoCaptureFormat(const gfx::Size& frame_size,
|
| float frame_rate,
|
| VideoPixelFormat pixel_format)
|
| : frame_size(frame_size),
|
| frame_rate(frame_rate),
|
| - pixel_format(pixel_format) {}
|
| + pixel_format(pixel_format),
|
| + pixel_storage(PIXEL_STORAGE_CPU) {
|
| +}
|
| +
|
| +VideoCaptureFormat::VideoCaptureFormat(const gfx::Size& frame_size,
|
| + float frame_rate,
|
| + VideoPixelFormat pixel_format,
|
| + VideoPixelStorage pixel_storage)
|
| + : frame_size(frame_size),
|
| + frame_rate(frame_rate),
|
| + pixel_format(pixel_format),
|
| + pixel_storage(pixel_storage) {
|
| +}
|
|
|
| bool VideoCaptureFormat::IsValid() const {
|
| return (frame_size.width() < media::limits::kMaxDimension) &&
|
| @@ -27,8 +42,9 @@ bool VideoCaptureFormat::IsValid() const {
|
| (frame_size.GetArea() < media::limits::kMaxCanvas) &&
|
| (frame_rate >= 0.0f) &&
|
| (frame_rate < media::limits::kMaxFramesPerSecond) &&
|
| - (pixel_format >= 0) &&
|
| - (pixel_format < PIXEL_FORMAT_MAX);
|
| + (pixel_format >= 0) && (pixel_format < PIXEL_FORMAT_MAX) &&
|
| + (pixel_storage != PIXEL_STORAGE_TEXTURE ||
|
| + pixel_format == PIXEL_FORMAT_ARGB);
|
| }
|
|
|
| size_t VideoCaptureFormat::ImageAllocationSize() const {
|
| @@ -49,13 +65,9 @@ size_t VideoCaptureFormat::ImageAllocationSize() const {
|
| break;
|
| case PIXEL_FORMAT_RGB32:
|
| case PIXEL_FORMAT_ARGB:
|
| - // GpuMemoryBuffer is an endianness-agnostic 32bpp pixel format until
|
| - // http://crbug.com/439520 is closed.
|
| - case PIXEL_FORMAT_GPUMEMORYBUFFER:
|
| 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.
|
| @@ -66,45 +78,58 @@ size_t VideoCaptureFormat::ImageAllocationSize() const {
|
| }
|
|
|
| std::string VideoCaptureFormat::ToString() const {
|
| - return base::StringPrintf("resolution: %s, fps: %.3f, pixel format: %s",
|
| - frame_size.ToString().c_str(),
|
| - frame_rate,
|
| - PixelFormatToString(pixel_format).c_str());
|
| + return base::StringPrintf("(%s)@%.3ffps, pixel format: %s storage: %s.",
|
| + frame_size.ToString().c_str(), frame_rate,
|
| + PixelFormatToString(pixel_format).c_str(),
|
| + PixelStorageToString(pixel_storage).c_str());
|
| }
|
|
|
| +//static
|
| std::string VideoCaptureFormat::PixelFormatToString(VideoPixelFormat format) {
|
| switch (format) {
|
| - case PIXEL_FORMAT_UNKNOWN:
|
| - return "UNKNOWN";
|
| - case PIXEL_FORMAT_I420:
|
| - return "I420";
|
| - case PIXEL_FORMAT_YUY2:
|
| - return "YUY2";
|
| - case PIXEL_FORMAT_UYVY:
|
| - return "UYVY";
|
| - case PIXEL_FORMAT_RGB24:
|
| - return "RGB24";
|
| - case PIXEL_FORMAT_RGB32:
|
| - return "RGB32";
|
| - case PIXEL_FORMAT_ARGB:
|
| - return "ARGB";
|
| - case PIXEL_FORMAT_MJPEG:
|
| - return "MJPEG";
|
| - case PIXEL_FORMAT_NV12:
|
| - return "NV12";
|
| - case PIXEL_FORMAT_NV21:
|
| - return "NV21";
|
| - case PIXEL_FORMAT_YV12:
|
| - return "YV12";
|
| - case PIXEL_FORMAT_TEXTURE:
|
| - return "TEXTURE";
|
| - case PIXEL_FORMAT_GPUMEMORYBUFFER:
|
| - return "GPUMEMORYBUFFER";
|
| - case PIXEL_FORMAT_MAX:
|
| - break;
|
| + case PIXEL_FORMAT_UNKNOWN:
|
| + return "UNKNOWN";
|
| + case PIXEL_FORMAT_I420:
|
| + return "I420";
|
| + case PIXEL_FORMAT_YUY2:
|
| + return "YUY2";
|
| + case PIXEL_FORMAT_UYVY:
|
| + return "UYVY";
|
| + case PIXEL_FORMAT_RGB24:
|
| + return "RGB24";
|
| + case PIXEL_FORMAT_RGB32:
|
| + return "RGB32";
|
| + case PIXEL_FORMAT_ARGB:
|
| + return "ARGB";
|
| + case PIXEL_FORMAT_MJPEG:
|
| + return "MJPEG";
|
| + case PIXEL_FORMAT_NV12:
|
| + return "NV12";
|
| + case PIXEL_FORMAT_NV21:
|
| + return "NV21";
|
| + case PIXEL_FORMAT_YV12:
|
| + return "YV12";
|
| + case PIXEL_FORMAT_MAX:
|
| + break;
|
| }
|
| NOTREACHED() << "Invalid VideoPixelFormat provided: " << format;
|
| - return "";
|
| + return std::string();
|
| +}
|
| +
|
| +//static
|
| +std::string VideoCaptureFormat::PixelStorageToString(
|
| + VideoPixelStorage storage) {
|
| + switch (storage) {
|
| + case PIXEL_STORAGE_CPU:
|
| + return "CPU";
|
| + case PIXEL_STORAGE_TEXTURE:
|
| + return "TEXTURE";
|
| + case PIXEL_STORAGE_GPUMEMORYBUFFER:
|
| + return "GPUMEMORYBUFFER";
|
| + }
|
| + NOTREACHED() << "Invalid VideoPixelStorage provided: "
|
| + << static_cast<int>(storage);
|
| + return std::string();
|
| }
|
|
|
| VideoCaptureParams::VideoCaptureParams()
|
|
|