[Sumover-dev] [svn commit] r4631 - vic/branches/mpeg4/video
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Sun Feb 21 02:50:26 GMT 2010
Author: douglask
Date: Sun Feb 21 02:50:25 2010
New Revision: 4631
Modified:
vic/branches/mpeg4/video/grabber-decklink.cpp
Log:
Needed to add call to Grabber::timeout() for Windows DeckLink grabber, otherwise the grabber thread would terminate.
Modified: vic/branches/mpeg4/video/grabber-decklink.cpp
==============================================================================
--- vic/branches/mpeg4/video/grabber-decklink.cpp (original)
+++ vic/branches/mpeg4/video/grabber-decklink.cpp Sun Feb 21 02:50:25 2010
@@ -241,19 +241,19 @@
HRESULT result;
#if defined(_WIN32) || defined(_WIN64)
- // Initialize COM on this thread
- result = CoInitializeEx(NULL,COINIT_MULTITHREADED);
- if (FAILED(result)) {
- debug_msg("DeckLinkScanner: Failed COM subsystem initialisation.\n");
- return;
- }
+ // Initialize COM on this thread
+ result = CoInitializeEx(NULL,COINIT_MULTITHREADED);
+ if (FAILED(result)) {
+ debug_msg("DeckLinkScanner: Failed COM subsystem initialisation.\n");
+ return;
+ }
CComPtr<IDeckLinkIterator> deckLinkIterator = NULL;
- if (CoCreateInstance(CLSID_CDeckLinkIterator, NULL, CLSCTX_ALL, IID_IDeckLinkIterator, (void**)&deckLinkIterator) != S_OK || deckLinkIterator == NULL) {
+ if (CoCreateInstance(CLSID_CDeckLinkIterator, NULL, CLSCTX_INPROC_SERVER, IID_IDeckLinkIterator, (void**)&deckLinkIterator) != S_OK || deckLinkIterator == NULL) {
debug_msg("DeckLinkScanner: DeckLink iterator instance could not be created\n");
CoUninitialize();
return;
- }
+ }
#else
IDeckLinkIterator* deckLinkIterator;
deckLinkIterator = CreateDeckLinkIteratorInstance();
@@ -272,16 +272,16 @@
CComBSTR cardNameBSTR;
result = deckLink->GetModelName(&cardNameBSTR);
- if (result == S_OK) {
+ if (result == S_OK) {
CW2A tmpstr1(cardNameBSTR);
strncpy_s(deviceNameString, sizeof(deviceNameString), tmpstr1, _TRUNCATE);
- }
+ }
#elif __APPLE__
char deviceNameString[64] = {};
CFStringRef modelName;
result = deckLink->GetModelName(&modelName);
-
+
if (result == S_OK) {
CFStringGetCString(modelName, deviceNameString, sizeof(deviceNameString), kCFStringEncodingASCII);
}
@@ -313,7 +313,7 @@
}
}
#if defined(_WIN32) || defined(_WIN64)
- CoUninitialize();
+ CoUninitialize();
#endif
}
@@ -390,10 +390,10 @@
CComBSTR displayModeNameBSTR;
result = displayMode->GetName(&displayModeNameBSTR);
- if (result == S_OK) {
+ if (result == S_OK) {
CW2A tmpstr1(displayModeNameBSTR);
strncpy_s(displayModeString, sizeof(displayModeString), tmpstr1, _TRUNCATE);
- }
+ }
#elif __APPLE__
char displayModeString[64] = {};
@@ -565,10 +565,10 @@
CComBSTR displayModeNameBSTR;
result = displayMode->GetName(&displayModeNameBSTR);
- if (result == S_OK) {
+ if (result == S_OK) {
CW2A tmpstr1(displayModeNameBSTR);
strncpy_s(displayModeString, sizeof(displayModeString), tmpstr1, _TRUNCATE);
- }
+ }
#elif __APPLE__
char displayModeString[64] = {};
@@ -694,6 +694,9 @@
fprintf(stderr, "Grabber::start()\n");
Grabber::start();
running_ = 1;
+#if defined(_WIN32) || defined(_WIN64)
+ Grabber::timeout();
+#endif
}
void DeckLinkGrabber::stop()
More information about the Sumover-dev
mailing list