From 0098d20af27d143081ff5cf198590029920fe67a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 6 Feb 2006 11:25:06 +0000 Subject: [PATCH] we only expose first two digital channels when card is echo3g and rate is more than 50000, it's a restriction noticed in C3g::Start() it should enable playback/record at 88/92kHz git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16246 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/drivers/audio/echo/multi.cpp | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/drivers/audio/echo/multi.cpp b/src/add-ons/kernel/drivers/audio/echo/multi.cpp index a4a94507d3..3e56d5235b 100644 --- a/src/add-ons/kernel/drivers/audio/echo/multi.cpp +++ b/src/add-ons/kernel/drivers/audio/echo/multi.cpp @@ -918,8 +918,17 @@ echo_open(const char *name, uint32 flags, void** cookie) #endif LOG(("creating play streams\n")); + + i = card->caps.wNumPipesOut - 2; + first_record_channel = card->caps.wNumPipesOut; +#ifdef ECHO3G_FAMILY + if (current_settings.sample_rate > 50000) { + i = card->caps.wFirstDigitalBusOut; + first_record_channel = card->caps.wFirstDigitalBusOut + 2; + } +#endif - for (i=card->caps.wNumPipesOut - 2; i >=0 ; i-=2) { + for (; i >=0 ; i-=2) { stream = echo_stream_new(card, ECHO_USE_PLAY, current_settings.buffer_frames, current_settings.buffer_count); if (!card->pstream) card->pstream = stream; @@ -928,11 +937,15 @@ echo_open(const char *name, uint32 flags, void** cookie) stream->first_channel = i; } - first_record_channel = card->caps.wNumPipesOut; - LOG(("creating record streams\n")); + i = card->caps.wNumPipesIn - 2; +#ifdef ECHO3G_FAMILY + if (current_settings.sample_rate > 50000) { + i = card->caps.wFirstDigitalBusIn; + } +#endif - for (i=card->caps.wNumPipesIn - 2; i >= 0; i-=2) { + for (; i >= 0; i-=2) { stream = echo_stream_new(card, ECHO_USE_RECORD, current_settings.buffer_frames, current_settings.buffer_count); if (!card->rstream) card->rstream = stream;