Log in

View Full Version : "Video: Subtype rejected"


asarian
30th May 2008, 13:46
I'm having a weird issue. I created the following test script:

DirectShowSource("Q:\Twonky\DieHard4.m2ts", logfile="directshow.log", logmask=-1, fps=23.976,audio=false)

When I play this script in Windows Media Player, the Windows Media Player "stopped responding". Odd thing is, though, when I play the m2ts file directly in Windows Media Player, it plays just fine.

The only real immediate problem I can detect in the log (see below) is this line:

00:00:00.772 001 0x0202F568 *** Video: Subtype rejected - {31435641-0000-0010-8000-00aa00389b71}

So, if someone could shed some light on the cause of this, and hopefully a fix, I'd be most appreciative.

Thanks.



----------------
00:00:00.000 fff 0x00000000 DirectShowSource 2.5.7 build:Dec 24 2006 [20:11:50]
00:00:00.000 080 0x0202F568 New GetSample (video).
00:00:00.000 080 0x0202F560 New DirectShowSource.
00:00:00.001 040 0x0202F568 GetSample::AddRef() -> 2
00:00:00.001 008 0x0202F568 GetSample::JoinFilterGraph(0x02053b18, GetSample)
00:00:00.001 008 0x0202F568 GetSample::QueryInterface({8e1c39a1-de53-11cf-aa63-0080c744528d}, ppv) ** E_NOINTERFACE **
00:00:00.001 008 0x0202F568 GetSample::QueryInterface({f90a6130-b658-11d2-ae49-0000f8754b99}, ppv) ** E_NOINTERFACE **
00:00:00.771 008 0x0202F568 GetSample::EnumPins()
00:00:00.771 080 0x0207CDA0 New GetSampleEnumPins.
00:00:00.771 040 0x0202F568 GetSample::AddRef() -> 3
00:00:00.771 008 0x0202F568 GetSample::QueryDirection()
00:00:00.771 040 0x0202F568 GetSample::Release() -> 2
00:00:00.771 080 0x0207CDA0 ~GetSampleEnumPins.
00:00:00.771 008 0x0202F568 GetSample::EnumPins()
00:00:00.771 080 0x0207CDA0 New GetSampleEnumPins.
00:00:00.771 040 0x0202F568 GetSample::AddRef() -> 3
00:00:00.771 008 0x0202F568 GetSample::QueryDirection()
00:00:00.771 020 0x0202F568 GetSample::ConnectedTo() ** VFW_E_NOT_CONNECTED **
00:00:00.771 040 0x0202F568 GetSample::Release() -> 2
00:00:00.771 080 0x0207CDA0 ~GetSampleEnumPins.
00:00:00.771 040 0x0202F568 GetSample::AddRef() -> 3
00:00:00.771 020 0x0202F568 GetSample::QueryInterface({36b73880-c2c8-11cf-8b46-00805f6cef60}, ppv) ** E_NOINTERFACE **, No Source Pin!
00:00:00.771 020 0x0202F568 GetSample::QueryInterface({56a868b2-0ad4-11ce-b03a-0020af0ba770}, ppv) ** E_NOINTERFACE **, No Source Pin!
00:00:00.771 008 0x0202F568 GetSample::QueryInterface({2dd74950-a890-11d1-abe8-00a0c905f375}, ppv) ** E_NOINTERFACE **
00:00:00.771 008 0x0202F568 GetSample::QueryInterface({56a868b5-0ad4-11ce-b03a-0020af0ba770}, ppv) ** E_NOINTERFACE **
00:00:00.771 008 0x0202F568 GetSample::QueryInterface({56a868b4-0ad4-11ce-b03a-0020af0ba770}, ppv) ** E_NOINTERFACE **
00:00:00.771 008 0x0202F568 GetSample::QueryInterface({56a868b3-0ad4-11ce-b03a-0020af0ba770}, ppv) ** E_NOINTERFACE **
00:00:00.771 040 0x0202F568 GetSample::Release() -> 2
00:00:00.772 008 0x0202F568 GetSample::EnumPins()
00:00:00.772 080 0x0207CDA0 New GetSampleEnumPins.
00:00:00.772 040 0x0202F568 GetSample::AddRef() -> 3
00:00:00.772 008 0x0202F568 GetSample::QueryDirection()
00:00:00.772 040 0x0202F568 GetSample::Release() -> 2
00:00:00.772 080 0x0207CDA0 ~GetSampleEnumPins.
00:00:00.772 008 0x0202F568 GetSample::EnumPins()
00:00:00.772 080 0x0207CDA0 New GetSampleEnumPins.
00:00:00.772 040 0x0202F568 GetSample::AddRef() -> 3
00:00:00.772 008 0x0202F568 GetSample::QueryDirection()
00:00:00.772 020 0x0202F568 GetSample::ConnectedTo() ** VFW_E_NOT_CONNECTED **
00:00:00.772 040 0x0202F568 GetSample::Release() -> 2
00:00:00.772 080 0x0207CDA0 ~GetSampleEnumPins.
00:00:00.772 040 0x0202F568 GetSample::AddRef() -> 3
00:00:00.772 008 0x0202F568 GetSample::EnumPins()
00:00:00.772 080 0x0207CDA0 New GetSampleEnumPins.
00:00:00.772 040 0x0202F568 GetSample::AddRef() -> 4
00:00:00.772 008 0x0202F568 GetSample::QueryDirection()
00:00:00.772 040 0x0202F568 GetSample::AddRef() -> 5
00:00:00.772 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.772 040 0x0202F568 GetSample::Release() -> 4
00:00:00.772 020 0x0202F568 GetSample::ConnectedTo() ** VFW_E_NOT_CONNECTED **
00:00:00.772 008 0x0202F568 GetSample::QueryInternalConnections()
00:00:00.772 008 0x0202F568 GetSample::EnumMediaTypes() ** E_NOTIMPL **
00:00:00.772 008 0x0202F568 GetSample::QueryDirection()
00:00:00.772 040 0x0202F568 GetSample::AddRef() -> 5
00:00:00.772 008 0x0202F568 GetSample::QueryInterface({56a8689d-0ad4-11ce-b03a-0020af0ba770}, ppv)
00:00:00.772 040 0x0202F568 GetSample::AddRef() -> 6
00:00:00.772 001 0x0202F568 GetSample::QueryAccept(video) MEDIATYPE_Video
00:00:00.772 001 0x0202F568 *** Video: Subtype rejected - {31435641-0000-0010-8000-00aa00389b71}
00:00:00.772 020 0x0202F568 GetSample::ReceiveConnection() ** VFW_E_TYPE_NOT_ACCEPTED **
00:00:00.772 040 0x0202F568 GetSample::Release() -> 5
00:00:00.772 040 0x0202F568 GetSample::Release() -> 4
00:00:00.772 040 0x0202F568 GetSample::Release() -> 3
00:00:00.772 080 0x0207CDA0 ~GetSampleEnumPins.
00:00:00.772 040 0x0202F568 GetSample::Release() -> 2
00:00:00.908 040 0x0202F568 GetSample::AddRef() -> 3
00:00:00.908 008 0x0202F568 GetSample::GetClassID() E_NOTIMPL
00:00:00.908 040 0x0202F568 GetSample::Release() -> 2
00:00:00.920 040 0x0202F568 GetSample::AddRef() -> 3
00:00:00.920 008 0x0202F568 GetSample::EnumPins()
00:00:00.920 080 0x0207D080 New GetSampleEnumPins.
00:00:00.920 040 0x0202F568 GetSample::AddRef() -> 4
00:00:00.920 008 0x0202F568 GetSample::QueryDirection()
00:00:00.920 040 0x0202F568 GetSample::AddRef() -> 5
00:00:00.920 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.920 040 0x0202F568 GetSample::Release() -> 4
00:00:00.920 020 0x0202F568 GetSample::ConnectedTo() ** VFW_E_NOT_CONNECTED **
00:00:00.920 008 0x0202F568 GetSample::QueryInternalConnections()
00:00:00.920 040 0x0202F568 GetSample::AddRef() -> 5
00:00:00.920 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.920 040 0x0202F568 GetSample::Release() -> 4
00:00:00.920 008 0x0202F568 GetSample::GetClassID() E_NOTIMPL
00:00:00.920 008 0x0202F568 GetSample::EnumMediaTypes() ** E_NOTIMPL **
00:00:00.920 040 0x0202F568 GetSample::AddRef() -> 5
00:00:00.920 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.920 040 0x0202F568 GetSample::Release() -> 4
00:00:00.920 008 0x0202F568 GetSample::GetClassID() E_NOTIMPL
00:00:00.920 008 0x0202F568 GetSample::QueryDirection()
00:00:00.920 040 0x0202F568 GetSample::AddRef() -> 5
00:00:00.920 008 0x0202F568 GetSample::QueryInterface({56a8689d-0ad4-11ce-b03a-0020af0ba770}, ppv)
00:00:00.920 040 0x0202F568 GetSample::AddRef() -> 6
00:00:00.920 001 0x0202F568 GetSample::QueryAccept(video) MEDIATYPE_Video
00:00:00.920 001 0x0202F568 *** Video: format accepted: 1920x1080, pixel_type a0000008, avg_time_per_frame 417083x100ns
00:00:00.920 001 0x0202F568 *** Video: bFixedSizeSamples=1, bTemporalCompression=0, lSampleSize=3110400
00:00:00.920 008 0x0202F568 GetSample::ReceiveConnection(0x0701f464, pmt)
00:00:00.920 040 0x0202F568 GetSample::AddRef() -> 7
00:00:00.920 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.920 040 0x0202F568 GetSample::Release() -> 6
00:00:00.920 008 0x0202F568 GetSample::GetClassID() E_NOTIMPL
00:00:00.920 008 0x0202F568 GetSample::GetAllocatorRequirements() E_NOTIMPL
00:00:00.920 008 0x0202F568 GetSample::GetAllocator() VFW_E_NO_ALLOCATOR
00:00:00.921 040 0x0202F568 GetSample::AddRef() -> 7
00:00:00.921 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.921 040 0x0202F568 GetSample::Release() -> 6
00:00:00.921 008 0x0202F568 GetSample::GetClassID() E_NOTIMPL
00:00:00.921 040 0x0202F568 GetSample::AddRef() -> 7
00:00:00.921 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.921 040 0x0202F568 GetSample::Release() -> 6
00:00:00.921 008 0x0202F568 GetSample::GetClassID() E_NOTIMPL
00:00:00.921 008 0x0202F568 GetSample::NotifyAllocator()
00:00:00.921 040 0x0202F568 GetSample::AddRef() -> 7
00:00:00.921 008 0x0202F568 GetSample::QueryInterface({56a8689d-0ad4-11ce-b03a-0020af0ba770}, ppv)
00:00:00.921 008 0x0202F568 GetSample::QueryInternalConnections()
00:00:00.922 040 0x0202F568 GetSample::AddRef() -> 8
00:00:00.922 008 0x0202F568 GetSample::QueryInterface({0000010c-0000-0000-c000-000000000046}, ppv)
00:00:00.922 008 0x0202F568 GetSample::GetClassID() E_NOTIMPL
00:00:00.922 040 0x0202F568 GetSample::Release() -> 7
00:00:00.922 040 0x0202F568 GetSample::AddRef() -> 8
00:00:00.922 008 0x0202F568 GetSample::QueryId()
00:00:00.922 040 0x0202F568 GetSample::AddRef() -> 9
00:00:00.922 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.922 040 0x0202F568 GetSample::Release() -> 8
00:00:00.922 040 0x0202F568 GetSample::Release() -> 7
00:00:00.922 008 0x0202F568 GetSample::QueryId()
00:00:00.922 008 0x0202F568 GetSample::ConnectedTo() is 0x0701f464
00:00:00.922 040 0x0202F568 GetSample::AddRef() -> 8
00:00:00.922 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.922 040 0x0202F568 GetSample::Release() -> 7

asarian
30th May 2008, 21:43
I just tried it in XP. There it still works, but I find the same "Subtype rejected" in my log, so I guess it can be ignored.

Then, I would think the issue is with DirectShowSource (= DirectShow). Anyone know how to repare its functionality?

asarian
2nd June 2008, 02:08
*bump*

There's gotta be DirectShow experts here. :)

IanB
2nd June 2008, 10:03
00:00:00.772 001 0x0202F568 GetSample::QueryAccept(video) MEDIATYPE_Video
00:00:00.772 001 0x0202F568 *** Video: Subtype rejected - {31435641-0000-0010-8000-00aa00389b71}This a normal part of graph connection negotiation. This QueryAccept is offering undecoded video, which we cannot use.
00:00:00.920 001 0x0202F568 GetSample::QueryAccept(video) MEDIATYPE_Video
00:00:00.920 001 0x0202F568 *** Video: format accepted: 1920x1080, pixel_type a0000008, avg_time_per_frame 417083x100ns
00:00:00.920 001 0x0202F568 *** Video: bFixedSizeSamples=1, bTemporalCompression=0, lSampleSize=3110400This QueryAccept offered video decoded to YV12, which we can use.

Next there is usually a lot of DirectShow stuffing around, finally followed by the graph starting to run and return video data. Your log file ends abruptly with00:00:00.922 008 0x0202F568 GetSample::QueryPinInfo() 0x0202f568
00:00:00.922 040 0x0202F568 GetSample::Release() -> 7which is still in the stuffing around phase. I guess you killed the process before it flushed it's logs. Wait the default 60 seconds for DirectShowSource to timeout and abort by itself.

You should try the latest 2.5.8-RC1 release, it has many fixes to do with DirectShowSource.

asarian
2nd June 2008, 20:16
Your log file ends abruptly with which is still in the stuffing around phase. I guess you killed the process before it flushed it's logs. Wait the default 60 seconds for DirectShowSource to timeout and abort by itself.

Thanks for replying.

Well, that's the point: the log really ends there; like this:

00:00:09.172 040 0x02E3B270 GetSample::Release() -> 7
00:00:09.172 0

It ends at the single "0". And then there's nothing (I waited 5 mins this time after WMP "stopped responding").


You should try the latest 2.5.8-RC1 release, it has many fixes to do with DirectShowSource.

I will try that, though I'm always a bit weary of beta releases. AviSynth is a major component of my video setup; i don't want it destroyed. :) But the way DirectShowSource is behaving, I reckon it's already broken.

IanB
2nd June 2008, 22:46
DirectShowSource.DLL is a free standing component. You can do a "StandAlone" type install (new 2.5.8 install mode, does not write to the registry) to a temporary directory, snatch the D....dll and place it in your 2.5.7 plugins directory.

Also you might try pixel_type="YUY2", the YV12 path of some codecs is sometimes less stable.