diff VideoPlayer.h @ 0:9c0607679772

init
author Ritor1
date Sat, 12 Jan 2013 09:45:18 +0600
parents
children 572d821561f3
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/VideoPlayer.h	Sat Jan 12 09:45:18 2013 +0600
@@ -0,0 +1,195 @@
+#pragma once
+#include "OSAPI.h"
+
+#include "Texture.h"
+#include "mm7_data.h"
+
+
+
+#pragma pack(push, 1)
+
+
+
+struct _BINK
+{
+  int uWidth;
+  int uHeight;
+};
+
+struct _BINK_1_5_21_0: public _BINK
+{
+  int uNumFrames;
+  int uCurrentFrame;
+  int Data1;
+  int uFrameRate;
+  int field_18[3];
+  int uFlags;
+};
+
+struct _BINK_3_0_0_0: public _BINK
+{
+  int unk_0;
+  int unk_1;
+  int uNumFrames;
+  int uCurrentFrame;
+  int _unk2;
+  int _unk_[10];
+};
+
+
+struct _BINKBUF
+{
+  int uWidth;
+  int uHeight;
+  int field_8;
+  int field_C;
+  int uBinkDDSurfaceType;
+  void *pDDrawSurfaceData;
+  int uDDrawSurfacePitch;
+  int field_1C;
+  int field_20;
+  int field_24;
+  int field_28;
+  int field_2C;
+  int field_30;
+  int field_34;
+  int field_38;
+  int field_3C;
+  int field_40;
+  int field_44;
+  struct IDirectDrawSurface *pTargetDDrawSurface;
+  int field_4C;
+  int uRectX;
+  int uRectY;
+  HWND hWnd;
+  int field_5C;
+  float field_60;
+  float field_64;
+  int field_68;
+  int field_6C;
+  void *pDDrawSurfaceData_;
+  int field_74;
+  int field_78;
+};
+struct _BINKBUF_1_5_21_0: public _BINKBUF
+{
+  int field_7C;
+  int field_80;
+  int field_84;
+  int field_88;
+  int field_8C;
+  int field_90;
+  int field_94;
+  int field_98;
+  int field_9C;
+  int field_A0;
+};
+
+struct _BINKBUF_3_0_0_0: public _BINKBUF
+{
+};
+#pragma pack(pop)
+
+
+
+
+#pragma pack(push, 1)
+struct MovieHeader
+{
+  char pVideoName[40];
+  unsigned int uFileOffset;
+};
+#pragma pack(pop)
+
+
+
+
+
+void __cdecl ShowIntroVideo_and_LoadingScreen();
+
+
+
+
+#pragma pack(push, 1)
+struct VideoPlayer
+{
+  //----- (004BE6F5) --------------------------------------------------------
+  inline VideoPlayer():
+    field_54(0),
+    pBinkMovie(nullptr), pBinkBuffer(nullptr),
+    pSmackerMovie(nullptr), pSmackerBuffer(nullptr), pSmackMovieBlit(nullptr)
+  {
+    //RGBTexture::RGBTexture(&pVideoPlayer->pVideoFrame);
+    bStopBeforeSchedule = false;
+    field_40 = 0;
+    byte_F8BC0C = 0;
+    //pBinkMovie = nullptr;
+  }
+  //----- (004BECBD) --------------------------------------------------------
+  virtual ~VideoPlayer()
+  {
+    bStopBeforeSchedule = false;
+    field_40 = 0;
+    pVideoFrame.Release();
+  }
+
+  void PlayDeathMovie();
+  unsigned int SmackCheckSurfaceFromat();
+  void Initialize();
+  void Prepare();
+  void Unload();
+  void FastForwardToFrame(unsigned int uFrameNum);
+  void BinkDrawFrame(HWND hWnd, int a3, int a4);
+  void BinkUpdatePalette(HWND hWnd) {}
+  void SmackDrawFrame(HWND hWnd, int a3, int a4);
+  void SmackUpdatePalette(HWND hWnd);
+  _BINK *OpenBink(const char *pName);
+  struct _SMACK *OpenSmack(const char *pFilename);
+  void _4BF28F(const char *pMovieName, unsigned int a3_1);
+  bool AnyMovieLoaded();
+  void OpenMovie(const char *pFilename, unsigned int bLoop, int a4);
+  void _4BF5B2();
+  void _4BF73A();
+  _BINKBUF *CreateBinkBuffer(HWND a1, unsigned int uWidth, unsigned int uHeight, char a4);
+
+  static void __fastcall MovieLoop(const char *pMovieName, int a2, int a3, int a4);
+
+
+  RGBTexture pVideoFrame;
+  struct _SMACK *pSmackerMovie;
+  struct _SMACKBUF *pSmackerBuffer;
+  char *pSomeSmackerBuffer;
+  int field_34;
+  MovieHeader *pMightVideoHeaders;
+  MovieHeader *pMagicVideoHeaders;
+  int field_40;
+  int field_44;
+  unsigned int uNumMightVideoHeaders;
+  unsigned int uNumMagicVideoHeaders;
+  int uBinkDirectDrawSurfaceType;
+  int field_54;
+  unsigned int bPlayingMovie;
+  unsigned int bFirstFrame;
+  unsigned int bUsingSmackerMMX;
+  unsigned int bLoopPlaying;
+  int field_68;
+  unsigned int bStopBeforeSchedule;
+  HWND hWindow;
+  struct _SMACKBLIT *pSmackMovieBlit;
+  HANDLE hMightVid;
+  HANDLE hMagicVid;
+  _BINK *pBinkMovie;
+  _BINKBUF *pBinkBuffer;
+  char field_88[20];
+  unsigned int uMovieFormat;
+  int dword_0000A0;
+  char pCurrentMovieName[64];
+  char pVideoFrameTextureFilename[32];
+};
+#pragma pack(pop)
+
+
+
+
+
+extern VideoPlayer *pVideoPlayer;