Update to latest tinyalsa
authorSimon Wilson <simonwilson@google.com>
Wed, 16 Nov 2011 22:45:38 +0000 (14:45 -0800)
committerSimon Wilson <simonwilson@google.com>
Wed, 16 Nov 2011 22:49:59 +0000 (14:49 -0800)
ee9ba87 pcm: fix underrun detection
5251016 mixer: show BYTE controls
a912d70 include: fix header comments and arguments

Change-Id: I33386f64b65b55c337ceacbe62dc6d498a536378

include/tinyalsa/asoundlib.h
mixer.c
pcm.c
tinymix.c

index 741c46641cd31967a6019c0d666b40db9c6eef32..d6409fef2e673ca7669e08af5fd0d13dd9bc89ae 100644 (file)
@@ -113,12 +113,10 @@ int pcm_set_config(struct pcm *pcm, struct pcm_config *config);
 /* Returns a human readable reason for the last error */
 const char *pcm_get_error(struct pcm *pcm);
 
-/* Returns the buffer size (int frames) that should be used for pcm_write.
- * This will be 1/2 of the actual fifo size.
- */
+/* Returns the buffer size (int frames) that should be used for pcm_write. */
 unsigned int pcm_get_buffer_size(struct pcm *pcm);
 unsigned int pcm_frames_to_bytes(struct pcm *pcm, unsigned int frames);
-unsigned int pcm_bytes_to_frames(struct pcm *pcm, unsigned int frames);
+unsigned int pcm_bytes_to_frames(struct pcm *pcm, unsigned int bytes);
 
 /* Returns the pcm latency in ms */
 unsigned int pcm_get_latency(struct pcm *pcm);
diff --git a/mixer.c b/mixer.c
index 5563bc6d8f2c7e2b9f88c6c5f37cf144d4f7543c..a7f5d21a05fda44f7045e51a16ce16ea8f494c11 100644 (file)
--- a/mixer.c
+++ b/mixer.c
@@ -306,6 +306,9 @@ int mixer_ctl_get_value(struct mixer_ctl *ctl, unsigned int id)
     case SNDRV_CTL_ELEM_TYPE_ENUMERATED:
         return ev.value.enumerated.item[id];
 
+    case SNDRV_CTL_ELEM_TYPE_BYTES:
+        return ev.value.bytes.data[id];
+
     default:
         return -EINVAL;
     }
diff --git a/pcm.c b/pcm.c
index dbf68e4768ea2623fdeb84585e59dbf76759b7f1..f499a05d6c3bcb1151ccd20b2813ba753b430a5e 100644 (file)
--- a/pcm.c
+++ b/pcm.c
@@ -341,6 +341,9 @@ int pcm_get_htimestamp(struct pcm *pcm, unsigned int *avail,
     if (rc < 0)
         return -1;
 
+    if (pcm->mmap_status->state == PCM_STATE_XRUN)
+        return -1;
+
     *tstamp = pcm->mmap_status->tstamp;
     if (tstamp->tv_sec == 0 && tstamp->tv_nsec == 0)
         return -1;
@@ -549,7 +552,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
     /* pick a high stop threshold - todo: does this need further tuning */
     if (!config->stop_threshold)
         pcm->config.stop_threshold = sparams.stop_threshold =
-            config->period_count * config->period_size * 10;
+            config->period_count * config->period_size;
     else
         sparams.stop_threshold = config->stop_threshold;
 
index 3b778e1aa869d27c0063c21bcf5183b942d6d7e8..b9c71a4176cd942e4226188f7d6cf439034d09b4 100644 (file)
--- a/tinymix.c
+++ b/tinymix.c
@@ -140,6 +140,9 @@ static void tinymix_detail_control(struct mixer *mixer, unsigned int id,
         case MIXER_CTL_TYPE_ENUM:
             tinymix_print_enum(ctl, print_all);
             break;
+         case MIXER_CTL_TYPE_BYTE:
+            printf(" 0x%02x", mixer_ctl_get_value(ctl, i));
+            break;
         default:
             printf(" unknown");
             break;