From cb40769c939b7c6f0836d7a36149fdfde7febfc9 Mon Sep 17 00:00:00 2001 From: Adrian Knoth Date: Fri, 8 Apr 2011 19:58:37 +0200 Subject: [PATCH] hdspmixer: Handle preset files used in 1.0.24 and 1.0.24.1 As an addition to the previous commit, let's also cover the 3rd case when a preset file was written with hdspmixer v1.0.24 or v1.0.24.1. In this case, no magic header will be present, but the file size would differ from the pre 1.0.24 format. Signed-off-by: Adrian Knoth Signed-off-by: Takashi Iwai --- hdspmixer/src/HDSPMixerWindow.cxx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/hdspmixer/src/HDSPMixerWindow.cxx b/hdspmixer/src/HDSPMixerWindow.cxx index fb41721..74b5630 100644 --- a/hdspmixer/src/HDSPMixerWindow.cxx +++ b/hdspmixer/src/HDSPMixerWindow.cxx @@ -499,7 +499,24 @@ void HDSPMixerWindow::load() pan_array_size = HDSP_MAX_DEST; channels_per_card = HDSP_MAX_CHANNELS; } else { - /* old format, rewind to the start and simply read all data */ + /* There are two different kinds of old format: pre 1.0.24 and + * the one used for 1.0.24/1.0.24.1. We can distinguish between + * these two by checking the file size, becase HDSP_MAX_CHANNELS + * was bumped right before the 1.0.24 release. + */ + fseek (file, 0, SEEK_END); + long filesize = ftell (file); + + if (1163808 == filesize) { + /* file written by hdspmixer v1.0.24 or v1.0.24.1 with + * HDSP_MAX_CHANNELS set to 64, but pan_array_size still at + * 14, so setting channels_per_card should get the correct + * mapping. + */ + channels_per_card = 64; /* HDSP_MAX_CHANNELS */ + } + + /* rewind to the start and simply read all data */ rewind(file); } -- 2.47.1