from gstmanager1.sbins.sources.videotest import VideoTestSource
from gstmanager1.sbinmanager import SBinManager

logging.basicConfig(
    level=getattr(logging, "DEBUG"),
    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
    stream=sys.stderr)

v = VideoTestSource()

s = XImageSink()

s2 = AudioTestSource()

s3 = AlsaSink()

e = OggEncoder("/tmp/test.ogg")

man = SBinManager()

man.add_many(v, s, s2, s3, e)

if __name__ == '__main__':

    pipelinel = PipelineManager(man.pipeline_desc)
    pipelinel.run()
    GObject.timeout_add(2000, pipelinel.send_eos)
    GObject.timeout_add(3500, man.get_pipeline)
    main_loop = GObject.MainLoop()
    main_loop.run()
    def evt_eos(self, event):
        # This is the callback used for every evt_MSGNAME received
        logger.info("EOS Recieved")
        self.pipelinel.stop()
        sys.exit()


def set_brightness(pipelinel, value):
    # set_property_on_element example
    pipelinel.set_property_on_element(element_name="balance", property_name="brightness", value=value)

if __name__ == '__main__':

    logging.basicConfig(
        level=getattr(logging, "DEBUG"),
        format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
        stream=sys.stderr
    )

    pipeline_desc = "videotestsrc num-buffers=100 ! videobalance name=balance ! xvimagesink"
    pipelinel = PipelineManager(pipeline_desc)
    eso_actioner = EOS_actioner(pipelinel)
    pipelinel.run()

    # Let's schedule some property changing
    GObject.timeout_add(2000, set_brightness, pipelinel, 0.2)

    main_loop = GObject.MainLoop()
    GObject.timeout_add(7000, main_loop.quit)
    main_loop.run()