| 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 case PIXEL_FORMAT_XRGB: | 100 case PIXEL_FORMAT_XRGB: |
| 101 case PIXEL_FORMAT_RGB24: | 101 case PIXEL_FORMAT_RGB24: |
| 102 case PIXEL_FORMAT_RGB32: | 102 case PIXEL_FORMAT_RGB32: |
| 103 case PIXEL_FORMAT_Y8: | 103 case PIXEL_FORMAT_Y8: |
| 104 case PIXEL_FORMAT_Y16: | 104 case PIXEL_FORMAT_Y16: |
| 105 return false; | 105 return false; |
| 106 case PIXEL_FORMAT_NV12: | 106 case PIXEL_FORMAT_NV12: |
| 107 case PIXEL_FORMAT_NV21: | 107 case PIXEL_FORMAT_NV21: |
| 108 case PIXEL_FORMAT_MT21: | 108 case PIXEL_FORMAT_MT21: |
| 109 case PIXEL_FORMAT_I420: | 109 case PIXEL_FORMAT_I420: |
| 110 case PIXEL_FORMAT_I422: |
| 110 case PIXEL_FORMAT_MJPEG: | 111 case PIXEL_FORMAT_MJPEG: |
| 111 case PIXEL_FORMAT_YUY2: | 112 case PIXEL_FORMAT_YUY2: |
| 112 case PIXEL_FORMAT_YV12: | 113 case PIXEL_FORMAT_YV12: |
| 113 case PIXEL_FORMAT_YV16: | 114 case PIXEL_FORMAT_YV16: |
| 114 case PIXEL_FORMAT_YV24: | 115 case PIXEL_FORMAT_YV24: |
| 115 case PIXEL_FORMAT_YUV420P9: | 116 case PIXEL_FORMAT_YUV420P9: |
| 116 case PIXEL_FORMAT_YUV422P9: | 117 case PIXEL_FORMAT_YUV422P9: |
| 117 case PIXEL_FORMAT_YUV444P9: | 118 case PIXEL_FORMAT_YUV444P9: |
| 118 case PIXEL_FORMAT_YUV420P10: | 119 case PIXEL_FORMAT_YUV420P10: |
| 119 case PIXEL_FORMAT_YUV422P10: | 120 case PIXEL_FORMAT_YUV422P10: |
| (...skipping 30 matching lines...) Expand all Loading... |
| 150 natural_size.width() > limits::kMaxDimension || | 151 natural_size.width() > limits::kMaxDimension || |
| 151 natural_size.height() > limits::kMaxDimension) | 152 natural_size.height() > limits::kMaxDimension) |
| 152 return false; | 153 return false; |
| 153 | 154 |
| 154 // TODO(mcasas): Remove parameter |storage_type| when the opaque storage types | 155 // TODO(mcasas): Remove parameter |storage_type| when the opaque storage types |
| 155 // comply with the checks below. Right now we skip them. | 156 // comply with the checks below. Right now we skip them. |
| 156 if (!IsStorageTypeMappable(storage_type)) | 157 if (!IsStorageTypeMappable(storage_type)) |
| 157 return true; | 158 return true; |
| 158 | 159 |
| 159 // Make sure new formats are properly accounted for in the method. | 160 // Make sure new formats are properly accounted for in the method. |
| 160 static_assert(PIXEL_FORMAT_MAX == 26, | 161 static_assert(PIXEL_FORMAT_MAX == 27, |
| 161 "Added pixel format, please review IsValidConfig()"); | 162 "Added pixel format, please review IsValidConfig()"); |
| 162 | 163 |
| 163 if (format == PIXEL_FORMAT_UNKNOWN) { | 164 if (format == PIXEL_FORMAT_UNKNOWN) { |
| 164 return coded_size.IsEmpty() && visible_rect.IsEmpty() && | 165 return coded_size.IsEmpty() && visible_rect.IsEmpty() && |
| 165 natural_size.IsEmpty(); | 166 natural_size.IsEmpty(); |
| 166 } | 167 } |
| 167 | 168 |
| 168 // Check that software-allocated buffer formats are not empty. | 169 // Check that software-allocated buffer formats are not empty. |
| 169 return !coded_size.IsEmpty() && !visible_rect.IsEmpty() && | 170 return !coded_size.IsEmpty() && !visible_rect.IsEmpty() && |
| 170 !natural_size.IsEmpty(); | 171 !natural_size.IsEmpty(); |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 case PIXEL_FORMAT_RGB32: | 509 case PIXEL_FORMAT_RGB32: |
| 509 case PIXEL_FORMAT_MJPEG: | 510 case PIXEL_FORMAT_MJPEG: |
| 510 case PIXEL_FORMAT_Y8: | 511 case PIXEL_FORMAT_Y8: |
| 511 case PIXEL_FORMAT_Y16: | 512 case PIXEL_FORMAT_Y16: |
| 512 return 1; | 513 return 1; |
| 513 case PIXEL_FORMAT_NV12: | 514 case PIXEL_FORMAT_NV12: |
| 514 case PIXEL_FORMAT_NV21: | 515 case PIXEL_FORMAT_NV21: |
| 515 case PIXEL_FORMAT_MT21: | 516 case PIXEL_FORMAT_MT21: |
| 516 return 2; | 517 return 2; |
| 517 case PIXEL_FORMAT_I420: | 518 case PIXEL_FORMAT_I420: |
| 519 case PIXEL_FORMAT_I422: |
| 518 case PIXEL_FORMAT_YV12: | 520 case PIXEL_FORMAT_YV12: |
| 519 case PIXEL_FORMAT_YV16: | 521 case PIXEL_FORMAT_YV16: |
| 520 case PIXEL_FORMAT_YV24: | 522 case PIXEL_FORMAT_YV24: |
| 521 case PIXEL_FORMAT_YUV420P9: | 523 case PIXEL_FORMAT_YUV420P9: |
| 522 case PIXEL_FORMAT_YUV422P9: | 524 case PIXEL_FORMAT_YUV422P9: |
| 523 case PIXEL_FORMAT_YUV444P9: | 525 case PIXEL_FORMAT_YUV444P9: |
| 524 case PIXEL_FORMAT_YUV420P10: | 526 case PIXEL_FORMAT_YUV420P10: |
| 525 case PIXEL_FORMAT_YUV422P10: | 527 case PIXEL_FORMAT_YUV422P10: |
| 526 case PIXEL_FORMAT_YUV444P10: | 528 case PIXEL_FORMAT_YUV444P10: |
| 527 case PIXEL_FORMAT_YUV420P12: | 529 case PIXEL_FORMAT_YUV420P12: |
| (...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1021 case kUPlane: // and kUVPlane: | 1023 case kUPlane: // and kUVPlane: |
| 1022 case kVPlane: | 1024 case kVPlane: |
| 1023 switch (format) { | 1025 switch (format) { |
| 1024 case PIXEL_FORMAT_YV24: | 1026 case PIXEL_FORMAT_YV24: |
| 1025 case PIXEL_FORMAT_YUV444P9: | 1027 case PIXEL_FORMAT_YUV444P9: |
| 1026 case PIXEL_FORMAT_YUV444P10: | 1028 case PIXEL_FORMAT_YUV444P10: |
| 1027 case PIXEL_FORMAT_YUV444P12: | 1029 case PIXEL_FORMAT_YUV444P12: |
| 1028 case PIXEL_FORMAT_Y16: | 1030 case PIXEL_FORMAT_Y16: |
| 1029 return gfx::Size(1, 1); | 1031 return gfx::Size(1, 1); |
| 1030 | 1032 |
| 1033 case PIXEL_FORMAT_I422: |
| 1031 case PIXEL_FORMAT_YV16: | 1034 case PIXEL_FORMAT_YV16: |
| 1032 case PIXEL_FORMAT_YUV422P9: | 1035 case PIXEL_FORMAT_YUV422P9: |
| 1033 case PIXEL_FORMAT_YUV422P10: | 1036 case PIXEL_FORMAT_YUV422P10: |
| 1034 case PIXEL_FORMAT_YUV422P12: | 1037 case PIXEL_FORMAT_YUV422P12: |
| 1035 return gfx::Size(2, 1); | 1038 return gfx::Size(2, 1); |
| 1036 | 1039 |
| 1037 case PIXEL_FORMAT_YV12: | 1040 case PIXEL_FORMAT_YV12: |
| 1038 case PIXEL_FORMAT_I420: | 1041 case PIXEL_FORMAT_I420: |
| 1039 case PIXEL_FORMAT_YV12A: | 1042 case PIXEL_FORMAT_YV12A: |
| 1040 case PIXEL_FORMAT_NV12: | 1043 case PIXEL_FORMAT_NV12: |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1086 return 2; | 1089 return 2; |
| 1087 case PIXEL_FORMAT_NV12: | 1090 case PIXEL_FORMAT_NV12: |
| 1088 case PIXEL_FORMAT_NV21: | 1091 case PIXEL_FORMAT_NV21: |
| 1089 case PIXEL_FORMAT_MT21: { | 1092 case PIXEL_FORMAT_MT21: { |
| 1090 static const int bytes_per_element[] = {1, 2}; | 1093 static const int bytes_per_element[] = {1, 2}; |
| 1091 DCHECK_LT(plane, arraysize(bytes_per_element)); | 1094 DCHECK_LT(plane, arraysize(bytes_per_element)); |
| 1092 return bytes_per_element[plane]; | 1095 return bytes_per_element[plane]; |
| 1093 } | 1096 } |
| 1094 case PIXEL_FORMAT_YV12: | 1097 case PIXEL_FORMAT_YV12: |
| 1095 case PIXEL_FORMAT_I420: | 1098 case PIXEL_FORMAT_I420: |
| 1099 case PIXEL_FORMAT_I422: |
| 1096 case PIXEL_FORMAT_YV16: | 1100 case PIXEL_FORMAT_YV16: |
| 1097 case PIXEL_FORMAT_YV12A: | 1101 case PIXEL_FORMAT_YV12A: |
| 1098 case PIXEL_FORMAT_YV24: | 1102 case PIXEL_FORMAT_YV24: |
| 1099 case PIXEL_FORMAT_Y8: | 1103 case PIXEL_FORMAT_Y8: |
| 1100 return 1; | 1104 return 1; |
| 1101 case PIXEL_FORMAT_MJPEG: | 1105 case PIXEL_FORMAT_MJPEG: |
| 1102 return 0; | 1106 return 0; |
| 1103 case PIXEL_FORMAT_UNKNOWN: | 1107 case PIXEL_FORMAT_UNKNOWN: |
| 1104 break; | 1108 break; |
| 1105 } | 1109 } |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1148 if (zero_initialize_memory) | 1152 if (zero_initialize_memory) |
| 1149 memset(data, 0, data_size); | 1153 memset(data, 0, data_size); |
| 1150 | 1154 |
| 1151 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) | 1155 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) |
| 1152 data_[plane] = data + offset[plane]; | 1156 data_[plane] = data + offset[plane]; |
| 1153 | 1157 |
| 1154 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); | 1158 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); |
| 1155 } | 1159 } |
| 1156 | 1160 |
| 1157 } // namespace media | 1161 } // namespace media |
| OLD | NEW |