class TestMultimedia(unittest.TestCase): def setUp(self): settings.configdir = tempfile.mkdtemp() self.config = Config(settings.configdir) self.manager = PluginManager(settings.configdir) self.multimedia = Multimedia(self.config, self.manager) def tearDown(self): shutil.rmtree(settings.configdir) def test_load_backend(self): self.multimedia.load_backend(filename=u"test.ogg") def test_record_functions(self): self.multimedia.load_backend(filename=u"test.ogg") self.multimedia.record() self.multimedia.pause() self.multimedia.stop()
class TestMultimedia(unittest.TestCase): def setUp(self): self.profile_manager = ProfileManager(tempfile.mkdtemp()) self.temp_video_dir = tempfile.mkdtemp() profile = self.profile_manager.get('testing') config = profile.get_config('freeseer.conf', settings.FreeseerConfig, ['Global'], read_only=True) config.videodir = self.temp_video_dir plugin_manager = PluginManager(profile) self.multimedia = Multimedia(config, plugin_manager) def tearDown(self): shutil.rmtree(self.temp_video_dir) shutil.rmtree(self.profile_manager._base_folder) def test_load_backend(self): self.multimedia.load_backend(filename=u"test.ogg") def test_record_functions(self): self.multimedia.load_backend(filename=u"test.ogg") self.multimedia.record() self.multimedia.pause() self.multimedia.stop() def test_current_state_is_record(self): self.multimedia.record() self.assertEqual(self.multimedia.current_state, self.multimedia.RECORD) self.assertEqual(self.multimedia.player.get_state()[1], gst.STATE_PLAYING) def test_current_state_is_pause(self): self.multimedia.pause() self.assertEqual(self.multimedia.current_state, self.multimedia.PAUSE) self.assertEqual(self.multimedia.player.get_state()[1], gst.STATE_PAUSED) def test_current_state_is_not_stop(self): self.multimedia.player.set_state(gst.STATE_NULL) self.multimedia.stop() self.assertNotEqual(self.multimedia.current_state, self.multimedia.STOP) self.assertEqual(self.multimedia.player.get_state()[1], gst.STATE_NULL)
class TestMultimedia(unittest.TestCase): def setUp(self): self.profile_manager = ProfileManager(tempfile.mkdtemp()) profile = self.profile_manager.get('testing') config = profile.get_config('freeseer.conf', settings.FreeseerConfig, ['Global'], read_only=True) plugin_manager = PluginManager(profile) self.multimedia = Multimedia(config, plugin_manager) def tearDown(self): shutil.rmtree(self.profile_manager._base_folder) def test_load_backend(self): self.multimedia.load_backend(filename=u"test.ogg") def test_record_functions(self): self.multimedia.load_backend(filename=u"test.ogg") self.multimedia.record() self.multimedia.pause() self.multimedia.stop()
class TestMultimedia(unittest.TestCase): def setUp(self): self.profile_manager = ProfileManager(tempfile.mkdtemp()) self.temp_video_dir = tempfile.mkdtemp() profile = self.profile_manager.get('testing') config = profile.get_config('freeseer.conf', settings.FreeseerConfig, ['Global'], read_only=True) config.videodir = self.temp_video_dir plugin_manager = PluginManager(profile) self.multimedia = Multimedia(config, plugin_manager) def tearDown(self): shutil.rmtree(self.temp_video_dir) shutil.rmtree(self.profile_manager._base_folder) def test_load_backend(self): self.multimedia.load_backend(filename=u"test.ogg") def test_record_functions(self): self.multimedia.load_backend(filename=u"test.ogg") self.multimedia.record() self.multimedia.pause() self.multimedia.stop() def test_current_state_is_record(self): self.multimedia.record() self.assertEqual(self.multimedia.current_state, self.multimedia.RECORD) self.assertEqual(self.multimedia.player.get_state()[1], gst.STATE_PLAYING) def test_current_state_is_pause(self): self.multimedia.pause() self.assertEqual(self.multimedia.current_state, self.multimedia.PAUSE) self.assertEqual(self.multimedia.player.get_state()[1], gst.STATE_PAUSED) def test_current_state_is_not_stop(self): self.multimedia.player.set_state(self.multimedia.NULL) # set to NULL self.multimedia.stop() self.assertNotEqual(self.multimedia.current_state, self.multimedia.STOP) self.assertEqual(self.multimedia.player.get_state()[1], gst.STATE_NULL)
class RecordingController: def __init__(self, profile, db, config, cli=False): self.config = config self.db = db self.plugman = PluginManager(profile) self.media = Multimedia(self.config, self.plugman, cli=cli) def set_window_id(self, window_id): """Sets the Window ID which GStreamer should paint on""" self.media.set_window_id(window_id) def set_audio_feedback_handler(self, audio_feedback_handler): """Sets the handler for Audio Feedback levels""" self.media.set_audio_feedback_handler(audio_feedback_handler) def record(self): """Start Recording""" self.media.record() def stop(self): """Stop Recording""" self.media.stop() def pause(self): """Pause Recording""" self.media.pause() def load_backend(self, presentation=None): """Prepares the backend for recording""" initialized, filename_for_frontend = self.media.load_backend(presentation) if initialized: return True, filename_for_frontend else: return False # Error something failed while loading the backend def print_talks(self): query = self.db.get_talks() # Print the header print("\n") print("ID: Speaker - Title") print("-------------------") while(query.next()): talkid = unicode(query.value(0).toString()) title = unicode(query.value(1).toString()) speaker = unicode(query.value(2).toString()) print("{talkid}: {speaker} - {title}".format(talkid=talkid, speaker=speaker, title=title)) ### ### Convenience commands ### def record_talk_id(self, talk_id): """Records using a known Talk ID Returns True if recording is successfully started Returns False if any issues arise """ presentation = self.db.get_presentation(talk_id) if self.media.load_backend(presentation): # Only record if the backend successfully loaded # No need to print error on failure since load_backend already # prints an error message self.record() return True else: return False def record_filename(self, filename): """Records to a specific filename Returns True if recording is successfully started Returns False if any issues arise """ if self.media.load_backend(filename=filename): self.record() return True else: return False
class RecordingController: def __init__(self, profile, db, config, cli=False): self.config = config self.db = db self.plugman = PluginManager(profile) self.media = Multimedia(self.config, self.plugman, cli=cli) def set_window_id(self, window_id): """Sets the Window ID which GStreamer should paint on""" self.media.set_window_id(window_id) def set_audio_feedback_handler(self, audio_feedback_handler): """Sets the handler for Audio Feedback levels""" self.media.set_audio_feedback_handler(audio_feedback_handler) def record(self): """Start Recording""" self.media.record() def stop(self): """Stop Recording""" self.media.stop() def pause(self): """Pause Recording""" self.media.pause() def load_backend(self, presentation=None): """Prepares the backend for recording""" initialized, filename_for_frontend = self.media.load_backend( presentation) if initialized: return True, filename_for_frontend else: return False # Error something failed while loading the backend def print_talks(self): query = self.db.get_talks() # Print the header print("\n") print("ID: Speaker - Title") print("-------------------") while (query.next()): talkid = unicode(query.value(0).toString()) title = unicode(query.value(1).toString()) speaker = unicode(query.value(2).toString()) print("{talkid}: {speaker} - {title}".format(talkid=talkid, speaker=speaker, title=title)) ### ### Convenience commands ### def record_talk_id(self, talk_id): """Records using a known Talk ID Returns True if recording is successfully started Returns False if any issues arise """ presentation = self.db.get_presentation(talk_id) if self.media.load_backend(presentation): # Only record if the backend successfully loaded # No need to print error on failure since load_backend already # prints an error message self.record() return True else: return False def record_filename(self, filename): """Records to a specific filename Returns True if recording is successfully started Returns False if any issues arise """ if self.media.load_backend(filename=filename): self.record() return True else: return False