2014-11-13 7 views
0

QAudioInput에서 저수준 오디오를 읽을 때 결과 데이터는 QByteArray입니다. QAudioInput을 설정할 때 데이터에서 원하는 샘플 유형을 알 수 있습니다. 거기에 float를 지정하면 QByteArray의 데이터가 이미이 형식으로되어있는 것입니까? 그렇다면 단순히 출력 데이터를 캐스팅하여 float 배열을 읽습니까? 예상되는 수레를 확보하기 위해 어떻게 저장되고 있지 않은가?QAudioInput의 qbytearray에서 float 배열 가져 오기

답변

0

모든 컴퓨터 메모리는 개별 바이트이지만 원하는 바이트를 저장할 수 있습니다. QByteArrayQVector<char>으로 착각하지 마십시오. QByteArray은 Qt의 "제네릭 메모리 버퍼"클래스입니다.

녹음 형식이 float 인 경우 바이트 배열에서 float를 읽으면 변환 할 필요가 없습니다. 실제로는 float가 1 바이트보다 커서 샘플보다 많은 샘플을 제공하므로 쓰레기가 생깁니다. .

바이트 배열 data 포인터에 직접 액세스하여 size()/sizeof(float)을 읽을 수 있습니다.