273 lines
5.5 KiB
C++
273 lines
5.5 KiB
C++
#define WIN32_LEAN_AND_MEAN
|
|
|
|
|
|
#include <Unknwnbase.h>
|
|
|
|
|
|
#include "JNI\capturemanager_classes_SourceControlNative.h"
|
|
#include "CaptureManagerTypeInfo.h"
|
|
#include "ComPtrCustom.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/*
|
|
* Class: capturemanager_classes_SourceControlNative
|
|
* Method: createSourceControl
|
|
* Signature: (JLjava/lang/String;Ljava/lang/String;)J
|
|
*/
|
|
JNIEXPORT jlong JNICALL Java_capturemanager_classes_SourceControlNative_createSourceControl
|
|
(JNIEnv * aPtrEnv, jobject aClass, jlong aPtr, jstring aSymbolicLink, jstring aStringIID)
|
|
{
|
|
jlong lresult = 0;
|
|
|
|
do
|
|
{
|
|
if (aPtr == 0)
|
|
break;
|
|
|
|
if (aSymbolicLink == 0)
|
|
break;
|
|
|
|
if (aPtrEnv == nullptr)
|
|
break;
|
|
|
|
IUnknown* lPtrIUnknown = (IUnknown*)aPtr;
|
|
|
|
CComPtrCustom<ISourceControl> lObject;
|
|
|
|
HRESULT lhr = lPtrIUnknown->QueryInterface(IID_PPV_ARGS(&lObject));
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
|
|
const jchar *lPtrStringIID = aPtrEnv->GetStringChars(aStringIID, nullptr);
|
|
|
|
CLSID lIID;
|
|
|
|
lhr = CLSIDFromString((wchar_t*)lPtrStringIID, &lIID);
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
CComPtrCustom<IUnknown> lControl;
|
|
|
|
const jchar *lPtrSymbolicLink = aPtrEnv->GetStringChars(aSymbolicLink, nullptr);
|
|
|
|
lhr = lObject->createSourceControl(
|
|
(wchar_t*)lPtrSymbolicLink,
|
|
lIID,
|
|
&lControl);
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
lresult = (jlong)lControl.detach();
|
|
|
|
} while (false);
|
|
|
|
return lresult;
|
|
}
|
|
|
|
/*
|
|
* Class: capturemanager_classes_SourceControlNative
|
|
* Method: createSourceNode
|
|
* Signature: (JLjava/lang/String;II)J
|
|
*/
|
|
JNIEXPORT jlong JNICALL Java_capturemanager_classes_SourceControlNative_createSourceNode
|
|
(JNIEnv * aPtrEnv, jobject aClass, jlong aPtr, jstring aSymbolicLink, jint aStreamIndex, jint aMediaTypeIndex)
|
|
{
|
|
jlong lresult = 0;
|
|
|
|
do
|
|
{
|
|
if (aPtr == 0)
|
|
break;
|
|
|
|
if (aSymbolicLink == 0)
|
|
break;
|
|
|
|
if (aPtrEnv == nullptr)
|
|
break;
|
|
|
|
IUnknown* lPtrIUnknown = (IUnknown*)aPtr;
|
|
|
|
CComPtrCustom<ISourceControl> lObject;
|
|
|
|
HRESULT lhr = lPtrIUnknown->QueryInterface(IID_PPV_ARGS(&lObject));
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
CComPtrCustom<IUnknown> lSourceNode;
|
|
|
|
const jchar *lPtrSymbolicLink = aPtrEnv->GetStringChars(aSymbolicLink, nullptr);
|
|
|
|
lhr = lObject->createSourceNode(
|
|
(wchar_t*)lPtrSymbolicLink,
|
|
aStreamIndex,
|
|
aMediaTypeIndex,
|
|
&lSourceNode);
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
lresult = (jlong)lSourceNode.detach();
|
|
|
|
} while (false);
|
|
|
|
return lresult;
|
|
}
|
|
|
|
/*
|
|
* Class: capturemanager_classes_SourceControlNative
|
|
* Method: createSourceNodeWithDownStreamConnection
|
|
* Signature: (JLjava/lang/String;IIJ)J
|
|
*/
|
|
JNIEXPORT jlong JNICALL Java_capturemanager_classes_SourceControlNative_createSourceNodeWithDownStreamConnection
|
|
(JNIEnv * aPtrEnv, jobject aClass, jlong aPtr, jstring aSymbolicLink, jint aStreamIndex, jint aMediaTypeIndex, jlong aDownStreamPtr)
|
|
{
|
|
jlong lresult = 0;
|
|
|
|
do
|
|
{
|
|
if (aPtr == 0)
|
|
break;
|
|
|
|
if (aDownStreamPtr == 0)
|
|
break;
|
|
|
|
if (aPtrEnv == nullptr)
|
|
break;
|
|
|
|
IUnknown* lPtrIUnknown = (IUnknown*)aPtr;
|
|
|
|
CComPtrCustom<ISourceControl> lObject;
|
|
|
|
HRESULT lhr = lPtrIUnknown->QueryInterface(IID_PPV_ARGS(&lObject));
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
IUnknown* lPtrDownStream = (IUnknown*)aDownStreamPtr;
|
|
|
|
CComPtrCustom<IUnknown> lSourceNode;
|
|
|
|
const jchar *lPtrSymbolicLink = aPtrEnv->GetStringChars(aSymbolicLink, nullptr);
|
|
|
|
lhr = lObject->createSourceNodeWithDownStreamConnection(
|
|
(wchar_t*)lPtrSymbolicLink,
|
|
aStreamIndex,
|
|
aMediaTypeIndex,
|
|
lPtrDownStream,
|
|
&lSourceNode);
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
lresult = (jlong)lSourceNode.detach();
|
|
|
|
} while (false);
|
|
|
|
return lresult;
|
|
}
|
|
|
|
/*
|
|
* Class: capturemanager_classes_SourceControlNative
|
|
* Method: getCollectionOfSources
|
|
* Signature: (J)Ljava/lang/String;
|
|
*/
|
|
JNIEXPORT jstring JNICALL Java_capturemanager_classes_SourceControlNative_getCollectionOfSources
|
|
(JNIEnv * aPtrEnv, jobject aClass, jlong aPtr)
|
|
{
|
|
jstring lresult = nullptr;
|
|
|
|
do
|
|
{
|
|
if (aPtr == 0)
|
|
break;
|
|
|
|
if (aPtrEnv == nullptr)
|
|
break;
|
|
|
|
IUnknown* lPtrIUnknown = (IUnknown*)aPtr;
|
|
|
|
CComPtrCustom<ISourceControl> lObject;
|
|
|
|
HRESULT lhr = lPtrIUnknown->QueryInterface(IID_PPV_ARGS(&lObject));
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
BSTR lXMLstring = nullptr;
|
|
|
|
lhr = lObject->getCollectionOfSources(&lXMLstring);
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
auto lLength = SysStringLen(lXMLstring);
|
|
|
|
lresult = aPtrEnv->NewString((jchar*)lXMLstring, lLength);
|
|
|
|
SysFreeString(lXMLstring);
|
|
|
|
} while (false);
|
|
|
|
return lresult;
|
|
}
|
|
|
|
/*
|
|
* Class: capturemanager_classes_SourceControlNative
|
|
* Method: getSourceOutputMediaType
|
|
* Signature: (JLjava/lang/String;II)J
|
|
*/
|
|
JNIEXPORT jlong JNICALL Java_capturemanager_classes_SourceControlNative_getSourceOutputMediaType
|
|
(JNIEnv * aPtrEnv, jobject aClass, jlong aPtr, jstring aSymbolicLink, jint aStreamIndex, jint aMediaTypeIndex)
|
|
{
|
|
jlong lresult = 0;
|
|
|
|
do
|
|
{
|
|
if (aPtr == 0)
|
|
break;
|
|
|
|
if (aSymbolicLink == 0)
|
|
break;
|
|
|
|
if (aPtrEnv == nullptr)
|
|
break;
|
|
|
|
IUnknown* lPtrIUnknown = (IUnknown*)aPtr;
|
|
|
|
CComPtrCustom<ISourceControl> lObject;
|
|
|
|
HRESULT lhr = lPtrIUnknown->QueryInterface(IID_PPV_ARGS(&lObject));
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
CComPtrCustom<IUnknown> lMediaType;
|
|
|
|
const jchar *lPtrSymbolicLink = aPtrEnv->GetStringChars(aSymbolicLink, nullptr);
|
|
|
|
lhr = lObject->getSourceOutputMediaType(
|
|
(wchar_t*)lPtrSymbolicLink,
|
|
aStreamIndex,
|
|
aMediaTypeIndex,
|
|
&lMediaType);
|
|
|
|
if (FAILED(lhr))
|
|
break;
|
|
|
|
lresult = (jlong)lMediaType.detach();
|
|
|
|
} while (false);
|
|
|
|
return lresult;
|
|
}
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif |