~ubuntu-branches/ubuntu/vivid/alarm-clock-applet/vivid

« back to all changes in this revision

Viewing changes to src/player.h

  • Committer: Bazaar Package Importer
  • Author(s): Chow Loong Jin
  • Date: 2009-05-30 23:24:27 UTC
  • Revision ID: james.westby@ubuntu.com-20090530232427-88on1j2ily4ajxdz
Tags: upstream-0.2.6
ImportĀ upstreamĀ versionĀ 0.2.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * player.h - Simple media player based on GStreamer
 
3
 * 
 
4
 * Copyright (C) 2007-2008 Johannes H. Jensen <joh@pseudoberries.com>
 
5
 * 
 
6
 * This program is free software; you can redistribute it and/or
 
7
 * modify it under the terms of the GNU General Public License
 
8
 * as published by the Free Software Foundation; either version 2
 
9
 * of the License, or (at your option) any later version.
 
10
 *
 
11
 * This program is distributed in the hope that it will be useful,
 
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 * GNU General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU General Public License
 
17
 * along with this program; if not, write to the Free Software
 
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
19
 * 
 
20
 * Authors:
 
21
 *              Johannes H. Jensen <joh@pseudoberries.com>
 
22
 */
 
23
 
 
24
#ifndef PLAYER_H_
 
25
#define PLAYER_H_
 
26
 
 
27
#include <gst/gst.h>
 
28
 
 
29
G_BEGIN_DECLS
 
30
 
 
31
typedef enum {
 
32
        MEDIA_PLAYER_INVALID = 0,
 
33
        MEDIA_PLAYER_STOPPED,
 
34
        MEDIA_PLAYER_PLAYING,
 
35
        MEDIA_PLAYER_ERROR
 
36
} MediaPlayerState;
 
37
 
 
38
typedef struct _MediaPlayer MediaPlayer;
 
39
 
 
40
/*
 
41
 * Callback for when the media player's state changes.
 
42
 */
 
43
typedef void (*MediaPlayerStateChangeCallback)  (MediaPlayer *player, MediaPlayerState state, gpointer data);
 
44
 
 
45
/*
 
46
 * Callback for when an error occurs in the media player.
 
47
 * The error details is put in the error argument. This value
 
48
 * should _never_ be freed in the callback!
 
49
 */
 
50
typedef void (*MediaPlayerErrorHandler)                 (MediaPlayer *player, GError *error, gpointer data);
 
51
 
 
52
struct _MediaPlayer {
 
53
        GstElement *player;
 
54
        gboolean loop;
 
55
        MediaPlayerState state;
 
56
        
 
57
        guint watch_id;
 
58
        
 
59
        MediaPlayerStateChangeCallback state_changed;
 
60
        MediaPlayerErrorHandler error_handler;
 
61
        
 
62
        gpointer state_changed_data;
 
63
        gpointer error_handler_data;
 
64
};
 
65
 
 
66
/**
 
67
 * Create a new media player.
 
68
 * 
 
69
 * @uri                         The file to play.
 
70
 * @loop                        Wether to loop or not.
 
71
 * @state_callback      An optional #MediaPlayerStateChangeCallback which will be
 
72
 *                                      notified when the state of the player changes.
 
73
 * @data                        Data for the state_callback
 
74
 * @error_handler       An optional #MediaPlayerErrorHandler which will be notified
 
75
 *                                      if an error occurs.
 
76
 * @error_data          Data for the error_handler.
 
77
 */
 
78
 
 
79
MediaPlayer *
 
80
media_player_new (const gchar *uri, gboolean loop,
 
81
                                  MediaPlayerStateChangeCallback state_callback, gpointer data,
 
82
                                  MediaPlayerErrorHandler error_handler, gpointer error_data);
 
83
 
 
84
/**
 
85
 * Free a media player.
 
86
 */
 
87
void
 
88
media_player_free (MediaPlayer *player);
 
89
 
 
90
/**
 
91
 * Set the uri of player.
 
92
 */
 
93
void
 
94
media_player_set_uri (MediaPlayer *player, const gchar *uri);
 
95
 
 
96
/**
 
97
 * Get the uri of player.
 
98
 * 
 
99
 * Free with g_free()
 
100
 */
 
101
gchar *
 
102
media_player_get_uri (MediaPlayer *player);
 
103
 
 
104
/**
 
105
 * Set media player state.
 
106
 */
 
107
void
 
108
media_player_set_state (MediaPlayer *player, MediaPlayerState state);
 
109
 
 
110
/**
 
111
 * Start media player
 
112
 */
 
113
void
 
114
media_player_start (MediaPlayer *player);
 
115
 
 
116
/**
 
117
 * Stop player
 
118
 */
 
119
void
 
120
media_player_stop (MediaPlayer *player);
 
121
 
 
122
G_END_DECLS
 
123
 
 
124
#endif /*PLAYER_H_*/