## ClutterGstPlayer ClutterGstPlayer — An interface for controlling playback of media data |

## Synopsis

                        ClutterGstPlayer;
    struct              ClutterGstPlayerIface;
    void                clutter_gst_player_class_init       (GObjectClass *object_class);
    gboolean            clutter_gst_player_init             (ClutterGstPlayer *player);
    void                clutter_gst_player_deinit           (ClutterGstPlayer *player);
    GstElement *        clutter_gst_player_get_pipeline     (ClutterGstPlayer *player);
    gboolean            clutter_gst_player_get_idle         (ClutterGstPlayer *player);
    gchar *             clutter_gst_player_get_user_agent   (ClutterGstPlayer *player);
    void                clutter_gst_player_set_user_agent   (ClutterGstPlayer *player,
                                                             const gchar *user_agent);
    void                clutter_gst_player_set_seek_flags   (ClutterGstPlayer *player,
                                                             ClutterGstSeekFlags flags);
    ClutterGstSeekFlags clutter_gst_player_get_seek_flags   (ClutterGstPlayer *player);
    ClutterGstBufferingMode clutter_gst_player_get_buffering_mode
                                                            (ClutterGstPlayer *player);
    void                clutter_gst_player_set_buffering_mode
                                                            (ClutterGstPlayer *player,
                                                             ClutterGstBufferingMode mode);
    GList *             clutter_gst_player_get_audio_streams
                                                            (ClutterGstPlayer *player);
    gint                clutter_gst_player_get_audio_stream (ClutterGstPlayer *player);
    void                clutter_gst_player_set_audio_stream (ClutterGstPlayer *player,
                                                             gint index_);
    GList *             clutter_gst_player_get_subtitle_tracks
                                                            (ClutterGstPlayer *player);
    gint                clutter_gst_player_get_subtitle_track
                                                            (ClutterGstPlayer *player);
    void                clutter_gst_player_set_subtitle_track
                                                            (ClutterGstPlayer *player,
                                                             gint index_);

## Object Hierarchy

      GInterface
       +----ClutterGstPlayer

## Prerequisites

ClutterGstPlayer requires ClutterMedia and GObject.

## Known Implementations

ClutterGstPlayer is implemented by ClutterGstVideoTexture.

## Properties

      "audio-stream"             gint                  : Read / Write
      "audio-streams"            gpointer              : Read
      "idle"                     gboolean              : Read
      "in-seek"                  gboolean              : Read
      "seek-flags"               ClutterGstSeekFlags   : Read / Write
      "subtitle-track"           gint                  : Read / Write
      "subtitle-tracks"          gpointer              : Read
      "user-agent"               gchar*                : Read / Write

## Signals

      "download-buffering"                             : Run Last

## Description

ClutterGstPlayer is an interface for controlling playback of media sources. Contrary to most interfaces, you don't need to implement ClutterGstPlayer. It already provides an implementation/logic leaving you only tweak a few properties to get the desired behavior.

ClutterGstPlayer extends and implements ClutterMedia to create enhanced player.

ClutterMedia is available since Clutter 0.2

## Details

### ClutterGstPlayer

    typedef struct _ClutterGstPlayer ClutterGstPlayer;

ClutterGstPlayer is an opaque structure whose members cannot be directly accessed

Since 1.4

### struct ClutterGstPlayerIface

    struct ClutterGstPlayerIface {
      GstElement * (* get_pipeline)   (ClutterGstPlayer *player);

      gchar * (* get_user_agent) (ClutterGstPlayer *player);
      void    (* set_user_agent) (ClutterGstPlayer *player,
                                  const gchar      *user_agent);

      ClutterGstSeekFlags (* get_seek_flags) (ClutterGstPlayer *player);
      void                (* set_seek_flags) (ClutterGstPlayer    *player,
                                              ClutterGstSeekFlags  flags);

      ClutterGstBufferingMode (* get_buffering_mode) (ClutterGstPlayer *player);
      void                    (* set_buffering_mode) (ClutterGstPlayer        *player,
                                                      ClutterGstBufferingMode  mode);

      GList * (* get_audio_streams) (ClutterGstPlayer *player);
      gint    (* get_audio_stream)  (ClutterGstPlayer *player);
      void    (* set_audio_stream)  (ClutterGstPlayer *player,
                                     gint              index_);

      GList * (* get_subtitle_tracks) (ClutterGstPlayer *player);
      gint    (* get_subtitle_track)  (ClutterGstPlayer *player);
      void    (* set_subtitle_track)  (ClutterGstPlayer *player,
                                       gint              index_);

      gboolean (*get_idle) (ClutterGstPlayer *player);

      gboolean (*get_in_seek) (ClutterGstPlayer *player);

      void (* _iface_reserved16) (void);
      void (* _iface_reserved17) (void);
      void (* _iface_reserved18) (void);
      void (* _iface_reserved19) (void);
      void (* _iface_reserved20) (void);
      void (* _iface_reserved21) (void);
      void (* _iface_reserved22) (void);
      void (* _iface_reserved23) (void);
      void (* _iface_reserved24) (void);
      void (* _iface_reserved25) (void);
      void (* _iface_reserved26) (void);
      void (* _iface_reserved27) (void);
      void (* _iface_reserved28) (void);
      void (* _iface_reserved29) (void);
      void (* _iface_reserved30) (void);
      void (* _iface_reserved31) (void);
      void (* _iface_reserved32) (void);
      void (* _iface_reserved33) (void);
      void (* _iface_reserved34) (void);
      void (* _iface_reserved35) (void);

      /* signals */
      void (* download_buffering)  (ClutterGstPlayer *player,
                                    gdouble           start,
                                    gdouble           stop);
      void (* _clutter_reserved2)  (void);
      void (* _clutter_reserved3)  (void);
      void (* _clutter_reserved4)  (void);
      void (* _clutter_reserved5)  (void);
      void (* _clutter_reserved6)  (void);
      void (* _clutter_reserved7)  (void);
      void (* _clutter_reserved8)  (void);
      void (* _clutter_reserved9)  (void);
      void (* _clutter_reserved10) (void);
    };

Interface vtable for ClutterGstPlayer implementations

`get_pipeline` () |
`get_user_agent` () |
`set_user_agent` () |
`get_seek_flags` () |
`set_seek_flags` () |
`get_buffering_mode` () |
`set_buffering_mode` () |
`get_audio_streams` () |
`get_audio_stream` () |
`set_audio_stream` () |
`get_subtitle_tracks` () |
`get_subtitle_track` () |
`set_subtitle_track` () |
`get_idle` () |
`get_in_seek` () |
`_iface_reserved16` () |
`_iface_reserved17` () |
`_iface_reserved18` () |
`_iface_reserved19` () |
`_iface_reserved20` () |
`_iface_reserved21` () |
`_iface_reserved22` () |
`_iface_reserved23` () |
`_iface_reserved24` () |
`_iface_reserved25` () |
`_iface_reserved26` () |
`_iface_reserved27` () |
`_iface_reserved28` () |
`_iface_reserved29` () |
`_iface_reserved30` () |
`_iface_reserved31` () |
`_iface_reserved32` () |
`_iface_reserved33` () |
`_iface_reserved34` () |
`_iface_reserved35` () |
`download_buffering` () | handler for the "download-buffering" signal
`_clutter_reserved2` () |
`_clutter_reserved3` () |
`_clutter_reserved4` () |
`_clutter_reserved5` () |
`_clutter_reserved6` () |
`_clutter_reserved7` () |
`_clutter_reserved8` () |
`_clutter_reserved9` () |
`_clutter_reserved10` () |

Since 1.4

### clutter_gst_player_class_init ()

    void                clutter_gst_player_class_init       (GObjectClass *object_class);

Adds the ClutterGstPlayer properties to a class and surchages the set/get_property of GObjectClass. You should call this function at the end of the class_init method of the class implementing ClutterGstPlayer.

`object_class` : | a GObjectClass

Since 1.4

### clutter_gst_player_init ()

    gboolean            clutter_gst_player_init             (ClutterGstPlayer *player);

Initialize a ClutterGstPlayer instance. You should call this function at the beginning of the init method of the class implementing ClutterGstPlayer.

When you're finished with the ClutterGstPlayer mixin features (usually in the dispose or finalize vfuncs), call `clutter_gst_player_deinit()` to desallocate the resources created by `clutter_gst_player_init()`.

`player` : | a ClutterGstPlayer
Returns : | TRUE if the initialization was successfull, FALSE otherwise.

Since 1.4

### clutter_gst_player_deinit ()

    void                clutter_gst_player_deinit           (ClutterGstPlayer *player);

Frees the resources created by `clutter_gst_player_init()`. After `clutter_gst_player_deinit()` has been called, no other player method can be called on the instance.

`player` : | a ClutterGstPlayer

Since 1.4

### clutter_gst_player_get_pipeline ()

    GstElement *        clutter_gst_player_get_pipeline     (ClutterGstPlayer *player);

Retrieves the GstPipeline used by the `player`, for direct use with GStreamer API.

`player` : | a ClutterGstPlayer
Returns : | the GstPipeline element used by the player. [transfer none]

Since 1.4

### clutter_gst_player_get_idle ()

    gboolean            clutter_gst_player_get_idle         (ClutterGstPlayer *player);

Get the idle state of the pipeline.

`player` : | a ClutterGstPlayer
Returns : | TRUE if the pipline is in idle mode, FALSE otherwise.

Since 1.4

### clutter_gst_player_get_user_agent ()

    gchar *             clutter_gst_player_get_user_agent   (ClutterGstPlayer *player);

Retrieves the user agent used when streaming.

`player` : | a ClutterGstPlayer
Returns : | the user agent used. The returned string has to be freed with `g_free()`

Since 1.4

### clutter_gst_player_set_user_agent ()

    void                clutter_gst_player_set_user_agent   (ClutterGstPlayer *player,
                                                             const gchar *user_agent);

Sets the user agent to use when streaming.

When streaming content, you might want to set a custom user agent, eg. to promote your software, make it appear in statistics or because the server requires a special user agent you want to impersonate.

`player` : | a ClutterGstPlayer
`user_agent` : | the user agent

Since 1.4

### clutter_gst_player_set_seek_flags ()

    void                clutter_gst_player_set_seek_flags   (ClutterGstPlayer *player,
                                                             ClutterGstSeekFlags flags);

Seeking can be done with several trade-offs. Clutter-gst defaults to `CLUTTER_GST_SEEK_FLAG_NONE`.

`player` : | a ClutterGstPlayer
`flags` : | a combination of ClutterGstSeekFlags

Since 1.4

### clutter_gst_player_get_seek_flags ()

    ClutterGstSeekFlags clutter_gst_player_get_seek_flags   (ClutterGstPlayer *player);

Get the current value of the seek-flags property.

`player` : | a ClutterGstPlayer
Returns : | a combination of ClutterGstSeekFlags

Since 1.4

### clutter_gst_player_get_buffering_mode ()

    ClutterGstBufferingMode clutter_gst_player_get_buffering_mode
                                                            (ClutterGstPlayer *player);

`player` : | a ClutterGstPlayer
Returns : | a ClutterGstBufferingMode

Since 1.4

### clutter_gst_player_set_buffering_mode ()

    void                clutter_gst_player_set_buffering_mode
                                                            (ClutterGstPlayer *player,
                                                             ClutterGstBufferingMode mode);

`player` : | a ClutterGstPlayer
`mode` : | a ClutterGstBufferingMode

Since 1.4

### clutter_gst_player_get_audio_streams ()

    GList *             clutter_gst_player_get_audio_streams
                                                            (ClutterGstPlayer *player);

Get the list of audio streams of the current media.

`player` : | a ClutterGstPlayer
Returns : | a list of strings describing the available audio streams. [transfer none][element-type utf8]

Since 1.4

### clutter_gst_player_get_audio_stream ()

    gint                clutter_gst_player_get_audio_stream (ClutterGstPlayer *player);

Get the current audio stream. The number returned in the index of the audio stream playing in the list returned by `clutter_gst_player_get_audio_streams()`.

`player` : | a ClutterGstPlayer
Returns : | the index of the current audio stream, -1 if the media has no audio stream

Since 1.4

### clutter_gst_player_set_audio_stream ()

    void                clutter_gst_player_set_audio_stream (ClutterGstPlayer *player,
                                                             gint index_);

Set the audio stream to play. `index_` is the index of the stream in the list returned by `clutter_gst_player_get_audio_streams()`.

`player` : | a ClutterGstPlayer
`index_` : | the index of the audio stream

Since 1.4

### clutter_gst_player_get_subtitle_tracks ()

    GList *             clutter_gst_player_get_subtitle_tracks
                                                            (ClutterGstPlayer *player);

Get the list of subtitles tracks of the current media.

`player` : | a ClutterGstPlayer
Returns : | a list of strings describing the available subtitles tracks. [transfer none][element-type utf8]

Since 1.4

### clutter_gst_player_get_subtitle_track ()

    gint                clutter_gst_player_get_subtitle_track
                                                            (ClutterGstPlayer *player);

Get the current subtitles track. The number returned is the index of the subtiles track in the list returned by `clutter_gst_player_get_subtitle_tracks()`.

`player` : | a ClutterGstPlayer
Returns : | the index of the current subtitlest track, -1 if the media has no subtitles track or if the subtitles have been turned off

Since 1.4

### clutter_gst_player_set_subtitle_track ()

    void                clutter_gst_player_set_subtitle_track
                                                            (ClutterGstPlayer *player,
                                                             gint index_);

Set the subtitles track to play. `index_` is the index of the stream in the list returned by `clutter_gst_player_get_subtitle_tracks()`.

If `index_` is -1, the subtitles are turned off.

`player` : | a ClutterGstPlayer
`index_` : | the index of the subtitles track

Since 1.4

## Property Details

### The `"audio-stream"` property

      "audio-stream"             gint                  : Read / Write

Index of the current audio stream.

Allowed values: >= -1

Default value: -1

Since 1.4

### The `"audio-streams"` property

      "audio-streams"            gpointer              : Read

List of audio streams available on the current media.

Since 1.4

### The `"idle"` property

      "idle"                     gboolean              : Read

Whether the ClutterGstPlayer is in idle mode.

Default value: TRUE

Since 1.4

### The `"in-seek"` property

      "in-seek"                  gboolean              : Read

Whether or not the stream is being seeked.

Default value: FALSE

Since 1.6

### The `"seek-flags"` property

      "seek-flags"               ClutterGstSeekFlags   : Read / Write

Flags to use when seeking.

Since 1.4

### The `"subtitle-track"` property

      "subtitle-track"           gint                  : Read / Write

Index of the current subtitles track.

Allowed values: >= -1

Default value: -1

### The `"subtitle-tracks"` property

      "subtitle-tracks"          gpointer              : Read

List of the subtitles tracks of the media.

### The `"user-agent"` property

      "user-agent"               gchar*                : Read / Write

The User Agent used by ClutterGstPlayer with network protocols.

Default value: NULL

Since 1.4

## Signal Details

### The `"download-buffering"` signal

    void                user_function                      (ClutterGstPlayer *player,
                                                            gdouble           start,
                                                            gdouble           stop,
                                                            gpointer          user_data)      : Run Last

The ::download-buffering signal is emitted each time their an update about the buffering of the current media.

`player` : | the ClutterGstPlayer instance that received the signal
`start` : | start position of the buffering
`stop` : | start position of the buffering
`user_data` : | user data set when the signal handler was connected.

Since 1.4