SetShapeDmaCommand
SHAPE DMA 명령을 초기화합니다.Syntax
Parameters
command _Inout_Type: SHAPE_FLOWGRAPH_COMMAND* 초기화할 SHAPE_FLOWGRAPH_COMMAND 명령입니다. contextId
Type: UINT32 이 명령이 참조할 DMA 컨텍스트 ID(즉, 인덱스)입니다. mixBuffer
Type: UINT32 writeToMemory 플래그 설정에 따라 읽거나 쓸 대상이 되는 믹스 버퍼입니다. writeToMixBuffer
Type: bool DMA 명령이 지정된 믹스 버퍼에 쓰고 메인 메모리에서 읽는 경우 true입니다. DMA 명령이 지정된 믹스 버퍼에서 읽고 메인 메모리에 쓰는 경우 false입니다.
Return value
Type: HRESULT 함수가 성공하면S_OK를 반환합니다. 하나 이상의 인수가 유효하지 않으면 E_INVALIDARG를 반환합니다.
Remarks
Direct Memory Access(DMA) 시스템은 자동 float-정수 및 정수-float 변환을 포함한 읽기 및 쓰기 기능을 지원합니다. DMA 시스템은 128 샘플 블록 단위로 디인터리브된 샘플을 담는 순환 버퍼를 사용합니다. DMA 프로세서는 Scalable Hardware Audio Processing Engine(SHAPE)이 믹스 버퍼의 데이터를 메인 시스템 메모리로 보내고, 추가 처리를 위해 메인 시스템의 데이터를 믹스 버퍼로 가져올 수 있도록 합니다. DMA는 블록 단위로 수행되며, 한 번에 오디오 프레임 하나 분량의 데이터를 전송합니다. 블록 인터리브 데이터를 사용할 수 있도록, 스킵 값은 샘플을 읽거나 쓸 때 기본 주소로부터 시스템 메모리에서 건너뛸 오디오 프레임 블록의 수를 지정합니다. 멀티 채널 스트림은 채널당 하나의 DMA 컨텍스트가 필요합니다. 오디오 데이터 샘플은 DMA 컨텍스트의floatConvert 플래그에서 지정된 대로 정수 또는 float 중 하나의 32비트 값으로 항상 읽고 쓰여집니다.
DMA의 방향(읽기 또는 쓰기)은 DMA 컨텍스트가 아니라 DMA 명령에서 지정됩니다. 이는 데이터 대역폭 소모를 줄이는 데 도움이 됩니다. DMA 엔진 자체는 신호 처리를 수행하지 않지만, float-정수 또는 정수-float 변환을 수행할 수 있습니다. 이를 통해 애플리케이션 CPU는 부동 소수점 형식으로 데이터 샘플을 처리할 수 있습니다.
