mediamanager.h File Reference
libpurple
`#include <glib.h>`
`#include <glib-object.h>`
`#include "account.h"`
`#include "media.h"`

Go to the source code of this file.

## Data Structures

struct | PurpleMediaAppDataCallbacks
| PurpleMediaAppDataCallbacks: @readable: Called when the stream has received data and is readable. More...

## Macros

#define | PURPLE_TYPE_MEDIA_MANAGER (purple_media_manager_get_type())
#define | PURPLE_MEDIA_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManager))
#define | PURPLE_MEDIA_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManagerClass))
#define | PURPLE_IS_MEDIA_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_MEDIA_MANAGER))
#define | PURPLE_IS_MEDIA_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_MANAGER))
#define | PURPLE_MEDIA_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManagerClass))

## Typedefs

typedef struct _PurpleMediaManager | PurpleMediaManager
| An opaque structure representing a group of (usually all) media calls.
typedef struct _PurpleMediaManagerClass | PurpleMediaManagerClass
| The GObject class structure of the PurpleMediaManager object.

## Functions

Media Manager API
GType | purple_media_manager_get_type (void)
| Gets the media manager's GType. More...
PurpleMediaManager * | purple_media_manager_get (void)
| Gets the "global" media manager object. More...
PurpleMedia * | purple_media_manager_create_media (PurpleMediaManager *manager, PurpleAccount *account, const char *conference_type, const char *remote_user, gboolean initiator)
| Creates a media session. More...
GList * | purple_media_manager_get_media (PurpleMediaManager *manager)
| Gets all of the media sessions. More...
GList * | purple_media_manager_get_media_by_account (PurpleMediaManager *manager, PurpleAccount *account)
| Gets all of the media sessions for a given account. More...
void | purple_media_manager_remove_media (PurpleMediaManager *manager, PurpleMedia *media)
| Removes a media session from the media manager. More...
PurpleMedia * | purple_media_manager_create_private_media (PurpleMediaManager *manager, PurpleAccount *account, const char *conference_type, const char *remote_user, gboolean initiator)
| Creates a private media session. More...
GList * | purple_media_manager_get_private_media (PurpleMediaManager *manager)
| Gets all of the private media sessions. More...
GList * | purple_media_manager_get_private_media_by_account (PurpleMediaManager *manager, PurpleAccount *account)
| Gets all of the private media sessions for a given account. More...
gboolean | purple_media_manager_create_output_window (PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id, const gchar *participant)
| Signals that output windows should be created for the chosen stream. More...
gulong | purple_media_manager_set_output_window (PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id, const gchar *participant, gulong window_id)
| Registers a video output window to be created for a given stream. More...
gboolean | purple_media_manager_remove_output_window (PurpleMediaManager *manager, gulong output_window_id)
| Remove a previously registerd output window. More...
void | purple_media_manager_remove_output_windows (PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id, const gchar *participant)
| Remove all output windows for a given conference/session/participant/stream. More...
void | purple_media_manager_set_ui_caps (PurpleMediaManager *manager, PurpleMediaCaps caps)
| Sets which media caps the UI supports. More...
PurpleMediaCaps | purple_media_manager_get_ui_caps (PurpleMediaManager *manager)
| Gets which media caps the UI supports. More...
void | purple_media_manager_set_backend_type (PurpleMediaManager *manager, GType backend_type)
| Sets which media backend type media objects will use. More...
GType | purple_media_manager_get_backend_type (PurpleMediaManager *manager)
| Gets which media backend type media objects will use. More...
void | purple_media_manager_set_application_data_callbacks (PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id, const gchar *participant, PurpleMediaAppDataCallbacks *callbacks, gpointer user_data, GDestroyNotify notify)
| purple_media_manager_set_application_data_callbacks: @manager: The manager to register the callbacks with. More...
gint | purple_media_manager_send_application_data (PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id, const gchar *participant, gpointer buffer, guint size, gboolean blocking)
| purple_media_manager_send_application_data: @manager: The manager to send data with. More...
gint | purple_media_manager_receive_application_data (PurpleMediaManager *manager, PurpleMedia *media, const gchar *session_id, const gchar *participant, gpointer buffer, guint max_size, gboolean blocking)
| purple_media_manager_receive_application_data: @manager: The manager to receive data with. More...

## Detailed Description

Media Manager API

Definition in file mediamanager.h.

## Function Documentation

## purple_media_manager_create_media()

PurpleMedia* purple_media_manager_create_media | ( | PurpleMediaManager * | manager,
|  | PurpleAccount * | account,
|  | const char * | conference_type,
|  | const char * | remote_user,
|  | gboolean | initiator
| ) |  |

Creates a media session.

Parameters

  manager | The media manager to create the session under.
  account | The account to create the session on.
  conference_type | The conference type to feed into Farsight2.
  remote_user | The remote user to initiate the session with.
  initiator | TRUE if the local user is the initiator of this media call, FALSE otherwise.

Returns
  A newly created media session.

Since
  2.6.0

## purple_media_manager_create_output_window()

gboolean purple_media_manager_create_output_window | ( | PurpleMediaManager * | manager,
|  | PurpleMedia * | media,
|  | const gchar * | session_id,
|  | const gchar * | participant
| ) |  |

Signals that output windows should be created for the chosen stream.

This shouldn't be called outside of mediamanager.c and media.c

Parameters

  manager | Manager the output windows are registered with.
  media | Media session the output windows are registered for.
  session_id | The session the output windows are registered with.
  participant | The participant the output windows are registered with.

Returns
  TRUE if it succeeded, FALSE if it failed.

Since
  2.6.0

## purple_media_manager_create_private_media()

PurpleMedia* purple_media_manager_create_private_media | ( | PurpleMediaManager * | manager,
|  | PurpleAccount * | account,
|  | const char * | conference_type,
|  | const char * | remote_user,
|  | gboolean | initiator
| ) |  |

Creates a private media session.

A private media session is a media session which is private to the caller. It is meant to be used by plugins to create a media session that the front-end does not get notified about. It is useful especially for sessions with a type of PURPLE_MEDIA_APPLICATION which the front-end wouldn't know how to handle.

Parameters

  manager | The media manager to create the session under.
  account | The account to create the session on.
  conference_type | The conference type to feed into Farsight2.
  remote_user | The remote user to initiate the session with.
  initiator | TRUE if the local user is the initiator of this media call, FALSE otherwise.

Returns
  A newly created media session.

Since
  2.11.0

## purple_media_manager_get()

PurpleMediaManager* purple_media_manager_get | ( | void |  | ) |

Gets the "global" media manager object.

It's created if it doesn't already exist.

Returns
  The "global" instance of the media manager object.

Since
  2.6.0

## purple_media_manager_get_backend_type()

GType purple_media_manager_get_backend_type | ( | PurpleMediaManager * | manager | ) |

Gets which media backend type media objects will use.

Parameters

  manager | The manager to get the media backend type from.

Returns
  The type of media backend type media objects will use.

Since
  2.7.0

## purple_media_manager_get_media()

GList* purple_media_manager_get_media | ( | PurpleMediaManager * | manager | ) |

Gets all of the media sessions.

Parameters

  manager | The media manager to get all of the sessions from.

Returns
  A list of all the media sessions.

Since
  2.6.0

## purple_media_manager_get_media_by_account()

GList* purple_media_manager_get_media_by_account | ( | PurpleMediaManager * | manager,
|  | PurpleAccount * | account
| ) |  |

Gets all of the media sessions for a given account.

Parameters

  manager | The media manager to get the sessions from.
  account | The account the sessions are on.

Returns
  A list of the media sessions on the given account.

Since
  2.6.0

## purple_media_manager_get_private_media()

GList* purple_media_manager_get_private_media | ( | PurpleMediaManager * | manager | ) |

Gets all of the private media sessions.

Parameters

  manager | The media manager to get all of the sessions from.

Returns
  A list of all the private media sessions.

Since
  2.11.0

## purple_media_manager_get_private_media_by_account()

GList* purple_media_manager_get_private_media_by_account | ( | PurpleMediaManager * | manager,
|  | PurpleAccount * | account
| ) |  |

Gets all of the private media sessions for a given account.

Parameters

  manager | The media manager to get the sessions from.
  account | The account the sessions are on.

Returns
  A list of the private media sessions on the given account.

Since
  2.11.0

## purple_media_manager_get_type()

GType purple_media_manager_get_type | ( | void |  | ) |

Gets the media manager's GType.

Returns
  The media manager's GType.

Since
  2.6.0

## purple_media_manager_get_ui_caps()

PurpleMediaCaps purple_media_manager_get_ui_caps | ( | PurpleMediaManager * | manager | ) |

Gets which media caps the UI supports.

Parameters

  manager | The manager to get caps from.

Returns
  caps The caps retrieved.

Since
  2.6.0

## purple_media_manager_receive_application_data()

gint purple_media_manager_receive_application_data | ( | PurpleMediaManager * | manager,
|  | PurpleMedia * | media,
|  | const gchar * | session_id,
|  | const gchar * | participant,
|  | gpointer | buffer,
|  | guint | max_size,
|  | gboolean | blocking
| ) |  |

purple_media_manager_receive_application_data: @manager: The manager to receive data with.

@media: The media instance to which the session belongs. @session_id: The session to receive data from. @participant: The participant to receive data from. @buffer: The buffer to receive data into. @max_size: The max_size of @buffer @blocking: Whether to block until the buffer is entirely filled or return with currently available data.

Receive a buffer of data from a #PURPLE_MEDIA_APPLICATION session. If @blocking is set, unless an error occured, the function will not return until @max_size bytes are read.

Returns: Number of bytes received or -1 in case of error.

## purple_media_manager_remove_media()

void purple_media_manager_remove_media | ( | PurpleMediaManager * | manager,
|  | PurpleMedia * | media
| ) |  |

Removes a media session from the media manager.

Parameters

  manager | The media manager to remove the media session from.
  media | The media session to remove.

Since
  2.6.0

## purple_media_manager_remove_output_window()

gboolean purple_media_manager_remove_output_window | ( | PurpleMediaManager * | manager,
|  | gulong | output_window_id
| ) |  |

Remove a previously registerd output window.

Parameters

  manager | The manager the output window was registered with.
  output_window_id | The ID of the output window.

Returns
  TRUE if it found the output window and was successful, else FALSE.

Since
  2.6.0

## purple_media_manager_remove_output_windows()

void purple_media_manager_remove_output_windows | ( | PurpleMediaManager * | manager,
|  | PurpleMedia * | media,
|  | const gchar * | session_id,
|  | const gchar * | participant
| ) |  |

Remove all output windows for a given conference/session/participant/stream.

Parameters

  manager | The manager the output windows were registered with.
  media | The media instance the output windows were registered for.
  session_id | The session the output windows were registered for.
  participant | The participant the output windows were registered for.

Since
  2.6.0

## purple_media_manager_send_application_data()

gint purple_media_manager_send_application_data | ( | PurpleMediaManager * | manager,
|  | PurpleMedia * | media,
|  | const gchar * | session_id,
|  | const gchar * | participant,
|  | gpointer | buffer,
|  | guint | size,
|  | gboolean | blocking
| ) |  |

purple_media_manager_send_application_data: @manager: The manager to send data with.

@media: The media instance to which the session belongs. @session_id: The session to send data to. @participant: The participant to send data to. @buffer: The buffer of data to send. @size: The size of @buffer @blocking: Whether to block until the data was send or not.

Sends a buffer of data to a #PURPLE_MEDIA_APPLICATION session. If @blocking is set, unless an error occured, the function will not return until the data has been flushed into the network. If the stream is not writable, the data will be queued. It is the responsability of the user to stop sending data when the stream isn't writable anymore. It is also the responsability of the user to only start sending data after the stream has been configured correctly (encryption parameters for example).

Returns: Number of bytes sent or -1 in case of error.

## purple_media_manager_set_application_data_callbacks()

void purple_media_manager_set_application_data_callbacks | ( | PurpleMediaManager * | manager,
|  | PurpleMedia * | media,
|  | const gchar * | session_id,
|  | const gchar * | participant,
|  | PurpleMediaAppDataCallbacks * | callbacks,
|  | gpointer | user_data,
|  | GDestroyNotify | notify
| ) |  |

purple_media_manager_set_application_data_callbacks: @manager: The manager to register the callbacks with.

@media: The media instance to register the callbacks with. @session_id: The session to register the callbacks with. @participant: The participant to register the callbacks with. @callbacks: The callbacks to be set on the session. @user_data: a user_data argument for the callbacks. @notify: a destroy notify function.

Set callbacks on a session to be called when the stream becomes writable or readable for media sessions of type #PURPLE_MEDIA_APPLICATION

## purple_media_manager_set_backend_type()

void purple_media_manager_set_backend_type | ( | PurpleMediaManager * | manager,
|  | GType | backend_type
| ) |  |

Sets which media backend type media objects will use.

Parameters

  manager | The manager to set the caps on.
  backend_type | The media backend type to use.

Since
  2.7.0

## purple_media_manager_set_output_window()

gulong purple_media_manager_set_output_window | ( | PurpleMediaManager * | manager,
|  | PurpleMedia * | media,
|  | const gchar * | session_id,
|  | const gchar * | participant,
|  | gulong | window_id
| ) |  |

Registers a video output window to be created for a given stream.

Parameters

  manager | The manager to register the output window with.
  media | The media instance to find the stream in.
  session_id | The session the stream is associated with.
  participant | The participant the stream is associated with.
  window_id | The window ID to embed the video in.

Returns
  A unique ID to the registered output window, 0 if it failed.

Since
  2.6.0

## purple_media_manager_set_ui_caps()

void purple_media_manager_set_ui_caps | ( | PurpleMediaManager * | manager,
|  | PurpleMediaCaps | caps
| ) |  |

Sets which media caps the UI supports.

Parameters

  manager | The manager to set the caps on.
  caps | The caps to set.

Since
  2.6.0