Skip to content

Commit 42b9910

Browse files
authored
Merge pull request #154 from DanielAromi97/master
added pipeline parsing with Gst.parseLaunch()
2 parents 4fb4bff + 3b960d0 commit 42b9910

File tree

1 file changed

+21
-33
lines changed

1 file changed

+21
-33
lines changed

src/processing/video/Capture.java

Lines changed: 21 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -432,49 +432,37 @@ public static String fpsToFramerate(float fps) {
432432

433433

434434
protected void initCustomPipeline(String pstr) {
435-
// String[] parts = pstr.split("!");
436-
// int n = parts.length;
435+
String PIPELINE_END = " ! videorate ! videoscale ! videoconvert ! appsink name=sink";
437436

437+
pipeline = (Pipeline) Gst.parseLaunch(pstr + PIPELINE_END);
438438

439-
int n = 1;
440-
Element[] elements = new Element[n + 4];
441-
442-
Element el = Gst.parseLaunch(pstr);
443-
elements[0] = el;
444-
445-
// for (int i = 0; i < n; i++) {
446-
// String el = parts[i].trim();
447-
// elements[i] = ElementFactory.make(el, null);
448-
// }
449-
450-
pipeline = new Pipeline();
451-
452-
Element videoscale = ElementFactory.make("videoscale", null);
453-
Element videoconvert = ElementFactory.make("videoconvert", null);
454-
Element capsfilter = ElementFactory.make("capsfilter", null);
455-
456-
String frameRateString;
439+
String caps = ", width=" + width + ", height=" + height;
457440
if (frameRate != 0.0) {
458-
frameRateString = ", framerate=" + fpsToFramerate(frameRate);
459-
} else {
460-
frameRateString = "";
441+
caps += ", framerate=" + fpsToFramerate(frameRate);
461442
}
462-
capsfilter.set("caps", Caps.fromString("video/x-raw, width=" + width + ", height=" + height + frameRateString));
463443

464-
initSink();
465-
466-
elements[n + 0] = videoscale;
467-
elements[n + 1] = videoconvert;
468-
elements[n + 2] = capsfilter;
469-
elements[n + 3] = rgbSink;
444+
rgbSink = (AppSink) pipeline.getElementByName("sink");
445+
rgbSink.set("emit-signals", true);
446+
newSampleListener = new NewSampleListener();
447+
newPrerollListener = new NewPrerollListener();
448+
rgbSink.connect(newSampleListener);
449+
rgbSink.connect(newPrerollListener);
470450

471-
pipeline.addMany(elements);
472-
Element.linkMany(elements);
451+
useBufferSink = Video.useGLBufferSink && parent.g.isGL();
452+
if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
453+
if (useBufferSink) {
454+
rgbSink.setCaps(Caps.fromString("video/x-raw, format=RGBx" + caps));
455+
} else {
456+
rgbSink.setCaps(Caps.fromString("video/x-raw, format=BGRx" + caps));
457+
}
458+
} else {
459+
rgbSink.setCaps(Caps.fromString("video/x-raw, format=xRGB" + caps));
460+
}
473461

474462
makeBusConnections(pipeline.getBus());
475463
}
476464

477-
465+
478466
protected void initDevicePipeline() {
479467
Element srcElement = null;
480468
if (device == null) {

0 commit comments

Comments
 (0)