[Bug 33155] New: Broken winmm recording when using an ACM codec

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Mar 9 04:46:06 CST 2013


http://bugs.winehq.org/show_bug.cgi?id=33155

             Bug #: 33155
           Summary: Broken winmm recording when using an ACM codec
           Product: Wine
           Version: 1.3.25
          Platform: x86
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: winmm&mci
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: hoehle at users.sourceforge.net
    Classification: Unclassified


Extracted from bug #33045, comment #18
wavein recording using the ACM needs rethinking.  Currently, it does anything
from hanging, crashing or recording broken streams.

- WID_PullACMData looks incomplete.  It starts with checking
  device->acm_hdr as if it could persist from a prior invocation,
  however it frees it when returning normally.  Thus it should remain
  local to the function, with device->acm_offs.  In error
  situations, the current code may break, because it may see
  device->acm_hdr.cbDstLength != 0 on entry from a prior
  acmStreamConvert MMSYSERR_* return.

- WID_PullACMData needs better error handling. If acmStreamConvert
  returns an error, the IACaptureClient buffer remains locked, causing
  any subsequent access to error out: recording stalls.

- In WID_PullACMData, the queue->lpNext condition looks bogus in the
  light of IMA_ADPCM's 256 bytes block size.

- More generally, PullACMData needs a redesign.  What to do when
  srcLengthUsed < packet_frames ?!?
  I.e. when the mmdevapi packet length does not match the codec's blocksize,
  e.g. using 10ms packets while IMA_ADPCM likely needs multiples of 256 bytes.
    - We should not throw away recorded bytes given enough buffers.
    - mmdevapi does not accept retrieving less than one packet...
    - mmdevapi does not allow choosing the packet size.

- WID_PullACMData does not yet handle WOM_DONE correctly.  The
  other bug report contains a patch.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list