## RTP Specific types

RTP Specific types

## Functions

FsRtpHeaderExtension * | fs_rtp_header_extension_new ()
FsRtpHeaderExtension * | fs_rtp_header_extension_copy ()
void | fs_rtp_header_extension_destroy ()
gboolean | fs_rtp_header_extension_are_equal ()
GList * | fs_rtp_header_extension_list_copy ()
void | fs_rtp_header_extension_list_destroy ()
GList * | fs_rtp_header_extension_list_from_keyfile ()
#define | FS_RTP_HEADER_EXTENSION_ARGS()

## Types and Values

| FsRtpHeaderExtension
#define | FS_RTP_HEADER_EXTENSION_FORMAT

## Includes

    #include <farstream/fs-rtp.h>

## Description

## Functions

### fs_rtp_header_extension_new ()

    FsRtpHeaderExtension *
    fs_rtp_header_extension_new (guint id,
                                 FsStreamDirection direction,
                                 const gchar *uri);

Creates a new FsRtpHeaderExtension

#### Parameters

id | The identifier of the RTP header extension |
direction | the direction in which this extension can be used |
uri | The URI that defines this extension |

#### Returns

a new FsRtpHeaderExtension

### fs_rtp_header_extension_copy ()

    FsRtpHeaderExtension *
    fs_rtp_header_extension_copy (FsRtpHeaderExtension *extension);

Copies a FsRtpHeaderExtension

#### Parameters

extension | The RTP header extension definition to copy |

#### Returns

a new FsRtpHeaderExtension

### fs_rtp_header_extension_destroy ()

    void
    fs_rtp_header_extension_destroy (FsRtpHeaderExtension *extension);

Frees the passed FsRtpHeaderExtension

#### Parameters

extension | A RTP header extension to free |

### fs_rtp_header_extension_are_equal ()

    gboolean
    fs_rtp_header_extension_are_equal (FsRtpHeaderExtension *extension1,
                                       FsRtpHeaderExtension *extension2);

Compares two FsRtpHeaderExtension structures

#### Parameters

extension1 | The first FsRtpHeaderExtension |
extension2 | The second FsRtpHeaderExtension |

#### Returns

`TRUE` if they are identical, `FALSE` otherwise

### fs_rtp_header_extension_list_copy ()

    GList *
    fs_rtp_header_extension_list_copy (GList *extensions);

Does a deep copy of a GList of FsRtpHeaderExtension

#### Parameters

extensions | a GList of FsRtpHeaderExtension. | [element-type FsRtpHeaderExtension][transfer none]

#### Returns

a new GList of FsRtpHeaderExtension.

[element-type FsRtpHeaderExtension][transfer full]

### fs_rtp_header_extension_list_destroy ()

    void
    fs_rtp_header_extension_list_destroy (GList *extensions);

Frees the passed GList of FsRtpHeaderExtension

#### Parameters

extensions | a GList of FsRtpHeaderExtension |

### fs_rtp_header_extension_list_from_keyfile ()

    GList *
    fs_rtp_header_extension_list_from_keyfile
                                   (const gchar *filename,
                                    FsMediaType media_type,
                                    GError **error);

Reads the content of a GKeyFile of the following format into a GList of FsRtpHeaderExtension structures.

The groups have a format "rtp-hdrext:audio:XXX" or "rtp-hdrext:video:XXX" where XXX is a unique string (per media type).

The valid keys are:

- id: a int between in the 1-255 and 4096-4351 ranges
- uri: a URI describing the RTP Header Extension
- direction (optional): To only send or receive a RTP Header Extension, possible values are "send", "receive", "none" or "both". Defaults to "both"

Example:

    1
    2
    3
    4
    5
    6
    7
    8

    [rtp-hdrext:audio:a]
    id=1
    uri=urn:ietf:params:rtp-hdrext:toffset

    [rtp-hdrext:audio:abc]
    id=3
    uri=urn:ietf:params:rtp-hdrext:ntp-64
    direction=receive

#### Parameters

filename | Name of the GKeyFile to read the RTP Header Extensions from |
media_type | The media type for which to get header extensions |
error | location of a GError, or NULL if no error occured |

#### Returns

a GList of FsRtpHeaderExtension that must be freed with `fs_rtp_header_extension_list_destroy()`.

[element-type FsRtpHeaderExtension][transfer full]

### FS_RTP_HEADER_EXTENSION_ARGS()

    #define             FS_RTP_HEADER_EXTENSION_ARGS(hdrext)

Formats the codec in args for FS_RTP_HEADER_EXTENSION_ARGS

#### Parameters

hdrext | a FsRtpHeaderExtension |

## Types and Values

### FsRtpHeaderExtension

    typedef struct {
      guint id;
      FsStreamDirection direction;
      gchar *uri;
    } FsRtpHeaderExtension;

Defines a RTP header extension with its negotiated identifier, direction and URI. They should only be created with `fs_rtp_header_extension_new()`.

#### Members

guint `id`; | The identifier of the RTP header extension |
FsStreamDirection `direction`; | the direction in which this extension can be used |
gchar *`uri`; | The URI that defines this extension |

### FS_RTP_HEADER_EXTENSION_FORMAT

    #define FS_RTP_HEADER_EXTENSION_FORMAT "%d: (%s) %s"

A format that can be used in printf like format strings to format a FsRtpHeaderExtension