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

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

Issue 2122573003: media: replace LUMINANCE_F16 by RG_88 for 9/10-bit h264 videos Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: introduce --disable-half-float-conversion-texture flag Created 4 years, 2 months 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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 == 23,
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
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 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
1032 return gfx::Size(2, 2); 1034 return gfx::Size(2, 2);
1033 1035
1034 case PIXEL_FORMAT_UNKNOWN: 1036 case PIXEL_FORMAT_UNKNOWN:
1035 case PIXEL_FORMAT_UYVY: 1037 case PIXEL_FORMAT_UYVY:
1036 case PIXEL_FORMAT_YUY2: 1038 case PIXEL_FORMAT_YUY2:
1037 case PIXEL_FORMAT_ARGB: 1039 case PIXEL_FORMAT_ARGB:
1038 case PIXEL_FORMAT_XRGB: 1040 case PIXEL_FORMAT_XRGB:
1039 case PIXEL_FORMAT_RGB24: 1041 case PIXEL_FORMAT_RGB24:
1040 case PIXEL_FORMAT_RGB32: 1042 case PIXEL_FORMAT_RGB32:
1041 case PIXEL_FORMAT_MJPEG: 1043 case PIXEL_FORMAT_MJPEG:
1044 case PIXEL_FORMAT_Y8:
1045 case PIXEL_FORMAT_Y16:
1042 break; 1046 break;
1043 } 1047 }
1044 } 1048 }
1045 NOTREACHED(); 1049 NOTREACHED();
1046 return gfx::Size(); 1050 return gfx::Size();
1047 } 1051 }
1048 1052
1049 // static 1053 // static
1050 int VideoFrame::BytesPerElement(VideoPixelFormat format, size_t plane) { 1054 int VideoFrame::BytesPerElement(VideoPixelFormat format, size_t plane) {
1051 DCHECK(IsValidPlane(plane, format)); 1055 DCHECK(IsValidPlane(plane, format));
1052 switch (format) { 1056 switch (format) {
1053 case PIXEL_FORMAT_ARGB: 1057 case PIXEL_FORMAT_ARGB:
1054 case PIXEL_FORMAT_XRGB: 1058 case PIXEL_FORMAT_XRGB:
1055 case PIXEL_FORMAT_RGB32: 1059 case PIXEL_FORMAT_RGB32:
1056 return 4; 1060 return 4;
1057 case PIXEL_FORMAT_RGB24: 1061 case PIXEL_FORMAT_RGB24:
1058 return 3; 1062 return 3;
1063 case PIXEL_FORMAT_Y16:
1059 case PIXEL_FORMAT_UYVY: 1064 case PIXEL_FORMAT_UYVY:
1060 case PIXEL_FORMAT_YUY2: 1065 case PIXEL_FORMAT_YUY2:
1061 case PIXEL_FORMAT_YUV420P9: 1066 case PIXEL_FORMAT_YUV420P9:
1062 case PIXEL_FORMAT_YUV422P9: 1067 case PIXEL_FORMAT_YUV422P9:
1063 case PIXEL_FORMAT_YUV444P9: 1068 case PIXEL_FORMAT_YUV444P9:
1064 case PIXEL_FORMAT_YUV420P10: 1069 case PIXEL_FORMAT_YUV420P10:
1065 case PIXEL_FORMAT_YUV422P10: 1070 case PIXEL_FORMAT_YUV422P10:
1066 case PIXEL_FORMAT_YUV444P10: 1071 case PIXEL_FORMAT_YUV444P10:
1067 return 2; 1072 return 2;
1068 case PIXEL_FORMAT_NV12: 1073 case PIXEL_FORMAT_NV12:
1069 case PIXEL_FORMAT_NV21: 1074 case PIXEL_FORMAT_NV21:
1070 case PIXEL_FORMAT_MT21: { 1075 case PIXEL_FORMAT_MT21: {
1071 static const int bytes_per_element[] = {1, 2}; 1076 static const int bytes_per_element[] = {1, 2};
1072 DCHECK_LT(plane, arraysize(bytes_per_element)); 1077 DCHECK_LT(plane, arraysize(bytes_per_element));
1073 return bytes_per_element[plane]; 1078 return bytes_per_element[plane];
1074 } 1079 }
1075 case PIXEL_FORMAT_YV12: 1080 case PIXEL_FORMAT_YV12:
1076 case PIXEL_FORMAT_I420: 1081 case PIXEL_FORMAT_I420:
1077 case PIXEL_FORMAT_YV16: 1082 case PIXEL_FORMAT_YV16:
1078 case PIXEL_FORMAT_YV12A: 1083 case PIXEL_FORMAT_YV12A:
1079 case PIXEL_FORMAT_YV24: 1084 case PIXEL_FORMAT_YV24:
1085 case PIXEL_FORMAT_Y8:
1080 return 1; 1086 return 1;
1081 case PIXEL_FORMAT_MJPEG: 1087 case PIXEL_FORMAT_MJPEG:
1082 return 0; 1088 return 0;
1083 case PIXEL_FORMAT_UNKNOWN: 1089 case PIXEL_FORMAT_UNKNOWN:
1084 break; 1090 break;
1085 } 1091 }
1086 NOTREACHED(); 1092 NOTREACHED();
1087 return 0; 1093 return 0;
1088 } 1094 }
1089 1095
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 if (zero_initialize_memory) 1134 if (zero_initialize_memory)
1129 memset(data, 0, data_size); 1135 memset(data, 0, data_size);
1130 1136
1131 for (size_t plane = 0; plane < NumPlanes(format_); ++plane) 1137 for (size_t plane = 0; plane < NumPlanes(format_); ++plane)
1132 data_[plane] = data + offset[plane]; 1138 data_[plane] = data + offset[plane];
1133 1139
1134 AddDestructionObserver(base::Bind(&base::AlignedFree, data)); 1140 AddDestructionObserver(base::Bind(&base::AlignedFree, data));
1135 } 1141 }
1136 1142
1137 } // namespace media 1143 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698