Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
|
|
#1 | Link |
|
Registered User
Join Date: Mar 2007
Posts: 94
|
DirectShowSource & audio hardware
Is it possible to use DirectShowSource on a machine without any audio hardware?
I'm trying to serve an FLV to x264, but can't make the AVS work. I have FLVsplitter and ffdshow rendering the video graph, but getting a "no audio hardware" error. |
|
|
|
|
|
#4 | Link |
|
x264aholic
Join Date: Jul 2007
Location: New York
Posts: 1,739
|
Try building a graph using graphedit, and load it using DirectShowsource(). That should give you complete access over what's being input.
__________________
You can't call your encoding speed slow until you start measuring in seconds per frame. |
|
|
|
|
|
#6 | Link |
|
Registered User
Join Date: Mar 2007
Posts: 94
|
IanB,
Here is the log: Code:
00:00:00.000 fff 0x00000000 DirectShowSource 2.5.8 build:Dec 22 2008 [08:45:59]
00:00:00.000 080 0x014527E8 0x00000F30 New GetSample (video).
00:00:00.000 080 0x014527D0 0x00000F30 New DirectShowSource.
00:00:00.004 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 2
00:00:00.004 008 0x014527E8 0x00000F30 GetSample::JoinFilterGraph(0x013c9250, GetSample)
00:00:00.004 008 0x014527E8 0x00000F30 GetSample::QueryInterface({8e1c39a1-de53-11cf-aa63-0080c744528d}, ppv) ** E_NOINTERFACE **
00:00:00.004 008 0x014527E8 0x00000F30 GetSample::QueryInterface({f90a6130-b658-11d2-ae49-0000f8754b99}, ppv) ** E_NOINTERFACE **
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::EnumPins()
00:00:00.018 080 0x014532E8 0x00000F30 New GetSampleEnumPins.
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 3
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::Release() -> 2
00:00:00.018 080 0x014532E8 0x00000F30 ~GetSampleEnumPins.
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::EnumPins()
00:00:00.018 080 0x014532E8 0x00000F30 New GetSampleEnumPins.
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 3
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.018 020 0x014527E8 0x00000F30 GetSample::ConnectedTo() ** VFW_E_NOT_CONNECTED **
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::Release() -> 2
00:00:00.018 080 0x014532E8 0x00000F30 ~GetSampleEnumPins.
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 3
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::EnumPins()
00:00:00.018 080 0x014532E8 0x00000F30 New GetSampleEnumPins.
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 4
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 5
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::Release() -> 4
00:00:00.018 020 0x014527E8 0x00000F30 GetSample::ConnectedTo() ** VFW_E_NOT_CONNECTED **
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::QueryInternalConnections()
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 5
00:00:00.018 001 0x014527E8 0x00000F30 GetSample::QueryAccept(video) reject major type {e436eb83-524f-11ce-9f53-0020af0ba770}
00:00:00.018 020 0x014527E8 0x00000F30 GetSample::ReceiveConnection() ** VFW_E_TYPE_NOT_ACCEPTED **
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::Release() -> 4
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.018 008 0x014527E8 0x00000F30 GetSample::EnumMediaTypes() ** E_NOTIMPL **
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::Release() -> 3
00:00:00.018 080 0x014532E8 0x00000F30 ~GetSampleEnumPins.
00:00:00.018 040 0x014527E8 0x00000F30 GetSample::Release() -> 2
00:00:00.088 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 3
00:00:00.088 008 0x014527E8 0x00000F30 GetSample::EnumPins()
00:00:00.088 080 0x0145D250 0x00000F30 New GetSampleEnumPins.
00:00:00.088 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 4
00:00:00.088 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.089 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 5
00:00:00.089 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.089 040 0x014527E8 0x00000F30 GetSample::Release() -> 4
00:00:00.089 020 0x014527E8 0x00000F30 GetSample::ConnectedTo() ** VFW_E_NOT_CONNECTED **
00:00:00.089 008 0x014527E8 0x00000F30 GetSample::QueryInternalConnections()
00:00:00.089 008 0x014527E8 0x00000F30 GetSample::EnumMediaTypes() ** E_NOTIMPL **
00:00:00.089 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.089 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 5
00:00:00.089 008 0x014527E8 0x00000F30 GetSample::QueryInterface({56a8689d-0ad4-11ce-b03a-0020af0ba770}, ppv)
00:00:00.089 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 6
00:00:00.089 001 0x014527E8 0x00000F30 GetSample::QueryAccept(video) MEDIATYPE_Video
00:00:00.089 001 0x014527E8 0x00000F30 *** Video: Subtype rejected - {31564c46-0000-0010-8000-00aa00389b71}
00:00:00.089 020 0x014527E8 0x00000F30 GetSample::ReceiveConnection() ** VFW_E_TYPE_NOT_ACCEPTED **
00:00:00.089 040 0x014527E8 0x00000F30 GetSample::Release() -> 5
00:00:00.089 040 0x014527E8 0x00000F30 GetSample::Release() -> 4
00:00:00.089 040 0x014527E8 0x00000F30 GetSample::Release() -> 3
00:00:00.089 080 0x0145D250 0x00000F30 ~GetSampleEnumPins.
00:00:00.089 040 0x014527E8 0x00000F30 GetSample::Release() -> 2
00:00:00.118 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 3
00:00:00.118 008 0x014527E8 0x00000F30 GetSample::GetClassID() E_NOTIMPL
00:00:00.118 040 0x014527E8 0x00000F30 GetSample::Release() -> 2
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 3
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::EnumPins()
00:00:00.144 080 0x0145D410 0x00000F30 New GetSampleEnumPins.
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 4
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 5
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::Release() -> 4
00:00:00.144 020 0x014527E8 0x00000F30 GetSample::ConnectedTo() ** VFW_E_NOT_CONNECTED **
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryInternalConnections()
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 5
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::Release() -> 4
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::GetClassID() E_NOTIMPL
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::EnumMediaTypes() ** E_NOTIMPL **
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 5
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::Release() -> 4
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::GetClassID() E_NOTIMPL
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 5
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryInterface({56a8689d-0ad4-11ce-b03a-0020af0ba770}, ppv)
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 6
00:00:00.144 001 0x014527E8 0x00000F30 GetSample::QueryAccept(video) MEDIATYPE_Video
00:00:00.144 001 0x014527E8 0x00000F30 *** Video: format accepted: 320x240, pixel_type a0000008, avg_time_per_frame 400000x100ns
00:00:00.144 001 0x014527E8 0x00000F30 *** Video: bFixedSizeSamples=1, bTemporalCompression=0, lSampleSize=115200
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::ReceiveConnection(0x0163fdac, pmt)
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 7
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::Release() -> 6
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::GetClassID() E_NOTIMPL
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::GetAllocatorRequirements(0, 0, 0, 0) E_NOTIMPL
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::GetAllocator() VFW_E_NO_ALLOCATOR
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 7
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::Release() -> 6
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::GetClassID() E_NOTIMPL
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 7
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.144 040 0x014527E8 0x00000F30 GetSample::Release() -> 6
00:00:00.144 008 0x014527E8 0x00000F30 GetSample::GetClassID() E_NOTIMPL
00:00:00.145 008 0x014527E8 0x00000F30 GetSample::NotifyAllocator(0x014baa0c, 0) was 0x00000000 (video)
00:00:00.145 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 7
00:00:00.145 008 0x014527E8 0x00000F30 GetSample::QueryInterface({56a8689d-0ad4-11ce-b03a-0020af0ba770}, ppv)
00:00:00.145 008 0x014527E8 0x00000F30 GetSample::QueryInternalConnections()
00:00:00.145 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 8
00:00:00.145 008 0x014527E8 0x00000F30 GetSample::QueryInterface({0000010c-0000-0000-c000-000000000046}, ppv)
00:00:00.145 008 0x014527E8 0x00000F30 GetSample::GetClassID() E_NOTIMPL
00:00:00.145 040 0x014527E8 0x00000F30 GetSample::Release() -> 7
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 8
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::QueryId()
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 9
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::Release() -> 8
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::Release() -> 7
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::QueryId()
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::ConnectedTo() is 0x0163fdac
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 8
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::Release() -> 7
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::Release() -> 6
00:00:00.146 080 0x0145D410 0x00000F30 ~GetSampleEnumPins.
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::Release() -> 5
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 6
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::QueryInternalConnections()
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::Release() -> 5
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 6
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::EnumPins()
00:00:00.146 080 0x0145D410 0x00000F30 New GetSampleEnumPins.
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 7
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 8
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::Release() -> 7
00:00:00.146 008 0x014527E8 0x00000F30 GetSample::ConnectedTo() is 0x0163fdac
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::Release() -> 6
00:00:00.146 080 0x0145D410 0x00000F30 ~GetSampleEnumPins.
00:00:00.146 040 0x014527E8 0x00000F30 GetSample::Release() -> 5
00:00:00.161 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 6
00:00:00.161 008 0x014527E8 0x00000F30 GetSample::QueryInternalConnections()
00:00:00.161 040 0x014527E8 0x00000F30 GetSample::Release() -> 5
00:00:00.161 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 6
00:00:00.161 008 0x014527E8 0x00000F30 GetSample::EnumPins()
00:00:00.161 080 0x01453490 0x00000F30 New GetSampleEnumPins.
00:00:00.161 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 7
00:00:00.161 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.161 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 8
00:00:00.161 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8
00:00:00.161 040 0x014527E8 0x00000F30 GetSample::Release() -> 7
00:00:00.161 008 0x014527E8 0x00000F30 GetSample::ConnectedTo() is 0x0163fdac
00:00:00.161 040 0x014527E8 0x00000F30 GetSample::Release() -> 6
00:00:00.161 080 0x01453490 0x00000F30 ~GetSampleEnumPins.
00:00:00.161 040 0x014527E8 0x00000F30 GetSample::Release() -> 5
00:00:00.229 080 0x014527E8 0x00000F30 Releasing Allocator 0x014baa0c.
00:00:00.229 008 0x014527E8 0x00000F30 GetSample::Disconnect()
00:00:00.229 040 0x014527E8 0x00000F30 GetSample::Release() -> 4
00:00:00.230 040 0x014527E8 0x00000F30 GetSample::Release() -> 3
00:00:00.230 040 0x014527E8 0x00000F30 GetSample::Release() -> 2
00:00:00.231 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 3
00:00:00.231 008 0x014527E8 0x00000F30 GetSample::GetClassID() E_NOTIMPL
00:00:00.231 040 0x014527E8 0x00000F30 GetSample::Release() -> 2
00:00:00.232 008 0x014527E8 0x00000F30 GetSample::FindPin(GetSample01, ppPin) E_NOTIMPL
00:00:00.233 008 0x014527E8 0x00000F30 GetSample::GetState(), state is State_Stopped
00:00:00.233 010 0x014527E8 0x00000F30 StopGraph() indicating done with sample - State_Stopped
00:00:00.236 008 0x014527E8 0x00000F30 GetSample::QueryInterface({f90a6130-b658-11d2-ae49-0000f8754b99}, ppv) ** E_NOINTERFACE **
00:00:00.236 008 0x014527E8 0x00000F30 GetSample::EnumPins()
00:00:00.236 080 0x0145D4F0 0x00000F30 New GetSampleEnumPins.
00:00:00.236 040 0x014527E8 0x00000F30 GetSample::AddRef() -> 3
00:00:00.236 008 0x014527E8 0x00000F30 GetSample::QueryDirection()
00:00:00.236 020 0x014527E8 0x00000F30 GetSample::ConnectedTo() ** VFW_E_NOT_CONNECTED **
00:00:00.236 040 0x014527E8 0x00000F30 GetSample::Release() -> 2
00:00:00.236 080 0x0145D4F0 0x00000F30 ~GetSampleEnumPins.
00:00:00.236 008 0x014527E8 0x00000F30 GetSample::SetSyncSource(0x00000000), was 0x00000000
00:00:00.236 008 0x014527E8 0x00000F30 GetSample::JoinFilterGraph(0x00000000, (null))
00:00:00.236 008 0x014527E8 0x00000F30 GetSample::QueryInterface({8e1c39a1-de53-11cf-aa63-0080c744528d}, ppv) ** E_NOINTERFACE **
00:00:00.236 008 0x014527E8 0x00000F30 GetSample::GetState(), state is State_Stopped
00:00:00.236 040 0x014527E8 0x00000F30 GetSample::Release() -> 1
00:00:00.236 080 0x014527E8 0x00000F30 ~GetSample(video).
00:00:00.236 fff 0x00000000 Close video log 1.
|
|
|
|
|
|
#7 | Link |
|
Avisynth Developer
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 2,246
|
Hmmm, most strange
It does all the right things then just disconnects the GetSample input pin and stops.What is the exact error message text? Is it DirectShowSource() reporting the error or does your application require an audio track. i.e. try :- Code:
DirectShowSource("yourfile",audio=false, logfile="Blah.log", logmask=-1)
AudioDub(BlankClip(Last, audio_rate=48000, channels=2))
|
|
|
|
|
|
#8 | Link |
|
Registered User
Join Date: Mar 2007
Posts: 94
|
It seems to be DirectShowSource that is reporting the error. I've tried your suggestion and the error remains the same:
Avisynth open failure: DirectShowSource: couldn't open file test.flv: No combination of filters could be found to render the stream. |
|
|
|
|
|
#10 | Link |
|
Registered User
Join Date: Mar 2007
Posts: 94
|
After okaying the error "Cannot play back the audio stream: no audio hardware is available", this is the graph that shows:
test.flv -> FLV Splitter -> ffdshow Video Decoder -> AVI Decompressor -> Video Renderer When playing the graph, the video plays for a few seconds and then stops. |
|
|
|
|
|
#11 | Link |
|
Avisynth Developer
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 2,246
|
Okay, "no audio hardware is available", that is the error message I was expecting and is what is now handled in DirectShowSource() 2.5.8.
The "No combination of filters could be found to render the stream." message usually means you do not have all the required components installed, but obviously you do. The log entries in bold (below) prove that a valid connection was established, but for some dumb reason something threw it away (line in red). I suspect the FindPin() call (line in blue), which we do not implement, was the beginning of an attempt to put that connection back. Obviously it will always fail, I guess you would like the FindPin() call implemented, I will add it to the list. Code:
00:00:00.144 001 0x014527E8 0x00000F30 GetSample::QueryAccept(video) MEDIATYPE_Video 00:00:00.144 001 0x014527E8 0x00000F30 *** Video: format accepted: 320x240, pixel_type a0000008, avg_time_per_frame 400000x100ns 00:00:00.144 001 0x014527E8 0x00000F30 *** Video: bFixedSizeSamples=1, bTemporalCompression=0, lSampleSize=115200 00:00:00.144 008 0x014527E8 0x00000F30 GetSample::ReceiveConnection(0x0163fdac, pmt) 00:00:00.146 008 0x014527E8 0x00000F30 GetSample::QueryPinInfo() 0x014527e8 00:00:00.146 008 0x014527E8 0x00000F30 GetSample::QueryId() 00:00:00.146 008 0x014527E8 0x00000F30 GetSample::ConnectedTo() is 0x0163fdac 00:00:00.229 008 0x014527E8 0x00000F30 GetSample::Disconnect() 00:00:00.232 008 0x014527E8 0x00000F30 GetSample::FindPin(GetSample01, ppPin) E_NOTIMPL test.flv -> FLV Splitter -> ffdshow Video Decoder -> AVI Decompressor -> |
|
|
|
|
|
#13 | Link |
|
Avisynth Developer
Join Date: Jan 2003
Location: Melbourne, Australia
Posts: 2,246
|
Bryce Kahle (bwkahle) on sourceforge.net emailed a patch.
Code:
HRESULT __stdcall GetSample::FindPin(LPCWSTR Id, IPin** ppPin) { // See QueryID
if (!Id) {
dssRPT0(dssERROR, "GetSample::FindPin(Id, ppPin) ** E_POINTER **\n");
return E_POINTER;
}
if (!ppPin) {
dssRPT1(dssERROR, "GetSample::FindPin(%ls, ppPin) ** E_POINTER **\n", Id);
return E_POINTER;
}
if (lstrcmpW(L"GetSample01", Id)) {
dssRPT1(dssERROR, "GetSample::FindPin(%ls, ppPin) ** VFW_E_NOT_FOUND **\n", Id);
*ppPin = NULL;
return VFW_E_NOT_FOUND;
}
dssRPT1(dssCMD, "GetSample::FindPin(%ls, ppPin)\n", Id);
*ppPin = static_cast<IPin*>(this);
AddRef();
return S_OK;
}
Download it from here :- DirectShowSource_2587.zip Replace your existing DirectShowSource.dll in your Avisynth plugin directory with the one in the .ZIP file. Last edited by IanB; 25th April 2009 at 04:32. |
|
|
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|