[alsa-devel] feeding back pkgsrc changs
Hi!
I've just updated the pkgsrc packages for alsa-lib, alsa-utils and alsa-plugins to 1.1.0 and noticed that there are quite a number of local patches we have. I'd like to get them integrated.
When I visited the alsa-projects web page, I noticed that the link to the bug tracker is dead.
What is the recommended method to provide the patches?
Thanks, Thomas
On Thu, 18 Feb 2016 16:47:44 +0100, Thomas Klausner wrote:
Hi!
I've just updated the pkgsrc packages for alsa-lib, alsa-utils and alsa-plugins to 1.1.0 and noticed that there are quite a number of local patches we have. I'd like to get them integrated.
When I visited the alsa-projects web page, I noticed that the link to the bug tracker is dead.
What is the recommended method to provide the patches?
Just submit your patches to alsa-devel ML. That's the best way to review and get merged.
thanks,
Takashi
Hi Takashi!
Thanks for the answer.
On Thu, Feb 18, 2016 at 04:51:15PM +0100, Takashi Iwai wrote:
On Thu, 18 Feb 2016 16:47:44 +0100, Thomas Klausner wrote:
I've just updated the pkgsrc packages for alsa-lib, alsa-utils and alsa-plugins to 1.1.0 and noticed that there are quite a number of local patches we have. I'd like to get them integrated.
When I visited the alsa-projects web page, I noticed that the link to the bug tracker is dead.
What is the recommended method to provide the patches?
Just submit your patches to alsa-devel ML. That's the best way to review and get merged.
I'll start with a straightforward one. Some operating systems don't provide an errno 'EBADFD'; let's use EBADF there instead.
This patch adds the define in all files that need it, but if you prefer to add it to a central place instead, please suggest one.
Thanks, Thomas
On Tue, 23 Feb 2016 15:09:06 +0100, Thomas Klausner wrote:
Hi Takashi!
Thanks for the answer.
On Thu, Feb 18, 2016 at 04:51:15PM +0100, Takashi Iwai wrote:
On Thu, 18 Feb 2016 16:47:44 +0100, Thomas Klausner wrote:
I've just updated the pkgsrc packages for alsa-lib, alsa-utils and alsa-plugins to 1.1.0 and noticed that there are quite a number of local patches we have. I'd like to get them integrated.
When I visited the alsa-projects web page, I noticed that the link to the bug tracker is dead.
What is the recommended method to provide the patches?
Just submit your patches to alsa-devel ML. That's the best way to review and get merged.
I'll start with a straightforward one. Some operating systems don't provide an errno 'EBADFD'; let's use EBADF there instead.
This patch adds the define in all files that need it, but if you prefer to add it to a central place instead, please suggest one.
How about put this in include/local.h instead? Then we need to put it only in one place, as this is supposed to be included by all codes.
Takashi
Thanks, Thomas
From e72e16bcb9bd2ddff2624fdb57a96fad6b3cf5bb Mon Sep 17 00:00:00 2001
From: Thomas Klausner wiz@NetBSD.org Date: Tue, 23 Feb 2016 15:05:47 +0100 Subject: [PATCH] Define EBADFD in terms of EBADF if it doesn't exist.
For portability on FreeBSD, NetBSD and probably others.
aserver/aserver.c | 4 ++++ src/control/control_shm.c | 4 ++++ src/pcm/pcm.c | 4 ++++ src/pcm/pcm_dmix.c | 4 ++++ src/pcm/pcm_dshare.c | 4 ++++ src/pcm/pcm_dsnoop.c | 4 ++++ src/pcm/pcm_hw.c | 4 ++++ src/pcm/pcm_ioplug.c | 4 ++++ src/pcm/pcm_null.c | 4 ++++ src/pcm/pcm_rate.c | 4 ++++ src/pcm/pcm_share.c | 4 ++++ src/pcm/pcm_shm.c | 4 ++++ src/pcm/pcm_simple.c | 4 ++++ 13 files changed, 52 insertions(+)
diff --git a/aserver/aserver.c b/aserver/aserver.c index ac20706..88995cf 100644 --- a/aserver/aserver.c +++ b/aserver/aserver.c @@ -35,6 +35,10 @@
#include "aserver.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
char *command;
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) diff --git a/src/control/control_shm.c b/src/control/control_shm.c index bd07d4a..618ef39 100644 --- a/src/control/control_shm.c +++ b/src/control/control_shm.c @@ -35,6 +35,10 @@ #include <netdb.h> #include "aserver.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
#ifndef PIC /* entry for static linking */ const char *_snd_module_control_shm = ""; diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index 203e7a5..6d40171 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -639,6 +639,10 @@ playback devices. #include <limits.h> #include "pcm_local.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
/**
- \brief get identifier of PCM handle
- \param pcm PCM handle
diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c index b26a5c7..ba65cad 100644 --- a/src/pcm/pcm_dmix.c +++ b/src/pcm/pcm_dmix.c @@ -45,6 +45,10 @@ #include <sys/mman.h> #include "pcm_direct.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
#ifndef PIC /* entry for static linking */ const char *_snd_module_pcm_dmix = ""; diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c index 58e47bb..2556a30 100644 --- a/src/pcm/pcm_dshare.c +++ b/src/pcm/pcm_dshare.c @@ -45,6 +45,10 @@ #include <sys/mman.h> #include "pcm_direct.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
#ifndef PIC /* entry for static linking */ const char *_snd_module_pcm_dshare = ""; diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c index 576c35b..26b6f5c 100644 --- a/src/pcm/pcm_dsnoop.c +++ b/src/pcm/pcm_dsnoop.c @@ -45,6 +45,10 @@ #include <sys/mman.h> #include "pcm_direct.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
#ifndef PIC /* entry for static linking */ const char *_snd_module_pcm_dsnoop = ""; diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c index 4f4b84b..de9f9d5 100644 --- a/src/pcm/pcm_hw.c +++ b/src/pcm/pcm_hw.c @@ -40,6 +40,10 @@ #include "../control/control_local.h" #include "../timer/timer_local.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
//#define DEBUG_RW /* use to debug readi/writei/readn/writen */ //#define DEBUG_MMAP /* debug mmap_commit */
diff --git a/src/pcm/pcm_ioplug.c b/src/pcm/pcm_ioplug.c index 43550c0..bed1c97 100644 --- a/src/pcm/pcm_ioplug.c +++ b/src/pcm/pcm_ioplug.c @@ -31,6 +31,10 @@ #include "pcm_ext_parm.h" #include "pcm_generic.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
#ifndef PIC /* entry for static linking */ const char *_snd_module_pcm_ioplug = ""; diff --git a/src/pcm/pcm_null.c b/src/pcm/pcm_null.c index 5e63caa..9fe3c82 100644 --- a/src/pcm/pcm_null.c +++ b/src/pcm/pcm_null.c @@ -31,6 +31,10 @@ #include "pcm_local.h" #include "pcm_plugin.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
#ifndef PIC /* entry for static linking */ const char *_snd_module_pcm_null = ""; diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c index c76db25..c08a2e8 100644 --- a/src/pcm/pcm_rate.c +++ b/src/pcm/pcm_rate.c @@ -36,6 +36,10 @@
#include "plugin_ops.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
#if 0 #define DEBUG_REFINE #endif diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c index 5d8aaf2..9fe8dc1 100644 --- a/src/pcm/pcm_share.c +++ b/src/pcm/pcm_share.c @@ -38,6 +38,10 @@ #include <pthread.h> #include "pcm_local.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
#ifndef PIC /* entry for static linking */ const char *_snd_module_pcm_share = ""; diff --git a/src/pcm/pcm_shm.c b/src/pcm/pcm_shm.c index a815ac6..242b26e 100644 --- a/src/pcm/pcm_shm.c +++ b/src/pcm/pcm_shm.c @@ -45,6 +45,10 @@ #include <netdb.h> #include "aserver.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
#ifndef PIC /* entry for static linking */ const char *_snd_module_pcm_shm = ""; diff --git a/src/pcm/pcm_simple.c b/src/pcm/pcm_simple.c index ce11083..99ba1c3 100644 --- a/src/pcm/pcm_simple.c +++ b/src/pcm/pcm_simple.c @@ -25,6 +25,10 @@
#include "pcm_local.h"
+#ifndef EBADFD +#define EBADFD EBADF +#endif
static int set_buffer_time(snd_spcm_latency_t latency, unsigned int *buffer_time) { -- 2.7.1
On Tue, Feb 23, 2016 at 04:53:51PM +0100, Takashi Iwai wrote:
On Tue, 23 Feb 2016 15:09:06 +0100, Thomas Klausner wrote:
Thanks for the answer.
On Thu, Feb 18, 2016 at 04:51:15PM +0100, Takashi Iwai wrote:
On Thu, 18 Feb 2016 16:47:44 +0100, Thomas Klausner wrote:
I've just updated the pkgsrc packages for alsa-lib, alsa-utils and alsa-plugins to 1.1.0 and noticed that there are quite a number of local patches we have. I'd like to get them integrated.
When I visited the alsa-projects web page, I noticed that the link to the bug tracker is dead.
What is the recommended method to provide the patches?
Just submit your patches to alsa-devel ML. That's the best way to review and get merged.
I'll start with a straightforward one. Some operating systems don't provide an errno 'EBADFD'; let's use EBADF there instead.
This patch adds the define in all files that need it, but if you prefer to add it to a central place instead, please suggest one.
How about put this in include/local.h instead? Then we need to put it only in one place, as this is supposed to be included by all codes.
Sounds good and works. New patch attached. Thomas
On Wed, 24 Feb 2016 14:16:55 +0100, Thomas Klausner wrote:
On Tue, Feb 23, 2016 at 04:53:51PM +0100, Takashi Iwai wrote:
On Tue, 23 Feb 2016 15:09:06 +0100, Thomas Klausner wrote:
Thanks for the answer.
On Thu, Feb 18, 2016 at 04:51:15PM +0100, Takashi Iwai wrote:
On Thu, 18 Feb 2016 16:47:44 +0100, Thomas Klausner wrote:
I've just updated the pkgsrc packages for alsa-lib, alsa-utils and alsa-plugins to 1.1.0 and noticed that there are quite a number of local patches we have. I'd like to get them integrated.
When I visited the alsa-projects web page, I noticed that the link to the bug tracker is dead.
What is the recommended method to provide the patches?
Just submit your patches to alsa-devel ML. That's the best way to review and get merged.
I'll start with a straightforward one. Some operating systems don't provide an errno 'EBADFD'; let's use EBADF there instead.
This patch adds the define in all files that need it, but if you prefer to add it to a central place instead, please suggest one.
How about put this in include/local.h instead? Then we need to put it only in one place, as this is supposed to be included by all codes.
Sounds good and works. New patch attached.
Applied now. Thanks.
Takashi
On Wed, Feb 24, 2016 at 04:36:36PM +0100, Takashi Iwai wrote:
Applied now. Thanks.
Thank you.
The next big issue is that multiple places include Linux specific header files, easily recognizable by the path linux/*.h.
I think these are used to define unusual types like __u32, __u64, __kernel_off_t, __kernel_pid_t. There are also a number of cases of u_xxx_t (which don't exist on Solaris) vs. the uxxx_t defined in C99.
Many of these types have POSIX equivalents, like uint32_t, uint64_t, off_t, pid_t.
Would it be better to switch to those, or should we define compat #typedefs or #defines in local.h?
Cheers, Thomas
Thomas Klausner wrote:
The next big issue is that multiple places include Linux specific header files, easily recognizable by the path linux/*.h.
Once upon a time, alsa-lib was used only on Linux (and also on old versions such as 2.2.x).
I think these are used to define unusual types like __u32, __u64, __kernel_off_t, __kernel_pid_t. There are also a number of cases of u_xxx_t (which don't exist on Solaris) vs. the uxxx_t defined in C99.
Many of these types have POSIX equivalents, like uint32_t, uint64_t, off_t, pid_t.
Would it be better to switch to those, or should we define compat #typedefs or #defines in local.h?
Linux-specific types should be used only in code that actually is Linux specific (i.e., the xxx_hw plugins).
Regards, Clemens
From: Thomas Klausner wiz@NetBSD.org
This helps in particular for Solaris portability. --- include/pcm.h | 8 +- src/pcm/interval.c | 4 +- src/pcm/mask_inline.h | 6 +- src/pcm/pcm.c | 26 +++---- src/pcm/pcm_iec958.c | 12 +-- src/pcm/pcm_linear.c | 2 +- src/pcm/pcm_misc.c | 42 +++++------ src/pcm/pcm_rate_linear.c | 4 +- src/pcm/pcm_route.c | 2 +- src/pcm/plugin_ops.h | 182 +++++++++++++++++++++++----------------------- 10 files changed, 144 insertions(+), 144 deletions(-)
diff --git a/include/pcm.h b/include/pcm.h index 0be1a32..d4f1543 100644 --- a/include/pcm.h +++ b/include/pcm.h @@ -1108,10 +1108,10 @@ int snd_pcm_format_width(snd_pcm_format_t format); /* in bits */ int snd_pcm_format_physical_width(snd_pcm_format_t format); /* in bits */ snd_pcm_format_t snd_pcm_build_linear_format(int width, int pwidth, int unsignd, int big_endian); ssize_t snd_pcm_format_size(snd_pcm_format_t format, size_t samples); -u_int8_t snd_pcm_format_silence(snd_pcm_format_t format); -u_int16_t snd_pcm_format_silence_16(snd_pcm_format_t format); -u_int32_t snd_pcm_format_silence_32(snd_pcm_format_t format); -u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format); +uint8_t snd_pcm_format_silence(snd_pcm_format_t format); +uint16_t snd_pcm_format_silence_16(snd_pcm_format_t format); +uint32_t snd_pcm_format_silence_32(snd_pcm_format_t format); +uint64_t snd_pcm_format_silence_64(snd_pcm_format_t format); int snd_pcm_format_set_silence(snd_pcm_format_t format, void *buf, unsigned int samples);
snd_pcm_sframes_t snd_pcm_bytes_to_frames(snd_pcm_t *pcm, ssize_t bytes); diff --git a/src/pcm/interval.c b/src/pcm/interval.c index 6e39808..74ec320 100644 --- a/src/pcm/interval.c +++ b/src/pcm/interval.c @@ -26,7 +26,7 @@ #include <limits.h> #include "pcm_local.h"
-static inline void div64_32(u_int64_t *n, u_int32_t d, u_int32_t *rem) +static inline void div64_32(uint64_t *n, uint32_t d, uint32_t *rem) { *rem = *n % d; *n /= d; @@ -88,7 +88,7 @@ static inline unsigned int sub(unsigned int a, unsigned int b) static inline unsigned int muldiv32(unsigned int a, unsigned int b, unsigned int c, unsigned int *r) { - u_int64_t n = (u_int64_t) a * b; + uint64_t n = (uint64_t) a * b; if (c == 0) { assert(n > 0); *r = 0; diff --git a/src/pcm/mask_inline.h b/src/pcm/mask_inline.h index f656568..04c7ee6 100644 --- a/src/pcm/mask_inline.h +++ b/src/pcm/mask_inline.h @@ -29,7 +29,7 @@ #define MASK_OFS(i) ((i) >> 5) #define MASK_BIT(i) (1U << ((i) & 31))
-MASK_INLINE unsigned int ld2(u_int32_t v) +MASK_INLINE unsigned int ld2(uint32_t v) { unsigned r = 0;
@@ -54,7 +54,7 @@ MASK_INLINE unsigned int ld2(u_int32_t v) return r; }
-MASK_INLINE unsigned int hweight32(u_int32_t v) +MASK_INLINE unsigned int hweight32(uint32_t v) { v = (v & 0x55555555) + ((v >> 1) & 0x55555555); v = (v & 0x33333333) + ((v >> 2) & 0x33333333); @@ -75,7 +75,7 @@ MASK_INLINE void snd_mask_none(snd_mask_t *mask)
MASK_INLINE void snd_mask_any(snd_mask_t *mask) { - memset(mask, 0xff, MASK_SIZE * sizeof(u_int32_t)); + memset(mask, 0xff, MASK_SIZE * sizeof(uint32_t)); }
MASK_INLINE int snd_mask_empty(const snd_mask_t *mask) diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index 203e7a5..3fe3b39 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -2584,7 +2584,7 @@ int snd_pcm_area_silence(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes char *dst; unsigned int dst_step; int width; - u_int64_t silence; + uint64_t silence; if (!dst_area->addr) return 0; dst = snd_pcm_channel_area_addr(dst_area, dst_offset); @@ -2592,7 +2592,7 @@ int snd_pcm_area_silence(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes silence = snd_pcm_format_silence_64(format); if (dst_area->step == (unsigned int) width) { unsigned int dwords = samples * width / 64; - u_int64_t *dstp = (u_int64_t *)dst; + uint64_t *dstp = (uint64_t *)dst; samples -= dwords * 64 / width; while (dwords-- > 0) *dstp++ = silence; @@ -2602,8 +2602,8 @@ int snd_pcm_area_silence(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes dst_step = dst_area->step / 8; switch (width) { case 4: { - u_int8_t s0 = silence & 0xf0; - u_int8_t s1 = silence & 0x0f; + uint8_t s0 = silence & 0xf0; + uint8_t s1 = silence & 0x0f; int dstbit = dst_area->first % 8; int dstbit_step = dst_area->step % 8; while (samples-- > 0) { @@ -2624,7 +2624,7 @@ int snd_pcm_area_silence(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes break; } case 8: { - u_int8_t sil = silence; + uint8_t sil = silence; while (samples-- > 0) { *dst = sil; dst += dst_step; @@ -2632,9 +2632,9 @@ int snd_pcm_area_silence(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes break; } case 16: { - u_int16_t sil = silence; + uint16_t sil = silence; while (samples-- > 0) { - *(u_int16_t*)dst = sil; + *(uint16_t*)dst = sil; dst += dst_step; } break; @@ -2651,16 +2651,16 @@ int snd_pcm_area_silence(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes #endif break; case 32: { - u_int32_t sil = silence; + uint32_t sil = silence; while (samples-- > 0) { - *(u_int32_t*)dst = sil; + *(uint32_t*)dst = sil; dst += dst_step; } break; } case 64: { while (samples-- > 0) { - *(u_int64_t*)dst = silence; + *(uint64_t*)dst = silence; dst += dst_step; } break; @@ -2804,7 +2804,7 @@ int snd_pcm_area_copy(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes_t } case 16: { while (samples-- > 0) { - *(u_int16_t*)dst = *(const u_int16_t*)src; + *(uint16_t*)dst = *(const uint16_t*)src; src += src_step; dst += dst_step; } @@ -2821,7 +2821,7 @@ int snd_pcm_area_copy(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes_t break; case 32: { while (samples-- > 0) { - *(u_int32_t*)dst = *(const u_int32_t*)src; + *(uint32_t*)dst = *(const uint32_t*)src; src += src_step; dst += dst_step; } @@ -2829,7 +2829,7 @@ int snd_pcm_area_copy(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes_t } case 64: { while (samples-- > 0) { - *(u_int64_t*)dst = *(const u_int64_t*)src; + *(uint64_t*)dst = *(const uint64_t*)src; src += src_step; dst += dst_step; } diff --git a/src/pcm/pcm_iec958.c b/src/pcm/pcm_iec958.c index 38c4ce7..a7fe0d7 100644 --- a/src/pcm/pcm_iec958.c +++ b/src/pcm/pcm_iec958.c @@ -102,7 +102,7 @@ static unsigned int iec958_parity(unsigned int data) * 31 = parity */
-static inline u_int32_t iec958_subframe(snd_pcm_iec958_t *iec, u_int32_t data, int channel) +static inline uint32_t iec958_subframe(snd_pcm_iec958_t *iec, uint32_t data, int channel) { unsigned int byte = iec->counter >> 3; unsigned int mask = 1 << (iec->counter - (byte << 3)); @@ -132,7 +132,7 @@ static inline u_int32_t iec958_subframe(snd_pcm_iec958_t *iec, u_int32_t data, i return data; }
-static inline int32_t iec958_to_s32(snd_pcm_iec958_t *iec, u_int32_t data) +static inline int32_t iec958_to_s32(snd_pcm_iec958_t *iec, uint32_t data) { if (iec->byteswap) data = bswap_32(data); @@ -155,7 +155,7 @@ static void snd_pcm_iec958_decode(snd_pcm_iec958_t *iec, void *put = put32_labels[iec->getput_idx]; unsigned int channel; for (channel = 0; channel < channels; ++channel) { - const u_int32_t *src; + const uint32_t *src; char *dst; int src_step, dst_step; snd_pcm_uframes_t frames1; @@ -163,7 +163,7 @@ static void snd_pcm_iec958_decode(snd_pcm_iec958_t *iec, const snd_pcm_channel_area_t *dst_area = &dst_areas[channel]; src = snd_pcm_channel_area_addr(src_area, src_offset); dst = snd_pcm_channel_area_addr(dst_area, dst_offset); - src_step = snd_pcm_channel_area_step(src_area) / sizeof(u_int32_t); + src_step = snd_pcm_channel_area_step(src_area) / sizeof(uint32_t); dst_step = snd_pcm_channel_area_step(dst_area); frames1 = frames; while (frames1-- > 0) { @@ -195,7 +195,7 @@ static void snd_pcm_iec958_encode(snd_pcm_iec958_t *iec, int counter = iec->counter; for (channel = 0; channel < channels; ++channel) { const char *src; - u_int32_t *dst; + uint32_t *dst; int src_step, dst_step; snd_pcm_uframes_t frames1; const snd_pcm_channel_area_t *src_area = &src_areas[channel]; @@ -203,7 +203,7 @@ static void snd_pcm_iec958_encode(snd_pcm_iec958_t *iec, src = snd_pcm_channel_area_addr(src_area, src_offset); dst = snd_pcm_channel_area_addr(dst_area, dst_offset); src_step = snd_pcm_channel_area_step(src_area); - dst_step = snd_pcm_channel_area_step(dst_area) / sizeof(u_int32_t); + dst_step = snd_pcm_channel_area_step(dst_area) / sizeof(uint32_t); frames1 = frames; iec->counter = counter; while (frames1-- > 0) { diff --git a/src/pcm/pcm_linear.c b/src/pcm/pcm_linear.c index 9a92abd..8b21049 100644 --- a/src/pcm/pcm_linear.c +++ b/src/pcm/pcm_linear.c @@ -183,7 +183,7 @@ void snd_pcm_linear_getput(const snd_pcm_channel_area_t *dst_areas, snd_pcm_ufra void *get = get32_labels[get_idx]; void *put = put32_labels[put_idx]; unsigned int channel; - u_int32_t sample = 0; + uint32_t sample = 0; for (channel = 0; channel < channels; ++channel) { const char *src; char *dst; diff --git a/src/pcm/pcm_misc.c b/src/pcm/pcm_misc.c index 5870f82..83e7c79 100644 --- a/src/pcm/pcm_misc.c +++ b/src/pcm/pcm_misc.c @@ -387,7 +387,7 @@ ssize_t snd_pcm_format_size(snd_pcm_format_t format, size_t samples) * \param format Sample format * \return silence 64 bit word */ -u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format) +uint64_t snd_pcm_format_silence_64(snd_pcm_format_t format) { switch (format) { case SNDRV_PCM_FORMAT_S8: @@ -467,7 +467,7 @@ u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format) { union { float f[2]; - u_int64_t i; + uint64_t i; } u; u.f[0] = u.f[1] = 0.0; #ifdef SNDRV_LITTLE_ENDIAN @@ -480,7 +480,7 @@ u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format) { union { double f; - u_int64_t i; + uint64_t i; } u; u.f = 0.0; #ifdef SNDRV_LITTLE_ENDIAN @@ -493,7 +493,7 @@ u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format) { union { float f[2]; - u_int64_t i; + uint64_t i; } u; u.f[0] = u.f[1] = 0.0; #ifdef SNDRV_LITTLE_ENDIAN @@ -506,7 +506,7 @@ u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format) { union { double f; - u_int64_t i; + uint64_t i; } u; u.f = 0.0; #ifdef SNDRV_LITTLE_ENDIAN @@ -539,10 +539,10 @@ u_int64_t snd_pcm_format_silence_64(snd_pcm_format_t format) * \param format Sample format * \return silence 32 bit word */ -u_int32_t snd_pcm_format_silence_32(snd_pcm_format_t format) +uint32_t snd_pcm_format_silence_32(snd_pcm_format_t format) { assert(snd_pcm_format_physical_width(format) <= 32); - return (u_int32_t)snd_pcm_format_silence_64(format); + return (uint32_t)snd_pcm_format_silence_64(format); }
/** @@ -550,10 +550,10 @@ u_int32_t snd_pcm_format_silence_32(snd_pcm_format_t format) * \param format Sample format * \return silence 16 bit word */ -u_int16_t snd_pcm_format_silence_16(snd_pcm_format_t format) +uint16_t snd_pcm_format_silence_16(snd_pcm_format_t format) { assert(snd_pcm_format_physical_width(format) <= 16); - return (u_int16_t)snd_pcm_format_silence_64(format); + return (uint16_t)snd_pcm_format_silence_64(format); }
/** @@ -561,10 +561,10 @@ u_int16_t snd_pcm_format_silence_16(snd_pcm_format_t format) * \param format Sample format * \return silence 8 bit word */ -u_int8_t snd_pcm_format_silence(snd_pcm_format_t format) +uint8_t snd_pcm_format_silence(snd_pcm_format_t format) { assert(snd_pcm_format_physical_width(format) <= 8); - return (u_int8_t)snd_pcm_format_silence_64(format); + return (uint8_t)snd_pcm_format_silence_64(format); }
/** @@ -580,7 +580,7 @@ int snd_pcm_format_set_silence(snd_pcm_format_t format, void *data, unsigned int return 0; switch (snd_pcm_format_physical_width(format)) { case 4: { - u_int8_t silence = snd_pcm_format_silence_64(format); + uint8_t silence = snd_pcm_format_silence_64(format); unsigned int samples1; if (samples % 2 != 0) return -EINVAL; @@ -589,13 +589,13 @@ int snd_pcm_format_set_silence(snd_pcm_format_t format, void *data, unsigned int break; } case 8: { - u_int8_t silence = snd_pcm_format_silence_64(format); + uint8_t silence = snd_pcm_format_silence_64(format); memset(data, silence, samples); break; } case 16: { - u_int16_t silence = snd_pcm_format_silence_64(format); - u_int16_t *pdata = (u_int16_t *)data; + uint16_t silence = snd_pcm_format_silence_64(format); + uint16_t *pdata = (uint16_t *)data; if (! silence) memset(data, 0, samples * 2); else { @@ -605,8 +605,8 @@ int snd_pcm_format_set_silence(snd_pcm_format_t format, void *data, unsigned int break; } case 24: { - u_int32_t silence = snd_pcm_format_silence_64(format); - u_int8_t *pdata = (u_int8_t *)data; + uint32_t silence = snd_pcm_format_silence_64(format); + uint8_t *pdata = (uint8_t *)data; if (! silence) memset(data, 0, samples * 3); else { @@ -625,8 +625,8 @@ int snd_pcm_format_set_silence(snd_pcm_format_t format, void *data, unsigned int break; } case 32: { - u_int32_t silence = snd_pcm_format_silence_64(format); - u_int32_t *pdata = (u_int32_t *)data; + uint32_t silence = snd_pcm_format_silence_64(format); + uint32_t *pdata = (uint32_t *)data; if (! silence) memset(data, 0, samples * 4); else { @@ -636,8 +636,8 @@ int snd_pcm_format_set_silence(snd_pcm_format_t format, void *data, unsigned int break; } case 64: { - u_int64_t silence = snd_pcm_format_silence_64(format); - u_int64_t *pdata = (u_int64_t *)data; + uint64_t silence = snd_pcm_format_silence_64(format); + uint64_t *pdata = (uint64_t *)data; if (! silence) memset(data, 0, samples * 8); else { diff --git a/src/pcm/pcm_rate_linear.c b/src/pcm/pcm_rate_linear.c index 7481b38..4863938 100644 --- a/src/pcm/pcm_rate_linear.c +++ b/src/pcm/pcm_rate_linear.c @@ -346,7 +346,7 @@ static int linear_init(void *obj, snd_pcm_rate_info_t *info) rate->func = linear_shrink; /* pitch is get_increment */ } - rate->pitch = (((u_int64_t)info->out.rate * LINEAR_DIV) + + rate->pitch = (((uint64_t)info->out.rate * LINEAR_DIV) + (info->in.rate / 2)) / info->in.rate; rate->channels = info->channels;
@@ -363,7 +363,7 @@ static int linear_adjust_pitch(void *obj, snd_pcm_rate_info_t *info) struct rate_linear *rate = obj; snd_pcm_uframes_t cframes;
- rate->pitch = (((u_int64_t)info->out.period_size * LINEAR_DIV) + + rate->pitch = (((uint64_t)info->out.period_size * LINEAR_DIV) + (info->in.period_size/2) ) / info->in.period_size; cframes = input_frames(rate, info->out.period_size); diff --git a/src/pcm/pcm_route.c b/src/pcm/pcm_route.c index 646517d..c8e752f 100644 --- a/src/pcm/pcm_route.c +++ b/src/pcm/pcm_route.c @@ -190,7 +190,7 @@ static void snd_pcm_route_convert1_one_getput(const snd_pcm_channel_area_t *dst_ const char *src; char *dst; int src_step, dst_step; - u_int32_t sample = 0; + uint32_t sample = 0; for (srcidx = 0; srcidx < ttable->nsrcs && srcidx < src_channels; ++srcidx) { unsigned int channel = ttable->srcs[srcidx].channel; if (channel >= src_channels) diff --git a/src/pcm/plugin_ops.h b/src/pcm/plugin_ops.h index eb8c2c4..69e7f2c 100644 --- a/src/pcm/plugin_ops.h +++ b/src/pcm/plugin_ops.h @@ -21,13 +21,13 @@
#ifndef SX_INLINES #define SX_INLINES -static inline u_int32_t sx24(u_int32_t x) +static inline uint32_t sx24(uint32_t x) { if(x&0x00800000) return x|0xFF000000; return x&0x00FFFFFF; } -static inline u_int32_t sx24s(u_int32_t x) +static inline uint32_t sx24s(uint32_t x) { if(x&0x00008000) return x|0x000000FF; @@ -35,10 +35,10 @@ static inline u_int32_t sx24s(u_int32_t x) } #endif
-#define as_u8(ptr) (*(u_int8_t*)(ptr)) -#define as_u16(ptr) (*(u_int16_t*)(ptr)) -#define as_u32(ptr) (*(u_int32_t*)(ptr)) -#define as_u64(ptr) (*(u_int64_t*)(ptr)) +#define as_u8(ptr) (*(uint8_t*)(ptr)) +#define as_u16(ptr) (*(uint16_t*)(ptr)) +#define as_u32(ptr) (*(uint32_t*)(ptr)) +#define as_u64(ptr) (*(uint64_t*)(ptr)) #define as_s8(ptr) (*(int8_t*)(ptr)) #define as_s16(ptr) (*(int16_t*)(ptr)) #define as_s32(ptr) (*(int32_t*)(ptr)) @@ -46,10 +46,10 @@ static inline u_int32_t sx24s(u_int32_t x) #define as_float(ptr) (*(float_t*)(ptr)) #define as_double(ptr) (*(double_t*)(ptr))
-#define as_u8c(ptr) (*(const u_int8_t*)(ptr)) -#define as_u16c(ptr) (*(const u_int16_t*)(ptr)) -#define as_u32c(ptr) (*(const u_int32_t*)(ptr)) -#define as_u64c(ptr) (*(const u_int64_t*)(ptr)) +#define as_u8c(ptr) (*(const uint8_t*)(ptr)) +#define as_u16c(ptr) (*(const uint16_t*)(ptr)) +#define as_u32c(ptr) (*(const uint32_t*)(ptr)) +#define as_u64c(ptr) (*(const uint64_t*)(ptr)) #define as_s8c(ptr) (*(const int8_t*)(ptr)) #define as_s16c(ptr) (*(const int16_t*)(ptr)) #define as_s32c(ptr) (*(const int32_t*)(ptr)) @@ -57,18 +57,18 @@ static inline u_int32_t sx24s(u_int32_t x) #define as_floatc(ptr) (*(const float_t*)(ptr)) #define as_doublec(ptr) (*(const double_t*)(ptr))
-#define _get_triple_le(ptr) (*(u_int8_t*)(ptr) | (u_int32_t)*((u_int8_t*)(ptr) + 1) << 8 | (u_int32_t)*((u_int8_t*)(ptr) + 2) << 16) -#define _get_triple_be(ptr) ((u_int32_t)*(u_int8_t*)(ptr) << 16 | (u_int32_t)*((u_int8_t*)(ptr) + 1) << 8 | *((u_int8_t*)(ptr) + 2)) +#define _get_triple_le(ptr) (*(uint8_t*)(ptr) | (uint32_t)*((uint8_t*)(ptr) + 1) << 8 | (uint32_t)*((uint8_t*)(ptr) + 2) << 16) +#define _get_triple_be(ptr) ((uint32_t)*(uint8_t*)(ptr) << 16 | (uint32_t)*((uint8_t*)(ptr) + 1) << 8 | *((uint8_t*)(ptr) + 2)) #define _put_triple_le(ptr,val) do { \ - u_int8_t *_tmp = (u_int8_t *)(ptr); \ - u_int32_t _val = (val); \ + uint8_t *_tmp = (uint8_t *)(ptr); \ + uint32_t _val = (val); \ _tmp[0] = _val; \ _tmp[1] = _val >> 8; \ _tmp[2] = _val >> 16; \ } while(0) #define _put_triple_be(ptr,val) do { \ - u_int8_t *_tmp = (u_int8_t *)(ptr); \ - u_int32_t _val = (val); \ + uint8_t *_tmp = (uint8_t *)(ptr); \ + uint32_t _val = (val); \ _tmp[0] = _val >> 16; \ _tmp[1] = _val >> 8; \ _tmp[2] = _val; \ @@ -243,45 +243,45 @@ static void *const conv_labels[4 * 2 * 2 * 4 * 2] = { #ifdef CONV_END while(0) { conv_xxx1_xxx1: as_u8(dst) = as_u8c(src); goto CONV_END; -conv_xxx1_xx10: as_u16(dst) = (u_int16_t)as_u8c(src) << 8; goto CONV_END; -conv_xxx1_xx01: as_u16(dst) = (u_int16_t)as_u8c(src); goto CONV_END; -conv_xxx1_x100: as_u32(dst) = sx24((u_int32_t)as_u8c(src) << 16); goto CONV_END; -conv_xxx1_001x: as_u32(dst) = sx24s((u_int32_t)as_u8c(src) << 8); goto CONV_END; -conv_xxx1_1000: as_u32(dst) = (u_int32_t)as_u8c(src) << 24; goto CONV_END; -conv_xxx1_0001: as_u32(dst) = (u_int32_t)as_u8c(src); goto CONV_END; +conv_xxx1_xx10: as_u16(dst) = (uint16_t)as_u8c(src) << 8; goto CONV_END; +conv_xxx1_xx01: as_u16(dst) = (uint16_t)as_u8c(src); goto CONV_END; +conv_xxx1_x100: as_u32(dst) = sx24((uint32_t)as_u8c(src) << 16); goto CONV_END; +conv_xxx1_001x: as_u32(dst) = sx24s((uint32_t)as_u8c(src) << 8); goto CONV_END; +conv_xxx1_1000: as_u32(dst) = (uint32_t)as_u8c(src) << 24; goto CONV_END; +conv_xxx1_0001: as_u32(dst) = (uint32_t)as_u8c(src); goto CONV_END; conv_xxx1_xxx9: as_u8(dst) = as_u8c(src) ^ 0x80; goto CONV_END; -conv_xxx1_xx90: as_u16(dst) = (u_int16_t)(as_u8c(src) ^ 0x80) << 8; goto CONV_END; -conv_xxx1_xx09: as_u16(dst) = (u_int16_t)(as_u8c(src) ^ 0x80); goto CONV_END; -conv_xxx1_x900: as_u32(dst) = sx24((u_int32_t)(as_u8c(src) ^ 0x80) << 16); goto CONV_END; -conv_xxx1_009x: as_u32(dst) = sx24s((u_int32_t)(as_u8c(src) ^ 0x80) << 8); goto CONV_END; -conv_xxx1_9000: as_u32(dst) = (u_int32_t)(as_u8c(src) ^ 0x80) << 24; goto CONV_END; -conv_xxx1_0009: as_u32(dst) = (u_int32_t)(as_u8c(src) ^ 0x80); goto CONV_END; +conv_xxx1_xx90: as_u16(dst) = (uint16_t)(as_u8c(src) ^ 0x80) << 8; goto CONV_END; +conv_xxx1_xx09: as_u16(dst) = (uint16_t)(as_u8c(src) ^ 0x80); goto CONV_END; +conv_xxx1_x900: as_u32(dst) = sx24((uint32_t)(as_u8c(src) ^ 0x80) << 16); goto CONV_END; +conv_xxx1_009x: as_u32(dst) = sx24s((uint32_t)(as_u8c(src) ^ 0x80) << 8); goto CONV_END; +conv_xxx1_9000: as_u32(dst) = (uint32_t)(as_u8c(src) ^ 0x80) << 24; goto CONV_END; +conv_xxx1_0009: as_u32(dst) = (uint32_t)(as_u8c(src) ^ 0x80); goto CONV_END; conv_xx12_xxx1: as_u8(dst) = as_u16c(src) >> 8; goto CONV_END; conv_xx12_xx12: as_u16(dst) = as_u16c(src); goto CONV_END; conv_xx12_xx21: as_u16(dst) = bswap_16(as_u16c(src)); goto CONV_END; -conv_xx12_x120: as_u32(dst) = sx24((u_int32_t)as_u16c(src) << 8); goto CONV_END; -conv_xx12_021x: as_u32(dst) = sx24s((u_int32_t)bswap_16(as_u16c(src)) << 8); goto CONV_END; -conv_xx12_1200: as_u32(dst) = (u_int32_t)as_u16c(src) << 16; goto CONV_END; -conv_xx12_0021: as_u32(dst) = (u_int32_t)bswap_16(as_u16c(src)); goto CONV_END; +conv_xx12_x120: as_u32(dst) = sx24((uint32_t)as_u16c(src) << 8); goto CONV_END; +conv_xx12_021x: as_u32(dst) = sx24s((uint32_t)bswap_16(as_u16c(src)) << 8); goto CONV_END; +conv_xx12_1200: as_u32(dst) = (uint32_t)as_u16c(src) << 16; goto CONV_END; +conv_xx12_0021: as_u32(dst) = (uint32_t)bswap_16(as_u16c(src)); goto CONV_END; conv_xx12_xxx9: as_u8(dst) = (as_u16c(src) >> 8) ^ 0x80; goto CONV_END; conv_xx12_xx92: as_u16(dst) = as_u16c(src) ^ 0x8000; goto CONV_END; conv_xx12_xx29: as_u16(dst) = bswap_16(as_u16c(src)) ^ 0x80; goto CONV_END; -conv_xx12_x920: as_u32(dst) = sx24((u_int32_t)(as_u16c(src) ^ 0x8000) << 8); goto CONV_END; -conv_xx12_029x: as_u32(dst) = sx24s((u_int32_t)(bswap_16(as_u16c(src)) ^ 0x80) << 8); goto CONV_END; -conv_xx12_9200: as_u32(dst) = (u_int32_t)(as_u16c(src) ^ 0x8000) << 16; goto CONV_END; -conv_xx12_0029: as_u32(dst) = (u_int32_t)(bswap_16(as_u16c(src)) ^ 0x80); goto CONV_END; +conv_xx12_x920: as_u32(dst) = sx24((uint32_t)(as_u16c(src) ^ 0x8000) << 8); goto CONV_END; +conv_xx12_029x: as_u32(dst) = sx24s((uint32_t)(bswap_16(as_u16c(src)) ^ 0x80) << 8); goto CONV_END; +conv_xx12_9200: as_u32(dst) = (uint32_t)(as_u16c(src) ^ 0x8000) << 16; goto CONV_END; +conv_xx12_0029: as_u32(dst) = (uint32_t)(bswap_16(as_u16c(src)) ^ 0x80); goto CONV_END; conv_xx12_xxx2: as_u8(dst) = as_u16c(src) & 0xff; goto CONV_END; -conv_xx12_x210: as_u32(dst) = sx24((u_int32_t)bswap_16(as_u16c(src)) << 8); goto CONV_END; -conv_xx12_012x: as_u32(dst) = sx24s((u_int32_t)as_u16c(src) << 8); goto CONV_END; -conv_xx12_2100: as_u32(dst) = (u_int32_t)bswap_16(as_u16c(src)) << 16; goto CONV_END; -conv_xx12_0012: as_u32(dst) = (u_int32_t)as_u16c(src); goto CONV_END; +conv_xx12_x210: as_u32(dst) = sx24((uint32_t)bswap_16(as_u16c(src)) << 8); goto CONV_END; +conv_xx12_012x: as_u32(dst) = sx24s((uint32_t)as_u16c(src) << 8); goto CONV_END; +conv_xx12_2100: as_u32(dst) = (uint32_t)bswap_16(as_u16c(src)) << 16; goto CONV_END; +conv_xx12_0012: as_u32(dst) = (uint32_t)as_u16c(src); goto CONV_END; conv_xx12_xxxA: as_u8(dst) = (as_u16c(src) ^ 0x80) & 0xff; goto CONV_END; conv_xx12_xxA1: as_u16(dst) = bswap_16(as_u16c(src) ^ 0x80); goto CONV_END; conv_xx12_xx1A: as_u16(dst) = as_u16c(src) ^ 0x80; goto CONV_END; -conv_xx12_xA10: as_u32(dst) = sx24((u_int32_t)bswap_16(as_u16c(src) ^ 0x80) << 8); goto CONV_END; -conv_xx12_01Ax: as_u32(dst) = sx24s((u_int32_t)(as_u16c(src) ^ 0x80) << 8); goto CONV_END; -conv_xx12_A100: as_u32(dst) = (u_int32_t)bswap_16(as_u16c(src) ^ 0x80) << 16; goto CONV_END; -conv_xx12_001A: as_u32(dst) = (u_int32_t)(as_u16c(src) ^ 0x80); goto CONV_END; +conv_xx12_xA10: as_u32(dst) = sx24((uint32_t)bswap_16(as_u16c(src) ^ 0x80) << 8); goto CONV_END; +conv_xx12_01Ax: as_u32(dst) = sx24s((uint32_t)(as_u16c(src) ^ 0x80) << 8); goto CONV_END; +conv_xx12_A100: as_u32(dst) = (uint32_t)bswap_16(as_u16c(src) ^ 0x80) << 16; goto CONV_END; +conv_xx12_001A: as_u32(dst) = (uint32_t)(as_u16c(src) ^ 0x80); goto CONV_END; conv_x123_xxx1: as_u8(dst) = as_u32c(src) >> 16; goto CONV_END; conv_x123_xx12: as_u16(dst) = as_u32c(src) >> 8; goto CONV_END; conv_x123_xx21: as_u16(dst) = bswap_16(as_u32c(src) >> 8); goto CONV_END; @@ -376,8 +376,8 @@ static void *const get16_labels[4 * 2 * 2 + 4 * 3] = {
#ifdef GET16_END while(0) { -get16_1_10: sample = (u_int16_t)as_u8c(src) << 8; goto GET16_END; -get16_1_90: sample = (u_int16_t)(as_u8c(src) ^ 0x80) << 8; goto GET16_END; +get16_1_10: sample = (uint16_t)as_u8c(src) << 8; goto GET16_END; +get16_1_90: sample = (uint16_t)(as_u8c(src) ^ 0x80) << 8; goto GET16_END; get16_12_12: sample = as_u16c(src); goto GET16_END; get16_12_92: sample = as_u16c(src) ^ 0x8000; goto GET16_END; get16_12_21: sample = bswap_16(as_u16c(src)); goto GET16_END; @@ -448,26 +448,26 @@ put16_12_12: as_u16(dst) = sample; goto PUT16_END; put16_12_92: as_u16(dst) = sample ^ 0x8000; goto PUT16_END; put16_12_21: as_u16(dst) = bswap_16(sample); goto PUT16_END; put16_12_29: as_u16(dst) = bswap_16(sample) ^ 0x80; goto PUT16_END; -put16_12_0120: as_u32(dst) = sx24((u_int32_t)sample << 8); goto PUT16_END; -put16_12_0920: as_u32(dst) = sx24((u_int32_t)(sample ^ 0x8000) << 8); goto PUT16_END; -put16_12_0210: as_u32(dst) = sx24s((u_int32_t)bswap_16(sample) << 8); goto PUT16_END; -put16_12_0290: as_u32(dst) = sx24s((u_int32_t)(bswap_16(sample) ^ 0x80) << 8); goto PUT16_END; -put16_12_1200: as_u32(dst) = (u_int32_t)sample << 16; goto PUT16_END; -put16_12_9200: as_u32(dst) = (u_int32_t)(sample ^ 0x8000) << 16; goto PUT16_END; -put16_12_0021: as_u32(dst) = (u_int32_t)bswap_16(sample); goto PUT16_END; -put16_12_0029: as_u32(dst) = (u_int32_t)bswap_16(sample) ^ 0x80; goto PUT16_END; -put16_12_120: _put_triple(dst, (u_int32_t)sample << 8); goto PUT16_END; -put16_12_920: _put_triple(dst, (u_int32_t)(sample ^ 0x8000) << 8); goto PUT16_END; -put16_12_021: _put_triple_s(dst, (u_int32_t)sample << 8); goto PUT16_END; -put16_12_029: _put_triple_s(dst, (u_int32_t)(sample ^ 0x8000) << 8); goto PUT16_END; -put16_12_120_20: _put_triple(dst, (u_int32_t)sample << 4); goto PUT16_END; -put16_12_920_20: _put_triple(dst, (u_int32_t)(sample ^ 0x8000) << 4); goto PUT16_END; -put16_12_021_20: _put_triple_s(dst, (u_int32_t)sample << 4); goto PUT16_END; -put16_12_029_20: _put_triple_s(dst, (u_int32_t)(sample ^ 0x8000) << 4); goto PUT16_END; -put16_12_120_18: _put_triple(dst, (u_int32_t)sample << 2); goto PUT16_END; -put16_12_920_18: _put_triple(dst, (u_int32_t)(sample ^ 0x8000) << 2); goto PUT16_END; -put16_12_021_18: _put_triple_s(dst, (u_int32_t)sample << 2); goto PUT16_END; -put16_12_029_18: _put_triple_s(dst, (u_int32_t)(sample ^ 0x8000) << 2); goto PUT16_END; +put16_12_0120: as_u32(dst) = sx24((uint32_t)sample << 8); goto PUT16_END; +put16_12_0920: as_u32(dst) = sx24((uint32_t)(sample ^ 0x8000) << 8); goto PUT16_END; +put16_12_0210: as_u32(dst) = sx24s((uint32_t)bswap_16(sample) << 8); goto PUT16_END; +put16_12_0290: as_u32(dst) = sx24s((uint32_t)(bswap_16(sample) ^ 0x80) << 8); goto PUT16_END; +put16_12_1200: as_u32(dst) = (uint32_t)sample << 16; goto PUT16_END; +put16_12_9200: as_u32(dst) = (uint32_t)(sample ^ 0x8000) << 16; goto PUT16_END; +put16_12_0021: as_u32(dst) = (uint32_t)bswap_16(sample); goto PUT16_END; +put16_12_0029: as_u32(dst) = (uint32_t)bswap_16(sample) ^ 0x80; goto PUT16_END; +put16_12_120: _put_triple(dst, (uint32_t)sample << 8); goto PUT16_END; +put16_12_920: _put_triple(dst, (uint32_t)(sample ^ 0x8000) << 8); goto PUT16_END; +put16_12_021: _put_triple_s(dst, (uint32_t)sample << 8); goto PUT16_END; +put16_12_029: _put_triple_s(dst, (uint32_t)(sample ^ 0x8000) << 8); goto PUT16_END; +put16_12_120_20: _put_triple(dst, (uint32_t)sample << 4); goto PUT16_END; +put16_12_920_20: _put_triple(dst, (uint32_t)(sample ^ 0x8000) << 4); goto PUT16_END; +put16_12_021_20: _put_triple_s(dst, (uint32_t)sample << 4); goto PUT16_END; +put16_12_029_20: _put_triple_s(dst, (uint32_t)(sample ^ 0x8000) << 4); goto PUT16_END; +put16_12_120_18: _put_triple(dst, (uint32_t)sample << 2); goto PUT16_END; +put16_12_920_18: _put_triple(dst, (uint32_t)(sample ^ 0x8000) << 2); goto PUT16_END; +put16_12_021_18: _put_triple_s(dst, (uint32_t)sample << 2); goto PUT16_END; +put16_12_029_18: _put_triple_s(dst, (uint32_t)(sample ^ 0x8000) << 2); goto PUT16_END; } #endif
@@ -517,12 +517,12 @@ static void *const get32_labels[4 * 2 * 2 + 4 * 3] = {
#ifdef GET32_END while (0) { -get32_1_1000: sample = (u_int32_t)as_u8c(src) << 24; goto GET32_END; -get32_1_9000: sample = (u_int32_t)(as_u8c(src) ^ 0x80) << 24; goto GET32_END; -get32_12_1200: sample = (u_int32_t)as_u16c(src) << 16; goto GET32_END; -get32_12_9200: sample = (u_int32_t)(as_u16c(src) ^ 0x8000) << 16; goto GET32_END; -get32_12_2100: sample = (u_int32_t)bswap_16(as_u16c(src)) << 16; goto GET32_END; -get32_12_A100: sample = (u_int32_t)bswap_16(as_u16c(src) ^ 0x80) << 16; goto GET32_END; +get32_1_1000: sample = (uint32_t)as_u8c(src) << 24; goto GET32_END; +get32_1_9000: sample = (uint32_t)(as_u8c(src) ^ 0x80) << 24; goto GET32_END; +get32_12_1200: sample = (uint32_t)as_u16c(src) << 16; goto GET32_END; +get32_12_9200: sample = (uint32_t)(as_u16c(src) ^ 0x8000) << 16; goto GET32_END; +get32_12_2100: sample = (uint32_t)bswap_16(as_u16c(src)) << 16; goto GET32_END; +get32_12_A100: sample = (uint32_t)bswap_16(as_u16c(src) ^ 0x80) << 16; goto GET32_END; get32_0123_1230: sample = as_u32c(src) << 8; goto GET32_END; get32_0123_9230: sample = (as_u32c(src) << 8) ^ 0x80000000; goto GET32_END; get32_1230_3210: sample = bswap_32(as_u32c(src) >> 8); goto GET32_END; @@ -786,18 +786,18 @@ static inline void _norms(const void *src, void *dst, s += (1U << (dst_wid - 1)); switch (dst_wid) { case 8: - *(u_int8_t*)dst = s; + *(uint8_t*)dst = s; break; case 16: if (dst_end) s = bswap_16(s); - *(u_int16_t*)dst = s; + *(uint16_t*)dst = s; break; case 24: case 32: if (dst_end) s = bswap_32(s); - *(u_int32_t*)dst = s; + *(uint32_t*)dst = s; break; } return; @@ -806,27 +806,27 @@ static inline void _norms(const void *src, void *dst, switch (dst_wid) { case 8: if (dst_sign) - *(u_int8_t*)dst = 0x80; + *(uint8_t*)dst = 0x80; else - *(u_int8_t*)dst = 0; + *(uint8_t*)dst = 0; break; case 16: if (dst_sign) - *(u_int16_t*)dst = dst_end ? 0x0080 : 0x8000; + *(uint16_t*)dst = dst_end ? 0x0080 : 0x8000; else - *(u_int16_t*)dst = 0; + *(uint16_t*)dst = 0; break; case 24: if (dst_sign) - *(u_int32_t*)dst = dst_end ? 0x00008000 : 0x00800000; + *(uint32_t*)dst = dst_end ? 0x00008000 : 0x00800000; else - *(u_int32_t*)dst = 0; + *(uint32_t*)dst = 0; break; case 32: if (dst_sign) - *(u_int32_t*)dst = dst_end ? 0x00000080 : 0x80000000; + *(uint32_t*)dst = dst_end ? 0x00000080 : 0x80000000; else - *(u_int32_t*)dst = 0; + *(uint32_t*)dst = 0; break; default: assert(0); @@ -838,27 +838,27 @@ static inline void _norms(const void *src, void *dst, switch (dst_wid) { case 8: if (dst_sign) - *(u_int8_t*)dst = 0x7f; + *(uint8_t*)dst = 0x7f; else - *(u_int8_t*)dst = 0xff; + *(uint8_t*)dst = 0xff; break; case 16: if (dst_sign) - *(u_int16_t*)dst = dst_end ? 0xff7f : 0x7fff; + *(uint16_t*)dst = dst_end ? 0xff7f : 0x7fff; else - *(u_int16_t*)dst = 0; + *(uint16_t*)dst = 0; break; case 24: if (dst_sign) - *(u_int32_t*)dst = dst_end ? 0xffff7f00 : 0x007fffff; + *(uint32_t*)dst = dst_end ? 0xffff7f00 : 0x007fffff; else - *(u_int32_t*)dst = 0; + *(uint32_t*)dst = 0; break; case 32: if (dst_sign) - *(u_int32_t*)dst = dst_end ? 0xffffff7f : 0x7fffffff; + *(uint32_t*)dst = dst_end ? 0xffffff7f : 0x7fffffff; else - *(u_int32_t*)dst = 0; + *(uint32_t*)dst = 0; break; default: assert(0);
From: Thomas Klausner wiz@NetBSD.org
--- include/sound/asound.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/sound/asound.h b/include/sound/asound.h index a82108e..4f2202f 100644 --- a/include/sound/asound.h +++ b/include/sound/asound.h @@ -415,7 +415,7 @@ struct snd_pcm_sw_params {
struct snd_pcm_channel_info { unsigned int channel; - __kernel_off_t offset; /* mmap offset */ + off_t offset; /* mmap offset */ unsigned int first; /* offset to first sample in bits */ unsigned int step; /* samples distance in bits */ }; @@ -884,7 +884,7 @@ struct snd_ctl_elem_info { snd_ctl_elem_type_t type; /* R: value type - SNDRV_CTL_ELEM_TYPE_* */ unsigned int access; /* R: value access (bitmask) - SNDRV_CTL_ELEM_ACCESS_* */ unsigned int count; /* count of values */ - __kernel_pid_t owner; /* owner's PID of this control */ + pid_t owner; /* owner's PID of this control */ union { struct { long min; /* R: minimum value */
On Mon, 29 Feb 2016 16:05:20 +0100, Thomas Klausner wrote:
From: Thomas Klausner wiz@NetBSD.org
include/sound/asound.h | 4 ++--
Sorry, this is no-go. The files in include/sound/* are basically copies of Linux ABI. So, all these files must not be modified in alsa-lib side. And, using __kernel_off_t there is in purpose -- to distinguish from the user-space off_t.
That said, the best workaround for these files are to provide the compatible typedefs.
OTOH, the code changes in include/pcm.h and src/pcm/* are acceptable, in general, but I still hesitate to apply it, so far. If it's only about portability, we may wrap it with a few typedefs instead of touching so many lines. And it would bring any other real benefit? It's the question...
thanks,
Takashi
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/sound/asound.h b/include/sound/asound.h index a82108e..4f2202f 100644 --- a/include/sound/asound.h +++ b/include/sound/asound.h @@ -415,7 +415,7 @@ struct snd_pcm_sw_params {
struct snd_pcm_channel_info { unsigned int channel;
- __kernel_off_t offset; /* mmap offset */
- off_t offset; /* mmap offset */ unsigned int first; /* offset to first sample in bits */ unsigned int step; /* samples distance in bits */
}; @@ -884,7 +884,7 @@ struct snd_ctl_elem_info { snd_ctl_elem_type_t type; /* R: value type - SNDRV_CTL_ELEM_TYPE_* */ unsigned int access; /* R: value access (bitmask) - SNDRV_CTL_ELEM_ACCESS_* */ unsigned int count; /* count of values */
- __kernel_pid_t owner; /* owner's PID of this control */
- pid_t owner; /* owner's PID of this control */ union { struct { long min; /* R: minimum value */
-- 2.7.1
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Hi!
On Mon, Feb 29, 2016 at 05:10:34PM +0100, Takashi Iwai wrote:
On Mon, 29 Feb 2016 16:05:20 +0100, Thomas Klausner wrote:
From: Thomas Klausner wiz@NetBSD.org
include/sound/asound.h | 4 ++--
Sorry, this is no-go. The files in include/sound/* are basically copies of Linux ABI. So, all these files must not be modified in alsa-lib side. And, using __kernel_off_t there is in purpose -- to distinguish from the user-space off_t.
That said, the best workaround for these files are to provide the compatible typedefs.
So how about the attached patch instead?
OTOH, the code changes in include/pcm.h and src/pcm/* are acceptable, in general, but I still hesitate to apply it, so far. If it's only about portability, we may wrap it with a few typedefs instead of touching so many lines. And it would bring any other real benefit? It's the question...
I still prefer uint* to u_int* because uint* is in POSIX and u_int* is not, but I added the necessary defines in the new patch. Thomas
On Wed, 02 Mar 2016 23:14:54 +0100, Thomas Klausner wrote:
From 634255a4d87a12132bb65868f5658fd14cd2bfd7 Mon Sep 17 00:00:00 2001
From: Thomas Klausner wiz@NetBSD.org Date: Wed, 2 Mar 2016 23:11:54 +0100 Subject: [PATCH] Define some types if missing.
For portability with non-Linux.
Include Linux header on Linux only.
include/local.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+)
diff --git a/include/local.h b/include/local.h index 28ed106..9728598 100644 --- a/include/local.h +++ b/include/local.h @@ -50,13 +50,52 @@ #include <sys/poll.h> #include <sys/types.h> #include <errno.h> +#if defined(__linux__) #include <linux/types.h> #include <linux/ioctl.h> +#endif
#ifndef EBADFD #define EBADFD EBADF #endif
+#ifndef __u16 +#define __u16 uint16_t +#endif +#ifndef __u32 +#define __u32 uint32_t +#endif +#ifndef __u64 +#define __u64 uint64_t +#endif +#ifndef __le16 +#define __le16 uint16_t +#endif +#ifndef __le32 +#define __le32 uint32_t +#endif +#ifndef __le64 +#define __le64 uint64_t +#endif +#ifndef u_int8_t +#define u_int8_t uint8_t +#endif +#ifndef u_int16_t +#define u_int16_t uint16_t +#endif +#ifndef u_int32_t +#define u_int32_t uint32_t +#endif +#ifndef u_int32_t +#define u_int32_t uint64_t +#endif +#ifndef __kernel_pid_t +#define __kernel_pid_t pid_t +#endif +#ifndef __kernel_off_t +#define __kernel_off_t off_t +#endif
Can we put this in include/type_compat.h or something like that, and include it in #else block of #ifdef __linux__?
As a bonus, the EBADFD definition can also go to there, too.
thanks,
Takashi
On Thu, Mar 03, 2016 at 10:32:04AM +0100, Takashi Iwai wrote:
Can we put this in include/type_compat.h or something like that, and include it in #else block of #ifdef __linux__?
As a bonus, the EBADFD definition can also go to there, too.
Sure, see attached. Thomas
On Thu, 03 Mar 2016 10:50:41 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 10:32:04AM +0100, Takashi Iwai wrote:
Can we put this in include/type_compat.h or something like that, and include it in #else block of #ifdef __linux__?
As a bonus, the EBADFD definition can also go to there, too.
Sure, see attached. Thomas
From c68bfda4e5198b50b32937de669155afb423d726 Mon Sep 17 00:00:00 2001
From: Thomas Klausner wiz@NetBSD.org Date: Wed, 2 Mar 2016 23:11:54 +0100 Subject: [PATCH] Define some types if missing.
For portability with non-Linux.
Include Linux headers on Linux only.
include/local.h | 6 ++--- include/type_compat.h | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 include/type_compat.h
You need to add it in include/Makefile.am, too. Otherwise it'll slip from the tarball.
Takashi
On Thu, 03 Mar 2016 10:53:46 +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 10:50:41 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 10:32:04AM +0100, Takashi Iwai wrote:
Can we put this in include/type_compat.h or something like that, and include it in #else block of #ifdef __linux__?
As a bonus, the EBADFD definition can also go to there, too.
Sure, see attached. Thomas
From c68bfda4e5198b50b32937de669155afb423d726 Mon Sep 17 00:00:00 2001
From: Thomas Klausner wiz@NetBSD.org Date: Wed, 2 Mar 2016 23:11:54 +0100 Subject: [PATCH] Define some types if missing.
For portability with non-Linux.
Include Linux headers on Linux only.
include/local.h | 6 ++--- include/type_compat.h | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 include/type_compat.h
You need to add it in include/Makefile.am, too. Otherwise it'll slip from the tarball.
Oh, also it'd be good if you give your sign-off, too. For user-space, I accept the patches without sign-off as long as they are trivial enough. But this kind of change is preferred with a proper sign off, of course.
thanks,
Takashi
On Thu, Mar 03, 2016 at 10:55:01AM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 10:53:46 +0100, Takashi Iwai wrote:
You need to add it in include/Makefile.am, too. Otherwise it'll slip from the tarball.
Good catch, added.
Oh, also it'd be good if you give your sign-off, too. For user-space, I accept the patches without sign-off as long as they are trivial enough. But this kind of change is preferred with a proper sign off, of course.
Sure! Thomas
On Thu, 03 Mar 2016 10:58:52 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 10:55:01AM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 10:53:46 +0100, Takashi Iwai wrote:
You need to add it in include/Makefile.am, too. Otherwise it'll slip from the tarball.
Good catch, added.
Oh, also it'd be good if you give your sign-off, too. For user-space, I accept the patches without sign-off as long as they are trivial enough. But this kind of change is preferred with a proper sign off, of course.
Sure!
Applied now. Thanks.
Takashi
On Thu, Mar 03, 2016 at 11:01:23AM +0100, Takashi Iwai wrote:
Applied now. Thanks.
Thank you!
Next big issue: Many places include byteswap.h to get bswap_16, bswap_32, bswap_64.
This header does not exist on *BSD or Solaris.
However, all of these provide similar macros under different names, from different header files (bswap16 etc, or BSWAP_16).
Do you want a compat header, e.g. include/bswap.h that takes care of this and is included by local.h, or do you prefer a different solution? Thomas
On Thu, 03 Mar 2016 11:10:05 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 11:01:23AM +0100, Takashi Iwai wrote:
Applied now. Thanks.
Thank you!
Next big issue: Many places include byteswap.h to get bswap_16, bswap_32, bswap_64.
This header does not exist on *BSD or Solaris.
However, all of these provide similar macros under different names, from different header files (bswap16 etc, or BSWAP_16).
Do you want a compat header, e.g. include/bswap.h that takes care of this and is included by local.h, or do you prefer a different solution?
bswap.h looks better ATM. Let's see.
Takashi
On Thu, Mar 03, 2016 at 11:21:05AM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 11:10:05 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 11:01:23AM +0100, Takashi Iwai wrote:
Applied now. Thanks.
Thank you!
Next big issue: Many places include byteswap.h to get bswap_16, bswap_32, bswap_64.
This header does not exist on *BSD or Solaris.
However, all of these provide similar macros under different names, from different header files (bswap16 etc, or BSWAP_16).
Do you want a compat header, e.g. include/bswap.h that takes care of this and is included by local.h, or do you prefer a different solution?
bswap.h looks better ATM. Let's see.
Ok, here's my try for a version of bswap.h. Does it look ok? Thomas
On Thu, 03 Mar 2016 12:18:40 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 11:21:05AM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 11:10:05 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 11:01:23AM +0100, Takashi Iwai wrote:
Applied now. Thanks.
Thank you!
Next big issue: Many places include byteswap.h to get bswap_16, bswap_32, bswap_64.
This header does not exist on *BSD or Solaris.
However, all of these provide similar macros under different names, from different header files (bswap16 etc, or BSWAP_16).
Do you want a compat header, e.g. include/bswap.h that takes care of this and is included by local.h, or do you prefer a different solution?
bswap.h looks better ATM. Let's see.
Ok, here's my try for a version of bswap.h. Does it look ok?
Looks good to me -- supposing you tested it actually :)
Takashi
On Thu, Mar 03, 2016 at 12:37:25PM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 12:18:40 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 11:21:05AM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 11:10:05 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 11:01:23AM +0100, Takashi Iwai wrote:
Applied now. Thanks.
Thank you!
Next big issue: Many places include byteswap.h to get bswap_16, bswap_32, bswap_64.
This header does not exist on *BSD or Solaris.
However, all of these provide similar macros under different names, from different header files (bswap16 etc, or BSWAP_16).
Do you want a compat header, e.g. include/bswap.h that takes care of this and is included by local.h, or do you prefer a different solution?
bswap.h looks better ATM. Let's see.
Ok, here's my try for a version of bswap.h. Does it look ok?
Looks good to me -- supposing you tested it actually :)
This particular patch was only compile-tested on NetBSD, but a quite similar ifdef has been in pkgsrc for years and has survived a number of bulk builds over the years. Thomas
Here are the remaining patches to make the build succeed on NetBSD. More patches are needed for FreeBSD and Solaris, but let's take it one at a time :-)
I think the first two (0002 and 0003) should be uncontroversial.
For patch 0004 it would perhaps be good to have versionsort/alphasort in a central place instead of two. Do you have a suggestion where?
I'm not sure what to do about 0005 since you said you don't want to modify include/sound/asound.h.
endian.h seems to be unneeded on src/topology/tplg_local.h; if it's needed, I can move it inside the #ifdef. Thomas
On Thu, 03 Mar 2016 13:02:42 +0100, Thomas Klausner wrote:
Here are the remaining patches to make the build succeed on NetBSD. More patches are needed for FreeBSD and Solaris, but let's take it one at a time :-)
I think the first two (0002 and 0003) should be uncontroversial.
For patch 0004 it would perhaps be good to have versionsort/alphasort in a central place instead of two. Do you have a suggestion where?
I'm not sure what to do about 0005 since you said you don't want to modify include/sound/asound.h.
Right. If we need to modify, it must be applied to Linux kernel tree at first, then copy back to alsa-lib.
endian.h seems to be unneeded on src/topology/tplg_local.h; if it's needed, I can move it inside the #ifdef.
src/topology/parser.c contains the code depending on the endian. The include can be moved there, too.
Takashi
On Thu, Mar 03, 2016 at 02:35:06PM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 13:02:42 +0100, Thomas Klausner wrote:
Here are the remaining patches to make the build succeed on NetBSD. More patches are needed for FreeBSD and Solaris, but let's take it one at a time :-)
I think the first two (0002 and 0003) should be uncontroversial.
For patch 0004 it would perhaps be good to have versionsort/alphasort in a central place instead of two. Do you have a suggestion where?
I'm not sure what to do about 0005 since you said you don't want to modify include/sound/asound.h.
Right. If we need to modify, it must be applied to Linux kernel tree at first, then copy back to alsa-lib.
I haven't done this before.
I see on https://www.kernel.org/doc/linux/MAINTAINERS
SOUND M: Jaroslav Kysela perex@perex.cz M: Takashi Iwai tiwai@suse.com L: alsa-devel@alsa-project.org (moderated for non-subscribers) W: http://www.alsa-project.org/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git T: git git://git.alsa-project.org/alsa-kernel.git Q: http://patchwork.kernel.org/project/alsa-devel/list/ S: Maintained F: Documentation/sound/ F: include/sound/ F: include/uapi/sound/ F: sound/
Against which of the two git trees should I prepare the patch?
endian.h seems to be unneeded on src/topology/tplg_local.h; if it's needed, I can move it inside the #ifdef.
src/topology/parser.c contains the code depending on the endian. The include can be moved there, too.
local.h already handles endianness:
#ifdef HAVE_ENDIAN_H #include <endian.h> #elif defined(HAVE_SYS_ENDIAN_H) #include <sys/endian.h> #ifndef __BYTE_ORDER #define __BYTE_ORDER BYTE_ORDER #endif #ifndef __LITTLE_ENDIAN #define __LITTLE_ENDIAN LITTLE_ENDIAN #endif #ifndef __BIG_ENDIAN #define __BIG_ENDIAN BIG_ENDIAN #endif #else #error Header defining endianness not defined #endif
So I think the endian.h include is not necessary and can just be removed. Thomas
On Thu, 03 Mar 2016 14:46:41 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 02:35:06PM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 13:02:42 +0100, Thomas Klausner wrote:
Here are the remaining patches to make the build succeed on NetBSD. More patches are needed for FreeBSD and Solaris, but let's take it one at a time :-)
I think the first two (0002 and 0003) should be uncontroversial.
For patch 0004 it would perhaps be good to have versionsort/alphasort in a central place instead of two. Do you have a suggestion where?
I'm not sure what to do about 0005 since you said you don't want to modify include/sound/asound.h.
Right. If we need to modify, it must be applied to Linux kernel tree at first, then copy back to alsa-lib.
I haven't done this before.
I see on https://www.kernel.org/doc/linux/MAINTAINERS
SOUND M: Jaroslav Kysela perex@perex.cz M: Takashi Iwai tiwai@suse.com L: alsa-devel@alsa-project.org (moderated for non-subscribers) W: http://www.alsa-project.org/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git T: git git://git.alsa-project.org/alsa-kernel.git Q: http://patchwork.kernel.org/project/alsa-devel/list/ S: Maintained F: Documentation/sound/ F: include/sound/ F: include/uapi/sound/ F: sound/
Against which of the two git trees should I prepare the patch?
Use my sound git tree.
endian.h seems to be unneeded on src/topology/tplg_local.h; if it's needed, I can move it inside the #ifdef.
src/topology/parser.c contains the code depending on the endian. The include can be moved there, too.
local.h already handles endianness:
#ifdef HAVE_ENDIAN_H #include <endian.h> #elif defined(HAVE_SYS_ENDIAN_H) #include <sys/endian.h> #ifndef __BYTE_ORDER #define __BYTE_ORDER BYTE_ORDER #endif #ifndef __LITTLE_ENDIAN #define __LITTLE_ENDIAN LITTLE_ENDIAN #endif #ifndef __BIG_ENDIAN #define __BIG_ENDIAN BIG_ENDIAN #endif #else #error Header defining endianness not defined #endif
So I think the endian.h include is not necessary and can just be removed.
Yes, looks so.
Takashi
On Thu, Mar 03, 2016 at 02:54:09PM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 14:46:41 +0100, Thomas Klausner wrote:
On Thu, Mar 03, 2016 at 02:35:06PM +0100, Takashi Iwai wrote:
On Thu, 03 Mar 2016 13:02:42 +0100, Thomas Klausner wrote:
Here are the remaining patches to make the build succeed on NetBSD. More patches are needed for FreeBSD and Solaris, but let's take it one at a time :-)
I think the first two (0002 and 0003) should be uncontroversial.
For patch 0004 it would perhaps be good to have versionsort/alphasort in a central place instead of two. Do you have a suggestion where?
I'm not sure what to do about 0005 since you said you don't want to modify include/sound/asound.h.
Right. If we need to modify, it must be applied to Linux kernel tree at first, then copy back to alsa-lib.
I haven't done this before.
I see on https://www.kernel.org/doc/linux/MAINTAINERS
SOUND M: Jaroslav Kysela perex@perex.cz M: Takashi Iwai tiwai@suse.com L: alsa-devel@alsa-project.org (moderated for non-subscribers) W: http://www.alsa-project.org/ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git T: git git://git.alsa-project.org/alsa-kernel.git Q: http://patchwork.kernel.org/project/alsa-devel/list/ S: Maintained F: Documentation/sound/ F: include/sound/ F: include/uapi/sound/ F: sound/
Against which of the two git trees should I prepare the patch?
Use my sound git tree.
Ok, I've just sent a patch against that repository to this mailing list. Thomas
From: Thomas Klausner wiz@NetBSD.org
For better portability. --- include/sound/asoc.h | 178 +++++++++++++++++++++++++-------------------------- 1 file changed, 89 insertions(+), 89 deletions(-)
diff --git a/include/sound/asoc.h b/include/sound/asoc.h index a29c05c..05bdae7 100644 --- a/include/sound/asoc.h +++ b/include/sound/asoc.h @@ -112,15 +112,15 @@ * This header precedes all object and object arrays below. */ struct snd_soc_tplg_hdr { - __le32 magic; /* magic number */ - __le32 abi; /* ABI version */ - __le32 version; /* optional vendor specific version details */ - __le32 type; /* SND_SOC_TPLG_TYPE_ */ - __le32 size; /* size of this structure */ - __le32 vendor_type; /* optional vendor specific type info */ - __le32 payload_size; /* data bytes, excluding this header */ - __le32 index; /* identifier for block */ - __le32 count; /* number of elements in block */ + uint32_t magic; /* magic number */ + uint32_t abi; /* ABI version */ + uint32_t version; /* optional vendor specific version details */ + uint32_t type; /* SND_SOC_TPLG_TYPE_ */ + uint32_t size; /* size of this structure */ + uint32_t vendor_type; /* optional vendor specific type info */ + uint32_t payload_size; /* data bytes, excluding this header */ + uint32_t index; /* identifier for block */ + uint32_t count; /* number of elements in block */ } __attribute__((packed));
/* @@ -129,7 +129,7 @@ struct snd_soc_tplg_hdr { * firmware. Core will ignore this data. */ struct snd_soc_tplg_private { - __le32 size; /* in bytes of private data */ + uint32_t size; /* in bytes of private data */ char data[0]; } __attribute__((packed));
@@ -137,16 +137,16 @@ struct snd_soc_tplg_private { * Kcontrol TLV data. */ struct snd_soc_tplg_tlv_dbscale { - __le32 min; - __le32 step; - __le32 mute; + uint32_t min; + uint32_t step; + uint32_t mute; } __attribute__((packed));
struct snd_soc_tplg_ctl_tlv { - __le32 size; /* in bytes of this structure */ - __le32 type; /* SNDRV_CTL_TLVT_*, type of TLV */ + uint32_t size; /* in bytes of this structure */ + uint32_t type; /* SNDRV_CTL_TLVT_*, type of TLV */ union { - __le32 data[SND_SOC_TPLG_TLV_SIZE]; + uint32_t data[SND_SOC_TPLG_TLV_SIZE]; struct snd_soc_tplg_tlv_dbscale scale; }; } __attribute__((packed)); @@ -155,10 +155,10 @@ struct snd_soc_tplg_ctl_tlv { * Kcontrol channel data */ struct snd_soc_tplg_channel { - __le32 size; /* in bytes of this structure */ - __le32 reg; - __le32 shift; - __le32 id; /* ID maps to Left, Right, LFE etc */ + uint32_t size; /* in bytes of this structure */ + uint32_t reg; + uint32_t shift; + uint32_t id; /* ID maps to Left, Right, LFE etc */ } __attribute__((packed));
/* @@ -167,19 +167,19 @@ struct snd_soc_tplg_channel { * Bytes ext ops need get/put. */ struct snd_soc_tplg_io_ops { - __le32 get; - __le32 put; - __le32 info; + uint32_t get; + uint32_t put; + uint32_t info; } __attribute__((packed));
/* * kcontrol header */ struct snd_soc_tplg_ctl_hdr { - __le32 size; /* in bytes of this structure */ - __le32 type; + uint32_t size; /* in bytes of this structure */ + uint32_t type; char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; - __le32 access; + uint32_t access; struct snd_soc_tplg_io_ops ops; struct snd_soc_tplg_ctl_tlv tlv; } __attribute__((packed)); @@ -188,33 +188,33 @@ struct snd_soc_tplg_ctl_hdr { * Stream Capabilities */ struct snd_soc_tplg_stream_caps { - __le32 size; /* in bytes of this structure */ + uint32_t size; /* in bytes of this structure */ char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; - __le64 formats; /* supported formats SNDRV_PCM_FMTBIT_* */ - __le32 rates; /* supported rates SNDRV_PCM_RATE_* */ - __le32 rate_min; /* min rate */ - __le32 rate_max; /* max rate */ - __le32 channels_min; /* min channels */ - __le32 channels_max; /* max channels */ - __le32 periods_min; /* min number of periods */ - __le32 periods_max; /* max number of periods */ - __le32 period_size_min; /* min period size bytes */ - __le32 period_size_max; /* max period size bytes */ - __le32 buffer_size_min; /* min buffer size bytes */ - __le32 buffer_size_max; /* max buffer size bytes */ + uint64_t formats; /* supported formats SNDRV_PCM_FMTBIT_* */ + uint32_t rates; /* supported rates SNDRV_PCM_RATE_* */ + uint32_t rate_min; /* min rate */ + uint32_t rate_max; /* max rate */ + uint32_t channels_min; /* min channels */ + uint32_t channels_max; /* max channels */ + uint32_t periods_min; /* min number of periods */ + uint32_t periods_max; /* max number of periods */ + uint32_t period_size_min; /* min period size bytes */ + uint32_t period_size_max; /* max period size bytes */ + uint32_t buffer_size_min; /* min buffer size bytes */ + uint32_t buffer_size_max; /* max buffer size bytes */ } __attribute__((packed));
/* * FE or BE Stream configuration supported by SW/FW */ struct snd_soc_tplg_stream { - __le32 size; /* in bytes of this structure */ + uint32_t size; /* in bytes of this structure */ char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* Name of the stream */ - __le64 format; /* SNDRV_PCM_FMTBIT_* */ - __le32 rate; /* SNDRV_PCM_RATE_* */ - __le32 period_bytes; /* size of period in bytes */ - __le32 buffer_bytes; /* size of buffer in bytes */ - __le32 channels; /* channels */ + uint64_t format; /* SNDRV_PCM_FMTBIT_* */ + uint32_t rate; /* SNDRV_PCM_RATE_* */ + uint32_t period_bytes; /* size of period in bytes */ + uint32_t buffer_bytes; /* size of buffer in bytes */ + uint32_t channels; /* channels */ } __attribute__((packed));
/* @@ -230,12 +230,12 @@ struct snd_soc_tplg_stream { * +-----------------------------------+----+ */ struct snd_soc_tplg_manifest { - __le32 size; /* in bytes of this structure */ - __le32 control_elems; /* number of control elements */ - __le32 widget_elems; /* number of widget elements */ - __le32 graph_elems; /* number of graph elements */ - __le32 pcm_elems; /* number of PCM elements */ - __le32 dai_link_elems; /* number of DAI link elements */ + uint32_t size; /* in bytes of this structure */ + uint32_t control_elems; /* number of control elements */ + uint32_t widget_elems; /* number of widget elements */ + uint32_t graph_elems; /* number of graph elements */ + uint32_t pcm_elems; /* number of PCM elements */ + uint32_t dai_link_elems; /* number of DAI link elements */ struct snd_soc_tplg_private priv; } __attribute__((packed));
@@ -251,12 +251,12 @@ struct snd_soc_tplg_manifest { */ struct snd_soc_tplg_mixer_control { struct snd_soc_tplg_ctl_hdr hdr; - __le32 size; /* in bytes of this structure */ - __le32 min; - __le32 max; - __le32 platform_max; - __le32 invert; - __le32 num_channels; + uint32_t size; /* in bytes of this structure */ + uint32_t min; + uint32_t max; + uint32_t platform_max; + uint32_t invert; + uint32_t num_channels; struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN]; struct snd_soc_tplg_private priv; } __attribute__((packed)); @@ -273,14 +273,14 @@ struct snd_soc_tplg_mixer_control { */ struct snd_soc_tplg_enum_control { struct snd_soc_tplg_ctl_hdr hdr; - __le32 size; /* in bytes of this structure */ - __le32 num_channels; + uint32_t size; /* in bytes of this structure */ + uint32_t num_channels; struct snd_soc_tplg_channel channel[SND_SOC_TPLG_MAX_CHAN]; - __le32 items; - __le32 mask; - __le32 count; + uint32_t items; + uint32_t mask; + uint32_t count; char texts[SND_SOC_TPLG_NUM_TEXTS][SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; - __le32 values[SND_SOC_TPLG_NUM_TEXTS * SNDRV_CTL_ELEM_ID_NAME_MAXLEN / 4]; + uint32_t values[SND_SOC_TPLG_NUM_TEXTS * SNDRV_CTL_ELEM_ID_NAME_MAXLEN / 4]; struct snd_soc_tplg_private priv; } __attribute__((packed));
@@ -296,11 +296,11 @@ struct snd_soc_tplg_enum_control { */ struct snd_soc_tplg_bytes_control { struct snd_soc_tplg_ctl_hdr hdr; - __le32 size; /* in bytes of this structure */ - __le32 max; - __le32 mask; - __le32 base; - __le32 num_regs; + uint32_t size; /* in bytes of this structure */ + uint32_t max; + uint32_t mask; + uint32_t base; + uint32_t num_regs; struct snd_soc_tplg_io_ops ext_ops; struct snd_soc_tplg_private priv; } __attribute__((packed)); @@ -338,20 +338,20 @@ struct snd_soc_tplg_dapm_graph_elem { * in the block. */ struct snd_soc_tplg_dapm_widget { - __le32 size; /* in bytes of this structure */ - __le32 id; /* SND_SOC_DAPM_CTL */ + uint32_t size; /* in bytes of this structure */ + uint32_t id; /* SND_SOC_DAPM_CTL */ char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; char sname[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
- __le32 reg; /* negative reg = no direct dapm */ - __le32 shift; /* bits to shift */ - __le32 mask; /* non-shifted mask */ - __le32 subseq; /* sort within widget type */ - __le32 invert; /* invert the power bit */ - __le32 ignore_suspend; /* kept enabled over suspend */ - __le16 event_flags; - __le16 event_type; - __le32 num_kcontrols; + uint32_t reg; /* negative reg = no direct dapm */ + uint32_t shift; /* bits to shift */ + uint32_t mask; /* non-shifted mask */ + uint32_t subseq; /* sort within widget type */ + uint32_t invert; /* invert the power bit */ + uint32_t ignore_suspend; /* kept enabled over suspend */ + uint16_t event_flags; + uint16_t event_type; + uint32_t num_kcontrols; struct snd_soc_tplg_private priv; /* * kcontrols that relate to this widget @@ -371,16 +371,16 @@ struct snd_soc_tplg_dapm_widget { * +-----------------------------------+-----+ */ struct snd_soc_tplg_pcm { - __le32 size; /* in bytes of this structure */ + uint32_t size; /* in bytes of this structure */ char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; - __le32 pcm_id; /* unique ID - used to match */ - __le32 dai_id; /* unique ID - used to match */ - __le32 playback; /* supports playback mode */ - __le32 capture; /* supports capture mode */ - __le32 compress; /* 1 = compressed; 0 = PCM */ + uint32_t pcm_id; /* unique ID - used to match */ + uint32_t dai_id; /* unique ID - used to match */ + uint32_t playback; /* supports playback mode */ + uint32_t capture; /* supports capture mode */ + uint32_t compress; /* 1 = compressed; 0 = PCM */ struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* for DAI link */ - __le32 num_streams; /* number of streams */ + uint32_t num_streams; /* number of streams */ struct snd_soc_tplg_stream_caps caps[2]; /* playback and capture for DAI */ } __attribute__((packed));
@@ -396,9 +396,9 @@ struct snd_soc_tplg_pcm { * +-----------------------------------+-----+ */ struct snd_soc_tplg_link_config { - __le32 size; /* in bytes of this structure */ - __le32 id; /* unique ID - used to match */ + uint32_t size; /* in bytes of this structure */ + uint32_t id; /* unique ID - used to match */ struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback and captrure */ - __le32 num_streams; /* number of streams */ + uint32_t num_streams; /* number of streams */ } __attribute__((packed)); #endif
And here's a fourth one.
participants (3)
-
Clemens Ladisch
-
Takashi Iwai
-
Thomas Klausner