diff options
-rw-r--r-- | ext/alsa/gstalsasink.c | 5 | ||||
-rw-r--r-- | ext/alsa/gstalsasrc.c | 5 |
2 files changed, 5 insertions, 5 deletions
diff --git a/ext/alsa/gstalsasink.c b/ext/alsa/gstalsasink.c index cc7230475..c8989ced1 100644 --- a/ext/alsa/gstalsasink.c +++ b/ext/alsa/gstalsasink.c @@ -1020,16 +1020,17 @@ gst_alsasink_write (GstAudioSink * asink, gpointer data, guint length) GstAlsaSink *alsa; gint err; gint cptr; - gint16 *ptr = data; + guint8 *ptr = data; alsa = GST_ALSA_SINK (asink); if (alsa->iec958 && alsa->need_swap) { guint i; + guint16 *ptr_tmp = (guint16 *) ptr; GST_DEBUG_OBJECT (asink, "swapping bytes"); for (i = 0; i < length / 2; i++) { - ptr[i] = GUINT16_SWAP_LE_BE (ptr[i]); + ptr_tmp[i] = GUINT16_SWAP_LE_BE (ptr_tmp[i]); } } diff --git a/ext/alsa/gstalsasrc.c b/ext/alsa/gstalsasrc.c index 0233748b2..a359cc351 100644 --- a/ext/alsa/gstalsasrc.c +++ b/ext/alsa/gstalsasrc.c @@ -954,12 +954,11 @@ gst_alsasrc_read (GstAudioSrc * asrc, gpointer data, guint length, GstAlsaSrc *alsa; gint err; gint cptr; - gint16 *ptr; + guint8 *ptr = data; alsa = GST_ALSA_SRC (asrc); cptr = length / alsa->bpf; - ptr = data; GST_ALSA_SRC_LOCK (asrc); while (cptr > 0) { @@ -975,7 +974,7 @@ gst_alsasrc_read (GstAudioSrc * asrc, gpointer data, guint length, continue; } - ptr += err * alsa->channels; + ptr += snd_pcm_frames_to_bytes (alsa->handle, err); cptr -= err; } GST_ALSA_SRC_UNLOCK (asrc); |