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

Side by Side Diff: media/formats/webm/webm_content_encodings_client.cc

Issue 1041353002: media-internals: Differentiate error, info, and debug log messages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address reviewer comments Created 5 years, 8 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 "media/formats/webm/webm_content_encodings_client.h" 5 #include "media/formats/webm/webm_content_encodings_client.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "media/formats/webm/webm_constants.h" 9 #include "media/formats/webm/webm_constants.h"
10 10
(...skipping 26 matching lines...) Expand all
37 if (id == kWebMIdContentEncoding) { 37 if (id == kWebMIdContentEncoding) {
38 DCHECK(!cur_content_encoding_.get()); 38 DCHECK(!cur_content_encoding_.get());
39 DCHECK(!content_encryption_encountered_); 39 DCHECK(!content_encryption_encountered_);
40 cur_content_encoding_.reset(new ContentEncoding()); 40 cur_content_encoding_.reset(new ContentEncoding());
41 return this; 41 return this;
42 } 42 }
43 43
44 if (id == kWebMIdContentEncryption) { 44 if (id == kWebMIdContentEncryption) {
45 DCHECK(cur_content_encoding_.get()); 45 DCHECK(cur_content_encoding_.get());
46 if (content_encryption_encountered_) { 46 if (content_encryption_encountered_) {
47 MEDIA_LOG(log_cb_) << "Unexpected multiple ContentEncryption."; 47 MEDIA_LOG(ERROR, log_cb_) << "Unexpected multiple ContentEncryption.";
48 return NULL; 48 return NULL;
49 } 49 }
50 content_encryption_encountered_ = true; 50 content_encryption_encountered_ = true;
51 return this; 51 return this;
52 } 52 }
53 53
54 if (id == kWebMIdContentEncAESSettings) { 54 if (id == kWebMIdContentEncAESSettings) {
55 DCHECK(cur_content_encoding_.get()); 55 DCHECK(cur_content_encoding_.get());
56 return this; 56 return this;
57 } 57 }
58 58
59 // This should not happen if WebMListParser is working properly. 59 // This should not happen if WebMListParser is working properly.
60 DCHECK(false); 60 DCHECK(false);
61 return NULL; 61 return NULL;
62 } 62 }
63 63
64 // Mandatory occurrence restriction is checked in this function. Multiple 64 // Mandatory occurrence restriction is checked in this function. Multiple
65 // occurrence restriction is checked in OnUInt and OnBinary. 65 // occurrence restriction is checked in OnUInt and OnBinary.
66 bool WebMContentEncodingsClient::OnListEnd(int id) { 66 bool WebMContentEncodingsClient::OnListEnd(int id) {
67 if (id == kWebMIdContentEncodings) { 67 if (id == kWebMIdContentEncodings) {
68 // ContentEncoding element is mandatory. Check this! 68 // ContentEncoding element is mandatory. Check this!
69 if (content_encodings_.empty()) { 69 if (content_encodings_.empty()) {
70 MEDIA_LOG(log_cb_) << "Missing ContentEncoding."; 70 MEDIA_LOG(ERROR, log_cb_) << "Missing ContentEncoding.";
71 return false; 71 return false;
72 } 72 }
73 content_encodings_ready_ = true; 73 content_encodings_ready_ = true;
74 return true; 74 return true;
75 } 75 }
76 76
77 if (id == kWebMIdContentEncoding) { 77 if (id == kWebMIdContentEncoding) {
78 DCHECK(cur_content_encoding_.get()); 78 DCHECK(cur_content_encoding_.get());
79 79
80 // 80 //
81 // Specify default values to missing mandatory elements. 81 // Specify default values to missing mandatory elements.
82 // 82 //
83 83
84 if (cur_content_encoding_->order() == ContentEncoding::kOrderInvalid) { 84 if (cur_content_encoding_->order() == ContentEncoding::kOrderInvalid) {
85 // Default value of encoding order is 0, which should only be used on the 85 // Default value of encoding order is 0, which should only be used on the
86 // first ContentEncoding. 86 // first ContentEncoding.
87 if (!content_encodings_.empty()) { 87 if (!content_encodings_.empty()) {
88 MEDIA_LOG(log_cb_) << "Missing ContentEncodingOrder."; 88 MEDIA_LOG(ERROR, log_cb_) << "Missing ContentEncodingOrder.";
89 return false; 89 return false;
90 } 90 }
91 cur_content_encoding_->set_order(0); 91 cur_content_encoding_->set_order(0);
92 } 92 }
93 93
94 if (cur_content_encoding_->scope() == ContentEncoding::kScopeInvalid) 94 if (cur_content_encoding_->scope() == ContentEncoding::kScopeInvalid)
95 cur_content_encoding_->set_scope(ContentEncoding::kScopeAllFrameContents); 95 cur_content_encoding_->set_scope(ContentEncoding::kScopeAllFrameContents);
96 96
97 if (cur_content_encoding_->type() == ContentEncoding::kTypeInvalid) 97 if (cur_content_encoding_->type() == ContentEncoding::kTypeInvalid)
98 cur_content_encoding_->set_type(ContentEncoding::kTypeCompression); 98 cur_content_encoding_->set_type(ContentEncoding::kTypeCompression);
99 99
100 // Check for elements valid in spec but not supported for now. 100 // Check for elements valid in spec but not supported for now.
101 if (cur_content_encoding_->type() == ContentEncoding::kTypeCompression) { 101 if (cur_content_encoding_->type() == ContentEncoding::kTypeCompression) {
102 MEDIA_LOG(log_cb_) << "ContentCompression not supported."; 102 MEDIA_LOG(ERROR, log_cb_) << "ContentCompression not supported.";
103 return false; 103 return false;
104 } 104 }
105 105
106 // Enforce mandatory elements without default values. 106 // Enforce mandatory elements without default values.
107 DCHECK(cur_content_encoding_->type() == ContentEncoding::kTypeEncryption); 107 DCHECK(cur_content_encoding_->type() == ContentEncoding::kTypeEncryption);
108 if (!content_encryption_encountered_) { 108 if (!content_encryption_encountered_) {
109 MEDIA_LOG(log_cb_) << "ContentEncodingType is encryption but" 109 MEDIA_LOG(ERROR, log_cb_) << "ContentEncodingType is encryption but"
110 << " ContentEncryption is missing."; 110 << " ContentEncryption is missing.";
111 return false; 111 return false;
112 } 112 }
113 113
114 content_encodings_.push_back(cur_content_encoding_.release()); 114 content_encodings_.push_back(cur_content_encoding_.release());
115 content_encryption_encountered_ = false; 115 content_encryption_encountered_ = false;
116 return true; 116 return true;
117 } 117 }
118 118
119 if (id == kWebMIdContentEncryption) { 119 if (id == kWebMIdContentEncryption) {
120 DCHECK(cur_content_encoding_.get()); 120 DCHECK(cur_content_encoding_.get());
(...skipping 18 matching lines...) Expand all
139 return false; 139 return false;
140 } 140 }
141 141
142 // Multiple occurrence restriction and range are checked in this function. 142 // Multiple occurrence restriction and range are checked in this function.
143 // Mandatory occurrence restriction is checked in OnListEnd. 143 // Mandatory occurrence restriction is checked in OnListEnd.
144 bool WebMContentEncodingsClient::OnUInt(int id, int64 val) { 144 bool WebMContentEncodingsClient::OnUInt(int id, int64 val) {
145 DCHECK(cur_content_encoding_.get()); 145 DCHECK(cur_content_encoding_.get());
146 146
147 if (id == kWebMIdContentEncodingOrder) { 147 if (id == kWebMIdContentEncodingOrder) {
148 if (cur_content_encoding_->order() != ContentEncoding::kOrderInvalid) { 148 if (cur_content_encoding_->order() != ContentEncoding::kOrderInvalid) {
149 MEDIA_LOG(log_cb_) << "Unexpected multiple ContentEncodingOrder."; 149 MEDIA_LOG(ERROR, log_cb_) << "Unexpected multiple ContentEncodingOrder.";
150 return false; 150 return false;
151 } 151 }
152 152
153 if (val != static_cast<int64>(content_encodings_.size())) { 153 if (val != static_cast<int64>(content_encodings_.size())) {
154 // According to the spec, encoding order starts with 0 and counts upwards. 154 // According to the spec, encoding order starts with 0 and counts upwards.
155 MEDIA_LOG(log_cb_) << "Unexpected ContentEncodingOrder."; 155 MEDIA_LOG(ERROR, log_cb_) << "Unexpected ContentEncodingOrder.";
156 return false; 156 return false;
157 } 157 }
158 158
159 cur_content_encoding_->set_order(val); 159 cur_content_encoding_->set_order(val);
160 return true; 160 return true;
161 } 161 }
162 162
163 if (id == kWebMIdContentEncodingScope) { 163 if (id == kWebMIdContentEncodingScope) {
164 if (cur_content_encoding_->scope() != ContentEncoding::kScopeInvalid) { 164 if (cur_content_encoding_->scope() != ContentEncoding::kScopeInvalid) {
165 MEDIA_LOG(log_cb_) << "Unexpected multiple ContentEncodingScope."; 165 MEDIA_LOG(ERROR, log_cb_) << "Unexpected multiple ContentEncodingScope.";
166 return false; 166 return false;
167 } 167 }
168 168
169 if (val == ContentEncoding::kScopeInvalid || 169 if (val == ContentEncoding::kScopeInvalid ||
170 val > ContentEncoding::kScopeMax) { 170 val > ContentEncoding::kScopeMax) {
171 MEDIA_LOG(log_cb_) << "Unexpected ContentEncodingScope."; 171 MEDIA_LOG(ERROR, log_cb_) << "Unexpected ContentEncodingScope.";
172 return false; 172 return false;
173 } 173 }
174 174
175 if (val & ContentEncoding::kScopeNextContentEncodingData) { 175 if (val & ContentEncoding::kScopeNextContentEncodingData) {
176 MEDIA_LOG(log_cb_) << "Encoded next ContentEncoding is not supported."; 176 MEDIA_LOG(ERROR, log_cb_) << "Encoded next ContentEncoding is not "
177 "supported.";
177 return false; 178 return false;
178 } 179 }
179 180
180 cur_content_encoding_->set_scope(static_cast<ContentEncoding::Scope>(val)); 181 cur_content_encoding_->set_scope(static_cast<ContentEncoding::Scope>(val));
181 return true; 182 return true;
182 } 183 }
183 184
184 if (id == kWebMIdContentEncodingType) { 185 if (id == kWebMIdContentEncodingType) {
185 if (cur_content_encoding_->type() != ContentEncoding::kTypeInvalid) { 186 if (cur_content_encoding_->type() != ContentEncoding::kTypeInvalid) {
186 MEDIA_LOG(log_cb_) << "Unexpected multiple ContentEncodingType."; 187 MEDIA_LOG(ERROR, log_cb_) << "Unexpected multiple ContentEncodingType.";
187 return false; 188 return false;
188 } 189 }
189 190
190 if (val == ContentEncoding::kTypeCompression) { 191 if (val == ContentEncoding::kTypeCompression) {
191 MEDIA_LOG(log_cb_) << "ContentCompression not supported."; 192 MEDIA_LOG(ERROR, log_cb_) << "ContentCompression not supported.";
192 return false; 193 return false;
193 } 194 }
194 195
195 if (val != ContentEncoding::kTypeEncryption) { 196 if (val != ContentEncoding::kTypeEncryption) {
196 MEDIA_LOG(log_cb_) << "Unexpected ContentEncodingType " << val << "."; 197 MEDIA_LOG(ERROR, log_cb_) << "Unexpected ContentEncodingType " << val
198 << ".";
197 return false; 199 return false;
198 } 200 }
199 201
200 cur_content_encoding_->set_type(static_cast<ContentEncoding::Type>(val)); 202 cur_content_encoding_->set_type(static_cast<ContentEncoding::Type>(val));
201 return true; 203 return true;
202 } 204 }
203 205
204 if (id == kWebMIdContentEncAlgo) { 206 if (id == kWebMIdContentEncAlgo) {
205 if (cur_content_encoding_->encryption_algo() != 207 if (cur_content_encoding_->encryption_algo() !=
206 ContentEncoding::kEncAlgoInvalid) { 208 ContentEncoding::kEncAlgoInvalid) {
207 MEDIA_LOG(log_cb_) << "Unexpected multiple ContentEncAlgo."; 209 MEDIA_LOG(ERROR, log_cb_) << "Unexpected multiple ContentEncAlgo.";
208 return false; 210 return false;
209 } 211 }
210 212
211 if (val < ContentEncoding::kEncAlgoNotEncrypted || 213 if (val < ContentEncoding::kEncAlgoNotEncrypted ||
212 val > ContentEncoding::kEncAlgoAes) { 214 val > ContentEncoding::kEncAlgoAes) {
213 MEDIA_LOG(log_cb_) << "Unexpected ContentEncAlgo " << val << "."; 215 MEDIA_LOG(ERROR, log_cb_) << "Unexpected ContentEncAlgo " << val << ".";
214 return false; 216 return false;
215 } 217 }
216 218
217 cur_content_encoding_->set_encryption_algo( 219 cur_content_encoding_->set_encryption_algo(
218 static_cast<ContentEncoding::EncryptionAlgo>(val)); 220 static_cast<ContentEncoding::EncryptionAlgo>(val));
219 return true; 221 return true;
220 } 222 }
221 223
222 if (id == kWebMIdAESSettingsCipherMode) { 224 if (id == kWebMIdAESSettingsCipherMode) {
223 if (cur_content_encoding_->cipher_mode() != 225 if (cur_content_encoding_->cipher_mode() !=
224 ContentEncoding::kCipherModeInvalid) { 226 ContentEncoding::kCipherModeInvalid) {
225 MEDIA_LOG(log_cb_) << "Unexpected multiple AESSettingsCipherMode."; 227 MEDIA_LOG(ERROR, log_cb_) << "Unexpected multiple AESSettingsCipherMode.";
226 return false; 228 return false;
227 } 229 }
228 230
229 if (val != ContentEncoding::kCipherModeCtr) { 231 if (val != ContentEncoding::kCipherModeCtr) {
230 MEDIA_LOG(log_cb_) << "Unexpected AESSettingsCipherMode " << val << "."; 232 MEDIA_LOG(ERROR, log_cb_) << "Unexpected AESSettingsCipherMode " << val
233 << ".";
231 return false; 234 return false;
232 } 235 }
233 236
234 cur_content_encoding_->set_cipher_mode( 237 cur_content_encoding_->set_cipher_mode(
235 static_cast<ContentEncoding::CipherMode>(val)); 238 static_cast<ContentEncoding::CipherMode>(val));
236 return true; 239 return true;
237 } 240 }
238 241
239 // This should not happen if WebMListParser is working properly. 242 // This should not happen if WebMListParser is working properly.
240 DCHECK(false); 243 DCHECK(false);
241 return false; 244 return false;
242 } 245 }
243 246
244 // Multiple occurrence restriction is checked in this function. Mandatory 247 // Multiple occurrence restriction is checked in this function. Mandatory
245 // restriction is checked in OnListEnd. 248 // restriction is checked in OnListEnd.
246 bool WebMContentEncodingsClient::OnBinary(int id, const uint8* data, int size) { 249 bool WebMContentEncodingsClient::OnBinary(int id, const uint8* data, int size) {
247 DCHECK(cur_content_encoding_.get()); 250 DCHECK(cur_content_encoding_.get());
248 DCHECK(data); 251 DCHECK(data);
249 DCHECK_GT(size, 0); 252 DCHECK_GT(size, 0);
250 253
251 if (id == kWebMIdContentEncKeyID) { 254 if (id == kWebMIdContentEncKeyID) {
252 if (!cur_content_encoding_->encryption_key_id().empty()) { 255 if (!cur_content_encoding_->encryption_key_id().empty()) {
253 MEDIA_LOG(log_cb_) << "Unexpected multiple ContentEncKeyID"; 256 MEDIA_LOG(ERROR, log_cb_) << "Unexpected multiple ContentEncKeyID";
254 return false; 257 return false;
255 } 258 }
256 cur_content_encoding_->SetEncryptionKeyId(data, size); 259 cur_content_encoding_->SetEncryptionKeyId(data, size);
257 return true; 260 return true;
258 } 261 }
259 262
260 // This should not happen if WebMListParser is working properly. 263 // This should not happen if WebMListParser is working properly.
261 DCHECK(false); 264 DCHECK(false);
262 return false; 265 return false;
263 } 266 }
264 267
265 } // namespace media 268 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698