duplex test: 64 bit compatibility
[rtaudio-cdist.git] / tests / duplex.cpp
index 5e63cd7970c7f3e51c201bc7fdd68205468df901..43d12179bc9c028e0843bdff5c406d877ed5602f 100644 (file)
 
 #include "RtAudio.h"
 #include <iostream>
+#include <cstdlib>
+#include <cstring>
 
 /*
-typedef signed long  MY_TYPE;
-#define FORMAT RTAUDIO_SINT24
-
-typedef char  MY_TYPE;
+typedef char MY_TYPE;
 #define FORMAT RTAUDIO_SINT8
+*/
 
-typedef signed short  MY_TYPE;
+typedef signed short MY_TYPE;
 #define FORMAT RTAUDIO_SINT16
 
-typedef signed long  MY_TYPE;
+/*
+typedef S24 MY_TYPE;
+#define FORMAT RTAUDIO_SINT24
+
+typedef signed long MY_TYPE;
 #define FORMAT RTAUDIO_SINT32
 
-typedef float  MY_TYPE;
+typedef float MY_TYPE;
 #define FORMAT RTAUDIO_FLOAT32
-*/
 
-typedef double  MY_TYPE;
+typedef double MY_TYPE;
 #define FORMAT RTAUDIO_FLOAT64
+*/
 
 void usage( void ) {
   // Error function in case of incorrect command-line
@@ -44,19 +48,19 @@ void usage( void ) {
   exit( 0 );
 }
 
-int inout( void *outputBuffer, void *inputBuffer, unsigned int nBufferFrames,
-           double streamTime, RtAudioStreamStatus status, void *data )
+int inout( void *outputBuffer, void *inputBuffer, unsigned int /*nBufferFrames*/,
+           double /*streamTime*/, RtAudioStreamStatus status, void *data )
 {
   // Since the number of input and output channels is equal, we can do
   // a simple buffer copy operation here.
   if ( status ) std::cout << "Stream over/underflow detected." << std::endl;
 
-  unsigned long *bytes = (unsigned long *) data;
+  uint32_t *bytes = (uint32_t *) data;
   memcpy( outputBuffer, inputBuffer, *bytes );
   return 0;
 }
 
-int main(int argc, char *argv[])
+int main( int argc, char *argv[] )
 {
   unsigned int channels, fs, bufferBytes, oDevice = 0, iDevice = 0, iOffset = 0, oOffset = 0;
 
@@ -66,7 +70,7 @@ int main(int argc, char *argv[])
   RtAudio adac;
   if ( adac.getDeviceCount() < 1 ) {
     std::cout << "\nNo audio devices found!\n";
-    exit( 0 );
+    exit( 1 );
   }
 
   channels = (unsigned int) atoi(argv[1]);
@@ -93,15 +97,20 @@ int main(int argc, char *argv[])
   oParams.nChannels = channels;
   oParams.firstChannel = oOffset;
 
+  if ( iDevice == 0 )
+    iParams.deviceId = adac.getDefaultInputDevice();
+  if ( oDevice == 0 )
+    oParams.deviceId = adac.getDefaultOutputDevice();
+
   RtAudio::StreamOptions options;
   //options.flags |= RTAUDIO_NONINTERLEAVED;
 
   try {
     adac.openStream( &oParams, &iParams, FORMAT, fs, &bufferFrames, &inout, (void *)&bufferBytes, &options );
   }
-  catch ( RtError& e ) {
+  catch ( RtAudioError& e ) {
     std::cout << '\n' << e.getMessage() << '\n' << std::endl;
-    exit( 0 );
+    exit( 1 );
   }
 
   bufferBytes = bufferFrames * channels * sizeof( MY_TYPE );
@@ -119,7 +128,7 @@ int main(int argc, char *argv[])
     // Stop the stream.
     adac.stopStream();
   }
-  catch ( RtError& e ) {
+  catch ( RtAudioError& e ) {
     std::cout << '\n' << e.getMessage() << '\n' << std::endl;
     goto cleanup;
   }