def setup(self): self.bitrate.data_type = int self.quality.data_type = int self.noise_sensitivity.data_type = int self.keyframe_delta.data_type = float self.sharpness.data_type = int self.has_quality.data_type = bool self.has_bitrate.data_type = bool self.add_proxy(self.model, ['has_quality', 'has_bitrate']) self.add_proxy(self.model.properties, ['bitrate', 'quality', 'keyframe_delta', 'noise_sensitivity', 'sharpness']) # we specify keyframe_delta in seconds, but theora expects # a number of frames, so we need the framerate and calculate # we need to go through the Step (which is the view) because models # don't have references to other models producer = self.wizard.getScenario().getVideoProducer(self.wizard) self.model.framerate = fractionAsFloat(producer.getFramerate()) self.debug('Framerate of video producer: %r' % self.model.framerate) step = 1 / self.model.framerate page = 1.0 self.keyframe_delta.set_increments(step, page)
def setup(self): self.qmin.data_type = int self.qmax.data_type = int self.threshold.data_type = int self.keyframe_interval.data_type = float producer = self.wizard.getScenario().getVideoProducer(self.wizard) self.model.framerate = fractionAsFloat(producer.getFramerate()) self.model.keyframe_interval = 20 / self.model.framerate self.add_proxy(self.model.properties, ['qmin', 'qmax', 'threshold']) self.add_proxy(self.model, ['keyframe_interval']) step = 1 / self.model.framerate page = 1.0 self.keyframe_interval.set_increments(step, page)
def _updateFramerate(self): if self._inSetup: return None framerate = self.framerate.get_selected() if framerate: num, denom = framerate['framerate'] mime = framerate['mime'] format = framerate.get('format', None) else: self.warning('something bad happened: no framerate selected?') num, denom = 15, 2 mime = 'video/x-raw-yuv' format = None self.model.properties.mime = mime self.model.properties.framerate = fractionAsFloat((num, denom)) if format: self.model.properties.format = format
def setup(self): self.bitrate.data_type = int self.quality.data_type = int self.keyframe_delta.data_type = float self.option_string.data_type = str self.add_proxy( self.model.properties, ['bitrate', 'quality', 'keyframe_delta', 'option_string']) # we specify keyframe_delta in seconds, but x264 expects # a number of frames, so we need the framerate and calculate # we need to go through the Step (which is the view) because models # don't have references to other models producer = self.wizard.getScenario().getVideoProducer(self.wizard) self.model.framerate = fractionAsFloat(producer.getFramerate()) self.debug('Framerate of video producer: %r' % self.model.framerate) step = 1 / self.model.framerate page = 1.0 self.keyframe_delta.set_increments(step, page)
def testFractionAsFloat(self): self.assertEquals(fractionAsFloat((10, 10)), 1) self.assertEquals(fractionAsFloat((4, 5)), 0.8)