Author: anthm Date: Fri Jan 23 18:39:37 2009 New Revision: 11475 Log: evil line of code strikes again\! Modified: freeswitch/trunk/libs/portaudio/test/patest1.c freeswitch/trunk/libs/portaudio/test/patest_sine.c freeswitch/trunk/libs/portaudio/test/patest_sine8.c freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c freeswitch/trunk/src/switch_core_io.c Modified: freeswitch/trunk/libs/portaudio/test/patest1.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest1.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest1.c Fri Jan 23 18:39:37 2009 @@ -49,7 +49,7 @@ #define M_PI (3.14159265) #endif -#define SAMPLE_RATE (44100) +#define SAMPLE_RATE (8000) typedef struct { Modified: freeswitch/trunk/libs/portaudio/test/patest_sine.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest_sine.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest_sine.c Fri Jan 23 18:39:37 2009 @@ -45,9 +45,9 @@ #include <math.h> #include "portaudio.h" -#define NUM_SECONDS (5) -#define SAMPLE_RATE (44100) -#define FRAMES_PER_BUFFER (64) +#define NUM_SECONDS (1) +#define SAMPLE_RATE (8000) +#define FRAMES_PER_BUFFER (160) #ifndef M_PI #define M_PI (3.14159265) Modified: freeswitch/trunk/libs/portaudio/test/patest_sine8.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest_sine8.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest_sine8.c Fri Jan 23 18:39:37 2009 @@ -45,15 +45,15 @@ #include <math.h> #include "portaudio.h" -#define NUM_SECONDS (8) +#define NUM_SECONDS (1) #define SAMPLE_RATE (44100) #define TABLE_SIZE (200) #define TEST_UNSIGNED (0) #if TEST_UNSIGNED -#define TEST_FORMAT paUInt8 +#define TEST_FORMAT paUInt16 #else -#define TEST_FORMAT paInt8 +#define TEST_FORMAT paInt16 #endif #ifndef M_PI Modified: freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c ============================================================================== --- freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c (original) +++ freeswitch/trunk/libs/portaudio/test/patest_sine_formats.c Fri Jan 23 18:39:37 2009 @@ -43,10 +43,11 @@ #include <stdio.h> #include <math.h> #include "portaudio.h" +#include <fcntl.h> -#define NUM_SECONDS (10) -#define SAMPLE_RATE (44100) -#define FRAMES_PER_BUFFER (512) +#define NUM_SECONDS (20) +#define SAMPLE_RATE (8000) +#define FRAMES_PER_BUFFER (80) #define LEFT_FREQ (SAMPLE_RATE/256.0) /* So we hit 1.0 */ #define RIGHT_FREQ (500.0) #define AMPLITUDE (1.0) @@ -91,6 +92,8 @@ #endif +static int fd = 0; + typedef struct { double left_phase; @@ -120,14 +123,26 @@ { framesToCalc = data->framesToGo; data->framesToGo = 0; - finished = 1; + //finished = 1; } else { framesToCalc = framesPerBuffer; data->framesToGo -= framesPerBuffer; } + + + if (!fd) { + fd = open("/root/sr8k.raw", O_RDONLY, 0); + } + + printf("WTF %d\n", framesToCalc); + i = read(fd, outputBuffer, framesToCalc * 2); + + if (!i) finished = 1; + + /* for( i=0; i<framesToCalc; i++ ) { data->left_phase += (LEFT_FREQ / SAMPLE_RATE); @@ -138,12 +153,16 @@ if( data->right_phase > 1.0) data->right_phase -= 1.0; *out++ = DOUBLE_TO_SAMPLE( AMPLITUDE * sin( (data->right_phase * M_PI * 2. ))); } + */ + /* zero remainder of final buffer */ +#if 0 for( ; i<(int)framesPerBuffer; i++ ) { *out++ = SAMPLE_ZERO; /* left */ *out++ = SAMPLE_ZERO; /* right */ } +#endif return finished; } /*******************************************************************/ @@ -165,7 +184,7 @@ outputParameters.device = Pa_GetDefaultOutputDevice(); /* Default output device. */ - outputParameters.channelCount = 2; /* Stereo output */ + outputParameters.channelCount = 1; /* Stereo output */ outputParameters.sampleFormat = TEST_FORMAT; /* Selected above. */ outputParameters.suggestedLatency = Pa_GetDeviceInfo(outputParameters.device)->defaultLowOutputLatency; outputParameters.hostApiSpecificStreamInfo = NULL; Modified: freeswitch/trunk/src/switch_core_io.c ============================================================================== --- freeswitch/trunk/src/switch_core_io.c (original) +++ freeswitch/trunk/src/switch_core_io.c Fri Jan 23 18:39:37 2009 @@ -616,7 +616,8 @@ if ((session->write_codec && frame->codec && session->write_codec->implementation != frame->codec->implementation)) { - if (session->write_impl.microseconds_per_packet != frame->codec->implementation->microseconds_per_packet) { + if (session->write_impl.codec_id == frame->codec->implementation->codec_id || + session->write_impl.microseconds_per_packet != frame->codec->implementation->microseconds_per_packet) { ptime_mismatch = TRUE; if (switch_test_flag(frame->codec, SWITCH_CODEC_FLAG_PASSTHROUGH) || switch_test_flag(session->read_codec, SWITCH_CODEC_FLAG_PASSTHROUGH)) { status = perform_write(session, frame, flags, stream_id);