| 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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 natural_size.width() > limits::kMaxDimension || | 114 natural_size.width() > limits::kMaxDimension || |
| 115 natural_size.height() > limits::kMaxDimension) | 115 natural_size.height() > limits::kMaxDimension) |
| 116 return false; | 116 return false; |
| 117 | 117 |
| 118 // TODO(mcasas): Remove parameter |storage_type| when the opaque storage types | 118 // TODO(mcasas): Remove parameter |storage_type| when the opaque storage types |
| 119 // comply with the checks below. Right now we skip them. | 119 // comply with the checks below. Right now we skip them. |
| 120 if (!IsStorageTypeMappable(storage_type)) | 120 if (!IsStorageTypeMappable(storage_type)) |
| 121 return true; | 121 return true; |
| 122 | 122 |
| 123 // Make sure new formats are properly accounted for in the method. | 123 // Make sure new formats are properly accounted for in the method. |
| 124 static_assert(PIXEL_FORMAT_MAX == 21, | 124 static_assert(PIXEL_FORMAT_MAX == 24, |
| 125 "Added pixel format, please review IsValidConfig()"); | 125 "Added pixel format, please review IsValidConfig()"); |
| 126 | 126 |
| 127 if (format == PIXEL_FORMAT_UNKNOWN) { | 127 if (format == PIXEL_FORMAT_UNKNOWN) { |
| 128 return coded_size.IsEmpty() && visible_rect.IsEmpty() && | 128 return coded_size.IsEmpty() && visible_rect.IsEmpty() && |
| 129 natural_size.IsEmpty(); | 129 natural_size.IsEmpty(); |
| 130 } | 130 } |
| 131 | 131 |
| 132 // Check that software-allocated buffer formats are not empty. | 132 // Check that software-allocated buffer formats are not empty. |
| 133 return !coded_size.IsEmpty() && !visible_rect.IsEmpty() && | 133 return !coded_size.IsEmpty() && !visible_rect.IsEmpty() && |
| 134 !natural_size.IsEmpty(); | 134 !natural_size.IsEmpty(); |
| (...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 case PIXEL_FORMAT_I420: | 517 case PIXEL_FORMAT_I420: |
| 518 case PIXEL_FORMAT_YV12: | 518 case PIXEL_FORMAT_YV12: |
| 519 case PIXEL_FORMAT_YV16: | 519 case PIXEL_FORMAT_YV16: |
| 520 case PIXEL_FORMAT_YV24: | 520 case PIXEL_FORMAT_YV24: |
| 521 case PIXEL_FORMAT_YUV420P9: | 521 case PIXEL_FORMAT_YUV420P9: |
| 522 case PIXEL_FORMAT_YUV422P9: | 522 case PIXEL_FORMAT_YUV422P9: |
| 523 case PIXEL_FORMAT_YUV444P9: | 523 case PIXEL_FORMAT_YUV444P9: |
| 524 case PIXEL_FORMAT_YUV420P10: | 524 case PIXEL_FORMAT_YUV420P10: |
| 525 case PIXEL_FORMAT_YUV422P10: | 525 case PIXEL_FORMAT_YUV422P10: |
| 526 case PIXEL_FORMAT_YUV444P10: | 526 case PIXEL_FORMAT_YUV444P10: |
| 527 case PIXEL_FORMAT_YUV420P12: |
| 528 case PIXEL_FORMAT_YUV422P12: |
| 529 case PIXEL_FORMAT_YUV444P12: |
| 527 return 3; | 530 return 3; |
| 528 case PIXEL_FORMAT_YV12A: | 531 case PIXEL_FORMAT_YV12A: |
| 529 return 4; | 532 return 4; |
| 530 case PIXEL_FORMAT_UNKNOWN: | 533 case PIXEL_FORMAT_UNKNOWN: |
| 531 break; | 534 break; |
| 532 } | 535 } |
| 533 NOTREACHED() << "Unsupported video frame format: " << format; | 536 NOTREACHED() << "Unsupported video frame format: " << format; |
| 534 return 0; | 537 return 0; |
| 535 } | 538 } |
| 536 | 539 |
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1007 case kYPlane: // and kARGBPlane: | 1010 case kYPlane: // and kARGBPlane: |
| 1008 case kAPlane: | 1011 case kAPlane: |
| 1009 return gfx::Size(1, 1); | 1012 return gfx::Size(1, 1); |
| 1010 | 1013 |
| 1011 case kUPlane: // and kUVPlane: | 1014 case kUPlane: // and kUVPlane: |
| 1012 case kVPlane: | 1015 case kVPlane: |
| 1013 switch (format) { | 1016 switch (format) { |
| 1014 case PIXEL_FORMAT_YV24: | 1017 case PIXEL_FORMAT_YV24: |
| 1015 case PIXEL_FORMAT_YUV444P9: | 1018 case PIXEL_FORMAT_YUV444P9: |
| 1016 case PIXEL_FORMAT_YUV444P10: | 1019 case PIXEL_FORMAT_YUV444P10: |
| 1020 case PIXEL_FORMAT_YUV444P12: |
| 1017 return gfx::Size(1, 1); | 1021 return gfx::Size(1, 1); |
| 1018 | 1022 |
| 1019 case PIXEL_FORMAT_YV16: | 1023 case PIXEL_FORMAT_YV16: |
| 1020 case PIXEL_FORMAT_YUV422P9: | 1024 case PIXEL_FORMAT_YUV422P9: |
| 1021 case PIXEL_FORMAT_YUV422P10: | 1025 case PIXEL_FORMAT_YUV422P10: |
| 1026 case PIXEL_FORMAT_YUV422P12: |
| 1022 return gfx::Size(2, 1); | 1027 return gfx::Size(2, 1); |
| 1023 | 1028 |
| 1024 case PIXEL_FORMAT_YV12: | 1029 case PIXEL_FORMAT_YV12: |
| 1025 case PIXEL_FORMAT_I420: | 1030 case PIXEL_FORMAT_I420: |
| 1026 case PIXEL_FORMAT_YV12A: | 1031 case PIXEL_FORMAT_YV12A: |
| 1027 case PIXEL_FORMAT_NV12: | 1032 case PIXEL_FORMAT_NV12: |
| 1028 case PIXEL_FORMAT_NV21: | 1033 case PIXEL_FORMAT_NV21: |
| 1029 case PIXEL_FORMAT_MT21: | 1034 case PIXEL_FORMAT_MT21: |
| 1030 case PIXEL_FORMAT_YUV420P9: | 1035 case PIXEL_FORMAT_YUV420P9: |
| 1031 case PIXEL_FORMAT_YUV420P10: | 1036 case PIXEL_FORMAT_YUV420P10: |
| 1037 case PIXEL_FORMAT_YUV420P12: |
| 1032 return gfx::Size(2, 2); | 1038 return gfx::Size(2, 2); |
| 1033 | 1039 |
| 1034 case PIXEL_FORMAT_UNKNOWN: | 1040 case PIXEL_FORMAT_UNKNOWN: |
| 1035 case PIXEL_FORMAT_UYVY: | 1041 case PIXEL_FORMAT_UYVY: |
| 1036 case PIXEL_FORMAT_YUY2: | 1042 case PIXEL_FORMAT_YUY2: |
| 1037 case PIXEL_FORMAT_ARGB: | 1043 case PIXEL_FORMAT_ARGB: |
| 1038 case PIXEL_FORMAT_XRGB: | 1044 case PIXEL_FORMAT_XRGB: |
| 1039 case PIXEL_FORMAT_RGB24: | 1045 case PIXEL_FORMAT_RGB24: |
| 1040 case PIXEL_FORMAT_RGB32: | 1046 case PIXEL_FORMAT_RGB32: |
| 1041 case PIXEL_FORMAT_MJPEG: | 1047 case PIXEL_FORMAT_MJPEG: |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1057 case PIXEL_FORMAT_RGB24: | 1063 case PIXEL_FORMAT_RGB24: |
| 1058 return 3; | 1064 return 3; |
| 1059 case PIXEL_FORMAT_UYVY: | 1065 case PIXEL_FORMAT_UYVY: |
| 1060 case PIXEL_FORMAT_YUY2: | 1066 case PIXEL_FORMAT_YUY2: |
| 1061 case PIXEL_FORMAT_YUV420P9: | 1067 case PIXEL_FORMAT_YUV420P9: |
| 1062 case PIXEL_FORMAT_YUV422P9: | 1068 case PIXEL_FORMAT_YUV422P9: |
| 1063 case PIXEL_FORMAT_YUV444P9: | 1069 case PIXEL_FORMAT_YUV444P9: |
| 1064 case PIXEL_FORMAT_YUV420P10: | 1070 case PIXEL_FORMAT_YUV420P10: |
| 1065 case PIXEL_FORMAT_YUV422P10: | 1071 case PIXEL_FORMAT_YUV422P10: |
| 1066 case PIXEL_FORMAT_YUV444P10: | 1072 case PIXEL_FORMAT_YUV444P10: |
| 1073 case PIXEL_FORMAT_YUV420P12: |
| 1074 case PIXEL_FORMAT_YUV422P12: |
| 1075 case PIXEL_FORMAT_YUV444P12: |
| 1067 return 2; | 1076 return 2; |
| 1068 case PIXEL_FORMAT_NV12: | 1077 case PIXEL_FORMAT_NV12: |
| 1069 case PIXEL_FORMAT_NV21: | 1078 case PIXEL_FORMAT_NV21: |
| 1070 case PIXEL_FORMAT_MT21: { | 1079 case PIXEL_FORMAT_MT21: { |
| 1071 static const int bytes_per_element[] = {1, 2}; | 1080 static const int bytes_per_element[] = {1, 2}; |
| 1072 DCHECK_LT(plane, arraysize(bytes_per_element)); | 1081 DCHECK_LT(plane, arraysize(bytes_per_element)); |
| 1073 return bytes_per_element[plane]; | 1082 return bytes_per_element[plane]; |
| 1074 } | 1083 } |
| 1075 case PIXEL_FORMAT_YV12: | 1084 case PIXEL_FORMAT_YV12: |
| 1076 case PIXEL_FORMAT_I420: | 1085 case PIXEL_FORMAT_I420: |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1128 if (zero_initialize_memory) | 1137 if (zero_initialize_memory) |
| 1129 memset(data, 0, data_size); | 1138 memset(data, 0, data_size); |
| 1130 | 1139 |
| 1131 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) | 1140 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) |
| 1132 data_[plane] = data + offset[plane]; | 1141 data_[plane] = data + offset[plane]; |
| 1133 | 1142 |
| 1134 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); | 1143 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); |
| 1135 } | 1144 } |
| 1136 | 1145 |
| 1137 } // namespace media | 1146 } // namespace media |
| OLD | NEW |