[wdmaudiodev] Re: AVStream: sound quality depends on the usage, why?

  • From: Sam Tertzakian <sam@xxxxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Tue, 28 Jun 2016 16:59:38 -0700


    
If I recall,  your sound quality difference is due to the reference clock. One 
case the clock is present but not the other. 
I don't remember the exact details. I had the same issue a few years ago.
Sent from my phone...


-------- Original message --------
From: alexander ivash <elderorb@xxxxxxxxx> 
Date: 6/28/2016  16:15  (GMT-08:00) 
To: wdmaudiodev@xxxxxxxxxxxxx 
Subject: [wdmaudiodev] Re: AVStream: sound quality depends on the usage, why? 

Thank you for your time, Tim!

Are you getting different audio formats selected in those four cases?
For what it's worth, I have seen the same behavior with audio drivers.
I suspect it is a timing issue.  How are you doing the timing?  Are you
returning data as soon as it is demanded, or are you delaying to
simulate a real hardware stream?

Incorrect format usage is really the simplest explanation for sound  
distortion and this is what I'll check. But what is not clear for me, is  
why even in graphedit the same filter sounds differently if selected as  
'WDM Capture' (good) and 'Audio Capture' (delayed, cropped). Could it be  
the case that 'mic' bridge pin introduces its own delays? I hope it is  
not, because I thought it is required only to make sysvad happy and should  
have no any impact on the overall performance..

I'm still using DPC (like in original avssamp), which calls  
KsFilterAttemptProcessing every tick, and probably there are no any  
reasons to continue using it.. But it worked fine until I registered  
driver as virtual mic so haven't changed that part yet.

Just in case here is my framing config:

DECLARE_SIMPLE_FRAMING_EX (
     AudioDefaultAllocatorFraming,
     STATICGUIDOF (KSMEMORY_TYPE_KERNEL_NONPAGED),
     KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY |
         KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY,
     25,
     0,
     2 * PAGE_SIZE,
     2 * PAGE_SIZE
     );

Probably this is suboptimal or even wrong, but still not clear why does it  
work in one scenario and doesn't in other. By the way, if I decide to get  
rid of DPC / KsFilterAttemptProcessing, what is the other mechanism of  
triggering Filter::Process ?


Regards, Alexander
******************

WDMAUDIODEV addresses:
Post message: mailto:wdmaudiodev@xxxxxxxxxxxxx
Subscribe:    mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=subscribe
Unsubscribe:  mailto:wdmaudiodev-request@xxxxxxxxxxxxx?subject=unsubscribe
Moderator:    mailto:wdmaudiodev-moderators@xxxxxxxxxxxxx

URL to WDMAUDIODEV page:
http://www.wdmaudiodev.com/

Other related posts: