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

Unified 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/ipc/quads_struct_traits.cc
diff --git a/cc/ipc/quads_struct_traits.cc b/cc/ipc/quads_struct_traits.cc
index cdc16d93504da7446f7c498778755256c8bae461..26e1d3f5b9548ab40569213a01bbdc9aff39a71c 100644
--- a/cc/ipc/quads_struct_traits.cc
+++ b/cc/ipc/quads_struct_traits.cc
@@ -211,6 +211,65 @@ bool StructTraits<cc::mojom::TileQuadState, cc::DrawQuad>::Read(
return true;
}
+cc::mojom::YUVColorSpace
+EnumTraits<cc::mojom::YUVColorSpace, cc::YUVVideoDrawQuad::ColorSpace>::ToMojom(
+ cc::YUVVideoDrawQuad::ColorSpace color_space) {
+ switch (color_space) {
+ case cc::YUVVideoDrawQuad::REC_601:
+ return cc::mojom::YUVColorSpace::REC_601;
+ case cc::YUVVideoDrawQuad::REC_709:
+ return cc::mojom::YUVColorSpace::REC_709;
+ case cc::YUVVideoDrawQuad::JPEG:
+ return cc::mojom::YUVColorSpace::JPEG;
+ }
+ NOTREACHED();
+ return cc::mojom::YUVColorSpace::JPEG;
+}
+
+// static
+bool EnumTraits<cc::mojom::YUVColorSpace, cc::YUVVideoDrawQuad::ColorSpace>::
+ FromMojom(cc::mojom::YUVColorSpace input,
+ 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
+ switch (input) {
+ case cc::mojom::YUVColorSpace::REC_601:
+ *out = cc::YUVVideoDrawQuad::REC_601;
+ return true;
+ case cc::mojom::YUVColorSpace::REC_709:
+ *out = cc::YUVVideoDrawQuad::REC_709;
+ return true;
+ case cc::mojom::YUVColorSpace::JPEG:
+ *out = cc::YUVVideoDrawQuad::JPEG;
+ return true;
+ }
+ return false;
+}
+
+// static
+bool StructTraits<cc::mojom::YUVVideoQuadState, cc::DrawQuad>::Read(
+ cc::mojom::YUVVideoQuadStateDataView data,
+ cc::DrawQuad* out) {
+ cc::YUVVideoDrawQuad* quad = static_cast<cc::YUVVideoDrawQuad*>(out);
+ if (!data.ReadYaTexCoordRect(&quad->ya_tex_coord_rect) ||
+ !data.ReadUvTexCoordRect(&quad->uv_tex_coord_rect) ||
+ !data.ReadYaTexSize(&quad->ya_tex_size) ||
+ !data.ReadUvTexSize(&quad->uv_tex_size)) {
+ return false;
+ }
+ quad->resources.ids[cc::YUVVideoDrawQuad::kYPlaneResourceIdIndex] =
+ data.y_plane_resource_id();
+ quad->resources.ids[cc::YUVVideoDrawQuad::kUPlaneResourceIdIndex] =
+ data.u_plane_resource_id();
+ quad->resources.ids[cc::YUVVideoDrawQuad::kVPlaneResourceIdIndex] =
+ data.v_plane_resource_id();
+ quad->resources.ids[cc::YUVVideoDrawQuad::kAPlaneResourceIdIndex] =
+ data.a_plane_resource_id();
+ if (!data.ReadColorSpace(&quad->color_space))
+ return false;
+ quad->resource_offset = data.resource_offset();
+ quad->resource_multiplier = data.resource_multiplier();
+ return true;
+}
+
// static
bool StructTraits<cc::mojom::DrawQuad, cc::DrawQuad>::Read(
cc::mojom::DrawQuadDataView data,
@@ -241,9 +300,7 @@ bool StructTraits<cc::mojom::DrawQuad, cc::DrawQuad>::Read(
case cc::mojom::Material::TILED_CONTENT:
return data.ReadTileQuadState(out);
case cc::mojom::Material::YUV_VIDEO_CONTENT:
- // TODO(fsamuel): Implement YUVVideoDrawQuad
- // serialization/deserialization.
- break;
+ return data.ReadYuvVideoQuadState(out);
}
NOTREACHED();
return false;
« 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