本文整理汇总了C++中GST_BASE_SRC_PAD函数的典型用法代码示例。如果您正苦于以下问题:C++ GST_BASE_SRC_PAD函数的具体用法?C++ GST_BASE_SRC_PAD怎么用?C++ GST_BASE_SRC_PAD使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GST_BASE_SRC_PAD函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: gst_dtmf_src_negotiate
static gboolean
gst_dtmf_src_negotiate (GstBaseSrc * basesrc)
{
GstDTMFSrc *dtmfsrc = GST_DTMF_SRC (basesrc);
GstCaps *caps;
GstStructure *s;
gboolean ret;
caps = gst_pad_get_allowed_caps (GST_BASE_SRC_PAD (basesrc));
if (!caps)
caps =
gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD
(basesrc)));
if (gst_caps_is_empty (caps))
return FALSE;
gst_caps_truncate (caps);
s = gst_caps_get_structure (caps, 0);
gst_structure_fixate_field_nearest_int (s, "rate", DEFAULT_SAMPLE_RATE);
if (!gst_structure_get_int (s, "rate", &dtmfsrc->sample_rate)) {
GST_ERROR_OBJECT (dtmfsrc, "Could not get rate");
gst_caps_unref (caps);
return FALSE;
}
ret = gst_pad_set_caps (GST_BASE_SRC_PAD (basesrc), caps);
gst_caps_unref (caps);
return ret;
}
示例2: gst_decklink_audio_src_get_caps
static GstCaps *
gst_decklink_audio_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter)
{
GstDecklinkAudioSrc *self = GST_DECKLINK_AUDIO_SRC_CAST (bsrc);
GstCaps *caps;
// We don't support renegotiation
caps = gst_pad_get_current_caps (GST_BASE_SRC_PAD (bsrc));
if (!caps) {
GstCaps *channel_filter, *templ;
templ = gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD (bsrc));
channel_filter =
gst_caps_new_simple ("audio/x-raw", "channels", G_TYPE_INT,
self->channels, NULL);
caps = gst_caps_intersect (channel_filter, templ);
gst_caps_unref (channel_filter);
gst_caps_unref (templ);
}
if (filter) {
GstCaps *tmp =
gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
gst_caps_unref (caps);
caps = tmp;
}
return caps;
}
示例3: gst_win_inet_src_create
static GstFlowReturn
gst_win_inet_src_create (GstPushSrc * pushsrc, GstBuffer ** buffer)
{
GstWinInetSrc *self = GST_WIN_INET_SRC (pushsrc);
GstBaseSrc *basesrc = GST_BASE_SRC (pushsrc);
GstBuffer *buf = NULL;
GstFlowReturn ret = GST_FLOW_OK;
DWORD bytes_read = 0;
do {
GstCaps *caps = GST_PAD_CAPS (GST_BASE_SRC_PAD (self));
if (self->icy_caps != NULL)
caps = self->icy_caps;
ret = gst_pad_alloc_buffer (GST_BASE_SRC_PAD (basesrc),
self->cur_offset, basesrc->blocksize, caps, &buf);
if (G_LIKELY (ret == GST_FLOW_OK)) {
if (InternetReadFile (self->url, GST_BUFFER_DATA (buf),
basesrc->blocksize, &bytes_read)) {
if (bytes_read == 0) {
if (self->poll_mode) {
if (gst_win_inet_src_open (self)) {
gst_buffer_unref (buf);
buf = NULL;
} else {
ret = GST_FLOW_ERROR;
}
} else {
GST_ERROR_OBJECT (self, "short read (eof?)");
ret = GST_FLOW_UNEXPECTED;
}
}
} else {
GST_ERROR_OBJECT (self, "InternetReadFile failed: 0x%08lx",
GetLastError ());
ret = GST_FLOW_ERROR;
}
}
}
while (bytes_read == 0 && ret == GST_FLOW_OK);
if (ret == GST_FLOW_OK) {
GST_BUFFER_SIZE (buf) = bytes_read;
self->cur_offset += bytes_read;
*buffer = buf;
} else {
if (buf != NULL)
gst_buffer_unref (buf);
}
return ret;
}
示例4: gst_dv1394src_iec61883_receive
static int
gst_dv1394src_iec61883_receive (unsigned char *data, int len,
int complete, void *cbdata)
{
GstDV1394Src *dv1394src = GST_DV1394SRC (cbdata);
if (G_UNLIKELY (!GST_PAD_CAPS (GST_BASE_SRC_PAD (dv1394src)))) {
GstCaps *caps;
unsigned char *p = data;
// figure format (NTSC/PAL)
if (p[3] & 0x80) {
// PAL
dv1394src->frame_size = PAL_FRAMESIZE;
dv1394src->frame_rate = PAL_FRAMERATE;
GST_DEBUG ("PAL data");
caps = gst_caps_new_simple ("video/x-dv",
"format", G_TYPE_STRING, "PAL",
"systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
} else {
// NTSC (untested)
dv1394src->frame_size = NTSC_FRAMESIZE;
dv1394src->frame_rate = NTSC_FRAMERATE;
GST_DEBUG
("NTSC data [untested] - please report success/failure to <[email protected]>");
caps = gst_caps_new_simple ("video/x-dv",
"format", G_TYPE_STRING, "NTSC",
"systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
}
gst_pad_set_caps (GST_BASE_SRC_PAD (dv1394src), caps);
gst_caps_unref (caps);
}
dv1394src->frame = NULL;
if (G_LIKELY ((dv1394src->frame_sequence + 1) % (dv1394src->skip +
dv1394src->consecutive) < dv1394src->consecutive)) {
if (complete && len == dv1394src->frame_size) {
guint8 *bufdata;
GstBuffer *buf;
buf = gst_buffer_new_and_alloc (dv1394src->frame_size);
GST_BUFFER_OFFSET (buf) = dv1394src->frame_sequence;
bufdata = GST_BUFFER_DATA (buf);
memcpy (bufdata, data, len);
dv1394src->buf = buf;
}
}
dv1394src->frame_sequence++;
return 0;
}
示例5: gst_neonhttp_src_create
static GstFlowReturn
gst_neonhttp_src_create (GstPushSrc * psrc, GstBuffer ** outbuf)
{
GstNeonhttpSrc *src;
GstBaseSrc *basesrc;
GstFlowReturn ret;
gint read;
src = GST_NEONHTTP_SRC (psrc);
basesrc = GST_BASE_SRC_CAST (psrc);
/* The caller should know the number of bytes and not read beyond EOS. */
if (G_UNLIKELY (src->eos))
goto eos;
/* Create the buffer. */
ret = gst_pad_alloc_buffer (GST_BASE_SRC_PAD (basesrc),
basesrc->segment.last_stop, basesrc->blocksize,
src->icy_caps ? src->icy_caps :
GST_PAD_CAPS (GST_BASE_SRC_PAD (basesrc)), outbuf);
if (G_UNLIKELY (ret != GST_FLOW_OK))
goto done;
read = gst_neonhttp_src_request_dispatch (src, *outbuf);
if (G_UNLIKELY (read < 0))
goto read_error;
GST_LOG_OBJECT (src, "returning %u bytes", GST_BUFFER_SIZE (*outbuf));
done:
return ret;
/* ERRORS */
eos:
{
GST_DEBUG_OBJECT (src, "EOS reached");
return GST_FLOW_UNEXPECTED;
}
read_error:
{
GST_ELEMENT_ERROR (src, RESOURCE, READ,
(NULL), ("Could not read any bytes (%i, %s)", read,
ne_get_error (src->session)));
gst_buffer_unref (*outbuf);
*outbuf = NULL;
return GST_FLOW_ERROR;
}
}
开发者ID:freedesktop-unofficial-mirror,项目名称:gstreamer-sdk__gst-plugins-bad,代码行数:49,代码来源:gstneonhttpsrc.c
示例6: gst_data_uri_src_get_caps
static GstCaps *
gst_data_uri_src_get_caps (GstBaseSrc * basesrc, GstCaps * filter)
{
GstDataURISrc *src = GST_DATA_URI_SRC (basesrc);
GstCaps *caps;
GST_OBJECT_LOCK (src);
if (gst_pad_has_current_caps (GST_BASE_SRC_PAD (basesrc)))
caps = gst_pad_get_current_caps (GST_BASE_SRC_PAD (basesrc));
else
caps = gst_caps_new_any ();
GST_OBJECT_UNLOCK (src);
return caps;
}
示例7: gst_aravis_init
static void
gst_aravis_init (GstAravis *gst_aravis, GstAravisClass *g_class)
{
GstPad *pad = GST_BASE_SRC_PAD (gst_aravis);
gst_pad_set_fixatecaps_function (pad, gst_aravis_fixate_caps);
gst_base_src_set_live (GST_BASE_SRC (gst_aravis), TRUE);
gst_base_src_set_format (GST_BASE_SRC (gst_aravis), GST_FORMAT_TIME);
gst_aravis->camera_name = NULL;
gst_aravis->gain = -1;
gst_aravis->gain_auto = FALSE;
gst_aravis->exposure_time_us = -1;
gst_aravis->exposure_auto = FALSE;
gst_aravis->offset_x = 0;
gst_aravis->offset_y = 0;
gst_aravis->h_binning = -1;
gst_aravis->v_binning = -1;
gst_aravis->packet_resend = TRUE;
gst_aravis->payload = 0;
gst_aravis->buffer_timeout_us = GST_ARAVIS_BUFFER_TIMEOUT_DEFAULT;
gst_aravis->camera = NULL;
gst_aravis->stream = NULL;
gst_aravis->all_caps = NULL;
gst_aravis->fixed_caps = NULL;
}
示例8: gst_multi_file_src_set_property
static void
gst_multi_file_src_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstMultiFileSrc *src = GST_MULTI_FILE_SRC (object);
switch (prop_id) {
case ARG_LOCATION:
gst_multi_file_src_set_location (src, g_value_get_string (value));
break;
case ARG_INDEX:
src->index = g_value_get_int (value);
break;
case ARG_CAPS:
{
const GstCaps *caps = gst_value_get_caps (value);
GstCaps *new_caps;
if (caps == NULL) {
new_caps = gst_caps_new_any ();
} else {
new_caps = gst_caps_copy (caps);
}
gst_caps_replace (&src->caps, new_caps);
gst_pad_set_caps (GST_BASE_SRC_PAD (src), new_caps);
}
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例9: gst_audio_test_src_init
static void
gst_audio_test_src_init (GstAudioTestSrc * src, GstAudioTestSrcClass * g_class)
{
GstPad *pad = GST_BASE_SRC_PAD (src);
gst_pad_set_fixatecaps_function (pad, gst_audio_test_src_src_fixate);
src->samplerate = 44100;
src->format = GST_AUDIO_TEST_SRC_FORMAT_NONE;
src->volume = DEFAULT_VOLUME;
src->freq = DEFAULT_FREQ;
/* we operate in time */
gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
gst_base_src_set_live (GST_BASE_SRC (src), DEFAULT_IS_LIVE);
src->samples_per_buffer = DEFAULT_SAMPLES_PER_BUFFER;
src->generate_samples_per_buffer = src->samples_per_buffer;
src->timestamp_offset = DEFAULT_TIMESTAMP_OFFSET;
src->can_activate_pull = DEFAULT_CAN_ACTIVATE_PULL;
src->gen = NULL;
src->wave = DEFAULT_WAVE;
gst_base_src_set_blocksize (GST_BASE_SRC (src), -1);
}
示例10: gst_v4l2src_get_caps
static GstCaps *
gst_v4l2src_get_caps (GstBaseSrc * src)
{
GstV4l2Src *v4l2src = GST_V4L2SRC (src);
GstCaps *ret;
GSList *walk;
GSList *formats;
if (!GST_V4L2_IS_OPEN (v4l2src->v4l2object)) {
/* FIXME: copy? */
return
gst_caps_copy (gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD
(v4l2src)));
}
if (v4l2src->probed_caps)
return gst_caps_ref (v4l2src->probed_caps);
formats = gst_v4l2_object_get_format_list (v4l2src->v4l2object);
ret = gst_caps_new_empty ();
for (walk = formats; walk; walk = walk->next) {
struct v4l2_fmtdesc *format;
GstStructure *template;
示例11: gst_dv1394src_init
static void
gst_dv1394src_init (GstDV1394Src * dv1394src, GstDV1394SrcClass * klass)
{
GstPad *srcpad = GST_BASE_SRC_PAD (dv1394src);
gst_base_src_set_live (GST_BASE_SRC (dv1394src), TRUE);
gst_base_src_set_format (GST_BASE_SRC (dv1394src), GST_FORMAT_TIME);
gst_base_src_set_do_timestamp (GST_BASE_SRC (dv1394src), TRUE);
gst_pad_use_fixed_caps (srcpad);
dv1394src->port = DEFAULT_PORT;
dv1394src->channel = DEFAULT_CHANNEL;
dv1394src->consecutive = DEFAULT_CONSECUTIVE;
dv1394src->skip = DEFAULT_SKIP;
dv1394src->drop_incomplete = DEFAULT_DROP_INCOMPLETE;
dv1394src->use_avc = DEFAULT_USE_AVC;
dv1394src->guid = DEFAULT_GUID;
dv1394src->uri = g_strdup_printf ("dv://%d", dv1394src->port);
dv1394src->device_name = g_strdup_printf ("Default");
READ_SOCKET (dv1394src) = -1;
WRITE_SOCKET (dv1394src) = -1;
/* initialized when first header received */
dv1394src->frame_size = 0;
dv1394src->buf = NULL;
dv1394src->frame = NULL;
dv1394src->frame_sequence = 0;
dv1394src->provided_clock = gst_1394_clock_new ("dv1394clock");
}
示例12: gst_v4l2src_get_caps
static GstCaps *
gst_v4l2src_get_caps (GstBaseSrc * src, GstCaps * filter)
{
GstV4l2Src *v4l2src;
GstV4l2Object *obj;
GstCaps *ret;
GSList *walk;
GSList *formats;
v4l2src = GST_V4L2SRC (src);
obj = v4l2src->v4l2object;
if (!GST_V4L2_IS_OPEN (obj)) {
return gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD (v4l2src));
}
if (v4l2src->probed_caps)
return gst_caps_ref (v4l2src->probed_caps);
formats = gst_v4l2_object_get_format_list (obj);
ret = gst_caps_new_empty ();
for (walk = formats; walk; walk = walk->next) {
struct v4l2_fmtdesc *format;
GstStructure *template;
示例13: gst_dshowvideosrc_get_caps
static GstCaps *
gst_dshowvideosrc_get_caps (GstBaseSrc * basesrc, GstCaps * filter)
{
GstDshowVideoSrc *src = GST_DSHOWVIDEOSRC (basesrc);
GstCaps *caps;
if (src->caps) {
caps = gst_caps_ref (src->caps);
} else {
caps = gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD (src));
}
if (caps) {
GstCaps *filtcaps;
if (filter) {
filtcaps = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
} else {
filtcaps = gst_caps_ref (caps);
}
gst_caps_unref (caps);
return filtcaps;
}
return NULL;
}
示例14: gst_multi_file_src_set_property
static void
gst_multi_file_src_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstMultiFileSrc *src = GST_MULTI_FILE_SRC (object);
switch (prop_id) {
case PROP_LOCATION:
gst_multi_file_src_set_location (src, g_value_get_string (value));
break;
case PROP_INDEX:
GST_OBJECT_LOCK (src);
/* index was really meant to be read-only, but for backwards-compatibility
* we set start_index to make it work as it used to */
if (!GST_OBJECT_FLAG_IS_SET (src, GST_BASE_SRC_FLAG_STARTED))
src->start_index = g_value_get_int (value);
else
src->index = g_value_get_int (value);
GST_OBJECT_UNLOCK (src);
break;
case PROP_START_INDEX:
src->start_index = g_value_get_int (value);
break;
case PROP_STOP_INDEX:
src->stop_index = g_value_get_int (value);
break;
case PROP_CAPS:
{
GstStructure *st = NULL;
const GstCaps *caps = gst_value_get_caps (value);
GstCaps *new_caps;
if (caps == NULL) {
new_caps = gst_caps_new_any ();
} else {
new_caps = gst_caps_copy (caps);
}
gst_caps_replace (&src->caps, new_caps);
gst_pad_set_caps (GST_BASE_SRC_PAD (src), new_caps);
if (new_caps && gst_caps_get_size (new_caps) == 1 &&
(st = gst_caps_get_structure (new_caps, 0))
&& gst_structure_get_fraction (st, "framerate", &src->fps_n,
&src->fps_d)) {
GST_INFO_OBJECT (src, "Seting framerate to %d/%d", src->fps_n,
src->fps_d);
} else {
src->fps_n = -1;
src->fps_d = -1;
}
}
break;
case PROP_LOOP:
src->loop = g_value_get_boolean (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例15: gst_genicamsrc_get_caps
static GstCaps *
gst_genicamsrc_get_caps (GstBaseSrc * bsrc, GstCaps * filter)
{
GstGenicamSrc *src = GST_GENICAM_SRC (bsrc);
GstCaps *caps;
if (src->hDS == NULL) {
caps = gst_pad_get_pad_template_caps (GST_BASE_SRC_PAD (src));
} else {
caps = gst_caps_copy (src->caps);
}
GST_DEBUG_OBJECT (src, "The caps before filtering are %" GST_PTR_FORMAT,
caps);
if (filter && caps) {
GstCaps *tmp = gst_caps_intersect (caps, filter);
gst_caps_unref (caps);
caps = tmp;
}
GST_DEBUG_OBJECT (src, "The caps after filtering are %" GST_PTR_FORMAT, caps);
return caps;
}