Project

General

Profile

Actions

Support Request #4683

closed

EBPRODUCTSUPPORT-1794 Bugfix DirectShowDevice-Filter

Added by hidden over 5 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Customer:
ELEKTROBIT
Department:
SUPPORT
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Platform:
Topic:
DeviceTB::Common
FAQ Links:

Description

Supportanfrage

Ein Kunde hat ein problem mit der Korrekten Auflösung der Webcam beim DirectShowDevice-Filter. Dieses Problem wurde schonmals in einem alten Supportticket behandelt, weswegen wir dem Kunden den Bugfix aus dem Ticket zukommen ließen.
Das Originalticket hatte bei euch wohl die Ticket-ID 17167KDPEI.

Dieser Bugfix funktioniert leider nicht mehr mit der aktuellen ADTF version:

"Leider scheint dieser Bugfix nicht mit der aktuellen ADTF-Version (2.14.2) kompatibel zu sein. Das Filter-Binary des Bugfixes lässt sich nicht in ADTF einbinden und der Source Code kompiliert nicht, da der Bugfix inkompatibel zum ADTF-SDK (2.14.2), genauer zur Klasse cBaseCaptureDevice in capturedevice.h ist.
Ich habe versucht, den Source Code von "common_directshowcapture" der Device Toolbox 2.7.0 zu kompilieren, aber dies ist an Linker-Problemen gescheitert."

Hier der Linker-Fehler:

1>------ Build started: Project: common_directshowcapture, Configuration: Release x64 ------
1> Creating library D:/work/adtf/addons/adtf-device-toolbox/build/src/plugins/common_directshowcapture/Release/common_directshowcapture.lib and object D:/work/adtf/addons/adtf-device-toolbox/build/src/plugins/common_directshowcapture/Release/common_directshowcapture.exp
1>DSRenderer.obj : error LNK2019: unresolved external symbol "public: cdecl CBaseVideoRenderer::CBaseVideoRenderer(struct _GUID const &,char const *,struct IUnknown *,long *)" (??0CBaseVideoRenderer@QEAA@AEBU_GUID@PEBDPEAUIUnknown@PEAJ@Z) referenced in function "public: __cdecl cDSRenderer::cDSRenderer(class IDSRendererEventSink *)" (??0cDSRenderer@QEAA@PEAVIDSRendererEventSink@@Z)
1>strmbase.lib(ctlutil.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *,unsigned __int64)" (??3@YAXPEAX_K@Z)
1>strmbase.lib(amfilter.obj) : error LNK2019: unresolved external symbol "void __cdecl operator delete(void *,unsigned __int64)" (??3@YAXPEAX_K@Z) referenced in function "public: virtual void * __cdecl CDynamicOutputPin::`scalar deleting destructor'(unsigned int)" (??_GCDynamicOutputPin
@UEAAPEAXI@Z)
1>strmbase.lib(renbase.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *,unsigned __int64)" (??3@YAXPEAX_K@Z)
1>strmbase.lib(wxutil.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *,unsigned __int64)" (??3@YAXPEAX_K@Z)
1>strmbase.lib(wxlist.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *,unsigned __int64)" (??3@YAXPEAX_K@Z)
1>strmbase.lib(amfilter.obj) : error LNK2001: unresolved external symbol __std_terminate
1>strmbase.lib(ctlutil.obj) : error LNK2001: unresolved external symbol __std_terminate
1>strmbase.lib(wxutil.obj) : error LNK2019: unresolved external symbol __imp
_stdio_common_vswprintf referenced in function "long __cdecl StringCchPrintfW(wchar_t *,unsigned __int64,wchar_t const *,...)" (?StringCchPrintfW@@YAJPEA_W_KPEB_WZZ)
1>D:\work\adtf\addons\adtf-device-toolbox\build\src\plugins\common_directshowcapture\Release\common_directshowcapture.plb : fatal error LNK1120: 4 unresolved externals
2>------ Skipped Build: Project: INSTALL, Configuration: Release x64 ------
2>Project not selected to build for this solution configuration ========== Build: 0 succeeded, 1 failed, 13 up-to-date, 1 skipped ==========

"Die Library (strmbase.lib), in der der Fehler auftritt, wird von Microsoft nur als Source Code zur Verfügung gestellt und wurde von mir daher selbst kompiliert. Ich habe die aktuelle Windows7-Version dieser Library kompiliert, die Bestandteil des Windows7.1-SDKs ist. Vor etlichen Jahren war diese Library aber anscheinend mal Bestandteil des DirectX SDKs.
In der CMakeLists.txt von "common_directshowcapture" (....\adtf\addons\adtf-device-toolbox\src\plugins\common_directshowcapture\CMakeLists.txt) finden sich folgende Code-Zeilen:

find_path(DIRECTX_DIR include/strmbase/amfilter.h)
if (DIRECTX_DIR)
include_directories(${DIRECTX_DIR}/include)
link_directories(${DIRECTX_DIR}/lib)
else (DIRECTX_DIR)
message(FATAL_ERROR "Could not find DirectX SDK")
endif (DIRECTX_DIR)

Der Include-Path "strmbase" existiert nicht in den aktuellen Sourcen von strmbase.lib wie sie im Windows7.1-SDK enthalten sind. Ein aktuelles DirectX SDK wiederum enthält weder Sourcen noch Binaries zu strmbase.lib.Vermutlich erwartet "common_directshowcapture" irgendeine veraltete Version des DirectX SDKs."

Eine idee, wie wir dem Kunden da helfen können?

Lösung

SDK geliefert, Sourcen stehen zur Verfügung.


Files

Win7SDK.zip (2.61 MB) Win7SDK.zip DirectX SDK hidden, 2018-11-16 17:42

Related issues

Has duplicate Public Support - Support Request #5985: How to compile Direct Show Capture DeviceClosedActions
Actions

Also available in: Atom PDF