XAudio2 샘플 속도 변환
XAudio2 음성은 입력 샘플 속도가 출력 음성의 입력 샘플 속도와 다른 경우 자동 샘플 속도 변환을 수행할 수 있습니다.
샘플 속도 변환은 다음 규칙을 따릅니다.
음성 입력 샘플 속도가 수정되었습니다.
음성은 만들 때 지정된 입력 샘플 속도만 처리할 수 있습니다. 음성 및 서브믹스 음성을 마스터하기 위해 입력 샘플 속도는 IXAudio2::CreateMasteringVoice 및 IXAudio2::CreateSubmixVoice 함수에 대한 InputSampleRate 인수로 지정됩니다. 원본 음성의 경우 음성의 입력 샘플 속도는 pSourceFormat 인수에 의해 IXAudio2::CreateSourceVoice 함수에 지정됩니다.
모든 음성의 출력 음성은 동일한 입력 샘플 속도를 가져야 합니다.
음성은 입력 샘플 속도에서 모든 출력 샘플 속도로 변환할 수 있지만 모든 음성의 출력 음성은 동일한 입력 샘플 속도를 가져야 합니다. 예를 들어 음성은 입력 샘플 속도가 22kHz인 임의의 수의 음성으로 출력할 수 있습니다. 그러나 동일한 음성에 여러 출력 음성이 있는 경우 각각 다른 입력 샘플 속도가 있는 경우 오디오 그래프가 유효하지 않습니다.
샘플 속도 변환 처리는 필요한 경우에만 발생합니다.
오디오 데이터를 다른 샘플 속도로 변환하면 처리 오버헤드가 더 많이 발생하므로 방지하는 것이 좋습니다. 음성의 입력 샘플 속도가 출력 음성의 입력 샘플 속도와 일치하는 경우 이 변환이 수행되지 않고 처리 시간이 단축됩니다.
출력 샘플 속도는 음성 수명마다 다를 수 있습니다.
음성의 출력 샘플 속도가 고정되지 않았습니다. 모든 출력 음성의 입력 샘플 속도가 같으면 오디오 그래프가 유효합니다. 음성이 다른 입력 샘플 속도를 가진 새 음성으로 출력으로 변경되면 음성이 새 음성의 입력 샘플 속도로 변환됩니다.
음성 간의 샘플 속도 변환을 수행하기 위해 서브믹스 음성을 추가해야 하는 몇 가지 시나리오가 있습니다. 음성이 다양한 입력 샘플 속도로 음성에 출력되어야 하는 경우 음성 중 하나만 원래 음성의 직접 출력일 수 있습니다. 모든 음성의 출력 음성은 동일한 입력 샘플 속도를 가져야 하므로 다른 음성은 간접적으로 출력을 받습니다. 원래 음성과 의도한 출력 음성 간에 제공되는 올바른 입력 샘플 속도를 가진 서브믹스 음성이 있어야 합니다.
예를 들어 입력 샘플 속도가 22kHz인 소스 음성을 예로 들어, 입력 샘플 속도가 11kHz이고 입력 샘플 속도가 44.1kHz인 마스터링 음성을 서브믹스 음성으로 출력해야 합니다. 두 출력 음성의 입력 샘플 속도가 다르기 때문에 원래 음성과 의도한 출력 음성 사이에 더 많은 서브믹스 음성을 삽입해야 합니다. 원본 음성의 충실도를 유지하고 더 높은 샘플 속도로 불필요한 비용이 많이 드는 변환을 방지하려면 22khz 샘플 입력 속도가 있는 두 개의 서브믹스 음성을 그래프에 삽입해야 합니다. 한 서브믹스 음성은 반향 효과가 있는 서브믹스 음성으로 11khz로 출력되고, 다른 서브믹스 음성은 44.1khz의 마스터링 음성으로 출력됩니다.
오디오 그래프의 샘플 속도 변환 예제
모든 음성의 샘플 입력 속도는 동일합니다. 오디오 그래프에서는 샘플 속도 변환이 수행되지 않습니다.
마스터링 음성을 제외한 모든 음성의 샘플 입력 속도는 동일합니다. 샘플 속도 변환은 마스터링 음성으로 가는 데이터에 대해서만 수행됩니다.
음성은 샘플 입력 속도가 다르며 샘플 속도 변환을 수행하려면 더 많은 서브믹스 음성이 필요합니다. 샘플 속도 변환은 오디오 그래프의 여러 위치에서 수행됩니다.
관련 항목