Project

General

Profile

Actions

Support Request #14217

closed

Receive events from player

Added by hidden almost 3 years ago. Updated over 2 years ago.

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.

  1. Sollten die Player-Events theoretisch auch in der HandleKernelSignal-Methode ankommen? Bzw. was muss ich tun, damit ich auch die Player-Events erhalte?
  2. 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

Also available in: Atom PDF