Files
NxtAR-cam/src/ve/ucv/ciens/ccg/nxtcam/camera/CameraImageMonitor.java

64 lines
1.8 KiB
Java
Raw Normal View History

2013-11-05 11:44:26 -04:30
package ve.ucv.ciens.ccg.nxtcam.camera;
import ve.ucv.ciens.ccg.nxtcam.utils.Logger;
public class CameraImageMonitor{
private final String TAG = "CAM_MONITOR";
private final String CLASS_NAME = CameraImageMonitor.class.getSimpleName();
private byte[] image;
private boolean imgProduced;
private boolean imgConsumed;
2013-11-05 11:44:26 -04:30
private CameraImageMonitor(){
imgProduced = false;
imgConsumed = false;
2013-11-05 11:44:26 -04:30
}
private static class SingletonHolder{
public static final CameraImageMonitor INSTANCE = new CameraImageMonitor();
}
public static CameraImageMonitor getInstance(){
return SingletonHolder.INSTANCE;
}
public void setImageData(byte[] image){
if(imgConsumed){
Logger.log_d(TAG, CLASS_NAME + ".setImageData() :: Copying new image.");
synchronized(this.image){
//this.image = new byte[image.length];
//System.arraycopy(image, 0, this.image, 0, image.length);
this.image = image;
imgProduced = true;
imgConsumed = false;
this.image.notifyAll();
}
Logger.log_d(TAG, CLASS_NAME + ".setImageData() :: Data copy finished.");
}else{
Logger.log_d(TAG, CLASS_NAME + ".setImageData() :: Old image still valid, ignoring new image.");
2013-11-05 11:44:26 -04:30
}
}
public byte[] getImageData(){
byte[] returnImg;
Logger.log_d(TAG, CLASS_NAME + ".getImageData() :: Entry point.");
2013-11-05 11:44:26 -04:30
synchronized(image){
while(!imgProduced){
Logger.log_d(TAG, CLASS_NAME + ".getImageData() :: Waiting for new image.");
try{ image.wait(); }catch(InterruptedException ie){ }
2013-11-05 11:44:26 -04:30
}
Logger.log_d(TAG, CLASS_NAME + ".getImageData() :: Retrieving new image.");
returnImg = image;
imgProduced = false;
imgConsumed = true;
2013-11-05 11:44:26 -04:30
}
Logger.log_d(TAG, CLASS_NAME + ".getImageData() :: New image retrieved.");
2013-11-05 11:44:26 -04:30
return returnImg;
}
public synchronized boolean hasChanged(){
return imgProduced;
2013-11-05 11:44:26 -04:30
}
}