## TpCallContentMediaDescription TpCallContentMediaDescription — implementation of TpSvcCallContentMediaDescription |

## Synopsis

    #include <telepathy-glib/telepathy-glib.h>

                        TpCallContentMediaDescription;
    struct              TpCallContentMediaDescriptionClass;
    TpCallContentMediaDescription * tp_call_content_media_description_new
                                                            (TpDBusDaemon *dbus_daemon,
                                                             const gchar *object_path,
                                                             TpHandle remote_contact,
                                                             gboolean has_remote_information,
                                                             gboolean further_negotiation_required);
    const gchar *       tp_call_content_media_description_get_object_path
                                                            (TpCallContentMediaDescription *self);
    TpHandle            tp_call_content_media_description_get_remote_contact
                                                            (TpCallContentMediaDescription *self);
    void                tp_call_content_media_description_append_codec
                                                            (TpCallContentMediaDescription *self,
                                                             guint identifier,
                                                             const gchar *name,
                                                             guint clock_rate,
                                                             guint channels,
                                                             gboolean updated,
                                                             GHashTable *parameters);
    void                tp_call_content_media_description_add_ssrc
                                                            (TpCallContentMediaDescription *self,
                                                             TpHandle contact,
                                                             guint ssrc);
    void                tp_call_content_media_description_add_rtp_header_extension
                                                            (TpCallContentMediaDescription *self,
                                                             guint id,
                                                             TpMediaStreamDirection direction,
                                                             const gchar *uri,
                                                             const gchar *parameters);
    void                tp_call_content_media_description_add_rtcp_feedback_message
                                                            (TpCallContentMediaDescription *self,
                                                             guint codec_identifier,
                                                             const gchar *type,
                                                             const gchar *subtype,
                                                             const gchar *parameters);
    void                tp_call_content_media_description_set_rtcp_feedback_minimum_interval
                                                            (TpCallContentMediaDescription *self,
                                                             guint codec_identifier,
                                                             guint rtcp_minimum_interval);
    void                tp_call_content_media_description_set_does_avpf
                                                            (TpCallContentMediaDescription *self,
                                                             gboolean does_avpf);
    void                tp_call_content_media_description_set_rtcp_extended_reports
                                                            (TpCallContentMediaDescription *self,
                                                             guint loss_rle_max_size,
                                                             guint duplicate_rle_max_size,
                                                             guint packet_receipt_times_max_size,
                                                             guint dlrr_max_size,
                                                             TpRCPTXRRTTMode rtt_mode,
                                                             TpRTCPXRStatisticsFlags statistics_flags,
                                                             gboolean enable_metrics);
    void                tp_call_content_media_description_add_rtcp_extended_reports_interface
                                                            (TpCallContentMediaDescription *self);
    void                tp_call_content_media_description_add_rtcp_feedback_interface
                                                            (TpCallContentMediaDescription *self);
    void                tp_call_content_media_description_add_rtp_header_extensions_interface
                                                            (TpCallContentMediaDescription *self);

## Object Hierarchy

      GObject
       +----TpCallContentMediaDescription

## Implemented Interfaces

TpCallContentMediaDescription implements TpSvcCallContentMediaDescription, TpSvcDBusProperties, TpSvcCallContentMediaDescriptionInterfaceRTPHeaderExtensions, TpSvcCallContentMediaDescriptionInterfaceRTCPFeedback and TpSvcCallContentMediaDescriptionInterfaceRTCPExtendedReports.

## Properties

      "codecs"                   GPtrArray_GValueArray_guint+gchararray+guint+guint+gboolean+GHashTable_gchararray+gchararray___*  : Read
      "dbus-daemon"              TpDBusDaemon*         : Read / Write / Construct Only
      "dlrr-max-size"            guint                 : Read
      "does-avpf"                gboolean              : Read
      "duplicate-rle-max-size"   guint                 : Read
      "enable-metrics"           gboolean              : Read
      "feedback-messages"        GHashTable_guint+GValueArray_guint+GPtrArray_GValueArray_gchararray+gchararray+gchararray____*  : Read
      "further-negotiation-required" gboolean              : Read / Write / Construct Only
      "has-remote-information"   gboolean              : Read / Write / Construct Only
      "header-extensions"        GPtrArray_GValueArray_guint+guint+gchararray+gchararray__*  : Read
      "interfaces"               GStrv                 : Read
      "loss-rle-max-size"        guint                 : Read
      "object-path"              gchar*                : Read / Write / Construct Only
      "packet-receipt-times-max-size" guint                 : Read
      "remote-contact"           guint                 : Read / Write / Construct Only
      "rtt-mode"                 guint                 : Read
      "ssrcs"                    GHashTable_guint+GArray_guint__*  : Read
      "statistics-flags"         guint                 : Read

## Description

This class is used to negociate the media description used with a remote contact. To be used with TpBaseMediaCallContent implementations.

## Details

### TpCallContentMediaDescription

    typedef struct _TpCallContentMediaDescription TpCallContentMediaDescription;

A class for media content description

Since 0.17.5

### struct TpCallContentMediaDescriptionClass

    struct TpCallContentMediaDescriptionClass {
    };

The class structure for TpCallContentMediaDescription

Since 0.17.5

### tp_call_content_media_description_new ()

    TpCallContentMediaDescription * tp_call_content_media_description_new
                                                            (TpDBusDaemon *dbus_daemon,
                                                             const gchar *object_path,
                                                             TpHandle remote_contact,
                                                             gboolean has_remote_information,
                                                             gboolean further_negotiation_required);

Create a new TpCallContentMediaDescription object. More information can be added after construction using `tp_call_content_media_description_append_codec()` and `tp_call_content_media_description_add_ssrc()`.

Once all information has been filled, the media description can be offered using `tp_base_media_call_content_offer_media_description_async()`.

`dbus_daemon` : | value of "dbus-daemon" property
`object_path` : | value of "object-path" property
`remote_contact` : | value of "remote-contact" property
`has_remote_information` : | value of "has_remote_information" property
`further_negotiation_required` : | value of "further_negotiation_required" property
Returns : | a new TpCallContentMediaDescription.

Since 0.17.5

### tp_call_content_media_description_get_object_path ()

    const gchar *       tp_call_content_media_description_get_object_path
                                                            (TpCallContentMediaDescription *self);

`self` : | a TpCallContentMediaDescription
Returns : | the value of "object-path"

Since 0.17.5

### tp_call_content_media_description_get_remote_contact ()

    TpHandle            tp_call_content_media_description_get_remote_contact
                                                            (TpCallContentMediaDescription *self);

`self` : | a TpCallContentMediaDescription
Returns : | the value of "remote-contact"

Since 0.17.5

### tp_call_content_media_description_append_codec ()

    void                tp_call_content_media_description_append_codec
                                                            (TpCallContentMediaDescription *self,
                                                             guint identifier,
                                                             const gchar *name,
                                                             guint clock_rate,
                                                             guint channels,
                                                             gboolean updated,
                                                             GHashTable *parameters);

Add description for a supported codec.

`self` : | a TpCallContentMediaDescription
`identifier` : | Numeric identifier for the codec. This will be used as the PT in the SDP or content description.
`name` : | The name of the codec.
`clock_rate` : | The clock rate of the codec.
`channels` : | Number of channels of the codec if applicable, otherwise 0.
`updated` : | `TRUE` if this codec was updated since the last Media Description
`parameters` : | a GHashTable of string->string containing optional parameters

Since 0.17.5

### tp_call_content_media_description_add_ssrc ()

    void                tp_call_content_media_description_add_ssrc
                                                            (TpCallContentMediaDescription *self,
                                                             TpHandle contact,
                                                             guint ssrc);

Add an SSRC to the list of SSRCs that a contact will send from. A SSRC is a synchronization source in RTP, it is the identifier for a continuous stream of packets following the same timeline.

`self` : | a TpCallContentMediaDescription
`contact` : | The TpHandle of a contact that is part of the call
`ssrc` : | A SSRC that this contact may send from

Since 0.17.5

### tp_call_content_media_description_add_rtp_header_extension ()

    void                tp_call_content_media_description_add_rtp_header_extension
                                                            (TpCallContentMediaDescription *self,
                                                             guint id,
                                                             TpMediaStreamDirection direction,
                                                             const gchar *uri,
                                                             const gchar *parameters);

Add an element to the "header-extensions" property.

Implement `TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTP_HEADER_EXTENSIONS` interface.

`self` : | a TpCallContentMediaDescription
`id` : | identifier to be negotiated.
`direction` : | a TpMediaStreamDirection in which the Header Extension is negotiated.
`uri` : | URI defining the extension.
`parameters` : | Feedback parameters as a string. Format is defined in the relevant RFC.

Since 0.17.6

### tp_call_content_media_description_add_rtcp_feedback_message ()

    void                tp_call_content_media_description_add_rtcp_feedback_message
                                                            (TpCallContentMediaDescription *self,
                                                             guint codec_identifier,
                                                             const gchar *type,
                                                             const gchar *subtype,
                                                             const gchar *parameters);

Add a message for a given codec. This ensures `codec_identifier` is in the "feedback-messages" map. The rtcp-minimum-interval is set to `G_MAXUINT` and can then be changed using `tp_call_content_media_description_set_rtcp_feedback_minimum_interval()`.

Implement `TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK` interface.

`self` : | a TpCallContentMediaDescription
`codec_identifier` : | Numeric identifier for the codec. This will be used as the PT in the SDP or content description.
`type` : | feedback type, for example "ack", "nack", or "ccm".
`subtype` : | feedback subtype, according to the Type, can be an empty string (""), if there is no subtype. For example, generic nack is Type="nack" Subtype="".
`parameters` : | feedback parameters as a string. Format is defined in the relevant RFC.

Since 0.17.6

### tp_call_content_media_description_set_rtcp_feedback_minimum_interval ()

    void                tp_call_content_media_description_set_rtcp_feedback_minimum_interval
                                                            (TpCallContentMediaDescription *self,
                                                             guint codec_identifier,
                                                             guint rtcp_minimum_interval);

Set the minimum interval for a given codec. This ensures `codec_identifier` is in the "feedback-messages" map. The messages can then be added using `tp_call_content_media_description_add_rtcp_feedback_message()`.

Implement `TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK` interface.

`self` : | a TpCallContentMediaDescription
`codec_identifier` : | Numeric identifier for the codec. This will be used as the PT in the SDP or content description.
`rtcp_minimum_interval` : | The minimum interval between two regular RTCP packets in milliseconds for this content. If no special value is desired, one should put MAXUINT (0xFFFFFFFF). Implementors and users of Call's RTCPFeedback should not use the MAXUINT default. Instead, in RTP/AVP, the default should be 5000 (5 seconds). If using the RTP/AVPF profile, it can be set to a lower value, the default being 0.

Since 0.17.6

### tp_call_content_media_description_set_does_avpf ()

    void                tp_call_content_media_description_set_does_avpf
                                                            (TpCallContentMediaDescription *self,
                                                             gboolean does_avpf);

Implement properties for `TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_FEEDBACK` interface

`self` : | a TpCallContentMediaDescription
`does_avpf` : | the value for "does-avpf" property.

Since 0.17.6

### tp_call_content_media_description_set_rtcp_extended_reports ()

    void                tp_call_content_media_description_set_rtcp_extended_reports
                                                            (TpCallContentMediaDescription *self,
                                                             guint loss_rle_max_size,
                                                             guint duplicate_rle_max_size,
                                                             guint packet_receipt_times_max_size,
                                                             guint dlrr_max_size,
                                                             TpRCPTXRRTTMode rtt_mode,
                                                             TpRTCPXRStatisticsFlags statistics_flags,
                                                             gboolean enable_metrics);

Implement `TP_IFACE_CALL_CONTENT_MEDIA_DESCRIPTION_INTERFACE_RTCP_EXTENDED_REPORTS` interface.

`self` : | a TpCallContentMediaDescription
`loss_rle_max_size` : | the value for "loss-rle-max-size" property.
`duplicate_rle_max_size` : | the value for "duplicate-rle-max-size" property.
`packet_receipt_times_max_size` : | the value for "packet-receipt-times-max-size" property.
`dlrr_max_size` : | the value for "dlrr-max-size" property.
`rtt_mode` : | the value for "rtt-mode" property.
`statistics_flags` : | the value for "statistics-flags" property.
`enable_metrics` : | the value for "enable-metrics" property.

Since 0.17.6

### tp_call_content_media_description_add_rtcp_extended_reports_interface ()

    void                tp_call_content_media_description_add_rtcp_extended_reports_interface
                                                            (TpCallContentMediaDescription *self);

Adds the RTCPExtendedReports interface to the list of supported interfaces

`self` : | a TpCallContentMediaDescription

Since 0.17.6

### tp_call_content_media_description_add_rtcp_feedback_interface ()

    void                tp_call_content_media_description_add_rtcp_feedback_interface
                                                            (TpCallContentMediaDescription *self);

Adds the RTCPFeedback interface to the list of supported interfaces

`self` : | a TpCallContentMediaDescription

Since 0.17.6

### tp_call_content_media_description_add_rtp_header_extensions_interface ()

    void                tp_call_content_media_description_add_rtp_header_extensions_interface
                                                            (TpCallContentMediaDescription *self);

Adds the RTPHeaderExtensions interface to the list of supported interfaces

`self` : | a TpCallContentMediaDescription

Since 0.17.6

## Property Details

### The `"codecs"` property

      "codecs"                   GPtrArray_GValueArray_guint+gchararray+guint+guint+gboolean+GHashTable_gchararray+gchararray___*  : Read

GPtrArray{codecs GValueArray}. A list of codecs the remote contact supports.

Since 0.17.5

### The `"dbus-daemon"` property

      "dbus-daemon"              TpDBusDaemon*         : Read / Write / Construct Only

The connection to the DBus daemon owning the CM.

Since 0.17.5

### The `"dlrr-max-size"` property

      "dlrr-max-size"            guint                 : Read

If non-zero, enable Receiver Reference Time and Delay since Last Receiver Report Blocks (for estimating Round Trip Times between non-senders and other parties in the call. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit.

Default value: 0

Since 0.17.6

### The `"does-avpf"` property

      "does-avpf"                gboolean              : Read

`TRUE` if the remote contact supports Audio-Visual Profile Feedback (AVPF), otherwise `FALSE`.

Default value: FALSE

Since 0.17.6

### The `"duplicate-rle-max-size"` property

      "duplicate-rle-max-size"   guint                 : Read

If non-zero, enable Duplicate Run-Length-Encoded Report Blocks. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit.

Default value: 0

Since 0.17.6

### The `"enable-metrics"` property

      "enable-metrics"           gboolean              : Read

Whether to enable VoIP Metrics Report Blocks. These blocks are of a fixed size.

Default value: FALSE

Since 0.17.6

### The `"feedback-messages"` property

      "feedback-messages"        GHashTable_guint+GValueArray_guint+GPtrArray_GValueArray_gchararray+gchararray+gchararray____*  : Read

A map of remote feedback codec properties that are supported.

Since 0.17.6

### The `"further-negotiation-required"` property

      "further-negotiation-required" gboolean              : Read / Write / Construct Only

`TRUE` if the MediaDescription contains remote information.

Default value: FALSE

Since 0.17.5

### The `"has-remote-information"` property

      "has-remote-information"   gboolean              : Read / Write / Construct Only

True if the MediaDescription contains remote information.

Default value: FALSE

### The `"header-extensions"` property

      "header-extensions"        GPtrArray_GValueArray_guint+guint+gchararray+gchararray__*  : Read

A list of remote header extensions which are supported.

Since 0.17.6

### The `"interfaces"` property

      "interfaces"               GStrv                 : Read

Additional interfaces implemented by this object.

Since 0.17.5

### The `"loss-rle-max-size"` property

      "loss-rle-max-size"        guint                 : Read

If non-zero, enable Loss Run Length Encoded Report Blocks. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit.

Default value: 0

Since 0.17.6

### The `"object-path"` property

      "object-path"              gchar*                : Read / Write / Construct Only

The D-Bus object path used for this object on the bus.

Default value: NULL

Since 0.17.5

### The `"packet-receipt-times-max-size"` property

      "packet-receipt-times-max-size" guint                 : Read

If non-zero, enable Packet Receipt Times Report Blocks. The value of this integer represents the max-size of report blocks, as specified in RFC 3611 section 5.1. MAXUINT32 is used to indicate that there is no limit.

Default value: 0

Since 0.17.6

### The `"remote-contact"` property

      "remote-contact"           guint                 : Read / Write / Construct Only

The contact TpHandle that this media description applies to.

Default value: 0

Since 0.17.5

### The `"rtt-mode"` property

      "rtt-mode"                 guint                 : Read

Who is allowed to send Delay since Last Receiver Reports. Value from TpRCPTXRRTTMode.

Default value: 0

Since 0.17.6

### The `"ssrcs"` property

      "ssrcs"                    GHashTable_guint+GArray_guint__*  : Read

GHashTable{contact TpHandle, GArray{uint}} A map of contacts to SSRCs.

Since 0.17.5

### The `"statistics-flags"` property

      "statistics-flags"         guint                 : Read

Which fields SHOULD be included in the statistics summary report blocks that are sent, and whether to send VoIP Metrics Report Blocks. There can be zero or more flags set. Value from TpRTCPXRStatisticsFlags.

Default value: 0

Since 0.17.6

## See Also

TpBaseMediaCallContent