summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGuenter Bartsch <guenter@users.sourceforge.net>2001-05-06 16:56:01 +0000
committerGuenter Bartsch <guenter@users.sourceforge.net>2001-05-06 16:56:01 +0000
commita3801dae20515db5ba2da755a99b5470df9e8c5d (patch)
tree248daad5e9c95a52542603095de5677d5df6eb06 /src
parent0f52a1b976833f18ab46d2754fc28fa145b9a536 (diff)
downloadxine-lib-a3801dae20515db5ba2da755a99b5470df9e8c5d.tar.gz
xine-lib-a3801dae20515db5ba2da755a99b5470df9e8c5d.tar.bz2
sample rate handling for streams that change their sample rate at some points
CVS patchset: 66 CVS date: 2001/05/06 16:56:01
Diffstat (limited to 'src')
-rw-r--r--src/libmpg123/interface.c3
-rw-r--r--src/libmpg123/layer1.c9
-rw-r--r--src/libmpg123/layer2.c10
-rw-r--r--src/libmpg123/layer3.c13
-rw-r--r--src/libmpg123/mpglib.h3
5 files changed, 27 insertions, 11 deletions
diff --git a/src/libmpg123/interface.c b/src/libmpg123/interface.c
index 12b3b47af..f02bca63b 100644
--- a/src/libmpg123/interface.c
+++ b/src/libmpg123/interface.c
@@ -18,7 +18,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: interface.c,v 1.2 2001/04/27 10:42:38 f1rmb Exp $
+ * $Id: interface.c,v 1.3 2001/05/06 16:56:01 guenter Exp $
*/
#include <stdlib.h>
@@ -36,6 +36,7 @@ void mpg_audio_reset (mpgaudio_t *mp) {
mp->bsnum = 0;
mp->synth_bo = 1;
mp->is_output_initialized = 0;
+ mp->sample_rate_device = 0;
mp->header = 0;
}
diff --git a/src/libmpg123/layer1.c b/src/libmpg123/layer1.c
index dd6cef6ac..a4e8075de 100644
--- a/src/libmpg123/layer1.c
+++ b/src/libmpg123/layer1.c
@@ -146,10 +146,15 @@ void do_layer1(metronom_t *metronom, mpgaudio_t *mp, uint32_t pts)
}
}
- if (!mp->is_output_initialized) {
- mp->ao_output->open (metronom, 16, fr->sample_rate,
+ if ((!mp->is_output_initialized) || (mp->sample_rate_device != fr->sample_rate)) {
+
+ if (mp->is_output_initialized)
+ mp->ao_output->close();
+
+ mp->ao_output->open (16, fr->sample_rate,
stereo-1 ? AO_MODE_STEREO: AO_MODE_MONO);
mp->is_output_initialized = 1;
+ mp->sample_rate_device = fr->sample_rate;
printf ("layer1\n");
}
diff --git a/src/libmpg123/layer2.c b/src/libmpg123/layer2.c
index 738825995..42d680273 100644
--- a/src/libmpg123/layer2.c
+++ b/src/libmpg123/layer2.c
@@ -286,13 +286,17 @@ void do_layer2(metronom_t *metronom, mpgaudio_t *mp, uint32_t pts)
}
}
- if (!mp->is_output_initialized) {
- mp->ao_output->open (metronom, 16, fr->sample_rate,
+ if ((!mp->is_output_initialized) || (mp->sample_rate_device != fr->sample_rate)) {
+
+ if (mp->is_output_initialized)
+ mp->ao_output->close();
+
+ mp->ao_output->open (16, fr->sample_rate,
stereo-1 ? AO_MODE_STEREO: AO_MODE_MONO);
mp->is_output_initialized = 1;
+ mp->sample_rate_device = fr->sample_rate;
printf ("layer2\n");
-
}
mp->ao_output->write_audio_data (metronom, (int16_t*)mp->osspace, num_bytes/(stereo-1 ? 4:2), pts);
diff --git a/src/libmpg123/layer3.c b/src/libmpg123/layer3.c
index 7f1d36b32..697415834 100644
--- a/src/libmpg123/layer3.c
+++ b/src/libmpg123/layer3.c
@@ -1596,12 +1596,17 @@ void do_layer3(metronom_t *metronom, mpgaudio_t *mp, uint32_t pts)
}
}
- if (!mp->is_output_initialized) {
- mp->ao_output->open (metronom, 16, fr->sample_rate,
+ if ((!mp->is_output_initialized) || (mp->sample_rate_device != fr->sample_rate)) {
+
+ if (mp->is_output_initialized)
+ mp->ao_output->close();
+
+ mp->ao_output->open (16, fr->sample_rate,
stereo-1 ? AO_MODE_STEREO: AO_MODE_MONO);
mp->is_output_initialized = 1;
-
- printf ("layer3\n");
+ mp->sample_rate_device = fr->sample_rate;
+
+ printf ("layer3\n");
}
mp->ao_output->write_audio_data (metronom, (int16_t*)mp->osspace, num_bytes/(stereo-1 ? 4:2), pts);
diff --git a/src/libmpg123/mpglib.h b/src/libmpg123/mpglib.h
index 3f1eea165..961851235 100644
--- a/src/libmpg123/mpglib.h
+++ b/src/libmpg123/mpglib.h
@@ -18,7 +18,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: mpglib.h,v 1.2 2001/04/27 10:42:38 f1rmb Exp $
+ * $Id: mpglib.h,v 1.3 2001/05/06 16:56:01 guenter Exp $
*/
#ifndef HAVE_MPGLIB_H
@@ -44,6 +44,7 @@ typedef struct mpstr {
int synth_bo;
int is_output_initialized;
+ int sample_rate_device;
ao_functions_t *ao_output;
unsigned char osspace[8192];
} mpgaudio_t;