Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Side by Side Diff: media/base/video_frame.cc

Issue 2571163002: Add PIXEL_FORMAT_I422. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698