您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ AEDeviceInfoList类代码示例

51自学网 2021-06-03 12:03:31
  C++
这篇教程C++ AEDeviceInfoList类代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中AEDeviceInfoList的典型用法代码示例。如果您正苦于以下问题:C++ AEDeviceInfoList类的具体用法?C++ AEDeviceInfoList怎么用?C++ AEDeviceInfoList使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。

在下文中一共展示了AEDeviceInfoList类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: EnumerateDevicesEx

void CAESinkPi::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  m_info.m_channels.Reset();  m_info.m_dataFormats.clear();  m_info.m_sampleRates.clear();  m_info.m_deviceType = AE_DEVTYPE_HDMI;  m_info.m_deviceName = "HDMI";  m_info.m_displayName = "HDMI";  m_info.m_displayNameExtra = "";  m_info.m_channels += AE_CH_FL;  m_info.m_channels += AE_CH_FR;  m_info.m_sampleRates.push_back(48000);  m_info.m_dataFormats.push_back(AE_FMT_S16LE);  list.push_back(m_info);  m_info.m_channels.Reset();  m_info.m_dataFormats.clear();  m_info.m_sampleRates.clear();  m_info.m_deviceType = AE_DEVTYPE_PCM;  m_info.m_deviceName = "Analogue";  m_info.m_displayName = "Analogue";  m_info.m_displayNameExtra = "";  m_info.m_channels += AE_CH_FL;  m_info.m_channels += AE_CH_FR;  m_info.m_sampleRates.push_back(48000);  m_info.m_dataFormats.push_back(AE_FMT_S16LE);  list.push_back(m_info);}
开发者ID:Mixali4,项目名称:xbmc,代码行数:32,


示例2: EnumerateDevicesEx

void CAESinkAUDIOTRACK::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  m_info.m_channels.Reset();  m_info.m_dataFormats.clear();  m_info.m_sampleRates.clear();  m_info.m_deviceType = AE_DEVTYPE_PCM;#if defined(HAS_LIBAMCODEC)  // AML devices can do passthough  if (aml_present())  {    m_info.m_deviceType = AE_DEVTYPE_HDMI;    m_info.m_dataFormats.push_back(AE_FMT_AC3);    m_info.m_dataFormats.push_back(AE_FMT_DTS);  }#endif  m_info.m_deviceName = "AudioTrack";  m_info.m_displayName = "android";  m_info.m_displayNameExtra = "audiotrack";  m_info.m_channels += AE_CH_FL;  m_info.m_channels += AE_CH_FR;  m_info.m_sampleRates.push_back(44100);  m_info.m_sampleRates.push_back(48000);  m_info.m_dataFormats.push_back(AE_FMT_S16LE);#if 0 //defined(__ARM_NEON__)  if (g_cpuInfo.GetCPUFeatures() & CPU_FEATURE_NEON)    m_info.m_dataFormats.push_back(AE_FMT_FLOAT);#endif  list.push_back(m_info);}
开发者ID:CenturyGlorion,项目名称:xbmc,代码行数:31,


示例3: EnumerateDevicesEx

void CAESinkAUDIOTRACK::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  m_info.m_channels.Reset();  m_info.m_dataFormats.clear();  m_info.m_sampleRates.clear();  m_info.m_deviceType = AE_DEVTYPE_PCM;  m_info.m_deviceName = "AudioTrack";  m_info.m_displayName = "android";  m_info.m_displayNameExtra = "audiotrack";#ifdef LIMIT_TO_STEREO_AND_5POINT1_AND_7POINT1  if (Has71Support())    m_info.m_channels = AE_CH_LAYOUT_7_1;  else    m_info.m_channels = AE_CH_LAYOUT_5_1;#else  m_info.m_channels = KnownChannels;#endif  m_info.m_dataFormats.push_back(AE_FMT_S16LE);  m_info.m_sampleRates.push_back(CJNIAudioTrack::getNativeOutputSampleRate(CJNIAudioManager::STREAM_MUSIC));  if (!CXBMCApp::IsHeadsetPlugged())  {    m_info.m_deviceType = AE_DEVTYPE_HDMI;    int test_sample[] = { 44100, 48000, 96000, 192000 };    int test_sample_sz = sizeof(test_sample) / sizeof(int);    for (int i=0; i<test_sample_sz; ++i)    {      if (IsSupported(test_sample[i], CJNIAudioFormat::CHANNEL_OUT_STEREO, CJNIAudioFormat::ENCODING_PCM_16BIT))      {        m_info.m_sampleRates.push_back(test_sample[i]);        CLog::Log(LOGDEBUG, "AESinkAUDIOTRACK - %d supported", test_sample[i]);      }    }    m_info.m_dataFormats.push_back(AE_FMT_AC3);    m_info.m_dataFormats.push_back(AE_FMT_DTS);  }#if 0 //defined(__ARM_NEON__)  if (g_cpuInfo.GetCPUFeatures() & CPU_FEATURE_NEON)    m_info.m_dataFormats.push_back(AE_FMT_FLOAT);#endif  list.push_back(m_info);}
开发者ID:metaron-uk,项目名称:xbmc,代码行数:44,


示例4: EnumerateDevicesEx

void CAESinkAUDIOTRACK::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  // Clear everything  m_info.m_channels.Reset();  m_info.m_dataFormats.clear();  m_info.m_sampleRates.clear();  m_info.m_streamTypes.clear();  m_sink_sampleRates.clear();  m_info.m_deviceType = AE_DEVTYPE_PCM;  m_info.m_deviceName = "AudioTrack";  m_info.m_displayName = "android";  m_info.m_displayNameExtra = "audiotrack";  UpdateAvailablePCMCapabilities();  if (!CXBMCApp::IsHeadsetPlugged())  {    UpdateAvailablePassthroughCapabilities();  }  list.push_back(m_info);}
开发者ID:Razzeee,项目名称:xbmc,代码行数:22,


示例5: EnumerateDevicesEx

void CAESinkAUDIOTRACK::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  m_info.m_channels.Reset();  m_info.m_dataFormats.clear();  m_info.m_sampleRates.clear();  m_info.m_deviceType = AE_DEVTYPE_HDMI;  m_info.m_deviceName = "AudioTrack";  m_info.m_displayName = "android";  m_info.m_displayNameExtra = "audiotrack";#ifdef LIMIT_TO_STEREO_AND_5POINT1  m_info.m_channels = AE_CH_LAYOUT_5_1;#else  m_info.m_channels = KnownChannels;#endif// MSTAR PATCH BEGIN  //m_info.m_sampleRates.push_back(CJNIAudioTrack::getNativeOutputSampleRate(CJNIAudioManager::STREAM_MUSIC));  m_info.m_sampleRates.push_back(44100);  m_info.m_sampleRates.push_back(48000);// MSTAR PATCH END  m_info.m_dataFormats.push_back(AE_FMT_S16LE);  m_info.m_dataFormats.push_back(AE_FMT_AC3);  m_info.m_dataFormats.push_back(AE_FMT_DTS);// MSTAR PATCH BEGIN  m_info.m_dataFormats.push_back(AE_FMT_EAC3);  m_info.m_dataFormats.push_back(AE_FMT_TRUEHD);  m_info.m_dataFormats.push_back(AE_FMT_DTSHD);  m_info.m_sampleRates.push_back(192000);// MSTAR PATCH END#if 0 //defined(__ARM_NEON__)  if (g_cpuInfo.GetCPUFeatures() & CPU_FEATURE_NEON)    m_info.m_dataFormats.push_back(AE_FMT_FLOAT);#endif  list.push_back(m_info);}
开发者ID:dpvip,项目名称:xbmc4zidoo,代码行数:36,


示例6: EnumerateDevicesEx

void CAESinkAUDIOTRACK::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  m_info.m_channels.Reset();  m_info.m_dataFormats.clear();  m_info.m_sampleRates.clear();  m_info.m_deviceType = AE_DEVTYPE_PCM;  m_info.m_deviceName = "AudioTrack";  m_info.m_displayName = "android";  m_info.m_displayNameExtra = "audiotrack";#ifdef LIMIT_TO_STEREO_AND_5POINT1_AND_7POINT1  if (Has71Support())    m_info.m_channels = AE_CH_LAYOUT_7_1;  else    m_info.m_channels = AE_CH_LAYOUT_5_1;#else  m_info.m_channels = KnownChannels;#endif  m_info.m_dataFormats.push_back(AE_FMT_S16LE);  m_sink_sampleRates.clear();  m_sink_sampleRates.insert(CJNIAudioTrack::getNativeOutputSampleRate(CJNIAudioManager::STREAM_MUSIC));  m_info.m_wantsIECPassthrough = true;  if (!CXBMCApp::IsHeadsetPlugged())  {    m_info.m_deviceType = AE_DEVTYPE_HDMI;    m_info.m_dataFormats.push_back(AE_FMT_RAW);    m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_AC3);    m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTSHD_CORE);    m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTS_1024);    m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTS_2048);    m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTS_512);#if defined(HAS_LIBAMCODEC)    if (aml_present())    {      // passthrough      m_info.m_wantsIECPassthrough = true;      m_sink_sampleRates.insert(44100);      m_sink_sampleRates.insert(48000);      if (HasAmlHD())      {        m_sink_sampleRates.insert(96000);        m_sink_sampleRates.insert(192000);        m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_EAC3);        m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTSHD);        m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_TRUEHD);      }    }    else#endif    {      int test_sample[] = { 32000, 44100, 48000, 96000, 192000 };      int test_sample_sz = sizeof(test_sample) / sizeof(int);      int encoding = CJNIAudioFormat::ENCODING_PCM_16BIT;      if (CJNIAudioManager::GetSDKVersion() >= 21)        encoding = CJNIAudioFormat::ENCODING_PCM_FLOAT;      for (int i=0; i<test_sample_sz; ++i)      {        if (IsSupported(test_sample[i], CJNIAudioFormat::CHANNEL_OUT_STEREO, encoding))        {          m_sink_sampleRates.insert(test_sample[i]);          CLog::Log(LOGDEBUG, "AESinkAUDIOTRACK - %d supported", test_sample[i]);        }      }      if (CJNIAudioManager::GetSDKVersion() >= 23)      {        m_info.m_wantsIECPassthrough = false;        // here only 5.1 would work but we cannot correctly distinguish        // m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_EAC3);        m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTSHD);      }      if (StringUtils::StartsWithNoCase(CJNIBuild::DEVICE, "foster")) // SATV is ahead of API      {        m_info.m_wantsIECPassthrough = false;        if (CJNIAudioManager::GetSDKVersion() == 22)          m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTSHD);        m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_TRUEHD);      }    }    std::copy(m_sink_sampleRates.begin(), m_sink_sampleRates.end(), std::back_inserter(m_info.m_sampleRates));  }  list.push_back(m_info);}
开发者ID:0xheart0,项目名称:xbmc,代码行数:86,


示例7: DirectSoundEnumerate

void CAESinkDirectSound::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bool force){  CAEDeviceInfo        deviceInfo;  IMMDeviceEnumerator* pEnumerator = NULL;  IMMDeviceCollection* pEnumDevices = NULL;  HRESULT                hr;  /* See if we are on Windows XP */  if (!g_sysinfo.IsWindowsVersionAtLeast(CSysInfo::WindowsVersionVista))  {    /* We are on XP - WASAPI not supported - enumerate using DS devices */    LPGUID deviceGUID = NULL;    RPC_CSTR cszGUID;    std::string szGUID;    std::list<DSDevice> DSDeviceList;    DirectSoundEnumerate(DSEnumCallback, &DSDeviceList);    for(std::list<DSDevice>::iterator itt = DSDeviceList.begin(); itt != DSDeviceList.end(); ++itt)    {      if (UuidToString((*itt).lpGuid, &cszGUID) != RPC_S_OK)        continue;  /* could not convert GUID to string - skip device */      deviceInfo.m_channels.Reset();      deviceInfo.m_dataFormats.clear();      deviceInfo.m_sampleRates.clear();      szGUID = (LPSTR)cszGUID;      deviceInfo.m_deviceName = "{" + szGUID + "}";      deviceInfo.m_displayName = (*itt).name;      deviceInfo.m_displayNameExtra = std::string("DirectSound: ") + (*itt).name;      deviceInfo.m_deviceType = AE_DEVTYPE_PCM;      deviceInfo.m_channels   = layoutsByChCount[2];      deviceInfo.m_dataFormats.push_back(AEDataFormat(AE_FMT_FLOAT));      deviceInfo.m_dataFormats.push_back(AEDataFormat(AE_FMT_AC3));      deviceInfo.m_sampleRates.push_back((DWORD) 96000);      deviceInfoList.push_back(deviceInfo);    }    RpcStringFree(&cszGUID);    return;  }  /* Windows Vista or later - supporting WASAPI device probing */  hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&pEnumerator);  EXIT_ON_FAILURE(hr, __FUNCTION__": Could not allocate WASAPI device enumerator. CoCreateInstance error code: %li", hr)  UINT uiCount = 0;  hr = pEnumerator->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE, &pEnumDevices);  EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of audio endpoint enumeration failed.")  hr = pEnumDevices->GetCount(&uiCount);  EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of audio endpoint count failed.")  for (UINT i = 0; i < uiCount; i++)  {    IMMDevice *pDevice = NULL;    IPropertyStore *pProperty = NULL;    PROPVARIANT varName;    PropVariantInit(&varName);    deviceInfo.m_channels.Reset();    deviceInfo.m_dataFormats.clear();    deviceInfo.m_sampleRates.clear();    hr = pEnumDevices->Item(i, &pDevice);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint failed.");      goto failed;    }    hr = pDevice->OpenPropertyStore(STGM_READ, &pProperty);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint properties failed.");      SAFE_RELEASE(pDevice);      goto failed;    }    hr = pProperty->GetValue(PKEY_Device_FriendlyName, &varName);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint device name failed.");      SAFE_RELEASE(pDevice);      SAFE_RELEASE(pProperty);      goto failed;    }    std::string strFriendlyName = localWideToUtf(varName.pwszVal);    PropVariantClear(&varName);    hr = pProperty->GetValue(PKEY_AudioEndpoint_GUID, &varName);//.........这里部分代码省略.........
开发者ID:DJMatty,项目名称:xbmc,代码行数:101,


示例8: EnumerateDevicesEx

void CAESinkWASAPI::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bool force){  IMMDeviceEnumerator* pEnumerator = NULL;  IMMDeviceCollection* pEnumDevices = NULL;  IMMDevice*           pDefaultDevice = NULL;  CAEDeviceInfo        deviceInfo;  CAEChannelInfo       deviceChannels;  LPWSTR               pwszID = NULL;  std::wstring         wstrDDID;  WAVEFORMATEXTENSIBLE wfxex = {0};  HRESULT              hr;  hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&pEnumerator);  EXIT_ON_FAILURE(hr, __FUNCTION__": Could not allocate WASAPI device enumerator. CoCreateInstance error code: %li", hr)  UINT uiCount = 0;  // get the default audio endpoint  if(pEnumerator->GetDefaultAudioEndpoint(eRender, eConsole, &pDefaultDevice) == S_OK)  {    if(pDefaultDevice->GetId(&pwszID) == S_OK)    {      wstrDDID = pwszID;      CoTaskMemFree(pwszID);    }    SAFE_RELEASE(pDefaultDevice);  }  // enumerate over all audio endpoints  hr = pEnumerator->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE, &pEnumDevices);  EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of audio endpoint enumeration failed.")  hr = pEnumDevices->GetCount(&uiCount);  EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of audio endpoint count failed.")  for (UINT i = 0; i < uiCount; i++)  {    IMMDevice *pDevice = NULL;    IPropertyStore *pProperty = NULL;    PROPVARIANT varName;    PropVariantInit(&varName);    deviceInfo.m_channels.Reset();    deviceInfo.m_dataFormats.clear();    deviceInfo.m_sampleRates.clear();    hr = pEnumDevices->Item(i, &pDevice);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of WASAPI endpoint failed.");      goto failed;    }    hr = pDevice->OpenPropertyStore(STGM_READ, &pProperty);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of WASAPI endpoint properties failed.");      SAFE_RELEASE(pDevice);      goto failed;    }    hr = pProperty->GetValue(PKEY_Device_FriendlyName, &varName);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of WASAPI endpoint device name failed.");      SAFE_RELEASE(pDevice);      SAFE_RELEASE(pProperty);      goto failed;    }    std::string strFriendlyName = localWideToUtf(varName.pwszVal);    PropVariantClear(&varName);    hr = pProperty->GetValue(PKEY_AudioEndpoint_GUID, &varName);    if(FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of WASAPI endpoint GUID failed.");      SAFE_RELEASE(pDevice);      SAFE_RELEASE(pProperty);      goto failed;    }    std::string strDevName = localWideToUtf(varName.pwszVal);    PropVariantClear(&varName);    hr = pProperty->GetValue(PKEY_AudioEndpoint_FormFactor, &varName);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of WASAPI endpoint form factor failed.");      SAFE_RELEASE(pDevice);      SAFE_RELEASE(pProperty);      goto failed;    }    std::string strWinDevType = winEndpoints[(EndpointFormFactor)varName.uiVal].winEndpointType;    AEDeviceType aeDeviceType = winEndpoints[(EndpointFormFactor)varName.uiVal].aeDeviceType;    PropVariantClear(&varName);    hr = pProperty->GetValue(PKEY_AudioEndpoint_PhysicalSpeakers, &varName);//.........这里部分代码省略.........
开发者ID:CaptainRewind,项目名称:xbmc,代码行数:101,


示例9: EnumerateDevicesEx

void CAESinkAUDIOTRACK::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  m_info.m_channels.Reset();  m_info.m_dataFormats.clear();  m_info.m_sampleRates.clear();  m_info.m_deviceType = AE_DEVTYPE_PCM;  m_info.m_deviceName = "AudioTrack";  m_info.m_displayName = "android";  m_info.m_displayNameExtra = "audiotrack";#ifdef LIMIT_TO_STEREO_AND_5POINT1_AND_7POINT1  if (Has71Support())    m_info.m_channels = AE_CH_LAYOUT_7_1;  else    m_info.m_channels = AE_CH_LAYOUT_5_1;#else  m_info.m_channels = KnownChannels;#endif  m_info.m_dataFormats.push_back(AE_FMT_S16LE);  m_sink_sampleRates.clear();  m_sink_sampleRates.insert(CJNIAudioTrack::getNativeOutputSampleRate(CJNIAudioManager::STREAM_MUSIC));  m_info.m_wantsIECPassthrough = true;  if (!CXBMCApp::IsHeadsetPlugged())  {    m_info.m_deviceType = AE_DEVTYPE_HDMI;    m_info.m_wantsIECPassthrough = false;    m_info.m_dataFormats.push_back(AE_FMT_RAW);    if (CJNIAudioFormat::ENCODING_AC3 != -1)    {      m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_AC3);      CLog::Log(LOGDEBUG, "Firmware implements AC3 RAW");    }    // EAC3 working on shield, broken on FireTV    if (CJNIAudioFormat::ENCODING_E_AC3 != -1)    {      m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_EAC3);      CLog::Log(LOGDEBUG, "Firmware implements EAC3 RAW");    }    if (CJNIAudioFormat::ENCODING_DTS != -1)    {      CLog::Log(LOGDEBUG, "Firmware implements DTS RAW");      m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTSHD_CORE);      m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTS_1024);      m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTS_2048);      m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTS_512);    }    if (aml_present() && CJNIAudioManager::GetSDKVersion() < 23)    {      // passthrough      m_info.m_wantsIECPassthrough = true;      m_sink_sampleRates.insert(44100);      m_sink_sampleRates.insert(48000);      if (HasAmlHD())      {        m_sink_sampleRates.insert(96000);        m_sink_sampleRates.insert(192000);        m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_EAC3);        m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTSHD);        m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_TRUEHD);      }    }    else    {      bool supports_192khz = false;      int test_sample[] = { 32000, 44100, 48000, 88200, 96000, 176400, 192000 };      int test_sample_sz = sizeof(test_sample) / sizeof(int);      int encoding = CJNIAudioFormat::ENCODING_PCM_16BIT;      if (CJNIAudioManager::GetSDKVersion() >= 21)        encoding = CJNIAudioFormat::ENCODING_PCM_FLOAT;      for (int i=0; i<test_sample_sz; ++i)      {        if (IsSupported(test_sample[i], CJNIAudioFormat::CHANNEL_OUT_STEREO, encoding))        {          m_sink_sampleRates.insert(test_sample[i]);          if (test_sample[i] == 192000)            supports_192khz = true;          CLog::Log(LOGDEBUG, "AESinkAUDIOTRACK - %d supported", test_sample[i]);        }      }      if (CJNIAudioManager::GetSDKVersion() >= 23)      {        if (CJNIAudioFormat::ENCODING_DTS_HD != -1)        {          CLog::Log(LOGDEBUG, "Firmware implements DTS-HD RAW");          m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_DTSHD);        }        if (CJNIAudioFormat::ENCODING_DOLBY_TRUEHD != -1)        {          CLog::Log(LOGDEBUG, "Firmware implements TrueHD RAW");          m_info.m_streamTypes.push_back(CAEStreamInfo::STREAM_TYPE_TRUEHD);        }      }      // Android v24 and backports can do real IEC API      if (CJNIAudioFormat::ENCODING_IEC61937 != -1)      {//.........这里部分代码省略.........
开发者ID:Elzevir,项目名称:xbmc,代码行数:101,


示例10: EnumerateDevicesEx

void CAESinkSNDIO::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  struct sio_hdl *hdl;  struct sio_cap cap;  if ((hdl = sio_open(SIO_DEVANY, SIO_PLAY, 0)) == nullptr)  {    CLog::Log(LOGERROR, "CAESinkSNDIO::EnumerateDevicesEx - sio_open");    return;  }  if (!sio_getcap(hdl, &cap))  {    CLog::Log(LOGERROR, "CAESinkSNDIO::EnumerateDevicesEx - sio_getcap");    return;  }  sio_close(hdl);  hdl = nullptr;  for (unsigned int i = 0; i < cap.nconf; i++)  {    CAEDeviceInfo info;    sio_cap::sio_conf conf = cap.confs[i];    info.m_deviceName = SIO_DEVANY;    info.m_displayName = "sndio";    info.m_displayNameExtra = "#" + std::to_string(i);    info.m_deviceType = AE_DEVTYPE_PCM;    info.m_wantsIECPassthrough = false;    unsigned int maxchan = 0;    for (unsigned int j = 0; j < SIO_NCHAN; j++)    {      if (conf.pchan & (1 << j))        maxchan = MAX(maxchan, cap.pchan[j]);    }    maxchan = MIN(maxchan, nitems(channelMap));    for (unsigned int j = 0; j < maxchan; j++)      info.m_channels += channelMap[j];    for (unsigned int j = 0; j < SIO_NRATE; j++)    {      if (conf.rate & (1 << j))      {        info.m_sampleRates.push_back(cap.rate[j]);      }    }    for (unsigned int j = 0; j < SIO_NENC; j++)    {      if (conf.enc & (1 << j))      {        AEDataFormat format = lookupDataFormat(cap.enc[j].bits, cap.enc[j].bps, cap.enc[j].sig, cap.enc[j].le, cap.enc[j].msb);        if (format != AE_FMT_INVALID)          info.m_dataFormats.push_back(format);      }    }    list.push_back(info);  }}
开发者ID:anaconda,项目名称:xbmc,代码行数:63,


示例11: EnumerateDevice

void CAESinkALSA::EnumerateDevice(AEDeviceInfoList &list, const std::string &device, const std::string &description, snd_config_t *config){  snd_pcm_t *pcmhandle = NULL;  if (!OpenPCMDevice(device, "", ALSA_MAX_CHANNELS, &pcmhandle, config))    return;  snd_pcm_info_t *pcminfo;  snd_pcm_info_alloca(&pcminfo);  memset(pcminfo, 0, snd_pcm_info_sizeof());  int err = snd_pcm_info(pcmhandle, pcminfo);  if (err < 0)  {    CLog::Log(LOGINFO, "CAESinkALSA - Unable to get pcm_info for /"%s/"", device.c_str());    snd_pcm_close(pcmhandle);  }  int cardNr = snd_pcm_info_get_card(pcminfo);  CAEDeviceInfo info;  info.m_deviceName = device;  info.m_deviceType = AEDeviceTypeFromName(device);  if (cardNr >= 0)  {    /* "HDA NVidia", "HDA Intel", "HDA ATI HDMI", "SB Live! 24-bit External", ... */    char *cardName;    if (snd_card_get_name(cardNr, &cardName) == 0)      info.m_displayName = cardName;    if (info.m_deviceType == AE_DEVTYPE_HDMI && info.m_displayName.size() > 5 &&        info.m_displayName.substr(info.m_displayName.size()-5) == " HDMI")    {      /* We already know this is HDMI, strip it */      info.m_displayName.erase(info.m_displayName.size()-5);    }    /* "CONEXANT Analog", "USB Audio", "HDMI 0", "ALC889 Digital" ... */    std::string pcminfoName = snd_pcm_info_get_name(pcminfo);    /*     * Filter "USB Audio", in those cases snd_card_get_name() is more     * meaningful already     */    if (pcminfoName != "USB Audio")      info.m_displayNameExtra = pcminfoName;    if (info.m_deviceType == AE_DEVTYPE_HDMI)    {      /* replace, this was likely "HDMI 0" */      info.m_displayNameExtra = "HDMI";      int dev = snd_pcm_info_get_device(pcminfo);      if (dev >= 0)      {        /* lets see if we can get ELD info */        snd_ctl_t *ctlhandle;        std::stringstream sstr;        sstr << "hw:" << cardNr;        std::string strHwName = sstr.str();        if (snd_ctl_open_lconf(&ctlhandle, strHwName.c_str(), 0, config) == 0)        {          snd_hctl_t *hctl;          if (snd_hctl_open_ctl(&hctl, ctlhandle) == 0)          {            snd_hctl_load(hctl);            bool badHDMI = false;            if (!GetELD(hctl, dev, info, badHDMI))              CLog::Log(LOGDEBUG, "CAESinkALSA - Unable to obtain ELD information for device /"%s/" (not supported by device, or kernel older than 3.2)",                        device.c_str());            /* snd_hctl_close also closes ctlhandle */            snd_hctl_close(hctl);            if (badHDMI)            {              /*                * Warn about disconnected devices, but keep them enabled                * Detection can go wrong on Intel, Nvidia and on all                * AMD (fglrx) hardware, so it is not safe to close those               * handles               */              CLog::Log(LOGDEBUG, "CAESinkALSA - HDMI device /"%s/" may be unconnected (no ELD data)", device.c_str());            }          }          else          {            snd_ctl_close(ctlhandle);          }        }      }    }    else if (info.m_deviceType == AE_DEVTYPE_IEC958)    {      /* append instead of replace, pcminfoName is useful for S/PDIF */      if (!info.m_displayNameExtra.empty())        info.m_displayNameExtra += ' ';//.........这里部分代码省略.........
开发者ID:CharlieMarshall,项目名称:xbmc,代码行数:101,


示例12: EnumerateDevicesEx

void CAESinkDirectSound::EnumerateDevicesEx(AEDeviceInfoList &deviceInfoList, bool force){  CAEDeviceInfo        deviceInfo;  IMMDeviceEnumerator* pEnumerator = NULL;  IMMDeviceCollection* pEnumDevices = NULL;  HRESULT                hr;  std::string strDD = GetDefaultDevice();  /* Windows Vista or later - supporting WASAPI device probing */  hr = CoCreateInstance(CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void**)&pEnumerator);  EXIT_ON_FAILURE(hr, __FUNCTION__": Could not allocate WASAPI device enumerator. CoCreateInstance error code: %li", hr)  UINT uiCount = 0;  hr = pEnumerator->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE, &pEnumDevices);  EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of audio endpoint enumeration failed.")  hr = pEnumDevices->GetCount(&uiCount);  EXIT_ON_FAILURE(hr, __FUNCTION__": Retrieval of audio endpoint count failed.")  for (UINT i = 0; i < uiCount; i++)  {    IMMDevice *pDevice = NULL;    IPropertyStore *pProperty = NULL;    PROPVARIANT varName;    PropVariantInit(&varName);    deviceInfo.m_channels.Reset();    deviceInfo.m_dataFormats.clear();    deviceInfo.m_sampleRates.clear();    hr = pEnumDevices->Item(i, &pDevice);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint failed.");      goto failed;    }    hr = pDevice->OpenPropertyStore(STGM_READ, &pProperty);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint properties failed.");      SAFE_RELEASE(pDevice);      goto failed;    }    hr = pProperty->GetValue(PKEY_Device_FriendlyName, &varName);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint device name failed.");      SAFE_RELEASE(pDevice);      SAFE_RELEASE(pProperty);      goto failed;    }    std::string strFriendlyName = localWideToUtf(varName.pwszVal);    PropVariantClear(&varName);    hr = pProperty->GetValue(PKEY_AudioEndpoint_GUID, &varName);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint GUID failed.");      SAFE_RELEASE(pDevice);      SAFE_RELEASE(pProperty);      goto failed;    }    std::string strDevName = localWideToUtf(varName.pwszVal);    PropVariantClear(&varName);    hr = pProperty->GetValue(PKEY_AudioEndpoint_FormFactor, &varName);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Retrieval of DirectSound endpoint form factor failed.");      SAFE_RELEASE(pDevice);      SAFE_RELEASE(pProperty);      goto failed;    }    std::string strWinDevType = winEndpoints[(EndpointFormFactor)varName.uiVal].winEndpointType;    AEDeviceType aeDeviceType = winEndpoints[(EndpointFormFactor)varName.uiVal].aeDeviceType;    PropVariantClear(&varName);    /* In shared mode Windows tells us what format the audio must be in. */    IAudioClient *pClient;    hr = pDevice->Activate(IID_IAudioClient, CLSCTX_ALL, NULL, (void**)&pClient);    if (FAILED(hr))    {      CLog::Log(LOGERROR, __FUNCTION__": Activate device failed (%s)", WASAPIErrToStr(hr));      goto failed;    }    //hr = pClient->GetMixFormat(&pwfxex);    hr = pProperty->GetValue(PKEY_AudioEngine_DeviceFormat, &varName);    if (SUCCEEDED(hr) && varName.blob.cbSize > 0)    {      WAVEFORMATEX* smpwfxex = (WAVEFORMATEX*)varName.blob.pBlobData;//.........这里部分代码省略.........
开发者ID:CaptainRewind,项目名称:xbmc,代码行数:101,


示例13: snd_lib_error_set_handler

void CAESinkALSA::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  /* ensure that ALSA has been initialized */  snd_lib_error_set_handler(sndLibErrorHandler);  if(!snd_config || force)  {    if(force)      snd_config_update_free_global();    snd_config_update();  }  snd_config_t *config;  snd_config_copy(&config, snd_config);  /* Always enumerate the default device.   * Note: If "default" is a stereo device, EnumerateDevice()   * will automatically add "@" instead to enable surroundXX mangling.   * We don't want to do that if "default" can handle multichannel   * itself (e.g. in case of a pulseaudio server). */  EnumerateDevice(list, "default", "", config);  void **hints;  if (snd_device_name_hint(-1, "pcm", &hints) < 0)  {    CLog::Log(LOGINFO, "CAESinkALSA - Unable to get a list of devices");    return;  }  std::string defaultDescription;  for (void** hint = hints; *hint != NULL; ++hint)  {    char *io = snd_device_name_get_hint(*hint, "IOID");    char *name = snd_device_name_get_hint(*hint, "NAME");    char *desc = snd_device_name_get_hint(*hint, "DESC");    if ((!io || strcmp(io, "Output") == 0) && name        && strcmp(name, "null") != 0)    {      std::string baseName = std::string(name);      baseName = baseName.substr(0, baseName.find(':'));      if (strcmp(name, "default") == 0)      {        /* added already, but lets get the description if we have one */        if (desc)          defaultDescription = desc;      }      else if (baseName == "front")      {        /* Enumerate using the surroundXX mangling */        /* do not enumerate basic "front", it is already handled         * by the default "@" entry added in the very beginning */        if (strcmp(name, "front") != 0)          EnumerateDevice(list, std::string("@") + (name+5), desc ? desc : name, config);      }      /* Do not enumerate "default", it is already enumerated above. */      /* Do not enumerate the sysdefault or surroundXX devices, those are       * always accompanied with a "front" device and it is handled above       * as "@". The below devices will be automatically used if available       * for a "@" device. */      /* Ubuntu has patched their alsa-lib so that "defaults.namehint.extended"       * defaults to "on" instead of upstream "off", causing lots of unwanted       * extra devices (many of which are not actually routed properly) to be       * found by the enumeration process. Skip them as well ("hw", "dmix",       * "plughw", "dsnoop"). */      else if (baseName != "default"            && baseName != "sysdefault"            && baseName != "surround40"            && baseName != "surround41"            && baseName != "surround50"            && baseName != "surround51"            && baseName != "surround71"            && baseName != "hw"            && baseName != "dmix"            && baseName != "plughw"            && baseName != "dsnoop")      {        EnumerateDevice(list, name, desc ? desc : name, config);      }    }    free(io);    free(name);    free(desc);  }  snd_device_name_free_hint(hints);  /* set the displayname for default device */  if (!list.empty() && list[0].m_deviceName == "default")  {    /* If we have one from a hint (DESC), use it */    if (!defaultDescription.empty())      list[0].m_displayName = defaultDescription;    /* Otherwise use the discovered name or (unlikely) "Default" */    else if (list[0].m_displayName.empty())//.........这里部分代码省略.........
开发者ID:CharlieMarshall,项目名称:xbmc,代码行数:101,


示例14: EnumerateDevicesEx

void CAESinkOSS::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  int mixerfd;  const char * mixerdev = "/dev/mixer";  if ((mixerfd = open(mixerdev, O_RDWR, 0)) == -1)  {    CLog::Log(LOGNOTICE,	  "CAESinkOSS::EnumerateDevicesEx - No OSS mixer device present: %s", mixerdev);    return;  }	#if defined(SNDCTL_SYSINFO) && defined(SNDCTL_CARDINFO)  oss_sysinfo sysinfo;  if (ioctl(mixerfd, SNDCTL_SYSINFO, &sysinfo) == -1)  {    // hardware not supported	// OSSv4 required ?    close(mixerfd);    return;  }  for (int i = 0; i < sysinfo.numcards; ++i)  {    std::stringstream devicepath;    std::stringstream devicename;    CAEDeviceInfo info;    oss_card_info cardinfo;    devicepath << "/dev/dsp" << i;    info.m_deviceName = devicepath.str();    cardinfo.card = i;    if (ioctl(mixerfd, SNDCTL_CARDINFO, &cardinfo) == -1)      break;    devicename << cardinfo.shortname << " " << cardinfo.longname;    info.m_displayName = devicename.str();    if (info.m_displayName.find("HDMI") != std::string::npos)      info.m_deviceType = AE_DEVTYPE_HDMI;    else if (info.m_displayName.find("Digital") != std::string::npos)      info.m_deviceType = AE_DEVTYPE_IEC958;    else      info.m_deviceType = AE_DEVTYPE_PCM;     oss_audioinfo ainfo;    memset(&ainfo, 0, sizeof(ainfo));    ainfo.dev = i;    if (ioctl(mixerfd, SNDCTL_AUDIOINFO, &ainfo) != -1) {#if 0      if (ainfo.oformats & AFMT_S32_LE)        info.m_dataFormats.push_back(AE_FMT_S32LE);      if (ainfo.oformats & AFMT_S16_LE)        info.m_dataFormats.push_back(AE_FMT_S16LE);#endif      for (int j = 0;        j < ainfo.max_channels && AE_CH_NULL != OSSChannelMap[j];        ++j)          info.m_channels += OSSChannelMap[j];      for (int *rate = OSSSampleRateList; *rate != 0; ++rate)        if (*rate >= ainfo.min_rate && *rate <= ainfo.max_rate)          info.m_sampleRates.push_back(*rate);    }    list.push_back(info);  }#endif  close(mixerfd);}
开发者ID:1c0n,项目名称:xbmc,代码行数:70,


示例15: EnumerateDevicesEx

void CAESinkIntelSMD::EnumerateDevicesEx(AEDeviceInfoList &list, bool force){  VERBOSE();  LoadEDID();  int maxChannels;  std::vector<AEDataFormat> formats;  std::vector<unsigned int> rates;  GetEDIDInfo(maxChannels, formats, rates);  // most likely TODO(q)- now messed up by quasar?  // And now even more messed up by Keyser :)  CAEDeviceInfo info;  info.m_channels.Reset();  info.m_dataFormats.clear();  info.m_sampleRates.clear();    info.m_deviceType =  AE_DEVTYPE_PCM;   info.m_deviceName = "All";  info.m_displayName = "All Outputs";  info.m_displayNameExtra = "HDMI/SPDIF/Analog";  info.m_channels += AE_CH_FL;  info.m_channels += AE_CH_FR;  // support the rates available on HDMI, SPDIF and Analog will already support them  std::vector<unsigned int>::const_iterator it, itEnd = rates.end();  for (it = rates.begin(); it != itEnd; ++it)    info.m_sampleRates.push_back(*it);  info.m_dataFormats.push_back(AE_FMT_S16LE);    list.push_back(info);  info.m_channels.Reset();  info.m_dataFormats.clear();  //info.m_sampleRates.clear();    info.m_deviceType =  AE_DEVTYPE_HDMI;   info.m_deviceName = "HDMI";  info.m_displayName = "HDMI";  info.m_displayNameExtra = "HDMI Output";  for (int i = 0; i < maxChannels; ++i)    info.m_channels += s_chMap[i];  //info.m_sampleRates.push_back(48000);    std::vector<AEDataFormat>::const_iterator itFormat, itFormatEnd = formats.end();  for (itFormat = formats.begin(); itFormat != itFormatEnd; ++itFormat)    info.m_dataFormats.push_back(*itFormat);  list.push_back(info);  info.m_channels.Reset();  info.m_dataFormats.clear();  info.m_sampleRates.clear();    info.m_deviceType = AE_DEVTYPE_IEC958;   info.m_deviceName = "SPDIF";  info.m_displayName = "SPDIF";  info.m_displayNameExtra = "Toslink Output";  info.m_channels += AE_CH_FL;  info.m_channels += AE_CH_FR;  //info.m_sampleRates.push_back(12000);  //info.m_sampleRates.push_back(24000);  info.m_sampleRates.push_back(32000);  info.m_sampleRates.push_back(44100);  info.m_sampleRates.push_back(48000);  info.m_sampleRates.push_back(88200);  info.m_sampleRates.push_back(96000);  info.m_sampleRates.push_back(176400);  info.m_sampleRates.push_back(192000);  info.m_dataFormats.push_back(AE_FMT_S24NE4);  info.m_dataFormats.push_back(AE_FMT_LPCM);  info.m_dataFormats.push_back(AE_FMT_S16LE);  info.m_dataFormats.push_back(AE_FMT_AC3);  info.m_dataFormats.push_back(AE_FMT_DTS);  info.m_dataFormats.push_back(AE_FMT_EAC3);  list.push_back(info);  info.m_channels.Reset();  info.m_dataFormats.clear();  info.m_sampleRates.clear();    info.m_deviceType = AE_DEVTYPE_PCM;   info.m_deviceName = "Analog";  info.m_displayName = "Analog";  info.m_displayNameExtra = "RCA Outputs";  info.m_channels += AE_CH_FL;  info.m_channels += AE_CH_FR;  //info.m_sampleRates.push_back(12000);  //info.m_sampleRates.push_back(24000);  info.m_sampleRates.push_back(32000);  info.m_sampleRates.push_back(44100);  info.m_sampleRates.push_back(48000);  info.m_sampleRates.push_back(88200);  info.m_sampleRates.push_back(96000);  info.m_sampleRates.push_back(176400);  info.m_sampleRates.push_back(192000);  info.m_dataFormats.push_back(AE_FMT_S16LE);  list.push_back(info);}
开发者ID:Jmend25,项目名称:boxeebox-xbmc,代码行数:100,



注:本文中的AEDeviceInfoList类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ AEDeviceList类代码示例
C++ ADXL362类代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。