Error when attempting to open a document using VL.Devices.DeckLink when no DeckLink card is present

Hey there,

When trying to open a document that uses the DeckLink video in, if the machine does not have a DeckLink card, this error is thrown in the Console :

Error
http://vvvv.org


    COMException: "Retrieving the COM class factory for component with CLSID {BA6C6F44-6DA5-4DCE-94AA-EE2D1372A676} failed due to the following error: 80040154 Class not registered (0x80040154 (REGDB_E_CLASSNOTREG))."
        StackTrace:
            VL.Devices.DeckLink.DeviceEnum { protected virtual System.Collections.Generic.IReadOnlyDictionary<string, object> GetEntries() { ... } }  in "DeviceEnum.cs" Ln 22
            VL.Lib.Collections.DynamicEnumDefinitionBase`1 { private System.Collections.Generic.IReadOnlyList<string> SetNewEntries() { ... } } 
            VL.Lib.Collections.DynamicEnumDefinitionBase`1 { private void InternalInitialize() { ... } } 
            VL.Lib.Collections.DynamicEnumDefinitionBase`1 { public static TDefinitionSubclass get_Instance() { ... } } 
            VL.Lib.Collections.DynamicEnumBase`2 { public virtual VL.Lib.Collections.IDynamicEnumDefinition get_Definition() { ... } } 
            

TargetInvocationException: "Exception has been thrown by the target of an invocation."
    StackTrace:
        System.RuntimeMethodHandle { internal static object InvokeMethod(object target, System.Span<>& arguments, System.Signature sig, bool constructor, bool wrapExceptions) { ... } } 
        System.Reflection.RuntimeConstructorInfo { public virtual object Invoke(System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object[] parameters, System.Globalization.CultureInfo culture) { ... } } 
        System.RuntimeType { internal object CreateInstanceImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture) { ... } } 
        System.Activator { public static object CreateInstance(System.Type type, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, object[] args, System.Globalization.CultureInfo culture, object[] activationAttributes) { ... } } 
        System.Activator { public static object CreateInstance(System.Type type, object[] args) { ... } } 
        VL.HDE.PatchEditor.Editors.EditorFactory+<>c__DisplayClass10_0 { internal VL.HDE.PatchEditor.Editors.IValueEditor <.cctor>b__47(VL.Lang.View.CanvasView c, VL.Lang.View.View p, System.Type t, object v) { ... } } 
        VL.HDE.PatchEditor.Editors.EditorFactory { public static VL.HDE.PatchEditor.Editors.IValueEditor GetEditor(VL.Lang.View.CanvasView canvas, VL.Lang.View.View parentView, System.Type type, object value) { ... } } 
        VL.Lang.View.PadView { private void UpdateEditor(VL.Model.Pad pad) { ... } } 
        VL.Lang.View.PadView { protected virtual void SetModel(VL.Model.Element oldValue, VL.Model.Element value) { ... } } 
        VL.Lang.View.ElementView { public virtual void set_Model(VL.Model.Element value) { ... } } 
        VL.Lang.View.ModelView { public virtual void set_Model(VL.Model.Element value) { ... } } 
        VL.Lang.View.DataHubView { public virtual void set_Model(VL.Model.Element value) { ... } } 
        
        VL.Lang.View.CompoundView { private VL.Lang.View.PadView <SetModel>b__43_2(VL.Model.Pad m) { ... } } 
        VL.Lang.ModelRestoreNodes+Synchronizer`2 { public void Update(System.Collections.Generic.IEnumerable<> input, System.Func<, > create, System.Action<, > updator) { ... } } 
        VL.Lang.ModelRestoreNodes { public static void RestoreViews(System.Collections.Generic.IEnumerable<> newElements, VL.Lang.ModelRestoreNodes.Synchronizer<, > sync, System.Func<, > creator, System.Action<, > modelsetter) { ... } } 
        VL.Lang.View.CompoundView { protected virtual void SetModel(VL.Model.Element oldValue, VL.Model.Element value) { ... } } 
        VL.Lang.View.CanvasView { protected virtual void SetModel(VL.Model.Element oldValue, VL.Model.Element value) { ... } } 
        VL.Lang.View.ElementView { public virtual void set_Model(VL.Model.Element value) { ... } } 
        VL.Lang.View.ModelView { public virtual void set_Model(VL.Model.Element value) { ... } } 
        
        VL.HDE.PatchEditor.EditorControl { private VL.Lang.View.CanvasView NewCanvas(VL.Model.Canvas canvas) { ... } } 
        VL.HDE.PatchEditor.EditorControl { public VL.Model.Canvas OpenCanvas(VL.Model.Canvas canvas, bool addToHistory, VL.Model.Node focusedNode, bool setActiveCanvs) { ... } } 
        VL.HDE.PatchEditor.EditorControl+<>c__DisplayClass40_0 { internal bool <ShowDocument>g__ShowAppPatch|0(System.Func<VL.Model.Canvas, bool> askagain) { ... } } 
        VL.HDE.PatchEditor.EditorControl { public void ShowDocument(VL.Model.Document document, VL.HDE.PatchEditor.ShowSpecialPatch showSpecialPatch) { ... } } 
        VL.HDE.PatchEditor.NavigationMenuProvider+<DoOpenDocumentsAsync>d__49 { private virtual void MoveNext() { ... } } 
        System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { ... } } 
        System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { ... } } 
        System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task) { ... } } 
        System.Runtime.CompilerServices.TaskAwaiter { public void GetResult() { ... } } 
        VL.Model.VLSession+<>c__DisplayClass184_0+<<RunAndForget>b__0>d { private virtual void MoveNext() { ... } } 

The patch is not displayed : Renderers are popping, but the patch is never shown.

Manually editing the XML to get rid of the VideoIn node and the Device enum “solves” the issue.

Is there any way this error could be avoided?

Thanks!
seb

Indeed, upcoming builds will catch such exceptions and continue opening the document.

1 Like

Hey there,

Thanks for the fix, the patch now indeed opens and runs, but I get this error on startup :

COMException: "Retrieving the COM class factory for component with CLSID {BA6C6F44-6DA5-4DCE-94AA-EE2D1372A676} failed due to the following error: 80040154 Class not registered (0x80040154 (REGDB_E_CLASSNOTREG))."
    StackTrace:
        VL.Devices.DeckLink.DeviceEnum { protected virtual System.Collections.Generic.IReadOnlyDictionary<string, object> GetEntries() { ... } }  in "DeviceEnum.cs" Ln 22
        VL.Lib.Collections.DynamicEnumDefinitionBase`1 { private System.Collections.Generic.IReadOnlyDictionary<string, object> <SetNewEntries>g__GetEntriesSafe|27_1() { ... } } 

You’re right. Pop-up was a little too harsh. It will just be logged in the future.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.