www.pudn.com > VirtualVCR-src-v2.6.9.zip > CAppPropData.cpp
/*
Virtual VCR
Copyright (C) 2002 Shaun Faulds
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Acknowledgments:
This application and associated filters are based on the examples
from the Microsoft DirectX DirectShow SDK.
*/
#include "CAppPropData.h"
#include "CTVstation.h"
CAppPropData::CAppPropData()
{
// Get the application path info and
// and set the application INI file name
LPSTR pathInfo = new char[_MAX_PATH+1];
GetCurrentDirectory(_MAX_PATH, pathInfo);
INIfile = new char[_MAX_PATH];
wsprintf(INIfile, TEXT("%s\\%s"), pathInfo, "VirtualVCR.ini");
FilterNamesfile = new char[_MAX_PATH];
wsprintf(FilterNamesfile, TEXT("%s\\%s"), pathInfo, "FilterNames.ini");
delete[] pathInfo;
// Do not use Pre filtering by default
UsePreFilters = false;
filterList = new CFilterList();
reloadSelectedFilters("INIT", true);
appendStampToName = false;
VideoCodec = new CCodec(CLSID_VideoCompressorCategory);
AudioCodec = new CCodec(CLSID_AudioCompressorCategory);
memset(channels, 0, sizeof(channels[0]) * 256);
}
CAppPropData::~CAppPropData()
{
delete VideoCodec;
delete AudioCodec;
delete []INIfile;
delete filterList;
deleteChannelData();
}
// Save the session data, this data is saved each time the app is closed
BOOL CAppPropData::saveSessionData()
{
TCHAR *tach = new TCHAR [1024];
wsprintf(tach, TEXT("%d"), iCaptureStatsWindowX);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("CapStatX"), tach, INIfile);
wsprintf(tach, TEXT("%d"), iCaptureStatsWindowY);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("CapStatY"), tach, INIfile);
wsprintf(tach, TEXT("%d"), iApplicationWindowX);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AppLocX"), tach, INIfile);
wsprintf(tach, TEXT("%d"), iApplicationWindowY);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AppLocY"), tach, INIfile);
return true;
}
// Saves the settings to the INI file, this is used for "store defaults"
// and also save profile.
BOOL CAppPropData::savePersistentData(LPSTR newFileName, bool defaultINI)
{
LPSTR destination = INIfile;
if(!defaultINI)
destination = newFileName;
TCHAR *tach = new TCHAR [1024];
wsprintf(tach, TEXT("%d"), (int)(audioInputLevel * 1000));
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AudioInputLevel"), tach, destination);
wsprintf(tach, TEXT("%d"), SaveCapStats);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("SaveCapStats"), tach, destination);
wsprintf(tach, TEXT("%d"), AlwaysOnTop);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AlwaysOnTop"), tach, destination);
wsprintf(tach, TEXT("%d"), HideBars);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("HideBars"), tach, destination);
wsprintf(tach, TEXT("%d"), audioInputIndex);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AudioInputIndex"), tach, destination);
wsprintf(tach, TEXT("%d"), (int)(ResampleAudioTo * 100000));
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("ResampleAudioTo"), tach, destination);
wsprintf(tach, TEXT("%d"), audioResampleType);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AudioResampleType"), tach, destination);
wsprintf(tach, TEXT("%d"), streamOffsetType);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("StreamOffsetType"), tach, destination);
wsprintf(tach, TEXT("%d"), Video_Brit);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoBrightness"), tach, destination);
wsprintf(tach, TEXT("%d"), Video_Hue);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoHue"), tach, destination);
wsprintf(tach, TEXT("%d"), Video_Cont);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoContrast"), tach, destination);
wsprintf(tach, TEXT("%d"), Video_Sat);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoSaturation"), tach, destination);
wsprintf(tach, TEXT("%d"), Video_Colour);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoColour"), tach, destination);
wsprintf(tach, TEXT("%d"), Video_Gamma);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoGamma"), tach, destination);
wsprintf(tach, TEXT("%d"), Video_Sharp);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoSharpness"), tach, destination);
wsprintf(tach, TEXT("%d"), TunerChannel);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("TunerChannel"), tach, destination);
wsprintf(tach, TEXT("%d"), tunerCountryCode);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("TunerCountry"), tach, destination);
wsprintf(tach, TEXT("%d"), tunerInputType);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("TunerInputType"), tach, destination);
wsprintf(tach, TEXT("%d"), tunerMode);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("TunerMode"), tach, destination);
wsprintf(tach, TEXT("%d"), AudioDelay);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AudioDelay"), tach, destination);
wsprintf(tach, TEXT("%d"), ShowAudioScope);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("ShowAudioScope"), tach, destination);
wsprintf(tach, TEXT("%d"), ShowHistogram);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("ShowHistogram"), tach, destination);
wsprintf(tach, TEXT("%d"), LogAVdiff);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("LogAVdiff"), tach, destination);
wsprintf(tach, TEXT("%d"), UseSmartTee);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("UseSmartTee"), tach, destination);
wsprintf(tach, TEXT("%d"), CapStatsRelativePos);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("CapStatRelative"), tach, destination);
wsprintf(tach, TEXT("%d"), fWantCaptureStats);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("WantCaptureStats"), tach, destination);
// store show on stop settings
wsprintf(tach, TEXT("%d"), showStatsOnStop);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("ShowOnStop"), tach, destination);
// store AVI compat index
wsprintf(tach, TEXT("%d"), compatAVIindex);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AVIcompatINDEX"), tach, destination);
// store av sync settings
wsprintf(tach, TEXT("%d"), useAudioResample);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("UseAudioResample"), tach, destination);
wsprintf(tach, TEXT("%d"), SyncUsingStreamOffset);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("SyncUsingStreamOffset"), tach, destination);
// store current settings
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("CaptureFile"), szCaptureFile, destination);
// Write the colour format out to the prop file
ColourFormatName(ColourFormat, tach);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoColourFormat"), tach, destination);
// Write all the other settings out
wsprintf(tach, TEXT("%d"), fWantPreview);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("WantPreview"), tach, destination);
wsprintf(tach, TEXT("%d"), (int)(10000000 / FrameRate));
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("FrameRate"), tach, destination);
wsprintf(tach, TEXT("%d"), fUseCustomFormat);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("UseFrameRate"), tach, destination);
wsprintf(tach, TEXT("%d"), fCapAudio);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("CaptureAudio"), tach, destination);
wsprintf(tach, TEXT("%d"), iMasterStream);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("MasterStream"), tach, destination);
wsprintf(tach, TEXT("%d"), fUseTimeLimit);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("UseTimeLimit"), tach, destination);
wsprintf(tach, TEXT("%d"), dwTimeLimit);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("TimeLimit"), tach, destination);
wsprintf(tach, TEXT("%d"), CustomWidth);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("CustomWidth"), tach, destination);
wsprintf(tach, TEXT("%d"), CustomHeight);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("CustomHeight"), tach, destination);
wsprintf(tach, TEXT("%s"), VideoCodec->getCodecIDstring(VideoCodec->currentCodecINDEX()).c_str());
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoCompCodec"), tach, destination);
wsprintf(tach, TEXT("%s"), AudioCodec->getCodecIDstring(AudioCodec->currentCodecINDEX()).c_str());
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AudioCompCodec"), tach, destination);
wsprintf(tach, TEXT("%d"), CompressVideo);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("CompressVideo"), tach, destination);
wsprintf(tach, TEXT("%d"), CompressAudio);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("CompressAudio"), tach, destination);
wsprintf(tach, TEXT("%d"), Audio_Capability_Index);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AudioCapabilityIndex"), tach, destination);
wsprintf(tach, TEXT("%d"), dwFreeSpaceLimit);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("FreeSpaceLimit"), tach, destination);
wsprintf(tach, TEXT("%d"), fUseFreeSpace);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("UseFreeSpace"), tach, destination);
wsprintf(tach, TEXT("%d"), iVideoInputIndex);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoInputIndex"), tach, destination);
wsprintf(tach, TEXT("%d"), UsePreFilters);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("UsePreFilters"), tach, destination);
wsprintf(tach, TEXT("%d"), appendStampToName);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AppendStampToName"), tach, destination);
wsprintf(tach, TEXT("%d"), Audio_nChannel);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("Audio_nChannel"), tach, destination);
wsprintf(tach, TEXT("%d"), Audio_nSamplesPerSec);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("Audio_nSamplesPerSec"), tach, destination);
wsprintf(tach, TEXT("%d"), Audio_nAvgBytesPerSec);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("Audio_nAvgBytesPerSec"), tach, destination);
wsprintf(tach, TEXT("%d"), Audio_nBlockAlign);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("Audio_nBlockAlign"), tach, destination);
wsprintf(tach, TEXT("%d"), Audio_wBitsPerSample);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("Audio_wBitsPerSample"), tach, destination);
wsprintf(tach, TEXT("%d"), Audio_wFormatTag);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("Audio_wFormatTag"), tach, destination);
// Write out the filter list to the INI file
TCHAR *filterName = new TCHAR[1024];
int filterNumber = 0;
while(filterList->getFilterPointer(filterNumber))
{
wsprintf(filterName, TEXT("FILTER%d"), filterNumber);
string filterID = filterList->getIDstring(filterNumber);
wsprintf(tach, TEXT("%s=%s"), filterID.c_str(), filterList->getFilterPropertyString(filterNumber));
WritePrivateProfileString(TEXT("Filters"), filterName, tach, destination);
filterNumber++;
}
wsprintf(filterName, TEXT("FILTER%d"), filterNumber);
WritePrivateProfileString(TEXT("Filters"), filterName, "end", destination);
delete []filterName;
// Save the current device
wsprintf(tach, TEXT("%d"), VideoDeviceIndex);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoDevice"), tach, destination);
wsprintf(tach, TEXT("%d"), AudioDeviceIndex);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("AudioDevice"), tach, destination);
// Save close on stop time reached
wsprintf(tach, TEXT("%d"), fQuitWhenDone);
WritePrivateProfileString(TEXT("VirtualVCR"), TEXT("QuitWhenDone"), tach, destination);
// Save Channel info
saveChannelInfo(destination);
return true;
}
int CAppPropData::loadChannelInfo(LPSTR sourceFile)
{
deleteChannelData();
for(int x = 0; x < 256; x++)
{
channels[0] = NULL;
}
/*
channels[0] = new CTVstation();
channels[0]->setChannel(9);
channels[0]->setChannelMAP(7);
channels[0]->setChannelName("Channel 7");
channels[1] = new CTVstation();
channels[1]->setChannel(11);
channels[1]->setChannelMAP(9);
channels[1]->setChannelName("Channel 9");
channels[2] = new CTVstation();
channels[2]->setChannel(12);
channels[2]->setChannelMAP(10);
channels[2]->setChannelName("Channel 10");
*/
TCHAR channelData[64];
int channel = -1;
int channelMAP = -1;
char channelName[256];
for(int y = 0; y < 256; y++)
{
wsprintf(channelData, TEXT("%d-ID"), y);
channel = GetPrivateProfileInt(TEXT("ChannelINFO"), channelData, -1, sourceFile);
if(channel > -1)
{
wsprintf(channelData, TEXT("%d-MAP"), y);
channelMAP = GetPrivateProfileInt(TEXT("ChannelINFO"), channelData, -1, sourceFile);
wsprintf(channelData, TEXT("%d-NAME"), y);
GetPrivateProfileString(TEXT("ChannelINFO"), channelData, TEXT(""),
channelName, sizeof(channelName), sourceFile);
channels[y] = new CTVstation();
channels[y]->setChannel(channel);
channels[y]->setChannelMAP(channelMAP);
channels[y]->setChannelName(channelName);
}
else
break;
}
return 0;
}
int CAppPropData::saveChannelInfo(LPSTR destinationFile)
{
TCHAR tach[256];
TCHAR channelData[64];
const char *name = NULL;
for(int x = 0; x < 256; x++)
{
if(channels[x] != NULL)
{
wsprintf(channelData, TEXT("%d-ID"), x);
wsprintf(tach, TEXT("%d"), channels[x]->getChannel());
WritePrivateProfileString(TEXT("ChannelINFO"), channelData, tach, destinationFile);
wsprintf(channelData, TEXT("%d-MAP"), x);
wsprintf(tach, TEXT("%d"), channels[x]->getChannelMAP());
WritePrivateProfileString(TEXT("ChannelINFO"), channelData, tach, destinationFile);
wsprintf(channelData, TEXT("%d-NAME"), x);
name = channels[x]->getChannelName();
wsprintf(tach, TEXT("%s"), name);
WritePrivateProfileString(TEXT("ChannelINFO"), channelData, tach, destinationFile);
}
else
{
wsprintf(channelData, TEXT("%d-ID"), x);
wsprintf(tach, TEXT("%d"), -1);
WritePrivateProfileString(TEXT("ChannelINFO"), channelData, tach, destinationFile);
wsprintf(channelData, TEXT("%d-MAP"), x);
wsprintf(tach, TEXT("%d"), -1);
WritePrivateProfileString(TEXT("ChannelINFO"), channelData, tach, destinationFile);
wsprintf(channelData, TEXT("%d-NAME"), x);
wsprintf(tach, TEXT("%s"), "none");
WritePrivateProfileString(TEXT("ChannelINFO"), channelData, tach, destinationFile);
break;
}
}
return 0;
}
int CAppPropData::deleteChannelData()
{
for(int x = 0; x < 256; x++)
{
if(channels[x] != NULL)
{
delete channels[x];
channels[x] = NULL;
}
}
return 0;
}
BOOL CAppPropData::loadData()
{
return loadProfileData(INIfile, true);
}
BOOL CAppPropData::loadProfileData(LPSTR newFileName, BOOL loadAll)
{
// load capture stats relative pos settings
// try to load the first settings, if it dows not exist
// then fail as this settings should be available and
// if it is not then the file does not exist
// valid valuse for CapStatRelative are 0 or 1 so -1
// means that the file did not exist, is this is the case
// return false, else set the rest of the settings
int capTest = -1;
try
{
capTest = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("CapStatRelative"), -1, newFileName);
if(capTest == -1 && loadAll == false)
return false;
}
catch(...)
{
return false;
}
if(capTest == -1)
CapStatsRelativePos = 0;
else
CapStatsRelativePos = capTest;
// Now load the rest of the settings
audioInputLevel =
(double)GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AudioInputLevel"), 200, newFileName) / 1000;
audioInputIndex =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AudioInputIndex"), -1, newFileName);
Video_Brit =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("VideoBrightness"), -1, newFileName);
Video_Hue =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("VideoHue"), -1, newFileName);
Video_Cont =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("VideoContrast"), -1, newFileName);
Video_Sat =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("VideoSaturation"), -1, newFileName);
Video_Colour =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("VideoColour"), 1, newFileName);
Video_Gamma =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("VideoGamma"), -1, newFileName);
Video_Sharp =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("VideoSharpness"), -1, newFileName);
AlwaysOnTop =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AlwaysOnTop"), 0, newFileName);
SaveCapStats =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("SaveCapStats"), 0, newFileName);
HideBars =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("HideBars"), 0, newFileName);
ResampleAudioTo =
(double)GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("ResampleAudioTo"), 10000000, newFileName) / 100000;
AudioDelay =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AudioDelay"), 0, newFileName);
ShowAudioScope =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("ShowAudioScope"), 0, newFileName);
ShowHistogram =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("ShowHistogram"), 0, newFileName);
audioResampleType =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AudioResampleType"), 0, newFileName);
streamOffsetType =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("StreamOffsetType"), 0, newFileName);
// Log the av diff settings
LogAVdiff = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("LogAVdiff"), 0, newFileName);
//Tuner Mode NTSC PAL etc
tunerMode = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("TunerMode"), 0, newFileName);
//Use Smart Tee to preview
UseSmartTee = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("UseSmartTee"), 0, newFileName);
//AVI compatibility index
compatAVIindex = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AVIcompatINDEX"), 0, newFileName);
// Show Stats on stop
showStatsOnStop = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("ShowOnStop"), 0, newFileName);
// do we want captur stats?
fWantCaptureStats = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("WantCaptureStats"), FALSE, newFileName);
// load audio sync settings
useAudioResample = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("UseAudioResample"), 0, newFileName);
SyncUsingStreamOffset = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("SyncUsingStreamOffset"), 0, newFileName);
// load Audio settings
Audio_nChannel = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("Audio_nChannel"), 2, newFileName);
Audio_nSamplesPerSec = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("Audio_nSamplesPerSec"), 44100, newFileName);
Audio_nAvgBytesPerSec = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("Audio_nAvgBytesPerSec"), 176400, newFileName);
Audio_nBlockAlign = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("Audio_nBlockAlign"), 4, newFileName);
Audio_wBitsPerSample = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("Audio_wBitsPerSample"), 16, newFileName);
Audio_wFormatTag = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("Audio_wFormatTag"), 1, newFileName);
// do we want preview?
fWantPreview = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("WantPreview"), FALSE, newFileName);
// get the video compressor name
char videoComp[1024];
GetPrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoCompCodec"), TEXT("none"),
videoComp, sizeof(videoComp), newFileName);
VideoCodec->getFilterByID(videoComp);
// get the audio compression codec name
char audioComp[1024];
GetPrivateProfileString(TEXT("VirtualVCR"), TEXT("AudioCompCodec"), TEXT("none"),
audioComp, sizeof(audioComp), newFileName);
AudioCodec->getFilterByID(audioComp);
Audio_Capability_Index =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AudioCapabilityIndex"), -1, newFileName);
CompressAudio =
GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("CompressAudio"), 0, newFileName);
// do we want audio?
fCapAudio = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("CaptureAudio"), TRUE, newFileName);
// Set the use Pre Filters Setting
UsePreFilters = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("UsePreFilters"), FALSE, newFileName);
// do we want video compression
CompressVideo = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("CompressVideo"), FALSE, newFileName);
iMasterStream = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("MasterStream"), -1, newFileName);
// get the frame rate from win.ini before making the graph
fUseCustomFormat = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("UseFrameRate"), 0, newFileName);
int units_per_frame = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("FrameRate"), 400000, newFileName); // 15fps
FrameRate = 10000000. / units_per_frame;
FrameRate = (int)(FrameRate * 100) / 100.;
if(FrameRate <= 0.)
FrameRate = 25.0;
// get custom size settings
CustomWidth = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("CustomWidth"), 320, newFileName);
CustomHeight = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("CustomHeight"), 240, newFileName);
// Get the colour format setting
TCHAR colourFormat[128];
GetPrivateProfileString(TEXT("VirtualVCR"), TEXT("VideoColourFormat"), TEXT("RGB24"),
colourFormat, sizeof(colourFormat), newFileName);
ColourFormat = ColourFormatGUID(colourFormat);
// Get the video input Index of the Crossbar
iVideoInputIndex = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("VideoInputIndex"), -1, newFileName);
// get time time limit stuff
fQuitWhenDone = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("QuitWhenDone"), 0, newFileName);
fUseTimeLimit = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("UseTimeLimit"), 0, newFileName);
fUseFreeSpace = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("UseFreeSpace"), 0, newFileName);
dwTimeLimit = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("TimeLimit"), 0, newFileName);
dwFreeSpaceLimit = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("FreeSpaceLimit"), 0, newFileName);
// get the capture file name
GetPrivateProfileString(TEXT("VirtualVCR"), TEXT("CaptureFile"), TEXT("capture.avi"),
szCaptureFile, sizeof(szCaptureFile), newFileName);
// Get use time data stamp info
appendStampToName = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AppendStampToName"), 0, newFileName);
// Get the device names to use
VideoDeviceIndex = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("VideoDevice"), 0, newFileName);
AudioDeviceIndex = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AudioDevice"), 0, newFileName);
// Get Tuner input type
tunerInputType = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("TunerInputType"), 61, newFileName);
// Get Tuner Country code
tunerCountryCode = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("TunerCountry"), 61, newFileName);
// Get Last TV Channel
TunerChannel = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("TunerChannel"), 2, newFileName);
// If this is the first load then we need to load all
// the data in.
if(loadAll)
{
// get Cature StatsWinod location
iCaptureStatsWindowX = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("CapStatX"), 50, newFileName);
iCaptureStatsWindowY = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("CapStatY"), 50, newFileName);
// get application start xy
iApplicationWindowX = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AppLocX"), 50, newFileName);
iApplicationWindowY = GetPrivateProfileInt(TEXT("VirtualVCR"), TEXT("AppLocY"), 50, newFileName);
}
reloadSelectedFilters(newFileName, false);
loadChannelInfo(newFileName);
return true;
}
BOOL CAppPropData::reloadSelectedFilters(LPSTR newFileName, bool defaultINI)
{
filterList->removeAllFilterFromSelected();
LPSTR source = INIfile;
if(!defaultINI)
source = newFileName;
TCHAR data[1024];
TCHAR *filterName = new TCHAR[1024];
int filterNumber = 0;
while(true)
{
wsprintf(filterName, TEXT("FILTER%d"), filterNumber);
GetPrivateProfileString(TEXT("Filters"), filterName, TEXT("end"), data, sizeof(data), source);
if(!strcmp(data, "end"))
break;
char *pch;
char *guidFilter;
char *prop;
pch = strtok (data,"=");
int type = 0;
while (pch != NULL)
{
if(type == 0)
guidFilter = pch;
if(type == 1)
prop = pch;
type++;
pch = strtok (NULL, "=");
}
filterList->selectFilterByIDString(guidFilter, prop);
filterNumber++;
}
delete []filterName;
return true;
}
void CAppPropData::ColourFormatName(GUID guid, TCHAR *name)
{
if(MEDIASUBTYPE_YVU9 == guid)
wsprintf(name, "YVU9");
else if(MEDIASUBTYPE_Y411 == guid)
wsprintf(name, "Y411");
else if(MEDIASUBTYPE_Y41P == guid)
wsprintf(name, "Y41P");
else if(MEDIASUBTYPE_YUY2 == guid)
wsprintf(name, "YUY2");
else if(MEDIASUBTYPE_YVYU == guid)
wsprintf(name, "YVYU");
else if(MEDIASUBTYPE_UYVY == guid)
wsprintf(name, "UYVY");
else if(MEDIASUBTYPE_Y211 == guid)
wsprintf(name, "Y211");
else if(MEDIASUBTYPE_RGB4 == guid)
wsprintf(name, "RGB4");
else if(MEDIASUBTYPE_RGB8 == guid)
wsprintf(name, "RGB8");
else if(MEDIASUBTYPE_RGB565 == guid)
wsprintf(name, "RGB565");
else if(MEDIASUBTYPE_RGB555 == guid)
wsprintf(name, "RGB555");
else if(MEDIASUBTYPE_RGB24 == guid)
wsprintf(name, "RGB24");
else if(MEDIASUBTYPE_RGB32 == guid)
wsprintf(name, "RGB32");
else if(MEDIASUBTYPE_ARGB32 == guid)
wsprintf(name, "ARGB32");
else if(MEDIASUBTYPE_YV12 == guid)
wsprintf(name, "YV12");
else if(MEDIASUBTYPE_IF09 == guid)
wsprintf(name, "IF09");
else if(MEDIASUBTYPE_IYUV == guid)
wsprintf(name, "IYUV");
else
wsprintf(name, "????");
}
GUID CAppPropData::ColourFormatGUID(TCHAR *name)
{
if(strcmp(name, "YVU9") == 0)
return (GUID)MEDIASUBTYPE_YVU9;
else if(strcmp(name, "Y411") == 0)
return (GUID)MEDIASUBTYPE_Y411;
else if(strcmp(name, "Y41P") == 0)
return (GUID)MEDIASUBTYPE_Y41P;
else if(strcmp(name, "YUY2") == 0)
return (GUID)MEDIASUBTYPE_YUY2;
else if(strcmp(name, "YVYU") == 0)
return (GUID)MEDIASUBTYPE_YVYU;
else if(strcmp(name, "UYVY") == 0)
return (GUID)MEDIASUBTYPE_UYVY;
else if(strcmp(name, "Y211") == 0)
return (GUID)MEDIASUBTYPE_Y211;
else if(strcmp(name, "RGB4") == 0)
return (GUID)MEDIASUBTYPE_RGB4;
else if(strcmp(name, "RGB8") == 0)
return (GUID)MEDIASUBTYPE_RGB8;
else if(strcmp(name, "RGB565") == 0)
return (GUID)MEDIASUBTYPE_RGB565;
else if(strcmp(name, "RGB555") == 0)
return (GUID)MEDIASUBTYPE_RGB555;
else if(strcmp(name, "RGB24") == 0)
return (GUID)MEDIASUBTYPE_RGB24;
else if(strcmp(name, "RGB32") == 0)
return (GUID)MEDIASUBTYPE_RGB32;
else if(strcmp(name, "ARGB32") == 0)
return (GUID)MEDIASUBTYPE_ARGB32;
else if(strcmp(name, "YV12") == 0)
return (GUID)MEDIASUBTYPE_YV12;
else if(strcmp(name, "IF09") == 0)
return (GUID)MEDIASUBTYPE_IF09;
else if(strcmp(name, "IYUV") == 0)
return (GUID)MEDIASUBTYPE_IYUV;
else
return (GUID)MEDIASUBTYPE_RGB24;
}