Actions
Support Request #14217
closedReceive events from player
Status:
Closed
Priority:
Normal
Customer:
AUDI
Department:
Requester's Priority:
Blocker
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Affected Products:
Platform:
Windows 7 64bit
Topic:
ADTF::Player
FAQ Links:
Description
Supportanfrage
ich hatte mich bereits im Ticket #12328 (https://support.digitalwerk.net/issues/12328) nach Möglichkeiten des Abfangens von Player-Events erkundigt. Projektbedingt bin ich allerdings jetzt erst zur Umsetzung gekommen.
Der im Ticket vorschlagene Code bzgl. adtf::services::IKernel::ISignalHandler fängt bei mir jedoch keine Player-Events ab. Bei Recorder-Events wird meine Funktion aber aufgerufen.
tResult cGAF3::HandleKernelSignal(const adtf::ucom::iobject_ptr<adtf::services::IKernel::ISignal>& pSignal)
{
LOG_INFO("ein Event...");
RETURN_NOERROR;
}
Mir scheint es aber auch, als würden nicht alle Recorder-Events ankommen - zeitlich vermisse ich auf meiner Log-Ausgabe jedenfalls ein Recording-Start-Event.
- Sollten die Player-Events theoretisch auch in der HandleKernelSignal-Methode ankommen? Bzw. was muss ich tun, damit ich auch die Player-Events erhalte?
- Kann ich da was bei der ADTF Config (z.B. Filter-Prios) falsch gemacht haben?
Lösung
Die Player Events bekommst du vom IPlayer Service direkt. Du musst also IEventSink implementieren und dich dann direkt beim IPlayer Service registrieren:
#include <plugins/player_intf.h>
object_ptr<adtf::services::IPlayer> pPlayback;
RETURN_IF_FAILED(_runtime->GetObject(pPlayback));
object_ptr<IEventSource> pEventSource = pPlayback;
pEventSource->RegisterEventSink(*this);
tResult HandleEvent(const IEventSource& oSource, const tVoid* pvEventData) override
{
const auto pEvent = static_cast<const IPlayer::tEvent*>(pvEventData);
// ...
RETURN_NOERROR;
}
Actions