/** * Convert YUVPicture to BufferedImage, minimizing object allocation * * @param picture YUVPicture to convert * @return new BufferedImage. */ public BufferedImage toBufferedImage(YUVPicture picture) { return toBufferedImage(picture, null); }
@Override public void encodeFrame(BufferedImage frame) throws IOException { if(converter == null) { converter = new YUVPictureConverter(); } YUVPicture pic = converter.fromBufferedImage(frame, YUVSubsamplingType.YUV420); encodeFrame(pic); pic.delete(); }
YUVPictureConverter converter = new YUVPictureConverter(); final BufferedImage img = converter.toBufferedImage(picture); SwingUtilities.invokeLater(new Runnable()
public byte[] convertBufferedImageToJPEGData(BufferedImage bufferedImage) { try { YUVPicture picture = converter.fromBufferedImage(bufferedImage, YUVSubsamplingType.YUV420); ByteBuffer buffer = encoder.encode(picture, 75); byte[] data = new byte[buffer.remaining()]; buffer.get(data); return data; } catch (IOException e) { e.printStackTrace(); return null; } } }
YUVPictureConverter converter = new YUVPictureConverter(); final BufferedImage img = converter.toBufferedImage(picture); SwingUtilities.invokeLater(new Runnable()
@Override public void encodeFrame(BufferedImage frame) throws IOException { YUVPicture picture = converter.fromBufferedImage(frame, YUVSubsamplingType.YUV420); encodeFrame(picture); picture.delete(); }
/** * Convert YUVPicture to BufferedImage, minimizing object allocation * * @param picture YUVPicture to convert * @return new BufferedImage. */ public BufferedImage toBufferedImage(YUVPicture picture) { return toBufferedImage(picture, null); }
@Override public void encodeFrame(BufferedImage frame) throws IOException { if(converter == null) { converter = new YUVPictureConverter(); } YUVPicture pic = converter.fromBufferedImage(frame, YUVSubsamplingType.YUV420); encodeFrame(pic); pic.delete(); }
@Override public void encodeFrame(BufferedImage frame) throws IOException { YUVPicture picture = converter.fromBufferedImage(frame, YUVSubsamplingType.YUV420); encodeFrame(picture); picture.delete(); }
@Override public void run() { image.setIcon(new ImageIcon(converter.toBufferedImage(img))); } });
@Override public void updateImage(VideoSource videoSource, BufferedImage bufferedImage, long timeStamp, Point3d cameraPosition, Quat4d cameraOrientation, IntrinsicParameters intrinsicParameters) { YUVPicture picture = converter.fromBufferedImage(bufferedImage, YUVSubsamplingType.YUV420); try { ByteBuffer buffer; synchronized (hackyLockBecauseJPEGEncoderIsNotThreadsafe) { buffer = encoder.encode(picture, 75); } byte[] data = new byte[buffer.remaining()]; buffer.get(data); handler.newVideoPacketAvailable(videoSource, timeStamp, data, cameraPosition, cameraOrientation, intrinsicParameters); } catch (IOException e) { e.printStackTrace(); } picture.delete(); }
@Override public void run() { image.setIcon(new ImageIcon(converter.toBufferedImage(img))); } });
YUVPicture frame = converter.fromBufferedImage(bufferedImage, YUVSubsamplingType.YUV420); frame.scale(desiredEvenHorizontalResolution, desiredEvenVerticalResolution, FilterModeEnum.kFilterBilinear); try
@Override public void run() { img = converter.toBufferedImage(nextFrame, img); nextFrame.delete(); ImageIcon icon = new ImageIcon(img); label.setIcon(icon); if (img.getWidth() != width || img.getHeight() != height) { width = img.getWidth(); height = img.getHeight(); label.setPreferredSize(new Dimension(width, height)); pack(); } } });
@Override public void run() { img = converter.toBufferedImage(nextFrame, img); nextFrame.delete(); ImageIcon icon = new ImageIcon(img); label.setIcon(icon); if (img.getWidth() != width || img.getHeight() != height) { width = img.getWidth(); height = img.getHeight(); label.setPreferredSize(new Dimension(width, height)); pack(); } } });
@Override public void run() { img = converter.toBufferedImage(nextFrame, img); nextFrame.delete(); ImageIcon icon = new ImageIcon(img); label.setIcon(icon); if (img.getWidth() != width || img.getHeight() != height) { width = img.getWidth(); height = img.getHeight(); label.setPreferredSize(new Dimension(width, height)); pack(); } } });
@Override public synchronized void consumeObject(byte[] data, Point3d position, Quat4d orientation, IntrinsicParameters intrinsicParameters) { nalBuffer.clear(); nalBuffer.put(data); nalBuffer.clear(); YUVPicture frame = decoder.decodeFrame(nalBuffer); if(frame != null) { image = converter.toBufferedImage(frame, image); videoStreamer.updateImage(image, position, orientation, intrinsicParameters); frame.delete(); } }
public BufferedImage decompressJPEGDataToBufferedImage(byte[] jpegData) { ByteBuffer byteBuffer = byteBufferProvider.getOrCreateBuffer(jpegData.length); byteBuffer.put(jpegData); byteBuffer.flip(); YUVPicture yuvPicture = jpegDecoder.decode(byteBuffer); BufferedImage bufferedImage = yuvPictureConverter.toBufferedImage(yuvPicture); yuvPicture.delete(); return bufferedImage; } }
@Override public void consumeObject(byte[] data, Point3d position, Quat4d orientation, IntrinsicParameters intrinsicParameters) { ByteBuffer buffer = byteBufferProvider.getOrCreateBuffer(data.length); buffer.put(data); buffer.flip(); YUVPicture pic = decoder.decode(buffer); BufferedImage img = converter.toBufferedImage(pic); pic.delete(); videoStreamer.updateImage(img, position, orientation, intrinsicParameters); } }
private void streamBufferedImagesFromVideo() { // Now, we start walking through the container looking at each packet. YUVPicture leftEye; YUVPicture rightEye; try { while ((leftEye = leftEyeDemuxer.getNextFrame()) != null && (rightEye = rightEyeDemuxer.getNextFrame()) != null) { videoListener.updateImage(converter.toBufferedImage(leftEye), converter.toBufferedImage(rightEye)); leftEye.delete(); rightEye.delete(); //TODO: Insert eait loop } } catch (IOException e) { e.printStackTrace(); } }