[gst-devel] Help needed to diagnose critical error message while setting tags on flac stream
Yogesh Marwaha
yogeshm.007 at gmail.com
Wed Apr 14 10:25:51 CEST 2010
Hi,
I'm trying to write tags to a flac file. Here is the relevant code: -
GstElement* FlacEncoder::createPipeline(GstElement* source, const QString
&file) const{
if(!source)
return 0;
//pipeline
GstElement *pipeline = gst_pipeline_new("flac-encoder");
//encoder
GstElement *encoder = gst_element_factory_make("flacenc", "flac-encoder-
element");
g_object_set(G_OBJECT(encoder), "quality", mCompressionQuality, NULL);
//tagger
GstElement *tagger = gst_element_factory_make("flactag", "flac-encoder-
tag-element");
GstTagSetter *tagSetter = GST_TAG_SETTER(tagger);
GValue value = {0};
g_value_init(&value, G_TYPE_STRING);
g_value_set_static_string(&value, "Hello");
gst_tag_setter_add_tag_value(tagSetter, GST_TAG_MERGE_REPLACE, "title",
&value);
g_value_unset(&value);
g_value_init(&value, G_TYPE_STRING);
g_value_set_static_string(&value, "Monty");
gst_tag_setter_add_tag_value(tagSetter, GST_TAG_MERGE_REPLACE, "composer",
&value);
//sink
GstElement *sink = gst_element_factory_make("filesink", "flac-encoder-
sink");
gchar *location = g_strdup(file.toLocal8Bit());
//link and finalize
g_object_set(G_OBJECT(sink), "location", location, NULL);
gst_bin_add_many(GST_BIN(pipeline), source, encoder, tagger, sink, NULL);
gst_element_link_many(source, encoder, tagger, sink, NULL);
return pipeline;
}
When the program is run, following messages are shown (even though the result
looks fine i.e. tags looks to be properly added to the file): -
** (<unknown>:5137): CRITICAL **: gst_adapter_take_buffer: assertion `nbytes >
0' failed
(<unknown>:5137): GStreamer-CRITICAL **: gst_buffer_set_caps: assertion
`buffer != NULL' failed
(<unknown>:5137): GStreamer-CRITICAL **: gst_pad_push: assertion
`GST_IS_BUFFER (buffer)' failed
Any idea where my code is going wrong?
Regards,
Yogesh M
More information about the gstreamer-devel
mailing list