mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.5 KiB
66 lines
1.5 KiB
// SPDX-License-Identifier: GPL-2.0 |
|
// Copyright (c) 2011-2017, The Linux Foundation. All rights reserved. |
|
// Copyright (c) 2018, Linaro Limited |
|
|
|
#include "q6dsp-common.h" |
|
#include <linux/kernel.h> |
|
#include <linux/module.h> |
|
#include <linux/string.h> |
|
#include <linux/errno.h> |
|
|
|
int q6dsp_map_channels(u8 ch_map[PCM_MAX_NUM_CHANNEL], int ch) |
|
{ |
|
memset(ch_map, 0, PCM_MAX_NUM_CHANNEL); |
|
|
|
switch (ch) { |
|
case 1: |
|
ch_map[0] = PCM_CHANNEL_FC; |
|
break; |
|
case 2: |
|
ch_map[0] = PCM_CHANNEL_FL; |
|
ch_map[1] = PCM_CHANNEL_FR; |
|
break; |
|
case 3: |
|
ch_map[0] = PCM_CHANNEL_FL; |
|
ch_map[1] = PCM_CHANNEL_FR; |
|
ch_map[2] = PCM_CHANNEL_FC; |
|
break; |
|
case 4: |
|
ch_map[0] = PCM_CHANNEL_FL; |
|
ch_map[1] = PCM_CHANNEL_FR; |
|
ch_map[2] = PCM_CHANNEL_LS; |
|
ch_map[3] = PCM_CHANNEL_RS; |
|
break; |
|
case 5: |
|
ch_map[0] = PCM_CHANNEL_FL; |
|
ch_map[1] = PCM_CHANNEL_FR; |
|
ch_map[2] = PCM_CHANNEL_FC; |
|
ch_map[3] = PCM_CHANNEL_LS; |
|
ch_map[4] = PCM_CHANNEL_RS; |
|
break; |
|
case 6: |
|
ch_map[0] = PCM_CHANNEL_FL; |
|
ch_map[1] = PCM_CHANNEL_FR; |
|
ch_map[2] = PCM_CHANNEL_LFE; |
|
ch_map[3] = PCM_CHANNEL_FC; |
|
ch_map[4] = PCM_CHANNEL_LS; |
|
ch_map[5] = PCM_CHANNEL_RS; |
|
break; |
|
case 8: |
|
ch_map[0] = PCM_CHANNEL_FL; |
|
ch_map[1] = PCM_CHANNEL_FR; |
|
ch_map[2] = PCM_CHANNEL_LFE; |
|
ch_map[3] = PCM_CHANNEL_FC; |
|
ch_map[4] = PCM_CHANNEL_LS; |
|
ch_map[5] = PCM_CHANNEL_RS; |
|
ch_map[6] = PCM_CHANNEL_LB; |
|
ch_map[7] = PCM_CHANNEL_RB; |
|
break; |
|
default: |
|
return -EINVAL; |
|
} |
|
|
|
return 0; |
|
} |
|
EXPORT_SYMBOL_GPL(q6dsp_map_channels); |
|
MODULE_LICENSE("GPL v2");
|
|
|