Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chromecast/common/media/cma_param_traits.h" | 5 #include "chromecast/common/media/cma_param_traits.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "chromecast/common/media/cma_param_traits_macros.h" | 9 #include "chromecast/common/media/cma_param_traits_macros.h" |
| 10 #include "content/public/common/common_param_traits.h" | 10 #include "content/public/common/common_param_traits.h" |
| 11 #include "ipc/ipc_message_macros.h" | 11 #include "ipc/ipc_message_macros.h" |
| 12 #include "media/base/audio_decoder_config.h" | 12 #include "media/base/audio_decoder_config.h" |
| 13 #include "media/base/encryption_scheme.h" | |
| 13 #include "media/base/video_decoder_config.h" | 14 #include "media/base/video_decoder_config.h" |
| 14 #include "ui/gfx/ipc/gfx_param_traits.h" | 15 #include "ui/gfx/ipc/gfx_param_traits.h" |
| 15 | 16 |
| 16 // Note(gunsch): these are currently defined in content/, but not declared in | 17 // Note(gunsch): these are currently defined in content/, but not declared in |
| 17 // content/public/. These headers need to be forward-declared for chromecast/, | 18 // content/public/. These headers need to be forward-declared for chromecast/, |
| 18 // but without new implementations linked in. | 19 // but without new implementations linked in. |
| 19 // The correct long-term fix is to use Mojo instead of the content/ IPCs. | 20 // The correct long-term fix is to use Mojo instead of the content/ IPCs. |
| 20 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::ChannelLayout, | 21 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::ChannelLayout, |
| 21 media::ChannelLayout::CHANNEL_LAYOUT_NONE, | 22 media::ChannelLayout::CHANNEL_LAYOUT_NONE, |
| 22 media::ChannelLayout::CHANNEL_LAYOUT_MAX) | 23 media::ChannelLayout::CHANNEL_LAYOUT_MAX) |
| 23 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::VideoCodecProfile, | 24 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::VideoCodecProfile, |
| 24 media::VIDEO_CODEC_PROFILE_MIN, | 25 media::VIDEO_CODEC_PROFILE_MIN, |
| 25 media::VIDEO_CODEC_PROFILE_MAX) | 26 media::VIDEO_CODEC_PROFILE_MAX) |
| 26 IPC_ENUM_TRAITS_MAX_VALUE(media::VideoPixelFormat, media::PIXEL_FORMAT_MAX) | 27 IPC_ENUM_TRAITS_MAX_VALUE(media::VideoPixelFormat, media::PIXEL_FORMAT_MAX) |
| 27 | 28 |
| 28 namespace IPC { | 29 namespace IPC { |
| 29 | 30 |
| 31 template <> | |
| 32 struct ParamTraits<media::EncryptionScheme::PatternSpec> { | |
| 33 typedef media::EncryptionScheme::PatternSpec param_type; | |
|
halliwell
2016/01/13 03:29:40
nit: 'using'
dougsteed
2016/02/09 22:58:53
See reply to comment on the .h file.
| |
| 34 static void Write(Message* m, const param_type& p); | |
| 35 static bool Read(const Message* m, base::PickleIterator* iter, param_type* r); | |
| 36 static void Log(const param_type& p, std::string* l); | |
| 37 }; | |
| 38 | |
| 39 | |
| 30 void ParamTraits<media::AudioDecoderConfig>::Write( | 40 void ParamTraits<media::AudioDecoderConfig>::Write( |
| 31 Message* m, const media::AudioDecoderConfig& p) { | 41 Message* m, const media::AudioDecoderConfig& p) { |
| 32 WriteParam(m, p.codec()); | 42 WriteParam(m, p.codec()); |
| 33 WriteParam(m, p.sample_format()); | 43 WriteParam(m, p.sample_format()); |
| 34 WriteParam(m, p.channel_layout()); | 44 WriteParam(m, p.channel_layout()); |
| 35 WriteParam(m, p.samples_per_second()); | 45 WriteParam(m, p.samples_per_second()); |
| 36 WriteParam(m, p.is_encrypted()); | 46 WriteParam(m, p.encryption_scheme()); |
| 37 WriteParam(m, p.extra_data()); | 47 WriteParam(m, p.extra_data()); |
| 38 } | 48 } |
| 39 | 49 |
| 40 bool ParamTraits<media::AudioDecoderConfig>::Read( | 50 bool ParamTraits<media::AudioDecoderConfig>::Read( |
| 41 const Message* m, | 51 const Message* m, |
| 42 base::PickleIterator* iter, | 52 base::PickleIterator* iter, |
| 43 media::AudioDecoderConfig* r) { | 53 media::AudioDecoderConfig* r) { |
| 44 media::AudioCodec codec; | 54 media::AudioCodec codec; |
| 45 media::SampleFormat sample_format; | 55 media::SampleFormat sample_format; |
| 46 media::ChannelLayout channel_layout; | 56 media::ChannelLayout channel_layout; |
| 47 int samples_per_second; | 57 int samples_per_second; |
| 48 bool is_encrypted; | 58 media::EncryptionScheme encryption_scheme; |
| 49 std::vector<uint8> extra_data; | 59 std::vector<uint8> extra_data; |
| 50 if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &sample_format) || | 60 if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &sample_format) || |
| 51 !ReadParam(m, iter, &channel_layout) || | 61 !ReadParam(m, iter, &channel_layout) || |
| 52 !ReadParam(m, iter, &samples_per_second) || | 62 !ReadParam(m, iter, &samples_per_second) || |
| 53 !ReadParam(m, iter, &is_encrypted) || !ReadParam(m, iter, &extra_data)) | 63 !ReadParam(m, iter, &encryption_scheme) || |
| 64 !ReadParam(m, iter, &extra_data)) | |
| 54 return false; | 65 return false; |
| 55 *r = media::AudioDecoderConfig(codec, sample_format, channel_layout, | 66 *r = media::AudioDecoderConfig(codec, sample_format, channel_layout, |
| 56 samples_per_second, extra_data, is_encrypted); | 67 samples_per_second, extra_data, |
| 68 encryption_scheme); | |
| 57 return true; | 69 return true; |
| 58 } | 70 } |
| 59 | 71 |
| 60 void ParamTraits<media::AudioDecoderConfig>::Log( | 72 void ParamTraits<media::AudioDecoderConfig>::Log( |
| 61 const media::AudioDecoderConfig& p, std::string* l) { | 73 const media::AudioDecoderConfig& p, std::string* l) { |
| 62 l->append(base::StringPrintf("<AudioDecoderConfig>")); | 74 l->append(base::StringPrintf("<AudioDecoderConfig>")); |
| 63 } | 75 } |
| 64 | 76 |
| 65 void ParamTraits<media::VideoDecoderConfig>::Write( | 77 void ParamTraits<media::VideoDecoderConfig>::Write( |
| 66 Message* m, const media::VideoDecoderConfig& p) { | 78 Message* m, const media::VideoDecoderConfig& p) { |
| 67 WriteParam(m, p.codec()); | 79 WriteParam(m, p.codec()); |
| 68 WriteParam(m, p.profile()); | 80 WriteParam(m, p.profile()); |
| 69 WriteParam(m, p.format()); | 81 WriteParam(m, p.format()); |
| 70 WriteParam(m, p.color_space()); | 82 WriteParam(m, p.color_space()); |
| 71 WriteParam(m, p.coded_size()); | 83 WriteParam(m, p.coded_size()); |
| 72 WriteParam(m, p.visible_rect()); | 84 WriteParam(m, p.visible_rect()); |
| 73 WriteParam(m, p.natural_size()); | 85 WriteParam(m, p.natural_size()); |
| 74 WriteParam(m, p.is_encrypted()); | 86 WriteParam(m, p.encryption_scheme()); |
| 75 WriteParam(m, p.extra_data()); | 87 WriteParam(m, p.extra_data()); |
| 76 } | 88 } |
| 77 | 89 |
| 78 bool ParamTraits<media::VideoDecoderConfig>::Read( | 90 bool ParamTraits<media::VideoDecoderConfig>::Read( |
| 79 const Message* m, | 91 const Message* m, |
| 80 base::PickleIterator* iter, | 92 base::PickleIterator* iter, |
| 81 media::VideoDecoderConfig* r) { | 93 media::VideoDecoderConfig* r) { |
| 82 media::VideoCodec codec; | 94 media::VideoCodec codec; |
| 83 media::VideoCodecProfile profile; | 95 media::VideoCodecProfile profile; |
| 84 media::VideoPixelFormat format; | 96 media::VideoPixelFormat format; |
| 85 media::ColorSpace color_space; | 97 media::ColorSpace color_space; |
| 86 gfx::Size coded_size; | 98 gfx::Size coded_size; |
| 87 gfx::Rect visible_rect; | 99 gfx::Rect visible_rect; |
| 88 gfx::Size natural_size; | 100 gfx::Size natural_size; |
| 89 bool is_encrypted; | 101 media::EncryptionScheme encryption_scheme; |
| 90 std::vector<uint8> extra_data; | 102 std::vector<uint8> extra_data; |
| 91 if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &profile) || | 103 if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &profile) || |
| 92 !ReadParam(m, iter, &format) || !ReadParam(m, iter, &color_space) || | 104 !ReadParam(m, iter, &format) || !ReadParam(m, iter, &color_space) || |
| 93 !ReadParam(m, iter, &coded_size) || !ReadParam(m, iter, &visible_rect) || | 105 !ReadParam(m, iter, &coded_size) || !ReadParam(m, iter, &visible_rect) || |
| 94 !ReadParam(m, iter, &natural_size) || | 106 !ReadParam(m, iter, &natural_size) || |
| 95 !ReadParam(m, iter, &is_encrypted) || !ReadParam(m, iter, &extra_data)) | 107 !ReadParam(m, iter, &encryption_scheme) || |
| 108 !ReadParam(m, iter, &extra_data)) | |
| 96 return false; | 109 return false; |
| 97 *r = media::VideoDecoderConfig(codec, profile, format, color_space, | 110 *r = media::VideoDecoderConfig(codec, profile, format, color_space, |
| 98 coded_size, visible_rect, natural_size, | 111 coded_size, visible_rect, natural_size, |
| 99 extra_data, is_encrypted); | 112 extra_data, encryption_scheme); |
| 100 return true; | 113 return true; |
| 101 } | 114 } |
| 102 | 115 |
| 103 void ParamTraits<media::VideoDecoderConfig>::Log( | 116 void ParamTraits<media::VideoDecoderConfig>::Log( |
| 104 const media::VideoDecoderConfig& p, std::string* l) { | 117 const media::VideoDecoderConfig& p, std::string* l) { |
| 105 l->append(base::StringPrintf("<VideoDecoderConfig>")); | 118 l->append(base::StringPrintf("<VideoDecoderConfig>")); |
| 106 } | 119 } |
| 107 | 120 |
| 121 void ParamTraits<media::EncryptionScheme>::Write( | |
| 122 Message* m, const param_type& p) { | |
| 123 WriteParam(m, p.mode()); | |
| 124 WriteParam(m, p.pattern()); | |
| 125 } | |
| 126 | |
| 127 bool ParamTraits<media::EncryptionScheme>::Read( | |
| 128 const Message* m, base::PickleIterator* iter, param_type* r) { | |
| 129 media::EncryptionScheme::CipherMode mode; | |
| 130 media::EncryptionScheme::PatternSpec pattern; | |
| 131 if (!ReadParam(m, iter, &mode) || !ReadParam(m, iter, &pattern)) | |
| 132 return false; | |
| 133 *r = media::EncryptionScheme(mode, pattern); | |
| 134 return true; | |
| 135 } | |
| 136 | |
| 137 void ParamTraits<media::EncryptionScheme>::Log( | |
| 138 const param_type& p, std::string* l) { | |
| 139 l->append(base::StringPrintf("<EncryptionScheme>")); | |
| 140 } | |
| 141 | |
| 142 void ParamTraits<media::EncryptionScheme::PatternSpec>::Write( | |
| 143 Message* m, const param_type& p) { | |
| 144 WriteParam(m, p.encrypt_blocks()); | |
| 145 WriteParam(m, p.skip_blocks()); | |
| 146 } | |
| 147 | |
| 148 bool ParamTraits<media::EncryptionScheme::PatternSpec>::Read( | |
| 149 const Message* m, base::PickleIterator* iter, param_type* r) { | |
| 150 uint32_t encrypt_blocks, skip_blocks; | |
| 151 if (!ReadParam(m, iter, &encrypt_blocks) || !ReadParam(m, iter, &skip_blocks)) | |
| 152 return false; | |
| 153 *r = media::EncryptionScheme::PatternSpec(encrypt_blocks, skip_blocks); | |
| 154 return true; | |
| 155 } | |
| 156 | |
| 157 void ParamTraits<media::EncryptionScheme::PatternSpec>::Log( | |
| 158 const param_type& p, std::string* l) { | |
| 159 l->append(base::StringPrintf("<PatternSpec>")); | |
| 160 } | |
| 161 | |
| 108 } // namespace IPC | 162 } // namespace IPC |
| OLD | NEW |