WockyJingleMediaRtp

## WockyJingleMediaRtp WockyJingleMediaRtp |

## Synopsis

    struct              WockyJingleMediaRtpClass;
                        WockyJingleCodec;
                        WockyJingleFeedbackMessage;
                        WockyJingleRtpHeaderExtension;
                        WockyJingleMediaDescription;
    void                jingle_media_rtp_register           (WockyJingleFactory *factory);
    gboolean            jingle_media_rtp_set_local_media_description
                                                            (WockyJingleMediaRtp *self,
                                                             WockyJingleMediaDescription *md,
                                                             gboolean ready,
                                                             GError **error);
    WockyJingleMediaDescription * wocky_jingle_media_rtp_get_remote_media_description
                                                            (WockyJingleMediaRtp *self);
    WockyJingleCodec *  jingle_media_rtp_codec_new          (guint id,
                                                             const gchar *name,
                                                             guint clockrate,
                                                             guint channels,
                                                             GHashTable *params);
    void                jingle_media_rtp_codec_free         (WockyJingleCodec *p);
    void                jingle_media_rtp_free_codecs        (GList *codecs);
    GList *             jingle_media_rtp_copy_codecs        (GList *codecs);
    gboolean            jingle_media_rtp_compare_codecs     (GList *old,
                                                             GList *new,
                                                             GList **changed,
                                                             GError **e);
    WockyJingleMediaDescription * wocky_jingle_media_description_new
                                                            (void);
    void                wocky_jingle_media_description_free (WockyJingleMediaDescription *md);
    WockyJingleMediaDescription * wocky_jingle_media_description_copy
                                                            (WockyJingleMediaDescription *md);
    WockyJingleRtpHeaderExtension * wocky_jingle_rtp_header_extension_new
                                                            (guint id,
                                                             WockyJingleContentSenders senders,
                                                             const gchar *uri);
    void                wocky_jingle_rtp_header_extension_free
                                                            (WockyJingleRtpHeaderExtension *hdrext);
    WockyJingleFeedbackMessage * wocky_jingle_feedback_message_new
                                                            (const gchar *type,
                                                             const gchar *subtype);
    void                wocky_jingle_feedback_message_free  (WockyJingleFeedbackMessage *fb);
    void                wocky_jingle_media_description_simplify
                                                            (WockyJingleMediaDescription *md);

## Description

## Details

### struct WockyJingleMediaRtpClass

    struct WockyJingleMediaRtpClass {
        WockyJingleContentClass parent_class;
    };

### WockyJingleCodec

    typedef struct {
      guint id;
      gchar *name;
      guint clockrate;
      guint channels;
      GHashTable *params;
      guint trr_int;
      GList *feedback_msgs;
    } WockyJingleCodec;

### WockyJingleFeedbackMessage

    typedef struct {
      gchar *type;
      gchar *subtype;
    } WockyJingleFeedbackMessage;

### WockyJingleRtpHeaderExtension

    typedef struct {
      guint id;
      WockyJingleContentSenders senders;
      gchar *uri;
    } WockyJingleRtpHeaderExtension;

### WockyJingleMediaDescription

    typedef struct {
      GList *codecs;
      GList *hdrexts;
      guint trr_int;
      GList *feedback_msgs;
    } WockyJingleMediaDescription;

Media description for a WockyJingleMediaRtp content.

GList *`codecs`; | a list of WockyJingleCodecs, allocated with `jingle_media_rtp_codec_new()`
GList *`hdrexts`; | a list of WockyJingleRtpHeaderExtensions, allocated with `wocky_jingle_rtp_header_extension_new()`
guint `trr_int`; | number of milliseconds between regular RTCP reports
GList *`feedback_msgs`; | a list of WockyJingleFeedbackMessages, allocated with `wocky_jingle_feedback_message_new()`

### jingle_media_rtp_register ()

    void                jingle_media_rtp_register           (WockyJingleFactory *factory);

### jingle_media_rtp_set_local_media_description ()

    gboolean            jingle_media_rtp_set_local_media_description
                                                            (WockyJingleMediaRtp *self,
                                                             WockyJingleMediaDescription *md,
                                                             gboolean ready,
                                                             GError **error);

Sets or updates the media description (codecs, feedback messages, etc) for `self`.

`self` : | a content in an RTP session
`md` : | new media description for this content. [transfer full]
`ready` : | whether the codecs can regarded as ready to sent from now on
`error` : | used to return a `WOCKY_XMPP_ERROR` if the codec update is illegal.
Returns : | `TRUE` if no description was previously set, or if the update is compatible with the existing description; `FALSE` if the update is illegal (due to adding previously-unknown codecs or renaming an existing codec, for example)

### wocky_jingle_media_rtp_get_remote_media_description ()

    WockyJingleMediaDescription * wocky_jingle_media_rtp_get_remote_media_description
                                                            (WockyJingleMediaRtp *self);

Gets the current remote media description, if known. The "remote-media-description" signal is emitted when this value changes.

`self` : | the RTP content
Returns : | the current remote media description, which may be `NULL` for outgoing calls until it is first received. [transfer none]

### jingle_media_rtp_codec_new ()

    WockyJingleCodec *  jingle_media_rtp_codec_new          (guint id,
                                                             const gchar *name,
                                                             guint clockrate,
                                                             guint channels,
                                                             GHashTable *params);

Creates a new structure describing a codec, suitable for including in a WockyJingleMediaDescription.

`id` : | a codec ID, as specified in tables 4 and 5 of RFC 3551.
`name` : | the codec's name. This is optional if `id` is one of the statically-defined codec identifiers, and required if `id` is in the range 96–127. (This is not enforced by this library.). [allow-none]
`clockrate` : | the clock rate for this codec, or 0 to not specify a clock rate.
`channels` : | the number of channels, or 0 to leave this unspecified (which the peer should interpret as the default value, 1).
`params` : | parameters for this codec. This is referenced, not copied, so you should avoid modifying this parameter after calling this function. [element-type utf8 utf8][transfer none][allow-none]
Returns : | the codec description. [transfer full]

### jingle_media_rtp_codec_free ()

    void                jingle_media_rtp_codec_free         (WockyJingleCodec *p);

### jingle_media_rtp_free_codecs ()

    void                jingle_media_rtp_free_codecs        (GList *codecs);

### jingle_media_rtp_copy_codecs ()

    GList *             jingle_media_rtp_copy_codecs        (GList *codecs);

### jingle_media_rtp_compare_codecs ()

    gboolean            jingle_media_rtp_compare_codecs     (GList *old,
                                                             GList *new,
                                                             GList **changed,
                                                             GError **e);

### wocky_jingle_media_description_new ()

    WockyJingleMediaDescription * wocky_jingle_media_description_new
                                                            (void);

Allocates a new media description. You should fill in all the fields yourself.

Returns : | a new, empty, media description

### wocky_jingle_media_description_free ()

    void                wocky_jingle_media_description_free (WockyJingleMediaDescription *md);

### wocky_jingle_media_description_copy ()

    WockyJingleMediaDescription * wocky_jingle_media_description_copy
                                                            (WockyJingleMediaDescription *md);

Performs a deep copy of a media description.

`md` : | a media description
Returns : | a deep copy of `md`. [transfer full]

### wocky_jingle_rtp_header_extension_new ()

    WockyJingleRtpHeaderExtension * wocky_jingle_rtp_header_extension_new
                                                            (guint id,
                                                             WockyJingleContentSenders senders,
                                                             const gchar *uri);

### wocky_jingle_rtp_header_extension_free ()

    void                wocky_jingle_rtp_header_extension_free
                                                            (WockyJingleRtpHeaderExtension *hdrext);

### wocky_jingle_feedback_message_new ()

    WockyJingleFeedbackMessage * wocky_jingle_feedback_message_new
                                                            (const gchar *type,
                                                             const gchar *subtype);

### wocky_jingle_feedback_message_free ()

    void                wocky_jingle_feedback_message_free  (WockyJingleFeedbackMessage *fb);

### wocky_jingle_media_description_simplify ()

    void                wocky_jingle_media_description_simplify
                                                            (WockyJingleMediaDescription *md);

Removes duplicated Feedback message and put them in the global structure

This function will iterate over every codec in a description and look for feedback messages that are exactly the same in every codec and will instead put the in the list in the description and remove them from the childs. This limits the amount of duplication in the resulting XML.

`md` : | a description to simplify