실제로 사운드 카드의 16 비트 샘플 인 바이트 배열이 있습니다. 따라서 1000 바이트는 실제로 500 개의 Short (16 비트 값)를 나타냅니다. 데이터 배열을 복사하지 않고 short 배열로 변환
현재 나는이처럼 변환 해요 :byte [] inputData = new byte[1000];
short [] convertedData = new short[500];
Buffer.BlockCopy(inputData, 0, convertedData , 0, 1000);
그것은 잘 작동하고 낮은 수준의 바이트 사본의로 꽤 빠르다.
그러나 사본이 없으면 어떻게 할 수 있습니까? 즉 C#에게이 메모리 영역을 1000 바이트가 아닌 500 개의 반바지로 처리하도록 알려주십시오. C/C++에서 포인터를 캐스팅 할 수 있다는 것을 알고 있습니다.
이 복사본은 초당 최대 5000 번 반복되는 루프에서 발생하므로 복사를 제거 할 수 있다면 가치가 있습니다.
완벽한 트릭, 건배! –