gstreamer gst-CRITICAL ошибка при попытке освободить ресурсы - PullRequest
0 голосов
/ 04 марта 2019

Я написал программу, которая воспроизводит звук, используя 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

Пожалуйста, скажите мне, как это сделать правильно.спасибо

...