2017-12-24 31 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. 
    */ 

로 정의하지만 나를 위해 명확하게 일을 넣은 사람은 아니다된다.

누군가가이 개념에 대해 밝히고 내 사건에 어떻게 적용되는지 정말 고마워 할 것입니다.

감사합니다, portaudio.h에서

답변

0

는 다음 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; 
} 
0

PortAudio는 샘플을 원시 PCM 형식으로 제공합니다. 즉, 각 샘플은 사운드 카드의 DAC (디지털 - 아날로그 변환기)에 제공되는 진폭입니다. paInt16의 경우이 값은 -32768에서 32767 사이의 값입니다. paFloat32의 경우 -1.0에서 1.0 사이의 부동 소수점 값입니다. 사운드 카드는이 값을 비례 전압으로 변환하여 오디오 장비를 구동합니다.