1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)# Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)# found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import logging 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import os 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import unittest 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdochfrom telemetry import benchmark 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)from telemetry.core import bitmap 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdochfrom telemetry.core import platform 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)from telemetry.core import util 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)from telemetry.core import video 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)class VideoTest(unittest.TestCase) : 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch @benchmark.Disabled 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) def testFramesFromMp4(self): 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch host_platform = platform.GetHostPlatform() 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) try: 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch host_platform.InstallApplication('avconv') 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) finally: 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if not host_platform.CanLaunchApplication('avconv'): 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) logging.warning('Test not supported on this platform') 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return # pylint: disable=W0150 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) vid = os.path.join(util.GetUnittestDataDir(), 'vid.mp4') 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) expected_timestamps = [ 31f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 0, 32f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 763, 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 783, 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 940, 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1715, 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1732, 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1842, 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 1926, 39f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ] 40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch video_obj = video.Video(vid) 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 43f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) # Calling _FramesFromMp4 should return all frames. 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) # pylint: disable=W0212 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) for i, timestamp_bitmap in enumerate(video_obj._FramesFromMp4(vid)): 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) timestamp, bmp = timestamp_bitmap 47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) self.assertEquals(timestamp, expected_timestamps[i]) 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) expected_bitmap = bitmap.Bitmap.FromPngFile(os.path.join( 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) util.GetUnittestDataDir(), 'frame%d.png' % i)) 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) self.assertTrue(expected_bitmap.IsEqual(bmp)) 51