aboutsummaryrefslogblamecommitdiffstats
path: root/Game/Code/Classes/UMedia_dummy.pas
blob: 62a94aef8b2d01bb8a0667962a47b293df81bff2 (plain) (tree)





































































































































































































































                                                                                                               
unit UMedia_dummy;
{< #############################################################################
#                    FFmpeg support for UltraStar deluxe                       #
#                                                                              #
#    Created by b1indy                                                         #
#    based on 'An ffmpeg and SDL Tutorial' (http://www.dranger.com/ffmpeg/)    #
#                                                                              #
# http://www.mail-archive.com/fpc-pascal@lists.freepascal.org/msg09949.html    #
# http://www.nabble.com/file/p11795857/mpegpas01.zip                           #
#                                                                              #
############################################################################## }

interface

{$IFDEF FPC}
  {$MODE Delphi}
{$ENDIF}

{$I switches.inc}

implementation

uses
     SysUtils,
     math,
     UMusic;

var
  singleton_dummy : IVideoPlayback;

type
    TMedia_dummy = class( TInterfacedObject, IVideoPlayback, IVideoVisualization, IAudioPlayback, IAudioInput )
    private
      DummyOutputDeviceList: TAudioOutputDeviceList;
    public
      constructor create();
      function  GetName: string;

      procedure init();

      function  Open(const aFileName : string): boolean; // true if succeed
      procedure Close;

      procedure Play;
      procedure Pause;
      procedure Stop;

      procedure SetPosition(Time: real);
      function  GetPosition: real;

      procedure GetFrame(Time: Extended);
      procedure DrawGL(Screen: integer);

      // IAudioInput
      function InitializeRecord: boolean;
      function FinalizeRecord: boolean;
      procedure CaptureStart;
      procedure CaptureStop;
      procedure GetFFTData(var data: TFFTData);
      function GetPCMData(var data: TPCMData): Cardinal;

      // IAudioPlayback
      function InitializePlayback: boolean;
      function FinalizePlayback: boolean;

      function GetOutputDeviceList(): TAudioOutputDeviceList;
      procedure FadeIn(Time: real; TargetVolume: single);
      procedure SetAppVolume(Volume: single);
      procedure SetVolume(Volume: single);
      procedure SetLoop(Enabled: boolean);
      procedure Rewind;

      function Finished: boolean;
      function Length: real;

      function OpenSound(const Filename: string): TAudioPlaybackStream;
      procedure PlaySound(stream: TAudioPlaybackStream);
      procedure StopSound(stream: TAudioPlaybackStream);
    end;

function  Tmedia_dummy.GetName: string;
begin
  result := 'dummy';
end;

procedure Tmedia_dummy.GetFrame(Time: Extended);
begin
end;

procedure Tmedia_dummy.DrawGL(Screen: integer);
begin
end;

constructor Tmedia_dummy.create();
begin
  inherited;
end;

procedure Tmedia_dummy.init();
begin
end;

function Tmedia_dummy.Open(const aFileName : string): boolean; // true if succeed
begin
  result := false;
end;

procedure Tmedia_dummy.Close;
begin
end;

procedure Tmedia_dummy.Play;
begin
end;

procedure Tmedia_dummy.Pause;
begin
end;

procedure Tmedia_dummy.Stop;
begin
end;

procedure Tmedia_dummy.SetPosition(Time: real);
begin
end;

function  Tmedia_dummy.GetPosition: real;
begin
  result := 0;
end;

// IAudioInput
function Tmedia_dummy.InitializeRecord: boolean;
begin
  result := true;
end;

function Tmedia_dummy.FinalizeRecord: boolean;
begin
  result := true;
end;

procedure Tmedia_dummy.CaptureStart;
begin
end;

procedure Tmedia_dummy.CaptureStop;
begin
end;

procedure Tmedia_dummy.GetFFTData(var data: TFFTData);
begin
end;

function  Tmedia_dummy.GetPCMData(var data: TPCMData): Cardinal;
begin
  result := 0;
end;

// IAudioPlayback
function Tmedia_dummy.InitializePlayback: boolean;
begin
  SetLength(DummyOutputDeviceList, 1);
  DummyOutputDeviceList[0] := TAudioOutputDevice.Create();
  DummyOutputDeviceList[0].Name := '[Dummy Device]';
  result := true;
end;

function Tmedia_dummy.FinalizePlayback: boolean;
begin
  result := true;
end;

function Tmedia_dummy.GetOutputDeviceList(): TAudioOutputDeviceList;
begin
  Result := DummyOutputDeviceList;
end;

procedure Tmedia_dummy.SetAppVolume(Volume: single);
begin
end;

procedure Tmedia_dummy.SetVolume(Volume: single);
begin
end;

procedure Tmedia_dummy.SetLoop(Enabled: boolean);
begin
end;

procedure Tmedia_dummy.FadeIn(Time: real; TargetVolume: single);
begin
end;

procedure Tmedia_dummy.Rewind;
begin
end;

function Tmedia_dummy.Finished: boolean;
begin
  result := false;
end;

function Tmedia_dummy.Length: real;
begin
  Result := 60;
end;

function Tmedia_dummy.OpenSound(const Filename: string): TAudioPlaybackStream;
begin
 result := nil;
end;

procedure Tmedia_dummy.PlaySound(stream: TAudioPlaybackStream);
begin
end;

procedure Tmedia_dummy.StopSound(stream: TAudioPlaybackStream);
begin
end;

initialization
  singleton_dummy := Tmedia_dummy.create();
  AudioManager.add( singleton_dummy );

finalization
  AudioManager.Remove( singleton_dummy );

end.