Directshow play from Stream

Здравствуйте. Есть у меня видео файл сохраненный в своем контейнере. Доступ осуществляется через Stream. Каким образом можно его проигрывать DirectShow???

В примерах такого не вижу… все только файлы читают. А как передать ему тот же файл но как Stream не понятно. Может кто знает??

https://basicsprog.ucoz.ru/publ/6-1-0-39
Сам не пробовал, но там пишут, что работает.

//создаем поток из файла для чтения
FileStream := TFileStream.Create('video1.avi', fmOpenRead);
//получаем дескриптор потока
FileStreamHandle := FileStream.Handle;
//получаем размер
ResSize := FileStream.Size;
//выделяем память
GetMem(Mem, ResSize);
//читаем данные в память
ReadFile(FileStreamHandle, Mem^, ResSize, BytesRead, nil);
//освобождаем поток
CloseHandle(FileStreamHandle);

Код кривой, но принцип понятен. Точнее, это просто кривая загрузка файла из ресурсов. А суть в этих строчках:

  // Создаем поток для нашего source фильтра
  Stream := TBCMemFileStream.Create(Mem, ResSize, KBPerSec);
  hr := S_OK;
  Reader := TBCMemFileReader.Create(Stream, pmt, hr);

  //  Make sure we don't accidentally go away!
  Reader._AddRef;

Тут они какой-то TBCMemFileReader юзают, а потом передают его в Граф.

Очень забавно. Это видимо какой то кастомный фильтр. Ну да … технически это наверное рабочий вариант. Если только раскурить разработку фильтров для мертвой технологии. ))