本文整理汇总了C++中GST_STATE函数的典型用法代码示例。如果您正苦于以下问题:C++ GST_STATE函数的具体用法?C++ GST_STATE怎么用?C++ GST_STATE使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GST_STATE函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: gst_win_inet_src_set_property
static void
gst_win_inet_src_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstWinInetSrc *self = GST_WIN_INET_SRC (object);
switch (prop_id) {
case PROP_LOCATION:
if (GST_STATE (self) == GST_STATE_PLAYING ||
GST_STATE (self) == GST_STATE_PAUSED) {
GST_WARNING_OBJECT (self, "element must be in stopped or paused state "
"in order to change location");
break;
}
g_free (self->location);
self->location = g_value_dup_string (value);
break;
case PROP_POLL_MODE:
self->poll_mode = g_value_get_boolean (value);
break;
case PROP_IRADIO_MODE:
self->iradio_mode = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例2: gst_audio_echo_set_property
static void
gst_audio_echo_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstAudioEcho *self = GST_AUDIO_ECHO (object);
switch (prop_id) {
case PROP_DELAY:{
guint64 max_delay, delay;
GST_BASE_TRANSFORM_LOCK (self);
delay = g_value_get_uint64 (value);
max_delay = self->max_delay;
if (delay > max_delay && GST_STATE (self) > GST_STATE_READY) {
GST_WARNING_OBJECT (self, "New delay (%" GST_TIME_FORMAT ") "
"is larger than maximum delay (%" GST_TIME_FORMAT ")",
GST_TIME_ARGS (delay), GST_TIME_ARGS (max_delay));
self->delay = max_delay;
} else {
self->delay = delay;
self->max_delay = MAX (delay, max_delay);
}
GST_BASE_TRANSFORM_UNLOCK (self);
}
break;
case PROP_MAX_DELAY:{
guint64 max_delay, delay;
GST_BASE_TRANSFORM_LOCK (self);
max_delay = g_value_get_uint64 (value);
delay = self->delay;
if (GST_STATE (self) > GST_STATE_READY) {
GST_ERROR_OBJECT (self, "Can't change maximum delay in"
" PLAYING or PAUSED state");
} else {
self->delay = delay;
self->max_delay = max_delay;
}
GST_BASE_TRANSFORM_UNLOCK (self);
}
break;
case PROP_INTENSITY:{
GST_BASE_TRANSFORM_LOCK (self);
self->intensity = g_value_get_float (value);
GST_BASE_TRANSFORM_UNLOCK (self);
}
break;
case PROP_FEEDBACK:{
GST_BASE_TRANSFORM_LOCK (self);
self->feedback = g_value_get_float (value);
GST_BASE_TRANSFORM_UNLOCK (self);
}
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例3: preview_draw_cb
G_MODULE_EXPORT gboolean
preview_draw_cb(
GtkWidget *widget,
cairo_t *cr,
signal_user_data_t *ud)
{
#if defined(_ENABLE_GST)
#if GST_CHECK_VERSION(1, 0, 0)
if (ud->preview->live_enabled && ud->preview->state == PREVIEW_STATE_LIVE)
{
if (GST_STATE(ud->preview->play) >= GST_STATE_PAUSED)
{
GstElement *vsink;
GstVideoOverlay *vover;
g_object_get(ud->preview->play, "video-sink", &vsink, NULL);
if (GST_IS_BIN(vsink))
vover = GST_VIDEO_OVERLAY(gst_bin_get_by_interface(
GST_BIN(vsink), GST_TYPE_VIDEO_OVERLAY));
else
vover = GST_VIDEO_OVERLAY(vsink);
gst_video_overlay_expose(vover);
// For some reason, the exposed region doesn't always get
// cleaned up here. But a delayed gst_x_overlay_expose()
// takes care of it.
g_idle_add((GSourceFunc)delayed_expose_cb, ud);
}
return FALSE;
}
#else
if (ud->preview->live_enabled && ud->preview->state == PREVIEW_STATE_LIVE)
{
if (GST_STATE(ud->preview->play) >= GST_STATE_PAUSED)
{
GstElement *vsink;
GstXOverlay *xover;
g_object_get(ud->preview->play, "video-sink", &vsink, NULL);
if (GST_IS_BIN(vsink))
xover = GST_X_OVERLAY(gst_bin_get_by_interface(
GST_BIN(vsink), GST_TYPE_X_OVERLAY));
else
xover = GST_X_OVERLAY(vsink);
gst_x_overlay_expose(xover);
// For some reason, the exposed region doesn't always get
// cleaned up here. But a delayed gst_x_overlay_expose()
// takes care of it.
g_idle_add((GSourceFunc)delayed_expose_cb, ud);
}
return FALSE;
}
#endif
#endif
if (ud->preview->pix != NULL)
{
_draw_pixbuf(cr, ud->preview->pix);
}
return FALSE;
}
示例4: gst_gio_base_src_set_stream
void
gst_gio_base_src_set_stream (GstGioBaseSrc * src, GInputStream * stream)
{
gboolean success;
GError *err = NULL;
g_return_if_fail (G_IS_INPUT_STREAM (stream));
g_return_if_fail ((GST_STATE (src) != GST_STATE_PLAYING &&
GST_STATE (src) != GST_STATE_PAUSED));
if (G_IS_INPUT_STREAM (src->stream)) {
GST_DEBUG_OBJECT (src, "closing old stream");
/* FIXME: can block but unfortunately we can't use async operations
* here because they require a running main loop */
success = g_input_stream_close (src->stream, src->cancel, &err);
if (!success && !gst_gio_error (src, "g_input_stream_close", &err, NULL)) {
GST_ELEMENT_WARNING (src, RESOURCE, CLOSE, (NULL),
("g_input_stream_close failed: %s", err->message));
g_clear_error (&err);
} else if (!success) {
GST_ELEMENT_WARNING (src, RESOURCE, CLOSE, (NULL),
("g_input_stream_close failed"));
} else {
GST_DEBUG_OBJECT (src, "g_input_stream_close succeeded");
}
g_object_unref (src->stream);
src->stream = NULL;
}
src->stream = stream;
}
示例5: gst_jack_audio_src_set_property
static void
gst_jack_audio_src_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstJackAudioSrc *src = GST_JACK_AUDIO_SRC (object);
switch (prop_id) {
case PROP_CLIENT_NAME:
g_free (src->client_name);
src->client_name = g_value_dup_string (value);
break;
case PROP_CONNECT:
src->connect = g_value_get_enum (value);
break;
case PROP_SERVER:
g_free (src->server);
src->server = g_value_dup_string (value);
break;
case PROP_CLIENT:
if (GST_STATE (src) == GST_STATE_NULL ||
GST_STATE (src) == GST_STATE_READY) {
src->jclient = g_value_get_boxed (value);
}
break;
case PROP_TRANSPORT:
src->transport = g_value_get_flags (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例6: gst_gio_stream_sink_set_property
static void
gst_gio_stream_sink_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstGioStreamSink *sink = GST_GIO_STREAM_SINK (object);
switch (prop_id) {
case PROP_STREAM:{
GObject *stream;
if (GST_STATE (sink) == GST_STATE_PLAYING ||
GST_STATE (sink) == GST_STATE_PAUSED) {
GST_WARNING
("Setting a new stream not supported in PLAYING or PAUSED state");
break;
}
stream = g_value_dup_object (value);
if (sink->stream)
g_object_unref (sink->stream);
sink->stream = G_OUTPUT_STREAM (stream);
break;
}
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例7: gst_imx_v4l2src_set_focus_mode
static gboolean gst_imx_v4l2src_set_focus_mode(GstPhotography *photo,
GstPhotographyFocusMode focus_mode)
{
GstImxV4l2VideoSrc *v4l2src = GST_IMX_V4L2SRC(photo);
GST_LOG_OBJECT(v4l2src, "setting focus mode to %d", focus_mode);
switch (focus_mode) {
case GST_PHOTOGRAPHY_FOCUS_MODE_AUTO:
case GST_PHOTOGRAPHY_FOCUS_MODE_MACRO:
case GST_PHOTOGRAPHY_FOCUS_MODE_PORTRAIT:
case GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY:
break;
case GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL:
case GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED:
focus_mode = GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL;
break;
default:
GST_WARNING_OBJECT(v4l2src, "focus mode %d is not supported", focus_mode);
return FALSE;
}
g_mutex_lock(&v4l2src->af_mutex);
if (v4l2src->focus_mode != focus_mode) {
v4l2src->focus_mode = focus_mode;
if (GST_STATE(v4l2src) == GST_STATE_PAUSED || GST_STATE(v4l2src) == GST_STATE_PLAYING)
gst_imx_v4l2src_apply_focus_settings(v4l2src, TRUE);
}
g_mutex_unlock(&v4l2src->af_mutex);
return TRUE;
}
示例8: do_toggle_element
static gboolean
do_toggle_element (GstGConfVideoSrc * src)
{
GstPad *targetpad;
gchar *new_gconf_str;
GstState cur, next;
new_gconf_str = gst_gconf_get_string (GST_GCONF_AUDIOSRC_KEY);
if (new_gconf_str != NULL && src->gconf_str != NULL &&
(strlen (new_gconf_str) == 0 ||
strcmp (src->gconf_str, new_gconf_str) == 0)) {
g_free (new_gconf_str);
GST_DEBUG_OBJECT (src, "GConf key was updated, but it didn't change");
return TRUE;
}
GST_OBJECT_LOCK (src);
cur = GST_STATE (src);
next = GST_STATE_PENDING (src);
GST_OBJECT_UNLOCK (src);
if (cur >= GST_STATE_READY || next == GST_STATE_PAUSED) {
GST_DEBUG_OBJECT (src, "already running, ignoring GConf change");
g_free (new_gconf_str);
return TRUE;
}
g_free (src->gconf_str);
src->gconf_str = new_gconf_str;
/* kill old element */
if (src->kid) {
GST_DEBUG_OBJECT (src, "Removing old kid");
gst_element_set_state (src->kid, GST_STATE_NULL);
gst_bin_remove (GST_BIN (src), src->kid);
src->kid = NULL;
}
GST_DEBUG_OBJECT (src, "Creating new kid");
if (!(src->kid = gst_gconf_get_default_video_src ())) {
GST_ELEMENT_ERROR (src, LIBRARY, SETTINGS, (NULL),
("Failed to render video source from GConf"));
g_free (src->gconf_str);
src->gconf_str = NULL;
return FALSE;
}
gst_element_set_state (src->kid, GST_STATE (src));
gst_bin_add (GST_BIN (src), src->kid);
/* re-attach ghostpad */
GST_DEBUG_OBJECT (src, "Creating new ghostpad");
targetpad = gst_element_get_static_pad (src->kid, "src");
gst_ghost_pad_set_target (GST_GHOST_PAD (src->pad), targetpad);
gst_object_unref (targetpad);
GST_DEBUG_OBJECT (src, "done changing gconf video source");
return TRUE;
}
示例9: gst_gio_src_set_property
static void
gst_gio_src_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstGioSrc *src = GST_GIO_SRC (object);
switch (prop_id) {
case PROP_LOCATION:{
const gchar *uri = NULL;
if (GST_STATE (src) == GST_STATE_PLAYING ||
GST_STATE (src) == GST_STATE_PAUSED) {
GST_WARNING
("Setting a new location or GFile not supported in PLAYING or PAUSED state");
break;
}
GST_OBJECT_LOCK (GST_OBJECT (src));
if (src->file)
g_object_unref (src->file);
uri = g_value_get_string (value);
if (uri) {
src->file = g_file_new_for_uri (uri);
if (!src->file) {
GST_ERROR ("Could not create GFile for URI '%s'", uri);
}
} else {
src->file = NULL;
}
GST_OBJECT_UNLOCK (GST_OBJECT (src));
break;
}
case PROP_FILE:
if (GST_STATE (src) == GST_STATE_PLAYING ||
GST_STATE (src) == GST_STATE_PAUSED) {
GST_WARNING
("Setting a new location or GFile not supported in PLAYING or PAUSED state");
break;
}
GST_OBJECT_LOCK (GST_OBJECT (src));
if (src->file)
g_object_unref (src->file);
src->file = g_value_dup_object (value);
GST_OBJECT_UNLOCK (GST_OBJECT (src));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例10: gst_gnome_vfs_src_set_property
static void
gst_gnome_vfs_src_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstGnomeVFSSrc *src;
src = GST_GNOME_VFS_SRC (object);
switch (prop_id) {
case ARG_LOCATION:{
const gchar *new_location;
/* the element must be stopped or paused in order to do this */
if (GST_STATE (src) == GST_STATE_PLAYING ||
GST_STATE (src) == GST_STATE_PAUSED)
break;
if (src->uri) {
gnome_vfs_uri_unref (src->uri);
src->uri = NULL;
}
if (src->uri_name) {
g_free (src->uri_name);
src->uri_name = NULL;
}
new_location = g_value_get_string (value);
if (new_location) {
src->uri_name = gst_gnome_vfs_location_to_uri_string (new_location);
src->uri = gnome_vfs_uri_new (src->uri_name);
}
break;
}
case ARG_HANDLE:
if (GST_STATE (src) == GST_STATE_NULL ||
GST_STATE (src) == GST_STATE_READY) {
if (src->uri) {
gnome_vfs_uri_unref (src->uri);
src->uri = NULL;
}
if (src->uri_name) {
g_free (src->uri_name);
src->uri_name = NULL;
}
src->handle = g_value_get_boxed (value);
}
break;
case ARG_IRADIO_MODE:
src->iradio_mode = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例11: gst_gnome_vfs_src_uri_set_uri
static gboolean
gst_gnome_vfs_src_uri_set_uri (GstURIHandler * handler, const gchar * uri)
{
GstGnomeVFSSrc *src = GST_GNOME_VFS_SRC (handler);
if (GST_STATE (src) == GST_STATE_PLAYING ||
GST_STATE (src) == GST_STATE_PAUSED)
return FALSE;
g_object_set (G_OBJECT (src), "location", uri, NULL);
return TRUE;
}
示例12: rb_daap_src_uri_set_uri
static gboolean
rb_daap_src_uri_set_uri (GstURIHandler *handler,
const gchar *uri)
{
RBDAAPSrc *src = RB_DAAP_SRC (handler);
if (GST_STATE (src) == GST_STATE_PLAYING || GST_STATE (src) == GST_STATE_PAUSED) {
return FALSE;
}
g_object_set (G_OBJECT (src), "location", uri, NULL);
return TRUE;
}
示例13: gst_auto_audio_sink_detect
static gboolean
gst_auto_audio_sink_detect (GstAutoAudioSink * sink)
{
GstElement *esink;
GstPad *targetpad;
gst_auto_audio_sink_clear_kid (sink);
/* find element */
GST_DEBUG_OBJECT (sink, "Creating new kid");
if (!(esink = gst_auto_audio_sink_find_best (sink)))
goto no_sink;
g_object_set (G_OBJECT (esink), "ts-offset", sink->ts_offset, NULL);
sink->kid = esink;
/* Ensure the child is brought up to the right state to match the parent
* although it's currently always in READY and
* we're always doing NULL->READY. */
if (GST_STATE (sink->kid) < GST_STATE (sink))
gst_element_set_state (sink->kid, GST_STATE (sink));
gst_bin_add (GST_BIN (sink), esink);
/* attach ghost pad */
GST_DEBUG_OBJECT (sink, "Re-assigning ghostpad");
targetpad = gst_element_get_static_pad (sink->kid, "sink");
if (!gst_ghost_pad_set_target (GST_GHOST_PAD (sink->pad), targetpad))
goto target_failed;
gst_object_unref (targetpad);
GST_DEBUG_OBJECT (sink, "done changing auto audio sink");
return TRUE;
/* ERRORS */
no_sink:
{
GST_ELEMENT_ERROR (sink, LIBRARY, INIT, (NULL),
("Failed to find a supported audio sink"));
return FALSE;
}
target_failed:
{
GST_ELEMENT_ERROR (sink, LIBRARY, INIT, (NULL),
("Failed to set target pad"));
gst_object_unref (targetpad);
return FALSE;
}
}
示例14: rbspotifysrc_uri_set_uri
static gboolean
rbspotifysrc_uri_set_uri (GstURIHandler *handler,
const gchar *uri)
{
RBSpotifySrc *src = RBSPOTIFYSRC (handler);
if (GST_STATE (src) == GST_STATE_PLAYING || GST_STATE (src) == GST_STATE_PAUSED) {
return FALSE;
}
g_object_set (G_OBJECT (src), "uri", uri, NULL);
return TRUE;
}
示例15: rb_mtp_src_uri_set_uri
static gboolean
rb_mtp_src_uri_set_uri (GstURIHandler *handler, const gchar *uri)
{
RBMTPSrc *src = RB_MTP_SRC (handler);
if (GST_STATE (src) == GST_STATE_PLAYING || GST_STATE (src) == GST_STATE_PAUSED) {
return FALSE;
}
if (g_str_has_prefix (uri, "xrbmtp://") == FALSE) {
return FALSE;
}
return rb_mtp_src_set_uri (src, uri);
}