Re: Multiple DirectShow Window problems
- From: Thore Karlsen [DShow MVP] <sid@xxxxxxxx>
- Date: Fri, 27 Jan 2006 09:34:52 -0600
On Fri, 27 Jan 2006 00:03:51 -0800, "Corey Cooper" <CoreyC at
InnovativeDesign dot com> wrote:
>Bear with me here, this is not a 'typical' application.
>
>I'm writing an application to run on essentially a single hardware/OS setup,
>that uses as many as 25 separate threads, each with its own DirectShow
>Window. At any one time I am only showing one window at a time, but for one
>part of the app, I need random access to the 25 of them, with better than a
>0.5 second latency to start of video. Each of the 25 is showing a 15 second
>MPEG-2 video clip. At another time, I am again only showing one video window
>at a time, but I need 12 of them to play sequentially, sometimes with some
>other stuff (a different window pops up for that part) going on between
>clips.
>
>When the app is first started, I create the 25 windows with the DirectShow
>windows in the client area, and then hide the windows. When the first part
>of the game is played, 12 videos are loaded into 12 of the windows, and then
>as things progress each is played in turn, one of them multiple times.
>After the first 'round' a second set of 12 is loaded in place of the first
>12, then a third set is loaded. Finally the 25 are all loaded, and made to
>appear, play and disappear on cue.
>
>1st Problem: If I jump right to the last part, using the full 25 windows
>without first doing at least some of the first part, some of the windows
>never render. The window is told to show (::ShowWindow()), but the screen
>is never updated, even though the audio track is playing along just fine.
>It varies, but recently it seems the first 5 windows have this problem, the
>rest usually don't, however just occasionally one or another will also not
>render. If I play the first rounds however before I do this one, then
>everything works fine.
I'm wondering if the problem might be that the renderer is dropping
samples because they are arriving too late, or maybe the renderer is
telling the decompressor to drop samples. I've had this problem before.
I had a bunch of rendereres, and tons of frames were dropped.
One relatively easy way to check if this is the problem is to write a
CTransInPlaceFilter that blanks out the sample times on the samples that
pass through it, and place this filter in front of each video renderer.
This will probably mess up the timing on your playback, but it should at
least tell you if this is the problem and allow you to work backwards
from there. This would only work if decompressor isn't trying to be
smart.
--
New to newsgroups? Read: http://dev.6581.com/newsgroups.html
.
- Follow-Ups:
- Re: Multiple DirectShow Window problems
- From: Corey Cooper
- Re: Multiple DirectShow Window problems
- References:
- Multiple DirectShow Window problems
- From: Corey Cooper
- Multiple DirectShow Window problems
- Prev by Date: Re: IMediaControl::Stop problem
- Next by Date: Re: Inspiration
- Previous by thread: Re: Multiple DirectShow Window problems
- Next by thread: Re: Multiple DirectShow Window problems
- Index(es):
Relevant Pages
|
|