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.
5 #ifndef MEDIA_MOJO_MOJOM_PIPELINE_STATUS_MOJOM_TRAITS_H_
6 #define MEDIA_MOJO_MOJOM_PIPELINE_STATUS_MOJOM_TRAITS_H_
8 #include "media/base/pipeline_status.h"
9 #include "media/mojo/mojom/media_types.mojom.h"
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;
19 static uint64_t video_bytes_decoded(const media::PipelineStatistics& input) {
20 return input.video_bytes_decoded;
22 static uint32_t video_frames_decoded(const media::PipelineStatistics& input) {
23 return input.video_frames_decoded;
25 static uint32_t video_frames_dropped(const media::PipelineStatistics& input) {
26 return input.video_frames_dropped;
28 static int64_t audio_memory_usage(const media::PipelineStatistics& input) {
29 return input.audio_memory_usage;
31 static int64_t video_memory_usage(const media::PipelineStatistics& input) {
32 return input.video_memory_usage;
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();
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;
55 static bool is_platform_decoder(const media::AudioPipelineInfo& input) {
56 return input.is_platform_decoder;
59 static bool has_decrypting_demuxer_stream(
60 const media::AudioPipelineInfo& input) {
61 return input.has_decrypting_demuxer_stream;
64 static media::EncryptionType encryption_type(
65 const media::AudioPipelineInfo& input) {
66 return input.encryption_type;
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);
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;
87 static bool is_platform_decoder(const media::VideoPipelineInfo& input) {
88 return input.is_platform_decoder;
91 static bool has_decrypting_demuxer_stream(
92 const media::VideoPipelineInfo& input) {
93 return input.has_decrypting_demuxer_stream;
96 static media::EncryptionType encryption_type(
97 const media::VideoPipelineInfo& input) {
98 return input.encryption_type;
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);
113 #endif // MEDIA_MOJO_MOJOM_PIPELINE_STATUS_MOJOM_TRAITS_H_