I believe
commit be332326ba8fc3def406c5f29adf04fbe9a83976 Author: Andrew Eikum aeikum@codeweavers.com Date: Wed Apr 27 09:12:36 2011 -0500
is causing the following build failures on my nightly FreeBSD testers:
mmdevdrv.c:463:20: error: 'AFMT_S24_PACKED' undeclared (first use in this function) mmdevdrv.c:476:16: error: 'AFMT_FLOAT' undeclared (first use in this function) mmdevdrv.c:854:24: error: 'AFMT_FLOAT' undeclared (first use in this function) mmdevdrv.c:863:24: error: 'AFMT_S24_PACKED' undeclared (first use in this function) mmdevdrv.c:1084:24: error: 'SNDCTL_DSP_HALT' undeclared (first use in this function)
Looks like some autoconfigury is not working or incomplete?
Gerald
On Fri, 29 Apr 2011, Gerald Pfeifer wrote:
commit be332326ba8fc3def406c5f29adf04fbe9a83976 Author: Andrew Eikum aeikum@codeweavers.com Date: Wed Apr 27 09:12:36 2011 -0500
is causing the following build failures on my nightly FreeBSD testers:
mmdevdrv.c:463:20: error: 'AFMT_S24_PACKED' undeclared (first use in this function) mmdevdrv.c:476:16: error: 'AFMT_FLOAT' undeclared (first use in this function) mmdevdrv.c:854:24: error: 'AFMT_FLOAT' undeclared (first use in this function) mmdevdrv.c:863:24: error: 'AFMT_S24_PACKED' undeclared (first use in this function) mmdevdrv.c:1084:24: error: 'SNDCTL_DSP_HALT' undeclared (first use in this function)
Looks like some autoconfigury is not working or incomplete?
This has now been broken for a week; when are you planning on fixing this, Andrew?
If not, any pointers on how to best approach this?
I checked, and AFMT_FLOAT is not defined in /usr/include on either my FreeBSD 8.2 tester nor my openSUSE 11.4 machine, whereas other AFMT_ strings are. Similarly for AFMT_S24_PACKED and SNDCTL_DSP_HALT.
Gerald
On 05/05/2011 10:22 PM, Gerald Pfeifer wrote:
On Fri, 29 Apr 2011, Gerald Pfeifer wrote:
commit be332326ba8fc3def406c5f29adf04fbe9a83976 Author: Andrew Eikumaeikum@codeweavers.com Date: Wed Apr 27 09:12:36 2011 -0500
is causing the following build failures on my nightly FreeBSD testers:
mmdevdrv.c:463:20: error: 'AFMT_S24_PACKED' undeclared (first use in this function) mmdevdrv.c:476:16: error: 'AFMT_FLOAT' undeclared (first use in this function) mmdevdrv.c:854:24: error: 'AFMT_FLOAT' undeclared (first use in this function) mmdevdrv.c:863:24: error: 'AFMT_S24_PACKED' undeclared (first use in this function) mmdevdrv.c:1084:24: error: 'SNDCTL_DSP_HALT' undeclared (first use in this function)
Looks like some autoconfigury is not working or incomplete?
This has now been broken for a week; when are you planning on fixing this, Andrew?
Bugs are much easier to keep track of than mailing list threads.
If not, any pointers on how to best approach this?
I checked, and AFMT_FLOAT is not defined in /usr/include on either my FreeBSD 8.2 tester nor my openSUSE 11.4 machine, whereas other AFMT_ strings are. Similarly for AFMT_S24_PACKED and SNDCTL_DSP_HALT.
Commit f60a0f5e565ab9ec5f13b6b489e03b6b22ebf8f7 was supposed to fix these issues. See bug 26975 for more background.
You might find some relevant information searching config.log for "oss_sysinfo". The configure changes that Julliard added use the oss_sysinfo structure to check that you have OSSv4 installed.
If Wine is trying to build wineoss.drv, then you must have oss_sysinfo. If you have oss_sysinfo, then you have OSSv4. If you have OSSv4, then you should have all of the above symbols, but apparently you don't. So I suspect it's something amiss with your OSSv4 implementation, and that's where I would begin investigating.
Does that help you diagnose the problem?
Andrew
On Fri, 6 May 2011, Andrew Eikum wrote: [...]
You might find some relevant information searching config.log for "oss_sysinfo". The configure changes that Julliard added use the oss_sysinfo structure to check that you have OSSv4 installed.
If Wine is trying to build wineoss.drv, then you must have oss_sysinfo. If you have oss_sysinfo, then you have OSSv4. If you have OSSv4, then you should have all of the above symbols, but apparently you don't. So I suspect it's something amiss with your OSSv4 implementation, and that's where I would begin investigating.
Does that help you diagnose the problem?
My understanding (from a bit of Googling some time ago, hopefully someone more expert can chime in) is that FreeBSD does not implement OSSv4: their OSS evolved from OSSv3 independently and now has essentially the same feature set but is not 100% API compatible. That's probably the cause of this build error.
On Fri, 6 May 2011, Andrew Eikum wrote:
If Wine is trying to build wineoss.drv, then you must have oss_sysinfo. If you have oss_sysinfo, then you have OSSv4. If you have OSSv4, then you should have all of the above symbols, but apparently you don't. So I suspect it's something amiss with your OSSv4 implementation, and that's where I would begin investigating.
Does that help you diagnose the problem?
Yes, thanks a lot! Based on yours and Farncois' input, I did some research and found the following, among others
http://manuals.opensound.com/developer/AFMT_S24_PACKED.html
and consulting Google Code Search I find that also other applications do something like the following here (mplayer, for example).
Suggested patch below.
Gerald
ChangeLog: Use AFMT_S24_LE instead of AFMT_S24_PACKED.
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index ff21cd6..789cb1e 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -500,7 +500,7 @@ static int get_oss_format(const WAVEFORMATEX *fmt) case 16: return AFMT_S16_LE; case 24: - return AFMT_S24_PACKED; + return AFMT_S24_LE; case 32: return AFMT_S32_LE; } @@ -953,7 +953,7 @@ static HRESULT WINAPI AudioClient_GetMixFormat(IAudioClient *iface, }else if(formats & AFMT_S32_LE){ fmt->Format.wBitsPerSample = 32; fmt->SubFormat = KSDATAFORMAT_SUBTYPE_PCM; - }else if(formats & AFMT_S24_PACKED){ + }else if(formats & AFMT_S24_LE){ fmt->Format.wBitsPerSample = 24; fmt->SubFormat = KSDATAFORMAT_SUBTYPE_PCM; }else{
On 05/07/2011 07:04 PM, Gerald Pfeifer wrote:
On Fri, 6 May 2011, Andrew Eikum wrote:
If Wine is trying to build wineoss.drv, then you must have oss_sysinfo. If you have oss_sysinfo, then you have OSSv4. If you have OSSv4, then you should have all of the above symbols, but apparently you don't. So I suspect it's something amiss with your OSSv4 implementation, and that's where I would begin investigating.
Does that help you diagnose the problem?
Yes, thanks a lot! Based on yours and Farncois' input, I did some research and found the following, among others
http://manuals.opensound.com/developer/AFMT_S24_PACKED.html
and consulting Google Code Search I find that also other applications do something like the following here (mplayer, for example).
Suggested patch below.
Makes sense to me. Thanks. Do this patch and the float format patch together fix your build issues, Gerald?
Andrew
Gerald
ChangeLog: Use AFMT_S24_LE instead of AFMT_S24_PACKED.
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index ff21cd6..789cb1e 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -500,7 +500,7 @@ static int get_oss_format(const WAVEFORMATEX *fmt) case 16: return AFMT_S16_LE; case 24:
return AFMT_S24_PACKED;
return AFMT_S24_LE; case 32: return AFMT_S32_LE; }
@@ -953,7 +953,7 @@ static HRESULT WINAPI AudioClient_GetMixFormat(IAudioClient *iface, }else if(formats& AFMT_S32_LE){ fmt->Format.wBitsPerSample = 32; fmt->SubFormat = KSDATAFORMAT_SUBTYPE_PCM;
- }else if(formats& AFMT_S24_PACKED){
- }else if(formats& AFMT_S24_LE){ fmt->Format.wBitsPerSample = 24; fmt->SubFormat = KSDATAFORMAT_SUBTYPE_PCM; }else{
On Mon, 9 May 2011, Andrew Eikum wrote:
Makes sense to me. Thanks. Do this patch and the float format patch together fix your build issues, Gerald?
The short answer is: Yes!
The long answer is that here have been three different issues around OSS on current versions of FreeBSD where out of the box Wine would not build.
1. Lack of AFMT_FLOAT
This has been addressed by Wine commit bed73e9e736ef2376e762730a30ad5f2611f969c of mine which only uses this if present.
I also filed the following report against FreeBSD: http://www.freebsd.org/cgi/query-pr.cgi?pr=157050
2. Lack of AFMT_S24_PACKED
This has been addressed by Wine commit 051b64b66f82801d43016068639468575dc3974e of mine which replaced it with AFMT_S24_LE.
I have not filled a bug against FreeBSD since according to http://manuals.opensound.com/developer/AFMT_S24_PACKED.html this does not appear all too useful to begin with?
3. Lack of SNDCTL_DSP_HALT.
This is addressed by my latest patch that uses the equivalent, but older and deprecated, SNDCTL_DSP_RESET in case.
I also submitted a patch against FreeBSD along the same lines: http://www.freebsd.org/cgi/query-pr.cgi?pr=156874
As you can see, all three issues have been addressed in Wine now and for two of them I filed bugs against FreeBSD (one with a patch). :-)
Thanks for your guidance and support around this!
Gerald