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 #2

Updated by hidden almost 3 years ago

  • Status changed from New to In Progress
  • Customer set to AUDI
  • Topic set to ADTF::Player
Actions #3

Updated by hidden almost 3 years ago

Hi,

ich bin mittlerweile soweit, dass man PlayerEvents anscheinend nicht über den Kernel sondern Playback-Service abgreifen müsste.

Ich habe in der Doku die Methode HandleEvent() gefunden: https://support.digitalwerk.net/adtf/v3/adtf_html/classadtf_1_1ucom_1_1ant_1_1_i_event_sink.html#a9295727e519d1f9b655b71d5ed789661
Allerdings ist mir noch unklar, wie ich meinen Filter beim Player registriere und wie ich pvEventData auf IPlayer::tEvent caste.

Die Klasse IPlayer gibt es bei mir nicht unter adtf::service::ant:IPlayer, obwohl sie laut Doku dort aufgehängt sein müsste.
Brauche ich da ein sepziellen Include?

VG
Claudia

Actions #4

Updated by hidden almost 3 years ago

Hi Claudia,

die Player Events bekommst du vom IPlayer Service direkt. Du musst also IEventSink implementieren und dich dann direkt beim IPlayer Service registrieren:

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;
}

Zu den Recorder Events kann ich jetzt nicht viel sagen, außer, dass die schon alle über den Kernel kommen sollten.

Grüße,

Martin

Actions #5

Updated by hidden almost 3 years ago

Du musst noch den header

#include <plugins/player_intf.h>

includieren.

Kommst du damit weiter?

Actions #6

Updated by hidden almost 3 years ago

Hi Martin,

mit dem richtigen Include hat es jetzt auch geklappt - Dankeschön :)
Damit kann das Ticket dann auch schon wieder geschlossen werden.

Viele Grüße
Claudia

Actions #7

Updated by hidden almost 3 years ago

  • Status changed from In Progress to To Be Closed
  • Resolution set to Solved Issue

Gerne!

Actions #8

Updated by hidden almost 3 years ago

  • Project changed from 4 to Public Support
  • Subject changed from Abfangen von Player Events to Receive events from player
  • Description updated (diff)
Actions #9

Updated by hidden almost 3 years ago

  • Description updated (diff)
Actions #10

Updated by hidden over 2 years ago

  • Status changed from To Be Closed to Closed
Actions

Also available in: Atom PDF