Here is the other patch for decklink_common.cpp. It fix the error:

   COM initialization failed
   [decklink @ 02e5b520] Could not create DeckLink iterator
   dummy: Immediate exit request

Regards
Jonathan


>From 203eba2fad14dd6d84552d6c22899792e80b53bb Mon Sep 17 00:00:00 2001
From: Jonathan Baecker <jonba...@gmail.com>
Date: Tue, 2 Dec 2014 20:12:38 +0100
Subject: [PATCH 2/2] device list error in decklink_common

Signed-off-by: Jonathan Baecker <jonba...@gmail.com>
---
 libavdevice/decklink_common.cpp | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/libavdevice/decklink_common.cpp b/libavdevice/decklink_common.cpp
index 8eff910..8f7e32a 100644
--- a/libavdevice/decklink_common.cpp
+++ b/libavdevice/decklink_common.cpp
@@ -42,16 +42,20 @@ IDeckLinkIterator *CreateDeckLinkIteratorInstance(void)
 {
     IDeckLinkIterator *iter;
 
-    if (CoInitialize(NULL) != S_OK) {
-        av_log(NULL, AV_LOG_ERROR, "COM initialization failed.\n");
-        return NULL;
-    }
-
-    if (CoCreateInstance(CLSID_CDeckLinkIterator, NULL, CLSCTX_ALL,
-                         IID_IDeckLinkIterator, (void**) &iter) != S_OK) {
-        av_log(NULL, AV_LOG_ERROR, "DeckLink drivers not installed.\n");
-        return NULL;
-    }
+    HRESULT result;
+    /* Initialize COM on this thread */
+    result = CoInitialize(NULL);
+    if (FAILED(result)) {
+        av_log(NULL, AV_LOG_ERROR, "COM initialization failed.\n");
+        return NULL;
+    }
+
+    /* Create an IDeckLinkIterator object to enumerate all DeckLink cards in 
the system */
+    result = CoCreateInstance(CLSID_CDeckLinkIterator, NULL, CLSCTX_ALL, 
IID_IDeckLinkIterator, (void**)&iter);
+    if (FAILED(result)) {
+        av_log(NULL, AV_LOG_ERROR, "DeckLink drivers not installed.\n");
+        return NULL;
+    }
 
     return iter;
 }
-- 
2.2.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to