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

Side by Side Diff: cc/ipc/quads_struct_traits.cc

Issue 2072273002: Implement YUVVideoDrawQuad StructTraits (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added unit test Created 4 years, 6 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
« no previous file with comments | « cc/ipc/quads_struct_traits.h ('k') | cc/ipc/struct_traits_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "cc/ipc/quads_struct_traits.h" 5 #include "cc/ipc/quads_struct_traits.h"
6 6
7 namespace mojo { 7 namespace mojo {
8 8
9 namespace { 9 namespace {
10 10
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 !data.ReadTextureSize(&quad->texture_size)) { 204 !data.ReadTextureSize(&quad->texture_size)) {
205 return false; 205 return false;
206 } 206 }
207 207
208 quad->swizzle_contents = data.swizzle_contents(); 208 quad->swizzle_contents = data.swizzle_contents();
209 quad->nearest_neighbor = data.nearest_neighbor(); 209 quad->nearest_neighbor = data.nearest_neighbor();
210 quad->resources.ids[cc::TileDrawQuad::kResourceIdIndex] = data.resource_id(); 210 quad->resources.ids[cc::TileDrawQuad::kResourceIdIndex] = data.resource_id();
211 return true; 211 return true;
212 } 212 }
213 213
214 cc::mojom::YUVColorSpace
215 EnumTraits<cc::mojom::YUVColorSpace, cc::YUVVideoDrawQuad::ColorSpace>::ToMojom(
216 cc::YUVVideoDrawQuad::ColorSpace color_space) {
217 switch (color_space) {
218 case cc::YUVVideoDrawQuad::REC_601:
219 return cc::mojom::YUVColorSpace::REC_601;
220 case cc::YUVVideoDrawQuad::REC_709:
221 return cc::mojom::YUVColorSpace::REC_709;
222 case cc::YUVVideoDrawQuad::JPEG:
223 return cc::mojom::YUVColorSpace::JPEG;
224 }
225 NOTREACHED();
226 return cc::mojom::YUVColorSpace::JPEG;
227 }
228
229 // static
230 bool EnumTraits<cc::mojom::YUVColorSpace, cc::YUVVideoDrawQuad::ColorSpace>::
231 FromMojom(cc::mojom::YUVColorSpace input,
232 cc::YUVVideoDrawQuad::ColorSpace* out) {
dcheng 2016/06/17 20:26:15 I wonder if we really need to return a bool for no
yzshen1 2016/06/17 20:37:50 I think it is consistent to return a bool because
233 switch (input) {
234 case cc::mojom::YUVColorSpace::REC_601:
235 *out = cc::YUVVideoDrawQuad::REC_601;
236 return true;
237 case cc::mojom::YUVColorSpace::REC_709:
238 *out = cc::YUVVideoDrawQuad::REC_709;
239 return true;
240 case cc::mojom::YUVColorSpace::JPEG:
241 *out = cc::YUVVideoDrawQuad::JPEG;
242 return true;
243 }
244 return false;
245 }
246
247 // static
248 bool StructTraits<cc::mojom::YUVVideoQuadState, cc::DrawQuad>::Read(
249 cc::mojom::YUVVideoQuadStateDataView data,
250 cc::DrawQuad* out) {
251 cc::YUVVideoDrawQuad* quad = static_cast<cc::YUVVideoDrawQuad*>(out);
252 if (!data.ReadYaTexCoordRect(&quad->ya_tex_coord_rect) ||
253 !data.ReadUvTexCoordRect(&quad->uv_tex_coord_rect) ||
254 !data.ReadYaTexSize(&quad->ya_tex_size) ||
255 !data.ReadUvTexSize(&quad->uv_tex_size)) {
256 return false;
257 }
258 quad->resources.ids[cc::YUVVideoDrawQuad::kYPlaneResourceIdIndex] =
259 data.y_plane_resource_id();
260 quad->resources.ids[cc::YUVVideoDrawQuad::kUPlaneResourceIdIndex] =
261 data.u_plane_resource_id();
262 quad->resources.ids[cc::YUVVideoDrawQuad::kVPlaneResourceIdIndex] =
263 data.v_plane_resource_id();
264 quad->resources.ids[cc::YUVVideoDrawQuad::kAPlaneResourceIdIndex] =
265 data.a_plane_resource_id();
266 if (!data.ReadColorSpace(&quad->color_space))
267 return false;
268 quad->resource_offset = data.resource_offset();
269 quad->resource_multiplier = data.resource_multiplier();
270 return true;
271 }
272
214 // static 273 // static
215 bool StructTraits<cc::mojom::DrawQuad, cc::DrawQuad>::Read( 274 bool StructTraits<cc::mojom::DrawQuad, cc::DrawQuad>::Read(
216 cc::mojom::DrawQuadDataView data, 275 cc::mojom::DrawQuadDataView data,
217 cc::DrawQuad* out) { 276 cc::DrawQuad* out) {
218 if (!ReadDrawQuad(data, out)) 277 if (!ReadDrawQuad(data, out))
219 return false; 278 return false;
220 switch (data.material()) { 279 switch (data.material()) {
221 case cc::mojom::Material::INVALID: 280 case cc::mojom::Material::INVALID:
222 break; 281 break;
223 case cc::mojom::Material::DEBUG_BORDER: 282 case cc::mojom::Material::DEBUG_BORDER:
(...skipping 10 matching lines...) Expand all
234 // TODO(fsamuel): Implement StreamVideoContentDrawQuad 293 // TODO(fsamuel): Implement StreamVideoContentDrawQuad
235 // serialization/deserialization. 294 // serialization/deserialization.
236 break; 295 break;
237 case cc::mojom::Material::SURFACE_CONTENT: 296 case cc::mojom::Material::SURFACE_CONTENT:
238 return data.ReadSurfaceQuadState(out); 297 return data.ReadSurfaceQuadState(out);
239 case cc::mojom::Material::TEXTURE_CONTENT: 298 case cc::mojom::Material::TEXTURE_CONTENT:
240 return data.ReadTextureQuadState(out); 299 return data.ReadTextureQuadState(out);
241 case cc::mojom::Material::TILED_CONTENT: 300 case cc::mojom::Material::TILED_CONTENT:
242 return data.ReadTileQuadState(out); 301 return data.ReadTileQuadState(out);
243 case cc::mojom::Material::YUV_VIDEO_CONTENT: 302 case cc::mojom::Material::YUV_VIDEO_CONTENT:
244 // TODO(fsamuel): Implement YUVVideoDrawQuad 303 return data.ReadYuvVideoQuadState(out);
245 // serialization/deserialization.
246 break;
247 } 304 }
248 NOTREACHED(); 305 NOTREACHED();
249 return false; 306 return false;
250 } 307 }
251 308
252 // static 309 // static
253 void* StructTraits<cc::mojom::QuadList, cc::QuadList>::SetUpContext( 310 void* StructTraits<cc::mojom::QuadList, cc::QuadList>::SetUpContext(
254 const cc::QuadList& quad_list) { 311 const cc::QuadList& quad_list) {
255 mojo::Array<cc::DrawQuad::Material>* materials = 312 mojo::Array<cc::DrawQuad::Material>* materials =
256 new mojo::Array<cc::DrawQuad::Material>(quad_list.size()); 313 new mojo::Array<cc::DrawQuad::Material>(quad_list.size());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 if (!AllocateAndConstruct(materials[i], out)) 346 if (!AllocateAndConstruct(materials[i], out))
290 return false; 347 return false;
291 } 348 }
292 // The materials array and the quads array are expected to be the same size. 349 // The materials array and the quads array are expected to be the same size.
293 // If they are not, then deserialization will fail. 350 // If they are not, then deserialization will fail.
294 QuadListArray quad_list_array = {materials.size(), out}; 351 QuadListArray quad_list_array = {materials.size(), out};
295 return data.ReadQuads(&quad_list_array); 352 return data.ReadQuads(&quad_list_array);
296 } 353 }
297 354
298 } // namespace mojo 355 } // namespace mojo
OLDNEW
« no previous file with comments | « cc/ipc/quads_struct_traits.h ('k') | cc/ipc/struct_traits_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698