| 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 510 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1058 return gfx::Size(2, 2); | 1060 return gfx::Size(2, 2); |
| 1059 | 1061 |
| 1060 case PIXEL_FORMAT_UNKNOWN: | 1062 case PIXEL_FORMAT_UNKNOWN: |
| 1061 case PIXEL_FORMAT_UYVY: | 1063 case PIXEL_FORMAT_UYVY: |
| 1062 case PIXEL_FORMAT_YUY2: | 1064 case PIXEL_FORMAT_YUY2: |
| 1063 case PIXEL_FORMAT_ARGB: | 1065 case PIXEL_FORMAT_ARGB: |
| 1064 case PIXEL_FORMAT_XRGB: | 1066 case PIXEL_FORMAT_XRGB: |
| 1065 case PIXEL_FORMAT_RGB24: | 1067 case PIXEL_FORMAT_RGB24: |
| 1066 case PIXEL_FORMAT_RGB32: | 1068 case PIXEL_FORMAT_RGB32: |
| 1067 case PIXEL_FORMAT_MJPEG: | 1069 case PIXEL_FORMAT_MJPEG: |
| 1070 case PIXEL_FORMAT_Y8: |
| 1071 case PIXEL_FORMAT_Y16: |
| 1068 break; | 1072 break; |
| 1069 } | 1073 } |
| 1070 } | 1074 } |
| 1071 NOTREACHED(); | 1075 NOTREACHED(); |
| 1072 return gfx::Size(); | 1076 return gfx::Size(); |
| 1073 } | 1077 } |
| 1074 | 1078 |
| 1075 // static | 1079 // static |
| 1076 int VideoFrame::BytesPerElement(VideoPixelFormat format, size_t plane) { | 1080 int VideoFrame::BytesPerElement(VideoPixelFormat format, size_t plane) { |
| 1077 DCHECK(IsValidPlane(plane, format)); | 1081 DCHECK(IsValidPlane(plane, format)); |
| 1078 switch (format) { | 1082 switch (format) { |
| 1079 case PIXEL_FORMAT_ARGB: | 1083 case PIXEL_FORMAT_ARGB: |
| 1080 case PIXEL_FORMAT_XRGB: | 1084 case PIXEL_FORMAT_XRGB: |
| 1081 case PIXEL_FORMAT_RGB32: | 1085 case PIXEL_FORMAT_RGB32: |
| 1082 return 4; | 1086 return 4; |
| 1083 case PIXEL_FORMAT_RGB24: | 1087 case PIXEL_FORMAT_RGB24: |
| 1084 return 3; | 1088 return 3; |
| 1089 case PIXEL_FORMAT_Y16: |
| 1085 case PIXEL_FORMAT_UYVY: | 1090 case PIXEL_FORMAT_UYVY: |
| 1086 case PIXEL_FORMAT_YUY2: | 1091 case PIXEL_FORMAT_YUY2: |
| 1087 case PIXEL_FORMAT_YUV420P9: | 1092 case PIXEL_FORMAT_YUV420P9: |
| 1088 case PIXEL_FORMAT_YUV422P9: | 1093 case PIXEL_FORMAT_YUV422P9: |
| 1089 case PIXEL_FORMAT_YUV444P9: | 1094 case PIXEL_FORMAT_YUV444P9: |
| 1090 case PIXEL_FORMAT_YUV420P10: | 1095 case PIXEL_FORMAT_YUV420P10: |
| 1091 case PIXEL_FORMAT_YUV422P10: | 1096 case PIXEL_FORMAT_YUV422P10: |
| 1092 case PIXEL_FORMAT_YUV444P10: | 1097 case PIXEL_FORMAT_YUV444P10: |
| 1093 return 2; | 1098 return 2; |
| 1094 case PIXEL_FORMAT_NV12: | 1099 case PIXEL_FORMAT_NV12: |
| 1095 case PIXEL_FORMAT_NV21: | 1100 case PIXEL_FORMAT_NV21: |
| 1096 case PIXEL_FORMAT_MT21: { | 1101 case PIXEL_FORMAT_MT21: { |
| 1097 static const int bytes_per_element[] = {1, 2}; | 1102 static const int bytes_per_element[] = {1, 2}; |
| 1098 DCHECK_LT(plane, arraysize(bytes_per_element)); | 1103 DCHECK_LT(plane, arraysize(bytes_per_element)); |
| 1099 return bytes_per_element[plane]; | 1104 return bytes_per_element[plane]; |
| 1100 } | 1105 } |
| 1101 case PIXEL_FORMAT_YV12: | 1106 case PIXEL_FORMAT_YV12: |
| 1102 case PIXEL_FORMAT_I420: | 1107 case PIXEL_FORMAT_I420: |
| 1103 case PIXEL_FORMAT_YV16: | 1108 case PIXEL_FORMAT_YV16: |
| 1104 case PIXEL_FORMAT_YV12A: | 1109 case PIXEL_FORMAT_YV12A: |
| 1105 case PIXEL_FORMAT_YV24: | 1110 case PIXEL_FORMAT_YV24: |
| 1111 case PIXEL_FORMAT_Y8: |
| 1106 return 1; | 1112 return 1; |
| 1107 case PIXEL_FORMAT_MJPEG: | 1113 case PIXEL_FORMAT_MJPEG: |
| 1108 return 0; | 1114 return 0; |
| 1109 case PIXEL_FORMAT_UNKNOWN: | 1115 case PIXEL_FORMAT_UNKNOWN: |
| 1110 break; | 1116 break; |
| 1111 } | 1117 } |
| 1112 NOTREACHED(); | 1118 NOTREACHED(); |
| 1113 return 0; | 1119 return 0; |
| 1114 } | 1120 } |
| 1115 | 1121 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1154 if (zero_initialize_memory) | 1160 if (zero_initialize_memory) |
| 1155 memset(data, 0, data_size); | 1161 memset(data, 0, data_size); |
| 1156 | 1162 |
| 1157 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) | 1163 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) |
| 1158 data_[plane] = data + offset[plane]; | 1164 data_[plane] = data + offset[plane]; |
| 1159 | 1165 |
| 1160 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); | 1166 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); |
| 1161 } | 1167 } |
| 1162 | 1168 |
| 1163 } // namespace media | 1169 } // namespace media |
| OLD | NEW |