Derzeit ist nur die folgende, neue Funktion implementiert:
// Called when the state of a player on the current cartwall page changes
// (or the user switches to another page).
procedure OnCartwallPlayerStateChange(PlayerIndex: integer;
OldState: TPlayerState; NewState: TPlayerState;
Item: IAudioCartwallItem; PlaylistItem: IPlaylistItem;
OnAirMode: TCartwallOnAirMode);
begin
end;
Hintergrund ist, dass es ja eigentlich keine festen Player mehr gibt, sondern ein “Grid”, auf dem sich die Elemente anordnen lassen (und dann automatisch eine Nummer erhalten nach dem vorgegebenen Schema).
Die o.g. Funktion bezieht sich immer auf die aktuelle Seite. Das heißt, wenn du von einer Seite mit einem aktiven “Player” auf eine andere wechselst, wo der Player nicht aktiv ist, dann siehst du einen Zustandswechsel von psPlaying nach psLoaded (oder gar psEmpty).
Die Funktion ist insofern dafür ausgelegt, dass man den Zustand der “Player” auf einem externen Gerät wie einem MIDI-Controller etc. abbildet.
Wofür genau habt ihr OnCartPlayerStart bisher verwendet?
Also, wir brauchen eigentlich insbesondere die Info, ob ein Element gestartet oder gestoppt wurde, sowie das Item. Die Cart-Nr. haben wir nicht weiter verwendet, sondern haben das IPlaylistItem übergeben.
Wir nutzen es für ein Script, das die RDS-Daten generiert. Da dieses Script auf sämtliche startenden und stoppenden Player reagiert, ist es egal, ob der Nutzer z.B. ein Verkehrsjingle aus der Playlist oder aus der Cart startet: Das Script bemerkt es und setzt das TA-Flag etc.
Das soll auch mit der neuen Cartwall so sein. Daher habe ich mich gerade mal an OnCartwallPlayerStateChange versucht, um dem “RdsHandler” die benötigten Variablen zu übergeben. Nur: Es funktioniert nicht.
EDIT: Doch, doch, funktioniert bestens. Hatte hier was übersehen.
[code]procedure OnCartPlayerStart(PlayerIndex: integer; Item: IPlaylistItem);
begin
SystemLog(‘OnCartPlayerStart’);
RdsHandler(1, Item);
end;
// Called when on-air playback of an item (in any player) begins
procedure OnItemStart(Item: IPlaylistItem; Region: byte; UniqueID: string);
begin
end;
// Called when on-air playback of an item (in any player) ends
procedure OnItemStop(Item: IPlaylistItem; Region: byte; UniqueID: string; Duration: TTimeValue);
begin
end;