OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 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. | |
4 | |
5 #include "chromecast/common/media/cma_param_traits.h" | |
6 | |
7 #include <vector> | |
8 | |
9 #include "content/public/common/common_param_traits.h" | |
10 #include "ipc/ipc_message_macros.h" | |
11 #include "ipc/param_traits_macros.h" | |
12 #include "media/base/audio_decoder_config.h" | |
13 #include "media/base/video_decoder_config.h" | |
14 #include "ui/gfx/ipc/gfx_param_traits.h" | |
15 | |
16 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::AudioCodec, | |
Tom Sepez
2014/12/12 22:58:42
This should be in your messages .h file.
gunsch
2014/12/16 02:39:41
Done.
| |
17 media::AudioCodec::kUnknownAudioCodec, | |
18 media::AudioCodec::kAudioCodecMax) | |
19 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::SampleFormat, | |
20 media::SampleFormat::kUnknownSampleFormat, | |
21 media::SampleFormat::kSampleFormatMax) | |
22 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::ChannelLayout, | |
23 media::ChannelLayout::CHANNEL_LAYOUT_NONE, | |
24 media::ChannelLayout::CHANNEL_LAYOUT_MAX) | |
25 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::VideoCodec, | |
26 media::VideoCodec::kUnknownVideoCodec, | |
27 media::VideoCodec::kVideoCodecMax) | |
28 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::VideoCodecProfile, | |
29 media::VIDEO_CODEC_PROFILE_MIN, | |
30 media::VIDEO_CODEC_PROFILE_MAX) | |
31 IPC_ENUM_TRAITS_MAX_VALUE(media::VideoFrame::Format, | |
32 media::VideoFrame::FORMAT_MAX) | |
33 | |
34 namespace IPC { | |
35 | |
36 void ParamTraits<media::AudioDecoderConfig>::Write( | |
Tom Sepez
2014/12/12 22:58:42
Your life would be a lot easier if these were POD,
gunsch
2014/12/16 02:39:41
Agreed, but as media:: primitives we don't current
| |
37 Message* m, const media::AudioDecoderConfig& p) { | |
38 ParamTraits<media::AudioCodec>::Write(m, p.codec()); | |
39 ParamTraits<media::SampleFormat>::Write(m, p.sample_format()); | |
40 ParamTraits<media::ChannelLayout>::Write(m, p.channel_layout()); | |
41 ParamTraits<int>::Write(m, p.samples_per_second()); | |
42 ParamTraits<bool>::Write(m, p.is_encrypted()); | |
43 std::vector<uint8> extra_data; | |
44 if (p.extra_data_size() > 0) { | |
45 extra_data = | |
46 std::vector<uint8>(p.extra_data(), | |
47 p.extra_data() + p.extra_data_size()); | |
48 } | |
49 ParamTraits<std::vector<uint8> >::Write(m, extra_data); | |
50 } | |
51 | |
52 bool ParamTraits<media::AudioDecoderConfig>::Read( | |
53 const Message* m, PickleIterator* iter, | |
54 media::AudioDecoderConfig* r) { | |
55 media::AudioCodec codec; | |
56 media::SampleFormat sample_format; | |
57 media::ChannelLayout channel_layout; | |
58 int samples_per_second; | |
59 bool is_encrypted; | |
60 if (!ParamTraits<media::AudioCodec>::Read(m, iter, &codec) || | |
61 !ParamTraits<media::SampleFormat>::Read(m, iter, &sample_format) || | |
62 !ParamTraits<media::ChannelLayout>::Read(m, iter, &channel_layout) || | |
63 !ParamTraits<int>::Read(m, iter, &samples_per_second) || | |
64 !ParamTraits<bool>::Read(m, iter, &is_encrypted)) { | |
65 return false; | |
66 } | |
67 std::vector<uint8> extra_data; | |
68 if (!ParamTraits<std::vector<uint8> >::Read(m, iter, &extra_data)) | |
69 return false; | |
70 const uint8* extra_data_ptr = NULL; | |
71 if (extra_data.size() > 0) | |
72 extra_data_ptr = &extra_data[0]; | |
73 *r = media::AudioDecoderConfig(codec, sample_format, channel_layout, | |
74 samples_per_second, | |
75 extra_data_ptr, extra_data.size(), | |
76 is_encrypted); | |
77 return true; | |
78 } | |
79 | |
80 void ParamTraits<media::AudioDecoderConfig>::Log( | |
81 const media::AudioDecoderConfig& p, std::string* l) { | |
82 l->append(base::StringPrintf("<AudioDecoderConfig>")); | |
83 } | |
84 | |
85 void ParamTraits<media::VideoDecoderConfig>::Write( | |
86 Message* m, const media::VideoDecoderConfig& p) { | |
87 ParamTraits<media::VideoCodec>::Write(m, p.codec()); | |
88 ParamTraits<media::VideoCodecProfile>::Write(m, p.profile()); | |
89 ParamTraits<media::VideoFrame::Format>::Write(m, p.format()); | |
90 ParamTraits<gfx::Size>::Write(m, p.coded_size()); | |
91 ParamTraits<gfx::Rect>::Write(m, p.visible_rect()); | |
92 ParamTraits<gfx::Size>::Write(m, p.natural_size()); | |
93 ParamTraits<bool>::Write(m, p.is_encrypted()); | |
94 std::vector<uint8> extra_data; | |
95 if (p.extra_data_size() > 0) { | |
96 extra_data = | |
97 std::vector<uint8>(p.extra_data(), | |
98 p.extra_data() + p.extra_data_size()); | |
99 } | |
100 ParamTraits<std::vector<uint8> >::Write(m, extra_data); | |
101 } | |
102 | |
103 bool ParamTraits<media::VideoDecoderConfig>::Read( | |
104 const Message* m, PickleIterator* iter, | |
105 media::VideoDecoderConfig* r) { | |
106 media::VideoCodec codec; | |
107 media::VideoCodecProfile profile; | |
108 media::VideoFrame::Format format; | |
109 gfx::Size coded_size; | |
110 gfx::Rect visible_rect; | |
111 gfx::Size natural_size; | |
112 bool is_encrypted; | |
113 if (!ParamTraits<media::VideoCodec>::Read(m, iter, &codec) || | |
114 !ParamTraits<media::VideoCodecProfile>::Read(m, iter, &profile) || | |
115 !ParamTraits<media::VideoFrame::Format>::Read(m, iter, &format) || | |
116 !ParamTraits<gfx::Size>::Read(m, iter, &coded_size) || | |
117 !ParamTraits<gfx::Rect>::Read(m, iter, &visible_rect) || | |
118 !ParamTraits<gfx::Size>::Read(m, iter, &natural_size) || | |
119 !ParamTraits<bool>::Read(m, iter, &is_encrypted)) { | |
120 return false; | |
121 } | |
122 std::vector<uint8> extra_data; | |
123 if (!ParamTraits<std::vector<uint8> >::Read(m, iter, &extra_data)) | |
124 return false; | |
125 const uint8* extra_data_ptr = NULL; | |
126 if (extra_data.size() > 0) | |
127 extra_data_ptr = &extra_data[0]; | |
128 *r = media::VideoDecoderConfig(codec, profile, format, | |
129 coded_size, visible_rect, natural_size, | |
130 extra_data_ptr, extra_data.size(), | |
131 is_encrypted); | |
132 return true; | |
133 } | |
134 | |
135 void ParamTraits<media::VideoDecoderConfig>::Log( | |
136 const media::VideoDecoderConfig& p, std::string* l) { | |
137 l->append(base::StringPrintf("<VideoDecoderConfig>")); | |
138 } | |
139 | |
140 } // namespace IPC | |
OLD | NEW |