2017-12-24 10 views
0

私は現在PortAudioのコードサンプルを探しています。特にpaex_record.cです。旧式に見えるプリプロセッサディレクティブでサンプルフォーマットとは何ですか?

、私はサンプル・レートが何であるかを知っているが、私はサンプルフォーマットが何であるかを知らないportaudio.h

で定義されたPaSampleFormat値をとるtypedef PaSampleTypeがあります。ヘッダファイルで

、それが

/** The sample format of the buffer provided to the stream callback, 
    a_ReadStream() or Pa_WriteStream(). It may be any of the formats described 
    by the PaSampleFormat enumeration. 
    */ 

として定義されているが、それは私のための事をより明確にdoens'tされます。

誰かがこのコンセプトについて光を当てることができ、それが私のケースにどのように適用されるのか本当に感謝します。

おかげで、portaudio.hから

答えて

0

typedef unsigned long PaSampleFormat; 
#define paFloat32  ((PaSampleFormat) 0x00000001) 
#define paInt32   ((PaSampleFormat) 0x00000002) 
#define paInt24   ((PaSampleFormat) 0x00000004) 
#define paInt16   ((PaSampleFormat) 0x00000008) 
#define paInt8   ((PaSampleFormat) 0x00000010) 
#define paUInt8   ((PaSampleFormat) 0x00000020) 
#define paCustomFormat ((PaSampleFormat) 0x00010000) 
#define paNonInterleaved ((PaSampleFormat) 0x80000000) 

portaudioライブラリが異なるサンプルフォーマットを表しビットフィールドとしてPaSampleFormatを使用していますように見えます。ですから、インターリーブされた山車で作業したい場合は、あなたがこれを行うだろう:

PaSampleFormat myFormat = paFloat32; 

それとも、非インターリーブ署名したショートパンツで作業したい場合は、この操作を行います。

PaSampleFormat myFormat = paInt16 | paNonInterleaved; 

その後、図書館関数がサンプルを内部的に処理する方法を知るように引数としてPaSampleFormatを取る多くの関数を持っています。このビットフィールドを使用してサンプルサイズを取得するライブラリからの別の抜粋があります。

PaError Pa_GetSampleSize(PaSampleFormat format) 
{ 
    int result; 

    PA_LOGAPI_ENTER_PARAMS("Pa_GetSampleSize"); 
    PA_LOGAPI(("\tPaSampleFormat format: %d\n", format)); 

    switch(format & ~paNonInterleaved) 
    { 

    case paUInt8: 
    case paInt8: 
     result = 1; 
     break; 

    case paInt16: 
     result = 2; 
     break; 

    case paInt24: 
     result = 3; 
     break; 

    case paFloat32: 
    case paInt32: 
     result = 4; 
     break; 

    default: 
     result = paSampleFormatNotSupported; 
     break; 
    } 

    PA_LOGAPI_EXIT_PAERROR_OR_T_RESULT("Pa_GetSampleSize", "int: %d", result); 

    return (PaError) result; 
} 
0

PortAudioは、Raw PCM形式のサンプルを提供します。つまり、各サンプルは、サウンドカードのDAC(デジタル - アナログ変換器)に与えられる振幅です。 paInt16の場合、これは-32768〜32767の値です。paFloat32の場合、-1.0〜1.0の浮動小数点値です。サウンドカードは、この値を比例電圧に変換してから、オーディオ機器を駆動します。

関連する問題