GstRenderer

125 views
Skip to first unread message

julien.s...@gmail.com

unread,
May 31, 2018, 5:18:25 AM5/31/18
to gstreamer-java
Hello all :)

I tried GstRenderer and it work great, I have my JavaFX launched and in center I have videotestsrc.

But when I change the Bin.launch to set my pipeline, it launch and disapear in background and the state of Gst is pending, the Stage is showing up with a center white square.

This is the code I used : 


import java.nio.ByteOrder;

import org.freedesktop.gstreamer.Bin;
import org.freedesktop.gstreamer.Bus;
import org.freedesktop.gstreamer.Caps;
import org.freedesktop.gstreamer.Gst;
import org.freedesktop.gstreamer.Message;
import org.freedesktop.gstreamer.Pipeline;
import org.freedesktop.gstreamer.elements.AppSink;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

/*
 * The main idea is to create a pipeline that has an appsink to display the images.
 * Connect the AppSink to the rest of the pipeline.
 * Connect the AppSinkListener to the AppSink.
 * The AppSink writes frames to the ImageContainer.
 * if you want to display the Videoframes simply add a changeListener to the container who will draw the current
 * Image to a Canvas or ImageView.
 */


public class GstRenderer extends Application{
private ImageView imageView;
private AppSink videosink;
private Pipeline pipe;
private Bin bin;
Bus bus;
private StringBuilder caps;
private ImageContainer imageContainer;
public GstRenderer() {
videosink = new AppSink("GstVideoComponent");
        videosink.set("emit-signals", true);
        AppSinkListener GstListener = new AppSinkListener();
        videosink.connect(GstListener);
        caps = new StringBuilder("video/x-raw, ");
        // JNA creates ByteBuffer using native byte order, set masks according to that.
        if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
            caps.append("format=BGRx");
        } else {
            caps.append("format=xRGB");
        }
        videosink.setCaps(new Caps(caps.toString()));
        videosink.set("max-buffers", 5000);
        videosink.set("drop", true);
        bin = Bin.launch("playbin3 uri=\"https://r3---sn-25ge7nse.googlevideo.com/videoplayback?sparams=dur%2Cei%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cexpire&c=WEB&requiressl=yes&expire=1527779448&key=yt6&signature=2BDEF620EDFF94D801B905BBC8F75E5A34169F4C.53472FA6E280CD27D98AB3C7ABCAC57A55B5C2A9&mt=1527757724&ipbits=0&mm=31%2C29&mn=sn-25ge7nse%2Csn-25glenes&id=o-ANj_JLdEBZzyUBseDM3FjPVfrzalRzv8Rd5nLc_9XH74&ratebypass=yes&initcwndbps=2305000&mime=video%2Fmp4&ip=146.255.173.20&lmt=1524432032437132&dur=365.807&pl=21&itag=22&source=youtube&mv=m&ei=F7wPW7KcPK2mV5S4udAN&ms=au%2Crdu&fvip=3\"", true);
        pipe = new Pipeline();
        pipe.addMany(bin, videosink);
        Pipeline.linkMany(bin, videosink);
        imageView = new ImageView();
        
        imageContainer = GstListener.getImageContainer();
        imageContainer.addListener(new ChangeListener<Image>() {

@Override
public void changed(ObservableValue<? extends Image> observable, Image oldValue, final
Image newValue) {
Platform.runLater(new Runnable() {
@Override
public void run() {
imageView.setImage(newValue);
}
});
}
       
});
        
        bus = pipe.getBus();
        bus.connect(new Bus.MESSAGE() {
@Override
public void busMessage(Bus arg0, Message arg1) {

System.out.println(arg1.getStructure());
}
});
        pipe.play();

}

@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Drawing Operations Test");
BorderPane grid = new BorderPane();
grid.setCenter(imageView);
    imageView.fitWidthProperty().bind(grid.widthProperty()); 
    imageView.fitHeightProperty().bind(grid.heightProperty()); 
    imageView.setPreserveRatio(true);
primaryStage.setScene(new Scene(grid, 460, 460));
        primaryStage.show();
}
public static void main(String[] args) {
        Gst.init("CameraTest",args);
        launch(args);
    }
}

Even if I try with : 

 
        bin = Bin.launch("videotestsrc ! omxh264enc ! h264parse ! omxh264dec ! glimagesink", true);

I have the same result..

This is the stack trace for the first Bin.launch : 

Looking in classpath from sun.misc.Launcher$ExtClassLoader@15da254 for /com/sun/jna/linux-arm/libjnidispatch.so
Found library resource at jar:file:/root/armv6hf-sdk-corrected/armv6hf-sdk/rt/lib/ext/jna.jar!/com/sun/jna/linux-arm/libjnidispatch.so
Looking for library 'gstreamer-1.0'
Adding paths from jna.library.path: /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/
Trying libgstreamer-1.0.so
Adding system paths: [/usr/lib, /lib, /usr/lib/arm-linux-gnueabihf, /lib/arm-linux-gnueabihf, /usr/lib/arm-linux-gnueabihf/neon/vfp, /usr/lib/arm-linux-gnueabihf/vfp/neon, /opt/vc/lib, /usr/lib/arm-linux-gnueabihf/libfakeroot]
Trying libgstreamer-1.0.so
Looking for version variants
Trying /usr/lib/arm-linux-gnueabihf/libgstreamer-1.0.so.0.1004.0
Found library 'gstreamer-1.0' at /usr/lib/arm-linux-gnueabihf/libgstreamer-1.0.so.0.1004.0
Looking for library 'glib-2.0'
Adding paths from jna.library.path: /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/
Trying libglib-2.0.so
Found library 'glib-2.0' at libglib-2.0.so
Looking for library 'gobject-2.0'
Adding paths from jna.library.path: /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/
Trying libgobject-2.0.so
Found library 'gobject-2.0' at libgobject-2.0.so
Looking for library 'gobject-2.0'
Adding paths from jna.library.path: /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/
Trying libgobject-2.0.so
Found library 'gobject-2.0' at libgobject-2.0.so
Looking for library 'gobject-2.0'
Adding paths from jna.library.path: /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/
Trying libgobject-2.0.so
Found library 'gobject-2.0' at libgobject-2.0.so
Looking for library 'gstapp-1.0'
Adding paths from jna.library.path: /usr/lib/arm-linux-gnueabihf/gstreamer-1.0/
Trying libgstapp-1.0.so
Adding system paths: [/usr/lib, /lib, /usr/lib/arm-linux-gnueabihf, /lib/arm-linux-gnueabihf, /usr/lib/arm-linux-gnueabihf/neon/vfp, /usr/lib/arm-linux-gnueabihf/vfp/neon, /opt/vc/lib, /usr/lib/arm-linux-gnueabihf/libfakeroot]
Trying libgstapp-1.0.so
Looking for version variants
Trying /usr/lib/arm-linux-gnueabihf/libgstapp-1.0.so.0.1004.0
Found library 'gstapp-1.0' at /usr/lib/arm-linux-gnueabihf/libgstapp-1.0.so.0.1004.0
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PLAYING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstSoupHTTPSrc\)\ source", object=(GstTask)"\(GstTask\)\ task0";
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstSoupHTTPSrc\)\ source", object=(GstTask)"\(GstTask\)\ source:src";
GstMessageDurationChanged;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstQueue2\)\ queue2-0", object=(GstTask)"\(GstTask\)\ task1";
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstQueue2\)\ queue2-0", object=(GstTask)"\(GstTask\)\ queue2-0:src";
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)4, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)4, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)4, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)4, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)4, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)4, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)4, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStreamCollection, collection=(GstStreamCollection)"\(GstStreamCollection\)\ streamcollection0";
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageDurationChanged;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstMultiQueue\)\ multiqueue0", object=(GstTask)"\(GstTask\)\ multiqueue0:src_0";
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstMultiQueue\)\ multiqueue0", object=(GstTask)"\(GstTask\)\ multiqueue0:src_1";
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageBuffering, buffer-percent=(int)4, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStreamsSelected, collection=(GstStreamCollection)"\(GstStreamCollection\)\ streamcollection0", streams=(GstStream)< "\(GstStream\)\ stream1", "\(GstStream\)\ stream2" >;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)0, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)6, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3953;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3962;
GstMessageBuffering, buffer-percent=(int)6, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3953;
GstMessageBuffering, buffer-percent=(int)7, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3944;
GstMessageBuffering, buffer-percent=(int)6, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3953;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3962;
GstMessageBuffering, buffer-percent=(int)6, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3953;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3962;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3972;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3981;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)0, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3981;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3972;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3962;
GstMessageBuffering, buffer-percent=(int)6, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3953;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3962;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3972;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3981;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3981;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3990;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)4000;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3990;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3981;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3990;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)0, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)4000;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageNeedContext, context-type=(string)gst.gl.GLDisplay;
GstMessageHaveContext, context=(GstContext)NULL;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageBuffering, buffer-percent=(int)1, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3990;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)2, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3981;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)3, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3972;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstQueue\)\ vqueue", object=(GstTask)"\(GstTask\)\ vqueue:src";
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstQueue\)\ vqueue", object=(GstTask)"\(GstTask\)\ vqueue:src";
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)5, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3962;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)6, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3953;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstQueue\)\ aqueue", object=(GstTask)"\(GstTask\)\ aqueue:src";
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)7, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3944;
GstMessageBuffering, buffer-percent=(int)9, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)1764058, avg-out-rate=(int)2330501, buffering-left=(gint64)3934;
GstMessageBuffering, buffer-percent=(int)10, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3937;
GstMessageBuffering, buffer-percent=(int)11, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3929;
GstMessageBuffering, buffer-percent=(int)13, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3921;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstQueue\)\ aqueue", object=(GstTask)"\(GstTask\)\ aqueue:src";
GstMessageBuffering, buffer-percent=(int)14, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3914;
GstMessageBuffering, buffer-percent=(int)15, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3906;
GstMessageBuffering, buffer-percent=(int)16, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3898;
GstMessageBuffering, buffer-percent=(int)18, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3890;
GstMessageBuffering, buffer-percent=(int)19, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3882;
null
GstMessageTag, taglist=(taglist)"taglist\,\ audio-codec\=\(string\)\"MPEG-4\\\ AAC\\\ audio\"\,\ language-code\=\(string\)en\;";
GstMessageTag, taglist=(taglist)"taglist\,\ datetime\=\(datetime\)2018-04-22T21:19:32Z\,\ private-qt-tag\=\(sample\)\{\ 00000019677373740000001164617461000000010000000030:None:R3N0U2VnbWVudCwgZmxhZ3M9KEdzdFNlZ21lbnRGbGFncylHU1RfU0VHTUVOVF9GTEFHX05PTkUsIHJhdGU9KGRvdWJsZSkxLCBhcHBsaWVkLXJhdGU9KGRvdWJsZSkxLCBmb3JtYXQ9KEdzdEZvcm1hdClHU1RfRk9STUFUX1RJTUUsIGJhc2U9KGd1aW50NjQpMCwgb2Zmc2V0PShndWludDY0KTAsIHN0YXJ0PShndWludDY0KTAsIHN0b3A9KGd1aW50NjQpMTg0NDY3NDQwNzM3MDk1NTE2MTUsIHRpbWU9KGd1aW50NjQpMCwgcG9zaXRpb249KGd1aW50NjQpMCwgZHVyYXRpb249KGd1aW50NjQpMTg0NDY3NDQwNzM3MDk1NTE2MTU7AA__:YXBwbGljYXRpb24veC1nc3QtcXQtZ3NzdC10YWcsIHN0eWxlPShzdHJpbmcpaXR1bmVzOwA_\,\ 0000001e6773746400000016646174610000000100000000333635383037:None:R3N0U2VnbWVudCwgZmxhZ3M9KEdzdFNlZ21lbnRGbGFncylHU1RfU0VHTUVOVF9GTEFHX05PTkUsIHJhdGU9KGRvdWJsZSkxLCBhcHBsaWVkLXJhdGU9KGRvdWJsZSkxLCBmb3JtYXQ9KEdzdEZvcm1hdClHU1RfRk9STUFUX1RJTUUsIGJhc2U9KGd1aW50NjQpMCwgb2Zmc2V0PShndWludDY0KTAsIHN0YXJ0PShndWludDY0KTAsIHN0b3A9KGd1aW50NjQpMTg0NDY3NDQwNzM3MDk1NTE2MTUsIHRpbWU9KGd1aW50NjQpMCwgcG9zaXRpb249KGd1aW50NjQpMCwgZHVyYXRpb249KGd1aW50NjQpMTg0NDY3NDQwNzM3MDk1NTE2MTU7AA__:YXBwbGljYXRpb24veC1nc3QtcXQtZ3N0ZC10YWcsIHN0eWxlPShzdHJpbmcpaXR1bmVzOwA_\ \}\,\ container-format\=\(string\)\"ISO\\\ MP4/M4A\"\;";
GstMessageTag, taglist=(taglist)"taglist\,\ audio-codec\=\(string\)\"MPEG-4\\\ AAC\"\,\ language-code\=\(string\)en\;";
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstOMXHdmiAudioSink-omxhdmiaudiosink\)\ audiosink-actual-sink-omxhdmiaudio", object=(GThread)NULL;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)20, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3874;
GstMessageBuffering, buffer-percent=(int)22, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3867;
GstMessageBuffering, buffer-percent=(int)23, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3859;
GstMessageBuffering, buffer-percent=(int)24, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3851;
GstMessageBuffering, buffer-percent=(int)26, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3843;
GstMessageBuffering, buffer-percent=(int)27, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3835;
GstMessageBuffering, buffer-percent=(int)28, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3828;
GstMessageBuffering, buffer-percent=(int)29, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3820;
GstMessageBuffering, buffer-percent=(int)31, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3812;
GstMessageBuffering, buffer-percent=(int)32, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3804;
GstMessageBuffering, buffer-percent=(int)33, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3796;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstOMXH264Dec-omxh264dec\)\ omxh264dec-omxh264dec0", object=(GstTask)"\(GstTask\)\ omxh264dec-omxh264dec0:src";
GstMessageBuffering, buffer-percent=(int)35, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3789;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstOMXH264Dec-omxh264dec\)\ omxh264dec-omxh264dec0", object=(GstTask)"\(GstTask\)\ omxh264dec-omxh264dec0:src";
GstMessageBuffering, buffer-percent=(int)36, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3781;
GstMessageBuffering, buffer-percent=(int)37, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3773;
GstMessageBuffering, buffer-percent=(int)39, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3765;
GstMessageBuffering, buffer-percent=(int)40, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3757;
GstMessageBuffering, buffer-percent=(int)41, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3749;
GstMessageBuffering, buffer-percent=(int)42, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3742;
GstMessageBuffering, buffer-percent=(int)44, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2097096, avg-out-rate=(int)2330501, buffering-left=(gint64)3734;
GstMessageBuffering, buffer-percent=(int)45, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3729;
GstMessageBuffering, buffer-percent=(int)46, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3722;
GstMessageBuffering, buffer-percent=(int)48, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3714;
GstMessageBuffering, buffer-percent=(int)49, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3706;
GstMessageBuffering, buffer-percent=(int)50, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3698;
GstMessageBuffering, buffer-percent=(int)52, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3691;
GstMessageBuffering, buffer-percent=(int)53, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3683;
GstMessageBuffering, buffer-percent=(int)54, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3675;
GstMessageBuffering, buffer-percent=(int)55, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3668;
GstMessageBuffering, buffer-percent=(int)57, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3660;
GstMessageBuffering, buffer-percent=(int)58, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3652;
GstMessageBuffering, buffer-percent=(int)59, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3644;
GstMessageBuffering, buffer-percent=(int)61, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3637;
GstMessageBuffering, buffer-percent=(int)62, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3629;
GstMessageBuffering, buffer-percent=(int)63, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3621;
GstMessageBuffering, buffer-percent=(int)65, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3614;
GstMessageBuffering, buffer-percent=(int)66, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3606;
GstMessageBuffering, buffer-percent=(int)67, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3598;
GstMessageBuffering, buffer-percent=(int)69, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3590;
GstMessageBuffering, buffer-percent=(int)70, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3583;
GstMessageBuffering, buffer-percent=(int)71, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3575;
GstMessageTag, taglist=(taglist)"taglist\,\ video-codec\=\(string\)\"H.264\\\ \\\(Main\\\ Profile\\\)\"\;";
GstMessageTag, taglist=(taglist)"taglist\,\ datetime\=\(datetime\)2018-04-22T21:19:32Z\,\ private-qt-tag\=\(sample\)\{\ 00000019677373740000001164617461000000010000000030:None:R3N0U2VnbWVudCwgZmxhZ3M9KEdzdFNlZ21lbnRGbGFncylHU1RfU0VHTUVOVF9GTEFHX05PTkUsIHJhdGU9KGRvdWJsZSkxLCBhcHBsaWVkLXJhdGU9KGRvdWJsZSkxLCBmb3JtYXQ9KEdzdEZvcm1hdClHU1RfRk9STUFUX1RJTUUsIGJhc2U9KGd1aW50NjQpMCwgb2Zmc2V0PShndWludDY0KTAsIHN0YXJ0PShndWludDY0KTAsIHN0b3A9KGd1aW50NjQpMTg0NDY3NDQwNzM3MDk1NTE2MTUsIHRpbWU9KGd1aW50NjQpMCwgcG9zaXRpb249KGd1aW50NjQpMCwgZHVyYXRpb249KGd1aW50NjQpMTg0NDY3NDQwNzM3MDk1NTE2MTU7AA__:YXBwbGljYXRpb24veC1nc3QtcXQtZ3NzdC10YWcsIHN0eWxlPShzdHJpbmcpaXR1bmVzOwA_\,\ 0000001e6773746400000016646174610000000100000000333635383037:None:R3N0U2VnbWVudCwgZmxhZ3M9KEdzdFNlZ21lbnRGbGFncylHU1RfU0VHTUVOVF9GTEFHX05PTkUsIHJhdGU9KGRvdWJsZSkxLCBhcHBsaWVkLXJhdGU9KGRvdWJsZSkxLCBmb3JtYXQ9KEdzdEZvcm1hdClHU1RfRk9STUFUX1RJTUUsIGJhc2U9KGd1aW50NjQpMCwgb2Zmc2V0PShndWludDY0KTAsIHN0YXJ0PShndWludDY0KTAsIHN0b3A9KGd1aW50NjQpMTg0NDY3NDQwNzM3MDk1NTE2MTUsIHRpbWU9KGd1aW50NjQpMCwgcG9zaXRpb249KGd1aW50NjQpMCwgZHVyYXRpb249KGd1aW50NjQpMTg0NDY3NDQwNzM3MDk1NTE2MTU7AA__:YXBwbGljYXRpb24veC1nc3QtcXQtZ3N0ZC10YWcsIHN0eWxlPShzdHJpbmcpaXR1bmVzOwA_\ \}\,\ container-format\=\(string\)\"ISO\\\ MP4/M4A\"\;";
GstMessageBuffering, buffer-percent=(int)72, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3567;
GstMessageBuffering, buffer-percent=(int)74, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3560;
GstMessageBuffering, buffer-percent=(int)75, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3552;
GstMessageBuffering, buffer-percent=(int)76, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3544;
GstMessageBuffering, buffer-percent=(int)78, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3536;
GstMessageBuffering, buffer-percent=(int)79, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3529;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)80, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3521;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)82, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3513;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)83, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3506;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageBuffering, buffer-percent=(int)84, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2122810, avg-out-rate=(int)2330501, buffering-left=(gint64)3498;
GstMessageBuffering, buffer-percent=(int)85, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3512;
GstMessageBuffering, buffer-percent=(int)87, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3505;
GstMessageBuffering, buffer-percent=(int)88, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3498;
GstMessageBuffering, buffer-percent=(int)89, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3490;
GstMessageBuffering, buffer-percent=(int)91, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3483;
GstMessageBuffering, buffer-percent=(int)92, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3476;
GstMessageBuffering, buffer-percent=(int)93, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3468;
GstMessageBuffering, buffer-percent=(int)95, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3461;
GstMessageBuffering, buffer-percent=(int)96, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3453;
GstMessageBuffering, buffer-percent=(int)97, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3446;
GstMessageBuffering, buffer-percent=(int)98, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)3439;
GstMessageBuffering, buffer-percent=(int)100, buffering-mode=(GstBufferingMode)GST_BUFFERING_STREAM, avg-in-rate=(int)2220046, avg-out-rate=(int)2330501, buffering-left=(gint64)0;
ES2ResourceFactory: Prism - createStockShader: Solid_TextureRGB.frag
How can I use omxh264enc/omxh264dec in the same way ?

Thanks :) 

Neil C Smith

unread,
May 31, 2018, 5:55:43 AM5/31/18
to gstream...@googlegroups.com
On Thu, 31 May 2018 at 10:18 <julien.s...@gmail.com> wrote:
But when I change the Bin.launch to set my pipeline, it launch and disapear in background and the state of Gst is pending, the Stage is showing up with a center white square.

This is not how you would use a PlayBin - that is already a pipeline and you need to set the video-sink property on it.   eg. this works with Swing (I don't have PlayBin 3 here) using the element factory directly rather than the PlayBin wrapper

```
Gst.init("MediaTest", args);
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                SimpleVideoComponent vc = new SimpleVideoComponent();
                Element playbin = ElementFactory.make("playbin", "playbin");
                playbin.set("uri", URI.create("file:///home/<PATH>"));
                playbin.set("video-sink", vc.getElement());

                JFrame f = new JFrame("Camera Test");
                f.add(vc);
                vc.setPreferredSize(new Dimension(640, 480));
                f.pack();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               
                playbin.play();
                f.setVisible(true);
            }
        });
```

Likewise, to try your gl sink pipeline you should use Pipeline.launch() not Bin.launch() - these are different things!

Best wishes,

Neil
--
Neil C Smith
Artist & Technologist

Praxis LIVE - hybrid visual IDE for creative coding - www.praxislive.org

julien.s...@gmail.com

unread,
May 31, 2018, 6:17:54 AM5/31/18
to gstreamer-java
Thanks for you fast answer

I tried to launch with Pipeline.launch and the result is the same.

Maybe I'm doing something wrong ?

//private Bin bin;
Bus bus;
private StringBuilder caps;
private ImageContainer imageContainer;
public GstRenderer() {
videosink = new AppSink("GstVideoComponent");
        videosink.set("emit-signals", true);
        AppSinkListener GstListener = new AppSinkListener();
        videosink.connect(GstListener);
        caps = new StringBuilder("video/x-raw, ");
        // JNA creates ByteBuffer using native byte order, set masks according to that.
        if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
            caps.append("format=BGRx");
        } else {
            caps.append("format=xRGB");
        }
        videosink.setCaps(new Caps(caps.toString()));
        videosink.set("max-buffers", 5000);
        videosink.set("drop", true);
  
        //bin = Bin.launch("videotestsrc ! omxh264enc ! h264parse ! omxh264dec ! glimagesink", true);
        pipe = Pipeline.launch("videotestsrc ! omxh264enc ! h264parse ! omxh264dec ! glimagesink");
        //pipe.addMany(bin, videosink);
        Pipeline.linkMany(pipe, videosink);
        imageView = new ImageView();
        
        imageContainer = GstListener.getImageContainer();
        imageContainer.addListener(new ChangeListener<Image>() {

@Override
public void changed(ObservableValue<? extends Image> observable, Image oldValue, final
Image newValue) {
Platform.runLater(new Runnable() {
@Override
public void run() {
imageView.setImage(newValue);
}
});
}
       
});
        
        bus = pipe.getBus();
        bus.connect(new Bus.MESSAGE() {
@Override
public void busMessage(Bus arg0, Message arg1) {

System.out.println(arg1.getStructure());
}
});
        pipe.play();

}

@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Drawing Operations Test");
BorderPane grid = new BorderPane();
grid.setCenter(imageView);
    imageView.fitWidthProperty().bind(grid.widthProperty()); 
    imageView.fitHeightProperty().bind(grid.heightProperty()); 
    imageView.setPreserveRatio(true);
primaryStage.setScene(new Scene(grid,460,420));
        primaryStage.setAlwaysOnTop(false);
primaryStage.show();

//bin.play();
pipe.play();
}
public static void main(String[] args) {
        Gst.init("CameraTest",args);
        launch(args);
    }
}

Neil C Smith

unread,
May 31, 2018, 6:25:26 AM5/31/18
to gstream...@googlegroups.com
On Thu, 31 May 2018 at 11:17 <julien.s...@gmail.com> wrote:
Thanks for you fast answer

I tried to launch with Pipeline.launch and the result is the same.


You can't do Pipeline launch with the glimagesink and try and add the other videosink in the same pipeline!

Neil

julien.s...@gmail.com

unread,
May 31, 2018, 6:42:00 AM5/31/18
to gstreamer-java
Ok I understand.

Can the Pipeline.launch be added to the imageView like the Bin.launch ?

How can I link the pipe to GstListener ?

This is the code I changed, same result : 

        //videosink.connect(GstListener);
        
        caps = new StringBuilder("video/x-raw, ");
        // JNA creates ByteBuffer using native byte order, set masks according to that.
        if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) {
            caps.append("format=BGRx");
        } else {
            caps.append("format=xRGB");
        }
        //videosink.setCaps(new Caps(caps.toString()));
        //videosink.set("max-buffers", 5000);
        //videosink.set("drop", true);
  
        //bin = Bin.launch("videotestsrc ! omxh264enc ! h264parse ! omxh264dec ! glimagesink", true);
        pipe = Pipeline.launch("videotestsrc ! omxh264enc ! h264parse ! omxh264dec ! glimagesink");
        //pipe.addMany(bin, videosink);
        //Pipeline.linkMany(pipe);

Neil C Smith

unread,
May 31, 2018, 7:00:51 AM5/31/18
to gstream...@googlegroups.com
On Thu, 31 May 2018 at 11:42 <julien.s...@gmail.com> wrote:
Ok I understand.

Can the Pipeline.launch be added to the imageView like the Bin.launch ?

How can I link the pipe to GstListener ?


You can either have the AppSink or the glimagesink, not both!

You might be able to do something like

```
pipe = Pipeline.launch("videotestsrc ! omxh264enc ! h264parse ! omxh264dec name=decoder");
pipe.add(videosink);
pipe.getElementByName("decoder").link(videosink);
```
No idea if this will work - depends what formats the decoder can output and whether they match the caps on your appsink.

Best wishes,

Neil

julien.s...@gmail.com

unread,
May 31, 2018, 8:33:44 AM5/31/18
to gstreamer-java
I can't see in the Stage, the stack trace about Gst : 

Found library 'gstapp-1.0' at /usr/lib/arm-linux-gnueabihf/libgstapp-1.0.so.0.1004.0
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PLAYING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstVideoTestSrc\)\ videotestsrc0", object=(GstTask)"\(GstTask\)\ videotestsrc0:src";
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstVideoTestSrc\)\ videotestsrc0", object=(GstTask)"\(GstTask\)\ videotestsrc0:src";
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstOMXH264Enc-omxh264enc\)\ omxh264enc-omxh264enc0", object=(GstTask)"\(GstTask\)\ omxh264enc-omxh264enc0:src";
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstOMXH264Enc-omxh264enc\)\ omxh264enc-omxh264enc0", object=(GstTask)"\(GstTask\)\ omxh264enc-omxh264enc0:src";
GstMessageStreamStart, group-id=(uint)0;
GstMessageQOS, live=(boolean)false, running-time=(guint64)0, stream-time=(guint64)0, timestamp=(guint64)0, duration=(guint64)18446744073709551615, jitter=(gint64)-1, proportion=(double)0.5, quality=(int)1000000, format=(GstFormat)GST_FORMAT_BUFFERS, processed=(guint64)0, dropped=(guint64)1;
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE, owner=(GstElement)"\(GstOMXH264Dec-omxh264dec\)\ decoder", object=(GstTask)"\(GstTask\)\ decoder:src";
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER, owner=(GstElement)"\(GstOMXH264Dec-omxh264dec\)\ decoder", object=(GstTask)"\(GstTask\)\ decoder:src";
GstMessageError, gerror=(GError)NULL, debug=(string)"gstomxvideodec.c\(1599\):\ gst_omx_video_dec_loop\ \(\):\ /GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:decoder:\012stream\ stopped\,\ reason\ not-negotiated";
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED, pending-state=(GstState)GST_STATE_PLAYING;
GstMessageNewClock, clock=(GstClock)"\(GstSystemClock\)\ GstSystemClock";
GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageError, gerror=(GError)NULL, debug=(string)"gstomxvideoenc.c\(883\):\ gst_omx_video_enc_loop\ \(\):\ /GstPipeline:pipeline0/GstOMXH264Enc-omxh264enc:omxh264enc-omxh264enc0:\012stream\ stopped\,\ reason\ not-negotiated";
GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageError, gerror=(GError)NULL, debug=(string)"gstbasesrc.c\(2950\):\ gst_base_src_loop\ \(\):\ /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:\012streaming\ stopped\,\ reason\ not-negotiated\ \(-4\)", details=(structure)"details\,\ flow-return\=\(int\)-4\;";
GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;

The interesting part is : 

GstMessageError, gerror=(GError)NULL, debug=(string)"gstomxvideoenc.c\(883\):\ gst_omx_video_enc_loop\ \(\):\ /GstPipeline:pipeline0/GstOMXH264Enc-omxh264enc:omxh264enc-omxh264enc0:\012stream\ stopped\,\ reason\ not-negotiated";
GstMessageStateChanged, old-state=(GstState)GST_STATE_PAUSED, new-state=(GstState)GST_STATE_PLAYING, pending-state=(GstState)GST_STATE_VOID_PENDING;
GstMessageError, gerror=(GError)NULL, debug=(string)"gstbasesrc.c\(2950\):\ gst_base_src_loop\ \(\):\ /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:\012streaming\ stopped\,\ reason\ not-negotiated\ \(-4\)", details=(structure)"details\,\ flow-return\=\(int\)-4\;";
 
Do you have an idea what this mean ?

Thank for you help 

julien.s...@gmail.com

unread,
May 31, 2018, 8:58:26 AM5/31/18
to gstreamer-java
I changed the caps to :

        caps = new StringBuilder("video/x-h264, ");
Because the omxh264dec can only decode h264 according to gst-inspect

Now the following error appear : 

GstMessageError, gerror=(GError)NULL, debug=(string)"gstbasesrc.c\(2950\):\ gst_base_src_loop\ \(\):\ /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:\012streaming\ stopped\,\ reason\ not-linked\ \(-1\)", details=(structure)"details 

Neil C Smith

unread,
May 31, 2018, 9:18:51 AM5/31/18
to gstream...@googlegroups.com
On Thu, 31 May 2018 at 13:58 <julien.s...@gmail.com> wrote:
I changed the caps to :

        caps = new StringBuilder("video/x-h264, ");
Because the omxh264dec can only decode h264 according to gst-inspect


What caps?  You probably need to set the appsink caps based on the output of the decoder, not the input.  I would take this on to the GStreamer devel list and see if you can get some input from one of the GStreamer devs - I'm stabbing in the dark without knowing enough about the omx stuff.

You could try putting a videoconvert after the decoder and link the appsrc to that rather than the decoder.  If that works it's likely to be slow though.  The problem you'll have is getting anything into JavaFX is not as performant as it could be!

Best wishes,

Neil

julien.s...@gmail.com

unread,
May 31, 2018, 9:25:13 AM5/31/18
to gstreamer-java
I don't know what caps I need to set up, but this is the stack trace of gst-launch when I use glimagesink at the output of the pipeline :

gst-launch-1.0 -v videotestsrc ! omxh264enc ! h264parse ! omxh264dec ! glimagesink                                                                                                  Définition du pipeline à PAUSED...
Le pipeline est en phase de PREROLL…
Contexte de l’élément « sink » : gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayEGL\)\ gldisplayegl0";
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, format=(string)I420, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstOMXH264Enc-omxh264enc:omxh264enc-omxh264enc0.GstPad:sink: caps = video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, format=(string)I420, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstOMXH264Enc-omxh264enc:omxh264enc-omxh264enc0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)high, level=(string)4, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)high, level=(string)4, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, parsed=(boolean)true
/GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)high, level=(string)4, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, parsed=(boolean)true
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)high, level=(string)4, width=(int)320, height=(int)240, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0.GstPad:src: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)sRGB, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)sRGB, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLUploadElement:gluploadelement0.GstPad:src: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)RGBA, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorConvertElement:glcolorconvertelement0.GstPad:src: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)RGBA, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorBalance:glcolorbalance0.GstPad:src: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)RGBA, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLImageSink:sink.GstPad:sink: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)RGBA, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorBalance:glcolorbalance0.GstPad:sink: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)RGBA, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLColorConvertElement:glcolorconvertelement0.GstPad:sink: caps = video/x-raw(memory:GLMemory), width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, format=(string)RGBA, texture-target=(string)2D, colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0/GstGLUploadElement:gluploadelement0.GstPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)sRGB, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstGLImageSinkBin:glimagesinkbin0.GstGhostPad:sink: caps = video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)320, height=(int)240, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)sRGB, framerate=(fraction)30/1
Le pipeline a terminé la phase PREROLL…
Passage du pipeline à la phase PLAYING…
New clock: GstSystemClock
How can I link AppSink to videoconvert ? I don't understand

Neil C Smith

unread,
May 31, 2018, 9:39:01 AM5/31/18
to gstream...@googlegroups.com
On Thu, 31 May 2018 at 14:25 <julien.s...@gmail.com> wrote:
I don't know what caps I need to set up,

And neither do I! ;-)  That's why I'm suggesting taking this onto the GStreamer devel list, because I don't know what that element is capable of outputting.

It does look like it's outputting GLMemory in that trace.  If that's all it's capable of, then you might have some difficulty getting this into JavaFX.

Best wishes,

Neil

julien.s...@gmail.com

unread,
Jun 1, 2018, 3:29:31 AM6/1/18
to gstreamer-java
I understand.. Yes omxh264 seem to be based on OpenGL and I know that JavaFX is not OpenGL based..

I'm disapointed, I don't know if it's possible to redirect OpenGL render to JavaFX node or something like this

Neil C Smith

unread,
Jun 1, 2018, 4:36:55 AM6/1/18
to gstream...@googlegroups.com

On Fri, 1 Jun 2018, 08:29 , <julien.s...@gmail.com> wrote:
I understand.. Yes omxh264 seem to be based on OpenGL and I know that JavaFX is not OpenGL based..

I'm disapointed, I don't know if it's possible to redirect OpenGL render to JavaFX node or something like this

Actually, JavaFX on Pi almost certainly is OpenGL, just no easy way to access what's required. 

With Swing it's possible to embed an AWT Canvas and render to (above) that with the native video sink and video overlay API I think - not actually tried this with the GStreamer 1.x bindings yet - it's on my roadmap to check.

JavaFX is too much of a black box. Hopefully that may change now it's not part of the JDK. But, if it wasn't obvious, I hate JavaFX - think it's the complete opposite of what we actually need - an AWT 2 with access to modern desktop integration. 
Reply all
Reply to author
Forward
0 new messages