rtp_player.c will now compile with the new API, although it will not
authorjmayer <jmayer@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 5 Sep 2006 09:17:55 +0000 (09:17 +0000)
committerjmayer <jmayer@f5534014-38df-0310-8fa8-9805f1628bb7>
Tue, 5 Sep 2006 09:17:55 +0000 (09:17 +0000)
actually do something useful except to print that the new API is not
supported.

Adapt acinclude.m4 to provide PORTAUDIO_API_1 and add back the
check_message to indicate *why* we are checking for the type.

git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@19148 f5534014-38df-0310-8fa8-9805f1628bb7

acinclude.m4
gtk/rtp_player.c

index 4393964ada2ce44c02725b6913df5a9c7f3d0fb9..7e916a4cca8ddb7bca348603033f11eb80f3de9d 100644 (file)
@@ -1043,20 +1043,10 @@ AC_DEFUN([AC_WIRESHARK_LIBPORTAUDIO_CHECK],[
        #
        if test "x$want_portaudio" != "xno"
        then
-               AC_CHECK_TYPE(PortAudioStream,,
-               [
-                       CFLAGS="$wireshark_save_CFLAGS"
-                       CPPFLAGS="$wireshark_save_CPPFLAGS"
-                       LDFLAGS="$wireshark_save_LDFLAGS"
-                       LIBS="$wireshark_save_LIBS"
-                       PORTAUDIO_LIBS=""
-                       if test x$want_portaudio = xyes;
-                       then
-                               AC_MSG_ERROR([Wrong version of portaudio, need <= 18])
-                       else
-                               want_portaudio=no       
-                       fi
-               ],
+               AC_MSG_CHECKING([whether include is (old) API version 1])
+               AC_CHECK_TYPE(PortAudioStream,
+               AC_DEFINE(PORTAUDIO_API_1, 1, [Define if we are using version of of the Portaudio library API]),
+               ,
                [#include <portaudio.h>])
        fi
 
index fc010124e3268e9d62bf4d8a98b22a0d9380acd6..5b31d153f1ed3bf9c77ff9aa94cdfaccb1a67afc 100644 (file)
@@ -1,4 +1,4 @@
-/* rtp_player.c
+ /* rtp_player.c
  *
  * $Id$
  *
@@ -155,7 +155,11 @@ typedef struct _sample_t {
 #define HEIGHT_TIME_LABEL 18
 #define MAX_NUM_COL_CONV 10
 
+#if PORTAUDIO_API_1
 PortAudioStream *pa_stream;
+#else /* PORTAUDIO_API_1 */
+PaStream *pa_stream;
+#endif /* PORTAUDIO_API_1 */
 
 /* TODO: The RTP Player it is only supported for GTK >=2 */
 #if GTK_MAJOR_VERSION >= 2
@@ -194,7 +198,11 @@ typedef struct _rtp_channel_info {
        GdkPixmap *pixmap;
        GtkAdjustment *h_scrollbar_adjustment;
        GdkPixbuf* cursor_pixbuf;
+#if PORTAUDIO_API_1
        PaTimestamp cursor_prev;
+#else /* PORTAUDIO_API_1 */
+       PaTime cursor_prev;
+#endif /* PORTAUDIO_API_1 */
        GdkGC *bg_gc[MAX_NUM_COL_CONV+1];
        gboolean cursor_catch;
        rtp_stream_info_t *first_stream;        /* This is the first RTP stream in the channel */
@@ -219,7 +227,11 @@ typedef struct _rtp_play_channles {
        gboolean pause;
        gboolean stop;
        gint32 pause_duration;
+#if PORTAUDIO_API_1
        PaTimestamp out_diff_time;
+#else /* PORTAUDIO_API_1 */
+       PaTime out_diff_time;
+#endif /* PORTAUDIO_API_1 */
 } rtp_play_channles_t;
 
 /* The two RTP channles to play */
@@ -786,12 +798,24 @@ stop_channels(void)
 static void 
 draw_channel_cursor(rtp_channel_info_t *rci, guint32 start_index)
 {
+#if PORTAUDIO_API_1
        PaTimestamp index;
+#else /* PORTAUDIO_API_1 */
+       PaTime index;
+#endif /* PORTAUDIO_API_1 */
        int i;
 
        if (!rci) return;
 
+#if PORTAUDIO_API_1
        index = Pa_StreamTime( pa_stream ) - rtp_channels->pause_duration - rtp_channels->out_diff_time - start_index;
+#else  /* PORTAUDIO_API_1 */
+       /*
+       Pa_StreamTime has changed significantly into Pa_GetStreamTime
+        */
+       /* remove once new api is implemented */
+       index = 0;
+#endif  /* PORTAUDIO_API_1 */
 
 
        /* If we finished playing both channels, then stop them */
@@ -963,13 +987,30 @@ init_rtp_channels_vals(void)
  * It may called at interrupt level on some machines so don't do anything
  * that could mess up the system like calling malloc() or free().
  */
+#if PORTAUDIO_API_1
+
 static int paCallback(   void *inputBuffer, void *outputBuffer,
                              unsigned long framesPerBuffer,
                              PaTimestamp outTime, void *userData)
 {
+#else /* PORTAUDIO_API_1 */
+static int paCallback(
+           const void *input, void *output,
+           unsigned long frameCount,
+           const PaStreamCallbackTimeInfo* timeInfo,
+           PaStreamCallbackFlags statusFlags,
+           void *userData )
+
+{
+       /* Remove once this has been properly impelented */
+       void *inputBuffer;
+       void *outputBuffer;
+        unsigned long framesPerBuffer;
+        PaTime outTime;
+#endif /* PORTAUDIO_API_1 */
     rtp_play_channles_t *rpci = (rtp_play_channles_t*)userData;
     SAMPLE *wptr = (SAMPLE*)outputBuffer;
-       sample_t sample;
+    sample_t sample;
     unsigned int i;
     int finished;
     unsigned int framesLeft;
@@ -985,7 +1026,13 @@ static int paCallback(   void *inputBuffer, void *outputBuffer,
                return 0;
        }
 
+#if PORTAUDIO_API_1
        rpci->out_diff_time = outTime -  Pa_StreamTime(pa_stream) ;
+#else /* PORTAUDIO_API_1 */
+       /*
+       Pa_StreamTime has changed significantly into Pa_GetStreamTime
+        */
+#endif /* PORTAUDIO_API_1 */
 
 
        /* set the values if this is the first time */
@@ -1430,6 +1477,7 @@ play_channels(void)
 
        /* if not PAUSE, then start to PLAY */
        } else {
+#if PORTAUDIO_API_1
                err = Pa_OpenStream(
                          &pa_stream,
                          paNoDevice,     /* default input device */
@@ -1446,6 +1494,27 @@ play_channels(void)
                          paClipOff,      /* we won't output out of range samples so don't bother clipping them */
                          paCallback,
                          rtp_channels );
+#else /* PORTAUDIO_API_1 */
+       /*
+               set up PaStreamParameters for output stream
+               err = Pa_OpenStream(
+                       PaStream** stream,
+                       const PaStreamParameters *inputParameters,
+                       const PaStreamParameters *outputParameters,
+                       double sampleRate,
+                       unsigned long framesPerBuffer,
+                       PaStreamFlags streamFlags,
+                       PaStreamCallback *streamCallback,
+                       void *userData );
+       */
+               /* remove once things work */
+               dialog = gtk_message_dialog_new ((GtkWindow *) rtp_player_dlg_w,
+                 GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR,GTK_BUTTONS_CLOSE,
+                 "PortAudio Library API 2 not supported (PortAudio version >= 19.\n");
+               gtk_dialog_run (GTK_DIALOG (dialog));
+               gtk_widget_destroy (dialog);
+               return;
+#endif /* PORTAUDIO_API_1 */
 
                if( err != paNoError ) {
                        dialog = gtk_message_dialog_new ((GtkWindow *) rtp_player_dlg_w,
@@ -1460,7 +1529,7 @@ play_channels(void)
                if( err != paNoError ) {
                        dialog = gtk_message_dialog_new ((GtkWindow *) rtp_player_dlg_w,
                                                                  GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR,GTK_BUTTONS_CLOSE,
-                                                                 "Can not Start Stream in PortAduio Library.\n Error: %s", Pa_GetErrorText( err ));
+                                                                 "Can not Start Stream in PortAudio Library.\n Error: %s", Pa_GetErrorText( err ));
                        gtk_dialog_run (GTK_DIALOG (dialog));
                        gtk_widget_destroy (dialog);
                        return;