//Need help in Directshow programming
-
Anybody have experience in developing video encoding & decoding of Canopus MVR2000 graphics card using Directshow? Due to the limitation of accompanying Amber SDk, functions like forward/play by frame cant be done. So I want to use Directshow to do this encoding & decoding task. There is a DV connected to MVR2000 card through S-Video, Directshow have no problem in dealing with digital devices like USB & IEEE1394 Video Cam, but in this case how could I initialize this analog device using Directshow? I'd appreciate any comments and samples.
-
Anybody have experience in developing video encoding & decoding of Canopus MVR2000 graphics card using Directshow? Due to the limitation of accompanying Amber SDk, functions like forward/play by frame cant be done. So I want to use Directshow to do this encoding & decoding task. There is a DV connected to MVR2000 card through S-Video, Directshow have no problem in dealing with digital devices like USB & IEEE1394 Video Cam, but in this case how could I initialize this analog device using Directshow? I'd appreciate any comments and samples.
First, do you have any experience programming DirectShow - it's not trivial! To work with an analogue input device is really no different to using a digital device. If you enumerate the available video capture devices you analogue card should be in the list. If it isn't then you don't have a WDM driver for the card and you can't use it with DirectShow. Having found your device you'll need to add it to a filter graph and then check whether it's analogue input pin is connected to a video cross bar filter - this allows you to select which video input (on a multiple input card) you'll be taking the signal from (S-Video in your case). You'll then need to set the cross bar to connect your chosen input pin to the cross bar output pin that's connected to the filter representing your device. After this a call to GraphBuilder RenderStream for the capture pin on the capture filter will build the rest of the filter graph and you'll be able to render the output. Of course there are LOTS of other things to consider and lots of other things you could do - such as recording to a file etc. The DirectX SDK has good documentation on DirectShow but be prepared to invest some time and effort - you won't be able to put somehting together quickly. By the way, to better understand filter graphs you can try playing with GraphEdt.exe which is part of the SDK. In fact this is probably a good place to start with your capture card - try this: 1. Run graphedt 2. Select Graph|Insert filters 3. Open the Video capture sources list 4. Double click your capture card 5. Close the Insert filter dialog 6. Right click the capture pin on the filter and select Render Pin 7. Play the graph - you should see you video in a window. Note: You may need to play with the video cross bar filter if it's present in the graph. Good luck, Chris
-
First, do you have any experience programming DirectShow - it's not trivial! To work with an analogue input device is really no different to using a digital device. If you enumerate the available video capture devices you analogue card should be in the list. If it isn't then you don't have a WDM driver for the card and you can't use it with DirectShow. Having found your device you'll need to add it to a filter graph and then check whether it's analogue input pin is connected to a video cross bar filter - this allows you to select which video input (on a multiple input card) you'll be taking the signal from (S-Video in your case). You'll then need to set the cross bar to connect your chosen input pin to the cross bar output pin that's connected to the filter representing your device. After this a call to GraphBuilder RenderStream for the capture pin on the capture filter will build the rest of the filter graph and you'll be able to render the output. Of course there are LOTS of other things to consider and lots of other things you could do - such as recording to a file etc. The DirectX SDK has good documentation on DirectShow but be prepared to invest some time and effort - you won't be able to put somehting together quickly. By the way, to better understand filter graphs you can try playing with GraphEdt.exe which is part of the SDK. In fact this is probably a good place to start with your capture card - try this: 1. Run graphedt 2. Select Graph|Insert filters 3. Open the Video capture sources list 4. Double click your capture card 5. Close the Insert filter dialog 6. Right click the capture pin on the filter and select Render Pin 7. Play the graph - you should see you video in a window. Note: You may need to play with the video cross bar filter if it's present in the graph. Good luck, Chris
Hi Chris, I can't find this graphics card in GraphEdit's Video Capture Sources, but there is a MVR-D2000 Series kernel mode driver(WDM) under sound video and game controllers in Device Manager, how could this be?