找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 4173|回复: 5

[QCC5系列] qcc30xx/51xx 利用splitter capability实现音频双输出

[复制链接]
连续签到天数:1天
签到总天数:75天
签到总奖励:2866金币
发表于 2021-8-29 19:13:42 | 显示全部楼层 |阅读模式
可以实现I2S和模拟同时输出。

apps\libs\audio_mixer\audio_mixer.c:
  1. static void mixerHardwareConnect(connection_type_t connection_type)
  2. {
  3. ….

  4. -hw_connect_data.aux_left = NULL;
  5. -hw_connect_data.aux_right = NULL;
  6. +hw_connect_data.aux_left = ChainGetOutput(mixerSpeakerGetChain(), path_role_aux_left);;
  7. +hw_connect_data.aux_right = ChainGetOutput(mixerSpeakerGetChain(), path_role_aux_right);;
  8. AudioHardwareConnectOutput(&hw_connect_data);
  9. }
复制代码
apps\libs\audio_mixer\audio_mixer_channel_roles.h:
  1. typedef enum
  2. {
  3. mixer_left_channel,
  4. mixer_right_channel,
  5. +path_role_aux_left,
  6. +path_role_aux_right,
  7. mixer_secondary_left_channel,

  8. } audio_mixer_channel_role_t;
复制代码
apps\libs\audio_mixer\audio_mixer_speaker.c:
  1. static void mixerSpeakerConfigureChain(unsigned output_sample_rate)
  2. {
  3. Operator speaker_peq_op;
  4. +Operator output_splitter_op;

  5. crossover_op = ChainGetOperatorByRole(speaker_data.chain, crossover_role);
  6. if (crossover_op)
  7. {
  8. OperatorsStandardSetUCID(crossover_op,
  9. mixerSpeakerGetCrossoverUcid(speaker_data.mode));
  10. }
  11. +output_splitter_op = ChainGetOperatorByRole(speaker_data.chain, output_splitter_role);
  12. +if (output_splitter_op)
  13. +{

  14. +}
复制代码
apps\libs\audio_mixer\audio_mixer_speaker_chain_configs.c:
  1. #define MAKE_SPEAKER_OPS_COMMON() \
  2. MAKE_OPERATOR_CONFIG(capability_id_volume, media_volume_role), \
  3. MAKE_OPERATOR_CONFIG(capability_id_peq, speaker_peq_role), \
  4. +MAKE_OPERATOR_CONFIG(capability_id_splitter, output_splitter_role), \
  5. MAKE_OPERATOR_CONFIG(capability_id_passthrough, post_processing_role)
  6. static const operator_path_node_t left_primary_left[] =
  7. {
  8. {media_volume_role, VOLUME_INPUT_MAIN1, VOLUME_OUTPUT1},
  9. {speaker_peq_role, LEFT_INPUT, LEFT_OUTPUT},
  10. +{output_splitter_role, PRIMARY_LEFT_INPUT, PRIMARY_LEFT_OUTPUT},
  11. {post_processing_role, PRIMARY_LEFT_INPUT, PRIMARY_LEFT_OUTPUT}
  12. };
  13. static const operator_path_node_t right_primary_right[] =
  14. {
  15. {media_volume_role, VOLUME_INPUT_MAIN2, VOLUME_OUTPUT2},
  16. {speaker_peq_role, RIGHT_INPUT, RIGHT_OUTPUT},
  17. +{output_splitter_role, PRIMARY_RIGHT_INPUT, PRIMARY_RIGHT_OUTPUT},
  18. {post_processing_role, PRIMARY_RIGHT_INPUT, PRIMARY_RIGHT_OUTPUT}
  19. };
  20. +static const operator_path_node_t path_aux_left[] =
  21. +{
  22. +{output_splitter_role, UNUSED_TERMINAL, SECONDARY_LEFT_OUTPUT},
  23. +{post_processing_role, SECONDARY_LEFT_OUTPUT, SECONDARY_LEFT_OUTPUT}
  24. +};
  25. +static const operator_path_node_t path_aux_right[] =
  26. +{
  27. +{output_splitter_role, UNUSED_TERMINAL, SECONDARY_RIGHT_OUTPUT},
  28. +{post_processing_role, SECONDARY_RIGHT_OUTPUT, SECONDARY_RIGHT_OUTPUT}
  29. +};
  30. static const operator_path_t paths_mono[] =
  31. {
  32. {mixer_left_channel, path_with_in_and_out,
  33. ARRAY_DIM((left_primary_left)), left_primary_left},
  34. {mixer_prompt_left_channel, path_with_input, ARRAY_DIM((prompt_mix)), prompt_mix},
  35. +{path_role_aux_left, path_with_output, ARRAY_DIM((path_aux_left)), path_aux_left}
  36. };
  37. static const operator_path_t paths_stereo[] =
  38. {
  39. {mixer_left_channel, path_with_in_and_out,
  40. ARRAY_DIM((left_primary_left)), left_primary_left},
  41. {mixer_right_channel, path_with_in_and_out, ARRAY_DIM((right_primary_right)),
  42. right_primary_right},
  43. {mixer_prompt_left_channel, path_with_input, ARRAY_DIM((prompt_mix)), prompt_mix},
  44. +{path_role_aux_left, path_with_output, ARRAY_DIM((path_aux_left)), path_aux_left},
  45. +{path_role_aux_right, path_with_output, ARRAY_DIM((path_aux_right)), path_aux_right}
  46. };
复制代码
apps\libs\audio_mixer\audio_mixer_speaker_chain_configs.h:
  1. typedef enum _audio_mixer_speaker_roles
  2. {
  3. +output_splitter_role,
  4. media_volume_role,
  5. speaker_peq_role,
  6. stereo_to_mono_role,
  7. crossover_role,
  8. master_volume_role,
  9. compander_role,
  10. post_processing_role
  11. } audio_mixer_speaker_roles_t;
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
连续签到天数:1天
签到总天数:1776天
签到总奖励:51445金币
发表于 2021-8-30 23:54:00 | 显示全部楼层
技术大牛!
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:1007天
签到总奖励:16800金币
发表于 2021-8-31 08:15:23 | 显示全部楼层
非常不错,赞
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:3天
签到总天数:244天
签到总奖励:3382金币
发表于 2021-9-3 14:13:27 | 显示全部楼层
双输入、双输出,可以吗?
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:256天
签到总奖励:6406金币
发表于 2022-4-5 00:08:48 | 显示全部楼层
adk6.4.2.26按照这个方法会panic
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:622天
签到总奖励:18137金币
发表于 2022-4-5 19:08:10 | 显示全部楼层
学习了
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-4-25 18:41 , Processed in 0.171992 second(s), 17 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表