@Override
 public void beforeUpdate(MBFImage frame) {
   if (transform != null) {
     MBFImage bgCopy = mbfImage.clone();
     MBFProjectionProcessor proj = new MBFProjectionProcessor();
     proj.setMatrix(transform);
     proj.accumulate(frame);
     proj.performProjection(0, 0, bgCopy);
     panel.setImage(bimg = ImageUtilities.createBufferedImageForDisplay(bgCopy, bimg));
   } else panel.setImage(bimg = ImageUtilities.createBufferedImageForDisplay(frame, bimg));
 }
  @Override
  public Component getComponent(int width, int height) throws IOException {
    if (this.pictureSlide == null) {
      this.mbfImage = new MBFImage(width, height, 3);
      panel = (ImageComponent) new PictureSlide(mbfImage).getComponent(width, height);
    } else {
      panel = (ImageComponent) pictureSlide.getComponent(width, height);
      this.mbfImage = pictureSlide.mbfImage.clone();
    }

    panel.setSize(width, height);
    panel.setPreferredSize(new Dimension(width, height));

    video = new XuggleVideo(url, true);
    display = VideoDisplay.createOffscreenVideoDisplay(video);
    display.setStopOnVideoEnd(false);

    display.addVideoListener(this);

    return panel;
  }