1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "media/mojo/mojom/video_decoder_config_mojom_traits.h"
10 bool StructTraits<media::mojom::VideoDecoderConfigDataView,
11 media::VideoDecoderConfig>::
12 Read(media::mojom::VideoDecoderConfigDataView input,
13 media::VideoDecoderConfig* output) {
14 media::VideoCodec codec;
15 if (!input.ReadCodec(&codec))
18 media::VideoCodecProfile profile;
19 if (!input.ReadProfile(&profile))
22 media::VideoTransformation transformation;
23 if (!input.ReadTransformation(&transformation))
27 if (!input.ReadCodedSize(&coded_size))
30 gfx::Rect visible_rect;
31 if (!input.ReadVisibleRect(&visible_rect))
34 gfx::Size natural_size;
35 if (!input.ReadNaturalSize(&natural_size))
38 std::vector<uint8_t> extra_data;
39 if (!input.ReadExtraData(&extra_data))
42 media::EncryptionScheme encryption_scheme;
43 if (!input.ReadEncryptionScheme(&encryption_scheme))
46 media::VideoColorSpace color_space;
47 if (!input.ReadColorSpaceInfo(&color_space))
50 base::Optional<media::HDRMetadata> hdr_metadata;
51 if (!input.ReadHdrMetadata(&hdr_metadata))
54 output->Initialize(codec, profile,
56 ? media::VideoDecoderConfig::AlphaMode::kHasAlpha
57 : media::VideoDecoderConfig::AlphaMode::kIsOpaque,
58 color_space, transformation, coded_size, visible_rect,
59 natural_size, extra_data, encryption_scheme);
62 output->set_hdr_metadata(hdr_metadata.value());
64 output->set_level(input.level());
66 if (!output->IsValidConfig())