160 lines
5.9 KiB
C++
160 lines
5.9 KiB
C++
#include "SCENE.H"
|
|
#include "MEDIA.h"
|
|
|
|
#include <psapi.h>
|
|
|
|
#pragma comment(lib, "psapi.lib")
|
|
|
|
INPUT_IO *DUMY_CREATE(char *Filename);
|
|
INPUT_IO *WEBCAM_CREATE(WORLD *pScene,char *MediaName);
|
|
INPUT_IO *AVI_CREATE(WORLD *pScene,char *MediaName);
|
|
INPUT_IO *SOUND_CREATE(WORLD *pScene,char *MediaName);
|
|
INPUT_IO *MICRO_CREATE(WORLD *pScene);
|
|
INPUT_IO *BINK_CREATE(char *MediaName);
|
|
INPUT_IO *MPEG_CREATE(char *MediaName);
|
|
INPUT_IO *JPEG_CREATE(char *MediaName);
|
|
INPUT_IO *TARG_CREATE(char *MediaName);
|
|
INPUT_IO *BMP_CREATE(char *MediaName);
|
|
INPUT_IO *PNG_CREATE(char *MediaName);
|
|
INPUT_IO *PSD_CREATE(char *MediaName);
|
|
INPUT_IO *VOID_CREATE(char *MediaName);
|
|
INPUT_IO *MAPC_CREATE(char *MediaName);
|
|
INPUT_IO *PALT_CREATE(char *MediaName);
|
|
INPUT_IO *ERROR_CREATE(char *Error);
|
|
#ifndef SKIMMED_NET
|
|
INPUT_IO *StreamIn_CREATE(WORLD *pScene,char *Name);
|
|
INPUT_IO *StreamOut_CREATE(WORLD *pScene,char *Name);
|
|
#endif
|
|
INPUT_IO *ReverseRender_CREATE(WORLD *pScene,char *Name);
|
|
INPUT_IO *BLUR_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *DIFF_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *FONT_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *TEXT_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *LAYER_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *DSWAV_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *DRVO_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *BACK_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *SNAP_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *BROWSER_CREATE(WORLD *pScene,char *Filename);
|
|
INPUT_IO *NATAL_CREATE(WORLD *pScene,char *Filename);
|
|
#ifdef PRIMESENS_SUPPORT
|
|
INPUT_IO *PRIMESENS_CREATE(WORLD *pScene,char *Filename);
|
|
#endif
|
|
INPUT_IO *FACEFEATURE_CREATE(WORLD *pScene,char *Filename);
|
|
//#pragma optimize("",off)
|
|
u32 MediaSize = 0;
|
|
INPUT_IO *CreateIO(WORLD *pScene,char *MediaName, bool dummy)
|
|
{
|
|
START_RASTER(Media);
|
|
|
|
PROCESS_MEMORY_COUNTERS ppsmemCounters;
|
|
GetProcessMemoryInfo(GetCurrentProcess(),&ppsmemCounters,sizeof(PROCESS_MEMORY_COUNTERS));
|
|
u32 SizeBefor = ppsmemCounters.WorkingSetSize;
|
|
|
|
INPUT_IO *Ret;
|
|
Ret = NULL;
|
|
if (MediaName)
|
|
{
|
|
char MediaNameProcess[2048];
|
|
strcpy(MediaNameProcess,MediaName);
|
|
u32 FFF = GetFileNameExtend((char *)MediaNameProcess);
|
|
if (!dummy)
|
|
{
|
|
if ((FFF == '.AVI') || (FFF == '.OGG') || (FFF == '.OGV') || (FFF == '.WMV') || (FFF == '.MOV')|| (FFF == '.FLV')|| (FFF == 'MPEG')|| (FFF == '.MPG')|| (FFF == '.VOB')) Ret = AVI_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'AVIA' || (FFF == 'WMVA')) Ret = AVI_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == '.MP3' || FFF == '.KAR') Ret = SOUND_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == '.WAV') Ret = DSWAV_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == '.MIC') Ret = MICRO_CREATE(pScene);
|
|
if ((FFF == '.JPG') || (FFF == 'JPEG')) Ret = JPEG_CREATE(MediaNameProcess);
|
|
if ((FFF >= 'CAM0') && (FFF <= 'CAM9')) Ret = WEBCAM_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == '.TGA') Ret = TARG_CREATE(MediaNameProcess);
|
|
if (FFF == '.PNG') Ret = PNG_CREATE(MediaNameProcess);
|
|
if (FFF == '.BMP') Ret = BMP_CREATE(MediaNameProcess);
|
|
if (FFF == 'VOID') Ret = VOID_CREATE(MediaNameProcess);
|
|
if (FFF == 'MAPC') Ret = MAPC_CREATE(MediaNameProcess);
|
|
if (FFF == 'PALT') Ret = PALT_CREATE(MediaNameProcess);
|
|
#ifndef SKIMMED_NET
|
|
if (FFF == 'STRI') Ret = StreamIn_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'STRO') Ret = StreamOut_CREATE(pScene,MediaNameProcess);
|
|
#endif
|
|
if (FFF == 'REVR') Ret = ReverseRender_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == '.PSD') Ret = PSD_CREATE(MediaNameProcess);
|
|
if (FFF == 'BLUR') Ret = BLUR_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'DIFF') Ret = DIFF_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'FONT') Ret = FONT_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'AYER') Ret = LAYER_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'DRVO') Ret = DRVO_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'BACK') Ret = BACK_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'SNAP') Ret = SNAP_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'WSER') Ret = BROWSER_CREATE(pScene,MediaNameProcess);
|
|
if (FFF == 'ATAL') Ret = NATAL_CREATE(pScene,MediaNameProcess);
|
|
#ifdef PRIMESENS_SUPPORT
|
|
if (FFF == 'SENS') Ret = PRIMESENS_CREATE(pScene,MediaNameProcess);
|
|
#endif
|
|
if (FFF == 'FACE') Ret = FACEFEATURE_CREATE(pScene,MediaNameProcess);
|
|
|
|
if ((FFF == '.TXT')||(FFF == 'TEXT')) Ret = TEXT_CREATE(pScene,MediaNameProcess);
|
|
} else
|
|
{
|
|
Ret = DUMY_CREATE(MediaNameProcess);
|
|
}
|
|
if (Ret)
|
|
{
|
|
Ret->nbReferences = 1;
|
|
Ret->Image.PITCH = Ret->Image.SX;
|
|
Ret->dCurrentTime = 0;
|
|
Ret->ulCurrentFrame = 0;
|
|
|
|
Ret->lCurrentTrackOffset = 0;
|
|
Ret->IsValidForMosaique = 1;
|
|
Ret->ulMediaRedirectValue = -1;
|
|
Ret->VirtuallyDestroyed = 0;
|
|
Ret->Tracks = NULL;
|
|
Ret->ulColorMode = 0;
|
|
Ret->MediaFocale = 0.0f;
|
|
Ret->FrameRaster = 0;
|
|
Ret->ulFileAsbeenTouched = 0;
|
|
|
|
strcpy((char*)Ret->MediaName,MediaName);
|
|
|
|
char TrackName[2048];
|
|
Ret->Priority = 0;
|
|
Ret->Nickname[0]= 0;
|
|
if (FFF == 'REVR') Ret->Priority = 1;
|
|
if (FFF == 'BLUR') Ret->Priority = 2;
|
|
if (FFF == 'DIFF') Ret->Priority = 3;
|
|
strcpy(TrackName,MediaName);
|
|
SetFileNameExtend(TrackName,'.TRK');
|
|
LoadTrackPlayer(&Ret->Tracks,TrackName);
|
|
STOP_RASTER(Media);
|
|
|
|
GetProcessMemoryInfo(GetCurrentProcess(),&ppsmemCounters,sizeof(PROCESS_MEMORY_COUNTERS));
|
|
MediaSize += ppsmemCounters.WorkingSetSize - SizeBefor;
|
|
|
|
return Ret;
|
|
}
|
|
}
|
|
//char TEEXT[2048];
|
|
//sprintf(TEEXT,"Error\n%s",MediaName);
|
|
Ret = ERROR_CREATE(MediaName);
|
|
Ret->VirtuallyDestroyed = 0;
|
|
Ret->Priority = 0;
|
|
Ret->ulCurrentFrame = 0;
|
|
Ret->ulMediaRedirectValue = -1;
|
|
Ret->ulColorMode = 0;
|
|
Ret->MediaFocale = 0.0f;
|
|
Ret->Tracks = NULL;
|
|
Ret->Nickname[0] = 0;
|
|
Ret->lTimeState = 0;
|
|
Ret->ulMediaParams = 0;
|
|
Ret->FrameRaster = 0;
|
|
Ret->nbReferences = 1;
|
|
|
|
STOP_RASTER(Media);
|
|
|
|
GetProcessMemoryInfo(GetCurrentProcess(),&ppsmemCounters,sizeof(PROCESS_MEMORY_COUNTERS));
|
|
MediaSize += ppsmemCounters.WorkingSetSize - SizeBefor;
|
|
|
|
return Ret;
|
|
}
|
|
|