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

Side by Side Diff: content/browser/media/media_canplaytype_browsertest.cc

Issue 816353010: Implemented HEVC video demuxing and parsing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase to ToT Created 5 years, 6 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 <string> 5 #include <string>
6 6
7 #include "content/browser/media/media_browsertest.h" 7 #include "content/browser/media/media_browsertest.h"
8 #include "content/public/test/browser_test_utils.h" 8 #include "content/public/test/browser_test_utils.h"
9 #include "content/public/test/content_browser_test_utils.h" 9 #include "content/public/test/content_browser_test_utils.h"
10 #include "content/shell/browser/shell.h" 10 #include "content/shell/browser/shell.h"
(...skipping 21 matching lines...) Expand all
32 const char kOggOpusProbably[] = "probably"; 32 const char kOggOpusProbably[] = "probably";
33 const char* kMpeg2AacProbably = kPropProbably; 33 const char* kMpeg2AacProbably = kPropProbably;
34 #else 34 #else
35 const char kOggVideoProbably[] = ""; 35 const char kOggVideoProbably[] = "";
36 const char kOggVideoMaybe[] = ""; 36 const char kOggVideoMaybe[] = "";
37 const char kTheoraProbably[] = ""; 37 const char kTheoraProbably[] = "";
38 const char kOggOpusProbably[] = ""; 38 const char kOggOpusProbably[] = "";
39 const char kMpeg2AacProbably[] = ""; 39 const char kMpeg2AacProbably[] = "";
40 #endif // !OS_ANDROID 40 #endif // !OS_ANDROID
41 41
42 #if defined(ENABLE_HEVC_DEMUXING)
43 const char* kHevcSupported = kPropProbably;
44 #else
45 const char* kHevcSupported = kNot;
46 #endif
47
48
42 namespace content { 49 namespace content {
43 50
44 class MediaCanPlayTypeTest : public MediaBrowserTest { 51 class MediaCanPlayTypeTest : public MediaBrowserTest {
45 public: 52 public:
46 MediaCanPlayTypeTest() : url_("about:blank") { } 53 MediaCanPlayTypeTest() : url_("about:blank") { }
47 54
48 void SetUpOnMainThread() override { NavigateToURL(shell(), url_); } 55 void SetUpOnMainThread() override { NavigateToURL(shell(), url_); }
49 56
50 std::string CanPlay(const std::string& type) { 57 std::string CanPlay(const std::string& type) {
51 std::string command("document.createElement('video').canPlayType("); 58 std::string command("document.createElement('video').canPlayType(");
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 173
167 // Unknown codecs. 174 // Unknown codecs.
168 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc2\"'")); 175 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc2\"'"));
169 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc4\"'")); 176 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc4\"'"));
170 177
171 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1x\"'")); 178 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1x\"'"));
172 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3x\"'")); 179 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3x\"'"));
173 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'")); 180 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'"));
174 181
175 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'")); 182 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'"));
183
184 // Don't allow incomplete/ambiguous codec ids for HEVC.
185 // Codec string must have info about codec level/profile, as described in
186 // ISO/IEC FDIS 14496-15 section E.3, for example "hev1.1.6.L93.B0"
187 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1\"'"));
188 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1\"'"));
189
190 // Invalid codecs that look like something similar to HEVC/H.265
191 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1x\"'"));
192 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1x\"'"));
193 // "hev0" is invalid, should be "hev1"
ddorwin 2015/06/19 21:40:14 nit: These four comments can probably be collapsed
servolk 2015/06/20 00:05:07 Done + added "hevc.xxx" and upper-case variants.
194 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev0.1.6.L93.B0\"'"));
195 // "hvc0" is invalid, should be "hvc1"
196 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc0.1.6.L93.B0\"'"));
197 // "hev2" is invalid, should be "hev1"
198 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev2.1.6.L93.B0\"'"));
199 // "hvc2" is invalid, should be "hvc1"
200 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc2.1.6.L93.B0\"'"));
201
202 // TODO(servolk): Uncomment these after crbug.com/482761 is fixed.
203 // Trailing dot is not allowed.
204 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0.\"'"));
205 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0.\"'"));
206 // Invalid general_profile_space/general_profile_idc
207 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.x.6.L93.B0\"'"));
208 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.x.6.L93.B0\"'"));
209 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.d1.6.L93.B0\"'"));
210 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.d1.6.L93.B0\"'"));
211 // Invalid general_profile_compatibility_flags
212 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.x.L93.B0\"'"));
213 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.x.L93.B0\"'"));
214 // Invalid general_tier_flag
215 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.x.B0\"'"));
216 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.x.B0\"'"));
217 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.Lx.B0\"'"));
218 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.Lx.B0\"'"));
219 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.Hx.B0\"'"));
220 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.Hx.B0\"'"));
221 // Invalid constraint flags
222 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.x\"'"));
223 //EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.x\"'"));
176 } 224 }
177 225
178 void TestOGGUnacceptableCombinations(const std::string& mime) { 226 void TestOGGUnacceptableCombinations(const std::string& mime) {
179 // Codecs not belonging to OGG container. 227 // Codecs not belonging to OGG container.
180 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'")); 228 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'"));
181 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0\"'")); 229 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0\"'"));
182 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, opus\"'")); 230 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, opus\"'"));
183 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, vorbis\"'")); 231 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, vorbis\"'"));
184 232
185 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'")); 233 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'"));
186 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9.0\"'")); 234 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9.0\"'"));
187 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, opus\"'")); 235 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, opus\"'"));
188 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, vorbis\"'")); 236 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, vorbis\"'"));
189 237
190 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1\"'")); 238 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1\"'"));
191 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3\"'")); 239 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3\"'"));
192 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.4D401E\"'")); 240 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.4D401E\"'"));
193 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'")); 241 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'"));
194 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, vorbis\"'")); 242 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, vorbis\"'"));
195 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, vorbis\"'")); 243 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, vorbis\"'"));
196 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, opus\"'")); 244 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, opus\"'"));
197 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, opus\"'")); 245 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, opus\"'"));
198 246
247 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0\"'"));
248 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0\"'"));
249 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0,opus\"'"));
250 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0,opus\"'"));
251
199 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'")); 252 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'"));
200 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'")); 253 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'"));
201 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.02\"'")); 254 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.02\"'"));
202 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, mp4a.40.2\"'")); 255 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, mp4a.40.2\"'"));
203 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, mp4a.40.02\"'")); 256 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, mp4a.40.02\"'"));
204 257
205 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"1\"'")); 258 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"1\"'"));
206 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, 1\"'")); 259 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, 1\"'"));
207 260
208 // Codecs are case sensitive. 261 // Codecs are case sensitive.
(...skipping 21 matching lines...) Expand all
230 283
231 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1\"'")); 284 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1\"'"));
232 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3\"'")); 285 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3\"'"));
233 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.4D401E\"'")); 286 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.4D401E\"'"));
234 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'")); 287 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'"));
235 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, vorbis\"'")); 288 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, vorbis\"'"));
236 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, vorbis\"'")); 289 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, vorbis\"'"));
237 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, opus\"'")); 290 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, opus\"'"));
238 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, opus\"'")); 291 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, opus\"'"));
239 292
293 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0\"'"));
294 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0\"'"));
295 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0,opus\"'"));
296 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0,opus\"'"));
297
240 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'")); 298 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'"));
241 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'")); 299 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'"));
242 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.02\"'")); 300 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.02\"'"));
243 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, mp4a.40\"'")); 301 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, mp4a.40\"'"));
244 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, mp4a.40\"'")); 302 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9, mp4a.40\"'"));
245 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0, mp4a.40\"'")); 303 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0, mp4a.40\"'"));
246 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9.0, mp4a.40\"'")); 304 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9.0, mp4a.40\"'"));
247 305
248 // Codecs are case sensitive. 306 // Codecs are case sensitive.
249 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"VP8, Vorbis\"'")); 307 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"VP8, Vorbis\"'"));
(...skipping 17 matching lines...) Expand all
267 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora\"'")); 325 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora\"'"));
268 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, 1\"'")); 326 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, 1\"'"));
269 327
270 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1\"'")); 328 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1\"'"));
271 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3\"'")); 329 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3\"'"));
272 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.4D401E\"'")); 330 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.4D401E\"'"));
273 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'")); 331 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'"));
274 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, 1\"'")); 332 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, 1\"'"));
275 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, 1\"'")); 333 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, 1\"'"));
276 334
335 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0\"'"));
336 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0\"'"));
337 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0,opus\"'"));
338 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0,opus\"'"));
339
277 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'")); 340 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'"));
278 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'")); 341 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'"));
279 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.02\"'")); 342 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.02\"'"));
280 343
281 // Unknown codec. 344 // Unknown codec.
282 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"unknown\"'")); 345 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"unknown\"'"));
283 } 346 }
284 347
285 private: 348 private:
286 GURL url_; 349 GURL url_;
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 544
482 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.2\"'")); 545 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.2\"'"));
483 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.02\"'")); 546 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.02\"'"));
484 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.2\"'")); 547 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.2\"'"));
485 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.02\"'")); 548 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.02\"'"));
486 EXPECT_EQ(kPropMaybe, 549 EXPECT_EQ(kPropMaybe,
487 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'")); 550 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'"));
488 EXPECT_EQ(kPropMaybe, 551 EXPECT_EQ(kPropMaybe,
489 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); 552 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'"));
490 553
554 // TODO(servolk): Add more unit test coverage once we have more info about
555 // various HEVC levels/profiles (crbug.com/482761).
556 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hev1.1.6.L93.B0\"'"));
557 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hvc1.1.6.L93.B0\"'"));
558 EXPECT_EQ(kHevcSupported,
559 CanPlay("'video/mp4; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'"));
560 EXPECT_EQ(kHevcSupported,
561 CanPlay("'video/mp4; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'"));
562
491 TestMPEGUnacceptableCombinations("video/mp4"); 563 TestMPEGUnacceptableCombinations("video/mp4");
492 564
493 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'")); 565 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'"));
494 566
495 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'")); 567 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'"));
496 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'")); 568 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'"));
497 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40\"'")); 569 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40\"'"));
498 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40\"'")); 570 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40\"'"));
499 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'")); 571 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'"));
500 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'")); 572 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'"));
(...skipping 23 matching lines...) Expand all
524 596
525 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.2\"'")); 597 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.2\"'"));
526 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.02\"'")); 598 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.02\"'"));
527 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'")); 599 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'"));
528 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.02\"'")); 600 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.02\"'"));
529 EXPECT_EQ(kPropMaybe, 601 EXPECT_EQ(kPropMaybe,
530 CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'")); 602 CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'"));
531 EXPECT_EQ(kPropMaybe, 603 EXPECT_EQ(kPropMaybe,
532 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); 604 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'"));
533 605
606 EXPECT_EQ(kHevcSupported,
607 CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0\"'"));
608 EXPECT_EQ(kHevcSupported,
609 CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0\"'"));
610 EXPECT_EQ(kHevcSupported,
611 CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'"));
612 EXPECT_EQ(kHevcSupported,
613 CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'"));
614
534 TestMPEGUnacceptableCombinations("video/x-m4v"); 615 TestMPEGUnacceptableCombinations("video/x-m4v");
535 616
536 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'")); 617 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'"));
537 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); 618 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'"));
538 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); 619 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'"));
539 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'")); 620 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'"));
540 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'")); 621 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'"));
541 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'")); 622 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'"));
542 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'")); 623 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'"));
543 624
544 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'")); 625 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'"));
545 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'")); 626 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'"));
546 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'")); 627 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'"));
547 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); 628 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'"));
548 629
549 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); 630 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'"));
550 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); 631 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'"));
551 632
633 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0\"'"));
634 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0\"'"));
635 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'"));
636 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'"));
637
552 TestMPEGUnacceptableCombinations("audio/mp4"); 638 TestMPEGUnacceptableCombinations("audio/mp4");
553 639
554 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'")); 640 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'"));
555 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'")); 641 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'"));
556 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'")); 642 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'"));
557 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'")); 643 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'"));
558 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'")); 644 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'"));
559 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'")); 645 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'"));
560 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'")); 646 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'"));
561 647
562 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); 648 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'"));
563 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); 649 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'"));
564 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); 650 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'"));
565 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); 651 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'"));
566 652
567 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); 653 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'"));
568 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); 654 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'"));
569 655
656 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"hev1.1.6.L93.B0\"'"));
657 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"hvc1.1.6.L93.B0\"'"));
658 EXPECT_EQ(kNot,
659 CanPlay("'audio/x-m4a; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'"));
660 EXPECT_EQ(kNot,
661 CanPlay("'audio/x-m4a; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'"));
662
570 TestMPEGUnacceptableCombinations("audio/x-m4a"); 663 TestMPEGUnacceptableCombinations("audio/x-m4a");
571 } 664 }
572 665
573 // When modifying this test, also change CodecSupportTest_Avc3Variants. 666 // When modifying this test, also change CodecSupportTest_Avc3Variants.
574 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) { 667 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) {
575 // avc1 without extensions results in "maybe" for compatibility. 668 // avc1 without extensions results in "maybe" for compatibility.
576 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); 669 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'"));
577 670
578 // Any 6-digit hexadecimal number will result in at least "maybe". 671 // Any 6-digit hexadecimal number will result in at least "maybe".
579 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'")); 672 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'"));
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
818 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E033\"'")); 911 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E033\"'"));
819 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E034\"'")); 912 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E034\"'"));
820 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E035\"'")); 913 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E035\"'"));
821 // Verify that decimal representations of levels are not supported. 914 // Verify that decimal representations of levels are not supported.
822 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E005\"'")); 915 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E005\"'"));
823 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E050\"'")); 916 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E050\"'"));
824 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E051\"'")); 917 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E051\"'"));
825 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E052\"'")); 918 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E052\"'"));
826 } 919 }
827 920
921 // TODO(servolk): Add extensive tests for various HEVC profiles, levels and
922 // tiers, similar to avc1/avc3 tests above, after proper HEVC codec id parsing
923 // is implemented (crbug.com/482761)
924
828 // All values that return positive results are tested. There are also 925 // All values that return positive results are tested. There are also
829 // negative tests for values around or that could potentially be confused with 926 // negative tests for values around or that could potentially be confused with
830 // (e.g. case, truncation, hex <-> deciemal conversion) those values that return 927 // (e.g. case, truncation, hex <-> deciemal conversion) those values that return
831 // positive results. 928 // positive results.
832 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mp4aVariants) { 929 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mp4aVariants) {
833 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a\"'")); 930 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a\"'"));
834 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.\"'")); 931 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.\"'"));
835 932
836 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6\"'")); 933 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6\"'"));
837 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.60\"'")); 934 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.60\"'"));
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
959 CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40.2\"'")); 1056 CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40.2\"'"));
960 EXPECT_EQ(probablyCanPlayHLS, 1057 EXPECT_EQ(probablyCanPlayHLS,
961 CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40.02\"'")); 1058 CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40.02\"'"));
962 EXPECT_EQ(probablyCanPlayHLS, 1059 EXPECT_EQ(probablyCanPlayHLS,
963 CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40.5\"'")); 1060 CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40.5\"'"));
964 EXPECT_EQ(probablyCanPlayHLS, 1061 EXPECT_EQ(probablyCanPlayHLS,
965 CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40.05\"'")); 1062 CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40.05\"'"));
966 EXPECT_EQ(probablyCanPlayHLS, 1063 EXPECT_EQ(probablyCanPlayHLS,
967 CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40.29\"'")); 1064 CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40.29\"'"));
968 1065
1066 EXPECT_EQ(kNot,
1067 CanPlay("'application/x-mpegurl; codecs=\"hev1.1.6.L93.B0\"'"));
1068 EXPECT_EQ(kNot,
1069 CanPlay("'application/x-mpegurl; codecs=\"hvc1.1.6.L93.B0\"'"));
1070 EXPECT_EQ(kNot,
1071 CanPlay("'application/x-mpegurl; codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'"));
1072 EXPECT_EQ(kNot,
1073 CanPlay("'application/x-mpegurl; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'"));
1074
969 EXPECT_EQ(maybeCanPlayHLS, 1075 EXPECT_EQ(maybeCanPlayHLS,
970 CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a.40.2\"'")); 1076 CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a.40.2\"'"));
971 EXPECT_EQ(maybeCanPlayHLS, 1077 EXPECT_EQ(maybeCanPlayHLS,
972 CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a.40.02\"'")); 1078 CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a.40.02\"'"));
973 EXPECT_EQ(maybeCanPlayHLS, 1079 EXPECT_EQ(maybeCanPlayHLS,
974 CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a.40.2\"'")); 1080 CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a.40.2\"'"));
975 EXPECT_EQ(maybeCanPlayHLS, 1081 EXPECT_EQ(maybeCanPlayHLS,
976 CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a.40.02\"'")); 1082 CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a.40.02\"'"));
977 EXPECT_EQ(maybeCanPlayHLS, 1083 EXPECT_EQ(maybeCanPlayHLS,
978 CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40\"'")); 1084 CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40\"'"));
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a.40.2\"'")); 1137 CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a.40.2\"'"));
1032 EXPECT_EQ(maybeCanPlayHLS, 1138 EXPECT_EQ(maybeCanPlayHLS,
1033 CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a.40.02\"'")); 1139 CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a.40.02\"'"));
1034 EXPECT_EQ(maybeCanPlayHLS, 1140 EXPECT_EQ(maybeCanPlayHLS,
1035 CanPlay("'application/vnd.apple.mpegurl; " 1141 CanPlay("'application/vnd.apple.mpegurl; "
1036 "codecs=\"avc1.42E01E, mp4a.40\"'")); 1142 "codecs=\"avc1.42E01E, mp4a.40\"'"));
1037 EXPECT_EQ(maybeCanPlayHLS, 1143 EXPECT_EQ(maybeCanPlayHLS,
1038 CanPlay("'application/vnd.apple.mpegurl; " 1144 CanPlay("'application/vnd.apple.mpegurl; "
1039 "codecs=\"avc3.42E01E, mp4a.40\"'")); 1145 "codecs=\"avc3.42E01E, mp4a.40\"'"));
1040 1146
1147 EXPECT_EQ(kNot,
1148 CanPlay("'application/vnd.apple.mpegurl; codecs=\"hev1.1.6.L93.B0\"'"));
1149 EXPECT_EQ(kNot,
1150 CanPlay("'application/vnd.apple.mpegurl; codecs=\"hvc1.1.6.L93.B0\"'"));
1151 EXPECT_EQ(kNot,
1152 CanPlay("'application/vnd.apple.mpegurl; "
1153 "codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'"));
1154 EXPECT_EQ(kNot,
1155 CanPlay("'application/vnd.apple.mpegurl; "
1156 "codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'"));
1157
1041 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); 1158 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl");
1042 } 1159 }
1043 1160
1044 } // namespace content 1161 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698