@Override
  public void write(int[] data) {
    if (flipImage) {
      int[] buffer = new int[data.length];
      for (int y = 0; y < data.length; y += width) {
        for (int x = w - 1; x >= 0; x -= 1) {
          buffer[y + x] = data[y + width - 1 - x];
        }
      }
      data = buffer;
    }
    if (devFD != 0) {

      byte[] buffer = null;
      switch (pixFormat) {
        case RGB24:
          buffer = img2rgb24(data);
          break;
        case UYVY:
          buffer = img2uyvy(data);
          break;
      }

      int countWritten = 0;
      countWritten = CV4l2.INSTANCE.writeData(devFD, buffer, buffer.length);
      if (countWritten != buffer.length) {
        System.out.println("Error Writing Data - " + countWritten);
      }
    }
  }
 @Override
 public void open(String path, int w, int h, int pixFormat) {
   width = w;
   height = h;
   devicePath = path;
   V4L2Loopback.pixFormat = pixFormat;
   devFD = CV4l2.INSTANCE.open_device(devicePath, w, h, pixFormat);
   if (devFD <= 0) {
     System.out.println("Error Opening Device");
   }
 }
 @Override
 public void close() {
   CV4l2.INSTANCE.close_device(devFD);
 }