mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 19:21:06 +00:00
9500bd2128
Original commit message from CVS: Code cleanup, make it adhere to the Gnome/Gtk+ code formatting, which is quite clean and more readable. Renamed parseavi to avidecoder Implemented seeking/time display/pause/play/stop/clean exit to gstmediaplay Added an element flag to indicate that it cannot deal with noncontigous buffers. If such an element is found in the pipeline, seeking is disabled for the complete stream (avidecoder cannot deal with seeking until we convert it to a loop based element with pull_region to fetch the indeces etc...)
90 lines
2.3 KiB
C
90 lines
2.3 KiB
C
/*
|
|
* Initial main.c file generated by Glade. Edit as required.
|
|
* Glade will not overwrite this file.
|
|
*/
|
|
|
|
#ifndef __GSTPLAY_H__
|
|
#define __GSTPLAY_H__
|
|
|
|
#include <gst/gst.h>
|
|
|
|
typedef struct _GstPlay GstPlay;
|
|
typedef struct _GstPlayClass GstPlayClass;
|
|
|
|
#define GST_TYPE_PLAY \
|
|
(gst_play_get_type())
|
|
#define GST_PLAY(obj) \
|
|
(GTK_CHECK_CAST((obj),GST_TYPE_PLAY,GstPlay))
|
|
#define GST_PLAY_CLASS(klass) \
|
|
(GTK_CHECK_CLASS_CAST((klass),GST_TYPE_PLAY,GstPlayClass))
|
|
#define GST_IS_PLAY(obj) \
|
|
(GTK_CHECK_TYPE((obj),GST_TYPE_PLAY))
|
|
#define GST_IS_PLAY_CLASS(obj) \
|
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PLAY))
|
|
|
|
typedef enum {
|
|
GST_PLAY_STOPPED,
|
|
GST_PLAY_PLAYING,
|
|
GST_PLAY_PAUSED,
|
|
} GstPlayState;
|
|
|
|
typedef enum {
|
|
GST_PLAY_OK,
|
|
GST_PLAY_UNKNOWN_MEDIA,
|
|
GST_PLAY_ERROR,
|
|
} GstPlayReturn;
|
|
|
|
typedef enum {
|
|
GST_PLAY_TYPE_AUDIO = (1 << 0),
|
|
GST_PLAY_TYPE_VIDEO = (1 << 1),
|
|
} GstPlayMediaTypeFlags;
|
|
|
|
struct _GstPlay {
|
|
GtkHBox parent;
|
|
|
|
GstPlayState state;
|
|
GstPlayMediaTypeFlags flags;
|
|
|
|
gpointer priv;
|
|
};
|
|
|
|
#define GST_PLAY_STATE(play) ((play)->state)
|
|
#define GST_PLAY_MEDIA_TYPE(play) ((play)->flags)
|
|
#define GST_PLAY_IS_AUDIO_TYPE(play) ((play)->flags & GST_PLAY_TYPE_AUDIO)
|
|
#define GST_PLAY_IS_VIDEO_TYPE(play) ((play)->flags & GST_PLAY_TYPE_VIDEO)
|
|
|
|
struct _GstPlayClass {
|
|
GtkHBoxClass parent_class;
|
|
|
|
void (*state_changed) (GstPlay *play, GstPlayState state);
|
|
void (*frame_displayed) (GstPlay *play);
|
|
void (*audio_played) (GstPlay *play);
|
|
};
|
|
|
|
|
|
GtkType gst_play_get_type (void);
|
|
|
|
/* setup the player */
|
|
GstPlay* gst_play_new (void);
|
|
GstPlayReturn gst_play_set_uri (GstPlay *play, const guchar *uri);
|
|
|
|
/* control the player */
|
|
void gst_play_play (GstPlay *play);
|
|
void gst_play_pause (GstPlay *play);
|
|
void gst_play_stop (GstPlay *play);
|
|
|
|
void gst_play_mute (GstPlay *play, gboolean mute);
|
|
|
|
/* information about the media stream */
|
|
gulong gst_play_get_media_size (GstPlay *play);
|
|
gulong gst_play_get_media_offset (GstPlay *play);
|
|
gboolean gst_play_media_can_seek (GstPlay *play);
|
|
void gst_play_media_seek (GstPlay *play, gulong offset);
|
|
|
|
gulong gst_play_get_media_total_time (GstPlay *play);
|
|
gulong gst_play_get_media_current_time (GstPlay *play);
|
|
|
|
/* the autoplugged pipeline */
|
|
GstElement* gst_play_get_pipeline (GstPlay *play);
|
|
|
|
#endif /* __GSTPLAY_H__ */
|