如何正确释放管道使用的内存?

时间:2017-09-09 02:53:24

标签: gstreamer

我正在开发一个需要多次创建和删除管道的程序,但每次执行此操作时内存都会增长。

如何正确释放管道使用的内存?

我正在使用GStreamer 1.12.2和Ubuntu 14.04。

例如这段代码:

int main(int argc, char* argv[]) {
    g_print("gst_init...\n");
    gst_init(NULL, NULL);
    sleep(10);

    for (int pp = 0; pp < 10; pp++) {
        g_print("Iter #%d \n",pp);
        GstElement *pipeline;
        GError* err = NULL;

        pipeline = gst_parse_launch(
            " filesrc location=/media/datos/video12.mp4 "
            " ! qtdemux ! avdec_h264 ! videoconvert ! fakesink name=appsink",
            &err);

        if (err) {
            g_printerr(err->message);
            g_error_free(err);
            return -1;
        }
        gst_element_set_state(pipeline, GST_STATE_PLAYING);

        sleep(5);

        gst_element_set_state(pipeline, GST_STATE_NULL);
        gst_object_unref(GST_OBJECT(pipeline));
        sleep(5);
    }

    gst_deinit();
    g_print("gst_deinit...\n");
    sleep(10);

    return 0;
}

0 个答案:

没有答案