示例#1
0
bool
EMInputRepository	::	SetAsActiveMIDIInput(int32 p_vInputID, int32 p_vOutputID)
{
	LockContainer();
	try
	{
		Rewind();
		while(Current() != NULL)
		{
			EMRealtimeInputDescriptor* opInput = Current();
			if((opInput -> GetType() & EM_TYPE_MIDI) > 0)
			{
				EMRealtimeMIDIInputDescriptor* opMIDIInput =
					 static_cast<EMRealtimeMIDIInputDescriptor*>(opInput);

				if(opMIDIInput -> GetID() == p_vInputID)
					opMIDIInput -> SetActive(true, p_vOutputID);
				else
					opMIDIInput -> SetActive(false, 0);
			}
			Next();
		}
	}
	catch(...)
	{
		EMDebugger("ERROR! Exception while setting active MIDI track!");
	}
	UnlockContainer();
	return true;
}
bool EMMediaTransitionTrackRepository::SaveData(EMProjectDataSaver* p_opSaver)
{
	p_opSaver -> SaveString("EMMediaTransitionTrackRepository - Begin");
	
	LockContainer();
	uint32 vCount = 0;
	Rewind();
	while(Current() != NULL)
	{
		if(! Current() -> IsObjectDeleted())
			vCount++;
		Next();
	}
	p_opSaver -> SaveUInt32(vCount);

	Rewind();
	while(Current() != NULL)
	{
		if(! Current() -> IsObjectDeleted())
			Current() -> SaveData(p_opSaver);
		Next();
	}
	UnlockContainer();

	p_opSaver -> SaveString("EMMediaTransitionTrackRepository - End");

	return true;
}
示例#3
0
int64 EMMediaClipRepository::CountClipsForTrack(const EMMediaTrack* p_opTrack, EMMediaType p_eSpecType)
{
	int64 vCount = 0;
	LockContainer();
	try
	{
		Rewind();
		while(Current() != NULL)
		{
			if(Current() -> GetTrack() -> GetID() == p_opTrack -> GetID() &&
				! Current() -> IsObjectDeleted() && (p_eSpecType & Current() -> GetType()) != 0)
				vCount++;

			if(Current() -> GetTrack() == NULL)
				EMDebugger("ERROR! NULL as track owner!");
			Next();
		}
	}
	catch(...)
	{
		EMDebugger("ERROR! Exception in EMMediaClipRepository::CountClipsForTrack");
	}
	UnlockContainer();
	return vCount;
}
示例#4
0
void EMPluginRepository::ResetEntries()
{
	LockContainer();
	Rewind();
	while(Current() != NULL)
	{
		Current() -> Reset();
		Next();
	}
	UnlockContainer();
}
bool EMMediaTransitionTrackRepository::RestoreAfterLoad()
{
	LockContainer();
	Rewind();
	while(Current() != NULL)
	{
		Current() -> RestoreAfterLoad();
		Next();
	}
	UnlockContainer();	

	return true;
}
// ---
HRESULT CPragueIServer::LoadInterfaceTree( CNodeUID &rcUID, BOOL bLockOnLoad, ItType eIType, DWORD *pdwSize, BYTE **ppInterface) {
	HRESULT hError = E_INVALIDARG;

	if ( pdwSize && ppInterface ) {
		HDATA hRootData = NULL;
		for( uint i=0,c=m_iface_cache.Count(); !hRootData && i<c; ++i ) {
			HDATA curr = m_iface_cache[i];
			CNodeUID rcCurrUID;
			if ( ::GetNodeUID(curr, rcCurrUID) && ::CompareNodesUID(rcUID, rcCurrUID) )
				hRootData = curr;
		}

		if ( hRootData ) 
			hError = S_OK;
		else {
			CAliasContainer rcAliases;

			rcAliases.Add( rcUID );
			hError = PISRV_E_INTNOTFOUND;
			for (int i=0; i<3 && hError == PISRV_E_INTNOTFOUND; i++)
			{
				CPathStr rcStartingFolder = *m_StartingFolders[i/*FOLDER_INDEX(eIType)*/];

				hError = EnumFoldersForInterfacesAliases( rcStartingFolder, eIType, &hRootData, rcAliases );

				if ( FAILED(hError) )
					m_rcLastErrorStr = rcUID;
				else if ( !hRootData ) {
					m_rcLastErrorStr = rcUID;
					hError = PISRV_E_INTNOTFOUND;
				}
				else
					m_iface_cache.Add( hRootData );
			}
		}

		if ( SUCCEEDED(hError) && hRootData ) {
			CAPointer<TCHAR> pContainerName;
			HPROP hNameProp = ::DATA_Find_Prop( hRootData, NULL, VE_PID_IF_CONTAINERNAME );
			if ( hNameProp ) 
				pContainerName = ::DTUT_GetPropValueAsString( hNameProp, NULL );
			hError = LockContainer( (BYTE *)(LPCTSTR(pContainerName)), bLockOnLoad );
		}

		if ( SUCCEEDED(hError) ) 
			*ppInterface = (BYTE *)::SerializeDTree( hRootData, *pdwSize );

	}

	return hError;
}
示例#7
0
bool
EMInputRepository	::	LoadData(EMProjectDataLoader* p_opLoader)
{
	LockContainer();
	try
	{
		Rewind();
		while(Current() != NULL)
		{
			Current() -> LoadData(p_opLoader);
			Next();
		}
	}
	catch(...)
	{
	}
	UnlockContainer();
	return true;
}
示例#8
0
bool EMMediaClipRepository::ClearData()
{
	LockContainer();
	try
	{
		while(Size() > 0)
		{
			Rewind();
			EMMediaClip* opClip = Remove(Current());
			delete opClip;
		}
	}
	catch(...)
	{
		EMDebugger("ERROR! Exception in EMMediaClipRepository::ClearData()");
	}
	UnlockContainer();
	return true;
}
示例#9
0
bool
EMInputRepository	::	StopPreviewE()
{
	LockContainer();
	try
	{
		Rewind();
		while(Current() != NULL)
		{
			Current() -> StopPreviewE();
			Next();
		}
	}
	catch(...)
	{
	}
	UnlockContainer();
	return true;
}
示例#10
0
// ---
HRESULT CPragueIServer::LoadContainerInterfacesTree(LPCTSTR pContainerName, BOOL bLockOnLoad, ItType eIType, DWORD *pdwSize, BYTE **ppInterfaces) {
	HRESULT hError = E_INVALIDARG;

	if ( pdwSize && ppInterfaces ) {
		HDATA hRootData = NULL;

		hError = LoadContainerInterfacesTree(pContainerName, bLockOnLoad, eIType, &hRootData );

		if ( SUCCEEDED(hError) )
			hError = LockContainer( (BYTE *)pContainerName, bLockOnLoad );

		if ( SUCCEEDED(hError) )
			*ppInterfaces = (BYTE *)::SerializeDTree( hRootData, *pdwSize );

		::DATA_Remove( hRootData, NULL );
	}

	return hError;
}
示例#11
0
bool
EMInputRepository	::	ClearData()
{
	m_vIsInitialized = false;
	LockContainer();
	try
	{
		Rewind();
		while(Current() != NULL)
		{
			Current() -> ClearData();
			Next();
		}
	}
	catch(...)
	{
	}
	UnlockContainer();
	return true;
}
示例#12
0
bool
EMInputRepository	::	StartE()
{
	LockContainer();
	try
	{
		Rewind();
		while(Current() != NULL)
		{
			Current() -> PrepareToPlayE();
			Current() -> StartE();
			Next();
		}
	}
	catch(...)
	{
	}
	UnlockContainer();
	return true;
}
示例#13
0
int64 EMMediaClipRepository::CountActiveClips()
{
	int64 vCount = 0;
	LockContainer();
	try
	{
		Rewind();
		while(Current() != NULL)
		{
			if(! Current() -> IsObjectDeleted())
				vCount++;
			Next();
		}
	}
	catch(...)
	{
		EMDebugger("ERROR! Exception in EMMediaClipRepository::CountActiveClips");
	}
	UnlockContainer();
	return vCount;
}
示例#14
0
list<EMRecording*>*
EMInputRepository	::	GetLastRecordings()
{
	m_oRecordings.clear();
	LockContainer();
	try
	{
		Rewind();
		while(Current() != NULL)
		{
	//		Current() -> StopE();
			if(Current() -> GetLastRecording() != NULL)
				m_oRecordings.push_back(Current() -> GetLastRecording());
			Next();
		}
	}
	catch(...)
	{
	}
	UnlockContainer();
	return &m_oRecordings;
}
示例#15
0
int32
EMInputRepository	::	FindName(string p_oName)
{
	LockContainer();
	try
	{
		Rewind();
		while(Current() != NULL)
		{
			if(Current() -> GetName() == p_oName)
			{
				int32 vID = Current() -> GetID();
				UnlockContainer();
				return vID;
			}
			Next();
		}
	}
	catch(...)
	{
	}
	UnlockContainer();
	return -1;
}
void EMRecordingMIDITrackRepository::AddTrack(EMMediaMIDITrack* p_opTrack)
{
    LockContainer();
    Add(p_opTrack);
    UnlockContainer();
}
void EMRecordingMIDITrackRepository::RemoveTrack(EMMediaMIDITrack* p_opTrack)
{
    LockContainer();
    Remove(p_opTrack);
    UnlockContainer();
}
示例#18
0
bool
EMInputRepository	::	InitCheckE()
{
	float vAudioFrameRate = 0;
	int64 vAudioBufferSize = 0;
	int64 vNum = 0;
	list<EMRealtimeInputDescriptor*>* list1 = NULL;
	list<EMRealtimeInputDescriptor*>* list2 = NULL;
	list<EMRealtimeInputDescriptor*>* list3 = NULL;

	if(! m_vIsInitialized)
	{
		LockContainer();
		vAudioFrameRate = (float) *(static_cast<int32*>(EMMediaEngine::Instance() -> GetSettingsRepository() -> GetSetting(SETTING_AUDIO_FRAMERATE)));
		vAudioBufferSize = (int64) *(static_cast<int32*>(EMMediaEngine::Instance() -> GetSettingsRepository() -> GetSetting(SETTING_AUDIO_BUFFER_SIZE)));
		vNum = static_cast<int64>(EM_AUDIO_READAHEAD * ((vAudioFrameRate) / (vAudioBufferSize / (EM_AUDIO_NUM_CHANNELS * EM_AUDIO_SAMPLESIZE))));
#ifdef PLATFORM_BEOS
		((EMBeBufferRepository*) EMBufferRepository::Instance()) -> InitializeAudioE(vAudioBufferSize, vNum); //Deleted by MediaEngine
#endif

		try
		{
			list1 = EMMediaSystemInspector::GetInstance() -> GetRealtimeAudioInputs();
			while(list1 -> size() > 0)
			{
				this -> Add(list1 -> front());
				list1 -> pop_front();
			}
			delete list1;
		}
		catch(...)
		{
//			MessageBox(NULL, "Unknown error while incorporating audio input devices.\nAttempting to continue anyway...", "Error!", MB_OK | MB_ICONWARNING);
			delete list1;
		}

		try
		{
			list2 = EMMediaSystemInspector::GetInstance() -> GetRealtimeVideoInputs();
			while(list2 -> size() > 0)
			{
				this -> Add(list2 -> front());
				list2 -> pop_front();
			}
			delete list2;
		}
		catch(...)
		{
//			MessageBox(NULL, "Unknown error while incorporating video input devices.\nAttempting to continue anyway...", "Error!", MB_OK | MB_ICONWARNING);
			delete list2;
		}

		try
		{
			list3 = EMMediaSystemInspector::GetInstance() -> GetRealtimeMIDIInputs();
			while(list3 -> size() > 0)
			{
				this -> Add(list3 -> front());
				list3 -> pop_front();
			}
			delete list3;
		}
		catch(...)
		{
//			MessageBox(NULL, "Unknown error while incorporating MIDI input devices.\nAttempting to continue anyway...", "Error!", MB_OK | MB_ICONWARNING);
			delete list3;
		}

		m_vIsInitialized = true;
		UnlockContainer();
	}
	return true;
}