Files
lazarus-ccr/applications/cactusjukebox/source/playerclass.pas
sekelsenmat 6f8c048343 Adds the cactus jukebox to the lazarus ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1748 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-07-21 09:39:48 +00:00

117 lines
3.1 KiB
ObjectPascal

{
Parent class for all Cactus Jukebox player backends
written by Sebastian Kraft, <c> 2006-2008
Contact the author at: sebastian_kraft@gmx.de
This Software is published under the GPL
}
unit playerclass;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, playlist;
type
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
TStreamStatus=(STREAM_READY, STREAM_BUFFERING, STREAM_NOTFOUND);
TPlaybackMode=(STREAMING_MODE, FILE_MODE);
TOutputMode=(ALSAOUT, OSSOUT, DIRECTX, WIN32);
TAudioBackend=(MPLAYERBACK, FMODBACK);
{ TPlayerClass }
type
TPlayerClass = class
Protected
fTotalLength: int64;
FPlaying, FPaused: Boolean;
FVolume: Byte;
FPlaybackMode:TPlaybackMode;
function GetCurrentTrack: integer;
procedure SetCurrentTrack(index: integer);
property FCurrentTrack: Integer read GetCurrentTrack write SetCurrentTrack;
Public
OutputMode: TOutputMode;
Playlist: TPlaylistClass;
constructor create;virtual;
destructor destroy;virtual;
function play(index:integer):byte;virtual; abstract;
function play(url: string):byte;virtual; abstract;
procedure pause;virtual; abstract;
procedure stop;virtual; abstract;
function next_track:byte;virtual; abstract;
function prev_track:byte;virtual; abstract;
function Get_Stream_Status:TStreamStatus;virtual; abstract;
function Get_TrackLength:longint;virtual; abstract; // Get track length in ms
function Get_Time:longint;virtual; abstract; // Get current time position in ms
function Get_TimeStr:string;virtual; abstract; // Get current time position as a 00:00 formatted string
function Get_TimeRemainingStr:string;virtual; abstract; // Get time remaining as a -00:00 formated stting
function Get_FilePosition:longint;virtual; abstract; // Get current position in percent
function get_FileLength:longint;virtual; abstract; // Get current file size in bytes
procedure Set_Time(ms: longint);virtual; abstract; //Set vurrent time position in ms
procedure Set_FilePosition(fpos:longint);virtual; abstract; //set file position in percent
procedure Set_Volume(vol:byte);virtual; abstract; // Volume, value range in percent
procedure Mute;virtual; abstract; // Mute audio output
function Muted:boolean;virtual; abstract; //Get mute state
property CurrentTrack: Integer read GetCurrentTrack;
property playing: boolean read FPlaying;
property paused: boolean read FPaused;
property volume:byte read FVolume write Set_Volume;
property PlaybackMode: TPlaybackMode read FPlaybackMode;
end;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
var PlayerObj: TPlayerClass;
implementation
{ TPlayerClass }
function TPlayerClass.GetCurrentTrack: integer;
begin
result:=Playlist.CurrentTrack;
end;
procedure TPlayerClass.SetCurrentTrack(index: integer);
begin
Playlist.CurrentTrack:=index;
end;
constructor TPlayerClass.create;
begin
Playlist:=TPlaylistclass.create;
fplaying:=false;
FCurrentTrack:=-1;
FVolume:=100;
end;
destructor TPlayerClass.destroy;
begin
end;
end.