[M120 Migration][MM] Framerate calculation
[platform/framework/web/chromium-efl.git] / media / mojo / mojom / pipeline_status_mojom_traits.h
1 // Copyright 2016 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_PIPELINE_STATUS_MOJOM_TRAITS_H_
6 #define MEDIA_MOJO_MOJOM_PIPELINE_STATUS_MOJOM_TRAITS_H_
7
8 #include "media/base/pipeline_status.h"
9 #include "media/mojo/mojom/media_types.mojom.h"
10
11 namespace mojo {
12
13 template <>
14 struct StructTraits<media::mojom::PipelineStatisticsDataView,
15                     media::PipelineStatistics> {
16   static uint64_t audio_bytes_decoded(const media::PipelineStatistics& input) {
17     return input.audio_bytes_decoded;
18   }
19   static uint64_t video_bytes_decoded(const media::PipelineStatistics& input) {
20     return input.video_bytes_decoded;
21   }
22   static uint32_t video_frames_decoded(const media::PipelineStatistics& input) {
23     return input.video_frames_decoded;
24   }
25   static uint32_t video_frames_dropped(const media::PipelineStatistics& input) {
26     return input.video_frames_dropped;
27   }
28   static int64_t audio_memory_usage(const media::PipelineStatistics& input) {
29     return input.audio_memory_usage;
30   }
31   static int64_t video_memory_usage(const media::PipelineStatistics& input) {
32     return input.video_memory_usage;
33   }
34
35   static bool Read(media::mojom::PipelineStatisticsDataView data,
36                    media::PipelineStatistics* output) {
37     output->audio_bytes_decoded = data.audio_bytes_decoded();
38     output->video_bytes_decoded = data.video_bytes_decoded();
39     output->video_frames_decoded = data.video_frames_decoded();
40     output->video_frames_dropped = data.video_frames_dropped();
41     output->audio_memory_usage = data.audio_memory_usage();
42     output->video_memory_usage = data.video_memory_usage();
43     return true;
44   }
45 };
46
47 template <>
48 struct StructTraits<media::mojom::AudioPipelineInfoDataView,
49                     media::AudioPipelineInfo> {
50   static media::AudioDecoderType decoder_type(
51       const media::AudioPipelineInfo& input) {
52     return input.decoder_type;
53   }
54
55   static bool is_platform_decoder(const media::AudioPipelineInfo& input) {
56     return input.is_platform_decoder;
57   }
58
59   static bool has_decrypting_demuxer_stream(
60       const media::AudioPipelineInfo& input) {
61     return input.has_decrypting_demuxer_stream;
62   }
63
64   static media::EncryptionType encryption_type(
65       const media::AudioPipelineInfo& input) {
66     return input.encryption_type;
67   }
68
69   static bool Read(media::mojom::AudioPipelineInfoDataView data,
70                    media::AudioPipelineInfo* output) {
71     output->is_platform_decoder = data.is_platform_decoder();
72     output->has_decrypting_demuxer_stream =
73         data.has_decrypting_demuxer_stream();
74     return data.ReadEncryptionType(&output->encryption_type) &&
75            data.ReadDecoderType(&output->decoder_type);
76   }
77 };
78
79 template <>
80 struct StructTraits<media::mojom::VideoPipelineInfoDataView,
81                     media::VideoPipelineInfo> {
82   static media::VideoDecoderType decoder_type(
83       const media::VideoPipelineInfo& input) {
84     return input.decoder_type;
85   }
86
87   static bool is_platform_decoder(const media::VideoPipelineInfo& input) {
88     return input.is_platform_decoder;
89   }
90
91   static bool has_decrypting_demuxer_stream(
92       const media::VideoPipelineInfo& input) {
93     return input.has_decrypting_demuxer_stream;
94   }
95
96   static media::EncryptionType encryption_type(
97       const media::VideoPipelineInfo& input) {
98     return input.encryption_type;
99   }
100
101   static bool Read(media::mojom::VideoPipelineInfoDataView data,
102                    media::VideoPipelineInfo* output) {
103     output->is_platform_decoder = data.is_platform_decoder();
104     output->has_decrypting_demuxer_stream =
105         data.has_decrypting_demuxer_stream();
106     return data.ReadEncryptionType(&output->encryption_type) &&
107            data.ReadDecoderType(&output->decoder_type);
108   }
109 };
110
111 }  // namespace mojo
112
113 #endif  // MEDIA_MOJO_MOJOM_PIPELINE_STATUS_MOJOM_TRAITS_H_