You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1748 8e941d3f-bd1b-0410-a28a-d453659cc2b4
117 lines
3.1 KiB
ObjectPascal
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.
|
|
|