В настоящее время я создаю приложение, которое использует DS SDK, и мне нужно выяснить, как постоянно получать амплитуду от аудиоисточника, чтобы нарисовать визуализатор или какой-либо спектр. Я пытался посмотреть, как сэмпл-граббер реализован на аудио, но вся информация, которую я нашел, устарела и бесполезна. После нескольких десятков попыток вот что у меня сейчас:
ISampleGrabber pGrabber = (ISampleGrabber)pSampleGrabber;
hr = pGraph.ConnectDirect(GetPin(pInfinitePinTeeFilterAudio, "Output3"), GetPin(pSampleGrabber, "Input"), null);
checkHR(hr, "1040");
if (hr < 0) return false;
hr = pGraph.ConnectDirect(GetPin(pSampleGrabber, "Output"), GetPin(pNullRenderer, "In"), null);
checkHR(hr, "1041");
if (hr < 0) return false;
AMMediaType media = new AMMediaType();
media.formatType = FormatType.WaveEx;
pGrabber.GetConnectedMediaType(media); //gets and sets media type into media
pGrabber.SetBufferSamples(true);
int cbbuffer = 0;
hr = pGrabber.GetCurrentBuffer(ref cbbuffer, IntPtr.Zero);
Как мне прочитать, что находится в текущем буфере, и постоянно читать, что находится в буфере?