diff options
author | Benjamin Otte <otte@redhat.com> | 2018-02-27 23:22:26 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2018-03-18 21:01:23 +0100 |
commit | 4db1a5f5c4216cef20afe872ea99264c63b72eb3 (patch) | |
tree | e7d95cce6298290ef1a1fd42c4567af95763e22b /gtk/gtkmediastream.h | |
parent | 4642e86284c6ffb074eff0bf21daa1b2621e04ce (diff) | |
download | gtk+-4db1a5f5c4216cef20afe872ea99264c63b72eb3.tar.gz |
gtk: Add GtkMediaStream
GtkMediaStream is the new base class for playback of audio and video
streams.
It implements GdkPaintable for rendering.
Diffstat (limited to 'gtk/gtkmediastream.h')
-rw-r--r-- | gtk/gtkmediastream.h | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/gtk/gtkmediastream.h b/gtk/gtkmediastream.h new file mode 100644 index 0000000000..3029696518 --- /dev/null +++ b/gtk/gtkmediastream.h @@ -0,0 +1,144 @@ +/* + * Copyright © 2018 Benjamin Otte + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see <http://www.gnu.org/licenses/>. + * + * Authors: Benjamin Otte <otte@gnome.org> + */ + +#ifndef __GTK_MEDIA_STREAM_H__ +#define __GTK_MEDIA_STREAM_H__ + +#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION) +#error "Only <gtk/gtk.h> can be included directly." +#endif + +#include <gdk/gdk.h> + +G_BEGIN_DECLS + +#define GTK_TYPE_MEDIA_STREAM (gtk_media_stream_get_type ()) + +GDK_AVAILABLE_IN_ALL +G_DECLARE_DERIVABLE_TYPE (GtkMediaStream, gtk_media_stream, GTK, MEDIA_STREAM, GObject) + +struct _GtkMediaStreamClass +{ + GObjectClass parent_class; + + gboolean (* play) (GtkMediaStream *self); + void (* pause) (GtkMediaStream *self); + void (* seek) (GtkMediaStream *self, + gint64 timestamp); + void (* update_audio) (GtkMediaStream *self, + gboolean muted, + double volume); + /* Padding for future expansion */ + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + void (*_gtk_reserved4) (void); + void (*_gtk_reserved5) (void); + void (*_gtk_reserved6) (void); + void (*_gtk_reserved7) (void); + void (*_gtk_reserved8) (void); +}; + +GDK_AVAILABLE_IN_ALL +gboolean gtk_media_stream_is_prepared (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +const GError * gtk_media_stream_get_error (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +gboolean gtk_media_stream_has_audio (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +gboolean gtk_media_stream_has_video (GtkMediaStream *self); + +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_play (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_pause (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +gboolean gtk_media_stream_get_playing (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_set_playing (GtkMediaStream *self, + gboolean playing); +GDK_AVAILABLE_IN_ALL +gboolean gtk_media_stream_get_ended (GtkMediaStream *self); + +GDK_AVAILABLE_IN_ALL +gint64 gtk_media_stream_get_timestamp (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +gint64 gtk_media_stream_get_duration (GtkMediaStream *self); + +GDK_AVAILABLE_IN_ALL +gboolean gtk_media_stream_is_seekable (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +gboolean gtk_media_stream_is_seeking (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_seek (GtkMediaStream *self, + gint64 timestamp); +GDK_AVAILABLE_IN_ALL +gboolean gtk_media_stream_get_loop (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_set_loop (GtkMediaStream *self, + gboolean loop); +GDK_AVAILABLE_IN_ALL +gboolean gtk_media_stream_get_muted (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_set_muted (GtkMediaStream *self, + gboolean muted); +GDK_AVAILABLE_IN_ALL +double gtk_media_stream_get_volume (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_set_volume (GtkMediaStream *self, + double volume); + +/* for implementations only */ +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_prepared (GtkMediaStream *self, + gboolean has_audio, + gboolean has_video, + gboolean seekable, + gint64 duration); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_unprepared (GtkMediaStream *self); + +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_update (GtkMediaStream *self, + gint64 timestamp); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_ended (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_seek_success (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_seek_failed (GtkMediaStream *self); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_gerror (GtkMediaStream *self, + GError *error); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_error (GtkMediaStream *self, + GQuark domain, + gint code, + const gchar *format, + ...) G_GNUC_PRINTF (4, 5); +GDK_AVAILABLE_IN_ALL +void gtk_media_stream_error_valist (GtkMediaStream *self, + GQuark domain, + gint code, + const gchar *format, + va_list args) G_GNUC_PRINTF (4, 0); + +G_END_DECLS + +#endif /* __GTK_MEDIA_STREAM_H__ */ |