syams86 / Virtual-Audio-Pipeline

A WDM Virtual Audio Cable/Device
GNU General Public License v2.0
129 stars 38 forks source link

Dependencies? #2

Open CoDEmanX opened 8 years ago

CoDEmanX commented 8 years ago

What dependencies need to be installed to compile this project?

portcls.h is definitely missing, but it looks like there are many more headers required.

j1and1 commented 8 years ago

I'm currently trying to compile this project myselve..... portcls header is included in WDK (Windows driver development kit) which you need to download from microsofts page... Then you will need to update include paths and bunch of other settings so it atleasts gets to linking process......

Good Luck!

Palbosa commented 7 years ago

Hello, have you been able to compile this ?

j1and1 commented 7 years ago

@Palbosa Yeah I have managed to compile this with Visual Studio 2015 for Windows 10 x64 and x86!

I just haven't tested it on the older platforms for now and the driver is not signed so windows won't load it if signature check is enabled.... When I will get to my home PC I will do a pull request and try to commit my changes.

Palbosa commented 7 years ago

@j1and1 waw that could be awesome thank you !

CoDEmanX commented 7 years ago

Okay, so I converted the solution to VS2015 and tried to compile. It doesn't find portscls.h, so I tried to add C:\Program Files (x86)\Windows Kits\10\Include\ to the include dir list, but that didn't work. I eventually added the following to the additional include file setting:

C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\km; C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\km\crt; C:\Program Files (x86)\Windows Kits\8.1\Include\shared;

Then there are no more "no such file or directory" errors caused by missing includes. But instead, I get another bunch of fatal errors during compilation (freely translated):

Error C4430 Missing type specifier - int is assumed. Note: default-int is not supported in C++ Error C2259 "CMiniportWaveCyclicStream": instance of abstract class cannot be created Error C3861 "KeQueryInterruptTime": identifier could not be found Error C2509 "AllocateBuffer": member function was not declared in "CMiniportWaveCyclicStream"

@j1and1: How the hell were you able to compile it?!

Palbosa commented 7 years ago

@CoDEmanX I'm exactly at the same point as you, let's hope @j1and1 can upload his version when he come back..

Btw, what are you trying to do with this project? What do you have in mind?

CoDEmanX commented 7 years ago

I want to pass audio from some media player through a virtual audio cable and duplicate it to the speakers device. That way, I can listen to the music at 100% volume using the speakers, but mix in the audio at e.g. 30% volume into something else using the virtual audio cable (think live streaming).

j1and1 commented 7 years ago

@CoDEmanX @Palbosa Hey guys! I had to fork this repo because it appears that this repo can be only modified by contributors....

So I have forked and commited my changes..... I also compiled drivers for Win10 (x64/x86) and added them to the repo..... Note: to install the drivers you need to disable "driver signature check" because the driver is not signed.....

It would be awesome if you try to compile it yourselves so I know that it compiles on all machines not only on mine :)

Let me know if you have any trouble! Sorry for all the typos in the text :)

P.S the build does not copy the driver to "bin/x86/win10" atleast for now

Palbosa commented 7 years ago

@j1and1

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

THANK YOU !

I will not have time right now to look more into it, i just wanted to check if we could compile :)

j1and1 commented 7 years ago

@Palbosa Good to hear this! You're welcome!

CoDEmanX commented 7 years ago

Cloned your fork and tried to compile, but it complains:

An SDK corresponding to WDK version '8.1' was not found. Please install the SDK before building. VirtualAudioPipeline C:\Program Files (x86)\Windows Kits\10\build\WindowsDriver.common.targets 185

I have WDK 10 installed, which apparently comes with 8.1 included. Now installing Windows SDK as well to see if it helps...

j1and1 commented 7 years ago

@CoDEmanX Have you installed Win8.1 SDK on your machine which is included in VS2015 install?

Palbosa commented 7 years ago

@CoDEmanX Normally, in the options of the project, you can choose with which version compile, if you choose 8.1 it will use WDK 8.1, but if you choose 10 it will use WDK 10.

@j1and1 I had to make some modifications so your fork will compile with for windows 64 too.. I barely copied the ones you made for the 32 and pasted them in the 64.. Maybe i can or you can update the vcproj so other peoples could compile directly too

CoDEmanX commented 7 years ago

It compiled now that I installed Windows SDK 10!

I enabled the developer mode in the Windows options as I hoped that it would allow to install unsigned drivers, but that's not the case. I believe it does allow arbitrarily signed drivers (i.e. self-signed), but it still requires some sort of certificate. Devcon failed when I tried to install the driver. Installing the .inf directly raised an "can't add program to memory" error.

So I went to the boot options and disabled the driver signature checking. Devcon did let me install the driver now, although a popup came up later that said that an unsigned driver was blocked. The Sonics virtual devices did show up nonetheless!

Unfortunately, Virtual Audio Pipeline seems to have the same issue like Virtual Audio Cable... If I route e.g. Spotify to Sonics audio device and duplicate it to my speaker device (using audio-router), then there's no audio signal on the latter. If I route it to the speakers and duplicate it to the Sonics device, then there's a signal on both. There are other Virtual Audio device programs that do support the duplication in the former case.

Do you know how to at least self-sign the driver so that one doesn't have to disable the signature check?

@Palbosa: I compiled Release x64 without issues?!

Palbosa commented 7 years ago

@CoDEmanX Do you think it's possible to modify Virtual Audio Pipeline so he can directly route the audio incoming to your speaker device ? Without using another external software?

I have not tested the installation on the same machine yet, i used the remote debugging and a virtual machine to test and deploy, but i will if i got the time.

That's weird for the x64, on my side i hat to modify some options to be able to compile.

CoDEmanX commented 7 years ago

You mean like a combination of VAP and audio-router? Well, you would basically have to merge the code of both projects, and yet they would kind of co-exist side by side I guess. VAP really just adds a virtual audio device, but doesn't re-route audio. I do not know the code of audio-router, but I don't think that it requires a custom driver and there's definitely no additional virtual audio device showing in your system when you use it.

I would love a free, open source software very much, which would let you route audio to your liking, including virtual devices which it would also create on-the-fly in an ideal world. Then you could do things like record 7.1 audio, play another video with 5.1 audio on your speakers and at the same time down-mix it to stereo and stream that online :dancers:

j1and1 commented 7 years ago

Hey guys sorry I wasn't online for a couple of days!

@Palbosa Was there problem compiling in Debug(x64) or Release(x64)? I'm not sure that configs are correct for the DEBUG(x64) because I forgot to test it, Release(x64) should compile right out of the box.

Palbosa commented 7 years ago

@j1and1 indeed i was in debug mode ^^ Release worked at first try. Tell me something, do you have enough knowledge on this kind of project to make some modification to the core, or are you an "amateur" like me? :-)

j1and1 commented 7 years ago

@Palbosa Ok.... I will fix the debug configuration for my fork sometime this week... And no I'm afraid I'm at the "amateur" level when it comes to drivers :-D although it would be nice to figure out some kinks and glitches that I stumbled upon regarding bitrate and SampleRate differences.

yugeshav commented 4 years ago

Okay, so I converted the solution to VS2015 and tried to compile. It doesn't find portscls.h, so I tried to add C:\Program Files (x86)\Windows Kits\10\Include\ to the include dir list, but that didn't work. I eventually added the following to the additional include file setting:

C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\km; C:\Program Files (x86)\Windows Kits\10\Include\10.0.14393.0\km\crt; C:\Program Files (x86)\Windows Kits\8.1\Include\shared;

Then there are no more "no such file or directory" errors caused by missing includes. But instead, I get another bunch of fatal errors during compilation (freely translated):

Error C4430 Missing type specifier - int is assumed. Note: default-int is not supported in C++ Error C2259 "CMiniportWaveCyclicStream": instance of abstract class cannot be created Error C3861 "KeQueryInterruptTime": identifier could not be found Error C2509 "AllocateBuffer": member function was not declared in "CMiniportWaveCyclicStream"

@j1and1: How the hell were you able to compile it?!

I also got the same, can you please suggest me the solution.