| /* |
| * Copyright (C) 2014 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef __EXYNOS_AUDIOPROXY_PCM_H__ |
| #define __EXYNOS_AUDIOPROXY_PCM_H__ |
| |
| #include <tinyalsa/asoundlib.h> |
| #include <tinycompress/tinycompress.h> |
| #include <compress_params.h> |
| |
| |
| /* Actual HW DMA mapped Sound Card & Device Definition */ |
| #define SOUND_CARD0 0 |
| |
| // Sound Devices mapped for A-Box RDMA |
| #define SOUND_DEVICE_ABOX_RDMA0 0 // A-Box RDMA0 |
| #define SOUND_DEVICE_ABOX_RDMA1 1 // A-Box RDMA1 |
| #define SOUND_DEVICE_ABOX_RDMA2 2 // A-Box RDMA2 |
| #define SOUND_DEVICE_ABOX_RDMA3 3 // A-Box RDMA3 |
| #define SOUND_DEVICE_ABOX_RDMA4 4 // A-Box RDMA4 |
| #define SOUND_DEVICE_ABOX_RDMA5 5 // A-Box RDMA5 |
| #define SOUND_DEVICE_ABOX_RDMA6 6 // A-Box RDMA6 |
| #define SOUND_DEVICE_ABOX_RDMA7 7 // A-Box RDMA7 |
| #define SOUND_DEVICE_ABOX_RDMA8 8 // A-Box RDMA8 |
| #define SOUND_DEVICE_ABOX_RDMA9 9 // A-Box RDMA9 |
| #define SOUND_DEVICE_ABOX_RDMA10 10 // A-Box RDMA10 |
| #define SOUND_DEVICE_ABOX_RDMA11 11 // A-Box RDMA11 |
| |
| // Sound Devices mapped for A-Box WDMA |
| #define SOUND_DEVICE_ABOX_WDMA0 12 // A-Box WDMA0 |
| #define SOUND_DEVICE_ABOX_WDMA1 13 // A-Box WDMA1 |
| #define SOUND_DEVICE_ABOX_WDMA2 14 // A-Box WDMA2 |
| #define SOUND_DEVICE_ABOX_WDMA3 15 // A-Box WDMA3 |
| #define SOUND_DEVICE_ABOX_WDMA4 16 // A-Box WDMA4 |
| #define SOUND_DEVICE_ABOX_WDMA5 17 // A-Box WDMA5 |
| #define SOUND_DEVICE_ABOX_WDMA6 18 // A-Box WDMA6 |
| #define SOUND_DEVICE_ABOX_WDMA7 19 // A-Box WDMA7 |
| |
| // Sound Devices mapped for other DMA |
| // Devices 20 & 21 are used by VTS driver |
| #define SOUND_DEVICE_AUX 22 // Aux Digital Device for DP Audio |
| |
| /* Vitural PCM DAI Sound Card & Device Definition */ |
| #define SOUND_CARD1 1 |
| |
| // Sound Devices using Virtual PCM DAIs with sound-card1 |
| // Playback devices |
| #define SOUND_DEVICE_VIRT_PRIMARY_PLAYBACK 0 // primary playback virtual device |
| // Capture devices |
| #define SOUND_DEVICE_VIRT_PRIMARY_CAPTURE 20 // primary capture virtual device |
| #define SOUND_DEVICE_VIRT_FM_RECORD 21 // WDMA for FM Radio Recording |
| |
| /* Virtual DMA mapped Sound Card & Device Definition */ |
| #define SOUND_CARD2 2 |
| |
| // Device 0 ~ 12 : used for A-Box DMA Dump |
| // Device 13 ~ 15 : used for Compress Offload Dump |
| // Device 16 ~ 18 : used for OEM Analysis Dump |
| // From Device 19 |
| #define SOUND_DEVICE_CALL_RECORD 21 // WDMA for Call Recording |
| #define SOUND_DEVICE_TELEPHONYRX_RECORD 34 // TelephonyRx Recording virtual pcm |
| |
| #define SOUND_DEVICE_UNDEFINE 99 |
| |
| /* Default values for Media PCM Configuration */ |
| #define DEFAULT_CAPTURE_CHANNELS 1 // Mono |
| #define DEFAULT_MEDIA_CHANNELS 2 // Stereo |
| #define DEFAULT_MEDIA_SAMPLING_RATE 48000 // 48KHz |
| #define DEFAULT_MEDIA_FORMAT PCM_FORMAT_S16_LE // 16bit PCM |
| #define DEFAULT_MEDIA_24_ZEROPAD_FORMAT PCM_FORMAT_S24_LE // 24bit PCM |
| #define DEFAULT_MEDIA_32_FORMAT PCM_FORMAT_S32_LE // 32bit PCM |
| |
| // Definition for MMAP Stream |
| #define MMAP_PERIOD_SIZE (DEFAULT_MEDIA_SAMPLING_RATE/1000) |
| #define MMAP_PERIOD_COUNT_MIN 32 |
| #define MMAP_PERIOD_COUNT_MAX 512 |
| #define MMAP_PERIOD_COUNT_DEFAULT (MMAP_PERIOD_COUNT_MAX) |
| |
| // Channel count definitions |
| #define MEDIA_1_CHANNEL 1 |
| /* 4Channels is required for SPK AMP/Quad Mic TDM */ |
| #define MEDIA_4_CHANNELS 4 |
| /* 8Channels is required for Direct output stream */ |
| #define MEDIA_8_CHANNELS 8 |
| |
| /* Default values for Voice PCM Configuration */ |
| #define SAMPLING_RATE_NB 8000 // 8KHz(Narrow Band) |
| #define SAMPLING_RATE_WB 16000 // 16KHz(Wide Band) |
| #define SAMPLING_RATE_SWB 32000 // 32KHz(Wide Band) |
| #define SAMPLING_RATE_FB 48000 // 48KHz(Full Band) |
| |
| #define DEFAULT_VOICE_CHANNELS 2 // Stereo |
| #define DEFAULT_VOICE_SAMPLING_RATE SAMPLING_RATE_FB |
| #define DEFAULT_VOICE_FORMAT PCM_FORMAT_S16_LE // 16bit PCM |
| |
| /* Default values for CP Voice Recording PCM Configuration */ |
| #define DEFAULT_VOICE_REC_CHANNELS 2 // Stereo |
| #define DEFAULT_VOICE_REC_SAMPLINGRATE SAMPLING_RATE_SWB // 32KHz |
| #define DEFAULT_VOICE_REC_PERIODSIZE 2048 // Sync with A-Box Firmware |
| #define DEFAULT_VOICE_REC_PERIODCOUNT 2 |
| #define DEFAULT_VOICE_REC_FORMAT PCM_FORMAT_S16_LE // 16bit PCM |
| |
| /* Default values for FM Recording PCM Configuration */ |
| #define DEFAULT_FM_REC_CHANNELS 2 // Stereo |
| #define DEFAULT_FM_REC_SAMPLINGRATE 48000 // 48KHz |
| #define DEFAULT_FM_REC_PERIODSIZE 480 // Sync with WDMA7 config |
| #define DEFAULT_FM_REC_PERIODCOUNT 4 |
| #define DEFAULT_FM_REC_FORMAT PCM_FORMAT_S16_LE // 16bit PCM |
| |
| #define UHQA_MEDIA_FORMAT PCM_FORMAT_S24_LE // 24bit PCM |
| #define UHQA_MEDIA_SAMPLING_RATE 192000 |
| |
| #define SUHQA_MEDIA_FORMAT PCM_FORMAT_S32_LE // 32bit PCM |
| #define SUHQA_MEDIA_SAMPLING_RATE 384000 |
| |
| /* Default values for USB Playback or Capture PCM Configuration */ |
| #define DEFAULT_MEDIA_BITWIDTH 24 // 24bit PCM |
| #define ABOX_UNSUPPORTED_CHANNELS 6 |
| #define ABOX_SUPPORTED_MAX_CHANNELS 8 |
| //----------------------------------------------------------------------------------------------// |
| // For Playback (Speaker) Path |
| |
| /* PCM Configurations */ |
| // PCM Configurations for Primary Playback Stream |
| #define PRIMARY_PLAYBACK_CARD SOUND_CARD0 |
| #define PRIMARY_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA0 |
| |
| #define PRIMARY_PLAYBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define PRIMARY_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define PRIMARY_PLAYBACK_PERIOD_SIZE 960 |
| #define PRIMARY_PLAYBACK_PERIOD_COUNT 4 |
| #define PRIMARY_PLAYBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define PRIMARY_PLAYBACK_START PRIMARY_PLAYBACK_PERIOD_SIZE |
| #define PRIMARY_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_primary_playback = { |
| .channels = PRIMARY_PLAYBACK_CHANNELS, |
| .rate = PRIMARY_PLAYBACK_SAMPLING_RATE, |
| .period_size = PRIMARY_PLAYBACK_PERIOD_SIZE, |
| .period_count = PRIMARY_PLAYBACK_PERIOD_COUNT, |
| .format = PRIMARY_PLAYBACK_FORMAT, |
| .start_threshold = PRIMARY_PLAYBACK_START, |
| .stop_threshold = PRIMARY_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for Virtual Primary playback Stream |
| #define VIRTUAL_PRIMARY_PLAYBACK_CARD SOUND_CARD1 |
| #define VIRTUAL_PRIMARY_PLAYBACK_DEVICE SOUND_DEVICE_VIRT_PRIMARY_PLAYBACK |
| |
| // PCM Configurations for Fast Playback Stream |
| #define FAST_PLAYBACK_CARD SOUND_CARD0 |
| #define FAST_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA2 |
| |
| #define FAST_PLAYBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define FAST_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define FAST_PLAYBACK_PERIOD_SIZE 192 |
| #define FAST_PLAYBACK_PERIOD_COUNT 2 |
| #define FAST_PLAYBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define FAST_PLAYBACK_START (FAST_PLAYBACK_PERIOD_SIZE * FAST_PLAYBACK_PERIOD_COUNT) |
| #define FAST_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_fast_playback = { |
| .channels = FAST_PLAYBACK_CHANNELS, |
| .rate = FAST_PLAYBACK_SAMPLING_RATE, |
| .period_size = FAST_PLAYBACK_PERIOD_SIZE, |
| .period_count = FAST_PLAYBACK_PERIOD_COUNT, |
| .format = FAST_PLAYBACK_FORMAT, |
| .start_threshold = FAST_PLAYBACK_START, |
| .stop_threshold = FAST_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for Low Latency Playback Stream |
| #define LOW_PLAYBACK_CARD SOUND_CARD0 |
| #define LOW_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA2 |
| |
| #define LOW_PLAYBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define LOW_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define LOW_PLAYBACK_PERIOD_SIZE 96 |
| #define LOW_PLAYBACK_PERIOD_COUNT 4 |
| #define LOW_PLAYBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define LOW_PLAYBACK_START LOW_PLAYBACK_PERIOD_SIZE |
| #define LOW_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_low_playback = { |
| .channels = LOW_PLAYBACK_CHANNELS, |
| .rate = LOW_PLAYBACK_SAMPLING_RATE, |
| .period_size = LOW_PLAYBACK_PERIOD_SIZE, |
| .period_count = LOW_PLAYBACK_PERIOD_COUNT, |
| .format = LOW_PLAYBACK_FORMAT, |
| .start_threshold = LOW_PLAYBACK_START, |
| .stop_threshold = LOW_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for MMAP Playback Stream |
| #define MMAP_PLAYBACK_CARD SOUND_CARD0 |
| #define MMAP_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA3 |
| |
| #define MMAP_PLAYBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define MMAP_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define MMAP_PLAYBACK_PERIOD_SIZE MMAP_PERIOD_SIZE |
| #define MMAP_PLAYBACK_PERIOD_COUNT MMAP_PERIOD_COUNT_DEFAULT |
| #define MMAP_PLAYBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define MMAP_PLAYBACK_START (MMAP_PLAYBACK_PERIOD_SIZE * 8) |
| #define MMAP_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_mmap_playback = { |
| .channels = MMAP_PLAYBACK_CHANNELS, |
| .rate = MMAP_PLAYBACK_SAMPLING_RATE, |
| .period_size = MMAP_PLAYBACK_PERIOD_SIZE, |
| .period_count = MMAP_PLAYBACK_PERIOD_COUNT, |
| .format = MMAP_PLAYBACK_FORMAT, |
| .start_threshold = MMAP_PLAYBACK_START, |
| .stop_threshold = MMAP_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for DeepBuffer Playback Stream |
| #define DEEP_PLAYBACK_CARD SOUND_CARD0 |
| #define DEEP_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA1 |
| |
| #define DEEP_PLAYBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define DEEP_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define DEEP_PLAYBACK_PERIOD_SIZE 960 |
| #define DEEP_PLAYBACK_PERIOD_COUNT 4 |
| #define DEEP_PLAYBACK_FORMAT DEFAULT_MEDIA_24_ZEROPAD_FORMAT |
| #define DEEP_PLAYBACK_START DEEP_PLAYBACK_PERIOD_SIZE |
| #define DEEP_PLAYBACK_STOP (DEEP_PLAYBACK_PERIOD_SIZE * DEEP_PLAYBACK_PERIOD_COUNT) |
| |
| struct pcm_config pcm_config_deep_playback = { |
| .channels = DEEP_PLAYBACK_CHANNELS, |
| .rate = DEEP_PLAYBACK_SAMPLING_RATE, |
| .period_size = DEEP_PLAYBACK_PERIOD_SIZE, |
| .period_count = DEEP_PLAYBACK_PERIOD_COUNT, |
| .format = DEEP_PLAYBACK_FORMAT, |
| .start_threshold = DEEP_PLAYBACK_START, |
| .stop_threshold = DEEP_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for Deep UHQA Playback Stream |
| #define DEEP_PLAYBACK_UHQA_FORMAT UHQA_MEDIA_FORMAT |
| #define DEEP_PLAYBACK_UHQA_SAMPLING_RATE UHQA_MEDIA_SAMPLING_RATE |
| |
| #define DEEP_PLAYBACK_SUHQA_FORMAT SUHQA_MEDIA_FORMAT |
| #define DEEP_PLAYBACK_SUHQA_SAMPLING_RATE SUHQA_MEDIA_SAMPLING_RATE |
| |
| struct pcm_config pcm_config_deep_playback_wide_res = { |
| .channels = DEEP_PLAYBACK_CHANNELS, |
| .rate = DEEP_PLAYBACK_SAMPLING_RATE, |
| .period_size = DEEP_PLAYBACK_PERIOD_SIZE, |
| .period_count = DEEP_PLAYBACK_PERIOD_COUNT, |
| .format = DEEP_PLAYBACK_UHQA_FORMAT, |
| }; |
| |
| struct pcm_config pcm_config_deep_playback_uhqa = { |
| .channels = DEEP_PLAYBACK_CHANNELS, |
| .rate = DEEP_PLAYBACK_UHQA_SAMPLING_RATE, |
| .period_size = DEEP_PLAYBACK_PERIOD_SIZE * 4, |
| .period_count = DEEP_PLAYBACK_PERIOD_COUNT, |
| .format = DEEP_PLAYBACK_UHQA_FORMAT, |
| }; |
| |
| struct pcm_config pcm_config_deep_playback_suhqa = { |
| .channels = DEEP_PLAYBACK_CHANNELS, |
| .rate = DEEP_PLAYBACK_SUHQA_SAMPLING_RATE, |
| .period_size = DEEP_PLAYBACK_PERIOD_SIZE * 8, |
| .period_count = DEEP_PLAYBACK_PERIOD_COUNT, |
| .format = DEEP_PLAYBACK_SUHQA_FORMAT, |
| }; |
| |
| // PCM Configurations for Voice RX Playback Stream |
| #define VRX_PLAYBACK_CARD SOUND_CARD0 |
| #define VRX_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA4 |
| |
| #define VRX_PLAYBACK_CHANNELS DEFAULT_VOICE_CHANNELS |
| #define VRX_PLAYBACK_SAMPLING_RATE DEFAULT_VOICE_SAMPLING_RATE |
| #define VRX_PLAYBACK_PERIOD_SIZE 480 |
| #define VRX_PLAYBACK_PERIOD_COUNT 4 |
| #define VRX_PLAYBACK_FORMAT DEFAULT_VOICE_FORMAT |
| #define VRX_PLAYBACK_START VRX_PLAYBACK_PERIOD_SIZE |
| #define VRX_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_voicerx_playback = { |
| .channels = VRX_PLAYBACK_CHANNELS, |
| .rate = VRX_PLAYBACK_SAMPLING_RATE, |
| .period_size = VRX_PLAYBACK_PERIOD_SIZE, |
| .period_count = VRX_PLAYBACK_PERIOD_COUNT, |
| .format = VRX_PLAYBACK_FORMAT, |
| .start_threshold = VRX_PLAYBACK_START, |
| .stop_threshold = VRX_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for Compress Offload Playback Stream |
| #define OFFLOAD_PLAYBACK_CARD SOUND_CARD0 |
| #define OFFLOAD_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA5 |
| |
| /* |
| * These values are based on HW Decoder: Max Buffer Size = FRAGMENT_SIZE * NUM_FRAGMENTS |
| * 0 means that we will use the predefined value by device driver |
| */ |
| // Offload Buffer Size is set to Maximum possible buffer size, |
| // as offload Pause issue after Drain notification is resolved from kernel side |
| #define OFFLOAD_PLAYBACK_BUFFER_SIZE (1024 * 64) // fragment_size is fixed 64KBytes = 64 * 1024 |
| #define OFFLOAD_PLAYBACK_BUFFER_COUNT 5 // fragment is fixed 5 |
| |
| #define OFFLOAD_OFFLOAD_FRAGMENT_SIZE OFFLOAD_PLAYBACK_BUFFER_SIZE |
| #define OFFLOAD_OFFLOAD_NUM_FRAGMENTS OFFLOAD_PLAYBACK_BUFFER_COUNT |
| |
| struct compr_config compr_config_offload_playback = { |
| .fragment_size = OFFLOAD_OFFLOAD_FRAGMENT_SIZE, |
| .fragments = OFFLOAD_OFFLOAD_NUM_FRAGMENTS, |
| .codec = NULL, |
| }; |
| |
| // Internal loopback related PCM node configurations |
| // PCM Configurations for BT-SCO Playback Stream |
| #define BTSCO_ERAP_CARD SOUND_CARD0 |
| #define BTSCO_PLAYBACK_ERAP_DEVICE SOUND_DEVICE_ABOX_RDMA8 |
| #define BTSCO_CAPTURE_ERAP_DEVICE SOUND_DEVICE_ABOX_RDMA6 |
| |
| #define BTSCO_ERAP_CHANNELS DEFAULT_VOICE_CHANNELS |
| #define BTSCO_ERAP_SAMPLING_RATE SAMPLING_RATE_FB |
| #define BTSCO_ERAP_PERIOD_SIZE 80 |
| #define BTSCO_ERAP_PERIOD_COUNT 2 |
| #define BTSCO_ERAP_FORMAT DEFAULT_MEDIA_FORMAT |
| #define BTSCO_ERAP_START BTSCO_ERAP_PERIOD_SIZE |
| #define BTSCO_ERAP_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_btsco = { |
| .channels = BTSCO_ERAP_CHANNELS, |
| .rate = BTSCO_ERAP_SAMPLING_RATE, |
| .period_size = BTSCO_ERAP_PERIOD_SIZE, |
| .period_count = BTSCO_ERAP_PERIOD_COUNT, |
| .format = BTSCO_ERAP_FORMAT, |
| .start_threshold = BTSCO_ERAP_START, |
| .stop_threshold = BTSCO_ERAP_STOP, |
| }; |
| |
| // BT SCO ERAP PCM node index |
| typedef enum { |
| BTSCO_SPK_ERAP_IDX = 0, |
| BTSCO_MIC_ERAP_IDX = 1, |
| BTSCO_MAX_ERAP_IDX = 2, |
| } btsco_erap_idx_type_t; |
| |
| // BT SCO fixed PCM nodes for ERAP path |
| unsigned int btsco_erap_device[BTSCO_MAX_ERAP_IDX][2] = { |
| [0] = {BTSCO_ERAP_CARD, BTSCO_PLAYBACK_ERAP_DEVICE}, |
| [1] = {BTSCO_ERAP_CARD, BTSCO_CAPTURE_ERAP_DEVICE}, |
| }; |
| unsigned int btsco_erap_flag[BTSCO_MAX_ERAP_IDX] = { |
| [BTSCO_SPK_ERAP_IDX] = (PCM_IN | PCM_MONOTONIC), |
| [BTSCO_MIC_ERAP_IDX] = (PCM_OUT | PCM_MONOTONIC), |
| }; |
| |
| // Internal loopback related PCM node configurations |
| // PCM Configurations for BT-A2DP Playback Stream |
| #define BTA2DP_PLAYBACK_CARD SOUND_CARD0 |
| #define BTA2DP_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA6 |
| |
| #define BTA2DP_PLAYBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define BTA2DP_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define BTA2DP_PLAYBACK_PERIOD_SIZE 480 |
| #define BTA2DP_PLAYBACK_PERIOD_COUNT 4 |
| #define BTA2DP_PLAYBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define BTA2DP_PLAYBACK_START BTA2DP_PLAYBACK_PERIOD_SIZE |
| #define BTA2DP_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_bta2dp_playback = { |
| .channels = BTA2DP_PLAYBACK_CHANNELS, |
| .rate = BTA2DP_PLAYBACK_SAMPLING_RATE, |
| .period_size = BTA2DP_PLAYBACK_PERIOD_SIZE, |
| .period_count = BTA2DP_PLAYBACK_PERIOD_COUNT, |
| .format = BTA2DP_PLAYBACK_FORMAT, |
| .start_threshold = BTA2DP_PLAYBACK_START, |
| .stop_threshold = BTA2DP_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for A2DP Mute Playback Stream |
| #define A2DPMUTE_PLAYBACK_CARD SOUND_CARD0 |
| #define A2DPMUTE_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA11 |
| |
| #define A2DPMUTE_PLAYBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define A2DPMUTE_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define A2DPMUTE_PLAYBACK_PERIOD_SIZE 480 |
| #define A2DPMUTE_PLAYBACK_PERIOD_COUNT 4 |
| #define A2DPMUTE_PLAYBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define A2DPMUTE_PLAYBACK_START A2DPMUTE_PLAYBACK_PERIOD_SIZE |
| #define A2DPMUTE_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_a2dp_mute_playback = { |
| .channels = A2DPMUTE_PLAYBACK_CHANNELS, |
| .rate = A2DPMUTE_PLAYBACK_SAMPLING_RATE, |
| .period_size = A2DPMUTE_PLAYBACK_PERIOD_SIZE, |
| .period_count = A2DPMUTE_PLAYBACK_PERIOD_COUNT, |
| .format = A2DPMUTE_PLAYBACK_FORMAT, |
| .start_threshold = A2DPMUTE_PLAYBACK_START, |
| .stop_threshold = A2DPMUTE_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for SpeakerAMP Playback Stream |
| #define SPKAMP_PLAYBACK_CARD SOUND_CARD0 |
| #define SPKAMP_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA7 |
| |
| #define SPKAMP_PLAYBACK_CHANNELS MEDIA_4_CHANNELS |
| #define SPKAMP_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define SPKAMP_PLAYBACK_PERIOD_SIZE 480 |
| #define SPKAMP_PLAYBACK_PERIOD_COUNT 4 |
| #define SPKAMP_PLAYBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define SPKAMP_PLAYBACK_START SPKAMP_PLAYBACK_PERIOD_SIZE |
| #define SPKAMP_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_spkamp_playback = { |
| .channels = SPKAMP_PLAYBACK_CHANNELS, |
| .rate = SPKAMP_PLAYBACK_SAMPLING_RATE, |
| .period_size = SPKAMP_PLAYBACK_PERIOD_SIZE, |
| .period_count = SPKAMP_PLAYBACK_PERIOD_COUNT, |
| .format = SPKAMP_PLAYBACK_FORMAT, |
| .start_threshold = SPKAMP_PLAYBACK_START, |
| .stop_threshold = SPKAMP_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for FM Radio Playback Stream |
| #define FMRADIO_PLAYBACK_CARD SOUND_CARD0 |
| #define FMRADIO_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA3 |
| |
| #define FMRADIO_PLAYBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define FMRADIO_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define FMRADIO_PLAYBACK_PERIOD_SIZE 480 |
| #define FMRADIO_PLAYBACK_PERIOD_COUNT 4 |
| #define FMRADIO_PLAYBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define FMRADIO_PLAYBACK_START FMRADIO_PLAYBACK_PERIOD_SIZE |
| #define FMRADIO_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_fmradio_playback = { |
| .channels = FMRADIO_PLAYBACK_CHANNELS, |
| .rate = FMRADIO_PLAYBACK_SAMPLING_RATE, |
| .period_size = FMRADIO_PLAYBACK_PERIOD_SIZE, |
| .period_count = FMRADIO_PLAYBACK_PERIOD_COUNT, |
| .format = FMRADIO_PLAYBACK_FORMAT, |
| .start_threshold = FMRADIO_PLAYBACK_START, |
| .stop_threshold = FMRADIO_PLAYBACK_STOP, |
| }; |
| |
| // PCM Configurations for Direct Playback Stream |
| #define DIRECT_PLAYBACK_CARD SOUND_CARD0 |
| #define DIRECT_PLAYBACK_DEVICE SOUND_DEVICE_ABOX_RDMA9 |
| |
| #define DIRECT_PLAYBACK_CHANNELS MEDIA_8_CHANNELS |
| #define DIRECT_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define DIRECT_PLAYBACK_PERIOD_SIZE 480 |
| #define DIRECT_PLAYBACK_PERIOD_COUNT 4 |
| #define DIRECT_PLAYBACK_FORMAT DEFAULT_MEDIA_24_ZEROPAD_FORMAT |
| #define DIRECT_PLAYBACK_START DIRECT_PLAYBACK_PERIOD_SIZE |
| #define DIRECT_PLAYBACK_STOP (DIRECT_PLAYBACK_PERIOD_SIZE * DIRECT_PLAYBACK_PERIOD_COUNT) |
| |
| struct pcm_config pcm_config_direct_playback = { |
| .channels = DIRECT_PLAYBACK_CHANNELS, |
| .rate = DIRECT_PLAYBACK_SAMPLING_RATE, |
| .period_size = DIRECT_PLAYBACK_PERIOD_SIZE, |
| .period_count = DIRECT_PLAYBACK_PERIOD_COUNT, |
| .format = DIRECT_PLAYBACK_FORMAT, |
| }; |
| |
| // PCM Configurations for USB Output Loopback Stream |
| #define USBOUT_LOOPBACK_CARD SOUND_CARD0 |
| #define USBOUT_LOOPBACK_DEVICE SOUND_DEVICE_ABOX_WDMA6 |
| |
| #define USBOUT_LOOPBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define USBOUT_LOOPBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define USBOUT_LOOPBACK_PERIOD_SIZE 480 |
| #define USBOUT_LOOPBACK_PERIOD_COUNT 2 |
| #define USBOUT_LOOPBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define USBOUT_LOOPBACK_START USBOUT_LOOPBACK_PERIOD_SIZE |
| #define USBOUT_LOOPBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_usb_out_loopback = { |
| .channels = USBOUT_LOOPBACK_CHANNELS, |
| .rate = USBOUT_LOOPBACK_SAMPLING_RATE, |
| .period_size = USBOUT_LOOPBACK_PERIOD_SIZE, |
| .period_count = USBOUT_LOOPBACK_PERIOD_COUNT, |
| .format = USBOUT_LOOPBACK_FORMAT, |
| .start_threshold = USBOUT_LOOPBACK_START, |
| .stop_threshold = USBOUT_LOOPBACK_STOP, |
| }; |
| |
| // PCM Configurations for USB Input Loopback Stream |
| #define USBIN_LOOPBACK_CARD SOUND_CARD0 |
| #define USBIN_LOOPBACK_DEVICE SOUND_DEVICE_ABOX_RDMA10 |
| |
| #define USBIN_LOOPBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define USBIN_LOOPBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define USBIN_LOOPBACK_PERIOD_SIZE 480 |
| #define USBIN_LOOPBACK_PERIOD_COUNT 4 |
| #define USBIN_LOOPBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define USBIN_LOOPBACK_START USBIN_LOOPBACK_PERIOD_SIZE |
| #define USBIN_LOOPBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_usb_in_loopback = { |
| .channels = USBIN_LOOPBACK_CHANNELS, |
| .rate = USBIN_LOOPBACK_SAMPLING_RATE, |
| .period_size = USBIN_LOOPBACK_PERIOD_SIZE, |
| .period_count = USBIN_LOOPBACK_PERIOD_COUNT, |
| .format = USBIN_LOOPBACK_FORMAT, |
| .start_threshold = USBIN_LOOPBACK_START, |
| .stop_threshold = USBIN_LOOPBACK_STOP, |
| }; |
| |
| // AUX doesn't use A-Box pcm node |
| // PCM Configurations for AUX Digital(HDMI / DisplayPort) Playback Stream |
| #define AUX_PLAYBACK_CARD SOUND_CARD0 |
| #define AUX_PLAYBACK_DEVICE SOUND_DEVICE_AUX |
| |
| #define AUX_PLAYBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define AUX_PLAYBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define AUX_PLAYBACK_PERIOD_SIZE 960 |
| #define AUX_PLAYBACK_PERIOD_COUNT 2 |
| #define AUX_PLAYBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define AUX_PLAYBACK_START AUX_PLAYBACK_PERIOD_SIZE |
| #define AUX_PLAYBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_aux_playback = { |
| .channels = AUX_PLAYBACK_CHANNELS, |
| .rate = AUX_PLAYBACK_SAMPLING_RATE, |
| .period_size = AUX_PLAYBACK_PERIOD_SIZE, |
| .period_count = AUX_PLAYBACK_PERIOD_COUNT, |
| .format = AUX_PLAYBACK_FORMAT, |
| .start_threshold = AUX_PLAYBACK_START, |
| .stop_threshold = AUX_PLAYBACK_STOP, |
| }; |
| |
| //----------------------------------------------------------------------------------------------// |
| // For Capture (MIC) Path |
| |
| // FIXME: Currently unused configuration |
| // PCM Configurations for Mixed Capture Stream |
| #define MIXED_CAPTURE_CARD SOUND_CARD0 |
| #define MIXED_CAPTURE_DEVICE SOUND_DEVICE_ABOX_WDMA0 |
| |
| #define MIXED_CAPTURE_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define MIXED_CAPTURE_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define MIXED_CAPTURE_PERIOD_SIZE 480 |
| #define MIXED_CAPTURE_PERIOD_COUNT 4 |
| #define MIXED_CAPTURE_FORMAT DEFAULT_MEDIA_FORMAT |
| #define MIXED_CAPTURE_START MIXED_CAPTURE_PERIOD_SIZE |
| #define MIXED_CAPTURE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_mixed_capture = { |
| .channels = MIXED_CAPTURE_CHANNELS, |
| .rate = MIXED_CAPTURE_SAMPLING_RATE, |
| .period_size = MIXED_CAPTURE_PERIOD_SIZE, |
| .period_count = MIXED_CAPTURE_PERIOD_COUNT, |
| .format = MIXED_CAPTURE_FORMAT, |
| .start_threshold = MIXED_CAPTURE_START, |
| .stop_threshold = MIXED_CAPTURE_STOP, |
| }; |
| |
| // PCM Configurations for Primary Capture Stream |
| #define PRIMARY_CAPTURE_CARD SOUND_CARD0 |
| #define PRIMARY_CAPTURE_DEVICE SOUND_DEVICE_ABOX_RDMA9 |
| |
| #define PRIMARY_CAPTURE_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define PRIMARY_CAPTURE_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define PRIMARY_CAPTURE_PERIOD_SIZE 960 |
| #define PRIMARY_CAPTURE_PERIOD_COUNT 4 |
| #define PRIMARY_CAPTURE_FORMAT DEFAULT_MEDIA_FORMAT |
| #define PRIMARY_CAPTURE_START PRIMARY_CAPTURE_PERIOD_SIZE |
| #define PRIMARY_CAPTURE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_primary_capture = { |
| .channels = PRIMARY_CAPTURE_CHANNELS, |
| .rate = PRIMARY_CAPTURE_SAMPLING_RATE, |
| .period_size = PRIMARY_CAPTURE_PERIOD_SIZE, |
| .period_count = PRIMARY_CAPTURE_PERIOD_COUNT, |
| .format = PRIMARY_CAPTURE_FORMAT, |
| .start_threshold = PRIMARY_CAPTURE_START, |
| .stop_threshold = PRIMARY_CAPTURE_STOP, |
| }; |
| |
| #ifdef SUPPORT_QUAD_MIC |
| // PCM Configurations for Primary Quad-Mic 4 channel Capture Stream |
| #define PRIMARY_QUAD_CAPTURE_CHANNELS MEDIA_4_CHANNELS |
| #define PRIMARY_QUAD_CAPTURE_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define PRIMARY_QUAD_CAPTURE_PERIOD_SIZE 960 |
| #define PRIMARY_QUAD_CAPTURE_PERIOD_COUNT 4 |
| #define PRIMARY_QUAD_CAPTURE_FORMAT DEFAULT_MEDIA_FORMAT |
| #define PRIMARY_QUAD_CAPTURE_START PRIMARY_QUAD_CAPTURE_PERIOD_SIZE |
| #define PRIMARY_QUAD_CAPTURE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_primary_quad_mic_capture = { |
| .channels = PRIMARY_QUAD_CAPTURE_CHANNELS, |
| .rate = PRIMARY_QUAD_CAPTURE_SAMPLING_RATE, |
| .period_size = PRIMARY_QUAD_CAPTURE_PERIOD_SIZE, |
| .period_count = PRIMARY_QUAD_CAPTURE_PERIOD_COUNT, |
| .format = PRIMARY_QUAD_CAPTURE_FORMAT, |
| .start_threshold = PRIMARY_QUAD_CAPTURE_START, |
| .stop_threshold = PRIMARY_QUAD_CAPTURE_STOP, |
| }; |
| #endif |
| |
| // PCM Configurations for Virtual Primary Capture Stream |
| #define VIRTUAL_PRIMARY_CAPTURE_CARD SOUND_CARD1 |
| #define VIRTUAL_PRIMARY_CAPTURE_DEVICE SOUND_DEVICE_VIRT_PRIMARY_CAPTURE |
| |
| // PCM Configurations for Low Latency Capture Stream |
| #define LOW_CAPTURE_CARD SOUND_CARD0 |
| #define LOW_CAPTURE_DEVICE SOUND_DEVICE_ABOX_RDMA9 |
| |
| #define LOW_CAPTURE_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define LOW_CAPTURE_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define LOW_CAPTURE_PERIOD_SIZE FAST_PLAYBACK_PERIOD_SIZE |
| #define LOW_CAPTURE_PERIOD_COUNT FAST_PLAYBACK_PERIOD_COUNT |
| #define LOW_CAPTURE_FORMAT DEFAULT_MEDIA_FORMAT |
| #define LOW_CAPTURE_START LOW_CAPTURE_PERIOD_SIZE |
| #define LOW_CAPTURE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_low_capture = { |
| .channels = LOW_CAPTURE_CHANNELS, |
| .rate = LOW_CAPTURE_SAMPLING_RATE, |
| .period_size = LOW_CAPTURE_PERIOD_SIZE, |
| .period_count = LOW_CAPTURE_PERIOD_COUNT, |
| .format = LOW_CAPTURE_FORMAT, |
| .start_threshold = LOW_CAPTURE_START, |
| .stop_threshold = LOW_CAPTURE_STOP, |
| }; |
| |
| // PCM Configurations for MMAP Capture Stream |
| #define MMAP_CAPTURE_CARD SOUND_CARD0 |
| #define MMAP_CAPTURE_DEVICE SOUND_DEVICE_ABOX_RDMA9 |
| |
| #define MMAP_CAPTURE_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define MMAP_CAPTURE_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define MMAP_CAPTURE_PERIOD_SIZE MMAP_PERIOD_SIZE |
| #define MMAP_CAPTURE_PERIOD_COUNT MMAP_PERIOD_COUNT_DEFAULT |
| #define MMAP_CAPTURE_FORMAT DEFAULT_MEDIA_FORMAT |
| #define MMAP_CAPTURE_START MMAP_CAPTURE_PERIOD_SIZE |
| #define MMAP_CAPTURE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_mmap_capture = { |
| .channels = MMAP_CAPTURE_CHANNELS, |
| .rate = MMAP_CAPTURE_SAMPLING_RATE, |
| .period_size = MMAP_CAPTURE_PERIOD_SIZE, |
| .period_count = MMAP_CAPTURE_PERIOD_COUNT, |
| .format = MMAP_CAPTURE_FORMAT, |
| .start_threshold = MMAP_CAPTURE_START, |
| .stop_threshold = MMAP_CAPTURE_STOP, |
| }; |
| |
| // PCM Configurations for Voice TX Capture Stream |
| #define VTX_CAPTURE_CARD SOUND_CARD0 |
| #define VTX_CAPTURE_DEVICE SOUND_DEVICE_ABOX_RDMA10 |
| |
| #define VTX_CAPTURE_CHANNELS DEFAULT_VOICE_CHANNELS |
| #define VTX_CAPTURE_SAMPLING_RATE DEFAULT_VOICE_SAMPLING_RATE |
| #define VTX_CAPTURE_PERIOD_SIZE 480 |
| #define VTX_CAPTURE_PERIOD_COUNT 4 |
| #define VTX_CAPTURE_FORMAT DEFAULT_VOICE_FORMAT |
| #define VTX_CAPTURE_START VTX_CAPTURE_PERIOD_SIZE |
| #define VTX_CAPTURE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_voicetx_capture = { |
| .channels = VTX_CAPTURE_CHANNELS, |
| .rate = VTX_CAPTURE_SAMPLING_RATE, |
| .period_size = VTX_CAPTURE_PERIOD_SIZE, |
| .period_count = VTX_CAPTURE_PERIOD_COUNT, |
| .format = VTX_CAPTURE_FORMAT, |
| .start_threshold = VTX_CAPTURE_START, |
| .stop_threshold = VTX_CAPTURE_STOP, |
| }; |
| |
| #ifdef SUPPORT_QUAD_MIC |
| // PCM Configurations for Quad-mic Voice TX Capture Stream |
| #define VTX_QUAD_MIC_CAPTURE_CHANNELS MEDIA_4_CHANNELS |
| #define VTX_QUAD_MIC_CAPTURE_SAMPLING_RATE DEFAULT_VOICE_SAMPLING_RATE |
| #define VTX_QUAD_MIC_CAPTURE_PERIOD_SIZE 480 |
| #define VTX_QUAD_MIC_CAPTURE_PERIOD_COUNT 4 |
| #define VTX_QUAD_MIC_CAPTURE_FORMAT DEFAULT_VOICE_FORMAT |
| #define VTX_QUAD_MIC_CAPTURE_START VTX_QUAD_MIC_CAPTURE_PERIOD_SIZE |
| #define VTX_QUAD_MIC_CAPTURE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_quad_mic_voicetx_capture = { |
| .channels = VTX_QUAD_MIC_CAPTURE_CHANNELS, |
| .rate = VTX_QUAD_MIC_CAPTURE_SAMPLING_RATE, |
| .period_size = VTX_QUAD_MIC_CAPTURE_PERIOD_SIZE, |
| .period_count = VTX_QUAD_MIC_CAPTURE_PERIOD_COUNT, |
| .format = VTX_QUAD_MIC_CAPTURE_FORMAT, |
| .start_threshold = VTX_QUAD_MIC_CAPTURE_START, |
| .stop_threshold = VTX_QUAD_MIC_CAPTURE_STOP, |
| }; |
| #endif |
| |
| // PCM Configurations for FM Radio/Voice Call Capture Stream |
| #define VC_FMRADIO_CAPTURE_CARD SOUND_CARD0 |
| #define VC_FMRADIO_CAPTURE_DEVICE SOUND_DEVICE_ABOX_RDMA10 |
| |
| #define VC_FMRADIO_CAPTURE_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define VC_FMRADIO_CAPTURE_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define VC_FMRADIO_CAPTURE_PERIOD_SIZE 480 |
| #define VC_FMRADIO_CAPTURE_PERIOD_COUNT 4 |
| #define VC_FMRADIO_CAPTURE_FORMAT DEFAULT_MEDIA_FORMAT |
| #define VC_FMRADIO_CAPTURE_START VC_FMRADIO_CAPTURE_PERIOD_SIZE |
| #define VC_FMRADIO_CAPTURE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_vc_fmradio_capture = { |
| .channels = VC_FMRADIO_CAPTURE_CHANNELS, |
| .rate = VC_FMRADIO_CAPTURE_SAMPLING_RATE, |
| .period_size = VC_FMRADIO_CAPTURE_PERIOD_SIZE, |
| .period_count = VC_FMRADIO_CAPTURE_PERIOD_COUNT, |
| .format = VC_FMRADIO_CAPTURE_FORMAT, |
| .start_threshold = VC_FMRADIO_CAPTURE_START, |
| .stop_threshold = VC_FMRADIO_CAPTURE_STOP, |
| }; |
| |
| #ifdef SUPPORT_QUAD_MIC |
| // PCM Configuration for Quad-Mic direct Capture Stream |
| #define QUAD_MIC_CAPTURE_CHANNELS MEDIA_4_CHANNELS |
| #define QUAD_MIC_CAPTURE_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define QUAD_MIC_CAPTURE_PERIOD_SIZE 480 |
| #define QUAD_MIC_CAPTURE_PERIOD_COUNT 4 |
| #define QUAD_MIC_CAPTURE_FORMAT DEFAULT_MEDIA_FORMAT |
| #define QUAD_MIC_CAPTURE_START QUAD_MIC_CAPTURE_PERIOD_SIZE |
| #define QUAD_MIC_CAPTURE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_vc_quad_mic_capture = { |
| .channels = QUAD_MIC_CAPTURE_CHANNELS, |
| .rate = QUAD_MIC_CAPTURE_SAMPLING_RATE, |
| .period_size = QUAD_MIC_CAPTURE_PERIOD_SIZE, |
| .period_count = QUAD_MIC_CAPTURE_PERIOD_COUNT, |
| .format = QUAD_MIC_CAPTURE_FORMAT, |
| .start_threshold = QUAD_MIC_CAPTURE_START, |
| .stop_threshold = QUAD_MIC_CAPTURE_STOP, |
| }; |
| #endif |
| |
| // PCM Configurations for ERAP In Stream |
| #define ERAP_IN_CARD SOUND_CARD0 |
| #define ERAP_IN_DEVICE SOUND_DEVICE_ABOX_RDMA11 |
| |
| #define ERAP_IN_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define ERAP_IN_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define ERAP_IN_PERIOD_SIZE 480 |
| #define ERAP_IN_PERIOD_COUNT 4 |
| #define ERAP_IN_FORMAT DEFAULT_MEDIA_FORMAT |
| #define ERAP_IN_START ERAP_IN_PERIOD_SIZE |
| #define ERAP_IN_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_erap_in = { |
| .channels = ERAP_IN_CHANNELS, |
| .rate = ERAP_IN_SAMPLING_RATE, |
| .period_size = ERAP_IN_PERIOD_SIZE, |
| .period_count = ERAP_IN_PERIOD_COUNT, |
| .format = ERAP_IN_FORMAT, |
| .start_threshold = ERAP_IN_START, |
| .stop_threshold = ERAP_IN_STOP, |
| }; |
| |
| // PCM Configurations for Speaker AMP Reference Stream |
| #define SPKAMP_REFERENCE_CARD SOUND_CARD0 |
| #define SPKAMP_REFERENCE_DEVICE SOUND_DEVICE_ABOX_WDMA0 |
| |
| #define SPKAMP_REFERENCE_CHANNELS MEDIA_4_CHANNELS |
| #define SPKAMP_REFERENCE_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define SPKAMP_REFERENCE_PERIOD_SIZE 480 |
| #define SPKAMP_REFERENCE_PERIOD_COUNT 4 |
| #define SPKAMP_REFERENCE_FORMAT DEFAULT_MEDIA_FORMAT |
| #define SPKAMP_REFERENCE_START SPKAMP_REFERENCE_PERIOD_SIZE |
| #define SPKAMP_REFERENCE_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_spkamp_reference = { |
| .channels = SPKAMP_REFERENCE_CHANNELS, |
| .rate = SPKAMP_REFERENCE_SAMPLING_RATE, |
| .period_size = SPKAMP_REFERENCE_PERIOD_SIZE, |
| .period_count = SPKAMP_REFERENCE_PERIOD_COUNT, |
| .format = SPKAMP_REFERENCE_FORMAT, |
| .start_threshold = SPKAMP_REFERENCE_START, |
| .stop_threshold = SPKAMP_REFERENCE_STOP, |
| }; |
| |
| // PCM Configurations for BT A2DP Output Loopback Stream |
| #define BTA2DP_OUT_LOOPBACK_CARD SOUND_CARD0 |
| #define BTA2DP_OUT_LOOPBACK_DEVICE SOUND_DEVICE_ABOX_WDMA5 |
| |
| #define BTA2DP_OUT_LOOPBACK_CHANNELS DEFAULT_MEDIA_CHANNELS |
| #define BTA2DP_OUT_LOOPBACK_SAMPLING_RATE DEFAULT_MEDIA_SAMPLING_RATE |
| #define BTA2DP_OUT_LOOPBACK_PERIOD_SIZE 480 |
| #define BTA2DP_OUT_LOOPBACK_PERIOD_COUNT 4 |
| #define BTA2DP_OUT_LOOPBACK_FORMAT DEFAULT_MEDIA_FORMAT |
| #define BTA2DP_OUT_LOOPBACK_START BTA2DP_OUT_LOOPBACK_PERIOD_SIZE |
| #define BTA2DP_OUT_LOOPBACK_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_bta2dp_out_loopback = { |
| .channels = BTA2DP_OUT_LOOPBACK_CHANNELS, |
| .rate = BTA2DP_OUT_LOOPBACK_SAMPLING_RATE, |
| .period_size = BTA2DP_OUT_LOOPBACK_PERIOD_SIZE, |
| .period_count = BTA2DP_OUT_LOOPBACK_PERIOD_COUNT, |
| .format = BTA2DP_OUT_LOOPBACK_FORMAT, |
| .start_threshold = BTA2DP_OUT_LOOPBACK_START, |
| .stop_threshold = BTA2DP_OUT_LOOPBACK_STOP, |
| }; |
| |
| // PCM Configurations for Voice Call/TelephonyRx Recording Stream |
| #define TELERX_RECORD_CARD SOUND_CARD2 |
| #define TELERX_RECORD_DEVICE SOUND_DEVICE_TELEPHONYRX_RECORD |
| |
| #define CALL_RECORD_CARD SOUND_CARD2 |
| #define CALL_RECORD_DEVICE SOUND_DEVICE_CALL_RECORD |
| |
| #define CALL_RECORD_CHANNELS DEFAULT_VOICE_REC_CHANNELS |
| #define CALL_RECORD_SAMPLING_RATE DEFAULT_VOICE_REC_SAMPLINGRATE |
| #define CALL_RECORD_PERIOD_SIZE DEFAULT_VOICE_REC_PERIODSIZE |
| #define CALL_RECORD_PERIOD_COUNT DEFAULT_VOICE_REC_PERIODCOUNT |
| #define CALL_RECORD_FORMAT DEFAULT_VOICE_REC_FORMAT |
| #define CALL_RECORD_START CALL_RECORD_PERIOD_SIZE |
| #define CALL_RECORD_STOP UINT_MAX |
| |
| struct pcm_config pcm_config_call_record = { |
| .channels = CALL_RECORD_CHANNELS, |
| .rate = CALL_RECORD_SAMPLING_RATE, |
| .period_size = CALL_RECORD_PERIOD_SIZE, |
| .period_count = CALL_RECORD_PERIOD_COUNT, |
| .format = CALL_RECORD_FORMAT, |
| .start_threshold = CALL_RECORD_START, |
| .stop_threshold = CALL_RECORD_STOP, |
| }; |
| |
| // PCM Configurations for FM Radio Recording Stream |
| #define FM_RECORD_CARD SOUND_CARD1 |
| #define FM_RECORD_DEVICE SOUND_DEVICE_VIRT_FM_RECORD |
| |
| #define FM_RECORD_CHANNELS DEFAULT_FM_REC_CHANNELS |
| #define FM_RECORD_SAMPLING_RATE DEFAULT_FM_REC_SAMPLINGRATE |
| #define FM_RECORD_PERIOD_SIZE DEFAULT_FM_REC_PERIODSIZE |
| #define FM_RECORD_PERIOD_COUNT DEFAULT_FM_REC_PERIODCOUNT |
| #define FM_RECORD_FORMAT DEFAULT_FM_REC_FORMAT |
| #define FM_RECORD_START FM_RECORD_PERIOD_SIZE |
| #define FM_RECORD_STOP FM_RECORD_PERIOD_SIZE * FM_RECORD_PERIOD_COUNT |
| |
| struct pcm_config pcm_config_fm_record = { |
| .channels = FM_RECORD_CHANNELS, |
| .rate = FM_RECORD_SAMPLING_RATE, |
| .period_size = FM_RECORD_PERIOD_SIZE, |
| .period_count = FM_RECORD_PERIOD_COUNT, |
| .format = FM_RECORD_FORMAT, |
| .start_threshold = FM_RECORD_START, |
| .stop_threshold = FM_RECORD_STOP, |
| }; |
| |
| |
| #ifdef SUPPORT_STHAL_INTERFACE |
| // PCM Configurations for hotword capture Stream |
| // Note: Should be matching with STHAL pcm configuration |
| #define DEFAULT_HOTWORD_CHANNELS 1 // Mono |
| #define DEFAULT_HOTWORD_SAMPLING_RATE 16000 |
| #define HOTWORD_PERIOD_SIZE 480 // 480 frames, 30ms in case of 16KHz Stream |
| #define HOTWORD_PERIOD_COUNT 128 // Buffer count => Total 122880 Bytes = 480 * 1(Mono) * 2(16bit PCM) * 128(Buffer count) |
| |
| struct pcm_config pcm_config_hotword_capture = { |
| .channels = DEFAULT_HOTWORD_CHANNELS, |
| .rate = DEFAULT_HOTWORD_SAMPLING_RATE, |
| .period_size = HOTWORD_PERIOD_SIZE, |
| .period_count = HOTWORD_PERIOD_COUNT, |
| .format = PCM_FORMAT_S16_LE, |
| }; |
| #endif |
| |
| #define MAX_PCM_PATH_LEN 256 |
| |
| // Duration for DP Playback |
| #define PREDEFINED_DP_PLAYBACK_DURATION 20 // 20ms |
| |
| // Duration for MMAP pcm configurations |
| #define PREDEFINED_MMAP_CAPTURE_DURATION 1 // 1ms |
| |
| // Duration for Remote-Mic Playback/Capture loopback node configuration |
| #define PREDEFINED_REMOTE_MIC_DURATION 20 // 20ms |
| |
| // Duration for USB Playback |
| #define PREDEFINED_USB_PLAYBACK_DURATION 10 // 10ms |
| |
| #endif // __EXYNOS_AUDIOPROXY_PCM_H__ |