aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-07 04:00:01 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-05-07 04:00:01 +0200
commitef36b6db09265b1b3110d7596de3ad8385fcfbe5 (patch)
treebafbc21ba87c68fbc94b2c7eedf6d2a6731f696d /lib
parent77258a66029b5fd7cb18d75a448e3a7a87a7eb99 (diff)
downloadexperiment-player-ef36b6db09265b1b3110d7596de3ad8385fcfbe5.tar.gz
support for setting volume in vlc player widget
API function and volume adjustment * attached volume button with player widget
Diffstat (limited to 'lib')
-rw-r--r--lib/gtk-vlc-player/gtk-vlc-player.c33
-rw-r--r--lib/gtk-vlc-player/gtk-vlc-player.h7
2 files changed, 40 insertions, 0 deletions
diff --git a/lib/gtk-vlc-player/gtk-vlc-player.c b/lib/gtk-vlc-player/gtk-vlc-player.c
index 8686eef..136310c 100644
--- a/lib/gtk-vlc-player/gtk-vlc-player.c
+++ b/lib/gtk-vlc-player/gtk-vlc-player.c
@@ -22,6 +22,7 @@ static void widget_on_realize(GtkWidget *widget, gpointer data);
static gboolean widget_on_click(GtkWidget *widget, GdkEventButton *event, gpointer data);
static void time_adj_on_value_changed(GtkAdjustment *adj, gpointer user_data);
+static void vol_adj_on_value_changed(GtkAdjustment *adj, gpointer user_data);
static inline void update_time(GtkVlcPlayer *player, gint64 new_time);
static inline void update_length(GtkVlcPlayer *player, gint64 new_length);
@@ -115,6 +116,11 @@ gtk_vlc_player_init(GtkVlcPlayer *klass)
g_signal_connect(G_OBJECT(klass->time_adjustment), "value-changed",
G_CALLBACK(time_adj_on_value_changed), klass);
+ klass->volume_adjustment = gtk_adjustment_new(1., 0., 1., 0.02, 0., 0.);
+ klass->vol_adj_on_value_changed_id =
+ g_signal_connect(G_OBJECT(klass->volume_adjustment), "value-changed",
+ G_CALLBACK(vol_adj_on_value_changed), klass);
+
klass->vlc_inst = libvlc_new(0, NULL);
klass->media_player = libvlc_media_player_new(klass->vlc_inst);
@@ -179,6 +185,13 @@ time_adj_on_value_changed(GtkAdjustment *adj, gpointer user_data)
(gint64)gtk_adjustment_get_value(adj));
}
+static void
+vol_adj_on_value_changed(GtkAdjustment *adj, gpointer user_data)
+{
+ gtk_vlc_player_set_volume(GTK_VLC_PLAYER(user_data),
+ gtk_adjustment_get_value(adj));
+}
+
static inline void
update_time(GtkVlcPlayer *player, gint64 new_time)
{
@@ -298,6 +311,12 @@ gtk_vlc_player_seek(GtkVlcPlayer *player, gint64 time)
libvlc_media_player_set_time(player->media_player, (libvlc_time_t)time);
}
+void
+gtk_vlc_player_set_volume(GtkVlcPlayer *player, gdouble volume)
+{
+ libvlc_audio_set_volume(player->media_player, (int)(volume*100.));
+}
+
GtkAdjustment *
gtk_vlc_player_get_time_adjustment(GtkVlcPlayer *player)
{
@@ -311,3 +330,17 @@ gtk_vlc_player_set_time_adjustment(GtkVlcPlayer *player, GtkAdjustment *adj)
player->time_adjustment = GTK_OBJECT(adj);
gtk_object_ref(player->time_adjustment);
}
+
+GtkAdjustment *
+gtk_vlc_player_get_volume_adjustment(GtkVlcPlayer *player)
+{
+ return GTK_ADJUSTMENT(player->volume_adjustment);
+}
+
+void
+gtk_vlc_player_set_volume_adjustment(GtkVlcPlayer *player, GtkAdjustment *adj)
+{
+ gtk_object_unref(player->volume_adjustment);
+ player->volume_adjustment = GTK_OBJECT(adj);
+ gtk_object_ref(player->volume_adjustment);
+}
diff --git a/lib/gtk-vlc-player/gtk-vlc-player.h b/lib/gtk-vlc-player/gtk-vlc-player.h
index 54d36a1..665f980 100644
--- a/lib/gtk-vlc-player/gtk-vlc-player.h
+++ b/lib/gtk-vlc-player/gtk-vlc-player.h
@@ -27,6 +27,9 @@ typedef struct _GtkVlcPlayer {
GtkObject *time_adjustment;
gulong time_adj_on_value_changed_id;
+ GtkObject *volume_adjustment;
+ gulong vol_adj_on_value_changed_id;
+
libvlc_instance_t *vlc_inst;
libvlc_media_player_t *media_player;
@@ -55,10 +58,14 @@ gboolean gtk_vlc_player_toggle(GtkVlcPlayer *player);
void gtk_vlc_player_stop(GtkVlcPlayer *player);
void gtk_vlc_player_seek(GtkVlcPlayer *player, gint64 time);
+void gtk_vlc_player_set_volume(GtkVlcPlayer *player, gdouble volume);
GtkAdjustment *gtk_vlc_player_get_time_adjustment(GtkVlcPlayer *player);
void gtk_vlc_player_set_time_adjustment(GtkVlcPlayer *player, GtkAdjustment *adj);
+GtkAdjustment *gtk_vlc_player_get_volume_adjustment(GtkVlcPlayer *player);
+void gtk_vlc_player_set_volume_adjustment(GtkVlcPlayer *player, GtkAdjustment *adj);
+
G_END_DECLS
#endif