global h, slidy boi starts where it should, name

This commit is contained in:
Hane 2023-02-10 22:48:46 +01:00
commit e61c600019
10 changed files with 77 additions and 16 deletions

View file

@ -3,12 +3,35 @@
Endpoint::Endpoint(IMMDevice* ep){
this->endpoint = ep;
if(FAILED(endpoint->Activate(IID_IAudioEndpointVolume, CLSCTX_ALL, NULL, (void**)&endpointVolume))) { log_debugcpp("si"); };
//Obtaining friendly name: IPropertyStore creates PROPVARIANT per field
// hr = endpointPtr->GetId(&endpointID);
endpoint->OpenPropertyStore(STGM_READ, &properties);
PROPVARIANT pv;
properties->GetValue(PKEY_Device_FriendlyName , &pv);
friendlyName = pv.pwszVal;
}
LPWSTR Endpoint::getName(){
return friendlyName;
}
float Endpoint::getVolume(){
float volume;
if(FAILED(endpointVolume->GetMasterVolumeLevelScalar(&volume))) { log_debugcpp("si");}
return volume;
}
void Endpoint::setVolume(float volume) {
if(FAILED(endpointVolume->SetMasterVolumeLevelScalar(volume, NULL))) { log_debugcpp("si"); };
}
//Endpoint::~Endpoint(){
// free(friendlyName);
// properties->Release();
// endpointVolume->Release();
// endpoint->Release();
//}
void Overseer::initCOMLibrary(){
if(FAILED(CoInitializeEx(NULL, COINIT_APARTMENTTHREADED))) { log_debugcpp("si"); };
@ -67,6 +90,13 @@ std::vector<Endpoint*> Overseer::getPlaybackEndpoints() {
return playbackDevices;
}
//Overseer::~Overseer(){
// deviceEnumerator->Release();
// for(unsigned long long i = 0; i < playbackDevices.size(); i++){
//delete(playbackDevices.at(i));
//}
//}
//int Overseer::getCaptureEndpoints(std::vector<Endpoint*> *captureEndpoints);
//IMMDeviceEnumerator** Overseer::setOrigin();

View file

@ -1,9 +1,7 @@
#pragma once
#define WIN32_LEAN_AND_MEAN
#define log_debugcpp(str) do { \
std::cout << "[DEBUG]" << "(" << __FILE__ << ":" << __LINE__ << "): " << str << std::endl; \
} while (0)
#include "global.h"
#include <vector>
#include <iostream>
@ -25,11 +23,16 @@ class Endpoint {
public:
Endpoint(IMMDevice* endpoint);
void setVolume(float volume);
float getVolume();
LPWSTR getName();
//~Endpoint();
private:
IMMDevice* endpoint;
IAudioEndpointVolume *endpointVolume;
IAudioEndpointVolume *endpointVolume ;
IPropertyStore *properties;
LPWSTR friendlyName;
// LPWSTR endpointID = NULL;
};
class Overseer {
@ -43,6 +46,7 @@ class Overseer {
//int getDefaultCaptureEndpoint(Endpoint** defaultEndpoint);
//int getCaptureEndpoints(std::vector<Endpoint*> *captureEndpoints);
//IMMDeviceEnumerator** setOrigin();
//~Overseer();
private:
unsigned int numPlaybackEndpoints;

View file

@ -109,9 +109,13 @@ void PrintEndpointNames() {
hr = endpointPtr->Activate(IID_IAudioEndpointVolume, CLSCTX_ALL, NULL, (void**)&endpointVolumePtr);
EXIT_ON_ERROR(hr)
hr = endpointVolumePtr->SetMasterVolumeLevelScalar(0.4f, NULL);
//hr = endpointVolumePtr->SetMasterVolumeLevelScalar(0.4f, NULL);
//EXIT_ON_ERROR(hr);
float volume;
hr = endpointVolumePtr->GetMasterVolumeLevelScalar(&volume);
EXIT_ON_ERROR(hr);
printf("Endpoint %d: \"%S\" volume: (%f)\n", 0, varName.pwszVal, volume);
//Registramos el gestor de sesiones para conseguir el handle que da el handle de sesiones a nivel informativo
//Y justo despues, el que da control a nivel sonoro xdddddddddddddddddddddddddddddddddddddddddddddd
hr = endpointPtr->Activate(__uuidof(IAudioSessionManager2), CLSCTX_ALL, NULL, (void**) &sessionManagerPtr);
@ -159,7 +163,7 @@ void PrintEndpointNames() {
SAFE_RELEASE(endpointVolumePtr);
SAFE_RELEASE(sessionManagerPtr);
SAFE_RELEASE(sessionEnumeratorPtr);
SAFE_RELEASE(sessionControlPtr);
//SAFE_RELEASE(sessionControlPtr);
SAFE_RELEASE(sessionControl2Ptr);
SAFE_RELEASE(sessionVolumePtr);
/*