Support Request #1485
closedInterface Binding for StreamingSink cannot get server Object
Description
Supprotanfrage
Hallo zusammen,
ich wollte zur Kommunikation zwischen einem Filter im FilterGraph und einem Streaming Sink Interface Binding verwenden. Hierbei failed aber immer die "GetServerObject" Methode und ich kann somit nicht auf das Interface zugreifen.
Ich habe das ganze auf folgendes Minimalbeispiel reduzieren können:
Den "demo_interface_binding_filter" Example Filter habe ich um einen Binding Server in der Configure Methode erweitert, wobei das "IPrintInterface" und die "cPrinter" Implementierung die gleichen sind wie im Example.
m_pPrinter = make_object_ptr<cPrinter>();
RETURN_IF_FAILED(create_server<IPrintInterface>(*m_pFilter, "printer_server", m_pPrinter));
Den "demo_interface_source" Example Filter habe ich als StreamingSink umgebaut, in der Construct Methode erzeuge ich den Binding Client:
RETURN_IF_FAILED(create_client<IPrintInterface>(*this, "printer_client"));
Wenn ich dann z.B. in der Init oder der StartStreaming Methode auf das Server Object wie folgt zugreifen will, failed die "GetServerObject" Methode.
RETURN_IF_FAILED(FindBindingObject("printer_client", m_pBindingClient));
object_ptr<IPrintInterface> pPrinter;
//the next line will fail
if (IS_OK(m_pBindingClient->GetServerObject(pPrinter)))
{
pPrinter->Print(adtf_util::cString::Format("this is streaming sink"));
}
else
{
LOG_INFO("failed to get binding server for printer_client");
}
Mein Filter Graph sieht wie folgt aus:
Und der entsprechende Streaming Graph:
Der Debug Output der Console nach dem Runlevel 5 lässt mich vermuten, dass die Connection vom Filter Graph Dock zur Streaming Sink nicht gezogen wird und deshalb kein Server Object gefunden werden kann.
Denn bei der Konfiguration mit dem "demo_interface_binding_filter", welcher eine StreamingSource ist, ist eine entsprechender Connect Ausgabe in der Console zu sehen.
Den Code meines Beispiels habe ich auch noch angehängt, falls das hilft.
Lösung
Produktticket ACORE-9334 angelegt
Files