public void StopVideoStream() { Parent.WriteLogtoConsole("Stopping Gstreamer Video Player"); pipe.setState(State.READY); // debugGST(); Element videosink = videoComponent.getElement(); videoComponent.repaint(); pipe.getElementByName("elphelstream").unlink(videosink); pipe.remove(videosink); // debugGST(); pipe.setState(State.NULL); // debugGST(); List<Element> elements = pipe.getElementsRecursive(); for (int i = 0; i < elements.size(); i++) { pipe.unlink(elements.get(i)); pipe.remove(elements.get(i)); elements.get(i).dispose(); } List<Element> sources = pipe.getSources(); for (int i = 0; i < sources.size(); i++) { pipe.unlink(sources.get(i)); pipe.remove(sources.get(i)); sources.get(i).dispose(); } // debugGST(); pipe = null; // debugGST(); }