Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(733)

Side by Side Diff: chromecast/common/media/cma_param_traits.cc

Issue 1490613005: media config: expand is_encrypted to a struct. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: more ddorwin comments Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 <stdint.h> 7 #include <stdint.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "chromecast/common/media/cma_param_traits_macros.h" 11 #include "chromecast/common/media/cma_param_traits_macros.h"
12 #include "content/public/common/common_param_traits.h" 12 #include "content/public/common/common_param_traits.h"
13 #include "ipc/ipc_message_macros.h" 13 #include "ipc/ipc_message_macros.h"
14 #include "media/base/audio_decoder_config.h" 14 #include "media/base/audio_decoder_config.h"
15 #include "media/base/encryption_scheme.h"
15 #include "media/base/video_decoder_config.h" 16 #include "media/base/video_decoder_config.h"
16 #include "ui/gfx/ipc/gfx_param_traits.h" 17 #include "ui/gfx/ipc/gfx_param_traits.h"
17 18
18 // Note(gunsch): these are currently defined in content/, but not declared in 19 // Note(gunsch): these are currently defined in content/, but not declared in
19 // content/public/. These headers need to be forward-declared for chromecast/, 20 // content/public/. These headers need to be forward-declared for chromecast/,
20 // but without new implementations linked in. 21 // but without new implementations linked in.
21 // The correct long-term fix is to use Mojo instead of the content/ IPCs. 22 // The correct long-term fix is to use Mojo instead of the content/ IPCs.
22 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::ChannelLayout, 23 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::ChannelLayout,
23 media::ChannelLayout::CHANNEL_LAYOUT_NONE, 24 media::ChannelLayout::CHANNEL_LAYOUT_NONE,
24 media::ChannelLayout::CHANNEL_LAYOUT_MAX) 25 media::ChannelLayout::CHANNEL_LAYOUT_MAX)
25 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::VideoCodecProfile, 26 IPC_ENUM_TRAITS_MIN_MAX_VALUE(media::VideoCodecProfile,
26 media::VIDEO_CODEC_PROFILE_MIN, 27 media::VIDEO_CODEC_PROFILE_MIN,
27 media::VIDEO_CODEC_PROFILE_MAX) 28 media::VIDEO_CODEC_PROFILE_MAX)
28 IPC_ENUM_TRAITS_MAX_VALUE(media::VideoPixelFormat, media::PIXEL_FORMAT_MAX) 29 IPC_ENUM_TRAITS_MAX_VALUE(media::VideoPixelFormat, media::PIXEL_FORMAT_MAX)
29 30
30 namespace IPC { 31 namespace IPC {
31 32
33 template <>
34 struct ParamTraits<media::EncryptionScheme::PatternSpec> {
35 typedef media::EncryptionScheme::PatternSpec param_type;
36 static void Write(base::Pickle* m, const param_type& p);
37 static bool Read(const base::Pickle* m, base::PickleIterator* iter,
38 param_type* r);
39 static void Log(const param_type& p, std::string* l);
40 };
41
42
32 void ParamTraits<media::AudioDecoderConfig>::Write( 43 void ParamTraits<media::AudioDecoderConfig>::Write(
33 base::Pickle* m, 44 base::Pickle* m,
34 const media::AudioDecoderConfig& p) { 45 const media::AudioDecoderConfig& p) {
35 WriteParam(m, p.codec()); 46 WriteParam(m, p.codec());
36 WriteParam(m, p.sample_format()); 47 WriteParam(m, p.sample_format());
37 WriteParam(m, p.channel_layout()); 48 WriteParam(m, p.channel_layout());
38 WriteParam(m, p.samples_per_second()); 49 WriteParam(m, p.samples_per_second());
39 WriteParam(m, p.is_encrypted()); 50 WriteParam(m, p.encryption_scheme());
40 WriteParam(m, p.extra_data()); 51 WriteParam(m, p.extra_data());
41 } 52 }
42 53
43 bool ParamTraits<media::AudioDecoderConfig>::Read( 54 bool ParamTraits<media::AudioDecoderConfig>::Read(
44 const base::Pickle* m, 55 const base::Pickle* m,
45 base::PickleIterator* iter, 56 base::PickleIterator* iter,
46 media::AudioDecoderConfig* r) { 57 media::AudioDecoderConfig* r) {
47 media::AudioCodec codec; 58 media::AudioCodec codec;
48 media::SampleFormat sample_format; 59 media::SampleFormat sample_format;
49 media::ChannelLayout channel_layout; 60 media::ChannelLayout channel_layout;
50 int samples_per_second; 61 int samples_per_second;
51 bool is_encrypted; 62 media::EncryptionScheme encryption_scheme;
52 std::vector<uint8_t> extra_data; 63 std::vector<uint8_t> extra_data;
53 if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &sample_format) || 64 if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &sample_format) ||
54 !ReadParam(m, iter, &channel_layout) || 65 !ReadParam(m, iter, &channel_layout) ||
55 !ReadParam(m, iter, &samples_per_second) || 66 !ReadParam(m, iter, &samples_per_second) ||
56 !ReadParam(m, iter, &is_encrypted) || !ReadParam(m, iter, &extra_data)) 67 !ReadParam(m, iter, &encryption_scheme) ||
68 !ReadParam(m, iter, &extra_data))
57 return false; 69 return false;
58 *r = media::AudioDecoderConfig(codec, sample_format, channel_layout, 70 *r = media::AudioDecoderConfig(codec, sample_format, channel_layout,
59 samples_per_second, extra_data, is_encrypted); 71 samples_per_second, extra_data,
72 encryption_scheme);
60 return true; 73 return true;
61 } 74 }
62 75
63 void ParamTraits<media::AudioDecoderConfig>::Log( 76 void ParamTraits<media::AudioDecoderConfig>::Log(
64 const media::AudioDecoderConfig& p, std::string* l) { 77 const media::AudioDecoderConfig& p, std::string* l) {
65 l->append(base::StringPrintf("<AudioDecoderConfig>")); 78 l->append(base::StringPrintf("<AudioDecoderConfig>"));
66 } 79 }
67 80
68 void ParamTraits<media::VideoDecoderConfig>::Write( 81 void ParamTraits<media::VideoDecoderConfig>::Write(
69 base::Pickle* m, 82 base::Pickle* m,
70 const media::VideoDecoderConfig& p) { 83 const media::VideoDecoderConfig& p) {
71 WriteParam(m, p.codec()); 84 WriteParam(m, p.codec());
72 WriteParam(m, p.profile()); 85 WriteParam(m, p.profile());
73 WriteParam(m, p.format()); 86 WriteParam(m, p.format());
74 WriteParam(m, p.color_space()); 87 WriteParam(m, p.color_space());
75 WriteParam(m, p.coded_size()); 88 WriteParam(m, p.coded_size());
76 WriteParam(m, p.visible_rect()); 89 WriteParam(m, p.visible_rect());
77 WriteParam(m, p.natural_size()); 90 WriteParam(m, p.natural_size());
78 WriteParam(m, p.is_encrypted()); 91 WriteParam(m, p.encryption_scheme());
79 WriteParam(m, p.extra_data()); 92 WriteParam(m, p.extra_data());
80 } 93 }
81 94
82 bool ParamTraits<media::VideoDecoderConfig>::Read( 95 bool ParamTraits<media::VideoDecoderConfig>::Read(
83 const base::Pickle* m, 96 const base::Pickle* m,
84 base::PickleIterator* iter, 97 base::PickleIterator* iter,
85 media::VideoDecoderConfig* r) { 98 media::VideoDecoderConfig* r) {
86 media::VideoCodec codec; 99 media::VideoCodec codec;
87 media::VideoCodecProfile profile; 100 media::VideoCodecProfile profile;
88 media::VideoPixelFormat format; 101 media::VideoPixelFormat format;
89 media::ColorSpace color_space; 102 media::ColorSpace color_space;
90 gfx::Size coded_size; 103 gfx::Size coded_size;
91 gfx::Rect visible_rect; 104 gfx::Rect visible_rect;
92 gfx::Size natural_size; 105 gfx::Size natural_size;
93 bool is_encrypted; 106 media::EncryptionScheme encryption_scheme;
94 std::vector<uint8_t> extra_data; 107 std::vector<uint8_t> extra_data;
95 if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &profile) || 108 if (!ReadParam(m, iter, &codec) || !ReadParam(m, iter, &profile) ||
96 !ReadParam(m, iter, &format) || !ReadParam(m, iter, &color_space) || 109 !ReadParam(m, iter, &format) || !ReadParam(m, iter, &color_space) ||
97 !ReadParam(m, iter, &coded_size) || !ReadParam(m, iter, &visible_rect) || 110 !ReadParam(m, iter, &coded_size) || !ReadParam(m, iter, &visible_rect) ||
98 !ReadParam(m, iter, &natural_size) || 111 !ReadParam(m, iter, &natural_size) ||
99 !ReadParam(m, iter, &is_encrypted) || !ReadParam(m, iter, &extra_data)) 112 !ReadParam(m, iter, &encryption_scheme) ||
113 !ReadParam(m, iter, &extra_data))
100 return false; 114 return false;
101 *r = media::VideoDecoderConfig(codec, profile, format, color_space, 115 *r = media::VideoDecoderConfig(codec, profile, format, color_space,
102 coded_size, visible_rect, natural_size, 116 coded_size, visible_rect, natural_size,
103 extra_data, is_encrypted); 117 extra_data, encryption_scheme);
104 return true; 118 return true;
105 } 119 }
106 120
107 void ParamTraits<media::VideoDecoderConfig>::Log( 121 void ParamTraits<media::VideoDecoderConfig>::Log(
108 const media::VideoDecoderConfig& p, std::string* l) { 122 const media::VideoDecoderConfig& p, std::string* l) {
109 l->append(base::StringPrintf("<VideoDecoderConfig>")); 123 l->append(base::StringPrintf("<VideoDecoderConfig>"));
110 } 124 }
111 125
126 void ParamTraits<media::EncryptionScheme>::Write(
127 base::Pickle* m, const param_type& p) {
128 WriteParam(m, p.mode());
129 WriteParam(m, p.pattern());
130 }
131
132 bool ParamTraits<media::EncryptionScheme>::Read(
133 const base::Pickle* m, base::PickleIterator* iter, param_type* r) {
134 media::EncryptionScheme::CipherMode mode;
135 media::EncryptionScheme::PatternSpec pattern;
136 if (!ReadParam(m, iter, &mode) || !ReadParam(m, iter, &pattern))
137 return false;
138 *r = media::EncryptionScheme(mode, pattern);
139 return true;
140 }
141
142 void ParamTraits<media::EncryptionScheme>::Log(
143 const param_type& p, std::string* l) {
144 l->append(base::StringPrintf("<EncryptionScheme>"));
145 }
146
147 void ParamTraits<media::EncryptionScheme::PatternSpec>::Write(
148 base::Pickle* m, const param_type& p) {
149 WriteParam(m, p.encrypt_blocks());
150 WriteParam(m, p.skip_blocks());
151 }
152
153 bool ParamTraits<media::EncryptionScheme::PatternSpec>::Read(
154 const base::Pickle* m, base::PickleIterator* iter, param_type* r) {
155 uint32_t encrypt_blocks, skip_blocks;
156 if (!ReadParam(m, iter, &encrypt_blocks) || !ReadParam(m, iter, &skip_blocks))
157 return false;
158 *r = media::EncryptionScheme::PatternSpec(encrypt_blocks, skip_blocks);
159 return true;
160 }
161
162 void ParamTraits<media::EncryptionScheme::PatternSpec>::Log(
163 const param_type& p, std::string* l) {
164 l->append(base::StringPrintf("<PatternSpec>"));
165 }
166
112 } // namespace IPC 167 } // namespace IPC
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698