[Bug 20323] MacOS mcicda does not play audio CD

wine-bugs at winehq.org wine-bugs at winehq.org
Sat Aug 7 14:32:19 CDT 2010


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





--- Comment #4 from Jörg Höhle <hoehle at users.sourceforge.net>  2010-08-07 14:32:17 ---
Created an attachment (id=30045)
 --> (http://bugs.winehq.org/attachment.cgi?id=30045)
Log snippet around failing RAW_READ ioctl

As of 1.3.0, the situation improve quite a bit. Most of comment #3 is obsolete.
I see a possibility to implement mcicda solely with READ_TOC and RAW_READ.
However Wine is not quite there yet:

A. "open cdaudio alias c" fails in the MCI, see comment #0
 I worked around this by explicitly setting the CD-ROM type in winecfg -- and
leaving it open, because restarting Wine seems to reinitialise the type to
"Automatic".

B. TOC missing a 2 seconds offset?
On native and Linux,
"status c position start" typically yields "00:02:00"
On MacOS, it's 00:00:00. It appears that all 
status c position track <N>
are 2 seconds less than on native and Linux (for the same disk).
I can't find where I once read that a CD-ROM has to start with a 2 seconds
offset.

C. RAW_READ fails here with an audio CD
set c time format tmsf
play c from 2 to 3 yields:
cdrom:CDROM_DeviceIoControl 0x40 IOCTL_CDROM_RAW_READ 0x33e310 16 0x187658
91728 0x33de58
cdrom:CDROM_DeviceIoControl opening parent /dev/rdisk1
cdrom:CDROM_RawRead RAW_READ_INFO: DiskOffset=0,151994368 SectorCount=39
TrackMode=2 buffer=0x187658 len=91728 sz=0x33dd4c
ntdll:FILE_GetNtStatus errno = 22 -- EINVAL
RawRead is the topic of the present bug report.

For now, avoid command like
seek c to start/end/xyz
status c position
status c current track
as they use ioctl not supported on the Mac.
I claim that those ioctl are not needed on the Mac (nor Linux) for mcicda
because I could implement it as follows:
- position initially returns position start from the TOC, then what's being
played.
- current track initially returns 1, then what's played.
- seek does no IOCTL_SEEK and simply (performs a range check based on the TOC
and) remembers the position for playing and the status command.

If RAW_READ would work, then all that would be left to do is a proper
separation of the two CD playing modes that mcicda currently implements (which
I'll write about in a new bug report): RAW_READ with dsound vs.
IOCTL_CDROM_PLAY/PAUSE/STOP/RESUME/SEEK_AUDIO.
Currently, the lack of separation causes the MCI commands to report
inconsistent results (e.g. IOCTL SEEK and CURRENT_POSITION are independent from
RAW_READ).

-- 
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