public void PlayVideoStream() {
    // debugGST();

    String rtspsource = "";
    if (Parent.Camera.GetColorMode() == ColorMode.RGB) {
      rtspsource =
          "rtspsrc location=rtsp://"
              + Parent.Camera.GetIP()[0]
              + ":554 protocols=0x00000001 latency=60 name=camerasource ! rtpjpegdepay ! jpegdec ! decodebin2 ! ffmpegcolorspace name=elphelstream";
    } else if (Parent.Camera.GetColorMode() == ColorMode.JP46) {
      //            rtspsrc location=rtsp://" + Parent.Camera.GetIP() + ":554 protocols=0x00000001
      // latency=50 ! rtpjpegdepay ! jpegdec ! queue ! jp462bayer ! queue ! bayer2rgb2 !
      // ffmpegcolorspace ! videorate ! "video/x-raw-yuv, format=(fourcc)I420, width=(int)1920,
      // height=(int)1088, framerate=(fraction)25/1" ! xvimagesink sync=false max-lateness=-1
      rtspsource =
          "rtspsrc location=rtsp://"
              + Parent.Camera.GetIP()[0]
              + ":554 protocols=0x00000001 latency=60 name=camerasource ! rtpjpegdepay ! jpegdec ! queue ! jp462bayer ! queue ! bayer2rgb2 method=0 ! ffmpegcolorspace  name=elphelstream";
    } else {
      // TODO in this mode we dont see anything from the non-jpeg compliant stream so the jp46
      // filter wont help, but what else should we show?
      rtspsource =
          "rtspsrc location=rtsp://"
              + Parent.Camera.GetIP()[0]
              + ":554 protocols=0x00000001 latency=60 name=camerasource ! rtpjpegdepay ! jpegdec ! queue ! jp462bayer ! queue ! bayer2rgb2 method=0 name=elphelstream";
    }

    pipe = Pipeline.launch(rtspsource);

    videoComponent.setKeepAspect(true);
    Element videosink = videoComponent.getElement();
    pipe.add(videosink);

    pipe.getElementByName("elphelstream").link(videosink);

    pipe.getBus()
        .connect(
            new Bus.EOS() {

              public void endOfStream(GstObject source) {
                System.out.println("Finished playing file");
                // Gst.quit();
              }
            });
    /*pipe.getBus().connect(new Bus.INFO() {

    public void infoMessage(GstObject source, int code, String message) {
    System.out.println("message: " + message);
    }
    });
    pipe.getBus().connect(new Bus.MESSAGE() {

    public void busMessage(Bus bus, Message message) {
    System.out.println("message: " + message);
    }
    });
    pipe.getBus().connect(new Bus.WARNING() {

    public void warningMessage(GstObject source, int code, String message) {
    System.out.println("warning: " + message);
    }
    });*/
    pipe.getBus()
        .connect(
            new Bus.ERROR() {

              public void errorMessage(GstObject source, int code, String message) {
                System.out.println("Error occurred: " + message);
                Gst.quit();
              }
            });
    /*pipe.getBus().connect(new Bus.STATE_CHANGED() {

    public void stateChanged(GstObject source, State old, State current, State pending) {
    if (source == pipe) {
    System.out.println("Pipeline state changed from " + old + " to " + current);
    }
    }
    });*/

    pipe.setState(State.PLAYING);

    /*
    Playbin.add(videosink);
    //     Pipeline pipe = new Pipeline("SimplePipeline");
    /*
    Element src = ElementFactory.make("rtspsrc", "elphelsrc");
    src.set("location", "rtsp://" + Parent.Camera.GetIP()[0] + ":554");
    src.set("protocols", "00000001"); // "0x00000001" doesnt work
    src.set("latency", "50");
    Playbin.add(src);*/
    // Playbin.getElementByName("elphelsrc").link(Playbin.getSinks().get(0));
    // Element sink = ElementFactory.make("fakesink", "Destination");
    // Playbin.addMany(src, sink);
    // src.link(sink);*/
    // Playbin2
    /*
    try {
    Playbin.setURI(new URI("rtsp://" + Parent.Camera.GetIP()[0] + ":554"));
    } catch (URISyntaxException ex) {
    Logger.getLogger(GstreamerPlayer.class.getName()).log(Level.SEVERE, null, ex);
    }
    //.getElementByName("uri").set("protocols", "00000001");
    //Playbin.getElementByName("uri").set("latency", "50");

    //Playbin.setInputFile(new File("test.avi")); // works

    // Playbin.set("buffer-duration", 0); // NO Effect
    // Playbin.set("buffer-size", 0); // NO Effect

    Playbin.setState(State.PLAYING);
     */
    /*
    final List<URI> playList = new LinkedList<URI>();
    for (String arg : args) {
    playList.add(new File(arg).toURI());
    }

    GSTPlayer.setPreferredSize(new Dimension(640, 480));
    GSTPlayer.setControlsVisible(false);
    //player.setKeepAspect(true);
    GSTPlayer.getMediaPlayer().setPlaylist(playList);
    GSTPlayer.getMediaPlayer().play();

     */
    // GstreamerPlayer.SetVideocomponent(GstreamerVideoComponent);
    /*
    String rtspsource = "";
    if (Parent.Camera.GetColorMode() == ColorMode.RGB) {
    rtspsource = "rtspsrc location=rtsp://" + Parent.Camera.GetIP()[0] + ":554 protocols=0x00000001 latency=50 ! rtpjpegdepay ! jpegdec ! decodebin ! ffmpegcolorspace name=elphelstream";
    } else if (Parent.Camera.GetColorMode() == ColorMode.JP46) {
    //            rtspsrc location=rtsp://" + Parent.Camera.GetIP() + ":554 protocols=0x00000001 latency=50 ! rtpjpegdepay ! jpegdec ! queue ! jp462bayer ! queue ! bayer2rgb2 ! ffmpegcolorspace ! videorate ! "video/x-raw-yuv, format=(fourcc)I420, width=(int)1920, height=(int)1088, framerate=(fraction)25/1" ! xvimagesink sync=false max-lateness=-1
    rtspsource = "rtspsrc location=rtsp://" + Parent.Camera.GetIP()[0] + ":554 protocols=0x00000001 latency=50 ! rtpjpegdepay ! jpegdec ! queue ! jp462bayer ! queue ! bayer2rgb2 method=0 ! ffmpegcolorspace  name=elphelstream";
    } else {
    //TODO in this mode we dont see anything from the non-jpeg compliant stream so the jp46 filter wont help, but what else should we show?
    rtspsource = "rtspsrc location=rtsp://" + Parent.Camera.GetIP()[0] + ":554 protocols=0x00000001 latency=50 ! rtpjpegdepay ! jpegdec ! queue ! jp462bayer ! queue ! bayer2rgb2 method=0 name=elphelstream";
    }

    //Notes

    //LUT
    //gst-launch rtspsrc location=rtsp://192.168.10.141:554 protocols=0x00000001 latency=50 ! rtpjpegdepay ! jpegdec ! queue ! ffmpegcolorspace ! videorate ! coloreffects preset=heat ! ffmpegcolorspace ! autovideosink -v

    //edge detection:
    //gst-launch rtspsrc location=rtsp://192.168.10.141:554 protocols=0x00000001 latency=50 ! rtpjpegdepay ! jpegdec ! queue ! ffmpegcolorspace ! videorate ! edgetv ! ffmpegcolorspace ! autovideosink -v

    // kind of scopes
    //gst-launch rtspsrc location=rtsp://192.168.10.141:554 protocols=0x00000001 latency=50 ! rtpjpegdepay ! jpegdec ! queue ! ffmpegcolorspace ! videorate ! revtv ! ffmpegcolorspace ! autovideosink -v

    pipe = Pipeline.launch(rtspsource);

    videoComponent.setKeepAspect(true);
    Element videosink = videoComponent.getElement();
    pipe.add(videosink);
    pipe.getElementByName("elphelstream").link(videosink);


    pipe.setState(State.PLAYING);
    List<Element> sinks = pipe.getSinks();

    /*

    String rtspsource = "rtspsrc location=rtsp://" + Parent.Camera.GetIP() + ":554 latency=30 ! rtpjpegdepay ! jpegdec name=elphelstream";
    pipe = Pipeline.launch(rtspsource);

    //pipe = new Pipeline("GstreamerViewer");

    //videosrc = ElementFactory.make("videotestsrc", "source");
    //videosrc = ElementFactory.make("rtspsource ", "source");
    ///videosrc.setCaps(Caps.fromString("location=rtsp://192.168.10.141:554 latency=30"));
    //Element rtpjpegdepay = ElementFactory.make("rtpjpegdepay", "rtpjpegdepay");
    //Element jpegdec = ElementFactory.make("jpegdec", "jpegdec");

    Element videosink = ElementFactory.make("xvimagesink", "sink");

    //Element videosink = videoComponent.getElement();
    pipe.add(videosink);
    pipe.getElementByName("elphelstream").link(videosink);

    //playbin.setInputFile(new File(args[0]));
    //pipe.addMany(videosrc, rtpjpegdepay, jpegdec, videosink);
    //videosrc.link(videosink);
    //Element.linkMany(videosrc, rtpjpegdepay, jpegdec, videosink);
    pipe.setState(State.PLAYING);
    Gst.main();
    pipe.setState(State.NULL);


    //gst-launch rtspsrc location=rtsp://192.168.10.141:554 latency=30 ! rtpjpegdepay ! jpegdec ! xvimagesink

    //VideoComponent videoComponent = new VideoComponent();
    //videosink = videoComponent.getElement();
    //playbin.setVideoSink(videosink);


    //Element.linkMany(videosrc, videosink);*/
  }