/** * Initialize webcam device. */ private synchronized void init() { if (!initialized.compareAndSet(false, true)) { return; } LOG.debug("GStreamer webcam device initialization"); pipe = new Pipeline(getName()); source = ElementFactory.make(GStreamerDriver.getSourceBySystem(), "source"); if (Platform.isWindows()) { source.set("device-index", deviceIndex); } else if (Platform.isLinux()) { source.set("device", videoFile.getAbsolutePath()); } else if (Platform.isMacOSX()) { throw new IllegalStateException("not yet implemented"); } sink = new RGBDataSink(getName(), this); sink.setPassDirectBuffer(true); sink.getSinkElement().setMaximumLateness(LATENESS, TimeUnit.MILLISECONDS); sink.getSinkElement().setQOSEnabled(true); filter = ElementFactory.make("capsfilter", "capsfilter"); jpegdec = ElementFactory.make("jpegdec", "jpegdec"); pipelineReady(); resolutions = parseResolutions(source.getPads().get(0)); pipelineStop(); }
@Override public void dispose() { if (!disposed.compareAndSet(false, true)) { return; } LOG.debug("Disposing GStreamer device"); close(); source.dispose(); filter.dispose(); jpegdec.dispose(); caps.dispose(); sink.dispose(); pipe.dispose(); }
videosink = new RGBDataSink("GstVideoComponent", rgbListener); videosink.setPassDirectBuffer(true); videosink.getSinkElement().setMaximumLateness(20, TimeUnit.MILLISECONDS); videosink.getSinkElement().setQOSEnabled(true); videoPad = videosink.getSinkPads().get(0);
public VideoComponent(final Composite parent, int style, int redrawFps) { super(parent, style | SWT.DOUBLE_BUFFERED); setRedrawFps(redrawFps); videosink = new RGBDataSink("GstVideoComponent", new RGBListener()); videosink.setPassDirectBuffer(true); gcFont = new Font(getDisplay(), "Arial", 13, SWT.NORMAL); addPaintListener(); addDisposeListener(); startRedrawCycle(); }
super(initializer(gst.ptr_gst_bin_new(name))); this.listener = listener; videosink = (FakeSink) ElementFactory.make("fakesink", name); caps.append("red_mask=(int)0xFF0000, green_mask=(int)0xFF00, blue_mask=(int)0xFF"); videofilter.setCaps(new Caps(caps.toString())); addMany(conv, videofilter, videosink); Element.linkMany(conv, videofilter, videosink); addPad(new GhostPad("sink", conv.getStaticPad("sink")));
public void destroy() { renderComponent.removePropertyChangeListener(propListener); renderComponent.removeMouseListener(mouseListener); renderComponent.removeMouseMotionListener(mouseListener); renderComponent.removeKeyListener(keyListener); removeKeyListener(keyListener); removeComponentListener(componentAdapter); remove(renderComponent); resourceTimer.removeActionListener(resourceReaper); resourceTimer.stop(); videosink.removeListener(); } }
private static VideoComponent createComponenet(final Composite parent) { Pipeline pipe = new Pipeline("SWT Overlay Test"); Element src = ElementFactory.make("videotestsrc", "videotest"); //FileSrc src = new FileSrc("/tmp/pipe"); // Element src = ElementFactory.make("tcpclientsrc", "videotest"); // src.set("port", 6666); // Element depay = ElementFactory.make("gdpdepay", "gdpdepay"); // Element caps = ElementFactory.make("capsfilter", "caps"); // caps.setCaps(new Caps("video/x-raw-yuv,format=YUY2,width=320,height=240,framerate=30/1")); VideoComponent component = new VideoComponent(parent, SWT.NONE); component.getElement().setName("video"); component.setKeepAspect(true); component.setLayoutData(new GridData(GridData.FILL_BOTH)); Element sink = component.getElement(); component.setData(pipe); components.add(component); // pipe.addMany(src, depay, caps, sink); // Element.linkMany(src, depay, caps, sink); pipe.addMany(src, sink); Element.linkMany(src, sink); return component; }
public RGBDataSink(String name, Pipeline pipeline, Listener listener) { super(initializer(gst.ptr_gst_bin_new(name))); this.listener = listener; Element element = pipeline.getElementByName(name); if (element != null) { // TODO: Fix. This doesn't work as it should. getElementByName() returns a // BaseSink which cannot be casted to FakeSink. videosink = (BaseSink) element; videosink.set("signal-handoffs", true); videosink.set("sync", true); videosink.set("preroll-queue-len", 1); videosink.connect((BaseSink.HANDOFF) new VideoHandoffListener()); videosink.connect((BaseSink.PREROLL_HANDOFF) new VideoHandoffListener()); } else { videosink = null; throw new RuntimeException("Element with name " + name + " not found in the pipeline"); } }
/** * Initialize webcam device. */ private synchronized void init() { if (!initialized.compareAndSet(false, true)) { return; } LOG.debug("GStreamer webcam device initialization"); pipe = new Pipeline(getName()); source = ElementFactory.make(GStreamerDriver.getSourceBySystem(), "source"); if (Platform.isWindows()) { source.set("device-index", deviceIndex); } else if (Platform.isLinux()) { source.set("device", videoFile.getAbsolutePath()); } else if (Platform.isMacOSX()) { throw new IllegalStateException("not yet implemented"); } sink = new RGBDataSink(getName(), this); sink.setPassDirectBuffer(true); sink.getSinkElement().setMaximumLateness(LATENESS, TimeUnit.MILLISECONDS); sink.getSinkElement().setQOSEnabled(true); filter = ElementFactory.make("capsfilter", "capsfilter"); jpegdec = ElementFactory.make("jpegdec", "jpegdec"); pipelineReady(); resolutions = parseResolutions(source.getPads().get(0)); pipelineStop(); }
@Override public void dispose() { if (!disposed.compareAndSet(false, true)) { return; } LOG.debug("Disposing GStreamer device"); close(); source.dispose(); filter.dispose(); jpegdec.dispose(); caps.dispose(); sink.dispose(); pipe.dispose(); }