Ada计算机图形DirectX之XAPO

----------------------------------------
-- 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;

猜你喜欢

转载自blog.csdn.net/adacore/article/details/83780434