Include every documented flag/enum/struct from XbDSoundTypes.h for automate verbose output

This commit is contained in:
RadWolfie 2019-02-07 23:04:48 -06:00
parent 2d7378daa4
commit 553883322c
5 changed files with 358 additions and 8 deletions

View File

@ -87,6 +87,15 @@ LOGRENDER(DSBUFFERDESC)
;
}
LOGRENDER(D3DVECTOR)
{
return os
LOGRENDER_MEMBER(x)
LOGRENDER_MEMBER(y)
LOGRENDER_MEMBER(z)
;
}
std::string DirectSoundErrorString(HRESULT hResult)
{
switch (hResult) {

View File

@ -42,6 +42,7 @@ ENUM2STR_HEADER(DS_RESULT)
LOGRENDER_HEADER(WAVEFORMATEX)
LOGRENDER_HEADER(DSBUFFERDESC)
LOGRENDER_HEADER(D3DVECTOR)
std::string DirectSoundErrorString(HRESULT hResult);

View File

@ -32,12 +32,273 @@
// *
// ******************************************************************
#include <dsound.h> // Temporary placeholder until XbDSoundTypes.h is cross-platform + filled in the blanks
#include "Logging.h"
#include "XbDSoundLogging.hpp"
// For XTL::DSBUFFERDESC and XTL::DSSTREAMDESC temporary usage
extern LOGRENDER_HEADER(WAVEFORMATEX)
extern LOGRENDER_HEADER(D3DVECTOR)
LOGRENDER(XTL::X_DSBUFFERDESC)
namespace XTL {
// DSound class usage
ENUM2STR_START(DSMIXBIN_SPEAKER)
ENUM2STR_CASE(XDSMIXBIN_FRONT_LEFT)
ENUM2STR_CASE(XDSMIXBIN_FRONT_RIGHT)
ENUM2STR_CASE(XDSMIXBIN_FRONT_CENTER)
ENUM2STR_CASE(XDSMIXBIN_LOW_FREQUENCY)
ENUM2STR_CASE(XDSMIXBIN_BACK_LEFT)
ENUM2STR_CASE(XDSMIXBIN_BACK_RIGHT)
//ENUM2STR_CASE(XDSMIXBIN_SPEAKERS_MAX) // NOTE: Only used as a counter.
ENUM2STR_END_and_LOGRENDER(DSMIXBIN_SPEAKER)
FLAGS2STR_START(DSSPEAKER_FLAG)
FLAG2STR(X_DSSPEAKER_STEREO)
FLAG2STR(X_DSSPEAKER_MONO)
FLAG2STR(X_DSSPEAKER_SURROUND)
FLAG2STR(X_DSSPEAKER_ENABLE_AC3)
FLAG2STR(X_DSSPEAKER_ENABLE_DTS)
FLAGS2STR_END_and_LOGRENDER(DSSPEAKER_FLAG)
// DSound generic flag/enum
ENUM2STR_START(DSFILTER_MODE)
ENUM2STR_CASE(DSFILTER_MODE_BYPASS)
ENUM2STR_CASE(DSFILTER_MODE_DLS2)
ENUM2STR_CASE(DSFILTER_MODE_PARAMEQ)
ENUM2STR_CASE(DSFILTER_MODE_MULTI)
ENUM2STR_END_and_LOGRENDER(DSFILTER_MODE)
// DSound Buffer flag/enum
FLAGS2STR_START(DSBPAUSE_FLAG)
FLAG2STR(X_DSBPAUSE_RESUME)
FLAG2STR(X_DSBPAUSE_PAUSE)
FLAG2STR(X_DSBPAUSE_SYNCHPLAYBACK)
FLAGS2STR_END_and_LOGRENDER(DSBPAUSE_FLAG)
FLAGS2STR_START(DSBPLAY_FLAG)
FLAG2STR(X_DSBPLAY_LOOPING)
FLAG2STR(X_DSBPLAY_FROMSTART)
FLAG2STR(X_DSBPLAY_SYNCHPLAYBACK)
FLAGS2STR_END_and_LOGRENDER(DSBPLAY_FLAG)
FLAGS2STR_START(DSBSTATUS_FLAG)
FLAG2STR(X_DSBSTATUS_PLAYING)
FLAG2STR(X_DSBSTATUS_PAUSED)
FLAG2STR(X_DSBSTATUS_LOOPING)
FLAGS2STR_END_and_LOGRENDER(DSBSTATUS_FLAG)
FLAGS2STR_START(DSBSTOPEX_FLAG)
FLAG2STR(X_DSBSTOPEX_IMMEDIATE)
FLAG2STR(X_DSBSTOPEX_ENVELOPE)
FLAG2STR(X_DSBSTOPEX_RELEASEWAVEFORM)
//FLAG2STR(X_DSBSTOPEX_ALL) // NOTE: Only a combine of envelope and releasewaveform flags together.
FLAGS2STR_END_and_LOGRENDER(DSBSTOPEX_FLAG)
// DSound Stream flag/enum
FLAGS2STR_START(DSSFLUSHEX_FLAG)
FLAG2STR(X_DSSFLUSHEX_IMMEDIATE)
FLAG2STR(X_DSSFLUSHEX_ASYNC)
FLAG2STR(X_DSSFLUSHEX_ENVELOPE)
FLAG2STR(X_DSSFLUSHEX_ENVELOPE2)
FLAGS2STR_END_and_LOGRENDER(DSSFLUSHEX_FLAG)
FLAGS2STR_START(DSSPAUSE_FLAG)
FLAG2STR(X_DSSPAUSE_RESUME)
FLAG2STR(X_DSSPAUSE_PAUSE)
FLAG2STR(X_DSSPAUSE_SYNCHPLAYBACK)
FLAG2STR(X_DSSPAUSE_PAUSENOACTIVATE)
FLAGS2STR_END_and_LOGRENDER(DSSPAUSE_FLAG)
FLAGS2STR_START(DSSSTATUS_FLAG)
FLAG2STR(X_DSSSTATUS_READY)
FLAG2STR(X_DSSSTATUS_PLAYING)
FLAG2STR(X_DSSSTATUS_PAUSED)
FLAG2STR(X_DSSSTATUS_STARVED)
FLAG2STR(X_DSSSTATUS_ENVELOPECOMPLETE)
FLAGS2STR_END_and_LOGRENDER(DSSSTATUS_FLAG)
// DSound XMedia flag/enum
ENUM2STR_START(XMP_STATUS)
ENUM2STR_CASE(XMP_STATUS_SUCCESS)
ENUM2STR_CASE(XMP_STATUS_PENDING)
ENUM2STR_CASE(XMP_STATUS_FLUSHED)
ENUM2STR_CASE(XMP_STATUS_FAILURE)
ENUM2STR_CASE(XMP_STATUS_RELEASE_CXBXR) // NOTE: Custom status for Cxbx-Reloaded.
ENUM2STR_END_and_LOGRENDER(XMP_STATUS)
FLAGS2STR_START(XMO_STREAMF)
FLAG2STR(XMO_STREAMF_FIXED_SAMPLE_SIZE)
FLAG2STR(XMO_STREAMF_FIXED_PACKET_ALIGNMENT)
FLAG2STR(XMO_STREAMF_INPUT_ASYNC)
FLAG2STR(XMO_STREAMF_OUTPUT_ASYNC)
FLAG2STR(XMO_STREAMF_IN_PLACE)
FLAG2STR(XMO_STREAMF_MASK)
FLAGS2STR_END_and_LOGRENDER(XMO_STREAMF)
// DSound class usage
LOGRENDER(X_DSCAPS)
{
return os
LOGRENDER_MEMBER(dwFree2DBuffers)
LOGRENDER_MEMBER(dwFree3DBuffers)
LOGRENDER_MEMBER(dwFreeBufferSGEs)
LOGRENDER_MEMBER(dwMemoryAllocated)
;
}
LOGRENDER(X_DSI3DL2LISTENER)
{
return os
LOGRENDER_MEMBER(lRoom)
LOGRENDER_MEMBER(lRoomHF)
LOGRENDER_MEMBER(flRoomRolloffFactor)
LOGRENDER_MEMBER(flDecayTime)
LOGRENDER_MEMBER(flDecayHFRatio)
LOGRENDER_MEMBER(lReflections)
LOGRENDER_MEMBER(flReflectionsDelay)
LOGRENDER_MEMBER(lReverb)
LOGRENDER_MEMBER(flReverbDelay)
LOGRENDER_MEMBER(flDiffusion)
LOGRENDER_MEMBER(flDensity)
LOGRENDER_MEMBER(flHFReference)
;
}
LOGRENDER(X_DSMIXBINS)
{
return os
LOGRENDER_MEMBER(dwCount)
// TODO: Need to make a loop somehow for complete output base on dwCount variable.
LOGRENDER_MEMBER_TYPE(X_LPDSMIXBINSVOLUMEPAIR, lpMixBinVolumePairs)
;
}
LOGRENDER(X_DSMIXBINSVOLUMEPAIR)
{
return os
LOGRENDER_MEMBER(dwMixBin)
LOGRENDER_MEMBER(lVolume)
;
}
LOGRENDER(X_DSOUTPUTLEVELS)
{
return os
LOGRENDER_MEMBER(dwAnalogLeftTotalPeak)
LOGRENDER_MEMBER(dwAnalogRightTotalPeak)
LOGRENDER_MEMBER(dwAnalogLeftTotalRMS)
LOGRENDER_MEMBER(dwAnalogRightTotalRMS)
LOGRENDER_MEMBER(dwDigitalFrontLeftPeak)
LOGRENDER_MEMBER(dwDigitalFrontCenterPeak)
LOGRENDER_MEMBER(dwDigitalFrontRightPeak)
LOGRENDER_MEMBER(dwDigitalBackLeftPeak)
LOGRENDER_MEMBER(dwDigitalBackRightPeak)
LOGRENDER_MEMBER(dwDigitalLowFrequencyPeak)
LOGRENDER_MEMBER(dwDigitalFrontLeftRMS)
LOGRENDER_MEMBER(dwDigitalFrontCenterRMS)
LOGRENDER_MEMBER(dwDigitalFrontRightRMS)
LOGRENDER_MEMBER(dwDigitalBackLeftRMS)
LOGRENDER_MEMBER(dwDigitalBackRightRMS)
LOGRENDER_MEMBER(dwDigitalLowFrequencyRMS)
;
}
// DSound generic class usage
LOGRENDER(X_DS3DBUFFER)
{
return os
LOGRENDER_MEMBER(dwSize)
LOGRENDER_MEMBER_TYPE(D3DVECTOR, vPosition)
LOGRENDER_MEMBER_TYPE(D3DVECTOR, vVelocity)
LOGRENDER_MEMBER(dwInsideConeAngle)
LOGRENDER_MEMBER(dwOutsideConeAngle)
LOGRENDER_MEMBER_TYPE(D3DVECTOR, vConeOrientation)
LOGRENDER_MEMBER(lConeOutsideVolume)
LOGRENDER_MEMBER(flMinDistance)
LOGRENDER_MEMBER(flMaxDistance)
LOGRENDER_MEMBER(dwMode)
LOGRENDER_MEMBER(flDistanceFactor)
LOGRENDER_MEMBER(flRolloffFactor)
LOGRENDER_MEMBER(flDopplerFactor)
;
}
LOGRENDER(X_DSENVOLOPEDESC)
{
return os
LOGRENDER_MEMBER(dwEnvelopGenerator)
LOGRENDER_MEMBER(dwMode)
LOGRENDER_MEMBER(dwDelay)
LOGRENDER_MEMBER(dwAttack)
LOGRENDER_MEMBER(dwHold)
LOGRENDER_MEMBER(dwDecay)
LOGRENDER_MEMBER(dwRelease)
LOGRENDER_MEMBER(dwSustain)
LOGRENDER_MEMBER(lPitchScale)
LOGRENDER_MEMBER(lFilterCutOff)
;
}
LOGRENDER(X_DSFILTERDESC)
{
return os
LOGRENDER_MEMBER_TYPE(DSFILTER_MODE, dwMode)
LOGRENDER_MEMBER(dwQCoefficient)
LOGRENDER_MEMBER(adwCoefficients)
;
}
LOGRENDER(X_DSI3DL2BUFFER)
{
return os
LOGRENDER_MEMBER(lDirect)
LOGRENDER_MEMBER(lDirectHF)
LOGRENDER_MEMBER(lRoom)
LOGRENDER_MEMBER(lRoomHF)
LOGRENDER_MEMBER(flRoomRolloffFactor)
LOGRENDER_MEMBER_TYPE(X_DSI3DL2OBSTRUCTION, Obstruction)
LOGRENDER_MEMBER_TYPE(X_DSI3DL2OCCLUSION, Occlusion)
;
}
LOGRENDER(X_DSI3DL2OBSTRUCTION)
{
return os
LOGRENDER_MEMBER(lHFLevel)
LOGRENDER_MEMBER(flLFRatio)
;
}
LOGRENDER(X_DSI3DL2OCCLUSION)
{
return os
LOGRENDER_MEMBER(lHFLevel)
LOGRENDER_MEMBER(flLFRatio)
;
}
LOGRENDER(DSLFODESC)
{
return os
LOGRENDER_MEMBER(dwLFO)
LOGRENDER_MEMBER(dwDelay)
LOGRENDER_MEMBER(dwDelta)
LOGRENDER_MEMBER(lPitchModulation)
LOGRENDER_MEMBER(lFilterCutOffRange)
LOGRENDER_MEMBER(lAmplitudeModulation)
;
}
LOGRENDER(XBOXADPCMWAVEFORMAT)
{
return os
LOGRENDER_MEMBER_TYPE(WAVEFORMATEX, wfx)
LOGRENDER_MEMBER(wSamplesPerBlock)
;
}
// DSound Buffer class usage
LOGRENDER(X_DSBUFFERDESC)
{
return os
LOGRENDER_MEMBER(dwSize)
@ -49,7 +310,8 @@ LOGRENDER(XTL::X_DSBUFFERDESC)
;
}
LOGRENDER(XTL::X_DSSTREAMDESC)
// DSound Stream class usage
LOGRENDER(X_DSSTREAMDESC)
{
return os
LOGRENDER_MEMBER(dwFlags)
@ -60,3 +322,30 @@ LOGRENDER(XTL::X_DSSTREAMDESC)
LOGRENDER_MEMBER(lpMixBins)
;
}
// DSound XMedia class usage
LOGRENDER(XMEDIAINFO)
{
return os
LOGRENDER_MEMBER(dwFlags)
LOGRENDER_MEMBER(dwInputSize)
LOGRENDER_MEMBER(dwOutputSize)
LOGRENDER_MEMBER(dwMaxLookahead)
;
}
LOGRENDER(XMEDIAPACKET)
{
return os
LOGRENDER_MEMBER(pvBuffer)
LOGRENDER_MEMBER(dwMaxSize)
LOGRENDER_MEMBER(pdwCompletedSize)
LOGRENDER_MEMBER_TYPE(XMO_STREAMF*, pdwStatus)
// NOTE: hCompletionEvent and pContext are a union.
//LOGRENDER_MEMBER(hCompletionEvent)
//LOGRENDER_MEMBER(pContext)
LOGRENDER_MEMBER(prtTimestamp)
;
}
}

View File

@ -37,9 +37,60 @@
#include "Logging.h"
namespace XTL {
#include "XbDSoundTypes.h"
// DSound flag/enum
enum DSMIXBIN_SPEAKER;
enum DSSPEAKER_FLAG;
// DSound generic flag/enum
enum DSFILTER_MODE;
// DSound Buffer flag/enum
enum DSBPAUSE_FLAG;
enum DSBPLAY_FLAG;
enum DSBSTATUS_FLAG;
enum DSBSTOPEX_FLAG;
// DSound Stream flag/enum
enum DSSFLUSHEX_FLAG;
enum DSSPAUSE_FLAG;
enum DSSSTATUS_FLAG;
// DSound XMedia flag/enum
enum XMP_STATUS;
enum XMO_STREAMF;
// DSound flag/enum
FLAGS2STR_HEADER(DSSPEAKER_FLAG)
// DSound generic flag/enum
ENUM2STR_HEADER(DSFILTER_MODE)
// DSound Buffer flag/enum
FLAGS2STR_HEADER(DSBPAUSE_FLAG)
FLAGS2STR_HEADER(DSBPLAY_FLAG)
FLAGS2STR_HEADER(DSBSTATUS_FLAG)
FLAGS2STR_HEADER(DSBSTOPEX_FLAG)
// DSound Stream flag/enum
FLAGS2STR_HEADER(DSSFLUSHEX_FLAG)
FLAGS2STR_HEADER(DSSPAUSE_FLAG)
FLAGS2STR_HEADER(DSSSTATUS_FLAG)
// DSound class usage
LOGRENDER_HEADER(X_DSCAPS)
LOGRENDER_HEADER(X_DSI3DL2LISTENER)
LOGRENDER_HEADER(X_DSMIXBINS)
LOGRENDER_HEADER(X_DSMIXBINSVOLUMEPAIR)
LOGRENDER_HEADER(X_DSOUTPUTLEVELS)
// DSound generic class usage
LOGRENDER_HEADER(X_DS3DBUFFER)
LOGRENDER_HEADER(X_DSENVOLOPEDESC)
LOGRENDER_HEADER(X_DSFILTERDESC)
LOGRENDER_HEADER(X_DSI3DL2BUFFER)
LOGRENDER_HEADER(X_DSI3DL2OBSTRUCTION)
LOGRENDER_HEADER(X_DSI3DL2OCCLUSION)
LOGRENDER_HEADER(DSLFODESC)
LOGRENDER_HEADER(XBOXADPCMWAVEFORMAT)
// DSound Buffer class usage
LOGRENDER_HEADER(X_DSBUFFERDESC)
// DSound Stream class usage
LOGRENDER_HEADER(X_DSSTREAMDESC)
// DSound XMedia class usage
LOGRENDER_HEADER(XMEDIAINFO)
LOGRENDER_HEADER(XMEDIAPACKET)
}
LOGRENDER_HEADER(XTL::X_DSSTREAMDESC)
LOGRENDER_HEADER(XTL::X_DSBUFFERDESC)
#endif

View File

@ -162,7 +162,7 @@ typedef struct _XMEDIAINFO
DWORD dwInputSize;
DWORD dwOutputSize;
DWORD dwMaxLookahead;
}
}
XMEDIAINFO, *PXEIDIAINFO, *LPXMEDIAINFO;
// XMEDIAINFO Flags