webcam-capture-driver-native/src/main/java/capturemanager/classes/CaptureManager.java

146 lines
3.7 KiB
Java

package capturemanager.classes;
import capturemanager.interfaces.*;
public class CaptureManager {
private static CaptureManager mInstance = null;
private ICaptureManagerNativeProxy mCaptureManagerNativeProxy = null;
private ICaptureManagerControl mICaptureManagerControl = null;
private ILogPrintOutControl mILogPrintOutControl = null;
private static Object mlockObject = new Object();
public static CaptureManager getInstance() {
synchronized (mlockObject) {
if (mInstance != null)
return mInstance;
boolean lstate = false;
try {
if (mInstance == null) {
mInstance = new CaptureManager();
mInstance.mCaptureManagerNativeProxy = CaptureManagerNativeProxy.getInstance();
lstate = true;
}
} finally {
if (mInstance != null && lstate == false)
mInstance.mCaptureManagerNativeProxy = null;
}
}
return mInstance;
}
private CaptureManager() {
}
private boolean checkFailNative() {
return mCaptureManagerNativeProxy == null;
}
public void freeLibrary() {
do {
if (checkFailNative())
break;
try {
if (mICaptureManagerControl != null)
mICaptureManagerControl.release();
if (mILogPrintOutControl != null)
mILogPrintOutControl.release();
mCaptureManagerNativeProxy.freeLibrary(
CaptureManagerNativeProxy.CaptureManagerFileName
);
mCaptureManagerNativeProxy = null;
CaptureManagerNativeProxy.freeInstance();
CaptureManagerNativeProxy.release();
} finally {
}
}
while (false);
}
public ILogPrintOutControl getILogPrintOutControl() {
ILogPrintOutControl lresult = null;
do {
if (checkFailNative())
break;
try {
long aPtr = mCaptureManagerNativeProxy.explicitGetPtrClass(
CaptureManagerNativeProxy.CaptureManagerFileName,
LogPrintOutControl.CLSID_CoLogPrintOut,
LogPrintOutControl.IID_ILogPrintOutControl);
if (aPtr == 0)
break;
lresult = new LogPrintOutControl(aPtr);
mILogPrintOutControl = lresult;
} finally {
}
}
while (false);
return mILogPrintOutControl;
}
public ICaptureManagerControl getICaptureManagerControl() {
ICaptureManagerControl lresult = new CaptureManagerControl(0);
do {
if (checkFailNative())
break;
try {
if (mICaptureManagerControl != null) {
lresult = mICaptureManagerControl;
break;
}
long aPtr = mCaptureManagerNativeProxy.explicitGetPtrClass(
CaptureManagerNativeProxy.CaptureManagerFileName,
CaptureManagerControl.CLSID_CoCaptureManager,
CaptureManagerControl.IID_ICaptureManagerControl);
if (aPtr == 0)
break;
lresult = new CaptureManagerControl(aPtr);
mICaptureManagerControl = lresult;
} finally {
}
}
while (false);
return lresult;
}
}