Я написал программу, которая воспроизводит звук, используя gstreamer-1.0. У меня есть функция gstfreerc (), которая должна освобождать ресурсы при завершении работы программы, но она выдает ошибки.Программа отлично работает помимо этого.
Код для gstfreerc:
void gstfreerc() {
sleep(1);
puts("Freeing msg.");
if (msg != NULL)
gst_message_unref(msg);
puts("Freeing bus.");
if (bus != NULL)
gst_object_unref(bus);
puts("Setting pipeline null.");
if (pipeline != NULL) {
gst_element_set_state(pipeline, GST_STATE_NULL);
//puts("Setting pipline null.");
//pipeline = NULL;
puts("Freeing pipeline.");
// pipeline = NULL;
gst_object_unref(pipeline);
}
puts("Freed pipeline.");
//clean up langctrl pipeline
puts("Returned, stopping playback.");
/*puts("Setting language control pipeling null.");
if (pipelinex != NULL) {
gst_element_set_state(pipelinex, GST_STATE_NULL);
}
puts("Deleting pipeline.");
if (pipelinex != NULL) {
gst_object_unref(GST_OBJECT(pipelinex));
}
if (bus_watch_id != NULL) {
g_source_remove(bus_watch_id);
}
if (loopx != NULL) {
g_main_loop_unref(loopx);
}*/
}
Я получаю ошибку:
(server.out:4113): GStreamer-CRITICAL **: gst_atomic_queue_pop: assertion 'queue != NULL' failed
(server.out:4113): GStreamer-CRITICAL **: gst_atomic_queue_pop: assertion 'queue != NULL' failed
(server.out:4113): GStreamer-CRITICAL **: gst_atomic_queue_pop: assertion 'queue != NULL' failed
(server.out:4113): GStreamer-CRITICAL **: gst_atomic_queue_pop: assertion 'queue != NULL' failed
**
GStreamer:ERROR:gstbus.c:580:gst_bus_timed_pop_filtered: assertion failed: (bus->priv->poll)
Freed pipeline.
Abgebrochen
Пожалуйста, скажите мне, как это сделать правильно.спасибо