José,
It looks I didn't create my Callback class correctly. I think this might work:
Class cCallBacks $CLSID_SampleGrabber as COM
INTERFACE ISampleGrabberCB $IID_ISampleGrabberCB:INHERIT iUnknown
' this one is for the video
METHOD SampleCB (BYVAL SampleTime AS DOUBLE,BYVAL pSample AS IMediaSample) AS LONG
' do stuff
method = 0
end method ' HRESULT
' =====================================================================================
' this one is for the audio
METHOD BufferCB (BYVAL SampleTime AS DOUBLE, BYVAL pBuffer AS BYTE PTR, BYVAL BufferLen AS LONG) AS LONG
' do stuff
method = 0
end method ' HRESULT
END INTERFACE
End Class
Does that look right to you? I won't be in my office for a week, so I have no way to test this until then

Patrice,
I'm always impressed and fascinated by your work. I wish that Microsoft would hire you to design the OS UI. I think we'd all be a lot happier. But in this case I'm stuck with the depreciated Directshow. It's so typical of MS to blow off an existing technology (flawed as Directshow is) and replace it with something completely inadequate. Media Foundation is way too under powered for my needs. The only way to not use Directshow is to go full api with blackmagic, which is not a big deal, as I've done some of the work already, thanks to Jose's TLB. But the nasty part is using FFMPEG api for the rest. And as good as it is, the api is really poorly documented. If I had nothing but time on my hands, I'd work on it until I beat it, but ......
At any rate, I appreciate both of you responding & if my change above works, I'll report back.
Thanks,
Russ