Ну не выходит, каменный цветок…
Если снять в коде комментарий с «НульРендер», это все вообще не работает.
Как советует MSDN, объявил SampleGrabber
задал
hr = pGrabber->SetOneShot(TRUE);
hr = pGrabber->SetBufferSamples(TRUE);
однако
pGrabber->GetCurrentBuffer( &lBufSize,NULL);
данных не получает.
hr = pControl->Run();
hr = pEvent->WaitForCompletion(INFINITE, &evCode);
менять кадры толком не хочет.
Фактически, своими силами так ничего и не добился.
В ГрафЕдит формируется такая схема
Avi_file -> AVI Splitter -> SampleGpabber->LAV Video Decoder -> VideoRender
Причем AVI Splitter и LAV Video Decoder подключаются без меня.
Может быть, код не работает т.к. я сам подключение пинов не делаю и SampleGpabber «в автомате» получается перед декомпрессией потока? Соответственно буфер пуст…
Допустим, подключение AVI Splitter в исходниках встречается, но как задать этот «LAV Video Decoder»? И нужно ли их вообще задавать в ручную?
Очень раздражает, что примеры из Dxsdk вроде как есть, а в С++ Builder их толком не перетянешь. Компилятор ругается на чего-то в черт знает каком заголовочном файле, не говоря уж о том, что он не понимает функции в самом примере. Может я не те либы ему подсунул? Брал отсюда:
http://clootie.narod.ru/cbuilder/index.html#DX_CBuilder_Libs_90 (CBuilder_DX92_libs.zip Clootie_DX92_dlls.zip)
В системе стоит ХР + DX9.0c. Остаток чего то взял из c:\Dxsdk\lib\
Народ, у кого какие идеи? Уже голова кипит от этого бардака. Вроде бы простая цепочка. Я бы сказал «классика», а столько головной боли!