From ea5805e7467f4b4d32c1cb384d3fd7a0635d6c46 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Sat, 24 Jan 2009 00:39:37 +0000 Subject: [PATCH] evil line of code strikes again\! git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@11475 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- libs/portaudio/test/patest1.c | 2 +- libs/portaudio/test/patest_sine.c | 6 ++--- libs/portaudio/test/patest_sine8.c | 6 ++--- libs/portaudio/test/patest_sine_formats.c | 29 +++++++++++++++++++---- src/switch_core_io.c | 3 ++- 5 files changed, 33 insertions(+), 13 deletions(-) diff --git a/libs/portaudio/test/patest1.c b/libs/portaudio/test/patest1.c index 0d42f17a6e..cee23bcdb2 100644 --- a/libs/portaudio/test/patest1.c +++ b/libs/portaudio/test/patest1.c @@ -49,7 +49,7 @@ #define M_PI (3.14159265) #endif -#define SAMPLE_RATE (44100) +#define SAMPLE_RATE (8000) typedef struct { diff --git a/libs/portaudio/test/patest_sine.c b/libs/portaudio/test/patest_sine.c index 70eebc5d5b..32476cc549 100644 --- a/libs/portaudio/test/patest_sine.c +++ b/libs/portaudio/test/patest_sine.c @@ -45,9 +45,9 @@ #include #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) diff --git a/libs/portaudio/test/patest_sine8.c b/libs/portaudio/test/patest_sine8.c index 171d2ef3d8..5d830b38a1 100644 --- a/libs/portaudio/test/patest_sine8.c +++ b/libs/portaudio/test/patest_sine8.c @@ -45,15 +45,15 @@ #include #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 diff --git a/libs/portaudio/test/patest_sine_formats.c b/libs/portaudio/test/patest_sine_formats.c index 22bfa594f5..f4bdb26a50 100644 --- a/libs/portaudio/test/patest_sine_formats.c +++ b/libs/portaudio/test/patest_sine_formats.c @@ -43,10 +43,11 @@ #include #include #include "portaudio.h" +#include -#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 @@ typedef float SAMPLE_t; #endif +static int fd = 0; + typedef struct { double left_phase; @@ -120,14 +123,26 @@ static int patestCallback( const void *inputBuffer, { 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; ileft_phase += (LEFT_FREQ / SAMPLE_RATE); @@ -138,12 +153,16 @@ static int patestCallback( const void *inputBuffer, 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 @@ int main(void) 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; diff --git a/src/switch_core_io.c b/src/switch_core_io.c index e3ca0bc807..bcc24c589f 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -616,7 +616,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess 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);