From 69316791006c78bf088747061a39f651489ee500 Mon Sep 17 00:00:00 2001 From: beveloper Date: Fri, 20 Feb 2004 01:09:13 +0000 Subject: [PATCH] added side left and side right channels to default output mix for better 8 channel playback git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6658 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../media/media-add-ons/mixer/MixerOutput.cpp | 46 ++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/src/add-ons/media/media-add-ons/mixer/MixerOutput.cpp b/src/add-ons/media/media-add-ons/mixer/MixerOutput.cpp index 119ee1c2d0..3ca0b34e25 100644 --- a/src/add-ons/media/media-add-ons/mixer/MixerOutput.cpp +++ b/src/add-ons/media/media-add-ons/mixer/MixerOutput.cpp @@ -120,7 +120,7 @@ MixerOutput::AssignDefaultSources() // we have only one phycial output channel, and use it as a mix of // left, right, rear-left, rear-right, center and sub TRACE("AssignDefaultSources: 1 channel setup\n"); - fOutputChannelInfo[0].source_count = 7; + fOutputChannelInfo[0].source_count = 9; fOutputChannelInfo[0].source_gain[0] = 1.0; fOutputChannelInfo[0].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_LEFT); fOutputChannelInfo[0].source_gain[1] = 1.0; @@ -135,11 +135,15 @@ MixerOutput::AssignDefaultSources() fOutputChannelInfo[0].source_type[5] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[0].source_gain[6] = 1.0; fOutputChannelInfo[0].source_type[6] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[0].source_gain[7] = 0.7; + fOutputChannelInfo[0].source_type[7] = ChannelMaskToChannelType(B_CHANNEL_SIDE_LEFT); + fOutputChannelInfo[0].source_gain[8] = 0.7; + fOutputChannelInfo[0].source_type[8] = ChannelMaskToChannelType(B_CHANNEL_SIDE_RIGHT); } else if (count == 2 && mask == (B_CHANNEL_LEFT | B_CHANNEL_RIGHT)) { // we have have two phycial output channels TRACE("AssignDefaultSources: 2 channel setup\n"); // left channel: - fOutputChannelInfo[0].source_count = 5; + fOutputChannelInfo[0].source_count = 6; fOutputChannelInfo[0].source_gain[0] = 1.0; fOutputChannelInfo[0].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_LEFT); fOutputChannelInfo[0].source_gain[1] = 0.8; @@ -150,8 +154,10 @@ MixerOutput::AssignDefaultSources() fOutputChannelInfo[0].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[0].source_gain[4] = 1.0; fOutputChannelInfo[0].source_type[4] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[0].source_gain[5] = 0.7; + fOutputChannelInfo[0].source_type[5] = ChannelMaskToChannelType(B_CHANNEL_SIDE_LEFT); // right channel: - fOutputChannelInfo[1].source_count = 5; + fOutputChannelInfo[1].source_count = 6; fOutputChannelInfo[1].source_gain[0] = 1.0; fOutputChannelInfo[1].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_RIGHT); fOutputChannelInfo[1].source_gain[1] = 0.8; @@ -162,10 +168,12 @@ MixerOutput::AssignDefaultSources() fOutputChannelInfo[1].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[1].source_gain[4] = 1.0; fOutputChannelInfo[1].source_type[4] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[1].source_gain[5] = 0.7; + fOutputChannelInfo[1].source_type[5] = ChannelMaskToChannelType(B_CHANNEL_SIDE_RIGHT); } else if (count == 4 && mask == (B_CHANNEL_LEFT | B_CHANNEL_RIGHT | B_CHANNEL_REARLEFT | B_CHANNEL_REARRIGHT)) { TRACE("AssignDefaultSources: 4 channel setup\n"); // left channel: - fOutputChannelInfo[0].source_count = 4; + fOutputChannelInfo[0].source_count = 5; fOutputChannelInfo[0].source_gain[0] = 1.0; fOutputChannelInfo[0].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_LEFT); fOutputChannelInfo[0].source_gain[1] = 0.7; @@ -174,8 +182,10 @@ MixerOutput::AssignDefaultSources() fOutputChannelInfo[0].source_type[2] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[0].source_gain[3] = 1.0; fOutputChannelInfo[0].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[0].source_gain[4] = 0.6; + fOutputChannelInfo[0].source_type[4] = ChannelMaskToChannelType(B_CHANNEL_SIDE_LEFT); // right channel: - fOutputChannelInfo[1].source_count = 4; + fOutputChannelInfo[1].source_count = 5; fOutputChannelInfo[1].source_gain[0] = 1.0; fOutputChannelInfo[1].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_RIGHT); fOutputChannelInfo[1].source_gain[1] = 0.7; @@ -184,56 +194,70 @@ MixerOutput::AssignDefaultSources() fOutputChannelInfo[1].source_type[2] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[1].source_gain[3] = 1.0; fOutputChannelInfo[1].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[1].source_gain[4] = 0.6; + fOutputChannelInfo[1].source_type[4] = ChannelMaskToChannelType(B_CHANNEL_SIDE_RIGHT); // rear-left channel: - fOutputChannelInfo[2].source_count = 3; + fOutputChannelInfo[2].source_count = 4; fOutputChannelInfo[2].source_gain[0] = 1.0; fOutputChannelInfo[2].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_REARLEFT); fOutputChannelInfo[2].source_gain[1] = 0.6; fOutputChannelInfo[2].source_type[1] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[2].source_gain[2] = 0.9; fOutputChannelInfo[2].source_type[2] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[2].source_gain[3] = 0.6; + fOutputChannelInfo[2].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_SIDE_LEFT); // rear-right channel: - fOutputChannelInfo[3].source_count = 3; + fOutputChannelInfo[3].source_count = 4; fOutputChannelInfo[3].source_gain[0] = 1.0; fOutputChannelInfo[3].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_REARRIGHT); fOutputChannelInfo[3].source_gain[1] = 0.6; fOutputChannelInfo[3].source_type[1] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[3].source_gain[2] = 0.9; fOutputChannelInfo[3].source_type[2] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[3].source_gain[3] = 0.6; + fOutputChannelInfo[3].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_SIDE_RIGHT); } else if (count == 5 && mask == (B_CHANNEL_LEFT | B_CHANNEL_RIGHT | B_CHANNEL_REARLEFT | B_CHANNEL_REARRIGHT | B_CHANNEL_CENTER)) { TRACE("AssignDefaultSources: 5 channel setup\n"); // left channel: - fOutputChannelInfo[0].source_count = 3; + fOutputChannelInfo[0].source_count = 4; fOutputChannelInfo[0].source_gain[0] = 1.0; fOutputChannelInfo[0].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_LEFT); fOutputChannelInfo[0].source_gain[1] = 0.6; fOutputChannelInfo[0].source_type[1] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[0].source_gain[2] = 1.0; fOutputChannelInfo[0].source_type[2] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[0].source_gain[3] = 0.6; + fOutputChannelInfo[0].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_SIDE_LEFT); // right channel: - fOutputChannelInfo[1].source_count = 3; + fOutputChannelInfo[1].source_count = 4; fOutputChannelInfo[1].source_gain[0] = 1.0; fOutputChannelInfo[1].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_RIGHT); fOutputChannelInfo[1].source_gain[1] = 0.6; fOutputChannelInfo[1].source_type[1] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[1].source_gain[2] = 1.0; fOutputChannelInfo[1].source_type[2] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[1].source_gain[3] = 0.6; + fOutputChannelInfo[1].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_SIDE_RIGHT); // rear-left channel: - fOutputChannelInfo[2].source_count = 3; + fOutputChannelInfo[2].source_count = 4; fOutputChannelInfo[2].source_gain[0] = 1.0; fOutputChannelInfo[2].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_REARLEFT); fOutputChannelInfo[2].source_gain[1] = 0.6; fOutputChannelInfo[2].source_type[1] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[2].source_gain[2] = 0.9; fOutputChannelInfo[2].source_type[2] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[2].source_gain[3] = 0.6; + fOutputChannelInfo[2].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_SIDE_LEFT); // rear-right channel: - fOutputChannelInfo[3].source_count = 3; + fOutputChannelInfo[3].source_count = 4; fOutputChannelInfo[3].source_gain[0] = 1.0; fOutputChannelInfo[3].source_type[0] = ChannelMaskToChannelType(B_CHANNEL_REARRIGHT); fOutputChannelInfo[3].source_gain[1] = 0.6; fOutputChannelInfo[3].source_type[1] = ChannelMaskToChannelType(B_CHANNEL_SUB); fOutputChannelInfo[3].source_gain[2] = 0.9; fOutputChannelInfo[3].source_type[2] = ChannelMaskToChannelType(B_CHANNEL_MONO); + fOutputChannelInfo[3].source_gain[3] = 0.6; + fOutputChannelInfo[3].source_type[3] = ChannelMaskToChannelType(B_CHANNEL_SIDE_RIGHT); // center channel: fOutputChannelInfo[4].source_count = 3; fOutputChannelInfo[4].source_gain[0] = 1.0;