jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
4.8KB

  1. #ifndef PA_ASIO_H
  2. #define PA_ASIO_H
  3. /*
  4. * $Id: pa_asio.h,v 1.1.2.2 2006/06/20 14:44:48 letz Exp $
  5. * PortAudio Portable Real-Time Audio Library
  6. * ASIO specific extensions
  7. *
  8. * Copyright (c) 1999-2000 Ross Bencina and Phil Burk
  9. *
  10. * Permission is hereby granted, free of charge, to any person obtaining
  11. * a copy of this software and associated documentation files
  12. * (the "Software"), to deal in the Software without restriction,
  13. * including without limitation the rights to use, copy, modify, merge,
  14. * publish, distribute, sublicense, and/or sell copies of the Software,
  15. * and to permit persons to whom the Software is furnished to do so,
  16. * subject to the following conditions:
  17. *
  18. * The above copyright notice and this permission notice shall be
  19. * included in all copies or substantial portions of the Software.
  20. *
  21. * Any person wishing to distribute modifications to the Software is
  22. * requested to send the modifications to the original developer so that
  23. * they can be incorporated into the canonical version.
  24. *
  25. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  26. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  27. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  28. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
  29. * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
  30. * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  31. * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  32. *
  33. */
  34. /** @file
  35. @brief ASIO-specific PortAudio API extension header file.
  36. */
  37. #include "portaudio.h"
  38. #ifdef __cplusplus
  39. extern "C"
  40. {
  41. #endif /* __cplusplus */
  42. /** Retrieve legal latency settings for the specificed device, in samples.
  43. @param device The global index of the device about which the query is being made.
  44. @param minLatency A pointer to the location which will recieve the minimum latency value.
  45. @param maxLatency A pointer to the location which will recieve the maximum latency value.
  46. @param preferredLatency A pointer to the location which will recieve the preferred latency value.
  47. @param granularity A pointer to the location which will recieve the granularity. This value
  48. determines which values between minLatency and maxLatency are available. ie the step size,
  49. if granularity is -1 then available latency settings are powers of two.
  50. @see ASIOGetBufferSize in the ASIO SDK.
  51. @todo This function should have a better name, any suggestions?
  52. */
  53. PaError PaAsio_GetAvailableLatencyValues( PaDeviceIndex device,
  54. long *minLatency, long *maxLatency, long *preferredLatency, long *granularity );
  55. /** Display the ASIO control panel for the specified device.
  56. @param device The global index of the device whose control panel is to be displayed.
  57. @param systemSpecific On Windows, the calling application's main window handle,
  58. on Macintosh this value should be zero.
  59. */
  60. PaError PaAsio_ShowControlPanel( PaDeviceIndex device, void* systemSpecific );
  61. /** Retrieve a pointer to a string containing the name of the specified
  62. input channel. The string is valid until Pa_Terminate is called.
  63. The string will be no longer than 32 characters including the null terminator.
  64. */
  65. PaError PaAsio_GetInputChannelName( PaDeviceIndex device, int channelIndex,
  66. const char** channelName );
  67. /** Retrieve a pointer to a string containing the name of the specified
  68. input channel. The string is valid until Pa_Terminate is called.
  69. The string will be no longer than 32 characters including the null terminator.
  70. */
  71. PaError PaAsio_GetOutputChannelName( PaDeviceIndex device, int channelIndex,
  72. const char** channelName );
  73. #define paAsioUseChannelSelectors (0x01)
  74. typedef struct PaAsioStreamInfo {
  75. unsigned long size; /**< sizeof(PaAsioStreamInfo) */
  76. PaHostApiTypeId hostApiType; /**< paASIO */
  77. unsigned long version; /**< 1 */
  78. unsigned long flags;
  79. /* Support for opening only specific channels of an ASIO device.
  80. If the paAsioUseChannelSelectors flag is set, channelSelectors is a
  81. pointer to an array of integers specifying the device channels to use.
  82. When used, the length of the channelSelectors array must match the
  83. corresponding channelCount parameter to Pa_OpenStream() otherwise a
  84. crash may result.
  85. The values in the selectors array must specify channels within the
  86. range of supported channels for the device or paInvalidChannelCount will
  87. result.
  88. */
  89. int *channelSelectors;
  90. }
  91. PaAsioStreamInfo;
  92. #ifdef __cplusplus
  93. }
  94. #endif /* __cplusplus */
  95. #endif /* PA_ASIO_H */