Ureader.com  
Microsoft software help and Community
   home   |   control panel login   |   archive   |  
 
Windos
win32.3rdparty
win32.directx.audio
win32.directx.ddk
win32.directx.graphics
win32.directx.input
win32.directx.managed
win32.directx.misc
win32.directx.networking
win32.directx.sdk
win32.directx.video
win32.dirx.grap.shaders
win32.gdi
win32.international
win32.kernel
win32.messaging
win32.mmedia
win32.networks
win32.ole
win32.rtc
win32.tapi
win32.tapi.beta
win32.tools
win32.ui
win32.wince
win32.wmi
windows.mediacenter
winfx.aero
winfx.announcements
winfx.avalon
winfx.collaboration
winfx.fundamentals
winfx.general
winfx.indigo
winfx.sdk
winfx.winfs
  
 
date: Mon, 7 Jul 2008 11:43:01 -0700,    group: microsoft.public.win32.programmer.directx.video        back       


Direcshow problems with WMV9 Decoder for XP platform   
I have captured a live video stream from a mobile and encoded it with the 
DirectShow Windows WMV3 codec. 

I am sending it wireless threw Internet and decode the stream on a PC. I 
have a costume Filer the first receive the stream, then the WMV 9 Decoder 
then VMR9 Render. 

If I remove the WMV 9 Encoder/Decoder from the equation, the video from the 
mobile is displayed on the PC. If I add the WMV9 Encoder/Decoder the video 
does not render. 

Here is Graph Dump and Quarz debug trace ... 

====DbgInitialize()=====

tstcon32.exe(tid 16f0)        0 : Object created   1 (RTPReceiveFilter) 1 
Active
tstcon32.exe(tid 16f0)        0 : Object created   2 (RtpOutputPin) 2 Active
tstcon32.exe(tid 16f0)       18 :     Obj 1 ref++ = 1
tstcon32.exe(tid 16f0)       19 : Object created   3 (RTP-Transmit-Filter) 3 
Active
tstcon32.exe(tid 16f0)       19 :     Obj 3 ref++ = 1
tstcon32.exe(tid 16f0)     3593 :     Obj 1 ref++ = 2
tstcon32.exe(tid 16f0)     3593 :     Obj 1 ref++ = 3
tstcon32.exe(tid 16f0)     3593 :     Object 1 ref-- = 2
tstcon32.exe(tid 16f0)     3593 :     Obj 1 ref++ = 3
tstcon32.exe(tid 16f0)     3594 :     Object 1 ref-- = 2
tstcon32.exe(tid 16f0)     3594 :     Obj 1 ref++ = 3
tstcon32.exe(tid 16f0)     3594 :     Object 1 ref-- = 2
tstcon32.exe(tid 16f0)     3594 :     Obj 1 ref++ = 3
tstcon32.exe(tid 16f0)     3594 :     Object 1 ref-- = 2
tstcon32.exe(tid 16f0)     3594 : Trying to connect Pins :
tstcon32.exe(tid 16f0)     3594 :     <Out>
tstcon32.exe(tid 16f0)     3594 :     <in0>
tstcon32.exe(tid 16f0)     3594 : Trying media type:
tstcon32.exe(tid 16f0)     3594 :     major type:  MEDIATYPE_Video
tstcon32.exe(tid 16f0)     3594 :     sub type  :  Unknown GUID Name
tstcon32.exe(tid 16f0)     3594 : Trying media type:
tstcon32.exe(tid 16f0)     3594 :     major type:  MEDIATYPE_Video
tstcon32.exe(tid 16f0)     3594 :     sub type  :  Unknown GUID Name
tstcon32.exe(tid 16f0)     3594 : Trying media type:
tstcon32.exe(tid 16f0)     3594 :     major type:  MEDIATYPE_Video
tstcon32.exe(tid 16f0)     3594 :     sub type  :  Unknown GUID Name
tstcon32.exe(tid 16f0)     3594 : Trying media type:
tstcon32.exe(tid 16f0)     3594 :     major type:  MEDIATYPE_Video
tstcon32.exe(tid 16f0)     3594 :     sub type  :  Unknown GUID Name
tstcon32.exe(tid 16f0)     3594 : Trying media type:
tstcon32.exe(tid 16f0)     3595 :     major type:  MEDIATYPE_Video
tstcon32.exe(tid 16f0)     3595 :     sub type  :  Unknown GUID Name
tstcon32.exe(tid 16f0)     3595 : Trying media type:
tstcon32.exe(tid 16f0)     3595 :     major type:  MEDIATYPE_Video
tstcon32.exe(tid 16f0)     3595 :     sub type  :  Unknown GUID Name
tstcon32.exe(tid 16f0)     3595 : Trying media type:
tstcon32.exe(tid 16f0)     3595 :     major type:  MEDIATYPE_Video
tstcon32.exe(tid 16f0)     3595 :     sub type  :  Unknown GUID Name
tstcon32.exe(tid 16f0)     3595 : Trying media type:
tstcon32.exe(tid 16f0)     3595 :     major type:  MEDIATYPE_Video
tstcon32.exe(tid 16f0)     3595 :     sub type  :  Unknown GUID Name
tstcon32.exe(tid 16f0)     3595 : Object created   4 (CEnumMediaTypes) 4 
Active
tstcon32.exe(tid 16f0)     3595 :     Obj 1 ref++ = 3
tstcon32.exe(tid 16f0)     3595 : Trying media type:
tstcon32.exe(tid 16f0)     3595 :     major type:  MEDIATYPE_Video
tstcon32.exe(tid 16f0)     3595 :     sub type  :  Unknown GUID Name
tstcon32.exe(tid 16f0)     3595 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     3595 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)     3635 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     3643 :     Obj 1 ref++ = 5
tstcon32.exe(tid 16f0)     3644 :     Object 1 ref-- = 4
tstcon32.exe(tid 16f0)     3644 : Object destroyed 4 (CEnumMediaTypes) 3 
Active
tstcon32.exe(tid 16f0)     3644 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)     3644 : Connection succeeded
tstcon32.exe(tid 16f0)     3644 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     3644 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)     3686 : Object created   5 (Pin Cache) 4 Active
tstcon32.exe(tid 16f0)     3686 : Object created   6 (CEnumPins) 5 Active
tstcon32.exe(tid 16f0)     3686 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     3686 :     Obj 1 ref++ = 5
tstcon32.exe(tid 16f0)     3686 : Object created   7 (List node) 6 Active
tstcon32.exe(tid 16f0)     3686 :     Object 1 ref-- = 4
tstcon32.exe(tid 16f0)     3686 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)     3686 : Object destroyed 6 (CEnumPins) 5 Active
tstcon32.exe(tid 16f0)     3686 : Object destroyed 7 (List node) 4 Active
tstcon32.exe(tid 16f0)     3687 : Object destroyed 5 (Pin Cache) 3 Active
tstcon32.exe(tid 16f0)     3687 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     3687 :     Obj 1 ref++ = 5
tstcon32.exe(tid 16f0)     3687 :     Object 1 ref-- = 4
tstcon32.exe(tid 16f0)     3687 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)     3687 : Object created   8 (Pin Cache) 4 Active
tstcon32.exe(tid 16f0)     3687 : Object created   9 (CEnumPins) 5 Active
tstcon32.exe(tid 16f0)     3687 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     3687 :     Obj 1 ref++ = 5
tstcon32.exe(tid 16f0)     3687 : Object created   10 (List node) 6 Active
tstcon32.exe(tid 16f0)     3687 :     Object 1 ref-- = 4
tstcon32.exe(tid 16f0)     3687 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)     3687 : Object destroyed 9 (CEnumPins) 5 Active
tstcon32.exe(tid 16f0)     3687 : Object destroyed 10 (List node) 4 Active
tstcon32.exe(tid 16f0)     3687 : Object destroyed 8 (Pin Cache) 3 Active
tstcon32.exe(tid 16f0)     3687 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     3687 :     Object 1 ref-- = 3
tstcon32.exe(tid 150c)     6868 : CSourceStream worker thread initializing
tstcon32.exe(tid 16f0)     6870 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     6870 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)     6870 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     6870 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)     6870 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     6870 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)     6870 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)     6870 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)   125340 : DumpGraph [9a28c0]
tstcon32.exe(tid 16f0)   125340 :     Filter [9a4b70]  'Renderer'
tstcon32.exe(tid 16f0)   125340 :           Pin [9a4690]  'VMR Input0' 
[Input]  Connected to pin [9b80a0]
tstcon32.exe(tid 16f0)   125340 :           Pin [9a4380]  'VMR Input1' [Input]
tstcon32.exe(tid 16f0)   125340 :           Pin [9a3b30]  'VMR Input2' [Input]
tstcon32.exe(tid 16f0)   125340 :           Pin [9a38f0]  'VMR Input3' [Input]
tstcon32.exe(tid 16f0)   125340 :     Filter [9a0800]  'color Space'
tstcon32.exe(tid 16f0)   125340 :           Pin [9a0938]  'Input' [Input]  
Connected to pin [9b99dc]
tstcon32.exe(tid 16f0)   125341 :           Pin [9b80a0]  'XForm Out' 
[Output]  Connected to pin [9a4690]
tstcon32.exe(tid 16f0)   125341 : 
tstcon32.exe(tid 16f0)   125341 : Connection type  M type MEDIATYPE_Video  S 
type MEDIASUBTYPE_ARGB32
tstcon32.exe(tid 16f0)   125341 : Subtype description ARGB 32
tstcon32.exe(tid 16f0)   125341 : Not temporally compressed
tstcon32.exe(tid 16f0)   125341 : Sample size 307200
tstcon32.exe(tid 16f0)   125341 : Source rectangle (Left 0 Top 0 Right 0 
Bottom 0)
tstcon32.exe(tid 16f0)   125341 : Target rectangle (Left 0 Top 0 Right 0 
Bottom 0)
tstcon32.exe(tid 16f0)   125341 : Size of BITMAPINFO structure 40
tstcon32.exe(tid 16f0)   125341 : 320x240x32 bit  (0)
tstcon32.exe(tid 16f0)   125341 : Image size 307200
tstcon32.exe(tid 16f0)   125341 : Planes 1
tstcon32.exe(tid 16f0)   125341 : X Pels per metre 0
tstcon32.exe(tid 16f0)   125341 : Y Pels per metre 0
tstcon32.exe(tid 16f0)   125341 : Colours used 0
tstcon32.exe(tid 16f0)   125341 :     Filter [9b9c4c]  'Strech'
tstcon32.exe(tid 16f0)   125341 :           Pin [9b9adc]  'Input' [Input]  
Connected to pin [9a52cc]
tstcon32.exe(tid 16f0)   125341 :           Pin [9b99dc]  'Output' [Output]  
Connected to pin [9a0938]
tstcon32.exe(tid 16f0)   125341 : 
tstcon32.exe(tid 16f0)   125341 : Connection type  M type MEDIATYPE_Video  S 
type MEDIASUBTYPE_RGB24
tstcon32.exe(tid 16f0)   125341 : Subtype description RGB 24
tstcon32.exe(tid 16f0)   125341 : Not temporally compressed
tstcon32.exe(tid 16f0)   125342 : Sample size 230400
tstcon32.exe(tid 16f0)   125342 : Source rectangle (Left 0 Top 0 Right 0 
Bottom 0)
tstcon32.exe(tid 16f0)   125342 : Target rectangle (Left 0 Top 0 Right 0 
Bottom 0)
tstcon32.exe(tid 16f0)   125342 : Size of BITMAPINFO structure 40
tstcon32.exe(tid 16f0)   125342 : 320x240x24 bit  (0)
tstcon32.exe(tid 16f0)   125342 : Image size 230400
tstcon32.exe(tid 16f0)   125342 : Planes 1
tstcon32.exe(tid 16f0)   125342 : X Pels per metre 0
tstcon32.exe(tid 16f0)   125342 : Y Pels per metre 0
tstcon32.exe(tid 16f0)   125342 : Colours used 0
tstcon32.exe(tid 16f0)   125342 :     Filter [9a54dc]  'WMV DMO Decoder'
tstcon32.exe(tid 16f0)   125342 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)   125345 :           Pin [9a53ec]  'in0' [Input]  
Connected to pin [1c58420]
tstcon32.exe(tid 16f0)   125345 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)   125345 :           Pin [9a52cc]  'out0' [Output]  
Connected to pin [9b9adc]
tstcon32.exe(tid 16f0)   125345 : 
tstcon32.exe(tid 16f0)   125345 : Connection type  M type MEDIATYPE_Video  S 
type MEDIASUBTYPE_YV12
tstcon32.exe(tid 16f0)   125345 : Subtype description UNKNOWN
tstcon32.exe(tid 16f0)   125345 : Not temporally compressed
tstcon32.exe(tid 16f0)   125345 : Sample size 115200
tstcon32.exe(tid 16f0)   125345 : Source rectangle (Left 0 Top 0 Right 0 
Bottom 0)
tstcon32.exe(tid 16f0)   125345 : Target rectangle (Left 0 Top 0 Right 0 
Bottom 0)
tstcon32.exe(tid 16f0)   125345 : Size of BITMAPINFO structure 40
tstcon32.exe(tid 16f0)   125345 : 240x320x12 bit 'YV12'
tstcon32.exe(tid 16f0)   125345 : Image size 115200
tstcon32.exe(tid 16f0)   125345 : Planes 1
tstcon32.exe(tid 16f0)   125345 : X Pels per metre 0
tstcon32.exe(tid 16f0)   125345 : Y Pels per metre 0
tstcon32.exe(tid 16f0)   125345 : Colours used 0
tstcon32.exe(tid 16f0)   125345 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)   125345 :     Filter [1c582b0]  'RTP RX'
tstcon32.exe(tid 16f0)   125346 : Object created   11 (Pin Cache) 4 Active
tstcon32.exe(tid 16f0)   125346 : Object created   12 (CEnumPins) 5 Active
tstcon32.exe(tid 16f0)   125346 :     Obj 1 ref++ = 5
tstcon32.exe(tid 16f0)   125346 :     Obj 1 ref++ = 6
tstcon32.exe(tid 16f0)   125346 : Object created   13 (List node) 6 Active
tstcon32.exe(tid 16f0)   125346 :     Obj 1 ref++ = 7
tstcon32.exe(tid 16f0)   125346 :     Object 1 ref-- = 6
tstcon32.exe(tid 16f0)   125346 :           Pin [1c58420]  'Out' [Output]  
Connected to pin [9a53ec]
tstcon32.exe(tid 16f0)   125346 : 
tstcon32.exe(tid 16f0)   125346 : Connection type  M type MEDIATYPE_Video  S 
type Unknown GUID Name
tstcon32.exe(tid 16f0)   125346 : Subtype description UNKNOWN
tstcon32.exe(tid 16f0)   125346 : Temporally compressed
tstcon32.exe(tid 16f0)   125346 : Variable size samples
tstcon32.exe(tid 16f0)   125346 : Source rectangle (Left 0 Top 0 Right 0 
Bottom 0)
tstcon32.exe(tid 16f0)   125346 : Target rectangle (Left 0 Top 0 Right 0 
Bottom 0)
tstcon32.exe(tid 16f0)   125346 : Size of BITMAPINFO structure 45
tstcon32.exe(tid 16f0)   125346 : 240x320x24 bit 'WMV3'
tstcon32.exe(tid 16f0)   125346 : Image size 115200
tstcon32.exe(tid 16f0)   125346 : Planes 1
tstcon32.exe(tid 16f0)   125346 : X Pels per metre 0
tstcon32.exe(tid 16f0)   125346 : Y Pels per metre 0
tstcon32.exe(tid 16f0)   125346 : Colours used 0
tstcon32.exe(tid 16f0)   125347 :     Object 1 ref-- = 5
tstcon32.exe(tid 16f0)   125347 :     Object 1 ref-- = 4
tstcon32.exe(tid 16f0)   125347 : Object destroyed 12 (CEnumPins) 5 Active
tstcon32.exe(tid 16f0)   125347 : Object destroyed 13 (List node) 4 Active
tstcon32.exe(tid 16f0)   125347 : Object destroyed 11 (Pin Cache) 3 Active
tstcon32.exe(tid 16f0)   125347 :     Object 1 ref-- = 3
tstcon32.exe(tid 150c)   125785 : Deliver() returned 80040227; stopping
tstcon32.exe(tid 150c)   125785 : CSourceStream worker thread exiting
tstcon32.exe(tid 16f0)   125787 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)   125787 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)   125787 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)   125787 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)   125787 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)   125787 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)   125787 :     Obj 1 ref++ = 4
tstcon32.exe(tid 16f0)   125787 :     Object 1 ref-- = 3
tstcon32.exe(tid 16f0)   125804 :     Object 3 ref-- = 0
tstcon32.exe(tid 16f0)   125805 : Object destroyed 3 (RTP-Transmit-Filter) 2 
Active
tstcon32.exe(tid 16f0)   125805 :     Object 1 ref-- = 2


============================================================



=====DbgInitialize()=====

quartz.dll(tid 16f0)       29 : CMpegAudioCodec::InitClass
quartz.dll(tid 16f0)       39 : CMpegVideoCodec::InitClass
quartz.dll(tid 444)       63 : Clearing Segments
quartz.dll(tid 444)       63 : Created window class (FilterGraphWindow) 
HWND(00010B00)
quartz.dll(tid 16f0)       73 : 
CVMRRendererMacroVision::CVMRRendererMacroVision()
quartz.dll(tid 16f0)      470 : Created window class (VideoRenderer) 
HWND(00010B04)
quartz.dll(tid 16f0)      471 : Allowed = 1
quartz.dll(tid 16f0)      471 : Mode = 2
quartz.dll(tid 16f0)      471 : Inactivated
quartz.dll(tid 16f0)      471 : Reset window styles 47120384
quartz.dll(tid 16f0)      471 : Destroying 0x00010B04
quartz.dll(tid 16f0)      508 : DST: 0 0 192 192
quartz.dll(tid 142c)      508 : 
+++ New Frame +++
quartz.dll(tid 16f0)      510 : creating new mapper cache.
quartz.dll(tid 16f0)      510 : Entering(CMapperCache::Cache)
quartz.dll(tid 16f0)      510 : Creating System Dev Enum
quartz.dll(tid 16f0)      510 : Created System Dev Enum
quartz.dll(tid 16f0)      516 : CMapperCache: enumerating W
quartz.dll(tid 16f0)      516 : Process one category enter
quartz.dll(tid 16f0)      519 : Start caching filters

<snip>



quartz.dll(tid 16f0)     2929 : The filter has been added to the graph
quartz.dll(tid 16f0)     2929 : GetSite
quartz.dll(tid 16f0)     3050 : Filter 9a54dc 'WMV DMO Decoder' Iunknown 
9a54d0
quartz.dll(tid 16f0)     3050 : The filter has been added to the graph
quartz.dll(tid 16f0)     3064 : CTransformInputPin::CTransformInputPin
quartz.dll(tid 16f0)     3250 : Entering GetPin
quartz.dll(tid 16f0)     3250 : CTransformOutputPin::CTransformOutputPin
quartz.dll(tid 16f0)     3250 : Entering GetPin
quartz.dll(tid 16f0)     3250 : Filter 9b9c4c 'Strech' Iunknown 9b9c40
quartz.dll(tid 16f0)     3250 : The filter has been added to the graph
quartz.dll(tid 16f0)     3250 : Filter 9a0800 'color Space' Iunknown 9a07f0
quartz.dll(tid 16f0)     3250 : The filter has been added to the graph
quartz.dll(tid 16f0)     3250 : Filter 1c582b0 'RTP RX' Iunknown 1c582a0
quartz.dll(tid 16f0)     3250 : The filter has been added to the graph
quartz.dll(tid 16f0)     3251 : ConnectDirectInternal pins 1c58420-->9a53ec
quartz.dll(tid 16f0)     3301 : ConnectDirectInternal succeeded pins 
1c58420==>9a53ec
quartz.dll(tid 16f0)     3301 : ConnectDirectInternal pins 9a52cc-->9b9adc
quartz.dll(tid 16f0)     3301 : ConnectDirectInternal succeeded pins 
9a52cc==>9b9adc
quartz.dll(tid 16f0)     3301 : ConnectDirectInternal pins 9b99dc-->9a0938
quartz.dll(tid 16f0)     3301 : Entering GetPin
quartz.dll(tid 16f0)     3301 : Entering GetPin
quartz.dll(tid 16f0)     3301 : Entering CheckMediaType
quartz.dll(tid 16f0)     3301 : Entering CheckInputType
quartz.dll(tid 16f0)     3301 : Entering CheckVideoType
quartz.dll(tid 16f0)     3301 : 
quartz.dll(tid 16f0)     3301 : Input type offered  M type MEDIATYPE_Video  
S type MEDIASUBTYPE_RGB24
quartz.dll(tid 16f0)     3327 : Subtype description RGB 24
quartz.dll(tid 16f0)     3327 : Not temporally compressed
quartz.dll(tid 16f0)     3327 : Sample size 230400
quartz.dll(tid 16f0)     3327 : Source rectangle (Left 0 Top 0 Right 0 
Bottom 0)
quartz.dll(tid 16f0)     3327 : Target rectangle (Left 0 Top 0 Right 0 
Bottom 0)
quartz.dll(tid 16f0)     3327 : Size of BITMAPINFO structure 40
quartz.dll(tid 16f0)     3327 : 320x240x24 bit  (0)
quartz.dll(tid 16f0)     3327 : Image size 230400
quartz.dll(tid 16f0)     3327 : Planes 1
quartz.dll(tid 16f0)     3327 : X Pels per metre 0
quartz.dll(tid 16f0)     3327 : Y Pels per metre 0
quartz.dll(tid 16f0)     3327 : Colours used 0
quartz.dll(tid 16f0)     3327 : Entering FindOutputType
quartz.dll(tid 16f0)     3327 : Entering CheckInputType
quartz.dll(tid 16f0)     3327 : Entering CheckVideoType
quartz.dll(tid 16f0)     3327 : 
quartz.dll(tid 16f0)     3327 : Input type offered  M type MEDIATYPE_Video  
S type MEDIASUBTYPE_RGB24
quartz.dll(tid 16f0)     3327 : Subtype description RGB 24
quartz.dll(tid 16f0)     3327 : Not temporally compressed
quartz.dll(tid 16f0)     3327 : Sample size 230400
quartz.dll(tid 16f0)     3327 : Source rectangle (Left 0 Top 0 Right 0 
Bottom 0)
quartz.dll(tid 16f0)     3327 : Target rectangle (Left 0 Top 0 Right 0 
Bottom 0)
quartz.dll(tid 16f0)     3327 : Size of BITMAPINFO structure 40
quartz.dll(tid 16f0)     3327 : 320x240x24 bit  (0)
quartz.dll(tid 16f0)     3327 : Image size 230400
quartz.dll(tid 16f0)     3327 : Planes 1
quartz.dll(tid 16f0)     3327 : X Pels per metre 0
quartz.dll(tid 16f0)     3327 : Y Pels per metre 0
quartz.dll(tid 16f0)     3327 : Colours used 0
quartz.dll(tid 16f0)     3327 : Entering FindOutputType
quartz.dll(tid 16f0)     3327 : Entering SetMediaType
quartz.dll(tid 16f0)     3327 : Entering CompleteConnect
quartz.dll(tid 16f0)     3327 : Loading media types from source filter
quartz.dll(tid 16f0)     3327 : Entering LoadMediaTypes
quartz.dll(tid 16f0)     3327 : Entering InitTypeList
quartz.dll(tid 16f0)     3327 : Entering FillTypeList
quartz.dll(tid 16f0)     3327 : Entering GetNextMediaType
quartz.dll(tid 16f0)     3327 : Source rejected type
quartz.dll(tid 16f0)     3328 : Entering GetNextMediaType
quartz.dll(tid 16f0)     3328 : Entering CheckVideoType
quartz.dll(tid 16f0)     3328 : Format is RGB
quartz.dll(tid 16f0)     3328 : Entering GetNextMediaType
quartz.dll(tid 16f0)     3328 : No more types
quartz.dll(tid 16f0)     3328 : ConnectDirectInternal succeeded pins 
9b99dc==>9a0938
quartz.dll(tid 16f0)     3328 : ConnectDirectInternal pins 9b80a0-->9a4690
quartz.dll(tid 16f0)     3328 : Trying to connect Pins :
quartz.dll(tid 16f0)     3328 :     <XForm Out>
quartz.dll(tid 16f0)     3328 :     <VMR Input0>
quartz.dll(tid 16f0)     3328 : Entering GetMediaType
quartz.dll(tid 16f0)     3328 : Entering PrepareMediaType
quartz.dll(tid 16f0)     3328 : Trying media type:
quartz.dll(tid 16f0)     3328 :     major type:  MEDIATYPE_Video
quartz.dll(tid 16f0)     3328 :     sub type  :  MEDIASUBTYPE_ARGB32
quartz.dll(tid 16f0)     3328 : Entering CheckTransform
quartz.dll(tid 16f0)     3328 : Entering CheckVideoType
quartz.dll(tid 16f0)     3328 : Entering FindTransform
quartz.dll(tid 16f0)     3328 : ((Expanded) Source rectangle)
quartz.dll(tid 16f0)     3328 :   Left 0
quartz.dll(tid 16f0)     3328 :   Top 0
quartz.dll(tid 16f0)     3328 :   Right 320
quartz.dll(tid 16f0)     3328 :   Bottom 240
quartz.dll(tid 16f0)     3328 : ((Expanded) Target rectangle)
quartz.dll(tid 16f0)     3328 :   Left 0
quartz.dll(tid 16f0)     3328 :   Top 0
quartz.dll(tid 16f0)     3328 :   Right 320
quartz.dll(tid 16f0)     3328 :   Bottom 240
quartz.dll(tid 16f0)     3328 : No stretch
quartz.dll(tid 16f0)     3328 : Entering CheckTransform
quartz.dll(tid 16f0)     3328 : Entering CheckVideoType
quartz.dll(tid 16f0)     3328 : Entering FindTransform
quartz.dll(tid 16f0)     3328 : ((Expanded) Source rectangle)
quartz.dll(tid 16f0)     3328 :   Left 0
quartz.dll(tid 16f0)     3328 :   Top 0
quartz.dll(tid 16f0)     3328 :   Right 320
quartz.dll(tid 16f0)     3328 :   Bottom 240
quartz.dll(tid 16f0)     3328 : ((Expanded) Target rectangle)
quartz.dll(tid 16f0)     3328 :   Left 0
quartz.dll(tid 16f0)     3328 :   Top 0
quartz.dll(tid 16f0)     3328 :   Right 320
quartz.dll(tid 16f0)     3328 :   Bottom 240
quartz.dll(tid 16f0)     3328 : No stretch
quartz.dll(tid 16f0)     3328 : Entering SetMediaType
quartz.dll(tid 16f0)     3328 : Output source rectangle was empty
quartz.dll(tid 16f0)     3328 : Output destination rectangle was empty
quartz.dll(tid 16f0)     3328 : ReceiveConnection called on Pin 0
quartz.dll(tid 16f0)     3328 : 
pDirectDraw->QueryInterface(IID_IVideoAcceleratorContainer) succeeded
quartz.dll(tid 16f0)     3328 : 10110608 Motion comp GUIDs supported
quartz.dll(tid 16f0)     3328 : {773C9AC0-3274-11D0-B724-00AA006C1A01} is 
not suitable video accelerator GUID
quartz.dll(tid 16f0)     3336 : 33441776 Motion comp GUIDs supported
quartz.dll(tid 16f0)     3336 : {773C9AC0-3274-11D0-B724-00AA006C1A01} is 
not suitable video accelerator GUID
quartz.dll(tid 16f0)     3336 : 33441792 Motion comp GUIDs supported
quartz.dll(tid 16f0)     3336 : {773C9AC0-3274-11D0-B724-00AA006C1A01} is 
not suitable video accelerator GUID
quartz.dll(tid 16f0)     3336 : CompleteConnect called on Pin 0
quartz.dll(tid 16f0)     3336 : Entering CompleteConnect
quartz.dll(tid 16f0)     3336 : Entering DecideBufferSize
quartz.dll(tid 16f0)     3336 : SetStreamMediaType called for stream 0
quartz.dll(tid 16f0)     3336 : No more streams connected, FreeSurface called
quartz.dll(tid 16f0)     3336 : Entering CheckTransform
quartz.dll(tid 16f0)     3336 : Entering CheckVideoType
quartz.dll(tid 16f0)     3336 : Entering FindTransform
quartz.dll(tid 16f0)     3336 : ((Expanded) Source rectangle)
quartz.dll(tid 16f0)     3336 :   Left 0
quartz.dll(tid 16f0)     3336 :   Top 0
quartz.dll(tid 16f0)     3336 :   Right 320
quartz.dll(tid 16f0)     3336 :   Bottom 240
quartz.dll(tid 16f0)     3336 : ((Expanded) Target rectangle)
quartz.dll(tid 16f0)     3336 :   Left 0
quartz.dll(tid 16f0)     3336 :   Top 0
quartz.dll(tid 16f0)     3336 :   Right 320
quartz.dll(tid 16f0)     3336 :   Bottom 240
quartz.dll(tid 16f0)     3336 : No stretch
quartz.dll(tid 16f0)     3341 : Pin 0 calling QueryAccept on the Decoder
quartz.dll(tid 16f0)     3342 : Entering CheckTransform
quartz.dll(tid 16f0)     3342 : Entering CheckVideoType
quartz.dll(tid 16f0)     3342 : Entering FindTransform
quartz.dll(tid 16f0)     3342 : ((Expanded) Source rectangle)
quartz.dll(tid 16f0)     3342 :   Left 0
quartz.dll(tid 16f0)     3342 :   Top 0
quartz.dll(tid 16f0)     3342 :   Right 320
quartz.dll(tid 16f0)     3342 :   Bottom 240
quartz.dll(tid 16f0)     3342 : ((Expanded) Target rectangle)
quartz.dll(tid 16f0)     3342 :   Left 0
quartz.dll(tid 16f0)     3342 :   Top 0
quartz.dll(tid 16f0)     3342 :   Right 320
quartz.dll(tid 16f0)     3342 :   Bottom 240
quartz.dll(tid 16f0)     3342 : No stretch
quartz.dll(tid 16f0)     3342 : Pin 0 calling SetStreamMediaType on the Mixer
quartz.dll(tid 16f0)     3342 : SetStreamMediaType called for stream 0
quartz.dll(tid 16f0)     3342 : Allocating first back end surface 320x240
quartz.dll(tid 16f0)     3343 : 
EC_VMR_RENDERDEVICE_SET::VMR_RENDER_DEVICE_VIDMEM
quartz.dll(tid 16f0)     3343 : Failed 
!FAILED(GetVideoDescFromMT(&VideoDesc, &m_mt)) at line 1549 of file 
d:\builds\nt32_chk\multimedia\dshow\filters\image9\mixer\mixerstream.cpp
quartz.dll(tid 16f0)     3343 : Request ok
quartz.dll(tid 16f0)     3343 : Entering CompleteConnect
quartz.dll(tid 16f0)     3343 : Entering CanSupplyType
quartz.dll(tid 16f0)     3343 : Connection succeeded
quartz.dll(tid 16f0)     3343 : ConnectDirectInternal succeeded pins 
9b80a0==>9a4690
quartz.dll(tid 16f0)     3343 : Entering GetPin
quartz.dll(tid 16f0)     3343 : Entering GetPin
quartz.dll(tid 16f0)     3344 : Entering GetPin
quartz.dll(tid 16f0)     3344 : Entering GetPin
quartz.dll(tid 16f0)     3344 : Entering GetPin
quartz.dll(tid 16f0)     3344 : Entering GetPin
quartz.dll(tid 16f0)     3344 : Entering GetPin
quartz.dll(tid 16f0)     3344 : Entering GetPin
quartz.dll(tid 16f0)     3344 : Entering GetPin
quartz.dll(tid 16f0)     3344 : Entering GetPin
quartz.dll(tid 444)     3344 : Clearing Segments
quartz.dll(tid 444)     3345 : Created window class (FilterGraphWindow) 
HWND(00060B04)
quartz.dll(tid 16f0)     6492 : Created system clock
quartz.dll(tid 16f0)     6492 : Active called on Pin 0
quartz.dll(tid 142c)     6492 : 
+++ New Frame +++
quartz.dll(tid 16f0)     6492 : CImageSync::HaveSavedSample = 0
quartz.dll(tid 16f0)     6519 : Entering StartStreaming
quartz.dll(tid 16f0)     6519 : Entering CreateConvertorObject
quartz.dll(tid 16f0)     6519 : Entering FindTransform
quartz.dll(tid 16f0)     6519 : Entering DeleteConvertorObject
quartz.dll(tid 16f0)     6519 : None made
quartz.dll(tid 16f0)     6519 : Commit convertor
quartz.dll(tid 16f0)     6519 : Entering GetPin
quartz.dll(tid 16f0)     6519 : Entering GetPin
quartz.dll(tid 16f0)     6525 : CueThenRun Async
quartz.dll(tid 16f0)     6527 : Initializing the number of renderers 
running.  001 rendererers are running.
quartz.dll(tid 16f0)     6527 : DeferCued 1026 2
quartz.dll(tid 16f0)     6527 : CheckCued recue
quartz.dll(tid 444)     6538 : Timer message
quartz.dll(tid 444)     6538 : CheckCued on timer
quartz.dll(tid 444)     6538 : CheckCued recue
quartz.dll(tid 444)     6547 : Timer message
quartz.dll(tid 444)     6547 : CheckCued on timer
quartz.dll(tid 444)     6547 : CheckCued recue
quartz.dll(tid 444)     6562 : Timer message
quartz.dll(tid 444)     6562 : CheckCued on timer
quartz.dll(tid 444)     6562 : CheckCued recue
quartz.dll(tid 444)     6578 : Timer message
quartz.dll(tid 444)     6578 : CheckCued on timer
quartz.dll(tid 444)     6578 : CheckCued recue
quartz.dll(tid 444)     6597 : Timer message
quartz.dll(tid 444)     6597 : CheckCued on timer
quartz.dll(tid 444)     6597 : CheckCued recue
quartz.dll(tid 444)     6607 : Timer message
quartz.dll(tid 444)     6607 : CheckCued on timer
quartz.dll(tid 444)     6607 : CheckCued recue
quartz.dll(tid 444)     6626 : Timer message
quartz.dll(tid 444)     6626 : CheckCued on timer
quartz.dll(tid 444)     6626 : CheckCued recue
quartz.dll(tid 444)     6642 : Timer message
quartz.dll(tid 444)     6642 : CheckCued on timer
quartz.dll(tid 444)     6642 : CheckCued recue
quartz.dll(tid 444)     6655 : Timer message
quartz.dll(tid 444)     6655 : CheckCued on timer
quartz.dll(tid 444)     6655 : CheckCued recue
quartz.dll(tid 444)     6670 : Timer message
quartz.dll(tid 444)     6670 : CheckCued on timer
quartz.dll(tid 444)     6670 : CheckCued recue
quartz.dll(tid 444)     6693 : Timer message
quartz.dll(tid 444)     6693 : CheckCued on timer

<snip>
date: Mon, 7 Jul 2008 11:43:01 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
From: "Kris"

> tstcon32.exe(tid 150c)   125785 :
> Deliver() returned 80040227; stopping
> tstcon32.exe(tid 150c)   125785 :
> CSourceStream worker thread exiting

If I was able to make sense out of your log, apparently your 
source is getting a VFW_E_WRONG_STATE when it tries to 
Deliver() to the decoder.

Are the pins connected, media type and allocator and all? Is 
the graph running/paused? Do you get any error HRESULT 
before this? Do you receive an error event from the graph?


-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Tue, 8 Jul 2008 14:26:46 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
I think this is when I close the app. I have that same error in the working 
traces. I get no other errors.

The pins all connect with success. I am using ConnectDirect.

I read on msdn "For video content stored in a container other than ASF, the 
MFPKEY_ASFOVERHEADPERFRAME property must be set to 0. This is not the default 
value."

They say to change this value using IPropertyBag::Write   ... but I have not 
been able to do so on the DMO obj. I can QueryInterface the IPropertyBag 
successfully but cannot seem to be able to read anything.

http://msdn.microsoft.com/en-us/library/bb331861(VS.85).aspx

Thanks
Kris

"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > tstcon32.exe(tid 150c)   125785 :
> > Deliver() returned 80040227; stopping
> > tstcon32.exe(tid 150c)   125785 :
> > CSourceStream worker thread exiting
> 
> If I was able to make sense out of your log, apparently your 
> source is getting a VFW_E_WRONG_STATE when it tries to 
> Deliver() to the decoder.
> 
> Are the pins connected, media type and allocator and all? Is 
> the graph running/paused? Do you get any error HRESULT 
> before this? Do you receive an error event from the graph?
> 
> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm 
> 
> 
>
date: Tue, 8 Jul 2008 11:53:13 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
From: "Kris"

> I think this is when I close the app. I have that same
> error in the working traces. I get no other errors.
>
> The pins all connect with success. I am using
> ConnectDirect.

Do GetDeliveryBuffer() and Deliver() always return 
successfully? Do you set the syncpoint flag on the 
keyframes? The DMO does no decode until it sees a keyframe.

> I read on msdn "For video content stored in a container
> other than ASF, the MFPKEY_ASFOVERHEADPERFRAME property
> must be set to 0. This is not the default value."
>
> They say to change this value using IPropertyBag::Write
> ... but I have not been able to do so on the DMO obj. I
> can QueryInterface the IPropertyBag successfully but
> cannot seem to be able to read anything.

Why should you be able to read? I mean, the IPropertyBag 
implemented by the DMO may support reading the values back, 
but that is not what the documentation says: only writing to 
it is mentioned. Besides, the page you quoted refers to the 
Win32 encoder DMO, not the WinCE one. I used the latter and 
I had no problem decoding the samples on XP, without messing 
around with that property.



-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Tue, 8 Jul 2008 15:04:10 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > I think this is when I close the app. I have that same
> > error in the working traces. I get no other errors.
> >
> > The pins all connect with success. I am using
> > ConnectDirect.
> 
> Do GetDeliveryBuffer() and Deliver() always return 

My code does not call the GetDeliveryBuffer90 or Deliver90 methods. It have 
a FillBuffer() in my custom filter on the receiver end. 

> successfully? Do you set the syncpoint flag on the 
> keyframes? The DMO does no decode until it sees a keyframe.

I am very green to all this. I do not think I am doing this? what is a 
keyframe?

Also is there a way to set DEBUG trace on the DMOs?





> 
> > I read on msdn "For video content stored in a container
> > other than ASF, the MFPKEY_ASFOVERHEADPERFRAME property
> > must be set to 0. This is not the default value."
> >
> > They say to change this value using IPropertyBag::Write
> > ... but I have not been able to do so on the DMO obj. I
> > can QueryInterface the IPropertyBag successfully but
> > cannot seem to be able to read anything.
> 
> Why should you be able to read? I mean, the IPropertyBag 
> implemented by the DMO may support reading the values back, 
> but that is not what the documentation says: only writing to 
> it is mentioned. Besides, the page you quoted refers to the 
> Win32 encoder DMO, not the WinCE one. I used the latter and 
> I had no problem decoding the samples on XP, without messing 
> around with that property.
> 

To be honest ... I am not 100% certain how PropertyBag works ;-) 
I am sending a live stream and not saving anything into containers so was 
thinking this is something I maybe needed to do.


> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm 
> 
> 
>
date: Tue, 8 Jul 2008 12:24:04 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
From: "Kris"

> I am very green to all this. I do not think I am doing
> this? what is a keyframe?

Compressed frames can be decoded on their own (keyframes) or 
require other frames to be decoded (delta frames). Decoding 
can only start on a keyframe boundary. IMediaSamples have 
some metadata attached to them:

- start and stop times (IMediaSample::GetTime(), not 
IMediaSample::GetMediaTime())
- syncpoint, preroll and discontinuity flags (syncpoint == 
splicepoint == cleanpoint == keyframe == I-picture)

To properly decode the samples, you need to at least 
transmit the syncpoint flag. You should also keep the 
preroll and discontinuity flags (but it is unlikely you are 
going to see those in your scenario). To keep 
synchronization with other streams (if any) you should also 
keep the timestamps.

> Also is there a way to set DEBUG trace on the DMOs?

No.

-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Tue, 8 Jul 2008 15:56:48 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
How do I transmit the syncpoint flag? By using IMediaSample::SetSyncPoint?? 
Will this modify the actual encoded stream for the decoder to read?

Note that this scenario was working with a DIVX decoder/encoder (in that 
scenario a laptop was used and not a mobile). 

Thanks,
Kris

"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > I am very green to all this. I do not think I am doing
> > this? what is a keyframe?
> 
> Compressed frames can be decoded on their own (keyframes) or 
> require other frames to be decoded (delta frames). Decoding 
> can only start on a keyframe boundary. IMediaSamples have 
> some metadata attached to them:
> 
> - start and stop times (IMediaSample::GetTime(), not 
> IMediaSample::GetMediaTime())
> - syncpoint, preroll and discontinuity flags (syncpoint == 
> splicepoint == cleanpoint == keyframe == I-picture)
> 
> To properly decode the samples, you need to at least 
> transmit the syncpoint flag. You should also keep the 
> preroll and discontinuity flags (but it is unlikely you are 
> going to see those in your scenario). To keep 
> synchronization with other streams (if any) you should also 
> keep the timestamps.
> 
> > Also is there a way to set DEBUG trace on the DMOs?
> 
> No.
> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm 
> 
> 
>
date: Tue, 8 Jul 2008 13:28:05 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
From: "Kris"

> How do I transmit the syncpoint flag? By using
> IMediaSample::SetSyncPoint?? Will this modify the actual
> encoded stream for the decoder to read?

Get the flag on the encoder side, transmit it to the decoder
side, set it on the sample before deliverying it. The sample
is metadata, it does not change the contents of the sample
buffer.

> Note that this scenario was working with a DIVX
> decoder/encoder (in that scenario a laptop was used and
> not a mobile).

You've been lucky because the stream packing you had
included the required metadata in the stream itself and the
decoder you were using did not rely on the sample flags.

In the general case, you need to replicate the whole media 
sample, not just its data buffer.

-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Tue, 8 Jul 2008 16:46:31 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
So one the encoder side ... use IMediaSample::IsSyncPoint()  (this is just a 
true/false flag).

Then when I get it on the receiver side use IMediaSample::SetSyncPoint 
correct?

Also how to I access the IMediaSample?

Thanks for your help,
Kristine

"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > How do I transmit the syncpoint flag? By using
> > IMediaSample::SetSyncPoint?? Will this modify the actual
> > encoded stream for the decoder to read?
> 
> Get the flag on the encoder side, transmit it to the decoder
> side, set it on the sample before deliverying it. The sample
> is metadata, it does not change the contents of the sample
> buffer.
> 
> > Note that this scenario was working with a DIVX
> > decoder/encoder (in that scenario a laptop was used and
> > not a mobile).
> 
> You've been lucky because the stream packing you had
> included the required metadata in the stream itself and the
> decoder you were using did not rely on the sample flags.
> 
> In the general case, you need to replicate the whole media 
> sample, not just its data buffer.
> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm
> 
> 
> 
> 
> 
>
date: Tue, 8 Jul 2008 14:25:07 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
Me again ... 

Looking at the custom filter code I see that SetActualDataLength is about 
the only thing that was set on the IMediaSample. This was done on the 
FillBuffer() method.

Disregard the comment about how to access IMediaSample.

Thanks for your help,
Kristine

"Kris" wrote:

> So one the encoder side ... use IMediaSample::IsSyncPoint()  (this is just a 
> true/false flag).
> 
> Then when I get it on the receiver side use IMediaSample::SetSyncPoint 
> correct?
> 
> Also how to I access the IMediaSample?
> 
> Thanks for your help,
> Kristine
> 
> "Alessandro Angeli" wrote:
> 
> > From: "Kris"
> > 
> > > How do I transmit the syncpoint flag? By using
> > > IMediaSample::SetSyncPoint?? Will this modify the actual
> > > encoded stream for the decoder to read?
> > 
> > Get the flag on the encoder side, transmit it to the decoder
> > side, set it on the sample before deliverying it. The sample
> > is metadata, it does not change the contents of the sample
> > buffer.
> > 
> > > Note that this scenario was working with a DIVX
> > > decoder/encoder (in that scenario a laptop was used and
> > > not a mobile).
> > 
> > You've been lucky because the stream packing you had
> > included the required metadata in the stream itself and the
> > decoder you were using did not rely on the sample flags.
> > 
> > In the general case, you need to replicate the whole media 
> > sample, not just its data buffer.
> > 
> > -- 
> > // Alessandro Angeli
> > // MVP :: DirectShow / MediaFoundation
> > // mvpnews at riseoftheants dot com
> > // http://www.riseoftheants.com/mmx/faq.htm
> > 
> > 
> > 
> > 
> > 
> >
date: Tue, 8 Jul 2008 15:09:03 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
Hi Alessandro,

setting the synchPoint worked thanks so much. 

BUT ... it only displays one frame (the first one) for some reason. Is there 
anything else I should be setting on the IMediaSample ?

Also on the encoder side, the first frame as a synchPoint set to FALSE and 
the rest of the frames are all TRUE.

Thanks,
Kristine

"Kris" wrote:

> Me again ... 
> 
> Looking at the custom filter code I see that SetActualDataLength is about 
> the only thing that was set on the IMediaSample. This was done on the 
> FillBuffer() method.
> 
> Disregard the comment about how to access IMediaSample.
> 
> Thanks for your help,
> Kristine
> 
> "Kris" wrote:
> 
> > So one the encoder side ... use IMediaSample::IsSyncPoint()  (this is just a 
> > true/false flag).
> > 
> > Then when I get it on the receiver side use IMediaSample::SetSyncPoint 
> > correct?
> > 
> > Also how to I access the IMediaSample?
> > 
> > Thanks for your help,
> > Kristine
> > 
> > "Alessandro Angeli" wrote:
> > 
> > > From: "Kris"
> > > 
> > > > How do I transmit the syncpoint flag? By using
> > > > IMediaSample::SetSyncPoint?? Will this modify the actual
> > > > encoded stream for the decoder to read?
> > > 
> > > Get the flag on the encoder side, transmit it to the decoder
> > > side, set it on the sample before deliverying it. The sample
> > > is metadata, it does not change the contents of the sample
> > > buffer.
> > > 
> > > > Note that this scenario was working with a DIVX
> > > > decoder/encoder (in that scenario a laptop was used and
> > > > not a mobile).
> > > 
> > > You've been lucky because the stream packing you had
> > > included the required metadata in the stream itself and the
> > > decoder you were using did not rely on the sample flags.
> > > 
> > > In the general case, you need to replicate the whole media 
> > > sample, not just its data buffer.
> > > 
> > > -- 
> > > // Alessandro Angeli
> > > // MVP :: DirectShow / MediaFoundation
> > > // mvpnews at riseoftheants dot com
> > > // http://www.riseoftheants.com/mmx/faq.htm
> > > 
> > > 
> > > 
> > > 
> > > 
> > >
date: Wed, 9 Jul 2008 08:50:03 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
Ah ... it's acutally not stuck on the first frame ... but playing in *super* 
slow motion... like a minute to do movement changes.

"Kris" wrote:

> Hi Alessandro,
> 
> setting the synchPoint worked thanks so much. 
> 
> BUT ... it only displays one frame (the first one) for some reason. Is there 
> anything else I should be setting on the IMediaSample ?
> 
> Also on the encoder side, the first frame as a synchPoint set to FALSE and 
> the rest of the frames are all TRUE.
> 
> Thanks,
> Kristine
> 
> "Kris" wrote:
> 
> > Me again ... 
> > 
> > Looking at the custom filter code I see that SetActualDataLength is about 
> > the only thing that was set on the IMediaSample. This was done on the 
> > FillBuffer() method.
> > 
> > Disregard the comment about how to access IMediaSample.
> > 
> > Thanks for your help,
> > Kristine
> > 
> > "Kris" wrote:
> > 
> > > So one the encoder side ... use IMediaSample::IsSyncPoint()  (this is just a 
> > > true/false flag).
> > > 
> > > Then when I get it on the receiver side use IMediaSample::SetSyncPoint 
> > > correct?
> > > 
> > > Also how to I access the IMediaSample?
> > > 
> > > Thanks for your help,
> > > Kristine
> > > 
> > > "Alessandro Angeli" wrote:
> > > 
> > > > From: "Kris"
> > > > 
> > > > > How do I transmit the syncpoint flag? By using
> > > > > IMediaSample::SetSyncPoint?? Will this modify the actual
> > > > > encoded stream for the decoder to read?
> > > > 
> > > > Get the flag on the encoder side, transmit it to the decoder
> > > > side, set it on the sample before deliverying it. The sample
> > > > is metadata, it does not change the contents of the sample
> > > > buffer.
> > > > 
> > > > > Note that this scenario was working with a DIVX
> > > > > decoder/encoder (in that scenario a laptop was used and
> > > > > not a mobile).
> > > > 
> > > > You've been lucky because the stream packing you had
> > > > included the required metadata in the stream itself and the
> > > > decoder you were using did not rely on the sample flags.
> > > > 
> > > > In the general case, you need to replicate the whole media 
> > > > sample, not just its data buffer.
> > > > 
> > > > -- 
> > > > // Alessandro Angeli
> > > > // MVP :: DirectShow / MediaFoundation
> > > > // mvpnews at riseoftheants dot com
> > > > // http://www.riseoftheants.com/mmx/faq.htm
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > >
date: Wed, 9 Jul 2008 09:22:03 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
From: "Kris"

> Ah ... it's acutally not stuck on the first frame ... but
> playing in *super* slow motion... like a minute to do
> movement changes.

To debug this I would log the following on both the sender 
and receiver side for each sample:

- current system time (::timeGetTime() - first sample's 
system time so that it is zero-based on both sides)
- sample start and stop time (IMediaSample::GetTime(); be 
sure to handle VFW_E_SAMPLE_TIME_NOT_SET and 
VFW_S_NO_STOP_TIME)
- sample flags (syncpoint, discontinuity, preroll)

Everything must match on both sides (the system time need 
only be almost the same).



-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Wed, 9 Jul 2008 13:01:17 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
sample flags (syncpoint, discontinuity, preroll) are set as the same ... 

IMediaSample::GetTime() is not set on the receiver side (it is set on the 
sending side). What values do I need to set for the start and end time? Do I 
need to ship those accross ?

Thanks,
Kris

"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > Ah ... it's acutally not stuck on the first frame ... but
> > playing in *super* slow motion... like a minute to do
> > movement changes.
> 
> To debug this I would log the following on both the sender 
> and receiver side for each sample:
> 
> - current system time (::timeGetTime() - first sample's 
> system time so that it is zero-based on both sides)
> - sample start and stop time (IMediaSample::GetTime(); be 
> sure to handle VFW_E_SAMPLE_TIME_NOT_SET and 
> VFW_S_NO_STOP_TIME)
> - sample flags (syncpoint, discontinuity, preroll)
> 
> Everything must match on both sides (the system time need 
> only be almost the same).
> 
> 
> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm 
> 
> 
>
date: Wed, 9 Jul 2008 11:36:01 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
From: "Kris"

> sample flags (syncpoint, discontinuity, preroll) are set
> as the same ...
>
> IMediaSample::GetTime() is not set on the receiver side
> (it is set on the sending side). What values do I need to
> set for the start and end time? Do I need to ship those
> accross ?

It depends on the exact graph (wjat is it?) but it would be 
better if you did.

On the sender side, substract the start time of the first 
sample from the values (so that they are zero-based). On the 
receiver side, use the value as they are or, if you are a 
live source, add to them the graph's current reference clock 
time of when you deliver the first sample).

You should still produce the 2 logs since they will give you 
clues on what is going on.

-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Wed, 9 Jul 2008 15:03:27 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
Actually the raw data (no encoder/decoder was used) did not set any time and 
it rendered fine. So maybe this is not the problem? My stream comes from a 
live source (the cam from the pocket pc).

I am not certain what you mean about what is the exact graph? I have my 
custom filer + DMO WMV 9 + VMR 9

Thanks,
Kristine

"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > sample flags (syncpoint, discontinuity, preroll) are set
> > as the same ...
> >
> > IMediaSample::GetTime() is not set on the receiver side
> > (it is set on the sending side). What values do I need to
> > set for the start and end time? Do I need to ship those
> > accross ?
> 
> It depends on the exact graph (wjat is it?) but it would be 
> better if you did.
> 
> On the sender side, substract the start time of the first 
> sample from the values (so that they are zero-based). On the 
> receiver side, use the value as they are or, if you are a 
> live source, add to them the graph's current reference clock 
> time of when you deliver the first sample).
> 
> You should still produce the 2 logs since they will give you 
> clues on what is going on.
> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm 
> 
> 
>
date: Wed, 9 Jul 2008 12:30:14 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
Acutally I think maybe the problem is on the encoder side. Looking at 
wireshark it seems the packets are not sent very fast.

On the Pocket PC ... I have the following graph
	hr = pFilterGraph->ConnectDirect(m_pCamOutPin , m_pBufferInPin, 0);
	hr = pFilterGraph->ConnectDirect(m_pBufferOutPin , m_pEncoderInPin, 0);
	hr = pFilterGraph->ConnectDirect(m_pEncoderOutPin , stackPin, 0);

Maybe the CLSID_BufferingFilter needs something set or causing the delay?

Thanks,
Kris




"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > sample flags (syncpoint, discontinuity, preroll) are set
> > as the same ...
> >
> > IMediaSample::GetTime() is not set on the receiver side
> > (it is set on the sending side). What values do I need to
> > set for the start and end time? Do I need to ship those
> > accross ?
> 
> It depends on the exact graph (wjat is it?) but it would be 
> better if you did.
> 
> On the sender side, substract the start time of the first 
> sample from the values (so that they are zero-based). On the 
> receiver side, use the value as they are or, if you are a 
> live source, add to them the graph's current reference clock 
> time of when you deliver the first sample).
> 
> You should still produce the 2 logs since they will give you 
> clues on what is going on.
> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm 
> 
> 
>
date: Wed, 9 Jul 2008 12:45:14 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
From: "Kris"

> Acutally I think maybe the problem is on the encoder
> side. Looking at wireshark it seems the packets are not
> sent very fast.

I think I know what your problem is: by default the WMV 
encoder is *slow*. You should configure it to encode to a 
lower quality but much faster by setting its complexity 
property:

1. query the DMOWrapper for IPropertyBag
2. call IPropertyBag::Write(L"_COMPLEXITYEX"), the value is 
of type VT_I4

A good value for real-time performance is 1 (I don't 
remember if 0 is also valid). Higher values require faster 
CPUs.

Once the encoder is configured to perform in real-time, the 
buffering filter is not required, so you may want to take it 
out (but you can live it there if you want to).

-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Wed, 9 Jul 2008 16:19:14 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
Thanks, I just tried what you usgested before adding the filter. It did not 
fix the problem. The image is maybe displayed a little bit faster but not 
much difference and the quality is terrible. There is huge pixels being 
displayed ... any other thoughs ???

Also the reason why I used the Buffer Filter was because the DMO Encoder IN 
pin was only accepting a majortype of VideoBuffered.

Thanks,
Kristine


"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > Acutally I think maybe the problem is on the encoder
> > side. Looking at wireshark it seems the packets are not
> > sent very fast.
> 
> I think I know what your problem is: by default the WMV 
> encoder is *slow*. You should configure it to encode to a 
> lower quality but much faster by setting its complexity 
> property:
> 
> 1. query the DMOWrapper for IPropertyBag
> 2. call IPropertyBag::Write(L"_COMPLEXITYEX"), the value is 
> of type VT_I4
> 
> A good value for real-time performance is 1 (I don't 
> remember if 0 is also valid). Higher values require faster 
> CPUs.
> 
> Once the encoder is configured to perform in real-time, the 
> buffering filter is not required, so you may want to take it 
> out (but you can live it there if you want to).
> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm 
> 
> 
>
date: Thu, 10 Jul 2008 06:45:01 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
From: "Kris"

> Thanks, I just tried what you usgested before adding the
> filter. It did not fix the problem. The image is maybe
> displayed a little bit faster but not much difference and
> the quality is terrible. There is huge pixels being
> displayed ... any other thoughs ???

Unless you produce the logs I asked you about, there is 
nothing else I can think of.


-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Thu, 10 Jul 2008 12:51:03 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
Here are the logs ... let me know if you want more info. I did not print the 
getTime values from the receiving end since it was not set.

A side question ... I was looking for other encoders (other than WMV3) for 
the pocket pc but could not find any. Do you know if others exits?

++New Sample Transmit 
  synchpoint: 0 preroll: 1 discontinuity: 1
  timeGetTime: 47614418
  GetTime: start time 1010000 end time 1676666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47615721
  GetTime: start time 1660000 end time 2326666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47616993
  GetTime: start time 2320000 end time 2986666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47618277
  GetTime: start time 2980000 end time 3646666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47619497
  GetTime: start time 3640000 end time 4306666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47620844
  GetTime: start time 4310000 end time 4976666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47622189
  GetTime: start time 4960000 end time 5626666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47623499
  GetTime: start time 5620000 end time 6286666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47624803
  GetTime: start time 6290000 end time 6956666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47626480
  GetTime: start time 6950000 end time 7616666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47627817
  GetTime: start time 7600000 end time 8266666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47629255
  GetTime: start time 8270000 end time 8936666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47630846
  GetTime: start time 8930000 end time 9596666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47632347
  GetTime: start time 9590000 end time 10256666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47633745
  GetTime: start time 10240000 end time 10906666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47635197
  GetTime: start time 10900000 end time 11566666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47636649
  GetTime: start time 11560000 end time 12226666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47638017
  GetTime: start time 12230000 end time 12896666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47639477
  GetTime: start time 12880000 end time 13546666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47640873
  GetTime: start time 13540000 end time 14206666
++New Sample Transmit 
  synchpoint: 1 preroll: 1 discontinuity: 1
  timeGetTime: 47642247
  GetTime: start time 14200000 end time 14866666

=============

++New Sample Receive 
  timeGetTime: 94684082
++New Sample Receive 
  timeGetTime: 94685355
++New Sample Receive 
  timeGetTime: 94686620
++New Sample Receive 
  timeGetTime: 94687906
++New Sample Receive 
  timeGetTime: 94689127
++New Sample Receive 
  timeGetTime: 94690476
++New Sample Receive 
  timeGetTime: 94691820
++New Sample Receive 
  timeGetTime: 94693130
++New Sample Receive 
  timeGetTime: 94694433
++New Sample Receive 
  timeGetTime: 94696110
++New Sample Receive 
  timeGetTime: 94697447
++New Sample Receive 
  timeGetTime: 94698882
++New Sample Receive 
  timeGetTime: 94700477
++New Sample Receive 
  timeGetTime: 94701984
++New Sample Receive 
  timeGetTime: 94703372
++New Sample Receive 
  timeGetTime: 94704827
++New Sample Receive 
  timeGetTime: 94706278
++New Sample Receive 
  timeGetTime: 94707644
++New Sample Receive 
  timeGetTime: 94709116
++New Sample Receive 
  timeGetTime: 94710499
++New Sample Receive 
  timeGetTime: 94711874
++New Sample Receive 
  timeGetTime: 94713383
++New Sample Receive 
  timeGetTime: 94714770
++New Sample Receive 
  timeGetTime: 94716114



==============

"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > Thanks, I just tried what you usgested before adding the
> > filter. It did not fix the problem. The image is maybe
> > displayed a little bit faster but not much difference and
> > the quality is terrible. There is huge pixels being
> > displayed ... any other thoughs ???
> 
> Unless you produce the logs I asked you about, there is 
> nothing else I can think of.
> 
> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm 
> 
> 
>
date: Thu, 10 Jul 2008 11:23:01 -0700   author:   Kris

Re: Direcshow problems with WMV9 Decoder for XP platform   
From: "Kris"

> Here are the logs ... let me know if you want more info.
> I did not print the getTime values from the receiving end
> since it was not set.

I asked you to normalize the system time so that it is
zero-based, anyway...

As clearly stated in the docs, IMediaSample::IsSyncPoint()
returns an HRESULT, not a BOOL, where S_OK (0) means TRUE
and S_FALSE (1) means FALSE, not the other way around, so
you are inverting all the flags (and you should also handle
other HRESULTs as errors). The same applies to the other 
flags.

Look at the difference of the system time between
consecutive frames: it is taking you on average 1300..1500
millisecs (< 1 fps) to process a frame instead of < 66.7
millis (15 fps).

Either your code takes too long to process the frames or you
are not dispatching window messages or the light is so low
that the camera has a hard time shooting or the encoder is
too slow (and you should change the complexity as I told you
before).

> A side question ... I was looking for other encoders
> (other than WMV3) for the pocket pc but could not find
> any. Do you know if others exits?

It depends on the OEM.


-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Thu, 10 Jul 2008 16:18:09 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
Following up to a private reply...

If you set the complexity to 1 and your processing takes 
150ms, that's the typical performance of a 400 MHz CPU I 
think (5-7 fps) which is quite good for this kind of devices 
(200 MHz CPUs usually procude 3-5 fps).

The block errors in your decoded frames are not the result 
of lowering the complexity (lowering the complexity produces 
more blocking and ringing artifacts and a higher bitrate, 
not errors). This kind of errors can be produced because you 
are confusing the decoder into thinking the frames are 
syncpoints when they are not or because there are errors in 
the network transmission.


-- 
// Alessandro Angeli
// MVP :: DirectShow / MediaFoundation
// mvpnews at riseoftheants dot com
// http://www.riseoftheants.com/mmx/faq.htm
date: Thu, 10 Jul 2008 16:37:17 -0400   author:   Alessandro Angeli

Re: Direcshow problems with WMV9 Decoder for XP platform   
When I changed the complexity ... it was faster ... ~150ms instead of ~1100ms 
in frame rate ... but the image was terrible ... it would be good for a 
couple of frames ... then for a batch of them have huge pixelixations ... 

Wow do you zero-based the system time. I am not certain how this is done.

I am not inverting the flags ... I am not doing any manipulation on them. 
Just printing out the way they are ... see code below 

   HRESULT synchpoint;
   HRESULT preroll;
   HRESULT discontinuity;

   synchpoint = sample->IsSyncPoint();
   preroll = sample->IsPreroll();
   discontinuity = sample->IsDiscontinuity();

   fprintf(fp, "%s%ld%s%ld%s%ld%s",
	   "  synchpoint: ", synchpoint, 
	   " preroll: " , preroll, 
	   " discontinuity: ", discontinuity, "\n" );

The problem why things are slow would be the encoder ... because when I 
remove it ... my frame rate is much higher. Changing does make things faster 
... though not fast enough and still have the quality problem.



"Alessandro Angeli" wrote:

> From: "Kris"
> 
> > Here are the logs ... let me know if you want more info.
> > I did not print the getTime values from the receiving end
> > since it was not set.
> 
> I asked you to normalize the system time so that it is
> zero-based, anyway...
> 
> As clearly stated in the docs, IMediaSample::IsSyncPoint()
> returns an HRESULT, not a BOOL, where S_OK (0) means TRUE
> and S_FALSE (1) means FALSE, not the other way around, so
> you are inverting all the flags (and you should also handle
> other HRESULTs as errors). The same applies to the other 
> flags.
> 
> Look at the difference of the system time between
> consecutive frames: it is taking you on average 1300..1500
> millisecs (< 1 fps) to process a frame instead of < 66.7
> millis (15 fps).
> 
> Either your code takes too long to process the frames or you
> are not dispatching window messages or the light is so low
> that the camera has a hard time shooting or the encoder is
> too slow (and you should change the complexity as I told you
> before).
> 
> > A side question ... I was looking for other encoders
> > (other than WMV3) for the pocket pc but could not find
> > any. Do you know if others exits?
> 
> It depends on the OEM.
> 
> 
> -- 
> // Alessandro Angeli
> // MVP :: DirectShow / MediaFoundation
> // mvpnews at riseoftheants dot com
> // http://www.riseoftheants.com/mmx/faq.htm
> 
> 
> 
>
date: Thu, 10 Jul 2008 13:47:01 -0700   author:   Kris

Google
 
Web ureader.com


    COPYRIGHT 2007, YARDI TECHNOLOGY LIMITED, ALL RIGHT RESERVE  |   contact us