001package com.github.sarxos.webcam.ds.cgt; 002 003import java.nio.ByteBuffer; 004 005import org.slf4j.Logger; 006import org.slf4j.LoggerFactory; 007 008import com.github.sarxos.webcam.WebcamDevice; 009import com.github.sarxos.webcam.WebcamDevice.BufferAccess; 010import com.github.sarxos.webcam.WebcamDriver; 011import com.github.sarxos.webcam.WebcamTask; 012 013 014public class WebcamReadBufferTask extends WebcamTask { 015 016 private static final Logger LOG = LoggerFactory.getLogger(WebcamReadBufferTask.class); 017 018 private volatile ByteBuffer buffer = null; 019 020 public WebcamReadBufferTask(WebcamDriver driver, WebcamDevice device) { 021 super(driver, device); 022 } 023 024 public ByteBuffer getBuffer() { 025 try { 026 process(); 027 } catch (InterruptedException e) { 028 LOG.debug("Image buffer request interrupted", e); 029 return null; 030 } 031 return buffer; 032 } 033 034 @Override 035 protected void handle() { 036 037 WebcamDevice device = getDevice(); 038 if (!device.isOpen()) { 039 return; 040 } 041 042 if (!(device instanceof BufferAccess)) { 043 return; 044 } 045 046 buffer = ((BufferAccess) device).getImageBytes(); 047 } 048}