JD2022-TU1/main/extern/Camcam/LIBS/Input/IO_Create.cpp

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;
}