는 다음 portaudio 라이브러리가 다른 샘플 형식을 나타내는 비트 필드로 PaSampleFormat를 사용하여 같은
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)
것 같습니다.
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;
}