072da5421fad2e676fd51badb5bec4413b1462ce
[platform/framework/web/chromium-efl.git] / media / mojo / mojom / video_decoder_config_mojom_traits.h
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.
4
5 #ifndef MEDIA_MOJO_MOJOM_VIDEO_DECODER_CONFIG_MOJOM_TRAITS_H_
6 #define MEDIA_MOJO_MOJOM_VIDEO_DECODER_CONFIG_MOJOM_TRAITS_H_
7
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"
16
17 namespace mojo {
18
19 template <>
20 struct StructTraits<media::mojom::VideoDecoderConfigDataView,
21                     media::VideoDecoderConfig> {
22   static media::VideoCodec codec(const media::VideoDecoderConfig& input) {
23     return input.codec();
24   }
25
26   static media::VideoCodecProfile profile(
27       const media::VideoDecoderConfig& input) {
28     return input.profile();
29   }
30
31   static bool has_alpha(const media::VideoDecoderConfig& input) {
32     return input.alpha_mode() ==
33            media::VideoDecoderConfig::AlphaMode::kHasAlpha;
34   }
35
36   static const gfx::Size& coded_size(const media::VideoDecoderConfig& input) {
37     return input.coded_size();
38   }
39
40   static const gfx::Rect& visible_rect(const media::VideoDecoderConfig& input) {
41     return input.visible_rect();
42   }
43
44   static const gfx::Size& natural_size(const media::VideoDecoderConfig& input) {
45     return input.natural_size();
46   }
47
48   static const std::vector<uint8_t>& extra_data(
49       const media::VideoDecoderConfig& input) {
50     return input.extra_data();
51   }
52
53   static media::EncryptionScheme encryption_scheme(
54       const media::VideoDecoderConfig& input) {
55     return input.encryption_scheme();
56   }
57
58   static const media::VideoColorSpace& color_space_info(
59       const media::VideoDecoderConfig& input) {
60     return input.color_space_info();
61   }
62
63   static media::VideoTransformation transformation(
64       const media::VideoDecoderConfig& input) {
65     return input.video_transformation();
66   }
67
68   static const absl::optional<gfx::HDRMetadata>& hdr_metadata(
69       const media::VideoDecoderConfig& input) {
70     return input.hdr_metadata();
71   }
72
73   static uint32_t level(const media::VideoDecoderConfig& input) {
74     return input.level();
75   }
76
77 #if BUILDFLAG(IS_TIZEN_TV)
78   static std::string hdr_info(const media::VideoDecoderConfig& input) {
79     return input.hdr_info();
80   }
81 #endif
82
83   static bool Read(media::mojom::VideoDecoderConfigDataView input,
84                    media::VideoDecoderConfig* output);
85 };
86
87 }  // namespace mojo
88
89 #endif  // MEDIA_MOJO_MOJOM_VIDEO_DECODER_CONFIG_MOJOM_TRAITS_H_