SoundCardData.cpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #include "SoundCardData.h"
  2. /* 初始化数据,获取声卡信息 */
  3. bool SoundCardManager::InitData()
  4. {
  5. /* 获取可用的声卡列表 */
  6. if(AudioDevice::getAudioDevices(m_listAudioDevice))
  7. {
  8. SPDLOG_INFO("成功获取到声卡设备信息");
  9. } else
  10. {
  11. SPDLOG_ERROR("获取声卡设备信息失败");
  12. }
  13. SPDLOG_INFO("----------------------------------------------------------------------------");
  14. /* 打印声卡列表 */
  15. printAudioDevices();
  16. SPDLOG_INFO("----------------------------------------------------------------------------");
  17. // /* 获取并打印另一种声卡信息 */
  18. // std::list<AudioDeviceDesc_t> pcmDevices;
  19. // if(getPCMAudioDevice(pcmDevices))
  20. // {
  21. // SPDLOG_INFO("成功获取到PCM设备信息");
  22. // printAudioDeviceDesc(pcmDevices);
  23. // } else
  24. // {
  25. // SPDLOG_ERROR("获取PCM设备信息失败");
  26. // }
  27. return true;
  28. }
  29. /* 获取声卡信息,转换成系统使用的数据类型 */
  30. QMap<int, SoundCardInfo_t> SoundCardManager::getSoundCardInfo() const
  31. {
  32. QMap<int, SoundCardInfo_t> soundCardInfoMap;
  33. for(const auto& device : m_listAudioDevice)
  34. {
  35. SoundCardInfo_t soundCardInfo;
  36. soundCardInfo.nSoundCardNum = device.CardNumber;
  37. soundCardInfo.strSoundCardID = QString::fromStdString(device.CardID);
  38. soundCardInfo.strSoundCardName = QString::fromStdString(device.CardName);
  39. soundCardInfo.strSoundCardDriver = QString::fromStdString(device.CardDriver);
  40. for(const auto& pcmDevice : device.PCMDevices)
  41. {
  42. OneRoadInfo_t roadInfo;
  43. roadInfo.nRoadNum = pcmDevice.PCMDevice;
  44. soundCardInfo.listRoad.append(roadInfo);
  45. }
  46. soundCardInfoMap.insert(soundCardInfo.nSoundCardNum, soundCardInfo);
  47. }
  48. return soundCardInfoMap;
  49. }
  50. /* 打印声卡列表 */
  51. void SoundCardManager::printAudioDevices()
  52. {
  53. SPDLOG_INFO("声卡列表: ");
  54. for(const auto& device : m_listAudioDevice)
  55. {
  56. SPDLOG_INFO(" 声卡编号: {}, ID: {}, 名称: {}, 驱动: {}",
  57. device.CardNumber, device.CardID, device.CardName, device.CardDriver);
  58. SPDLOG_INFO(" 长名称: {}, 混音器名称: {}, 组件信息: {}",
  59. device.CardLongName, device.CardMixername, device.CardComponents);
  60. for(const auto& pcmDevice : device.PCMDevices)
  61. {
  62. SPDLOG_INFO(" PCM设备编号: {}, 子设备编号: {}, PCM ID: {}, 名称: {}, 子设备名称: {}",
  63. pcmDevice.PCMDevice, pcmDevice.SubDevice, pcmDevice.CardNumber,
  64. pcmDevice.PCMID, pcmDevice.PCMName, pcmDevice.PCMSubName);
  65. }
  66. }
  67. }
  68. /* 打印声卡描述列表 */
  69. void SoundCardManager::printAudioDeviceDesc(std::list<AudioDeviceDesc_t>& pcmDevices)
  70. {
  71. for(const auto& device : pcmDevices)
  72. {
  73. SPDLOG_INFO("设备名称: {}, 描述: {}, IOID: {}, 声卡: {}, 设备编号: {}",
  74. device.DeviceName, device.DeviceDesc, device.IOID,
  75. device.Card, device.DevNum);
  76. }
  77. }
  78. /* 声卡信息写入数据库 */
  79. void SoundCardManager::writeAudioDeviceToDB()
  80. {
  81. }