static GstCaps * gst_fdkaacenc_get_caps (GstAudioEncoder * enc, GstCaps * filter) { GstCaps *res, *caps; gint i; caps = gst_caps_new_empty (); for (i = 0; i < G_N_ELEMENTS (channel_layouts); i++) { guint64 channel_mask; GstCaps *tmp = gst_caps_make_writable (gst_pad_get_pad_template_caps (GST_AUDIO_ENCODER_SINK_PAD (enc))); if (channel_layouts[i].channels == 1) { gst_caps_set_simple (tmp, "channels", G_TYPE_INT, channel_layouts[i].channels, NULL); } else { gst_audio_channel_positions_to_mask (channel_layouts[i].positions, channel_layouts[i].channels, FALSE, &channel_mask); gst_caps_set_simple (tmp, "channels", G_TYPE_INT, channel_layouts[i].channels, "channel-mask", GST_TYPE_BITMASK, channel_mask, NULL); } gst_caps_append (caps, tmp); } res = gst_audio_encoder_proxy_getcaps (enc, caps, filter); gst_caps_unref (caps); return res; }
static void gst_sbc_enc_init (GstSbcEnc * self) { GST_PAD_SET_ACCEPT_TEMPLATE (GST_AUDIO_ENCODER_SINK_PAD (self)); self->subbands = 0; self->blocks = 0; self->rate = 0; self->channels = 0; self->bitpool = 0; }
static void gst_ffmpegaudenc_init (GstFFMpegAudEnc * ffmpegaudenc) { GstFFMpegAudEncClass *klass = (GstFFMpegAudEncClass *) G_OBJECT_GET_CLASS (ffmpegaudenc); GST_PAD_SET_ACCEPT_TEMPLATE (GST_AUDIO_ENCODER_SINK_PAD (ffmpegaudenc)); /* ffmpeg objects */ ffmpegaudenc->context = avcodec_alloc_context3 (klass->in_plugin); ffmpegaudenc->opened = FALSE; ffmpegaudenc->frame = av_frame_alloc (); ffmpegaudenc->compliance = FFMPEG_DEFAULT_COMPLIANCE; gst_audio_encoder_set_drainable (GST_AUDIO_ENCODER (ffmpegaudenc), TRUE); }
static void gst_vorbis_enc_init (GstVorbisEnc * vorbisenc) { GstAudioEncoder *enc = GST_AUDIO_ENCODER (vorbisenc); GST_PAD_SET_ACCEPT_TEMPLATE (GST_AUDIO_ENCODER_SINK_PAD (enc)); vorbisenc->channels = -1; vorbisenc->frequency = -1; vorbisenc->managed = FALSE; vorbisenc->max_bitrate = MAX_BITRATE_DEFAULT; vorbisenc->bitrate = BITRATE_DEFAULT; vorbisenc->min_bitrate = MIN_BITRATE_DEFAULT; vorbisenc->quality = QUALITY_DEFAULT; vorbisenc->quality_set = FALSE; vorbisenc->last_message = NULL; /* arrange granulepos marking (and required perfect ts) */ gst_audio_encoder_set_mark_granule (enc, TRUE); gst_audio_encoder_set_perfect_timestamp (enc, TRUE); }
static GstCaps * gst_opus_enc_sink_getcaps (GstAudioEncoder * benc) { GstOpusEnc *enc; GstCaps *caps; GstCaps *peercaps = NULL; GstCaps *intersect = NULL; guint i; gboolean allow_multistream; enc = GST_OPUS_ENC (benc); GST_DEBUG_OBJECT (enc, "sink getcaps"); peercaps = gst_pad_peer_get_caps (GST_AUDIO_ENCODER_SRC_PAD (benc)); if (!peercaps) { GST_DEBUG_OBJECT (benc, "No peercaps, returning template sink caps"); return gst_caps_copy (gst_pad_get_pad_template_caps (GST_AUDIO_ENCODER_SINK_PAD (benc))); } intersect = gst_caps_intersect (peercaps, gst_pad_get_pad_template_caps (GST_AUDIO_ENCODER_SRC_PAD (benc))); gst_caps_unref (peercaps); if (gst_caps_is_empty (intersect)) return intersect; allow_multistream = FALSE; for (i = 0; i < gst_caps_get_size (intersect); i++) { GstStructure *s = gst_caps_get_structure (intersect, i); gboolean multistream; if (gst_structure_get_boolean (s, "multistream", &multistream)) { if (multistream) { allow_multistream = TRUE; } } else { allow_multistream = TRUE; } } gst_caps_unref (intersect); caps = gst_caps_copy (gst_pad_get_pad_template_caps (GST_AUDIO_ENCODER_SINK_PAD (benc))); if (!allow_multistream) { GValue range = { 0 }; g_value_init (&range, GST_TYPE_INT_RANGE); gst_value_set_int_range (&range, 1, 2); for (i = 0; i < gst_caps_get_size (caps); i++) { GstStructure *s = gst_caps_get_structure (caps, i); gst_structure_set_value (s, "channels", &range); } g_value_unset (&range); } GST_DEBUG_OBJECT (enc, "Returning caps: %" GST_PTR_FORMAT, caps); return caps; }
static void gst_mulawenc_init (GstMuLawEnc * mulawenc) { GST_PAD_SET_ACCEPT_TEMPLATE (GST_AUDIO_ENCODER_SINK_PAD (mulawenc)); }
static void gst_siren_enc_init (GstSirenEnc * enc) { GST_PAD_SET_ACCEPT_TEMPLATE (GST_AUDIO_ENCODER_SINK_PAD (enc)); }