Пример #1
0
/*
===============
idAudioHardwareWIN32::InitializeSpeakers
===============
*/
bool idAudioHardwareWIN32::InitializeSpeakers( byte *speakerData, int bufferSize, dword dwPrimaryFreq, dword dwPrimaryBitRate, dword dwSpeakers )
{
    if ( dwSpeakers == 2 )
    {
        WAVEFORMATEXTENSIBLE wfx;
        ZeroMemory( &wfx, sizeof(WAVEFORMATEXTENSIBLE) );
        wfx.Format.wFormatTag      = WAVE_FORMAT_PCM;
        wfx.Format.nChannels       = 2;
        wfx.Format.nSamplesPerSec  = dwPrimaryFreq;
        wfx.Format.wBitsPerSample  = dwPrimaryBitRate;
        wfx.Format.nBlockAlign     = wfx.Format.wBitsPerSample / 8 * wfx.Format.nChannels;
        wfx.Format.nAvgBytesPerSec = wfx.Format.nSamplesPerSec * wfx.Format.nBlockAlign;
        wfx.Format.cbSize = sizeof(WAVEFORMATEX);

        CreateFromMemory( &speakers, speakerData, bufferSize, (waveformatextensible_t *)&wfx );

        common->Printf("sound: STEREO\n");
    }
    else
    {
        WAVEFORMATEXTENSIBLE 	waveFormatPCMEx;
        ZeroMemory( &waveFormatPCMEx, sizeof(WAVEFORMATEXTENSIBLE) );

        waveFormatPCMEx.Format.wFormatTag = WAVE_FORMAT_EXTENSIBLE;
        waveFormatPCMEx.Format.nChannels = 6;
        waveFormatPCMEx.Format.nSamplesPerSec = dwPrimaryFreq;
        waveFormatPCMEx.Format.wBitsPerSample  = dwPrimaryBitRate;
        waveFormatPCMEx.Format.nBlockAlign = waveFormatPCMEx.Format.wBitsPerSample / 8 * waveFormatPCMEx.Format.nChannels;
        waveFormatPCMEx.Format.nAvgBytesPerSec = waveFormatPCMEx.Format.nSamplesPerSec * waveFormatPCMEx.Format.nBlockAlign;
        waveFormatPCMEx.dwChannelMask = KSAUDIO_SPEAKER_5POINT1;
        // SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |
        // SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY |
        // SPEAKER_BACK_LEFT  | SPEAKER_BACK_RIGHT
        waveFormatPCMEx.SubFormat =  KSDATAFORMAT_SUBTYPE_PCM;  // Specify PCM
        waveFormatPCMEx.Format.cbSize = sizeof(WAVEFORMATEXTENSIBLE);
        waveFormatPCMEx.Samples.wValidBitsPerSample = 16;

        CreateFromMemory( &speakers, speakerData, bufferSize, (waveformatextensible_t *)&waveFormatPCMEx );

        common->Printf("sound: MULTICHANNEL\n");
    }

    if (!speakers)
    {
        return false;
    }

    speakers->Play(0,DSBPLAY_LOOPING);

    return true;
}
Пример #2
0
	UINT ShaderGL::CreateFromFile(std::string filename)
	{
		if (Archive::ToBuffer(filename.c_str(), mSource) == 0)
		{
			Debug::ShowError(
				STREAM("Could not open '" << filename << "'"),
				STREAM("Shader Loader Error"));

			return S_FALSE;
		}

		Debug::Log(STREAM("Compiling '" << filename << "'..."));

		return CreateFromMemory(mSource);
	}
Пример #3
0
//--------------------------------------------------------------------------------------
HRESULT SDKMesh::CreateFromFile( LPCWSTR szFileName,
								bool bCreateAdjacencyIndices)
{
	HRESULT hr = S_OK;

	// Open the file
	m_hFile = CreateFile( szFileName, FILE_READ_DATA, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN,
		NULL );
	if( INVALID_HANDLE_VALUE == m_hFile )
		return E_FAIL;

	// Get the file size
	LARGE_INTEGER FileSize;
	GetFileSizeEx( m_hFile, &FileSize );
	UINT cBytes = FileSize.LowPart;

	// Allocate memory
	m_pStaticMeshData = new BYTE[ cBytes ];
	if( !m_pStaticMeshData )
	{
		CloseHandle( m_hFile );
		return E_OUTOFMEMORY;
	}

	// Read in the file
	DWORD dwBytesRead;
	if( !ReadFile( m_hFile, m_pStaticMeshData, cBytes, &dwBytesRead, NULL ) )
		hr = E_FAIL;

	CloseHandle( m_hFile );

	if( SUCCEEDED( hr ) )
	{
		hr = CreateFromMemory( m_pStaticMeshData,
			cBytes,
			bCreateAdjacencyIndices,
			false);
		if( FAILED( hr ) )
			delete []m_pStaticMeshData;
	}

	return hr;
}
Пример #4
0
//--------------------------------------------------------------------------------------
HRESULT SDKMesh::Create( BYTE* pData, UINT DataBytes, bool bCreateAdjacencyIndices,
						bool bCopyStatic)
{
	return CreateFromMemory( pData, DataBytes, bCreateAdjacencyIndices, bCopyStatic );
}
Пример #5
0
OggAudio* OggAudio::CreateFromFile(const FileIdRef& fileId)
{
    MemoryData data = FileSystem::Instance().ReadAllData(fileId);
    return CreateFromMemory(fileId, data);
}
Пример #6
0
HRESULT CDXUTSDKMesh::Create(ID3D11Device* pDev11, PBYTE pMesh, ULONG MeshSize, bool bCreateAdjacencyIndices)
{
    return CreateFromMemory(pDev11, pMesh, MeshSize, bCreateAdjacencyIndices, true);
}