From 51ed8fe6f2ea9892e905e81cf5bad3960537eb40 Mon Sep 17 00:00:00 2001
From: brunzelchen <brunzelchen@b956fd51-792f-4845-bead-9b4dfca2ff2c>
Date: Fri, 19 Feb 2010 17:18:42 +0000
Subject: Challenge MOD r7 alpha based on Ultrastar Deluxe v1.0.1a for changes
 read Changelog.txt in folder Game

git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0.1 Challenge MOD@2107 b956fd51-792f-4845-bead-9b4dfca2ff2c
---
 .../smpeg/Demos/SMpegPlayer/SMpegPlayer.dpr        | 278 +++++++++++++++++++++
 1 file changed, 278 insertions(+)
 create mode 100644 Game/Code/lib/JEDI-SDLv1.0/smpeg/Demos/SMpegPlayer/SMpegPlayer.dpr

(limited to 'Game/Code/lib/JEDI-SDLv1.0/smpeg/Demos/SMpegPlayer/SMpegPlayer.dpr')

diff --git a/Game/Code/lib/JEDI-SDLv1.0/smpeg/Demos/SMpegPlayer/SMpegPlayer.dpr b/Game/Code/lib/JEDI-SDLv1.0/smpeg/Demos/SMpegPlayer/SMpegPlayer.dpr
new file mode 100644
index 00000000..c88c0eb6
--- /dev/null
+++ b/Game/Code/lib/JEDI-SDLv1.0/smpeg/Demos/SMpegPlayer/SMpegPlayer.dpr
@@ -0,0 +1,278 @@
+program SMpegPlayer;
+{******************************************************************}
+{                                                                  }
+{       Object Pascal Example of using smpeg and SDL_Mixer         }
+{             Conversion of Console Smpeg player                   }
+{                                                                  }
+{                                                                  }
+{ The original files are : Found on internet                       }
+{                                                                  }
+{ The original Pascal code is : SMpegPlayer.dpr                    }
+{ The initial developer of the Pascal code is :                    }
+{ Dominique Louis <Dominique@SavageSoftware.com.au>                }
+{                                                                  }
+{ Portions created by Dominique Louis are                          }
+{ Copyright (C) 2001 Dominique Louis.                              }
+{                                                                  }
+{ Contributor(s)                                                   }
+{ --------------                                                   }
+{                                                                  }
+{                                                                  }
+{ Obtained through:                                                }
+{ Joint Endeavour of Delphi Innovators ( Project JEDI )            }
+{                                                                  }
+{ You may retrieve the latest version of this file at the Project  }
+{ JEDI home page, located at http://delphi-jedi.org                }
+{                                                                  }
+{ The contents of this file are used with permission, subject to   }
+{ the Mozilla Public License Version 1.1 (the "License"); you may  }
+{ not use this file except in compliance with the License. You may }
+{ obtain a copy of the License at                                  }
+{ http://www.mozilla.org/NPL/NPL-1_1Final.html                     }
+{                                                                  }
+{ Software distributed under the License is distributed on an      }
+{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or   }
+{ implied. See the License for the specific language governing     }
+{ rights and limitations under the License.                        }
+{                                                                  }
+{ Description                                                      }
+{ -----------                                                      }
+{   SMpegPlayer : Shows how to load and play an Mpeg file using    }
+{                 smpeg and SDL_Mixer for the sound                }
+{                                                                  }
+{ Requires                                                         }
+{ --------                                                         }
+{   SDL runtime libary for SDL, smpeg and OpenGL somewhere         }
+{   in your path .                                                 }
+{   The Latest SDL runtimes can be found on http://www.libsdl.org  }
+{                                                                  }
+{ Programming Notes                                                }
+{ -----------------                                                }
+{   This demo shows how to load and play an mpeg file using smpeg  }
+{   with SDL_Mixer                                                 }
+{   You will need Smpeg and SDL_Mixer libraris order for this demo }
+{                                                                  }
+{ Revision History                                                 }
+{ ----------------                                                 }
+{   July   02 2001 - DL : Initial translation.                     }
+{                                                                  }
+{ November 23 2002 - DL : Fix PollMPeg as suggested by             }
+{                                                                  }
+{                                                                  }
+{******************************************************************}
+
+uses
+  SysUtils,
+  sdl,
+  sdl_mixer,
+  smpeg;
+
+const
+  SCREEN_WIDTH = 800;
+  SCREEN_HEIGHT = 600;
+  BPP = 0;
+
+  TITLE = 'JEDI-SDL Console MpegPlayer';
+
+var
+  //  Screen Surface
+  screen : PSDL_Surface;
+
+  // Audio Specs
+  aspec : TSDL_AudioSpec;
+  format : Uint16;
+  freq, chan : integer;
+  Islooping : Boolean;
+
+function OpenMpeg( FileName : string ) : PSMPEG;
+var
+  Handle : PSMPEG;
+begin
+  // Create a new Mpeg
+  handle := SMPEG_new( PChar( fileName ), nil, 0 );
+  if handle = nil then
+  begin
+    //Display Error
+    Halt;
+  end;
+
+  // Disable Audio
+  SMPEG_enableaudio( handle, 0 );
+
+  // Query Mixer
+  Mix_QuerySpec( freq, format, chan );
+  aspec.freq := freq;
+  aspec.format := format;
+  aspec.channels := chan;
+
+  // Tell Smpeg what we want
+  Smpeg_actualSpec( handle, @aspec );
+
+  // Hook the mixer audio playing function
+  Mix_HookMusic( @SMPeg_PlayAudioSDL, handle );
+
+  // Reenable Audio
+  SMPEG_enableaudio( handle, 1 );
+
+  // Set Max Volume
+  SMPEG_setvolume( handle, 100 );
+
+  //Set up a video surface to display MPeg in
+  SMPEG_setdisplay( Handle, Screen, nil, nil );
+
+  // Reenable Video
+  SMPEG_enablevideo( handle, 1 );
+
+  // Retuen the handle in case we need it somewhere else
+  Result := handle;
+end;
+
+// Free Mpeg
+
+procedure FreeMPeg( handle : PSMPEG );
+begin
+  SMPEG_delete( handle );
+end;
+
+// Loop Mpeg
+
+procedure LoopMpeg( handle : PSMPEG );
+begin
+  if IsLooping then
+  begin
+    SMPEG_loop( handle, 1 );
+    isLooping := true;
+  end
+  else
+  begin
+    SMPEG_loop( handle, 0 );
+    isLooping := false;
+  end;
+end;
+
+// Play Mpeg
+
+procedure PlayMpeg( handle : PSMPEG );
+begin
+  SMpeg_play( handle );
+end;
+
+// Stop Mpeg
+
+procedure StopMpeg( handle : PSMPEG );
+begin
+  SMpeg_stop( handle );
+end;
+
+function PollMPeg( handle : PSMPEG ) : TSMpegStatus;
+begin
+  Result := SMPEG_status( handle );
+end;
+
+function WaitMpeg( interval : Uint32; param : pointer ) : Uint32;
+var
+  e : TSDL_Event;
+  handle : PSMPEG;
+begin
+  handle := PSMPEG( param );
+
+  // Has it stopped? If so, throw a User Event
+  if PollMPeg( handle ) = STATUS_SMPEG_STOPPED then
+  begin
+    e.type_ := SDL_USEREVENT;
+    e.user.code := 1;
+    e.user.data1 := nil;
+    e.user.data2 := nil;
+    SDL_PushEvent( @e );
+  end;
+
+  result := interval;
+end;
+
+procedure RunIntro( fileName : string );
+var
+  e : TSDL_Event;
+  handle : PSMPEG;
+  td : PSDL_TimerID;
+  done : Boolean;
+begin
+  done := false;
+  // Create a Movie
+  handle := OpenMpeg( fileName );
+
+  // Play the Movie
+  PlayMPeg( Handle );
+
+  // Create a timer to see if the Movie has stopped
+  td := SDL_AddTimer( 1000, @WaitMPeg, handle );
+
+  // wait for Movie to finish
+  while not done do
+  begin
+    // wiat for out event to happen
+    SDL_WaitEvent( @e );
+    case e.type_ of
+      // Check to see if user want to skip the movie
+      SDL_KEYDOWN :
+        begin
+          if e.key.keysym.sym = SDLK_ESCAPE then
+            Done := true;
+        end;
+
+      SDL_USEREVENT :
+        begin
+          if PollMpeg( handle ) = STATUS_SMPEG_STOPPED then
+            Done := true;
+        end
+
+    end;
+  end;
+
+  // Stop the movie
+  StopMpeg( handle );
+
+  // Remove WaitMpegTimer
+  SDL_RemoveTimer( td );
+
+  // Unhook mixer audio playback function
+  Mix_HookMusic( nil, nil );
+
+  // Free out MPEG
+  FreeMPeg( handle );
+end;
+
+begin
+  // Make sure we at least have a parameter
+  if ParamCount <> 1 then
+  begin
+    Halt( 1 );
+  end;
+  
+  // Initialize SDL
+  if SDL_Init( SDL_INIT_VIDEO or SDL_INIT_AUDIO or SDL_INIT_TIMER ) < 0 then
+  begin
+    // Display and error
+    Halt( 1 );
+  end;
+
+  // Open the Mixer before SDL_SetVideo to avoid the poping sound
+  Mix_OpenAudio( 22050, AUDIO_S16, 2, 1024 );
+
+  SDL_WM_SetCaption( TITLE, nil );
+
+  // Set the video Mode
+  screen := SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, BPP, SDL_DOUBLEBUF or
+    SDL_ANYFORMAT );
+  if screen = nil then
+  begin
+    // Display and error
+    Halt( 1 );
+  end;
+
+  RunIntro( ParamStr( 1 ) );
+
+  Mix_CloseAudio;
+
+  SDL_Quit;
+end.
+
-- 
cgit v1.2.3