1 // Copyright 2017 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef MEDIA_MOJO_MOJOM_VIDEO_DECODER_CONFIG_MOJOM_TRAITS_H_
6 #define MEDIA_MOJO_MOJOM_VIDEO_DECODER_CONFIG_MOJOM_TRAITS_H_
8 #include "media/base/ipc/media_param_traits.h"
9 #include "media/base/video_decoder_config.h"
10 #include "media/mojo/mojom/media_types.mojom.h"
11 #include "media/mojo/mojom/video_color_space_mojom_traits.h"
12 #include "media/mojo/mojom/video_transformation_mojom_traits.h"
13 #include "third_party/abseil-cpp/absl/types/optional.h"
14 #include "ui/gfx/geometry/mojom/geometry_mojom_traits.h"
15 #include "ui/gfx/mojom/hdr_metadata_mojom_traits.h"
20 struct StructTraits<media::mojom::VideoDecoderConfigDataView,
21 media::VideoDecoderConfig> {
22 static media::VideoCodec codec(const media::VideoDecoderConfig& input) {
26 static media::VideoCodecProfile profile(
27 const media::VideoDecoderConfig& input) {
28 return input.profile();
31 static bool has_alpha(const media::VideoDecoderConfig& input) {
32 return input.alpha_mode() ==
33 media::VideoDecoderConfig::AlphaMode::kHasAlpha;
36 static const gfx::Size& coded_size(const media::VideoDecoderConfig& input) {
37 return input.coded_size();
40 static const gfx::Rect& visible_rect(const media::VideoDecoderConfig& input) {
41 return input.visible_rect();
44 static const gfx::Size& natural_size(const media::VideoDecoderConfig& input) {
45 return input.natural_size();
48 static const std::vector<uint8_t>& extra_data(
49 const media::VideoDecoderConfig& input) {
50 return input.extra_data();
53 static media::EncryptionScheme encryption_scheme(
54 const media::VideoDecoderConfig& input) {
55 return input.encryption_scheme();
58 static const media::VideoColorSpace& color_space_info(
59 const media::VideoDecoderConfig& input) {
60 return input.color_space_info();
63 static media::VideoTransformation transformation(
64 const media::VideoDecoderConfig& input) {
65 return input.video_transformation();
68 static const absl::optional<gfx::HDRMetadata>& hdr_metadata(
69 const media::VideoDecoderConfig& input) {
70 return input.hdr_metadata();
73 static uint32_t level(const media::VideoDecoderConfig& input) {
77 #if BUILDFLAG(IS_TIZEN_TV)
78 static std::string hdr_info(const media::VideoDecoderConfig& input) {
79 return input.hdr_info();
83 static bool Read(media::mojom::VideoDecoderConfigDataView input,
84 media::VideoDecoderConfig* output);
89 #endif // MEDIA_MOJO_MOJOM_VIDEO_DECODER_CONFIG_MOJOM_TRAITS_H_