static GstCaps * gst_vorbis_enc_sink_getcaps (GstPad * pad) { GstVorbisEnc *vorbisenc = GST_VORBISENC (GST_PAD_PARENT (pad)); if (vorbisenc->sinkcaps == NULL) vorbisenc->sinkcaps = gst_vorbis_enc_generate_sink_caps (); return gst_caps_ref (vorbisenc->sinkcaps); }
static GstCaps * gst_vorbis_enc_getcaps (GstAudioEncoder * enc) { GstVorbisEnc *vorbisenc = GST_VORBISENC (enc); if (vorbisenc->sinkcaps == NULL) vorbisenc->sinkcaps = gst_vorbis_enc_generate_sink_caps (); return gst_audio_encoder_proxy_getcaps (enc, vorbisenc->sinkcaps); }
static GstCaps * gst_vorbis_enc_getcaps (GstAudioEncoder * enc, GstCaps * filter) { GstVorbisEnc *vorbisenc = GST_VORBISENC (enc); GstCaps *caps; if (vorbisenc->sinkcaps == NULL) vorbisenc->sinkcaps = gst_vorbis_enc_generate_sink_caps (); if (filter) { GstCaps *int_caps = gst_caps_intersect_full (filter, vorbisenc->sinkcaps, GST_CAPS_INTERSECT_FIRST); caps = gst_audio_encoder_proxy_getcaps (enc, int_caps, filter); gst_caps_unref (int_caps); } else { caps = gst_audio_encoder_proxy_getcaps (enc, vorbisenc->sinkcaps, filter); } return caps; }
static void gst_vorbis_enc_class_init (GstVorbisEncClass * klass) { GObjectClass *gobject_class; GstElementClass *gstelement_class; GstAudioEncoderClass *base_class; GstCaps *sink_caps; GstPadTemplate *sink_templ; gobject_class = (GObjectClass *) klass; gstelement_class = (GstElementClass *) klass; base_class = (GstAudioEncoderClass *) (klass); gobject_class->set_property = gst_vorbis_enc_set_property; gobject_class->get_property = gst_vorbis_enc_get_property; gobject_class->dispose = gst_vorbis_enc_dispose; g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MAX_BITRATE, g_param_spec_int ("max-bitrate", "Maximum Bitrate", "Specify a maximum bitrate (in bps). Useful for streaming " "applications. (-1 == disabled)", -1, HIGHEST_BITRATE, MAX_BITRATE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_BITRATE, g_param_spec_int ("bitrate", "Target Bitrate", "Attempt to encode at a bitrate averaging this (in bps). " "This uses the bitrate management engine, and is not recommended for most users. " "Quality is a better alternative. (-1 == disabled)", -1, HIGHEST_BITRATE, BITRATE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MIN_BITRATE, g_param_spec_int ("min-bitrate", "Minimum Bitrate", "Specify a minimum bitrate (in bps). Useful for encoding for a " "fixed-size channel. (-1 == disabled)", -1, HIGHEST_BITRATE, MIN_BITRATE_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_QUALITY, g_param_spec_float ("quality", "Quality", "Specify quality instead of specifying a particular bitrate.", -0.1, 1.0, QUALITY_DEFAULT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_MANAGED, g_param_spec_boolean ("managed", "Managed", "Enable bitrate management engine", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_LAST_MESSAGE, g_param_spec_string ("last-message", "last-message", "The last status message", NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); sink_caps = gst_vorbis_enc_generate_sink_caps (); sink_templ = gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, sink_caps); gst_element_class_add_pad_template (gstelement_class, sink_templ); gst_caps_unref (sink_caps); gst_element_class_add_static_pad_template (gstelement_class, &vorbis_enc_src_factory); gst_element_class_set_static_metadata (gstelement_class, "Vorbis audio encoder", "Codec/Encoder/Audio", "Encodes audio in Vorbis format", "Monty <*****@*****.**>, " "Wim Taymans <*****@*****.**>"); base_class->start = GST_DEBUG_FUNCPTR (gst_vorbis_enc_start); base_class->stop = GST_DEBUG_FUNCPTR (gst_vorbis_enc_stop); base_class->set_format = GST_DEBUG_FUNCPTR (gst_vorbis_enc_set_format); base_class->handle_frame = GST_DEBUG_FUNCPTR (gst_vorbis_enc_handle_frame); base_class->sink_event = GST_DEBUG_FUNCPTR (gst_vorbis_enc_sink_event); base_class->flush = GST_DEBUG_FUNCPTR (gst_vorbis_enc_flush); }