From 486ad8796acc5883ef83f3a78cd615f6711d77f0 Mon Sep 17 00:00:00 2001 From: jaybinks Date: Thu, 6 Dec 2007 09:39:49 +0000 Subject: conformed projectM to IVideoPlayback still needs a little work. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@678 b956fd51-792f-4845-bead-9b4dfca2ff2c --- Game/Code/Classes/UMedia_dummy.pas | 8 +- Game/Code/Classes/UMusic.pas | 5 +- Game/Code/Classes/UPlatform.pas | 11 ++- Game/Code/Classes/UVideo.pas | 8 +- Game/Code/Classes/UVisualizer.pas | 157 +++++++++++++++++++++++++++++-------- Game/Code/Screens/UScreenSing.pas | 8 +- Game/Code/UltraStar.dpr | 5 +- Game/Code/switches.inc | 5 +- 8 files changed, 151 insertions(+), 56 deletions(-) (limited to 'Game') diff --git a/Game/Code/Classes/UMedia_dummy.pas b/Game/Code/Classes/UMedia_dummy.pas index 42a3f1b9..630b497e 100644 --- a/Game/Code/Classes/UMedia_dummy.pas +++ b/Game/Code/Classes/UMedia_dummy.pas @@ -47,8 +47,8 @@ type procedure MoveTo(Time: real); function getPosition: real; - procedure FFmpegGetFrame(Time: Extended); - procedure FFmpegDrawGL(Screen: integer); + procedure GetFrame(Time: Extended); + procedure DrawGL(Screen: integer); // IAudioInput procedure InitializeRecord; @@ -95,11 +95,11 @@ begin end; -procedure Tmedia_dummy.FFmpegGetFrame(Time: Extended); +procedure Tmedia_dummy.GetFrame(Time: Extended); begin end; -procedure Tmedia_dummy.FFmpegDrawGL(Screen: integer); +procedure Tmedia_dummy.DrawGL(Screen: integer); begin end; diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index feba3f61..18ec2944 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -123,8 +123,8 @@ type *) procedure init(); - procedure FFmpegGetFrame(Time: Extended); // WANT TO RENAME THESE TO BE MORE GENERIC - procedure FFmpegDrawGL(Screen: integer); // WANT TO RENAME THESE TO BE MORE GENERIC + procedure GetFrame(Time: Extended); // WANT TO RENAME THESE TO BE MORE GENERIC + procedure DrawGL(Screen: integer); // WANT TO RENAME THESE TO BE MORE GENERIC end; @@ -265,6 +265,7 @@ begin // ( not assigned( singleton_AudioInput ) ) then begin singleton_AudioInput := IAudioInput( lTmpInterface ); + Writeln(singleton_AudioInput.GetName); end; // if this interface is a Input, then set it as the default used diff --git a/Game/Code/Classes/UPlatform.pas b/Game/Code/Classes/UPlatform.pas index 878c1ec2..a06914d0 100644 --- a/Game/Code/Classes/UPlatform.pas +++ b/Game/Code/Classes/UPlatform.pas @@ -18,10 +18,10 @@ uses Classes; type TDirectoryEntry = Record - Name : WideString; - IsDirectory : Boolean; - IsFile : Boolean; - end; + Name : WideString; + IsDirectory : Boolean; + IsFile : Boolean; + end; TDirectoryEntryArray = Array of TDirectoryEntry; @@ -81,6 +81,5 @@ initialization {$ENDIF} finalization - - Platform.Free; + freeandnil( Platform ); end. diff --git a/Game/Code/Classes/UVideo.pas b/Game/Code/Classes/UVideo.pas index 6c9458f9..c2e42224 100644 --- a/Game/Code/Classes/UVideo.pas +++ b/Game/Code/Classes/UVideo.pas @@ -110,8 +110,8 @@ type procedure MoveTo(Time: real); function getPosition: real; - procedure FFmpegGetFrame(Time: Extended); // WANT TO RENAME THESE TO BE MORE GENERIC - procedure FFmpegDrawGL(Screen: integer); // WANT TO RENAME THESE TO BE MORE GENERIC + procedure GetFrame(Time: Extended); // WANT TO RENAME THESE TO BE MORE GENERIC + procedure DrawGL(Screen: integer); // WANT TO RENAME THESE TO BE MORE GENERIC end; @@ -192,7 +192,7 @@ end; -procedure TVideoPlayback_ffmpeg.FFmpegGetFrame(Time: Extended); +procedure TVideoPlayback_ffmpeg.GetFrame(Time: Extended); var FrameFinished: Integer; AVPacket: TAVPacket; @@ -355,7 +355,7 @@ begin end; end; -procedure TVideoPlayback_ffmpeg.FFmpegDrawGL(Screen: integer); +procedure TVideoPlayback_ffmpeg.DrawGL(Screen: integer); begin // have a nice black background to draw on (even if there were errors opening the vid) if Screen=1 then diff --git a/Game/Code/Classes/UVisualizer.pas b/Game/Code/Classes/UVisualizer.pas index 3bea8f54..1905358f 100644 --- a/Game/Code/Classes/UVisualizer.pas +++ b/Game/Code/Classes/UVisualizer.pas @@ -2,6 +2,7 @@ # Visualizer support for UltraStar deluxe # # # # Created by hennymcc # +# Slight modifications by Jay Binks # # based on UVideo.pas # #############################################################################} @@ -24,46 +25,122 @@ uses SDL, dialogs, {$ENDIF} projectM, + UMusic, windows; -procedure Init; -procedure VisualizerStart; -procedure VisualizerStop; -procedure VisualizerGetFrame(Time: Extended); -procedure VisualizerDrawGL(Screen: integer); -procedure VisualizerTogglePause; +implementation + +var + singleton_VideoProjectM : IVideoPlayback; const - VisualWidth = 640; - VisualHeight = 480; - gx = 32; - gy = 24; - fps = 30; - texsize = 512; + VisualWidth = 800; // 640 + VisualHeight = 600; // 480 + gx = 32; + gy = 24; + fps = 30; + texsize = 512; -var - pm: PProjectM; - VisualizerStarted, VisualizerPaused: Boolean; - VisualTex: glUint; - pcm_data: TPCM16; - hRC: Integer; - hDC: Integer; +type + TVideoPlayback_ProjectM = class( TInterfacedObject, IVideoPlayback ) + + pm : PProjectM; -implementation + VisualizerStarted , + VisualizerPaused : Boolean; -procedure Init; -begin + VisualTex : glUint; + pcm_data : TPCM16; + hRC : Integer; + hDC : Integer; + + procedure VisualizerStart; + procedure VisualizerStop; + + procedure VisualizerTogglePause; + public + constructor create(); + function GetName: String; + + procedure init(); + + function Open( aFileName : string): boolean; // true if succeed + procedure Close; + + procedure Play; + procedure Pause; + procedure Stop; + + procedure MoveTo(Time: real); + function getPosition: real; + + procedure GetFrame(Time: Extended); // WANT TO RENAME THESE TO BE MORE GENERIC + procedure DrawGL(Screen: integer); // WANT TO RENAME THESE TO BE MORE GENERIC + end; + + +constructor TVideoPlayback_ProjectM.create(); +begin +end; + + +procedure TVideoPlayback_ProjectM.init(); +begin + writeln( 'TVideoPlayback_ProjectM - INITIALIZE !!!!!!!!' ); + VisualizerStarted := False; - VisualizerPaused := False; + VisualizerPaused := False; + glGenTextures(1, PglUint(@VisualTex)); glBindTexture(GL_TEXTURE_2D, VisualTex); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); end; -procedure VisualizerStart; +function TVideoPlayback_ProjectM.GetName: String; +begin + result := 'ProjectM'; +end; + + +function TVideoPlayback_ProjectM.Open( aFileName : string): boolean; // true if succeed begin -exit; + VisualizerStart(); + result := true; +end; + +procedure TVideoPlayback_ProjectM.Close; +begin +end; + +procedure TVideoPlayback_ProjectM.Play; +begin + VisualizerStart(); +end; + +procedure TVideoPlayback_ProjectM.Pause; +begin + VisualizerTogglePause(); +end; + +procedure TVideoPlayback_ProjectM.Stop; +begin + VisualizerStop(); +end; + +procedure TVideoPlayback_ProjectM.MoveTo(Time: real); +begin +end; + +function TVideoPlayback_ProjectM.getPosition: real; +begin + result := 0; +end; + +procedure TVideoPlayback_ProjectM.VisualizerStart; +begin +//exit; VisualizerStarted := True; New(pm); @@ -76,7 +153,7 @@ exit; pm^.fps := fps; pm^.renderTarget^.usePbuffers := 0; - pm^.fontURL := PChar('Visuals\fonts'); + pm^.fontURL := PChar('Visuals\fonts'); pm^.presetURL := PChar('Visuals\presets'); glPushAttrib(GL_ALL_ATTRIB_BITS); @@ -97,7 +174,7 @@ exit; glPopAttrib(); end; -procedure VisualizerStop; +procedure TVideoPlayback_ProjectM.VisualizerStop; begin if VisualizerStarted then begin VisualizerStarted := False; @@ -105,17 +182,17 @@ begin end; end; -procedure VisualizerTogglePause; +procedure TVideoPlayback_ProjectM.VisualizerTogglePause; begin if VisualizerPaused then VisualizerPaused:=False else VisualizerPaused:=True; end; -procedure VisualizerGetFrame(Time: Extended); +procedure TVideoPlayback_ProjectM.GetFrame(Time: Extended); var i: integer; begin - exit; +// exit; if not VisualizerStarted then Exit; if VisualizerPaused then Exit; @@ -168,9 +245,11 @@ begin } end; -procedure VisualizerDrawGL(Screen: integer); +procedure TVideoPlayback_ProjectM.DrawGL(Screen: integer); begin -{ + + exit; + // have a nice black background to draw on (even if there were errors opening the vid) if Screen=1 then begin glClearColor(0,0,0,0); @@ -195,7 +274,19 @@ begin glEnd; glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); -} + end; + +initialization + singleton_VideoProjectM := TVideoPlayback_ProjectM.create(); + + writeln( 'UVideoProjectM - Register Playback' ); + AudioManager.add( singleton_VideoProjectM ); + +finalization + AudioManager.Remove( singleton_VideoProjectM ); + + + end. diff --git a/Game/Code/Screens/UScreenSing.pas b/Game/Code/Screens/UScreenSing.pas index dd11ee07..c3bb78d2 100644 --- a/Game/Code/Screens/UScreenSing.pas +++ b/Game/Code/Screens/UScreenSing.pas @@ -851,10 +851,10 @@ begin begin try writeln( 'VideoPlayback.FFmpegGetFrame' ); - VideoPlayback.FFmpegGetFrame(Czas.Teraz); + VideoPlayback.GetFrame(Czas.Teraz); writeln( 'VideoPlayback.FFmpegDrawGL' ); - VideoPlayback.FFmpegDrawGL(ScreenAct); + VideoPlayback.DrawGL(ScreenAct); // PlaySmpeg; except @@ -1125,8 +1125,8 @@ begin // todo: find a way to determine, when a new frame is needed // toto: same for the need to skip frames - VideoPlayback.FFmpegGetFrame(Czas.Teraz); - VideoPlayback.FFmpegDrawGL(ScreenAct); + VideoPlayback.GetFrame(Czas.Teraz); + VideoPlayback.DrawGL(ScreenAct); except on E : Exception do begin diff --git a/Game/Code/UltraStar.dpr b/Game/Code/UltraStar.dpr index e5ace11e..6a1d0013 100644 --- a/Game/Code/UltraStar.dpr +++ b/Game/Code/UltraStar.dpr @@ -128,7 +128,7 @@ uses //------------------------------ UMusic in 'Classes\UMusic.pas', UMedia_dummy in 'Classes\UMedia_dummy.pas', - UVideo in 'Classes\UVideo.pas', +// UVideo in 'Classes\UVideo.pas', {$ifdef UseBass} UAudio_bass in 'Classes\UAudio_bass.pas', {$endif} @@ -139,6 +139,9 @@ uses UAudio_FFMpeg in 'Classes\UAudio_FFMpeg.pas', {$endif} + projectM in 'lib\projectM\projectM.pas', + UVisualizer in 'Classes\UVisualizer.pas', + //------------------------------ //Includes - Screens //------------------------------ diff --git a/Game/Code/switches.inc b/Game/Code/switches.inc index 8d395688..15fb31bb 100644 --- a/Game/Code/switches.inc +++ b/Game/Code/switches.inc @@ -34,8 +34,9 @@ {$IFDEF win32} {$DEFINE UseBASSOutput} - {$DEFINE UseBASSInput} - //{$DEFINE UsePortaudio} +// {$DEFINE UseBASSInput} + + {$DEFINE UsePortaudio} //{$DEFINE UsePortmixer} {$IFDEF DEBUG} {$IFNDEF DARWIN} -- cgit v1.2.3