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.
4from telemetry.page import page as page_module
5from telemetry.page import page_set as page_set_module
6
7
8class ToughVideoCasesPage(page_module.Page):
9
10  def __init__(self, url, page_set):
11    super(ToughVideoCasesPage, self).__init__(url=url, page_set=page_set)
12
13  def LoopMixedAudio(self, action_runner):
14    action_runner.PlayMedia(selector='#background_audio',
15                            playing_event_timeout_in_seconds=60)
16    action_runner.LoopMedia(loop_count=50, selector='#mixed_audio')
17
18  def LoopSingleAudio(self, action_runner):
19    action_runner.LoopMedia(loop_count=50, selector='#single_audio')
20
21  def PlayAction(self, action_runner):
22    action_runner.PlayMedia(playing_event_timeout_in_seconds=60,
23                            ended_event_timeout_in_seconds=60)
24
25  def SeekBeforeAndAfterPlayhead(self, action_runner):
26    action_runner.PlayMedia(playing_event_timeout_in_seconds=60,
27                            ended_event_timeout_in_seconds=60)
28    # Wait for 1 second so that we know the play-head is at ~1s.
29    action_runner.Wait(1)
30    # Seek to before the play-head location.
31    action_runner.SeekMedia(seconds=0.5, timeout_in_seconds=60,
32                            label='seek_warm')
33    # Seek to after the play-head location.
34    action_runner.SeekMedia(seconds=9, timeout_in_seconds=60,
35                            label='seek_cold')
36
37
38class Page1(ToughVideoCasesPage):
39
40  def __init__(self, page_set):
41    super(Page1, self).__init__(
42      url='file://tough_video_cases/video.html?src=crowd.wav&type=audio',
43      page_set=page_set)
44
45    self.add_browser_metrics = True
46
47  def RunMediaMetrics(self, action_runner):
48    self.PlayAction(action_runner)
49
50
51class Page2(ToughVideoCasesPage):
52
53  def __init__(self, page_set):
54    super(Page2, self).__init__(
55      url='file://tough_video_cases/video.html?src=crowd.ogg&type=audio',
56      page_set=page_set)
57
58    self.add_browser_metrics = True
59
60  def RunMediaMetrics(self, action_runner):
61    self.PlayAction(action_runner)
62
63
64class Page3(ToughVideoCasesPage):
65
66  def __init__(self, page_set):
67    super(Page3, self).__init__(
68      url='file://tough_video_cases/video.html?src=crowd1080.ogv',
69      page_set=page_set)
70
71    self.add_browser_metrics = True
72    self.is_50fps = True
73
74  def RunMediaMetrics(self, action_runner):
75    self.PlayAction(action_runner)
76
77
78class Page4(ToughVideoCasesPage):
79
80  def __init__(self, page_set):
81    super(Page4, self).__init__(
82      url='file://tough_video_cases/video.html?src=crowd1080.webm',
83      page_set=page_set)
84
85    self.add_browser_metrics = True
86    self.is_50fps = True
87
88  def RunMediaMetrics(self, action_runner):
89    self.PlayAction(action_runner)
90
91
92class Page5(ToughVideoCasesPage):
93
94  def __init__(self, page_set):
95    super(Page5, self).__init__(
96      url='file://tough_video_cases/video.html?src=crowd2160.ogv',
97      page_set=page_set)
98
99    self.add_browser_metrics = True
100    self.is_4k = True
101    self.is_50fps = True
102
103  def RunMediaMetrics(self, action_runner):
104    self.PlayAction(action_runner)
105
106
107class Page6(ToughVideoCasesPage):
108
109  def __init__(self, page_set):
110    super(Page6, self).__init__(
111      url='file://tough_video_cases/video.html?src=crowd2160.webm',
112      page_set=page_set)
113
114    self.add_browser_metrics = True
115    self.is_4k = True
116    self.is_50fps = True
117
118  def RunMediaMetrics(self, action_runner):
119    self.PlayAction(action_runner)
120
121
122class Page7(ToughVideoCasesPage):
123
124  def __init__(self, page_set):
125    super(Page7, self).__init__(
126      url='file://tough_video_cases/video.html?src=tulip2.ogg&type=audio',
127      page_set=page_set)
128
129    self.add_browser_metrics = True
130
131  def RunMediaMetrics(self, action_runner):
132    self.PlayAction(action_runner)
133
134
135class Page8(ToughVideoCasesPage):
136
137  def __init__(self, page_set):
138    super(Page8, self).__init__(
139      url='file://tough_video_cases/video.html?src=tulip2.wav&type=audio',
140      page_set=page_set)
141
142    self.add_browser_metrics = True
143
144  def RunMediaMetrics(self, action_runner):
145    self.PlayAction(action_runner)
146
147
148class Page9(ToughVideoCasesPage):
149
150  def __init__(self, page_set):
151    super(Page9, self).__init__(
152      url='file://tough_video_cases/video.html?src=tulip2.ogv',
153      page_set=page_set)
154
155    self.add_browser_metrics = True
156
157  def RunMediaMetrics(self, action_runner):
158    self.PlayAction(action_runner)
159
160
161class Page10(ToughVideoCasesPage):
162
163  def __init__(self, page_set):
164    super(Page10, self).__init__(
165      url='file://tough_video_cases/video.html?src=tulip2.webm',
166      page_set=page_set)
167
168    self.add_browser_metrics = True
169
170  def RunMediaMetrics(self, action_runner):
171    self.PlayAction(action_runner)
172
173
174class Page11(ToughVideoCasesPage):
175
176  def __init__(self, page_set):
177    super(Page11, self).__init__(
178      url='file://tough_video_cases/video.html?src=crowd1080.mp4',
179      page_set=page_set)
180
181    self.add_browser_metrics = True
182    self.is_50fps = True
183
184  def RunMediaMetrics(self, action_runner):
185    self.PlayAction(action_runner)
186
187
188class Page12(ToughVideoCasesPage):
189
190  def __init__(self, page_set):
191    super(Page12, self).__init__(
192      url='file://tough_video_cases/video.html?src=crowd2160.mp4',
193      page_set=page_set)
194
195    self.add_browser_metrics = True
196    self.is_4k = True
197    self.is_50fps = True
198
199  def RunMediaMetrics(self, action_runner):
200    self.PlayAction(action_runner)
201
202
203class Page13(ToughVideoCasesPage):
204
205  def __init__(self, page_set):
206    super(Page13, self).__init__(
207      url='file://tough_video_cases/video.html?src=tulip2.mp3&type=audio',
208      page_set=page_set)
209
210    self.add_browser_metrics = True
211
212  def RunMediaMetrics(self, action_runner):
213    self.PlayAction(action_runner)
214
215
216class Page14(ToughVideoCasesPage):
217
218  def __init__(self, page_set):
219    super(Page14, self).__init__(
220      url='file://tough_video_cases/video.html?src=tulip2.mp4',
221      page_set=page_set)
222
223    self.add_browser_metrics = True
224
225  def RunMediaMetrics(self, action_runner):
226    self.PlayAction(action_runner)
227
228
229class Page15(ToughVideoCasesPage):
230
231  def __init__(self, page_set):
232    super(Page15, self).__init__(
233      url='file://tough_video_cases/video.html?src=tulip2.m4a&type=audio',
234      page_set=page_set)
235
236    self.add_browser_metrics = True
237
238  def RunMediaMetrics(self, action_runner):
239    self.PlayAction(action_runner)
240
241
242class Page16(ToughVideoCasesPage):
243
244  def __init__(self, page_set):
245    super(Page16, self).__init__(
246      url='file://tough_video_cases/video.html?src=garden2_10s.webm',
247      page_set=page_set)
248
249    self.is_4k = True
250    self.add_browser_metrics = True
251
252  def RunMediaMetrics(self, action_runner):
253    self.PlayAction(action_runner)
254
255
256class Page17(ToughVideoCasesPage):
257
258  def __init__(self, page_set):
259    super(Page17, self).__init__(
260      url='file://tough_video_cases/video.html?src=garden2_10s.mp4',
261      page_set=page_set)
262
263    self.is_4k = True
264    self.add_browser_metrics = True
265
266  def RunMediaMetrics(self, action_runner):
267    self.PlayAction(action_runner)
268
269
270class Page18(ToughVideoCasesPage):
271
272  def __init__(self, page_set):
273    super(Page18, self).__init__(
274      url='file://tough_video_cases/video.html?src=garden2_10s.ogv',
275      page_set=page_set)
276
277    self.is_4k = True
278    self.add_browser_metrics = True
279
280  def RunMediaMetrics(self, action_runner):
281    self.PlayAction(action_runner)
282
283
284class Page19(ToughVideoCasesPage):
285
286  def __init__(self, page_set):
287    super(Page19, self).__init__(
288      url='file://tough_video_cases/video.html?src=tulip2.ogg&type=audio',
289      page_set=page_set)
290
291    self.skip_basic_metrics = True
292
293  def RunMediaMetrics(self, action_runner):
294    self.SeekBeforeAndAfterPlayhead(action_runner)
295
296
297class Page20(ToughVideoCasesPage):
298
299  def __init__(self, page_set):
300    super(Page20, self).__init__(
301      url='file://tough_video_cases/video.html?src=tulip2.wav&type=audio',
302      page_set=page_set)
303
304    self.skip_basic_metrics = True
305
306  def RunMediaMetrics(self, action_runner):
307    self.SeekBeforeAndAfterPlayhead(action_runner)
308
309
310class Page21(ToughVideoCasesPage):
311
312  def __init__(self, page_set):
313    super(Page21, self).__init__(
314      url='file://tough_video_cases/video.html?src=tulip2.ogv',
315      page_set=page_set)
316
317    self.skip_basic_metrics = True
318
319  def RunMediaMetrics(self, action_runner):
320    self.SeekBeforeAndAfterPlayhead(action_runner)
321
322
323class Page22(ToughVideoCasesPage):
324
325  def __init__(self, page_set):
326    super(Page22, self).__init__(
327      url='file://tough_video_cases/video.html?src=tulip2.webm',
328      page_set=page_set)
329
330    self.skip_basic_metrics = True
331
332  def RunMediaMetrics(self, action_runner):
333    self.SeekBeforeAndAfterPlayhead(action_runner)
334
335
336class Page23(ToughVideoCasesPage):
337
338  def __init__(self, page_set):
339    super(Page23, self).__init__(
340      url='file://tough_video_cases/video.html?src=tulip2.mp3&type=audio',
341      page_set=page_set)
342
343    self.skip_basic_metrics = True
344
345  def RunMediaMetrics(self, action_runner):
346    self.SeekBeforeAndAfterPlayhead(action_runner)
347
348
349class Page24(ToughVideoCasesPage):
350
351  def __init__(self, page_set):
352    super(Page24, self).__init__(
353      url='file://tough_video_cases/video.html?src=tulip2.mp4',
354      page_set=page_set)
355
356    self.skip_basic_metrics = True
357
358  def RunMediaMetrics(self, action_runner):
359    self.SeekBeforeAndAfterPlayhead(action_runner)
360
361
362class Page25(ToughVideoCasesPage):
363
364  def __init__(self, page_set):
365    super(Page25, self).__init__(
366      url='file://tough_video_cases/video.html?src=garden2_10s.webm',
367      page_set=page_set)
368
369    self.skip_basic_metrics = True
370    self.is_4k = True
371
372  def RunMediaMetrics(self, action_runner):
373    self.SeekBeforeAndAfterPlayhead(action_runner)
374
375
376class Page26(ToughVideoCasesPage):
377
378  def __init__(self, page_set):
379    super(Page26, self).__init__(
380      url='file://tough_video_cases/video.html?src=garden2_10s.mp4',
381      page_set=page_set)
382
383    self.skip_basic_metrics = True
384    self.is_4k = True
385
386  def RunMediaMetrics(self, action_runner):
387    self.SeekBeforeAndAfterPlayhead(action_runner)
388
389
390class Page27(ToughVideoCasesPage):
391
392  def __init__(self, page_set):
393    super(Page27, self).__init__(
394      url='file://tough_video_cases/video.html?src=garden2_10s.ogv',
395      page_set=page_set)
396
397    self.skip_basic_metrics = True
398    self.is_4k = True
399
400  def RunMediaMetrics(self, action_runner):
401    self.SeekBeforeAndAfterPlayhead(action_runner)
402
403
404class Page28(ToughVideoCasesPage):
405
406  def __init__(self, page_set):
407    super(Page28, self).__init__(
408      url='file://tough_video_cases/audio_playback.html?id=single_audio',
409      page_set=page_set)
410
411    self.skip_basic_metrics = True
412
413  def RunMediaMetrics(self, action_runner):
414    self.LoopSingleAudio(action_runner)
415
416
417class Page29(ToughVideoCasesPage):
418
419  def __init__(self, page_set):
420    super(Page29, self).__init__(
421      url='file://tough_video_cases/audio_playback.html?id=mixed_audio',
422      page_set=page_set)
423
424    self.skip_basic_metrics = True
425
426  def RunMediaMetrics(self, action_runner):
427    self.LoopMixedAudio(action_runner)
428
429class Page30(ToughVideoCasesPage):
430
431  def __init__(self, page_set):
432    super(Page30, self).__init__(
433      url='file://tough_video_cases/video.html?src=tulip2.vp9.webm',
434      page_set=page_set)
435
436    self.add_browser_metrics = True
437
438  def RunMediaMetrics(self, action_runner):
439    self.PlayAction(action_runner)
440
441class Page31(ToughVideoCasesPage):
442
443  def __init__(self, page_set):
444    super(Page31, self).__init__(
445      url='file://tough_video_cases/video.html?src=tulip2.vp9.webm',
446      page_set=page_set)
447
448    self.skip_basic_metrics = True
449
450  def RunMediaMetrics(self, action_runner):
451    self.SeekBeforeAndAfterPlayhead(action_runner)
452
453class Page32(ToughVideoCasesPage):
454
455  def __init__(self, page_set):
456    super(Page32, self).__init__(
457      url='file://tough_video_cases/video.html?src=crowd1080_vp9.webm',
458      page_set=page_set)
459
460    self.add_browser_metrics = True
461
462  def RunMediaMetrics(self, action_runner):
463    self.PlayAction(action_runner)
464
465class Page33(ToughVideoCasesPage):
466
467  def __init__(self, page_set):
468    super(Page33, self).__init__(
469      url='file://tough_video_cases/video.html?src=crowd1080_vp9.webm',
470      page_set=page_set)
471
472    self.skip_basic_metrics = True
473
474  def RunMediaMetrics(self, action_runner):
475    self.SeekBeforeAndAfterPlayhead(action_runner)
476
477class Page34(ToughVideoCasesPage):
478
479  def __init__(self, page_set):
480    super(Page34, self).__init__(
481      url='file://tough_video_cases/video.html?src=crowd720_vp9.webm',
482      page_set=page_set)
483
484    self.add_browser_metrics = True
485
486  def RunMediaMetrics(self, action_runner):
487    self.PlayAction(action_runner)
488
489class Page35(ToughVideoCasesPage):
490
491  def __init__(self, page_set):
492    super(Page35, self).__init__(
493      url='file://tough_video_cases/video.html?src=crowd720_vp9.webm',
494      page_set=page_set)
495
496    self.skip_basic_metrics = True
497
498  def RunMediaMetrics(self, action_runner):
499    self.SeekBeforeAndAfterPlayhead(action_runner)
500
501class ToughVideoCasesPageSet(page_set_module.PageSet):
502
503  """
504  Description: Video Stack Perf benchmark
505  """
506  def __init__(self):
507    super(ToughVideoCasesPageSet, self).__init__(
508            bucket=page_set_module.INTERNAL_BUCKET)
509
510    self.AddPage(Page1(self))
511    self.AddPage(Page2(self))
512    self.AddPage(Page3(self))
513    self.AddPage(Page4(self))
514    self.AddPage(Page5(self))
515    self.AddPage(Page6(self))
516    self.AddPage(Page7(self))
517    self.AddPage(Page8(self))
518    self.AddPage(Page9(self))
519    self.AddPage(Page10(self))
520    self.AddPage(Page11(self))
521    self.AddPage(Page12(self))
522    self.AddPage(Page13(self))
523    self.AddPage(Page14(self))
524    self.AddPage(Page15(self))
525    self.AddPage(Page16(self))
526    self.AddPage(Page17(self))
527    self.AddPage(Page18(self))
528    self.AddPage(Page19(self))
529    self.AddPage(Page20(self))
530    self.AddPage(Page21(self))
531    self.AddPage(Page22(self))
532    self.AddPage(Page23(self))
533    self.AddPage(Page24(self))
534    self.AddPage(Page25(self))
535    self.AddPage(Page26(self))
536    self.AddPage(Page27(self))
537    self.AddPage(Page28(self))
538    self.AddPage(Page29(self))
539    self.AddPage(Page30(self))
540    self.AddPage(Page31(self))
541    self.AddPage(Page32(self))
542    self.AddPage(Page33(self))
543    self.AddPage(Page34(self))
544    self.AddPage(Page35(self))
545