Package sparked :: Package test :: Module test_video
[hide private]
[frames] | no frames]

Source Code for Module sparked.test.test_video

  1  # Copyright (c) 2010 Arjan Scherpenisse 
  2  # See LICENSE for details. 
  3   
  4  """ 
  5  Tests for sparked.hardware.video 
  6   
  7  Maintainer: Arjan Scherpenisse 
  8  """ 
  9   
 10  import gst 
 11   
 12  from twisted.trial import unittest 
 13   
 14  from sparked.hardware import video 
 15   
16 -class TestVideoUtil(unittest.TestCase):
17 """ 18 Test the L{sparked.graphics.video} 19 """ 20
21 - def testParseResolution(self):
22 23 self.assertEqual( (640, 480), video.parseResolution("640x480")) 24 self.assertEqual( (320, 480), video.parseResolution("320x480")) 25 self.assertRaises( ValueError, video.parseResolution, "680x") 26 self.assertRaises( ValueError, video.parseResolution, "680xBlah") 27 self.assertRaises( ValueError, video.parseResolution, "blah")
28 29
30 -class TestVideoDevices(unittest.TestCase):
31 32
33 - def testSelectBest(self):
34 dev = video.V4LDevice("/dev/zero") 35 36 dev._resolutions = [] 37 dev._resolutions.append( {"mime": "image/jpeg"}) 38 self.assertEqual("image/jpeg", dev.getBestMime()) 39 40 dev._resolutions = [] 41 dev._resolutions.append( {"mime": "video/x-raw-rgb"}) 42 dev._resolutions.append( {"mime": "video/x-raw-yuv"}) 43 self.assertEqual("video/x-raw-yuv", dev.getBestMime()) 44 45 dev._resolutions = [] 46 dev._resolutions.append( {"width": 320, "height": 240}) 47 dev._resolutions.append( {"width": 321, "height": 241}) 48 self.assertEqual({"width": 321, "height": 241}, dev.getHighestResolution()) 49 self.assertEqual({"width": 321, "height": 241}, dev.getResolution("auto")) 50 self.assertEqual({"width": 321, "height": 241}, dev.getResolution("highest")) 51 52 dev._resolutions = [] 53 dev._resolutions.append( {"width": 320, "height": 240, "framerate": gst.Fraction(10,1)}) 54 dev._resolutions.append( {"width": 320, "height": 240, "framerate": gst.Fraction(15,1)}) 55 dev._resolutions.append( {"width": 320, "height": 240, "framerate": gst.Fraction(30,1)}) 56 self.assertEqual({"width": 320, "height": 240, "framerate": gst.Fraction(30,1)}, dev.getHighestResolution()) 57 58 dev._resolutions = [] 59 dev._resolutions.append( {"width": 320, "height": 240, "framerate": gst.Fraction(10,1), "mime": "video/x-raw-yuv"}) 60 dev._resolutions.append( {"width": 320, "height": 240, "framerate": gst.Fraction(10,1), "mime": "image/jpeg"}) 61 dev._resolutions.append( {"width": 320, "height": 240, "framerate": gst.Fraction(10,1), "mime": "video/x-raw-rgb"}) 62 self.assertEqual({"width": 320, "height": 240, "framerate": gst.Fraction(10,1), "mime": "image/jpeg"}, dev.getHighestResolution()) 63 64 dev._resolutions = [] 65 dev._resolutions.append( {"mime": "image/jpeg", "width": 320, "height": 240}) 66 dev._resolutions.append( {"mime": "video/x-raw-rgb", "width": 1000, "height": 1000}) 67 dev._resolutions.append( {"mime": "image/jpeg", "width": 321, "height": 241}) 68 self.assertEqual({"mime": "image/jpeg", "width": 321, "height": 241}, dev.getHighestResolution(mime="image/jpeg")) 69 self.assertEqual({"mime": "image/jpeg", "width": 321, "height": 241}, dev.getResolution("auto", mime="image/jpeg")) 70 self.assertEqual({"mime": "image/jpeg", "width": 321, "height": 241}, dev.getResolution("highest", mime="image/jpeg")) 71 72 73 dev._resolutions = [] 74 dev._resolutions.append( {"mime": "image/jpeg", "framerate": gst.Fraction(10,1)}) 75 dev._resolutions.append( {"mime": "image/jpeg", "framerate": gst.Fraction(11,1)}) 76 self.assertEqual({"mime": "image/jpeg", "framerate": gst.Fraction(11,1)}, dev.getFastestResolution()) 77 self.assertEqual({"mime": "image/jpeg", "framerate": gst.Fraction(11,1)}, dev.getResolution("fastest")) 78 79 80 dev._resolutions = [] 81 dev._resolutions.append( {"mime": "image/jpeg", "framerate": gst.Fraction(10,1), "width": 10, "height": 10}) 82 dev._resolutions.append( {"mime": "image/jpeg", "framerate": gst.Fraction(10,1), "width": 11, "height": 11}) 83 dev._resolutions.append( {"mime": "image/jpeg", "framerate": gst.Fraction(10,1), "width": 20, "height": 20}) 84 self.assertEqual({"mime": "image/jpeg", "framerate": gst.Fraction(10,1), "width": 20, "height": 20}, dev.getFastestResolution()) 85 86 87 dev._resolutions = [] 88 dev._resolutions.append( {"mime": "image/jpeg", "framerate": gst.Fraction(10,1)}) 89 dev._resolutions.append( {"mime": "video/blah", "framerate": gst.Fraction(30,1)}) 90 dev._resolutions.append( {"mime": "image/jpeg", "framerate": gst.Fraction(11,1)}) 91 self.assertEqual({"mime": "image/jpeg", "framerate": gst.Fraction(11,1)}, dev.getFastestResolution(mime="image/jpeg")) 92 self.assertEqual({"mime": "image/jpeg", "framerate": gst.Fraction(11,1)}, dev.getResolution("fastest", mime="image/jpeg")) 93 94 dev._resolutions = [] 95 self.assertEqual(None, dev.getResolution("320x240")) 96 97 dev._resolutions = [] 98 self.assertEqual(None, dev.getResolution("320x240", "image/jpeg")) 99 100 dev._resolutions = [] 101 dev._resolutions.append( {"width": 320, "height": 240, "mime": "video/x-raw-rgb"}) 102 dev._resolutions.append( {"width": 320, "height": 240, "mime": "video/x-raw-yuv"}) 103 dev._resolutions.append( {"width": 320, "height": 240, "mime": "video/x-raw-rgb"}) 104 self.assertEqual({"width": 320, "height": 240, "mime": "video/x-raw-yuv"}, dev.getResolution("320x240")) 105 106 dev._resolutions = [] 107 dev._resolutions.append( {"width": 320, "height": 240, "mime": "image/jpeg"}) 108 dev._resolutions.append( {"width": 320, "height": 240, "mime": "video/x-raw-yuv"}) 109 dev._resolutions.append( {"width": 320, "height": 240, "mime": "video/x-raw-rgb"}) 110 self.assertEqual({"width": 320, "height": 240, "mime": "image/jpeg"}, dev.getResolution("320x240")) 111 112 dev._resolutions = [] 113 dev._resolutions.append( {"width": 321, "height": 240, "mime": "image/jpeg"}) 114 dev._resolutions.append( {"width": 321, "height": 240, "mime": "video/x-raw-yuv"}) 115 dev._resolutions.append( {"width": 320, "height": 240, "mime": "video/x-raw-rgb"}) 116 self.assertEqual({"width": 320, "height": 240, "mime": "video/x-raw-rgb"}, dev.getResolution("320x240")) 117 118 dev._resolutions = [] 119 dev._resolutions.append( {"width": 321, "height": 240, "mime": "image/jpeg"}) 120 dev._resolutions.append( {"width": 321, "height": 240, "mime": "video/x-raw-yuv"}) 121 dev._resolutions.append( {"width": 320, "height": 240, "mime": "video/x-raw-rgb"}) 122 self.assertEqual(None, dev.getResolution("320x240", "image/jpeg")) 123 124 dev._resolutions = [] 125 dev._resolutions.append( {"width": 321, "height": 240, "mime": "video/x-raw-yuv"}) 126 dev._resolutions.append( {"width": 320, "height": 240, "mime": "video/x-raw-rgb"}) 127 dev._resolutions.append( {"width": 320, "height": 240, "mime": "image/jpeg"}) 128 self.assertEqual({"width": 320, "height": 240, "mime": "image/jpeg"}, dev.getResolution("320x240", "image/jpeg"))
129 130
131 - def testGetPipeline(self):
132 dev = video.V4LDevice("/dev/zero") 133 134 dev._resolutions = [] 135 self.assertRaises(ValueError, dev.getPipeline) 136 137 dev._resolutions = [] 138 dev._resolutions.append( {"width": 320, "height": 240, "mime": "image/jpeg", "framerate": gst.Fraction(30,1)}) 139 dev._resolutions.append( {"width": 640, "height": 480, "mime": "image/jpeg", "framerate": gst.Fraction(15,1)}) 140 self.assertEqual("v4l2src device=/dev/zero ! image/jpeg,width=640,height=480,framerate=15/1", dev.getPipeline()) 141 142 dev._resolutions = [] 143 dev._resolutions.append( {"width": 320, "height": 240, "mime": "image/jpeg", "framerate": gst.Fraction(30,1)}) 144 self.assertEqual("v4l2src device=/dev/zero ! image/jpeg,width=320,height=240,framerate=30/1", dev.getPipeline()) 145 self.assertEqual("v4l2src device=/dev/zero ! image/jpeg,width=320,height=240,framerate=30/1 ! jpegdec ! video/x-raw-rgb", 146 dev.getPipeline(outputMime="video/x-raw-rgb")) 147 148 149 dev._resolutions = [] 150 dev._resolutions.append( {"width": 320, "height": 240, "mime": "image/jpeg", "framerate": gst.Fraction(30,1)}) 151 dev._resolutions.append( {"width": 640, "height": 480, "mime": "image/jpeg", "framerate": gst.Fraction(15,1)}) 152 self.assertEqual("v4l2src device=/dev/zero ! image/jpeg,width=640,height=480,framerate=15/1", dev.getPipeline()) 153 154 dev._resolutions = [] 155 dev._resolutions.append( {"width": 320, "height": 240, "mime": "image/jpeg", "framerate": gst.Fraction(30,1)}) 156 dev._resolutions.append( {"width": 640, "height": 480, "mime": "image/jpeg", "framerate": gst.Fraction(15,1)}) 157 self.assertEqual("v4l2src device=/dev/zero ! image/jpeg,width=640,height=480,framerate=15/1", dev.getPipeline()) 158 159 dev._resolutions = [] 160 dev._resolutions.append( {"width": 320, "height": 240, "mime": "image/jpeg", "framerate": gst.Fraction(30,1)}) 161 dev._resolutions.append( {"width": 640, "height": 480, "mime": "image/jpeg", "framerate": gst.Fraction(30,1)}) 162 self.assertEqual("v4l2src device=/dev/zero ! image/jpeg,width=640,height=480,framerate=30/1", dev.getPipeline()) 163 164 165 dev._resolutions = [] 166 dev._resolutions.append( {"width": 640, "height": 480, "mime": "video/x-raw-rgb", "framerate": gst.Fraction(30,1)}) 167 dev._resolutions.append( {"width": 640, "height": 480, "mime": "video/x-raw-yuv", "framerate": gst.Fraction(30,1)}) 168 self.assertEqual("v4l2src device=/dev/zero ! video/x-raw-yuv,width=640,height=480,framerate=30/1", dev.getPipeline()) 169 self.assertEqual("v4l2src device=/dev/zero ! video/x-raw-yuv,width=640,height=480,framerate=30/1 ! ffmpegcolorspace ! video/x-raw-rgb", dev.getPipeline("video/x-raw-rgb"))
170