[Sound-open-firmware] [PATCH] [RFC] topology: scripts: update for 4-channel feature.
the script should be updated for 4-channel feature. if not, the volume of rear 2-channel cannot be adjusted.
Signed-off-by: Wu Zhigang zhigang.wu@linux.intel.com
--- Test with: APL-MRB with tdf8532 codec Linux topic/sof-v4.14: 33807ca8baa20bab2f98e9cc8a23c51a0822ad9f SOF master: e5dab2ada6ef98dbc6224863110cc86b5839ea01 Tool master: b4f3670870ba5a933c3ec58a51b59ff9ef8b3588
The Sanity test is for nocodec case. this change only affect the codec case. so I did not do the sanity test. --- topology/sof/pipe-volume-capture.m4 | 4 ++-- topology/sof/pipe-volume-playback.m4 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index b3d3206..3c03e68 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3), - Channel register and shift for Front Left/Right, - LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1))) + Channel register and shift for Front Left/Right and Rear Left/Right, + LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1)))
# # Components and Buffers diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4 index 4b12d2a..65d7894 100644 --- a/topology/sof/pipe-volume-playback.m4 +++ b/topology/sof/pipe-volume-playback.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3), - Channel register and shift for Front Left/Right, - LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1))) + Channel register and shift for Front Left/Right and Rear Left/Right, + LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1)))
# # Components and Buffers
On 5/22/18 4:48 AM, Wu Zhigang wrote:
the script should be updated for 4-channel feature. if not, the volume of rear 2-channel cannot be adjusted.
Signed-off-by: Wu Zhigang zhigang.wu@linux.intel.com
Test with: APL-MRB with tdf8532 codec Linux topic/sof-v4.14: 33807ca8baa20bab2f98e9cc8a23c51a0822ad9f SOF master: e5dab2ada6ef98dbc6224863110cc86b5839ea01 Tool master: b4f3670870ba5a933c3ec58a51b59ff9ef8b3588
The Sanity test is for nocodec case. this change only affect the codec case. so I did not do the sanity test.
topology/sof/pipe-volume-capture.m4 | 4 ++-- topology/sof/pipe-volume-playback.m4 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index b3d3206..3c03e68 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1)))
- Channel register and shift for Front Left/Right and Rear Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1)))
This doesn't scale. This should be a parameter defining which channels should be controlled. Hard-coding to two outputs or four outputs is not going to work for the next board if it has 6 channels...
# # Components and Buffers diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4 index 4b12d2a..65d7894 100644 --- a/topology/sof/pipe-volume-playback.m4 +++ b/topology/sof/pipe-volume-playback.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1)))
Channel register and shift for Front Left/Right and Rear Left/Right,
LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1)))
# # Components and Buffers
On 2018年05月22日 20:27, Pierre-Louis Bossart wrote:
On 5/22/18 4:48 AM, Wu Zhigang wrote:
the script should be updated for 4-channel feature. if not, the volume of rear 2-channel cannot be adjusted.
Signed-off-by: Wu Zhigang zhigang.wu@linux.intel.com
Test with: APL-MRB with tdf8532 codec Linux topic/sof-v4.14: 33807ca8baa20bab2f98e9cc8a23c51a0822ad9f SOF master: e5dab2ada6ef98dbc6224863110cc86b5839ea01 Tool master: b4f3670870ba5a933c3ec58a51b59ff9ef8b3588
The Sanity test is for nocodec case. this change only affect the codec case. so I did not do the sanity test.
topology/sof/pipe-volume-capture.m4 | 4 ++-- topology/sof/pipe-volume-playback.m4 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index b3d3206..3c03e68 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3), - Channel register and shift for Front Left/Right, - LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1))) + Channel register and shift for Front Left/Right and Rear Left/Right, + LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1)))
This doesn't scale. This should be a parameter defining which channels should be controlled. Hard-coding to two outputs or four outputs is not going to work for the next board if it has 6 channels...
Maybe we could create different "pipe-volume-capture.m4" and "pipe-volume-playback.m4" files for different channel number. Normally there are not many kinds of channel combination in the real case.
If this suggestion is not OK. then my question is:
What is the maximum channel number we want to support? What is the channel name for each we want to use? do we have plan for this?
for 5.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- RL chan4 -- RR chan5 -- FC chan6 -- LFE
for 7.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- Left chan4 -- Right chan5 -- RL chan6 -- RR chan7 -- FC chan8 -- LFE
If I am wrong, please point it out. Actually each channel should be remapped according to the speaker's location and type in the real case. But we may not need to take it into account right now.
thanks br ~zhigang
# # Components and Buffers diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4 index 4b12d2a..65d7894 100644 --- a/topology/sof/pipe-volume-playback.m4 +++ b/topology/sof/pipe-volume-playback.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3), - Channel register and shift for Front Left/Right, - LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1))) + Channel register and shift for Front Left/Right and Rear Left/Right, + LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1))) # # Components and Buffers
On Wed, 2018-05-23 at 11:01 +0800, zhigangw wrote:
On 2018年05月22日 20:27, Pierre-Louis Bossart wrote:
On 5/22/18 4:48 AM, Wu Zhigang wrote:
the script should be updated for 4-channel feature. if not, the volume of rear 2-channel cannot be adjusted.
Signed-off-by: Wu Zhigang zhigang.wu@linux.intel.com
Test with: APL-MRB with tdf8532 codec Linux topic/sof-v4.14: 33807ca8baa20bab2f98e9cc8a23c51a0822ad9f SOF master: e5dab2ada6ef98dbc6224863110cc86b5839ea01 Tool master: b4f3670870ba5a933c3ec58a51b59ff9ef8b3588
The Sanity test is for nocodec case. this change only affect the codec case. so I did not do the sanity test.
topology/sof/pipe-volume-capture.m4 | 4 ++-- topology/sof/pipe-volume-playback.m4 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index b3d3206..3c03e68 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1)))
- Channel register and shift for Front Left/Right and Rear
Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1)))
This doesn't scale. This should be a parameter defining which channels should be controlled. Hard-coding to two outputs or four outputs is not going to work for the next board if it has 6 channels...
Maybe we could create different "pipe-volume-capture.m4" and "pipe-volume-playback.m4" files for different channel number. Normally there are not many kinds of channel combination in the real case.
We dont need a separate m4 file. We should define the channels in the test-capture-ssp.m4 file that sets up the test topology parameters.
So to give you an example for the stereo case: I think it would be best to move this as an argument to PIPELINE_PCM_DAI_ADD:
PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-capture.m4, 2, 0, 2, TEST_PIPE_FORMAT, 48, 1000, 0, 0, 0, 1, TEST_DAI_TYPE, TEST_DAI_PORT, TEST_DAI_FORMAT, 2, LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1))))
then we can define out CHANNEL_LIST in the PIPELINE_PCM_DAI_ADD definition as: `define(`PIPELINE_CHANNELS_LIST', $16)'
and lastly in pipe-volume-capture.m4, we can replace the last line in C_CONTROLMIXER(.... PIPELINE_CHANNELS_LIST)
Does this make sense?
If this suggestion is not OK. then my question is:
What is the maximum channel number we want to support? What is the channel name for each we want to use? do we have plan for this?
please take a look at this page for the supported control channel mapping in ALSA topology: https://www.alsa-project.org/alsa-doc/alsa-lib/group__topology.html
for 5.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- RL chan4 -- RR chan5 -- FC chan6 -- LFE
for 7.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- Left chan4 -- Right chan5 -- RL chan6 -- RR chan7 -- FC chan8 -- LFE
If I am wrong, please point it out. Actually each channel should be remapped according to the speaker's location and type in the real case. But we may not need to take it into account right now.
thanks br ~zhigang
#
# Components and Buffers diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4 index 4b12d2a..65d7894 100644 --- a/topology/sof/pipe-volume-playback.m4 +++ b/topology/sof/pipe-volume-playback.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1)))
- Channel register and shift for Front Left/Right and Rear
Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1))) # # Components and Buffers
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
On 2018年05月23日 13:24, Ranjani Sridharan wrote:
On Wed, 2018-05-23 at 11:01 +0800, zhigangw wrote:
On 2018年05月22日 20:27, Pierre-Louis Bossart wrote:
On 5/22/18 4:48 AM, Wu Zhigang wrote:
the script should be updated for 4-channel feature. if not, the volume of rear 2-channel cannot be adjusted.
Signed-off-by: Wu Zhigang zhigang.wu@linux.intel.com
Test with: APL-MRB with tdf8532 codec Linux topic/sof-v4.14: 33807ca8baa20bab2f98e9cc8a23c51a0822ad9f SOF master: e5dab2ada6ef98dbc6224863110cc86b5839ea01 Tool master: b4f3670870ba5a933c3ec58a51b59ff9ef8b3588
The Sanity test is for nocodec case. this change only affect the codec case. so I did not do the sanity test.
topology/sof/pipe-volume-capture.m4 | 4 ++-- topology/sof/pipe-volume-playback.m4 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index b3d3206..3c03e68 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1)))
- Channel register and shift for Front Left/Right and Rear
Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1)))
This doesn't scale. This should be a parameter defining which channels should be controlled. Hard-coding to two outputs or four outputs is not going to work for the next board if it has 6 channels...
Maybe we could create different "pipe-volume-capture.m4" and "pipe-volume-playback.m4" files for different channel number. Normally there are not many kinds of channel combination in the real case.
We dont need a separate m4 file. We should define the channels in the test-capture-ssp.m4 file that sets up the test topology parameters.
So to give you an example for the stereo case: I think it would be best to move this as an argument to PIPELINE_PCM_DAI_ADD:
PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-capture.m4, 2, 0, 2, TEST_PIPE_FORMAT, 48, 1000, 0, 0, 0, 1, TEST_DAI_TYPE, TEST_DAI_PORT, TEST_DAI_FORMAT, 2, LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1))))
then we can define out CHANNEL_LIST in the PIPELINE_PCM_DAI_ADD definition as: `define(`PIPELINE_CHANNELS_LIST', $16)'
and lastly in pipe-volume-capture.m4, we can replace the last line in C_CONTROLMIXER(.... PIPELINE_CHANNELS_LIST)
Does this make sense?
It is clear to me. :)
If this suggestion is not OK. then my question is:
What is the maximum channel number we want to support? What is the channel name for each we want to use? do we have plan for this?
please take a look at this page for the supported control channel mapping in ALSA topology: https://www.alsa-project.org/alsa-doc/alsa-lib/group__topology.html
that is useful! thank you! br ~zhigang
for 5.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- RL chan4 -- RR chan5 -- FC chan6 -- LFE
for 7.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- Left chan4 -- Right chan5 -- RL chan6 -- RR chan7 -- FC chan8 -- LFE
If I am wrong, please point it out. Actually each channel should be remapped according to the speaker's location and type in the real case. But we may not need to take it into account right now.
thanks br ~zhigang
#
# Components and Buffers diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4 index 4b12d2a..65d7894 100644 --- a/topology/sof/pipe-volume-playback.m4 +++ b/topology/sof/pipe-volume-playback.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1)))
- Channel register and shift for Front Left/Right and Rear
Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1))) # # Components and Buffers
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
On 5/23/18 12:24 AM, Ranjani Sridharan wrote:
On Wed, 2018-05-23 at 11:01 +0800, zhigangw wrote:
On 2018年05月22日 20:27, Pierre-Louis Bossart wrote:
On 5/22/18 4:48 AM, Wu Zhigang wrote:
the script should be updated for 4-channel feature. if not, the volume of rear 2-channel cannot be adjusted.
Signed-off-by: Wu Zhigang zhigang.wu@linux.intel.com
Test with: APL-MRB with tdf8532 codec Linux topic/sof-v4.14: 33807ca8baa20bab2f98e9cc8a23c51a0822ad9f SOF master: e5dab2ada6ef98dbc6224863110cc86b5839ea01 Tool master: b4f3670870ba5a933c3ec58a51b59ff9ef8b3588
The Sanity test is for nocodec case. this change only affect the codec case. so I did not do the sanity test.
topology/sof/pipe-volume-capture.m4 | 4 ++-- topology/sof/pipe-volume-playback.m4 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index b3d3206..3c03e68 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1)))
- Channel register and shift for Front Left/Right and Rear
Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1)))
This doesn't scale. This should be a parameter defining which channels should be controlled. Hard-coding to two outputs or four outputs is not going to work for the next board if it has 6 channels...
Maybe we could create different "pipe-volume-capture.m4" and "pipe-volume-playback.m4" files for different channel number. Normally there are not many kinds of channel combination in the real case.
We dont need a separate m4 file. We should define the channels in the test-capture-ssp.m4 file that sets up the test topology parameters.
So to give you an example for the stereo case: I think it would be best to move this as an argument to PIPELINE_PCM_DAI_ADD:
PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-capture.m4, 2, 0, 2, TEST_PIPE_FORMAT, 48, 1000, 0, 0, 0, 1, TEST_DAI_TYPE, TEST_DAI_PORT, TEST_DAI_FORMAT, 2, LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1))))
then we can define out CHANNEL_LIST in the PIPELINE_PCM_DAI_ADD definition as: `define(`PIPELINE_CHANNELS_LIST', $16)'
and lastly in pipe-volume-capture.m4, we can replace the last line in C_CONTROLMIXER(.... PIPELINE_CHANNELS_LIST)
Does this make sense?
Should those Kcontrols be listed as part of the volume definitions instead? They don't really apply to the pipeline proper but rather to the volume component that's inserted in a pipeline.
If this suggestion is not OK. then my question is:
What is the maximum channel number we want to support? What is the channel name for each we want to use? do we have plan for this?
please take a look at this page for the supported control channel mapping in ALSA topology: https://www.alsa-project.org/alsa-doc/alsa-lib/group__topology.html
for 5.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- RL chan4 -- RR chan5 -- FC chan6 -- LFE
for 7.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- Left chan4 -- Right chan5 -- RL chan6 -- RR chan7 -- FC chan8 -- LFE
If I am wrong, please point it out. Actually each channel should be remapped according to the speaker's location and type in the real case. But we may not need to take it into account right now.
thanks br ~zhigang
#
# Components and Buffers diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4 index 4b12d2a..65d7894 100644 --- a/topology/sof/pipe-volume-playback.m4 +++ b/topology/sof/pipe-volume-playback.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1)))
- Channel register and shift for Front Left/Right and Rear
Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1))) # # Components and Buffers
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmware
On Wed, 2018-05-23 at 10:07 -0500, Pierre-Louis Bossart wrote:
On 5/23/18 12:24 AM, Ranjani Sridharan wrote:
On Wed, 2018-05-23 at 11:01 +0800, zhigangw wrote:
On 2018年05月22日 20:27, Pierre-Louis Bossart wrote:
On 5/22/18 4:48 AM, Wu Zhigang wrote:
the script should be updated for 4-channel feature. if not, the volume of rear 2-channel cannot be adjusted.
Signed-off-by: Wu Zhigang zhigang.wu@linux.intel.com
Test with: APL-MRB with tdf8532 codec Linux topic/sof-v4.14: 33807ca8baa20bab2f98e9cc8a23c51a0822ad9f SOF master: e5dab2ada6ef98dbc6224863110cc86b5839ea01 Tool master: b4f3670870ba5a933c3ec58a51b59ff9ef8b3588
The Sanity test is for nocodec case. this change only affect the codec case. so I did not do the sanity test.
topology/sof/pipe-volume-capture.m4 | 4 ++-- topology/sof/pipe-volume-playback.m4 | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/topology/sof/pipe-volume-capture.m4 b/topology/sof/pipe-volume-capture.m4 index b3d3206..3c03e68 100644 --- a/topology/sof/pipe-volume-capture.m4 +++ b/topology/sof/pipe-volume-capture.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Capture Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1)))
- Channel register and shift for Front Left/Right and Rear
Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1)))
This doesn't scale. This should be a parameter defining which channels should be controlled. Hard-coding to two outputs or four outputs is not going to work for the next board if it has 6 channels...
Maybe we could create different "pipe-volume-capture.m4" and "pipe-volume-playback.m4" files for different channel number. Normally there are not many kinds of channel combination in the real case.
We dont need a separate m4 file. We should define the channels in the test-capture-ssp.m4 file that sets up the test topology parameters.
So to give you an example for the stereo case: I think it would be best to move this as an argument to PIPELINE_PCM_DAI_ADD:
PIPELINE_PCM_DAI_ADD(sof/pipe-TEST_PIPE_NAME-capture.m4, 2, 0, 2, TEST_PIPE_FORMAT, 48, 1000, 0, 0, 0, 1, TEST_DAI_TYPE, TEST_DAI_PORT, TEST_DAI_FORMAT, 2, LIST(` ', KCONTROL_CHANNEL(FL, 1, 0), KCONTROL_CHANNEL(FR, 1, 1))))
then we can define out CHANNEL_LIST in the PIPELINE_PCM_DAI_ADD definition as: `define(`PIPELINE_CHANNELS_LIST', $16)'
and lastly in pipe-volume-capture.m4, we can replace the last line in C_CONTROLMIXER(.... PIPELINE_CHANNELS_LIST)
Does this make sense?
Should those Kcontrols be listed as part of the volume definitions instead? They don't really apply to the pipeline proper but rather to the volume component that's inserted in a pipeline.
Yes, thats right. It needs to be part of volume definition in pga.m4 and the channels for the kcontrols should be defined in the top level test m4 file.
If this suggestion is not OK. then my question is:
What is the maximum channel number we want to support? What is the channel name for each we want to use? do we have plan for this?
please take a look at this page for the supported control channel mapping in ALSA topology: https://www.alsa-project.org/alsa-doc/alsa-lib/group__topology.html
for 5.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- RL chan4 -- RR chan5 -- FC chan6 -- LFE
for 7.1 channel normally like this. chan1 -- FL chan2 -- FR chan3 -- Left chan4 -- Right chan5 -- RL chan6 -- RR chan7 -- FC chan8 -- LFE
If I am wrong, please point it out. Actually each channel should be remapped according to the speaker's location and type in the real case. But we may not need to take it into account right now.
thanks br ~zhigang
#
# Components and Buffers diff --git a/topology/sof/pipe-volume-playback.m4 b/topology/sof/pipe-volume-playback.m4 index 4b12d2a..65d7894 100644 --- a/topology/sof/pipe-volume-playback.m4 +++ b/topology/sof/pipe-volume-playback.m4 @@ -22,8 +22,8 @@ C_CONTROLMIXER(Master Playback Volume, PIPELINE_ID, CONTROLMIXER_MAX(, 32), false, CONTROLMIXER_TLV(TLV 32 steps from -90dB to +6dB for 3dB, vtlv_m90s3),
- Channel register and shift for Front Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1)))
- Channel register and shift for Front Left/Right and Rear
Left/Right,
- LIST(` ', KCONTROL_CHANNEL(FL, 1, 0),
KCONTROL_CHANNEL(FR, 1, 1), KCONTROL_CHANNEL(RL, 2, 0), KCONTROL_CHANNEL(RR, 2, 1))) # # Components and Buffers
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmw are
Sound-open-firmware mailing list Sound-open-firmware@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/sound-open-firmwar e
participants (4)
-
Pierre-Louis Bossart
-
Ranjani Sridharan
-
Wu Zhigang
-
zhigangw