[Jingle] Add converters and simplify pipelines configuration-side

This commit is contained in:
Thibaut GIRKA 2009-11-29 21:39:50 +01:00
parent 132d71b08b
commit fe67de9bf1
2 changed files with 21 additions and 18 deletions

View File

@ -252,18 +252,21 @@ class JingleAudio(JingleRTPContent):
self.p2psession.set_codec_preferences(codecs) self.p2psession.set_codec_preferences(codecs)
# the local parts # the local parts
# TODO: Add queues?
try: try:
self.sink = gst.parse_bin_from_description(gajim.config.get('audio_output_device'), True) src_bin = gst.parse_bin_from_description('%s ! audioconvert'
except: % gajim.config.get('audio_input_device'), True)
self.session.connection.dispatch('ERROR', (_("Audio configuration error"),
_("Couldn't setup audio output. Check your audio configuration.")))
try:
src_bin = gst.parse_bin_from_description(gajim.config.get('audio_input_device'), True)
except: except:
self.session.connection.dispatch('ERROR', (_("Audio configuration error"), self.session.connection.dispatch('ERROR', (_("Audio configuration error"),
_("Couldn't setup audio input. Check your audio configuration."))) _("Couldn't setup audio input. Check your audio configuration.")))
try:
self.sink = gst.parse_bin_from_description('audioconvert ! %s'
% gajim.config.get('audio_output_device'), True)
except:
self.session.connection.dispatch('ERROR', (_("Audio configuration error"),
_("Couldn't setup audio output. Check your audio configuration.")))
self.mic_volume = src_bin.get_by_name('gajim_vol') self.mic_volume = src_bin.get_by_name('gajim_vol')
self.mic_volume.set_property('volume', 1) self.mic_volume.set_property('volume', 1)
@ -291,24 +294,26 @@ class JingleVideo(JingleRTPContent):
# the local parts # the local parts
try: try:
src_bin = gst.parse_bin_from_description(gajim.config.get('video_input_device'), True) src_bin = gst.parse_bin_from_description('%s ! videoscale ! ffmpegcolorspace'
% gajim.config.get('video_input_device'), True)
except: except:
self.session.connection.dispatch('ERROR', (_("Video configuration error"), self.session.connection.dispatch('ERROR', (_("Video configuration error"),
_("Couldn't setup video input. Check your video configuration."))) _("Couldn't setup video input. Check your video configuration.")))
caps = gst.element_factory_make('capsfilter') #caps = gst.element_factory_make('capsfilter')
caps.set_property('caps', gst.caps_from_string('video/x-raw-yuv, width=320, height=240')) #caps.set_property('caps', gst.caps_from_string('video/x-raw-yuv, width=320, height=240'))
self.pipeline.add(src_bin, caps) self.pipeline.add(src_bin)#, caps)
src_bin.link(caps) #src_bin.link(caps)
try: try:
self.sink = gst.parse_bin_from_description(gajim.config.get('video_output_device'), True) self.sink = gst.parse_bin_from_description('videoscale ! ffmpegcolorspace ! %s'
% gajim.config.get('video_output_device'), True)
except: except:
self.session.connection.dispatch('ERROR', (_("Video configuration error"), self.session.connection.dispatch('ERROR', (_("Video configuration error"),
_("Couldn't setup video output. Check your video configuration."))) _("Couldn't setup video output. Check your video configuration.")))
self.pipeline.add(self.sink) self.pipeline.add(self.sink)
caps.get_pad('src').link(self.p2psession.get_property('sink-pad')) src_bin.get_pad('src').link(self.p2psession.get_property('sink-pad'))
self.p2pstream.connect('src-pad-added', self._on_src_pad_added) self.p2pstream.connect('src-pad-added', self._on_src_pad_added)
# The following is needed for farsight to process ICE requests: # The following is needed for farsight to process ICE requests:

View File

@ -78,11 +78,9 @@ class VideoInputManager(DeviceManager):
self.detect_element('videotestsrc', _('Video test'), self.detect_element('videotestsrc', _('Video test'),
'%s is-live=true') '%s is-live=true')
# Auto src # Auto src
self.detect_element('autovideosrc', _('Autodetect'), self.detect_element('autovideosrc', _('Autodetect'))
'%s ! videoscale ! ffmpegcolorspace')
# V4L2 src ; TODO: Figure out why it doesn't work # V4L2 src ; TODO: Figure out why it doesn't work
self.detect_element('v4l2src', _('V4L2: %s'), self.detect_element('v4l2src', _('V4L2: %s'))
'%s ! videoscale ! ffmpegcolorspace')
# Funny things, just to test... # Funny things, just to test...
# self.devices['GOOM'] = 'audiotestsrc ! goom' # self.devices['GOOM'] = 'audiotestsrc ! goom'
# self.devices['screen'] = 'ximagesrc' # self.devices['screen'] = 'ximagesrc'