本文整理汇总了C++中GST_AUDIO_INFO_RATE函数的典型用法代码示例。如果您正苦于以下问题:C++ GST_AUDIO_INFO_RATE函数的具体用法?C++ GST_AUDIO_INFO_RATE怎么用?C++ GST_AUDIO_INFO_RATE使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GST_AUDIO_INFO_RATE函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: gst_level_set_property
static void
gst_level_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstLevel *filter = GST_LEVEL (object);
switch (prop_id) {
case PROP_POST_MESSAGES:
/* fall-through */
case PROP_MESSAGE:
filter->post_messages = g_value_get_boolean (value);
break;
case PROP_INTERVAL:
filter->interval = g_value_get_uint64 (value);
if (GST_AUDIO_INFO_RATE (&filter->info)) {
filter->interval_frames =
GST_CLOCK_TIME_TO_FRAMES (filter->interval,
GST_AUDIO_INFO_RATE (&filter->info));
}
break;
case PROP_PEAK_TTL:
filter->decay_peak_ttl =
gst_guint64_to_gdouble (g_value_get_uint64 (value));
break;
case PROP_PEAK_FALLOFF:
filter->decay_peak_falloff = g_value_get_double (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例2: gst_audio_info_is_equal
/**
* gst_audio_info_is_equal:
* @info: a #GstAudioInfo
* @other: a #GstAudioInfo
*
* Compares two #GstAudioInfo and returns whether they are equal or not
*
* Returns: %TRUE if @info and @other are equal, else %FALSE.
*
* Since: 1.2
*
*/
gboolean
gst_audio_info_is_equal (const GstAudioInfo * info, const GstAudioInfo * other)
{
if (info == other)
return TRUE;
if (info->finfo == NULL || other->finfo == NULL)
return FALSE;
if (GST_AUDIO_INFO_FORMAT (info) != GST_AUDIO_INFO_FORMAT (other))
return FALSE;
if (GST_AUDIO_INFO_FLAGS (info) != GST_AUDIO_INFO_FLAGS (other))
return FALSE;
if (GST_AUDIO_INFO_LAYOUT (info) != GST_AUDIO_INFO_LAYOUT (other))
return FALSE;
if (GST_AUDIO_INFO_RATE (info) != GST_AUDIO_INFO_RATE (other))
return FALSE;
if (GST_AUDIO_INFO_CHANNELS (info) != GST_AUDIO_INFO_CHANNELS (other))
return FALSE;
if (GST_AUDIO_INFO_CHANNELS (info) > 64)
return TRUE;
if (memcmp (info->position, other->position,
GST_AUDIO_INFO_CHANNELS (info) * sizeof (GstAudioChannelPosition)) !=
0)
return FALSE;
return TRUE;
}
示例3: gst_opus_enc_set_format
static gboolean
gst_opus_enc_set_format (GstAudioEncoder * benc, GstAudioInfo * info)
{
GstOpusEnc *enc;
enc = GST_OPUS_ENC (benc);
g_mutex_lock (enc->property_lock);
enc->n_channels = GST_AUDIO_INFO_CHANNELS (info);
enc->sample_rate = GST_AUDIO_INFO_RATE (info);
gst_opus_enc_setup_channel_mappings (enc, info);
GST_DEBUG_OBJECT (benc, "Setup with %d channels, %d Hz", enc->n_channels,
enc->sample_rate);
/* handle reconfigure */
if (enc->state) {
opus_multistream_encoder_destroy (enc->state);
enc->state = NULL;
}
if (!gst_opus_enc_setup (enc))
return FALSE;
enc->frame_samples = gst_opus_enc_get_frame_samples (enc);
/* feedback to base class */
gst_opus_enc_setup_base_class (enc, benc);
g_mutex_unlock (enc->property_lock);
return TRUE;
}
示例4: gst_level_set_property
static void
gst_level_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstLevel *filter = GST_LEVEL (object);
switch (prop_id) {
case PROP_POST_MESSAGES:
/* fall-through */
case PROP_MESSAGE:
filter->post_messages = g_value_get_boolean (value);
break;
case PROP_INTERVAL:
filter->interval = g_value_get_uint64 (value);
/* Not exactly thread-safe, but property does not advertise that it
* can be changed at runtime anyway */
if (GST_AUDIO_INFO_RATE (&filter->info)) {
gst_level_recalc_interval_frames (filter);
}
break;
case PROP_PEAK_TTL:
filter->decay_peak_ttl =
gst_guint64_to_gdouble (g_value_get_uint64 (value));
break;
case PROP_PEAK_FALLOFF:
filter->decay_peak_falloff = g_value_get_double (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
}
}
示例5: gst_lv2_source_set_caps
static gboolean
gst_lv2_source_set_caps (GstBaseSrc * base, GstCaps * caps)
{
GstLV2Source *lv2 = (GstLV2Source *) base;
GstAudioInfo info;
if (!gst_audio_info_from_caps (&info, caps)) {
GST_ERROR_OBJECT (base, "received invalid caps");
return FALSE;
}
GST_DEBUG_OBJECT (lv2, "negotiated to caps %" GST_PTR_FORMAT, caps);
lv2->info = info;
gst_base_src_set_blocksize (base,
GST_AUDIO_INFO_BPF (&info) * lv2->samples_per_buffer);
if (!gst_lv2_setup (&lv2->lv2, GST_AUDIO_INFO_RATE (&info)))
goto no_instance;
return TRUE;
no_instance:
{
GST_ERROR_OBJECT (lv2, "could not create instance");
return FALSE;
}
}
示例6: gst_audio_filter_template_setup
static gboolean
gst_audio_filter_template_setup (GstAudioFilter * filter,
const GstAudioInfo * info)
{
GstAudioFilterTemplate *filter_template;
GstAudioFormat fmt;
gint chans, rate;
filter_template = GST_AUDIO_FILTER_TEMPLATE (filter);
rate = GST_AUDIO_INFO_RATE (info);
chans = GST_AUDIO_INFO_CHANNELS (info);
fmt = GST_AUDIO_INFO_FORMAT (info);
GST_INFO_OBJECT (filter_template, "format %d (%s), rate %d, %d channels",
fmt, GST_AUDIO_INFO_NAME (info), rate, chans);
/* if any setup needs to be done (like memory allocated), do it here */
/* The audio filter base class also saves the audio info in
* GST_AUDIO_FILTER_INFO(filter) so it's automatically available
* later from there as well */
return TRUE;
}
示例7: gst_lv2_source_do_seek
/* seek to time, will be called when we operate in push mode. In pull mode we
* get the requested byte offset. */
static gboolean
gst_lv2_source_do_seek (GstBaseSrc * base, GstSegment * segment)
{
GstLV2Source *lv2 = (GstLV2Source *) base;
GstClockTime time;
gint samplerate, bpf;
gint64 next_sample;
GST_DEBUG_OBJECT (lv2, "seeking %" GST_SEGMENT_FORMAT, segment);
time = segment->position;
lv2->reverse = (segment->rate < 0.0);
samplerate = GST_AUDIO_INFO_RATE (&lv2->info);
bpf = GST_AUDIO_INFO_BPF (&lv2->info);
/* now move to the time indicated, don't seek to the sample *after* the time */
next_sample = gst_util_uint64_scale_int (time, samplerate, GST_SECOND);
lv2->next_byte = next_sample * bpf;
if (samplerate == 0)
lv2->next_time = 0;
else
lv2->next_time =
gst_util_uint64_scale_round (next_sample, GST_SECOND, samplerate);
GST_DEBUG_OBJECT (lv2, "seeking next_sample=%" G_GINT64_FORMAT
" next_time=%" GST_TIME_FORMAT, next_sample,
GST_TIME_ARGS (lv2->next_time));
g_assert (lv2->next_time <= time);
lv2->next_sample = next_sample;
if (!lv2->reverse) {
if (GST_CLOCK_TIME_IS_VALID (segment->start)) {
segment->time = segment->start;
}
} else {
if (GST_CLOCK_TIME_IS_VALID (segment->stop)) {
segment->time = segment->stop;
}
}
if (GST_CLOCK_TIME_IS_VALID (segment->stop)) {
time = segment->stop;
lv2->sample_stop =
gst_util_uint64_scale_round (time, samplerate, GST_SECOND);
lv2->check_seek_stop = TRUE;
} else {
lv2->check_seek_stop = FALSE;
}
lv2->eos_reached = FALSE;
return TRUE;
}
示例8: gst_pulse_fill_format_info
gboolean
gst_pulse_fill_format_info (GstAudioRingBufferSpec * spec, pa_format_info ** f,
guint * channels)
{
pa_format_info *format;
pa_sample_format_t sf = PA_SAMPLE_INVALID;
GstAudioInfo *ainfo = &spec->info;
format = pa_format_info_new ();
if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MU_LAW
&& GST_AUDIO_INFO_WIDTH (ainfo) == 8) {
format->encoding = PA_ENCODING_PCM;
sf = PA_SAMPLE_ULAW;
} else if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_A_LAW
&& GST_AUDIO_INFO_WIDTH (ainfo) == 8) {
format->encoding = PA_ENCODING_PCM;
sf = PA_SAMPLE_ALAW;
} else if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_RAW) {
format->encoding = PA_ENCODING_PCM;
if (!gstaudioformat_to_pasampleformat (GST_AUDIO_INFO_FORMAT (ainfo), &sf))
goto fail;
} else if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_AC3) {
format->encoding = PA_ENCODING_AC3_IEC61937;
} else if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_EAC3) {
format->encoding = PA_ENCODING_EAC3_IEC61937;
} else if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_DTS) {
format->encoding = PA_ENCODING_DTS_IEC61937;
} else if (spec->type == GST_AUDIO_RING_BUFFER_FORMAT_TYPE_MPEG) {
format->encoding = PA_ENCODING_MPEG_IEC61937;
} else {
goto fail;
}
if (format->encoding == PA_ENCODING_PCM) {
pa_format_info_set_sample_format (format, sf);
pa_format_info_set_channels (format, GST_AUDIO_INFO_CHANNELS (ainfo));
}
pa_format_info_set_rate (format, GST_AUDIO_INFO_RATE (ainfo));
if (!pa_format_info_valid (format))
goto fail;
*f = format;
*channels = GST_AUDIO_INFO_CHANNELS (ainfo);
return TRUE;
fail:
if (format)
pa_format_info_free (format);
return FALSE;
}
示例9: gst_decklink_audio_sink_ringbuffer_acquire
static gboolean
gst_decklink_audio_sink_ringbuffer_acquire (GstAudioRingBuffer * rb,
GstAudioRingBufferSpec * spec)
{
GstDecklinkAudioSinkRingBuffer *self =
GST_DECKLINK_AUDIO_SINK_RING_BUFFER_CAST (rb);
HRESULT ret;
BMDAudioSampleType sample_depth;
GST_DEBUG_OBJECT (self->sink, "Acquire");
if (spec->info.finfo->format == GST_AUDIO_FORMAT_S16LE) {
sample_depth = bmdAudioSampleType16bitInteger;
} else {
sample_depth = bmdAudioSampleType32bitInteger;
}
ret = self->output->output->EnableAudioOutput (bmdAudioSampleRate48kHz,
sample_depth, 2, bmdAudioOutputStreamContinuous);
if (ret != S_OK) {
GST_WARNING_OBJECT (self->sink, "Failed to enable audio output 0x%08x",
ret);
return FALSE;
}
g_mutex_lock (&self->output->lock);
self->output->audio_enabled = TRUE;
if (self->output->start_scheduled_playback)
self->output->start_scheduled_playback (self->output->videosink);
g_mutex_unlock (&self->output->lock);
ret =
self->output->
output->SetAudioCallback (new GStreamerAudioOutputCallback (self));
if (ret != S_OK) {
GST_WARNING_OBJECT (self->sink,
"Failed to set audio output callback 0x%08x", ret);
return FALSE;
}
spec->segsize =
(spec->latency_time * GST_AUDIO_INFO_RATE (&spec->info) /
G_USEC_PER_SEC) * GST_AUDIO_INFO_BPF (&spec->info);
spec->segtotal = spec->buffer_time / spec->latency_time;
// set latency to one more segment as we need some headroom
spec->seglatency = spec->segtotal + 1;
rb->size = spec->segtotal * spec->segsize;
rb->memory = (guint8 *) g_malloc0 (rb->size);
return TRUE;
}
示例10: gst_audio_iir_filter_setup
/* get notified of caps and plug in the correct process function */
static gboolean
gst_audio_iir_filter_setup (GstAudioFilter * base, const GstAudioInfo * info)
{
GstAudioIIRFilter *self = GST_AUDIO_IIR_FILTER (base);
gint new_rate = GST_AUDIO_INFO_RATE (info);
if (GST_AUDIO_FILTER_RATE (self) != new_rate) {
g_signal_emit (G_OBJECT (self),
gst_audio_iir_filter_signals[SIGNAL_RATE_CHANGED], 0, new_rate);
}
return GST_AUDIO_FILTER_CLASS (parent_class)->setup (base, info);
}
示例11: gst_audio_aggregator_mix_buffer
static gboolean
gst_audio_aggregator_mix_buffer (GstAudioAggregator * aagg,
GstAudioAggregatorPad * pad, GstBuffer * inbuf, GstBuffer * outbuf)
{
guint overlap;
guint out_start;
gboolean filled;
guint blocksize;
blocksize = gst_util_uint64_scale (aagg->priv->output_buffer_duration,
GST_AUDIO_INFO_RATE (&aagg->info), GST_SECOND);
blocksize = MAX (1, blocksize);
/* Overlap => mix */
if (aagg->priv->offset < pad->priv->output_offset)
out_start = pad->priv->output_offset - aagg->priv->offset;
else
out_start = 0;
overlap = pad->priv->size - pad->priv->position;
if (overlap > blocksize - out_start)
overlap = blocksize - out_start;
if (GST_BUFFER_FLAG_IS_SET (inbuf, GST_BUFFER_FLAG_GAP)) {
/* skip gap buffer */
GST_LOG_OBJECT (pad, "skipping GAP buffer");
pad->priv->output_offset += pad->priv->size - pad->priv->position;
pad->priv->position = pad->priv->size;
gst_buffer_replace (&pad->priv->buffer, NULL);
return FALSE;
}
filled = GST_AUDIO_AGGREGATOR_GET_CLASS (aagg)->aggregate_one_buffer (aagg,
pad, inbuf, pad->priv->position, outbuf, out_start, overlap);
if (filled)
GST_BUFFER_FLAG_UNSET (outbuf, GST_BUFFER_FLAG_GAP);
pad->priv->position += overlap;
pad->priv->output_offset += overlap;
if (pad->priv->position == pad->priv->size) {
/* Buffer done, drop it */
gst_buffer_replace (&pad->priv->buffer, NULL);
GST_DEBUG_OBJECT (pad, "Finished mixing buffer, waiting for next");
return FALSE;
}
return TRUE;
}
示例12: gst_celt_enc_set_format
static gboolean
gst_celt_enc_set_format (GstAudioEncoder * benc, GstAudioInfo * info)
{
GstCeltEnc *enc;
GstCaps *otherpadcaps;
enc = GST_CELT_ENC (benc);
enc->channels = GST_AUDIO_INFO_CHANNELS (info);
enc->rate = GST_AUDIO_INFO_RATE (info);
/* handle reconfigure */
if (enc->state) {
celt_encoder_destroy (enc->state);
enc->state = NULL;
}
if (enc->mode) {
celt_mode_destroy (enc->mode);
enc->mode = NULL;
}
memset (&enc->header, 0, sizeof (enc->header));
otherpadcaps = gst_pad_get_allowed_caps (GST_AUDIO_ENCODER_SRC_PAD (enc));
if (otherpadcaps) {
if (!gst_caps_is_empty (otherpadcaps)) {
GstStructure *ps = gst_caps_get_structure (otherpadcaps, 0);
gst_structure_get_int (ps, "frame-size", &enc->frame_size);
}
gst_caps_unref (otherpadcaps);
}
if (enc->requested_frame_size > 0)
enc->frame_size = enc->requested_frame_size;
GST_DEBUG_OBJECT (enc, "channels=%d rate=%d frame-size=%d",
enc->channels, enc->rate, enc->frame_size);
if (!gst_celt_enc_setup (enc))
return FALSE;
/* feedback to base class */
gst_audio_encoder_set_latency (benc,
gst_celt_enc_get_latency (enc), gst_celt_enc_get_latency (enc));
gst_audio_encoder_set_frame_samples_min (benc, enc->frame_size);
gst_audio_encoder_set_frame_samples_max (benc, enc->frame_size);
gst_audio_encoder_set_frame_max (benc, 1);
return TRUE;
}
示例13: gst_freeverb_init_rev_model
static void
gst_freeverb_init_rev_model (GstFreeverb * filter)
{
gfloat srfactor = GST_AUDIO_INFO_RATE (&filter->info) / 44100.0f;
GstFreeverbPrivate *priv = filter->priv;
freeverb_revmodel_free (filter);
priv->gain = fixedgain;
freeverb_comb_setbuffer (&priv->combL[0], combtuningL1 * srfactor);
freeverb_comb_setbuffer (&priv->combR[0], combtuningR1 * srfactor);
freeverb_comb_setbuffer (&priv->combL[1], combtuningL2 * srfactor);
freeverb_comb_setbuffer (&priv->combR[1], combtuningR2 * srfactor);
freeverb_comb_setbuffer (&priv->combL[2], combtuningL3 * srfactor);
freeverb_comb_setbuffer (&priv->combR[2], combtuningR3 * srfactor);
freeverb_comb_setbuffer (&priv->combL[3], combtuningL4 * srfactor);
freeverb_comb_setbuffer (&priv->combR[3], combtuningR4 * srfactor);
freeverb_comb_setbuffer (&priv->combL[4], combtuningL5 * srfactor);
freeverb_comb_setbuffer (&priv->combR[4], combtuningR5 * srfactor);
freeverb_comb_setbuffer (&priv->combL[5], combtuningL6 * srfactor);
freeverb_comb_setbuffer (&priv->combR[5], combtuningR6 * srfactor);
freeverb_comb_setbuffer (&priv->combL[6], combtuningL7 * srfactor);
freeverb_comb_setbuffer (&priv->combR[6], combtuningR7 * srfactor);
freeverb_comb_setbuffer (&priv->combL[7], combtuningL8 * srfactor);
freeverb_comb_setbuffer (&priv->combR[7], combtuningR8 * srfactor);
freeverb_allpass_setbuffer (&priv->allpassL[0], allpasstuningL1 * srfactor);
freeverb_allpass_setbuffer (&priv->allpassR[0], allpasstuningR1 * srfactor);
freeverb_allpass_setbuffer (&priv->allpassL[1], allpasstuningL2 * srfactor);
freeverb_allpass_setbuffer (&priv->allpassR[1], allpasstuningR2 * srfactor);
freeverb_allpass_setbuffer (&priv->allpassL[2], allpasstuningL3 * srfactor);
freeverb_allpass_setbuffer (&priv->allpassR[2], allpasstuningR3 * srfactor);
freeverb_allpass_setbuffer (&priv->allpassL[3], allpasstuningL4 * srfactor);
freeverb_allpass_setbuffer (&priv->allpassR[3], allpasstuningR4 * srfactor);
/* clear buffers */
freeverb_revmodel_init (filter);
/* set default values */
freeverb_allpass_setfeedback (&priv->allpassL[0], 0.5f);
freeverb_allpass_setfeedback (&priv->allpassR[0], 0.5f);
freeverb_allpass_setfeedback (&priv->allpassL[1], 0.5f);
freeverb_allpass_setfeedback (&priv->allpassR[1], 0.5f);
freeverb_allpass_setfeedback (&priv->allpassL[2], 0.5f);
freeverb_allpass_setfeedback (&priv->allpassR[2], 0.5f);
freeverb_allpass_setfeedback (&priv->allpassL[3], 0.5f);
freeverb_allpass_setfeedback (&priv->allpassR[3], 0.5f);
}
示例14: gst_audio_aggregator_do_clip
static GstBuffer *
gst_audio_aggregator_do_clip (GstAggregator * agg,
GstAggregatorPad * bpad, GstBuffer * buffer)
{
GstAudioAggregatorPad *pad = GST_AUDIO_AGGREGATOR_PAD (bpad);
gint rate, bpf;
rate = GST_AUDIO_INFO_RATE (&pad->info);
bpf = GST_AUDIO_INFO_BPF (&pad->info);
GST_OBJECT_LOCK (bpad);
buffer = gst_audio_buffer_clip (buffer, &bpad->segment, rate, bpf);
GST_OBJECT_UNLOCK (bpad);
return buffer;
}
示例15: gst_deinterleave_add_new_pads
static void
gst_deinterleave_add_new_pads (GstDeinterleave * self, GstCaps * caps)
{
GstPad *pad;
guint i;
for (i = 0; i < GST_AUDIO_INFO_CHANNELS (&self->audio_info); i++) {
gchar *name = g_strdup_printf ("src_%u", i);
GstCaps *srccaps;
GstAudioInfo info;
GstAudioFormat format = GST_AUDIO_INFO_FORMAT (&self->audio_info);
gint rate = GST_AUDIO_INFO_RATE (&self->audio_info);
GstAudioChannelPosition position = GST_AUDIO_CHANNEL_POSITION_MONO;
CopyStickyEventsData data;
/* Set channel position if we know it */
if (self->keep_positions)
position = GST_AUDIO_INFO_POSITION (&self->audio_info, i);
gst_audio_info_init (&info);
gst_audio_info_set_format (&info, format, rate, 1, &position);
srccaps = gst_audio_info_to_caps (&info);
pad = gst_pad_new_from_static_template (&src_template, name);
g_free (name);
gst_pad_use_fixed_caps (pad);
gst_pad_set_query_function (pad,
GST_DEBUG_FUNCPTR (gst_deinterleave_src_query));
gst_pad_set_active (pad, TRUE);
data.pad = pad;
data.caps = srccaps;
gst_pad_sticky_events_foreach (self->sink, copy_sticky_events, &data);
if (data.caps)
gst_pad_set_caps (pad, data.caps);
gst_element_add_pad (GST_ELEMENT (self), pad);
self->srcpads = g_list_prepend (self->srcpads, gst_object_ref (pad));
gst_caps_unref (srccaps);
}
gst_element_no_more_pads (GST_ELEMENT (self));
self->srcpads = g_list_reverse (self->srcpads);
}