summaryrefslogtreecommitdiff
path: root/src/libmpg123
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmpg123')
-rw-r--r--src/libmpg123/layer3.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/libmpg123/layer3.c b/src/libmpg123/layer3.c
index 58c7d018a..88318370f 100644
--- a/src/libmpg123/layer3.c
+++ b/src/libmpg123/layer3.c
@@ -1600,18 +1600,20 @@ void do_layer3(mpgaudio_t *mp)
}
}
- if ((!mp->is_output_initialized) || (mp->sample_rate_device != fr->sample_rate)) {
-
- if (mp->is_output_initialized)
- mp->ao_output->close(mp->ao_output);
+ if (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);
+
+ mp->ao_output->open (mp->ao_output, 16, fr->sample_rate,
+ stereo-1 ? AO_CAP_MODE_STEREO: AO_CAP_MODE_MONO);
+ mp->is_output_initialized = 1;
+ mp->sample_rate_device = fr->sample_rate;
+ }
- mp->ao_output->open (mp->ao_output, 16, fr->sample_rate,
- stereo-1 ? AO_CAP_MODE_STEREO: AO_CAP_MODE_MONO);
- mp->is_output_initialized = 1;
- mp->sample_rate_device = fr->sample_rate;
+ mp->ao_output->write_audio_data (mp->ao_output, (int16_t*)mp->osspace, num_bytes/(stereo-1 ? 4:2),
+ mp->pts);
}
-
- mp->ao_output->write_audio_data (mp->ao_output, (int16_t*)mp->osspace, num_bytes/(stereo-1 ? 4:2),
- mp->pts);
mp->pts = 0;
}