本文整理汇总了C++中GST_BASE_SRC_CLASS函数的典型用法代码示例。如果您正苦于以下问题:C++ GST_BASE_SRC_CLASS函数的具体用法?C++ GST_BASE_SRC_CLASS怎么用?C++ GST_BASE_SRC_CLASS使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GST_BASE_SRC_CLASS函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: gst_rtmp_src_class_init
static void
gst_rtmp_src_class_init (GstRTMPSrcClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
GstBaseSrcClass *gstbasesrc_class;
GstPushSrcClass *gstpushsrc_class;
gobject_class = G_OBJECT_CLASS (klass);
gstelement_class = GST_ELEMENT_CLASS (klass);
gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
gstpushsrc_class = GST_PUSH_SRC_CLASS (klass);
gobject_class->finalize = gst_rtmp_src_finalize;
gobject_class->set_property = gst_rtmp_src_set_property;
gobject_class->get_property = gst_rtmp_src_get_property;
/* properties */
g_object_class_install_property (gobject_class, PROP_LOCATION,
g_param_spec_string ("location", "RTMP Location",
"Location of the RTMP url to read",
DEFAULT_LOCATION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&srctemplate));
gst_element_class_set_static_metadata (gstelement_class,
"RTMP Source",
"Source/File",
"Read RTMP streams",
"Bastien Nocera <[email protected]>, "
"Sebastian Dröge <[email protected]>");
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_rtmp_src_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_rtmp_src_stop);
gstbasesrc_class->is_seekable = GST_DEBUG_FUNCPTR (gst_rtmp_src_is_seekable);
gstbasesrc_class->prepare_seek_segment =
GST_DEBUG_FUNCPTR (gst_rtmp_src_prepare_seek_segment);
gstbasesrc_class->do_seek = GST_DEBUG_FUNCPTR (gst_rtmp_src_do_seek);
gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_rtmp_src_create);
gstbasesrc_class->query = GST_DEBUG_FUNCPTR (gst_rtmp_src_query);
GST_DEBUG_CATEGORY_INIT (rtmpsrc_debug, "rtmpsrc", 0, "RTMP Source");
}
示例2: gst_ladspa_source_type_query
static gboolean
gst_ladspa_source_type_query (GstBaseSrc * base, GstQuery * query)
{
GstLADSPASource *ladspa = GST_LADSPA_SOURCE (base);
gboolean res = FALSE;
switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_CONVERT:
{
GstFormat src_fmt, dest_fmt;
gint64 src_val, dest_val;
gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
if (!gst_audio_info_convert (&ladspa->info, src_fmt, src_val, dest_fmt,
&dest_val)) {
GST_DEBUG_OBJECT (ladspa, "query failed");
return FALSE;
}
gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
res = TRUE;
break;
}
case GST_QUERY_SCHEDULING:
{
/* if we can operate in pull mode */
gst_query_set_scheduling (query, GST_SCHEDULING_FLAG_SEEKABLE, 1, -1, 0);
gst_query_add_scheduling_mode (query, GST_PAD_MODE_PUSH);
if (ladspa->can_activate_pull)
gst_query_add_scheduling_mode (query, GST_PAD_MODE_PULL);
res = TRUE;
break;
}
default:
res =
GST_BASE_SRC_CLASS (gst_ladspa_source_type_parent_class)->query
(base, query);
break;
}
return res;
}
示例3: gst_linsys_sdi_src_class_init
static void
gst_linsys_sdi_src_class_init (GstLinsysSdiSrcClass * klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstBaseSrcClass *base_src_class = GST_BASE_SRC_CLASS (klass);
GST_DEBUG_CATEGORY_INIT (gst_linsys_sdi_src_debug, "linsyssdisrc", 0,
"FIXME");
gobject_class->set_property = gst_linsys_sdi_src_set_property;
gobject_class->get_property = gst_linsys_sdi_src_get_property;
gobject_class->dispose = gst_linsys_sdi_src_dispose;
gobject_class->finalize = gst_linsys_sdi_src_finalize;
base_src_class->get_caps = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_get_caps);
base_src_class->set_caps = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_set_caps);
if (0)
base_src_class->negotiate =
GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_negotiate);
base_src_class->newsegment =
GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_newsegment);
base_src_class->start = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_start);
base_src_class->stop = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_stop);
base_src_class->get_times = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_get_times);
base_src_class->get_size = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_get_size);
base_src_class->is_seekable =
GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_is_seekable);
base_src_class->unlock = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_unlock);
base_src_class->event = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_event);
base_src_class->create = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_create);
if (0)
base_src_class->do_seek = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_do_seek);
base_src_class->query = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_query);
base_src_class->check_get_range =
GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_check_get_range);
base_src_class->fixate = GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_fixate);
base_src_class->unlock_stop =
GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_unlock_stop);
base_src_class->prepare_seek_segment =
GST_DEBUG_FUNCPTR (gst_linsys_sdi_src_prepare_seek_segment);
g_object_class_install_property (gobject_class, PROP_DEVICE,
g_param_spec_string ("device", "Device", "device to transmit data on",
DEFAULT_DEVICE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
示例4: gst_v4l2src_class_init
static void
gst_v4l2src_class_init (GstV4l2SrcClass * klass)
{
GObjectClass *gobject_class;
GstElementClass *element_class;
GstBaseSrcClass *basesrc_class;
GstPushSrcClass *pushsrc_class;
gobject_class = G_OBJECT_CLASS (klass);
element_class = GST_ELEMENT_CLASS (klass);
basesrc_class = GST_BASE_SRC_CLASS (klass);
pushsrc_class = GST_PUSH_SRC_CLASS (klass);
gobject_class->dispose = gst_v4l2src_dispose;
gobject_class->finalize = (GObjectFinalizeFunc) gst_v4l2src_finalize;
gobject_class->set_property = gst_v4l2src_set_property;
gobject_class->get_property = gst_v4l2src_get_property;
element_class->change_state = gst_v4l2src_change_state;
gst_v4l2_object_install_properties_helper (gobject_class,
DEFAULT_PROP_DEVICE);
g_object_class_install_property (gobject_class, PROP_QUEUE_SIZE,
g_param_spec_uint ("queue-size", "Queue size",
"Number of buffers to be enqueud in the driver in streaming mode",
GST_V4L2_MIN_BUFFERS, GST_V4L2_MAX_BUFFERS, PROP_DEF_QUEUE_SIZE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_ALWAYS_COPY,
g_param_spec_boolean ("always-copy", "Always Copy",
"If the buffer will or not be used directly from mmap",
PROP_DEF_ALWAYS_COPY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
basesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_v4l2src_get_caps);
basesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_v4l2src_set_caps);
basesrc_class->start = GST_DEBUG_FUNCPTR (gst_v4l2src_start);
basesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_v4l2src_unlock);
basesrc_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_v4l2src_unlock_stop);
basesrc_class->stop = GST_DEBUG_FUNCPTR (gst_v4l2src_stop);
basesrc_class->query = GST_DEBUG_FUNCPTR (gst_v4l2src_query);
basesrc_class->fixate = GST_DEBUG_FUNCPTR (gst_v4l2src_fixate);
basesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_v4l2src_negotiate);
pushsrc_class->create = GST_DEBUG_FUNCPTR (gst_v4l2src_create);
}
示例5: gst_spot_src_class_init
static void
gst_spot_src_class_init (GstSpotSrcClass * klass)
{
GObjectClass *gobject_class;
GstBaseSrcClass *gstbasesrc_class;
gobject_class = G_OBJECT_CLASS (klass);
gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
gobject_class->set_property = gst_spot_src_set_property;
gobject_class->get_property = gst_spot_src_get_property;
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_spot_src_finalize);
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_spot_src_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_spot_src_stop);
gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_spot_src_unlock);
gstbasesrc_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_spot_src_unlock_stop);
gstbasesrc_class->is_seekable = GST_DEBUG_FUNCPTR (gst_spot_src_is_seekable);
gstbasesrc_class->get_size = GST_DEBUG_FUNCPTR (gst_spot_src_get_size);
gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_spot_src_create);
gstbasesrc_class->query = GST_DEBUG_FUNCPTR (gst_spot_src_query);
g_object_class_install_property (gobject_class, ARG_USER,
g_param_spec_string ("user", "Username", "Username for premium spotify account",
DEFAULT_USER, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_PASS,
g_param_spec_string ("pass", "Password", "Password for premium spotify account",
DEFAULT_PASS, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_URI,
g_param_spec_string ("uri", "URI", "A URI", "unknown",
G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_BUFFER_TIME,
g_param_spec_uint64 ("buffer-time", "buffer time in us", "buffer time in us",
0,BUFFER_TIME_MAX,BUFFER_TIME_DEFAULT,
G_PARAM_READWRITE));
gst_spot_signals[SIGNAL_PLAY_TOKEN_LOST] =
g_signal_new ("play-token-lost", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_FIRST,
0, NULL, NULL,
g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
}
示例6: gst_codec_src_class_init
static void
gst_codec_src_class_init (GstCodecSrcClass * klass)
{
GstPushSrcClass *pushsrc_class = GST_PUSH_SRC_CLASS (klass);
GstBaseSrcClass *basesrc_class = GST_BASE_SRC_CLASS (klass);
static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("application/x-codec")
);
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_templ));
gst_element_class_set_metadata (element_class,
"Codec Src", "Source/Video", "yep", "me");
pushsrc_class->create = gst_codec_src_create;
basesrc_class->get_caps = gst_codec_src_get_caps;
}
示例7: gst_red_video_src_class_init
static void
gst_red_video_src_class_init (GstRedVideoSrcClass * klass)
{
GstPushSrcClass *pushsrc_class = GST_PUSH_SRC_CLASS (klass);
GstBaseSrcClass *basesrc_class = GST_BASE_SRC_CLASS (klass);
static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC, GST_PAD_ALWAYS,
GST_STATIC_CAPS ("video/x-raw, format=(string)I420")
);
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gst_element_class_add_pad_template (element_class,
gst_static_pad_template_get (&src_templ));
gst_element_class_set_metadata (element_class,
"Red Video Src", "Source/Video", "yep", "me");
pushsrc_class->create = gst_red_video_src_create;
basesrc_class->get_caps = gst_red_video_src_get_caps;
}
示例8: gst_gl_test_src_fixate
static GstCaps *
gst_gl_test_src_fixate (GstBaseSrc * bsrc, GstCaps * caps)
{
GstStructure *structure;
GST_DEBUG ("fixate");
caps = gst_caps_make_writable (caps);
structure = gst_caps_get_structure (caps, 0);
gst_structure_fixate_field_nearest_int (structure, "width", 320);
gst_structure_fixate_field_nearest_int (structure, "height", 240);
gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
caps = GST_BASE_SRC_CLASS (parent_class)->fixate (bsrc, caps);
return caps;
}
示例9: gst_dtmf_src_class_init
static void
gst_dtmf_src_class_init (GstDTMFSrcClass * klass)
{
GObjectClass *gobject_class;
GstBaseSrcClass *gstbasesrc_class;
GstElementClass *gstelement_class;
gobject_class = G_OBJECT_CLASS (klass);
gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
gstelement_class = GST_ELEMENT_CLASS (klass);
GST_DEBUG_CATEGORY_INIT (gst_dtmf_src_debug, "dtmfsrc", 0, "dtmfsrc element");
gst_element_class_add_pad_template (gstelement_class,
gst_static_pad_template_get (&gst_dtmf_src_template));
gst_element_class_set_metadata (gstelement_class, "DTMF tone generator",
"Source/Audio",
"Generates DTMF tones",
"Youness Alaoui <[email protected]>");
gobject_class->finalize = gst_dtmf_src_finalize;
gobject_class->set_property = gst_dtmf_src_set_property;
gobject_class->get_property = gst_dtmf_src_get_property;
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_INTERVAL,
g_param_spec_uint ("interval", "Interval between tone packets",
"Interval in ms between two tone packets", MIN_PACKET_INTERVAL,
MAX_PACKET_INTERVAL, DEFAULT_PACKET_INTERVAL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_dtmf_src_change_state);
gstelement_class->send_event = GST_DEBUG_FUNCPTR (gst_dtmf_src_send_event);
gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_dtmf_src_unlock);
gstbasesrc_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_dtmf_src_unlock_stop);
gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_dtmf_src_handle_event);
gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_dtmf_src_create);
gstbasesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_dtmf_src_negotiate);
}
示例10: gst_avdtp_src_class_init
static void
gst_avdtp_src_class_init (GstAvdtpSrcClass * klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
GstBaseSrcClass *basesrc_class = GST_BASE_SRC_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_avdtp_src_finalize);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_avdtp_src_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_avdtp_src_get_property);
basesrc_class->start = GST_DEBUG_FUNCPTR (gst_avdtp_src_start);
basesrc_class->stop = GST_DEBUG_FUNCPTR (gst_avdtp_src_stop);
basesrc_class->create = GST_DEBUG_FUNCPTR (gst_avdtp_src_create);
basesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_avdtp_src_unlock);
basesrc_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_avdtp_src_unlock_stop);
basesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_avdtp_src_getcaps);
basesrc_class->query = GST_DEBUG_FUNCPTR (gst_avdtp_src_query);
g_object_class_install_property (gobject_class, PROP_TRANSPORT,
g_param_spec_string ("transport",
"Transport", "Use configured transport", NULL, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, PROP_TRANSPORT_VOLUME,
g_param_spec_uint ("transport-volume",
"Transport volume",
"Volume of the transport (only valid if transport is acquired)",
0, 127, 127, G_PARAM_READWRITE));
gst_element_class_set_static_metadata (element_class,
"Bluetooth AVDTP Source",
"Source/Audio/Network/RTP",
"Receives audio from an A2DP device",
"Arun Raghavan <[email protected]>");
GST_DEBUG_CATEGORY_INIT (avdtpsrc_debug, "avdtpsrc", 0,
"Bluetooth AVDTP Source");
gst_element_class_add_static_pad_template (element_class,
&gst_avdtp_src_template);
}
示例11: gst_pulsesrc_class_init
static void
gst_pulsesrc_class_init (GstPulseSrcClass * klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstAudioSrcClass *gstaudiosrc_class = GST_AUDIO_SRC_CLASS (klass);
GstBaseSrcClass *gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_pulsesrc_finalize);
gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_pulsesrc_set_property);
gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_pulsesrc_get_property);
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_pulsesrc_change_state);
gstbasesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_pulsesrc_negotiate);
gstaudiosrc_class->open = GST_DEBUG_FUNCPTR (gst_pulsesrc_open);
gstaudiosrc_class->close = GST_DEBUG_FUNCPTR (gst_pulsesrc_close);
gstaudiosrc_class->prepare = GST_DEBUG_FUNCPTR (gst_pulsesrc_prepare);
gstaudiosrc_class->unprepare = GST_DEBUG_FUNCPTR (gst_pulsesrc_unprepare);
gstaudiosrc_class->read = GST_DEBUG_FUNCPTR (gst_pulsesrc_read);
gstaudiosrc_class->delay = GST_DEBUG_FUNCPTR (gst_pulsesrc_delay);
gstaudiosrc_class->reset = GST_DEBUG_FUNCPTR (gst_pulsesrc_reset);
/* Overwrite GObject fields */
g_object_class_install_property (gobject_class,
PROP_SERVER,
g_param_spec_string ("server", "Server",
"The PulseAudio server to connect to", DEFAULT_SERVER,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_DEVICE,
g_param_spec_string ("device", "Device",
"The PulseAudio source device to connect to", DEFAULT_DEVICE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class,
PROP_DEVICE_NAME,
g_param_spec_string ("device-name", "Device name",
"Human-readable name of the sound device", DEFAULT_DEVICE_NAME,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
}
示例12: gst_fd_src_class_init
static void
gst_fd_src_class_init (GstFdSrcClass * klass)
{
GObjectClass *gobject_class;
GstBaseSrcClass *gstbasesrc_class;
GstPushSrcClass *gstpush_src_class;
gobject_class = G_OBJECT_CLASS (klass);
gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
gstpush_src_class = GST_PUSH_SRC_CLASS (klass);
gobject_class->set_property = gst_fd_src_set_property;
gobject_class->get_property = gst_fd_src_get_property;
gobject_class->dispose = gst_fd_src_dispose;
g_object_class_install_property (gobject_class, PROP_FD,
g_param_spec_int ("fd", "fd", "An open file descriptor to read from",
0, G_MAXINT, DEFAULT_FD, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/**
* GstFdSrc:timeout
*
* Post a message after timeout microseconds
*
* Since: 0.10.21
*/
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TIMEOUT,
g_param_spec_uint64 ("timeout", "Timeout",
"Post a message after timeout microseconds (0 = disabled)", 0,
G_MAXUINT64, DEFAULT_TIMEOUT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_fd_src_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_fd_src_stop);
gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_fd_src_unlock);
gstbasesrc_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_fd_src_unlock_stop);
gstbasesrc_class->is_seekable = GST_DEBUG_FUNCPTR (gst_fd_src_is_seekable);
gstbasesrc_class->get_size = GST_DEBUG_FUNCPTR (gst_fd_src_get_size);
gstbasesrc_class->do_seek = GST_DEBUG_FUNCPTR (gst_fd_src_do_seek);
gstbasesrc_class->query = GST_DEBUG_FUNCPTR (gst_fd_src_query);
gstpush_src_class->create = GST_DEBUG_FUNCPTR (gst_fd_src_create);
}
示例13: gst_osx_video_src_query
static gboolean
gst_osx_video_src_query (GstBaseSrc * bsrc, GstQuery * query)
{
GstOSXVideoSrc *self;
gboolean res = FALSE;
self = GST_OSX_VIDEO_SRC (bsrc);
switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_LATENCY:
{
GstClockTime min_latency, max_latency;
gint fps_n, fps_d;
fps_n = FRAMERATE;
fps_d = 1;
/* min latency is the time to capture one frame */
min_latency = gst_util_uint64_scale_int (GST_SECOND, fps_d, fps_n);
/* max latency is total duration of the frame buffer */
// FIXME: we don't know what this is, so we'll just say 2 frames
max_latency = 2 * min_latency;
GST_DEBUG_OBJECT (bsrc,
"report latency min %" GST_TIME_FORMAT " max %" GST_TIME_FORMAT,
GST_TIME_ARGS (min_latency), GST_TIME_ARGS (max_latency));
/* we are always live, the min latency is 1 frame and the max latency is
* the complete buffer of frames. */
gst_query_set_latency (query, TRUE, min_latency, max_latency);
res = TRUE;
break;
}
default:
res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
break;
}
return res;
}
示例14: gst_cel_video_src_class_init
static void
gst_cel_video_src_class_init (GstCelVideoSrcClass * klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
GstBaseSrcClass *gstbasesrc_class = GST_BASE_SRC_CLASS (klass);
GstPushSrcClass *gstpushsrc_class = GST_PUSH_SRC_CLASS (klass);
gobject_class->dispose = gst_cel_video_src_dispose;
gobject_class->finalize = gst_cel_video_src_finalize;
gobject_class->get_property = gst_cel_video_src_get_property;
gobject_class->set_property = gst_cel_video_src_set_property;
gstelement_class->change_state = gst_cel_video_src_change_state;
gstbasesrc_class->get_caps = gst_cel_video_src_get_caps;
gstbasesrc_class->set_caps = gst_cel_video_src_set_caps;
gstbasesrc_class->start = gst_cel_video_src_start;
gstbasesrc_class->stop = gst_cel_video_src_stop;
gstbasesrc_class->query = gst_cel_video_src_query;
gstbasesrc_class->unlock = gst_cel_video_src_unlock;
gstbasesrc_class->unlock_stop = gst_cel_video_src_unlock_stop;
gstpushsrc_class->create = gst_cel_video_src_create;
g_object_class_install_property (gobject_class, PROP_DEVICE_INDEX,
g_param_spec_int ("device-index", "Device Index",
"The zero-based device index",
-1, G_MAXINT, DEFAULT_DEVICE_INDEX,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_DO_STATS,
g_param_spec_boolean ("do-stats", "Enable statistics",
"Enable logging of statistics", DEFAULT_DO_STATS,
G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_FPS,
g_param_spec_int ("fps", "Frames per second",
"Last measured framerate, if statistics are enabled",
-1, G_MAXINT, -1, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
GST_DEBUG_CATEGORY_INIT (gst_cel_video_src_debug, "celvideosrc",
0, "iOS Celestial video source");
}
示例15: gst_rpi_cam_src_fixate
static GstCaps *
gst_rpi_cam_src_fixate (GstBaseSrc * basesrc, GstCaps * caps)
{
GstStructure *structure;
gint i;
GST_DEBUG_OBJECT (basesrc, "fixating caps %" GST_PTR_FORMAT, caps);
caps = gst_caps_make_writable (caps);
for (i = 0; i < gst_caps_get_size (caps); ++i) {
structure = gst_caps_get_structure (caps, i);
/* Fixate to 1920x1080 resolution if possible */
gst_structure_fixate_field_nearest_int (structure, "width", 1920);
gst_structure_fixate_field_nearest_int (structure, "height", 1080);
gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
gst_structure_fixate_field (structure, "format");
}
GST_DEBUG_OBJECT (basesrc, "fixated caps %" GST_PTR_FORMAT, caps);
caps = GST_BASE_SRC_CLASS (parent_class)->fixate (basesrc, caps);
return caps;
}