audio endianness API changes (malc)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2042 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/audio/audio.c b/audio/audio.c
index 0de728c..dd86c4d 100644
--- a/audio/audio.c
+++ b/audio/audio.c
@@ -510,6 +510,18 @@
         AUD_log (NULL, "invalid(%d)", as->fmt);
         break;
     }
+    AUD_log (NULL, "endianness=");
+    switch (as->endianness) {
+    case 0:
+        AUD_log (NULL, "little");
+        break;
+    case 1:
+        AUD_log (NULL, "big");
+        break;
+    default:
+        AUD_log (NULL, "invalid");
+        break;
+    }
     AUD_log (NULL, "\n");
 }
 
@@ -518,6 +530,7 @@
     int invalid;
 
     invalid = as->nchannels != 1 && as->nchannels != 2;
+    invalid |= as->endianness != 0 && as->endianness != 1;
 
     switch (as->fmt) {
     case AUD_FMT_S8:
@@ -531,11 +544,7 @@
     }
 
     invalid |= as->freq <= 0;
-
-    if (invalid) {
-        return -1;
-    }
-    return 0;
+    return invalid ? -1 : 0;
 }
 
 static int audio_pcm_info_eq (struct audio_pcm_info *info, audsettings_t *as)
@@ -557,14 +566,11 @@
     return info->freq == as->freq
         && info->nchannels == as->nchannels
         && info->sign == sign
-        && info->bits == bits;
+        && info->bits == bits
+        && info->swap_endianness == (as->endianness != AUDIO_HOST_ENDIANNESS);
 }
 
-void audio_pcm_init_info (
-    struct audio_pcm_info *info,
-    audsettings_t *as,
-    int swap_endian
-    )
+void audio_pcm_init_info (struct audio_pcm_info *info, audsettings_t *as)
 {
     int bits = 8, sign = 0;
 
@@ -588,7 +594,7 @@
     info->shift = (as->nchannels == 2) + (bits == 16);
     info->align = (1 << info->shift) - 1;
     info->bytes_per_second = info->freq << info->shift;
-    info->swap_endian = swap_endian;
+    info->swap_endianness = (as->endianness != AUDIO_HOST_ENDIANNESS);
 }
 
 void audio_pcm_info_clear_buf (struct audio_pcm_info *info, void *buf, int len)
@@ -610,7 +616,7 @@
             int shift = info->nchannels - 1;
             short s = INT16_MAX;
 
-            if (info->swap_endian) {
+            if (info->swap_endianness) {
                 s = bswap16 (s);
             }
 
@@ -635,16 +641,13 @@
 
 static CaptureVoiceOut *audio_pcm_capture_find_specific (
     AudioState *s,
-    audsettings_t *as,
-    int endian
+    audsettings_t *as
     )
 {
     CaptureVoiceOut *cap;
-    int swap_endian = audio_need_to_swap_endian (endian);
 
     for (cap = s->cap_head.lh_first; cap; cap = cap->entries.le_next) {
-        if ((cap->hw.info.swap_endian == swap_endian)
-            && audio_pcm_info_eq (&cap->hw.info, as)) {
+        if (audio_pcm_info_eq (&cap->hw.info, as)) {
             return cap;
         }
     }
@@ -1697,7 +1700,6 @@
 int AUD_add_capture (
     AudioState *s,
     audsettings_t *as,
-    int endian,
     struct audio_capture_ops *ops,
     void *cb_opaque
     )
@@ -1725,7 +1727,7 @@
     cb->ops = *ops;
     cb->opaque = cb_opaque;
 
-    cap = audio_pcm_capture_find_specific (s, as, endian);
+    cap = audio_pcm_capture_find_specific (s, as);
     if (cap) {
         LIST_INSERT_HEAD (&cap->cb_head, cb, entries);
         return 0;
@@ -1755,7 +1757,7 @@
             goto err2;
         }
 
-        audio_pcm_init_info (&hw->info, as, endian);
+        audio_pcm_init_info (&hw->info, as);
 
         cap->buf = audio_calloc (AUDIO_FUNC, hw->samples, 1 << hw->info.shift);
         if (!cap->buf) {
@@ -1768,7 +1770,7 @@
         hw->clip = mixeng_clip
             [hw->info.nchannels == 2]
             [hw->info.sign]
-            [hw->info.swap_endian]
+            [hw->info.swap_endianness]
             [hw->info.bits == 16];
 
         LIST_INSERT_HEAD (&s->cap_head, cap, entries);