Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unbind plugin from assistant #4

Closed
stang2019 opened this issue May 17, 2019 · 5 comments
Closed

Unbind plugin from assistant #4

stang2019 opened this issue May 17, 2019 · 5 comments

Comments

@stang2019
Copy link

Is there anyway to untie with DPA? if the virualcam doesn't need access hardware, the kext will not be necessary, I also don't want DPA, according the document, looks like the DP plugin shall work with it self without DPA and kext (I use TCP/IP for the source of the video frames).
If you could provide pure working plugin which could find by app (WebRTC, Zoom etc), it will be great!!!!

@lvsti
Copy link
Owner

lvsti commented May 17, 2019

If you don't want/have to share state between plugin instances then there is indeed no need for the DPA. As for how to unbind, the code is pretty complicated at places as you can see, my suggestion for you would be to start by looking at the calls to DPA::Sample::... on the plugin side and simply replace them with whatever fits your needs. I'm not planning to implement this because of lack of time and personal interest but feel free to fork the repo and change it for yourself as you like.

@stang2019
Copy link
Author

Thank you sir, that's really quick response. In the SDK plugin export (AppleCMIODPSampleNewPlugIn), looks like almost every line of code has assistant involved, do we just need:
CMIO::DP::Sample::PlugIn* plugIn = new CMIO::DP::Sample::PlugIn(requestedTypeUUID);
plugIn->Retain();
return plugIn->GetInterface();
BTW, does this method works with Mojave? I tried several prebuild tarball, none of them shows on Zoom, Photo Booth, WebRtc etc, but your tool can see something.

Great appreciate your response.
-Steven

@lvsti
Copy link
Owner

lvsti commented May 18, 2019

Right, in AppleCMIODPSampleNewPlugIn you can throw out all the mach_* and bootstrap_* stuff.
I believe the plugin should work just fine* on Mojave as well, but make sure that the device/stream properties whose values were provided by the assistant are set to something meaningful, otherwise CMIO may reject it.

*Caveat: notarized apps with hardened runtime which didn't explicitly opt out from the "library validation" feature WILL NOT LOAD 3rd party code, CMIO plugins included. Since Photo Booth and FaceTime already ship hardened on Mojave, your plugin may be discovered by them but they will refuse to use it. Similarly, if e.g. Zoom decides to release an update in which they ship a notarized, hardened app, then that's the end of the line for your plugin. I've already tried to get information about this from Apple but they refused to provide any insights on the future of plugins. Hopefully the upcoming WWDC will clarify some bits.

@stang2019
Copy link
Author

Thanks a lot, that's very helpful.

@malikAr
Copy link

malikAr commented Sep 27, 2019

Hi stang,
Have got success in unbinding assistant and kext from plugin.

I am stuck in that.

Any help is thankable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants