Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

ASF reader and dual screen setups

26 views
Skip to first unread message

Daniel S

unread,
Aug 27, 2008, 10:55:07 AM8/27/08
to
Hi!

I have stumbled upon a problem which I think is related to the ASF
reader and a dual screen setup.

I have an application that reads three streams from a network source,
there are two video streams and one audio stream. In the sender the
streams are packaged together with the CAsfMuxFilter (http://
www.riseoftheants.com/mmx/faq.htm#wmvmuxsample) and in the receiver i
use the DirectShow Asf reader filter. The two video streams are
rendered in the same graph with two different video renderers. Both
video renderers are put on the same parent window.

The problem: if the application that reads the network stream is
started on my secondary screen it doesn't show a running video stream.
After the buffer (in the WMReader owned by the ASF reader) is full it
seems to hang.

If I use only one video stream it works as it should. If I use my own
home made network streaming it also works on the secondary screen
(everything except the CAsfMuxFilter and Asf reader are the same).

Any ideas?

Alessandro Angeli

unread,
Aug 27, 2008, 12:58:00 PM8/27/08
to
From: "Daniel S"

[...]
> Any ideas?

Not really.

What is the exact topology of the working and non-working
rendering graphs? (You'd better attach GRF files or the dump
of the GRF files produced by my GRF parser - see my FAQ.)

What video renderers do you use?

Does it make a difference if you use the VMR9 or the old VR
configured to use GDI or offscreen surfaces only
(IDirectDrawVideo::SetSwitches(AMDDS_NONE) or
AMDDS_RGBOFF|AMDDS_YUVOFF) or the VMR7 configured to use
offscreen surfaces
(IVMRFilterConfig::SetRenderingPrefs(RenderPrefs_ForceOffscreen))?

What are the connection media types used by the renderers?

--
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm


Daniel S

unread,
Aug 28, 2008, 2:51:16 AM8/28/08
to
On 27 Aug, 18:58, "Alessandro Angeli" <nob...@nowhere.in.the.net>
wrote:

> From: "Daniel S"
>
> [...]
>
> > Any ideas?
>
> Not really.
>
> What is the exact topology of the working and non-working
> rendering graphs? (You'd better attach GRF files or the dump
> of the GRF files produced by my GRF parser - see my FAQ.)
>
> What video renderers do you use?
>
> Does it make a difference if you use the VMR9 or the old VR
> configured to use GDI or offscreen surfaces only
> (IDirectDrawVideo::SetSwitches(AMDDS_NONE) or
> AMDDS_RGBOFF|AMDDS_YUVOFF) or the VMR7 configured to use
> offscreen surfaces
> (IVMRFilterConfig::SetRenderingPrefs(RenderPrefs_ForceOffscreen))?
>
> What are the connection media types used by the renderers?
>

The video renderer the standard renderer on one of the streams and on
the other stream there's an overlay as well. The working and
nonworking graphs are exactly the same, the only difference is on
which screen the graph is started.

I will investigate how the renderers affect this behaviour. My
question was a long shot, if someone would have experienced something
similiar I would have saved a lot of time =)

Daniel S

unread,
Sep 2, 2008, 8:00:08 AM9/2/08
to
On 28 Aug, 08:51, Daniel S <sum...@gmail.com> wrote:
> On 27 Aug, 18:58, "Alessandro Angeli" <nob...@nowhere.in.the.net>
> wrote:
>

I have investigated my problem a little bit further.

> What is the exact topology of the working and non-working
> rendering graphs? (You'd better attach GRF files or the dump
> of the GRF files produced by my GRF parser - see my FAQ.)

The working and nonworking GRF dumps are attached at the end of the
post.

> What video renderers do you use?

I have tried both the old VR (CLSID_VideoRenderer) and VMR7
(CLSID_VideoRendererDefault). Same results as above.

>
> Does it make a difference if you use the VMR9 or the old VR
> configured to use GDI or offscreen surfaces only
> (IDirectDrawVideo::SetSwitches(AMDDS_NONE) or
> AMDDS_RGBOFF|AMDDS_YUVOFF) or the VMR7 configured to use
> offscreen surfaces
> (IVMRFilterConfig::SetRenderingPrefs(RenderPrefs_ForceOffscreen))?

Doesn't make a difference.

> What are the connection media types used by the renderers?

The media type connected to the renderer is in all cases 320x240
(RGB24) and 1280x1024 (RGB32). The first stream is encoded in MS Video
1 and the second is TSCC (Techsmith Screen Capture Codec).

I suspect that the video drivers and hardware acceleration has
something to do with this problem. However, since it works with my own
source filter (receiving the same streams using RTP) it seems like
it's the ASF reader filter together with two video streams might be a
bad combination.

As I see it there are two possible ways to go from here:

1) Implement my "own ASF reader" using the IWMReader API.
2) Investigate more about using and setting up different video
renderers

It feels like (1) would be the safest way to get it to work, although
it wouldn't be the best solution to my problem. Any help will be
highly appreciated.


Graph dumps
==========

Working graph (primary screen):
*** StgOpenStorage(L"ASF-graph-on-primary-screen.GRF")...
*** OpenStream(L"ActiveMovieGraph")...
*** Stat()...
*** new BYTE[2788]...
*** Read(2788)...
>>> version = 0003
>>> FILTERS
>>> 0001
>>> name .... = L"WM ASF Reader"
>>> class_id = {187463A0-5BB7-11D3-ACBE-0080C75E246E}
>>> file .... = SOURCE
>>> file_name = L"http://10.46.11.85:8181"
>>> length .. = 0000000000
>>> 0002
>>> name .... = L"AVI Decompressor"
>>> class_id = {CF49D4E0-1115-11CE-B03A-0020AF0BA770}
>>> length .. = 0000000000
>>> 0003
>>> name .... = L"AVI Decompressor 0001"
>>> class_id = {CF49D4E0-1115-11CE-B03A-0020AF0BA770}
>>> length .. = 0000000000
>>> 0004
>>> name .... = L"Video Renderer 1"
>>> class_id = {70E102B0-5556-11CE-97C0-00AA0055595A}
>>> length .. = 0000000000
>>> 0005
>>> name .... = L"Video Renderer 2"
>>> class_id = {70E102B0-5556-11CE-97C0-00AA0055595A}
>>> length .. = 0000000000
>>> CONNECTIONS
>>> 0001 [L"Raw Video 0"] -> 0002 [L"In"]
>>> sample_size ........ = 0000000374
>>> major_type ......... = {73646976-0000-0010-8000-00AA00389B71}
>>> subtype ............ = {4D415243-0000-0010-8000-00AA00389B71}
>>> fixed_sample_size .. = 0
>>> temporal_compression = 1
>>> length(?) .......... = 0000000000
>>> format_type ........ = 0000000088
>>> length ............. =
>>> [L"0001"] -> Raw Video 1 [L"0003"]
>>> sample_size ........ = In
>>> major_type ......... = 0000000374
>>> subtype ............ = {73646976-0000-0010-8000-00AA00389B71}
>>> fixed_sample_size .. = {63637374-0000-0010-8000-00AA00389B71}
>>> temporal_compression = 0
>>> length(?) .......... = 1
>>> format_type ........ = 0000000000
>>> length ............. = 0000000088
>>> 0003 [L"Out"] -> 0004 [L"In"]
>>> sample_size ........ = 0000000374
>>> major_type ......... = {73646976-0000-0010-8000-00AA00389B71}
>>> subtype ............ = {E436EB7E-524F-11CE-9F53-0020AF0BA770}
>>> fixed_sample_size .. = 1
>>> temporal_compression = 0
>>> length(?) .......... = 0005242880
>>> format_type ........ = 0000000088
>>> length ............. =
>>> [L"0002"] -> Out [L"0005"]
>>> sample_size ........ = In
>>> major_type ......... = 0000000374
>>> subtype ............ = {73646976-0000-0010-8000-00AA00389B71}
>>> fixed_sample_size .. = {E436EB7D-524F-11CE-9F53-0020AF0BA770}
>>> temporal_compression = 1
>>> length(?) .......... = 0
>>> format_type ........ = 0000230400
>>> length ............. = 0000000088
>>> CLOCK
>>> required = 1
>>> clock_id = {E436EBB1-524F-11CE-9F53-0020AF0BA770}
*** hr = 0x00000000


Nonworking graph (secondary screen):
*** StgOpenStorage(L"ASF-graph-on-secondary-screen.GRF")...
*** OpenStream(L"ActiveMovieGraph")...
*** Stat()...
*** new BYTE[2788]...
*** Read(2788)...
>>> version = 0003
>>> FILTERS
>>> 0001
>>> name .... = L"WM ASF Reader"
>>> class_id = {187463A0-5BB7-11D3-ACBE-0080C75E246E}
>>> file .... = SOURCE
>>> file_name = L"http://10.46.11.85:8181"
>>> length .. = 0000000000
>>> 0002
>>> name .... = L"AVI Decompressor"
>>> class_id = {CF49D4E0-1115-11CE-B03A-0020AF0BA770}
>>> length .. = 0000000000
>>> 0003
>>> name .... = L"AVI Decompressor 0001"
>>> class_id = {CF49D4E0-1115-11CE-B03A-0020AF0BA770}
>>> length .. = 0000000000
>>> 0004
>>> name .... = L"Video Renderer 1"
>>> class_id = {70E102B0-5556-11CE-97C0-00AA0055595A}
>>> length .. = 0000000000
>>> 0005
>>> name .... = L"Video Renderer 2"
>>> class_id = {70E102B0-5556-11CE-97C0-00AA0055595A}
>>> length .. = 0000000000
>>> CONNECTIONS
>>> 0001 [L"Raw Video 0"] -> 0002 [L"In"]
>>> sample_size ........ = 0000000374
>>> major_type ......... = {73646976-0000-0010-8000-00AA00389B71}
>>> subtype ............ = {4D415243-0000-0010-8000-00AA00389B71}
>>> fixed_sample_size .. = 0
>>> temporal_compression = 1
>>> length(?) .......... = 0000000000
>>> format_type ........ = 0000000088
>>> length ............. =
>>> [L"0001"] -> Raw Video 1 [L"0003"]
>>> sample_size ........ = In
>>> major_type ......... = 0000000374
>>> subtype ............ = {73646976-0000-0010-8000-00AA00389B71}
>>> fixed_sample_size .. = {63637374-0000-0010-8000-00AA00389B71}
>>> temporal_compression = 0
>>> length(?) .......... = 1
>>> format_type ........ = 0000000000
>>> length ............. = 0000000088
>>> 0003 [L"Out"] -> 0004 [L"In"]
>>> sample_size ........ = 0000000374
>>> major_type ......... = {73646976-0000-0010-8000-00AA00389B71}
>>> subtype ............ = {E436EB7E-524F-11CE-9F53-0020AF0BA770}
>>> fixed_sample_size .. = 1
>>> temporal_compression = 0
>>> length(?) .......... = 0005242880
>>> format_type ........ = 0000000088
>>> length ............. =
>>> [L"0002"] -> Out [L"0005"]
>>> sample_size ........ = In
>>> major_type ......... = 0000000374
>>> subtype ............ = {73646976-0000-0010-8000-00AA00389B71}
>>> fixed_sample_size .. = {E436EB7D-524F-11CE-9F53-0020AF0BA770}
>>> temporal_compression = 1
>>> length(?) .......... = 0
>>> format_type ........ = 0000230400
>>> length ............. = 0000000088
>>> CLOCK
>>> required = 1
>>> clock_id = {E436EBB1-524F-11CE-9F53-0020AF0BA770}
*** hr = 0x00000000

Daniel S

unread,
Sep 5, 2008, 3:18:23 AM9/5/08
to

I'm sorry to bump this thread... Anyway, if someone has some advice on
how to go forward with my problem I would really appreciate it.

0 new messages