[Jingle] Handle description-info ; catch only glib.GError when parsing bins

This commit is contained in:
Thibaut GIRKA 2009-11-29 22:45:34 +01:00
parent fe67de9bf1
commit c44fde896f
2 changed files with 7 additions and 9 deletions

View File

@ -19,6 +19,7 @@ import gobject
import xmpp import xmpp
import farsight, gst import farsight, gst
from glib import GError
import gajim import gajim
@ -35,12 +36,12 @@ class JingleRTPContent(JingleContent):
self._dtmf_running = False self._dtmf_running = False
self.farsight_media = {'audio': farsight.MEDIA_TYPE_AUDIO, self.farsight_media = {'audio': farsight.MEDIA_TYPE_AUDIO,
'video': farsight.MEDIA_TYPE_VIDEO}[media] 'video': farsight.MEDIA_TYPE_VIDEO}[media]
self.got_codecs = False
self.candidates_ready = False # True when local candidates are prepared self.candidates_ready = False # True when local candidates are prepared
self.callbacks['session-initiate'] += [self.__on_remote_codecs] self.callbacks['session-initiate'] += [self.__on_remote_codecs]
self.callbacks['content-add'] += [self.__on_remote_codecs] self.callbacks['content-add'] += [self.__on_remote_codecs]
self.callbacks['description-info'] += [self.__on_remote_codecs]
self.callbacks['content-accept'] += [self.__on_remote_codecs, self.callbacks['content-accept'] += [self.__on_remote_codecs,
self.__on_content_accept] self.__on_content_accept]
self.callbacks['session-accept'] += [self.__on_remote_codecs, self.callbacks['session-accept'] += [self.__on_remote_codecs,
@ -177,8 +178,6 @@ class JingleRTPContent(JingleContent):
""" """
Get peer codecs from what we get from peer Get peer codecs from what we get from peer
""" """
if self.got_codecs:
return
codecs = [] codecs = []
for codec in content.getTag('description').iterTags('payload-type'): for codec in content.getTag('description').iterTags('payload-type'):
@ -197,7 +196,6 @@ class JingleRTPContent(JingleContent):
# glib.GError: There was no intersection between the remote codecs and # glib.GError: There was no intersection between the remote codecs and
# the local ones # the local ones
self.p2pstream.set_remote_codecs(codecs) self.p2pstream.set_remote_codecs(codecs)
self.got_codecs = True
def iter_codecs(self): def iter_codecs(self):
codecs = self.p2psession.get_property('codecs') codecs = self.p2psession.get_property('codecs')
@ -256,14 +254,14 @@ class JingleAudio(JingleRTPContent):
try: try:
src_bin = gst.parse_bin_from_description('%s ! audioconvert' src_bin = gst.parse_bin_from_description('%s ! audioconvert'
% gajim.config.get('audio_input_device'), True) % gajim.config.get('audio_input_device'), True)
except: except GError:
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: try:
self.sink = gst.parse_bin_from_description('audioconvert ! %s' self.sink = gst.parse_bin_from_description('audioconvert ! %s'
% gajim.config.get('audio_output_device'), True) % gajim.config.get('audio_output_device'), True)
except: except GError:
self.session.connection.dispatch('ERROR', (_("Audio configuration error"), self.session.connection.dispatch('ERROR', (_("Audio configuration error"),
_("Couldn't setup audio output. Check your audio configuration."))) _("Couldn't setup audio output. Check your audio configuration.")))
@ -296,7 +294,7 @@ class JingleVideo(JingleRTPContent):
try: try:
src_bin = gst.parse_bin_from_description('%s ! videoscale ! ffmpegcolorspace' src_bin = gst.parse_bin_from_description('%s ! videoscale ! ffmpegcolorspace'
% gajim.config.get('video_input_device'), True) % gajim.config.get('video_input_device'), True)
except: except GError:
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')
@ -308,7 +306,7 @@ class JingleVideo(JingleRTPContent):
try: try:
self.sink = gst.parse_bin_from_description('videoscale ! ffmpegcolorspace ! %s' self.sink = gst.parse_bin_from_description('videoscale ! ffmpegcolorspace ! %s'
% gajim.config.get('video_output_device'), True) % gajim.config.get('video_output_device'), True)
except: except GError:
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)

View File

@ -21,7 +21,7 @@ Handles Jingle sessions (XEP 0166)
# * security preconditions # * security preconditions
# * actions: # * actions:
# - content-modify # - content-modify
# - description-info, session-info # - session-info
# - security-info # - security-info
# - transport-accept, transport-reject # - transport-accept, transport-reject
# - Tie-breaking # - Tie-breaking