----------------------------------------
-- Microsoft DirectX Ada Binding Lib --
-- File : XAPO.ads --
-- Translator:Dongfeng.Gu,2018/11/06 --
-- Mail: [email protected] --
----------------------------------------
with win32; use win32;
with win32.rpcdce;
with win32.Winerror;
with win32.Objbase; use win32.Objbase;
with audiodefs; use audiodefs;
package XAPO is
subtype UINT32 is win32.UINT;
type LPLPWAVEFORMATEX is access all audiodefs.LPWAVEFORMATEX;
IID_IXAPO:constant win32.rpcdce.GUID:=(16#A90BC001#,16#E897#,16#E897#,(16#55#,16#E4#,16#9E#,16#47#,16#00#,16#00#,16#00#,16#00#));
IID_IXAPOParameters:constant win32.rpcdce.GUID:=(16#A90BC001#,16#E897#,16#E897#,(16#55#,16#E4#,16#9E#,16#47#,16#00#,16#00#,16#00#,16#01#));
FACILITY_XAPO : constant := 16#897#;
XAPO_E_FORMAT_UNSUPPORTED : constant HRESULT:= Winerror.MAKE_HRESULT(Winerror.SEVERITY_ERROR, FACILITY_XAPO, 16#01#); -- requested audio format unsupported;
XAPO_MIN_CHANNELS : constant := 1;
XAPO_MAX_CHANNELS : constant := 64;
XAPO_MIN_FRAMERATE : constant := 1000;
XAPO_MAX_FRAMERATE : constant := 200000;
XAPO_REGISTRATION_STRING_LENGTH : constant := 256;
XAPO_FLAG_CHANNELS_MUST_MATCH : constant := 16#00000001#;
XAPO_FLAG_FRAMERATE_MUST_MATCH : constant := 16#00000002#;
XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH : constant := 16#00000004#;
XAPO_FLAG_BUFFERCOUNT_MUST_MATCH : constant := 16#00000008#;
XAPO_FLAG_INPLACE_REQUIRED : constant := 16#00000020#;
XAPO_FLAG_INPLACE_SUPPORTED : constant := 16#00000010#;
type XAPO_REGISTRATION_PROPERTIES is record
clsid: Objbase.CLSID;
FriendlyName: WCHAR_Array(0..XAPO_REGISTRATION_STRING_LENGTH-1);
CopyrightInfo: WCHAR_Array(0..XAPO_REGISTRATION_STRING_LENGTH-1);
MajorVersion: UINT32;
MinorVersion: UINT32;
Flags: UINT32;
MinInputBufferCount: UINT32;
MaxInputBufferCount: UINT32;
MinOutputBufferCount: UINT32;
MaxOutputBufferCount: UINT32;
end record;
type LPXAPO_REGISTRATION_PROPERTIES is access all XAPO_REGISTRATION_PROPERTIES;
TYPE LPLPXAPO_REGISTRATION_PROPERTIES is access all LPXAPO_REGISTRATION_PROPERTIES;
type XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS is record
pFormat:LPCWAVEFORMATEX;
MaxFrameCount: UINT32;
end record;
type LPXAPO_LOCKFORPROCESS_PARAMETERS is access all XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS;
type LPCXAPO_LOCKFORPROCESS_PARAMETERS is access constant XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS;
type LPXAPO_LOCKFORPROCESS_BUFFER_PARAMETERS is access all XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS;
type LPCXAPO_LOCKFORPROCESS_BUFFER_PARAMETERS is access constant XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS;
type XAPO_BUFFER_FLAGS is (XAPO_BUFFER_SILENT,
XAPO_BUFFER_VALID);
type LPXAPO_BUFFER_FLAGS is access XAPO_BUFFER_FLAGS;
type XAPO_PROCESS_BUFFER_PARAMETERS is record
pBuffer:LPvoid;
BufferFlags: XAPO_BUFFER_FLAGS;
ValidFrameCount: UINT32;
end record;
type LPXAPO_PROCESS_BUFFER_PARAMETERS is access all XAPO_PROCESS_BUFFER_PARAMETERS;
type LPCXAPO_PROCESS_BUFFER_PARAMETERS is access constant XAPO_PROCESS_BUFFER_PARAMETERS;
-- FOR _XBOX
-- XAPO_ALLOC_ATTRIBUTES : constant := MAKE_XALLOC_ATTRIBUTES ( \
-- 0, /* ObjectType */ \
-- FALSE, /* HeapTracksAttributes */ \
-- FALSE, /* MustSucceed */ \
-- FALSE, /* FixedSize */ \
-- eXALLOCAllocatorId_XAUDIO2, /* AllocatorId */ \
-- XALLOC_ALIGNMENT_DEFAULT, /* Alignment */ \
-- XALLOC_MEMPROTECT_READWRITE, /* MemoryProtect */ \
-- FALSE, /* ZeroInitialize */ \
-- XALLOC_MEMTYPE_HEAP /* MemoryType */ \
-- );
-- #define XAPOAlloc(size) XMemAlloc(size, XAPO_ALLOC_ATTRIBUTES)
-- #define XAPOFree(p) XMemFree(p, XAPO_ALLOC_ATTRIBUTES)
-- FOR WINDOWS
function XAPOAlloc(size:DWORD) return LPVOID is (Objbase.CoTaskMemAlloc(size));
procedure XAPOFree(p:LPVOID);
type IXAPO;
type LPIXAPO is access all IXAPO;
type LPLPIXAPO is access all LPIXAPO;
subtype LPXAPO is LPIXAPO;
subtype LPLPXAPO is LPLPIXAPO;
type IXAPOParameters;
type LPIXAPOParameters is access all IXAPOParameters;
type LPLPIXAPOParameters is access all LPIXAPOParameters;
subtype LPXAPOParameters is LPIXAPOParameters;
subtype LPLPXAPOParameters is LPLPIXAPOParameters;
type IXAPO is record
QueryInterface:access function(THIS:LPIXAPO;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
AddRef:access function(THIS:LPIXAPO) return ULONG with Convention=>Stdcall;
Release:access function(THIS:LPIXAPO) return ULONG with Convention=>Stdcall;
GetRegistrationProperties:access function(THIS:LPIXAPO;ppRegistrationProperties:LPLPXAPO_REGISTRATION_PROPERTIES) return HRESULT with Convention=>Stdcall;
IsInputFormatSupported:access function(THIS:LPIXAPO;pOutputFormat:LPCWAVEFORMATEX;pRequestedInputFormat:LPCWAVEFORMATEX;ppSupportedInputFormat:LPLPWAVEFORMATEX) return HRESULT with Convention=>Stdcall;
IsOutputFormatSupported:access function(THIS:LPIXAPO;pInputFormat:LPCWAVEFORMATEX;pRequestedOutputFormat:LPCWAVEFORMATEX;ppSupportedOutputFormat:LPLPWAVEFORMATEX) return HRESULT with Convention=>Stdcall;
Initialize:access function(THIS:LPIXAPO;pData:LPCvoid;DataByteSize:UINT32) return HRESULT with Convention=>Stdcall;
Reset:access function(THIS:LPIXAPO) return void with Convention=>Stdcall;
LockForProcess:access function(THIS:LPIXAPO;InputLockedParameterCount:UINT32;pInputLockedParameters:LPCXAPO_LOCKFORPROCESS_BUFFER_PARAMETERS;OutputLockedParameterCount:UINT32;pOutputLockedParameters:LPCXAPO_LOCKFORPROCESS_BUFFER_PARAMETERS) return HRESULT with Convention=>Stdcall;
UnlockForProcess:access function(THIS:LPIXAPO) return void with Convention=>Stdcall;
Process:access function(THIS:LPIXAPO;InputProcessParameterCount:UINT32;pInputProcessParameters:LPCXAPO_PROCESS_BUFFER_PARAMETERS;OutputProcessParameterCount:UINT32;pOutputProcessParameters:LPXAPO_PROCESS_BUFFER_PARAMETERS;IsEnabled:BOOL) return void with Convention=>Stdcall;
CalcInputFrames:access function(THIS:LPIXAPO;OutputFrameCount:UINT32) return UINT32 with Convention=>Stdcall;
CalcOutputFrames:access function(THIS:LPIXAPO;InputFrameCount:UINT32) return UINT32 with Convention=>Stdcall;
end record;
type IXAPOParameters is record
QueryInterface:access function(THIS:LPIXAPOParameters;riid:REFIID;ppvObj:LPLPvoid) return HRESULT with Convention=>Stdcall;
AddRef:access function(THIS:LPIXAPOParameters) return ULONG with Convention=>Stdcall;
Release:access function(THIS:LPIXAPOParameters) return ULONG with Convention=>Stdcall;
SetParameters:access function(THIS:LPIXAPOParameters;pParameters:LPCvoid;ParameterByteSize:UINT32) return void with Convention=>Stdcall;
GetParameters:access function(THIS:LPIXAPOParameters;pParameters:LPvoid;ParameterByteSize:UINT32) return void with Convention=>Stdcall;
end record;
--
-- THE END.
--
end XAPO;
----------------------------------------
-- Microsoft DirectX Ada Binding Lib --
-- File : XAPO.adb --
-- Translator:Dongfeng.Gu,2018/11/06 --
-- Mail: [email protected] --
----------------------------------------
package body XAPO is
procedure XAPOFree(p:LPVOID) is
begin
Objbase.CoTaskMemFree(p);
end XAPOFree;
end XAPO;