Ignore:
Timestamp:
Mar 19, 2006 12:48:43 AM (18 years ago)
Author:
bennylp
Message:

Tested and fixed stereo audio support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia/pasound.c

    r321 r334  
    8686 
    8787    status = (*stream->rec_cb)(stream->user_data, stream->timestamp,  
    88                                input, frameCount * stream->bytes_per_sample); 
     88                               input, frameCount * stream->bytes_per_sample * 
     89                               stream->channel_count); 
    8990     
    9091    if (status==0)  
     
    105106    pjmedia_snd_stream *stream = userData; 
    106107    pj_status_t status; 
    107     unsigned size = frameCount * stream->bytes_per_sample; 
     108    unsigned size = frameCount * stream->bytes_per_sample * 
     109                    stream->channel_count; 
    108110 
    109111    PJ_UNUSED_ARG(input); 
     
    207209    int sampleFormat; 
    208210    const PaDeviceInfo *paDevInfo = NULL; 
     211    unsigned paFrames; 
    209212    PaError err; 
    210213 
     
    218221        if (index == count) { 
    219222            /* No such device. */ 
    220             return PJ_ENOTFOUND; 
     223            return PJMEDIA_ENOSNDREC; 
    221224        } 
    222225    } else { 
     
    224227        if (!paDevInfo) { 
    225228            /* Assumed it is "No such device" error. */ 
    226             return PJ_ENOTFOUND; 
     229            return PJMEDIA_ESNDINDEVID; 
    227230        } 
    228231    } 
     
    235238        sampleFormat = paInt32; 
    236239    else 
    237         return PJ_ENOTSUP; 
     240        return PJMEDIA_ESNDINSAMPLEFMT; 
    238241     
    239242    pool = pj_pool_create( snd_mgr.factory, "sndstream", 1024, 1024, NULL); 
     
    258261    inputParam.suggestedLatency = paDevInfo->defaultLowInputLatency; 
    259262 
     263    /* Frames in PortAudio is number of samples in a single channel */ 
     264    paFrames = samples_per_frame / channel_count; 
     265 
    260266    err = Pa_OpenStream( &stream->stream, &inputParam, NULL, 
    261                          clock_rate, samples_per_frame,  
    262                          0, &PaRecorderCallback, stream ); 
     267                         clock_rate, paFrames,  
     268                         paClipOff, &PaRecorderCallback, stream ); 
    263269    if (err != paNoError) { 
    264270        pj_pool_release(pool); 
     
    292298    int sampleFormat; 
    293299    const PaDeviceInfo *paDevInfo = NULL; 
     300    unsigned paFrames; 
    294301    PaError err; 
    295302 
     
    303310        if (index == count) { 
    304311            /* No such device. */ 
    305             return PJ_ENOTFOUND; 
     312            return PJMEDIA_ENOSNDPLAY; 
    306313        } 
    307314    } else { 
     
    309316        if (!paDevInfo) { 
    310317            /* Assumed it is "No such device" error. */ 
    311             return PJ_ENOTFOUND; 
     318            return PJMEDIA_ESNDINDEVID; 
    312319        } 
    313320    } 
     
    320327        sampleFormat = paInt32; 
    321328    else 
    322         return PJ_ENOTSUP; 
     329        return PJMEDIA_ESNDINSAMPLEFMT; 
    323330     
    324331    pool = pj_pool_create( snd_mgr.factory, "sndstream", 1024, 1024, NULL); 
     
    343350    outputParam.suggestedLatency = paDevInfo->defaultLowInputLatency; 
    344351 
     352    /* Frames in PortAudio is number of samples in a single channel */ 
     353    paFrames = samples_per_frame / channel_count; 
     354 
    345355    err = Pa_OpenStream( &stream->stream, NULL, &outputParam, 
    346                          clock_rate,  samples_per_frame,  
    347                          0, &PaPlayerCallback, stream ); 
     356                         clock_rate,  paFrames,  
     357                         paClipOff, &PaPlayerCallback, stream ); 
    348358    if (err != paNoError) { 
    349359        pj_pool_release(pool); 
     
    353363    PJ_LOG(5,(THIS_FILE, "%s opening device %s for playing, sample rate=%d, " 
    354364                         "channel count=%d, " 
    355                          "%d bits per sample, %d samples per buffer", 
     365                         "%d bits per sample, %d samples per frame", 
    356366                         (err==0 ? "Success" : "Error"), 
    357367                         paDevInfo->name, clock_rate, channel_count, 
Note: See TracChangeset for help on using the changeset viewer.