Example #1
0
 def tryV4L1(_):
     log.debug('webcam', 'trying v4l1')
     pipeline = 'v4lsrc name=source device=%s ! fakesink' % (device, )
     d = do_element_check(pipeline,
                          'source',
                          probeDevice,
                          state=gst.STATE_PAUSED,
                          set_state_deferred=True)
     return d
Example #2
0
def checkDVBVideo(p, mid='check-dvb-video'):
    """
    @rtype: L{twisted.internet.defer.Deferred}
    """
    result = messages.Result()

    def get_dvb_video_params(element):
        pad = element.get_pad('src')

        if pad.get_negotiated_caps() == None:
            raise errors.GStreamerError('Pipeline failed to negotiate?')

        caps = pad.get_negotiated_caps()
        s = caps[0]
        w = s['width']
        h = s['height']
        par = s['pixel-aspect-ratio']
        fr = s['framerate']
        result = dict(width=w, height=h, par=(par.num, par.denom),
                      framerate=(fr.num, fr.denom))

        log.debug('check', 'returning dict %r' % result)
        return result


    if p.get('dvb_type') == "T":
        pipeline = ("dvbsrc modulation=\"QAM %(modulation)d\" "
                    "trans-mode=%(trans_mode)s bandwidth=%(bandwidth)d "
                    "code-rate-lp=%(code_rate_lp)s "
                    "code-rate-hp=%(code_rate_hp)s "
                    "guard=%(guard)d hierarchy=%(hierarchy)d ") % p
    elif p.get('dvb_type') == "S":
        pipeline = ("dvbsrc polarity=%(polarity)s symbol-rate=%(symbol_rate)s "
                    "diseqc-source=%(sat)d ") % p
        if p.get('code-rate-hp'):
            pipeline += " code-rate-hp=%s" % p.get('code_rate_hp')
    elif p.get('dvb_type') == "C":
        pipeline = ("dvbsrc modulation=\"QAM %(modulation)d\" "
                    "code-rate-hp=%(code_rate_hp)s ") % p

    if p.get('dvb_type') in ["S", "T", "C"]:
        pipeline += ("frequency=%d adapter=%d frontend=%d " %
                     (p.get('frequency'), p.get('adapter'), p.get('frontend')))


    pipeline += ("! mpegtsdemux program-number=%d "
                 "! mpegvideoparse name=parser ! fakesink" %
                 p.get('program_number'))

    log.debug('check', 'Using pipeline: %s', pipeline)

    d = do_element_check(pipeline, 'parser', get_dvb_video_params)
    d.addCallback(check.callbackResult, result)
    return d
Example #3
0
    def tryV4L2():
        log.debug('webcam', 'trying v4l2')
        version = gstreamer.get_plugin_version('video4linux2')
        minVersion = (0, 10, 5, 1)
        if not version or version < minVersion:
            log.info('webcam', 'v4l2 version %r too old (need >=%r)',
                     version, minVersion)
            return defer.fail(NotImplementedError())

        pipeline = 'v4l2src name=source device=%s ! fakesink' % (device, )
        d = do_element_check(pipeline, 'source', probeDevice,
                             state=gst.STATE_PAUSED, set_state_deferred=True)
        return d
Example #4
0
    def tryV4L2():
        log.debug('webcam', 'trying v4l2')
        version = gstreamer.get_plugin_version('video4linux2')
        minVersion = (0, 10, 5, 1)
        if not version or version < minVersion:
            log.info('webcam', 'v4l2 version %r too old (need >=%r)', version,
                     minVersion)
            return defer.fail(NotImplementedError())

        pipeline = 'v4l2src name=source device=%s ! fakesink' % (device, )
        d = do_element_check(pipeline,
                             'source',
                             probeDevice,
                             state=gst.STATE_PAUSED,
                             set_state_deferred=True)
        return d
Example #5
0
def checkTVCard(device, mid='check-tvcard'):
    """
    Probe the given device node as a TV card.
    Return a deferred firing a human-readable device name, a list of channel
    names (Tuner/Composite/...), and a list of norms (PAL/NTSC/SECAM/...).

    @rtype: L{twisted.internet.defer.Deferred}
    """
    result = messages.Result()

    def get_name_channels_norms(element):
        deviceName = element.get_property('device-name')
        channels = [channel.label for channel in element.list_channels()]
        norms = [norm.label for norm in element.list_norms()]
        return (deviceName, channels, norms)

    pipeline = 'v4lsrc name=source device=%s ! fakesink' % device
    d = do_element_check(pipeline, 'source', get_name_channels_norms)

    d.addCallback(check.callbackResult, result)
    d.addErrback(check.errbackNotFoundResult, result, mid, device)
    d.addErrback(check.errbackResult, result, mid, device)

    return d
Example #6
0
def checkTVCard(device, mid='check-tvcard'):
    """
    Probe the given device node as a TV card.
    Return a deferred firing a human-readable device name, a list of channel
    names (Tuner/Composite/...), and a list of norms (PAL/NTSC/SECAM/...).

    @rtype: L{twisted.internet.defer.Deferred}
    """
    result = messages.Result()

    def get_name_channels_norms(element):
        deviceName = element.get_property('device-name')
        channels = [channel.label for channel in element.list_channels()]
        norms = [norm.label for norm in element.list_norms()]
        return (deviceName, channels, norms)

    pipeline = 'v4lsrc name=source device=%s ! fakesink' % device
    d = do_element_check(pipeline, 'source', get_name_channels_norms)

    d.addCallback(check.callbackResult, result)
    d.addErrback(check.errbackNotFoundResult, result, mid, device)
    d.addErrback(check.errbackResult, result, mid, device)

    return d
Example #7
0
 def tryV4L1(_):
     log.debug('webcam', 'trying v4l1')
     pipeline = 'v4lsrc name=source device=%s ! fakesink' % (device, )
     d = do_element_check(pipeline, 'source', probeDevice,
                          state=gst.STATE_PAUSED, set_state_deferred=True)
     return d