diff --git a/local/owr_media_renderer.c b/local/owr_media_renderer.c index 2c97d6b9..b43f379d 100644 --- a/local/owr_media_renderer.c +++ b/local/owr_media_renderer.c @@ -308,6 +308,27 @@ static void on_caps(GstElement *sink, GParamSpec *pspec, OwrMediaRenderer *media } } +void owr_media_renderer_set_state(OwrMediaRenderer *_renderer, OwrMediaRendererState state) +{ + OwrMediaRenderer* renderer; + OwrMediaRendererPrivate *priv; + + renderer = OWR_MEDIA_RENDERER(_renderer); + priv = renderer->priv; + + if (!priv->pipeline) + return; + + switch (state) { + case OWR_MEDIA_RENDERER_PAUSE: + gst_element_set_state(priv->pipeline, GST_STATE_PAUSED); + break; + case OWR_MEDIA_RENDERER_PLAY: + gst_element_set_state(priv->pipeline, GST_STATE_PLAYING); + break; + } +} + static void maybe_start_renderer(OwrMediaRenderer *renderer) { OwrMediaRendererPrivate *priv; diff --git a/local/owr_media_renderer.h b/local/owr_media_renderer.h index bb29a214..680f9c85 100644 --- a/local/owr_media_renderer.h +++ b/local/owr_media_renderer.h @@ -65,11 +65,19 @@ struct _OwrMediaRendererClass { void *(*get_sink)(OwrMediaRenderer *renderer); }; +typedef enum { + OWR_MEDIA_RENDERER_PAUSE = 0, + OWR_MEDIA_RENDERER_PLAY = 1 +} OwrMediaRendererState; + + GType owr_media_renderer_get_type(void) G_GNUC_CONST; void owr_media_renderer_set_source(OwrMediaRenderer *renderer, OwrMediaSource *source); gchar * owr_media_renderer_get_dot_data(OwrMediaRenderer *renderer); +void owr_media_renderer_set_state(OwrMediaRenderer *_renderer, OwrMediaRendererState state); + G_END_DECLS #endif /* __OWR_MEDIA_RENDERER_H__ */