| 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 == 24, | 124 static_assert(PIXEL_FORMAT_MAX == 26, |
| 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 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 // static | 502 // static |
| 503 size_t VideoFrame::NumPlanes(VideoPixelFormat format) { | 503 size_t VideoFrame::NumPlanes(VideoPixelFormat format) { |
| 504 switch (format) { | 504 switch (format) { |
| 505 case PIXEL_FORMAT_UYVY: | 505 case PIXEL_FORMAT_UYVY: |
| 506 case PIXEL_FORMAT_YUY2: | 506 case PIXEL_FORMAT_YUY2: |
| 507 case PIXEL_FORMAT_ARGB: | 507 case PIXEL_FORMAT_ARGB: |
| 508 case PIXEL_FORMAT_XRGB: | 508 case PIXEL_FORMAT_XRGB: |
| 509 case PIXEL_FORMAT_RGB24: | 509 case PIXEL_FORMAT_RGB24: |
| 510 case PIXEL_FORMAT_RGB32: | 510 case PIXEL_FORMAT_RGB32: |
| 511 case PIXEL_FORMAT_MJPEG: | 511 case PIXEL_FORMAT_MJPEG: |
| 512 case PIXEL_FORMAT_Y8: |
| 513 case PIXEL_FORMAT_Y16: |
| 512 return 1; | 514 return 1; |
| 513 case PIXEL_FORMAT_NV12: | 515 case PIXEL_FORMAT_NV12: |
| 514 case PIXEL_FORMAT_NV21: | 516 case PIXEL_FORMAT_NV21: |
| 515 case PIXEL_FORMAT_MT21: | 517 case PIXEL_FORMAT_MT21: |
| 516 return 2; | 518 return 2; |
| 517 case PIXEL_FORMAT_I420: | 519 case PIXEL_FORMAT_I420: |
| 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: |
| (...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1038 return gfx::Size(2, 2); | 1040 return gfx::Size(2, 2); |
| 1039 | 1041 |
| 1040 case PIXEL_FORMAT_UNKNOWN: | 1042 case PIXEL_FORMAT_UNKNOWN: |
| 1041 case PIXEL_FORMAT_UYVY: | 1043 case PIXEL_FORMAT_UYVY: |
| 1042 case PIXEL_FORMAT_YUY2: | 1044 case PIXEL_FORMAT_YUY2: |
| 1043 case PIXEL_FORMAT_ARGB: | 1045 case PIXEL_FORMAT_ARGB: |
| 1044 case PIXEL_FORMAT_XRGB: | 1046 case PIXEL_FORMAT_XRGB: |
| 1045 case PIXEL_FORMAT_RGB24: | 1047 case PIXEL_FORMAT_RGB24: |
| 1046 case PIXEL_FORMAT_RGB32: | 1048 case PIXEL_FORMAT_RGB32: |
| 1047 case PIXEL_FORMAT_MJPEG: | 1049 case PIXEL_FORMAT_MJPEG: |
| 1050 case PIXEL_FORMAT_Y8: |
| 1051 case PIXEL_FORMAT_Y16: |
| 1048 break; | 1052 break; |
| 1049 } | 1053 } |
| 1050 } | 1054 } |
| 1051 NOTREACHED(); | 1055 NOTREACHED(); |
| 1052 return gfx::Size(); | 1056 return gfx::Size(); |
| 1053 } | 1057 } |
| 1054 | 1058 |
| 1055 // static | 1059 // static |
| 1056 int VideoFrame::BytesPerElement(VideoPixelFormat format, size_t plane) { | 1060 int VideoFrame::BytesPerElement(VideoPixelFormat format, size_t plane) { |
| 1057 DCHECK(IsValidPlane(plane, format)); | 1061 DCHECK(IsValidPlane(plane, format)); |
| 1058 switch (format) { | 1062 switch (format) { |
| 1059 case PIXEL_FORMAT_ARGB: | 1063 case PIXEL_FORMAT_ARGB: |
| 1060 case PIXEL_FORMAT_XRGB: | 1064 case PIXEL_FORMAT_XRGB: |
| 1061 case PIXEL_FORMAT_RGB32: | 1065 case PIXEL_FORMAT_RGB32: |
| 1062 return 4; | 1066 return 4; |
| 1063 case PIXEL_FORMAT_RGB24: | 1067 case PIXEL_FORMAT_RGB24: |
| 1064 return 3; | 1068 return 3; |
| 1069 case PIXEL_FORMAT_Y16: |
| 1065 case PIXEL_FORMAT_UYVY: | 1070 case PIXEL_FORMAT_UYVY: |
| 1066 case PIXEL_FORMAT_YUY2: | 1071 case PIXEL_FORMAT_YUY2: |
| 1067 case PIXEL_FORMAT_YUV420P9: | 1072 case PIXEL_FORMAT_YUV420P9: |
| 1068 case PIXEL_FORMAT_YUV422P9: | 1073 case PIXEL_FORMAT_YUV422P9: |
| 1069 case PIXEL_FORMAT_YUV444P9: | 1074 case PIXEL_FORMAT_YUV444P9: |
| 1070 case PIXEL_FORMAT_YUV420P10: | 1075 case PIXEL_FORMAT_YUV420P10: |
| 1071 case PIXEL_FORMAT_YUV422P10: | 1076 case PIXEL_FORMAT_YUV422P10: |
| 1072 case PIXEL_FORMAT_YUV444P10: | 1077 case PIXEL_FORMAT_YUV444P10: |
| 1073 case PIXEL_FORMAT_YUV420P12: | 1078 case PIXEL_FORMAT_YUV420P12: |
| 1074 case PIXEL_FORMAT_YUV422P12: | 1079 case PIXEL_FORMAT_YUV422P12: |
| 1075 case PIXEL_FORMAT_YUV444P12: | 1080 case PIXEL_FORMAT_YUV444P12: |
| 1076 return 2; | 1081 return 2; |
| 1077 case PIXEL_FORMAT_NV12: | 1082 case PIXEL_FORMAT_NV12: |
| 1078 case PIXEL_FORMAT_NV21: | 1083 case PIXEL_FORMAT_NV21: |
| 1079 case PIXEL_FORMAT_MT21: { | 1084 case PIXEL_FORMAT_MT21: { |
| 1080 static const int bytes_per_element[] = {1, 2}; | 1085 static const int bytes_per_element[] = {1, 2}; |
| 1081 DCHECK_LT(plane, arraysize(bytes_per_element)); | 1086 DCHECK_LT(plane, arraysize(bytes_per_element)); |
| 1082 return bytes_per_element[plane]; | 1087 return bytes_per_element[plane]; |
| 1083 } | 1088 } |
| 1084 case PIXEL_FORMAT_YV12: | 1089 case PIXEL_FORMAT_YV12: |
| 1085 case PIXEL_FORMAT_I420: | 1090 case PIXEL_FORMAT_I420: |
| 1086 case PIXEL_FORMAT_YV16: | 1091 case PIXEL_FORMAT_YV16: |
| 1087 case PIXEL_FORMAT_YV12A: | 1092 case PIXEL_FORMAT_YV12A: |
| 1088 case PIXEL_FORMAT_YV24: | 1093 case PIXEL_FORMAT_YV24: |
| 1094 case PIXEL_FORMAT_Y8: |
| 1089 return 1; | 1095 return 1; |
| 1090 case PIXEL_FORMAT_MJPEG: | 1096 case PIXEL_FORMAT_MJPEG: |
| 1091 return 0; | 1097 return 0; |
| 1092 case PIXEL_FORMAT_UNKNOWN: | 1098 case PIXEL_FORMAT_UNKNOWN: |
| 1093 break; | 1099 break; |
| 1094 } | 1100 } |
| 1095 NOTREACHED(); | 1101 NOTREACHED(); |
| 1096 return 0; | 1102 return 0; |
| 1097 } | 1103 } |
| 1098 | 1104 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1137 if (zero_initialize_memory) | 1143 if (zero_initialize_memory) |
| 1138 memset(data, 0, data_size); | 1144 memset(data, 0, data_size); |
| 1139 | 1145 |
| 1140 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) | 1146 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) |
| 1141 data_[plane] = data + offset[plane]; | 1147 data_[plane] = data + offset[plane]; |
| 1142 | 1148 |
| 1143 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); | 1149 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); |
| 1144 } | 1150 } |
| 1145 | 1151 |
| 1146 } // namespace media | 1152 } // namespace media |
| OLD | NEW |