| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/base/video_frame.h" | 5 #include "media/base/video_frame.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <climits> | 8 #include <climits> |
| 9 | 9 |
| 10 #include "base/atomic_sequence_num.h" | 10 #include "base/atomic_sequence_num.h" |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 natural_size.width() > limits::kMaxDimension || | 118 natural_size.width() > limits::kMaxDimension || |
| 119 natural_size.height() > limits::kMaxDimension) | 119 natural_size.height() > limits::kMaxDimension) |
| 120 return false; | 120 return false; |
| 121 | 121 |
| 122 // TODO(mcasas): Remove parameter |storage_type| when the opaque storage types | 122 // TODO(mcasas): Remove parameter |storage_type| when the opaque storage types |
| 123 // comply with the checks below. Right now we skip them. | 123 // comply with the checks below. Right now we skip them. |
| 124 if (!IsStorageTypeMappable(storage_type)) | 124 if (!IsStorageTypeMappable(storage_type)) |
| 125 return true; | 125 return true; |
| 126 | 126 |
| 127 // Make sure new formats are properly accounted for in the method. | 127 // Make sure new formats are properly accounted for in the method. |
| 128 static_assert(PIXEL_FORMAT_MAX == 21, | 128 static_assert(PIXEL_FORMAT_MAX == 23, |
| 129 "Added pixel format, please review IsValidConfig()"); | 129 "Added pixel format, please review IsValidConfig()"); |
| 130 | 130 |
| 131 if (format == PIXEL_FORMAT_UNKNOWN) { | 131 if (format == PIXEL_FORMAT_UNKNOWN) { |
| 132 return coded_size.IsEmpty() && visible_rect.IsEmpty() && | 132 return coded_size.IsEmpty() && visible_rect.IsEmpty() && |
| 133 natural_size.IsEmpty(); | 133 natural_size.IsEmpty(); |
| 134 } | 134 } |
| 135 | 135 |
| 136 // Check that software-allocated buffer formats are not empty. | 136 // Check that software-allocated buffer formats are not empty. |
| 137 return !coded_size.IsEmpty() && !visible_rect.IsEmpty() && | 137 return !coded_size.IsEmpty() && !visible_rect.IsEmpty() && |
| 138 !natural_size.IsEmpty(); | 138 !natural_size.IsEmpty(); |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 // static | 528 // static |
| 529 size_t VideoFrame::NumPlanes(VideoPixelFormat format) { | 529 size_t VideoFrame::NumPlanes(VideoPixelFormat format) { |
| 530 switch (format) { | 530 switch (format) { |
| 531 case PIXEL_FORMAT_UYVY: | 531 case PIXEL_FORMAT_UYVY: |
| 532 case PIXEL_FORMAT_YUY2: | 532 case PIXEL_FORMAT_YUY2: |
| 533 case PIXEL_FORMAT_ARGB: | 533 case PIXEL_FORMAT_ARGB: |
| 534 case PIXEL_FORMAT_XRGB: | 534 case PIXEL_FORMAT_XRGB: |
| 535 case PIXEL_FORMAT_RGB24: | 535 case PIXEL_FORMAT_RGB24: |
| 536 case PIXEL_FORMAT_RGB32: | 536 case PIXEL_FORMAT_RGB32: |
| 537 case PIXEL_FORMAT_MJPEG: | 537 case PIXEL_FORMAT_MJPEG: |
| 538 case PIXEL_FORMAT_Y8: |
| 539 case PIXEL_FORMAT_Y16: |
| 538 return 1; | 540 return 1; |
| 539 case PIXEL_FORMAT_NV12: | 541 case PIXEL_FORMAT_NV12: |
| 540 case PIXEL_FORMAT_NV21: | 542 case PIXEL_FORMAT_NV21: |
| 541 case PIXEL_FORMAT_MT21: | 543 case PIXEL_FORMAT_MT21: |
| 542 return 2; | 544 return 2; |
| 543 case PIXEL_FORMAT_I420: | 545 case PIXEL_FORMAT_I420: |
| 544 case PIXEL_FORMAT_YV12: | 546 case PIXEL_FORMAT_YV12: |
| 545 case PIXEL_FORMAT_YV16: | 547 case PIXEL_FORMAT_YV16: |
| 546 case PIXEL_FORMAT_YV24: | 548 case PIXEL_FORMAT_YV24: |
| 547 case PIXEL_FORMAT_YUV420P9: | 549 case PIXEL_FORMAT_YUV420P9: |
| (...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1034 return gfx::Size(2, 2); | 1036 return gfx::Size(2, 2); |
| 1035 | 1037 |
| 1036 case PIXEL_FORMAT_UNKNOWN: | 1038 case PIXEL_FORMAT_UNKNOWN: |
| 1037 case PIXEL_FORMAT_UYVY: | 1039 case PIXEL_FORMAT_UYVY: |
| 1038 case PIXEL_FORMAT_YUY2: | 1040 case PIXEL_FORMAT_YUY2: |
| 1039 case PIXEL_FORMAT_ARGB: | 1041 case PIXEL_FORMAT_ARGB: |
| 1040 case PIXEL_FORMAT_XRGB: | 1042 case PIXEL_FORMAT_XRGB: |
| 1041 case PIXEL_FORMAT_RGB24: | 1043 case PIXEL_FORMAT_RGB24: |
| 1042 case PIXEL_FORMAT_RGB32: | 1044 case PIXEL_FORMAT_RGB32: |
| 1043 case PIXEL_FORMAT_MJPEG: | 1045 case PIXEL_FORMAT_MJPEG: |
| 1046 case PIXEL_FORMAT_Y8: |
| 1047 case PIXEL_FORMAT_Y16: |
| 1044 break; | 1048 break; |
| 1045 } | 1049 } |
| 1046 } | 1050 } |
| 1047 NOTREACHED(); | 1051 NOTREACHED(); |
| 1048 return gfx::Size(); | 1052 return gfx::Size(); |
| 1049 } | 1053 } |
| 1050 | 1054 |
| 1051 // static | 1055 // static |
| 1052 int VideoFrame::BytesPerElement(VideoPixelFormat format, size_t plane) { | 1056 int VideoFrame::BytesPerElement(VideoPixelFormat format, size_t plane) { |
| 1053 DCHECK(IsValidPlane(plane, format)); | 1057 DCHECK(IsValidPlane(plane, format)); |
| 1054 switch (format) { | 1058 switch (format) { |
| 1055 case PIXEL_FORMAT_ARGB: | 1059 case PIXEL_FORMAT_ARGB: |
| 1056 case PIXEL_FORMAT_XRGB: | 1060 case PIXEL_FORMAT_XRGB: |
| 1057 case PIXEL_FORMAT_RGB32: | 1061 case PIXEL_FORMAT_RGB32: |
| 1058 return 4; | 1062 return 4; |
| 1059 case PIXEL_FORMAT_RGB24: | 1063 case PIXEL_FORMAT_RGB24: |
| 1060 return 3; | 1064 return 3; |
| 1065 case PIXEL_FORMAT_Y16: |
| 1061 case PIXEL_FORMAT_UYVY: | 1066 case PIXEL_FORMAT_UYVY: |
| 1062 case PIXEL_FORMAT_YUY2: | 1067 case PIXEL_FORMAT_YUY2: |
| 1063 case PIXEL_FORMAT_YUV420P9: | 1068 case PIXEL_FORMAT_YUV420P9: |
| 1064 case PIXEL_FORMAT_YUV422P9: | 1069 case PIXEL_FORMAT_YUV422P9: |
| 1065 case PIXEL_FORMAT_YUV444P9: | 1070 case PIXEL_FORMAT_YUV444P9: |
| 1066 case PIXEL_FORMAT_YUV420P10: | 1071 case PIXEL_FORMAT_YUV420P10: |
| 1067 case PIXEL_FORMAT_YUV422P10: | 1072 case PIXEL_FORMAT_YUV422P10: |
| 1068 case PIXEL_FORMAT_YUV444P10: | 1073 case PIXEL_FORMAT_YUV444P10: |
| 1069 return 2; | 1074 return 2; |
| 1070 case PIXEL_FORMAT_NV12: | 1075 case PIXEL_FORMAT_NV12: |
| 1071 case PIXEL_FORMAT_NV21: | 1076 case PIXEL_FORMAT_NV21: |
| 1072 case PIXEL_FORMAT_MT21: { | 1077 case PIXEL_FORMAT_MT21: { |
| 1073 static const int bytes_per_element[] = {1, 2}; | 1078 static const int bytes_per_element[] = {1, 2}; |
| 1074 DCHECK_LT(plane, arraysize(bytes_per_element)); | 1079 DCHECK_LT(plane, arraysize(bytes_per_element)); |
| 1075 return bytes_per_element[plane]; | 1080 return bytes_per_element[plane]; |
| 1076 } | 1081 } |
| 1077 case PIXEL_FORMAT_YV12: | 1082 case PIXEL_FORMAT_YV12: |
| 1078 case PIXEL_FORMAT_I420: | 1083 case PIXEL_FORMAT_I420: |
| 1079 case PIXEL_FORMAT_YV16: | 1084 case PIXEL_FORMAT_YV16: |
| 1080 case PIXEL_FORMAT_YV12A: | 1085 case PIXEL_FORMAT_YV12A: |
| 1081 case PIXEL_FORMAT_YV24: | 1086 case PIXEL_FORMAT_YV24: |
| 1087 case PIXEL_FORMAT_Y8: |
| 1082 return 1; | 1088 return 1; |
| 1083 case PIXEL_FORMAT_MJPEG: | 1089 case PIXEL_FORMAT_MJPEG: |
| 1084 return 0; | 1090 return 0; |
| 1085 case PIXEL_FORMAT_UNKNOWN: | 1091 case PIXEL_FORMAT_UNKNOWN: |
| 1086 break; | 1092 break; |
| 1087 } | 1093 } |
| 1088 NOTREACHED(); | 1094 NOTREACHED(); |
| 1089 return 0; | 1095 return 0; |
| 1090 } | 1096 } |
| 1091 | 1097 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1130 if (zero_initialize_memory) | 1136 if (zero_initialize_memory) |
| 1131 memset(data, 0, data_size); | 1137 memset(data, 0, data_size); |
| 1132 | 1138 |
| 1133 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) | 1139 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) |
| 1134 data_[plane] = data + offset[plane]; | 1140 data_[plane] = data + offset[plane]; |
| 1135 | 1141 |
| 1136 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); | 1142 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); |
| 1137 } | 1143 } |
| 1138 | 1144 |
| 1139 } // namespace media | 1145 } // namespace media |
| OLD | NEW |