C++/VB - Capture, Preview and wmv playback using windowless vmr9 picture in picture
Asked By Ian
03-Jul-08 05:10 AM
I have configured a vmr9 in windowless mode with two inputs, one for
wmv playback and one for video capture preview using the smart Tee
filter The graph also writes captured video from a webcam with audio
to an ASF filewriter.
My goal is to playback the wmv file wjilst displaying the capture
preview within the playback area and at the same time capturing the
live video and audi to a asf file for later playback.
My Problem is that when I build the graph the wmv playback is very
slow. If I build the graph with 2 vmr9 renderers in windowed mode the
play back is fine.
Does anyone know if this is possible and if so please advise me on how
to go about it.
Ian
CapSwitchFilter
(1)
DirectShow
(1)
GraphEdit
(1)
SmartTee
(1)
Oprea
(1)
Oops
(1)
Riseoftheants
(1)
Windowless
(1)
Chris P. replied...
Use 2 renderers. When using a single renderer the presentation will be
held until there is a frame available on all active pins. Also if there is
a difference in time stamps between the streams you will have problems
which may necessitate removing the timestamps from one stream.
--
http://www.chrisnet.net/code.htm
[MS MVP for DirectShow / MediaFoundation]
enz replied...
Hi,
see our special capture engine, independent handle capture and preview graph.
you can connect the capture preview to your render and the file preview also,
see www.mpegcode.com, download CapSwitchFilter, see attached pdf how to use,
easy to test within GraphEdit (wmv support by simple load the profile via
property page), free for uncommercial use,
enze
Alessandro Angeli replied...
From: "Chris P."
*If* the OP is connecting the preview output of the SmartTee
to the second input of the VMR9, he should be OK since the
preview pin strips the timestamps and the VMR9 will get its
timing from the first pin.
--
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
Chris P. replied...
Oops, overlooked that bit.
--
http://www.chrisnet.net/code.htm
[MS MVP for DirectShow / MediaFoundation]
Dustin Opre replied...
Are you writing the output from the VMR to a file, or at some earlier point?
If the latter, how are you storing the information to a file in parallel from
the VMR? Have you written your own A/P?
Dustin Oprea

to sources C++ / VB Hi, I've got a couple of capture sources that expose directshow drivers (e.g. a hauppague pvr 350 composite in) and I want to use two one for live streaming, and one for recording). I'm a newbie to the whole Directshow setup - is it possible to capture from two sources with two different applications at the in between that would pointing to the same device? Regards, p Win32 DirectX Video Discussions CapSwitchFilter (1) GraphEdit (1) D64755e4ef2fa527 (1) Riseoftheants (1) Directshow (1) Independet (1) Hauppague (1) Phantoz (1) From: "phantoz" I can't understand whether you you can search the history of this group on groups.google.com. - - / / Alessandro Angeli / / MVP :: DirectShow / MediaFoundation / / mvpnews at riseoftheants dot com / / http: / / www.riseoftheants.com / mmx / faq.htm The latter me some suggestions on keywords? I'm afraid I don't know much about the directshow lingo. One thing I came across was the infinite tee filter, which looked useful. I special split graph DS filter package, free for uncommercial use. see www.mpegcode.com, download CapSwitchFilter , see attched pdf how to use, easy to test using GraphEdit, enze From: "phantoz" http
DirectShow question C++ / VB 1. Generally speaking, when someone talks about a Capture Device Driver, is that just a source filter? Thats my first impression. 2. I need to develop a Directshow app and / or filter who spews frame number and / or current system time to a your guidance and first thoughts on how to accomplish this. I've already tinkered with Directshow and made a simple transform filter that converts video to grayscale, the next step is is this all about rebuilding the filter graph in the app? Win32 DirectX Video Discussions CapSwitchFilter (1) DirectShow (1) GraphEdit (1) DShow (1) FillBuffer (1) Karlsen (1) Eric (1) Statisticvalues (1) Hello, our special DS interface call, also you can independent handle capture / preview graph, see www.mpegcode.com, download CapSwitchFilter, see attached pdf how to use, easy to test within GraphEdit, enze I've made some progress since I last posted, thanks for the advice. I
IMediaControl::Run Latency C++ / VB Hi All As per directshow documentation, When an application calls IMediaControl::Run to run the filter graph, the Filter Graph fitler in the FG, to control this amout of delay? Regards Win32 DirectX Video Discussions CapSwitchFilter (1) IMediaControl (1) IMediaFilter (1) GraphEdit (1) AllThis (1) Latency (1) TStart (1) Directshow (1) hi, to set all filter in run state some delay is needed, to check need some special filter to independent handle preview / capture graph, see www.mpegcode.com, download CapSwitchFilter , this filter package enables you to independent handle the graphs and start recording immediately, easy to test within GraphEdit, see attached pdf how to use, free for uncommercial use, regards, enze Hi All This Hi Geraint, Thanks for the answer. keywords: IMediaControl::Run, Latency description: Hi All As per directshow documentation, When an application calls IMediaControl::Run to run the filter graph, the Filter Graph
grf files C++ / VB Is there something specifically that needs to be implemented in a DirectShow filter for a saved graph (with filters connected) to be re-opened and have the 3 connected input pins. . . Win32 DirectX Video Discussions PGraphBuilder.CoCreateInstance (1) GetClassID (1) ActiveMovieGraph (1) CapSwitchFilter (1) CPersistStream (1) IPersistStream (1) StgOpenStorage (1) CComPtr (1) hi, in our special capture engine we create graph from grf file, see www.mpegcode.com, download CapSwitchFilter , see attached pdf how it works, easy to test using GraphEdit. this code works for us: / / Create new graph CComPtr<IGraphBuilder> pGraphBuilder; HRESULT hr = pGraphBuilder.CoCreateInstance completely unrelated to the IPersistStream you mentioned: In my case I saved a graph in graphedit containing this filter with multiple io pins, opened it again and some connections where unconnected and if your implementation doesn't map the passed in name to the correct pin, DirectShow fails to connect to / from your filter. Stick a breakpoint in that method and then saved, grf, files description: Is there something specifically that needs to be implemented in a DirectShow filter for a saved graph (with filters connected) to be re-opened and have