![]() |
![]() |
![]() |
Farsight2 Reference Manual | ![]() |
---|---|---|---|---|
enum FsDTMFEvent; enum FsDTMFMethod; FsSession; FsSessionClass; FsStream* fs_session_new_stream (FsSession *session, FsParticipant *participant, FsStreamDirection direction, const gchar *transmitter, guint stream_transmitter_n_parameters, GParameter *stream_transmitter_parameters, GError **error); gboolean fs_session_start_telephony_event (FsSession *session, guint8 event, guint8 volume, FsDTMFMethod method); gboolean fs_session_stop_telephony_event (FsSession *session, FsDTMFMethod method); gboolean fs_session_set_send_codec (FsSession *session, FsCodec *send_codec, GError **error); void fs_session_emit_error (FsSession *session, gint error_no, gchar *error_msg, gchar *debug_msg);
"current-send-codec" FsCodec : Read "id" guint : Read / Write / Construct Only "local-codecs" FsCodecGList : Read "local-codecs-config" FsCodecGList : Read / Write "media-type" FsMediaType : Read / Write / Construct Only "negotiated-codecs" FsCodecGList : Read "sink-pad" GstPad : Read
This object is the base implementation of a Farsight Session. It needs to be derived and implemented by a farsight conference gstreamer element. A Farsight session is defined in the same way as an RTP session. It can contain one or more participants but represents only one media stream (i.e. One session for video and one session for audio in an AV conference). Sessions contained in the same conference will be synchronised together during playback.
typedef enum { FS_DTMF_EVENT_0 = 0, FS_DTMF_EVENT_1 = 1, FS_DTMF_EVENT_2 = 2, FS_DTMF_EVENT_3 = 3, FS_DTMF_EVENT_4 = 4, FS_DTMF_EVENT_5 = 5, FS_DTMF_EVENT_6 = 6, FS_DTMF_EVENT_7 = 7, FS_DTMF_EVENT_8 = 8, FS_DTMF_EVENT_9 = 9, FS_DTMF_EVENT_STAR = 10, FS_DTMF_EVENT_POUND = 11, FS_DTMF_EVENT_A = 12, FS_DTMF_EVENT_B = 13, FS_DTMF_EVENT_C = 14, FS_DTMF_EVENT_D = 15 } FsDTMFEvent;
An enum that represents the different DTMF event that can be sent to a FsSession. The values corresponds those those defined in RFC 4733 The rest of the possibles values are in the IANA registry at: http://www.iana.org/assignments/audio-telephone-event-registry
typedef enum { FS_DTMF_METHOD_AUTO = 0, FS_DTMF_METHOD_RTP_RFC4733, FS_DTMF_METHOD_IN_BAND } FsDTMFMethod;
An enum that represents the different ways a DTMF event can be sent
typedef struct _FsSession FsSession;
All members are private, access them using methods and properties
typedef struct { GObjectClass parent_class; /*virtual functions */ FsStream *(* new_stream) (FsSession *session, FsParticipant *participant, FsStreamDirection direction, const gchar *transmitter, guint stream_transmitter_n_parameters, GParameter *stream_transmitter_parameters, GError **error); gboolean (* start_telephony_event) (FsSession *session, guint8 event, guint8 volume, FsDTMFMethod method); gboolean (* stop_telephony_event) (FsSession *session, FsDTMFMethod method); gboolean (* set_send_codec) (FsSession *session, FsCodec *send_codec, GError **error); } FsSessionClass;
You must override at least new_stream in a subclass.
GObjectClass |
Our parent |
|
Create a new FsStream |
|
Starts a telephony event |
|
Stops a telephony event |
|
Forces sending with a specific codec |
FsStream* fs_session_new_stream (FsSession *session, FsParticipant *participant, FsStreamDirection direction, const gchar *transmitter, guint stream_transmitter_n_parameters, GParameter *stream_transmitter_parameters, GError **error);
This function creates a stream for the given participant into the active session.
|
an FsSession |
|
FsParticipant of a participant for the new stream |
|
FsStreamDirection describing the direction of the new stream that will be created for this participant |
|
Name of the type of transmitter to use for this session |
|
Number of parametrs passed to the stream transmitter |
|
an array of n_parameters GParameter struct that will be passed to the newly-create FsStreamTransmitter |
|
location of a GError, or NULL if no error occured
|
Returns : |
the new FsStream that has been created. User must unref the FsStream when the stream is ended. If an error occured, returns NULL. |
gboolean fs_session_start_telephony_event (FsSession *session, guint8 event, guint8 volume, FsDTMFMethod method);
This function will start sending a telephony event (such as a DTMF
tone) on the FsSession. You have to call the function
fs_session_stop_telephony_event()
to stop it.
This function will use any available method, if you want to use a specific
method only, use fs_session_start_telephony_event_full()
|
an FsSession |
|
A FsStreamDTMFEvent or another number defined at http://www.iana.org/assignments/audio-telephone-event-registry |
|
The volume in dBm0 without the negative sign. Should be between 0 and 36. Higher values mean lower volume |
|
The method used to send the event |
Returns : |
TRUE if sucessful, it can return FALSE if the FsStream
does not support this telephony event.
|
gboolean fs_session_stop_telephony_event (FsSession *session, FsDTMFMethod method);
This function will stop sending a telephony event started by
fs_session_start_telephony_event()
. If the event was being sent
for less than 50ms, it will be sent for 50ms minimum. If the
duration was a positive and the event is not over, it will cut it
short.
gboolean fs_session_set_send_codec (FsSession *session, FsCodec *send_codec, GError **error);
This function will set the currently being sent codec for all streams in this
session. The given FsCodec must be taken directly from the negotiated-codecs
property of the session. If the given codec is not in the negotiated codecs
list, error
will be set and FALSE
will be returned. The send_codec
will be
copied so it must be free'd using fs_codec_destroy()
when done.
void fs_session_emit_error (FsSession *session, gint error_no, gchar *error_msg, gchar *debug_msg);
This function emit the "error" signal on a FsSession, it should only be called by subclasses.
|
FsSession on which to emit the error signal |
|
The number of the error |
|
Error message to be displayed to user |
|
Debugging error message |
current-send-codec
" property"current-send-codec" FsCodec : Read
Indicates the currently active send codec. A user can change the active
send codec by calling fs_session_set_send_codec()
. The send codec could
also be automatically changed by Farsight. In both cases the
::send-codec-changed signal will be emited. This property is an
FsCodec. User must free the codec using fs_codec_destroy()
when done.
The FsSession::send-codec-changed signal is emitted when the content
of this property changes.
id
" property"id" guint : Read / Write / Construct Only
The ID of the session, the first number of the pads linked to this session will be this id
Default value: 0
local-codecs
" property"local-codecs" FsCodecGList : Read
This is the list of local codecs that have been auto-detected based on
installed GStreamer plugins. This list is unchanged during the lifecycle of
the session unless local-codecs-config is changed by the user. It is a
GList of FsCodec. User must free this codec list using
fs_codec_list_destroy()
when done.
local-codecs-config
" property"local-codecs-config" FsCodecGList : Read / Write
This is the current configuration list for the local codecs. It is usually
set by the user to specify the codec options and priorities. The user may
change this value during an ongoing session. Note that doing this can cause
the local-codecs to be changed. Therefore this requires the user to fetch
the new local-codecs and renegotiate them with the peers. It is a GList
of FsCodec. User must free this codec list using fs_codec_list_destroy()
when done.
media-type
" property"media-type" FsMediaType : Read / Write / Construct Only
The media-type of the session. This is either Audio, Video or both. This is a constructor parameter that cannot be changed.
Default value: FS_MEDIA_TYPE_AUDIO
negotiated-codecs
" property"negotiated-codecs" FsCodecGList : Read
This list indicated what codecs have been successfully negotiated with the
session participants. This list can change based on participants
joining/leaving the session. It is a GList of FsCodec. User must free
this codec list using fs_codec_list_destroy()
when done.
The FsSession::new-negotiated-codecs signal is emited when the content
of this property changes.
sink-pad
" property"sink-pad" GstPad : Read
The Gstreamer sink pad that must be used to send media data on this session. User must unref this GstPad when done with it.
void user_function (FsSession *self, GObject *object, gint error_no, gchar *error_msg, gchar *debug_msg, gpointer user_data) : Run Last
This signal is emitted in any error condition, it can be emitted on any thread. Applications should listen to the GstBus for errors.
|
FsSession that emitted the signal |
|
The Gobject that emitted the signal |
|
The number of the error |
|
Error message to be displayed to user |
|
Debugging error message |
|
user data set when the signal handler was connected. |
void user_function (FsSession *self, gpointer user_data) : Run Last
This signal is emitted when the negotiated codecs list has changed for this session. This can happen when new remote codecs are added to the session (i.e. When a session is being initialized or a new participant joins an existing session). The user should look at the FsSession:negotiated-codecs property to determine what the new negotiated codec list is.
|
FsSession that emitted the signal |
|
user data set when the signal handler was connected. |
void user_function (FsSession *self, gpointer user_data) : Run Last
This signal is emitted when the active send codec has been changed manually by the user or automatically for QoS purposes. The user should look at the FsSession:current-send-codec property in the session to determine what the new active codec is
|
FsSession that emitted the signal |
|
user data set when the signal handler was connected. |