Forum Replies Created
-
AuthorPosts
-
bangnoise
KeymasterYo
This is an effect of the recording stage.
For most codecs the frames are encoded as 4:2:2 Y’CbCr which involves chroma subsampling. We use a shader for the pixel-format conversion which I’m working to improve at the moment – the current release is not perfect. If you can link to an image of a single frame or e-mail me one I can include it in our tests. I can also send you a new version of Recorder in a few days which it would be good to get feedback on – bangnoise@gmail.com
If you have them installed, you could see what results you get with Apple ProRes 4:4:4:4 or Sheer RGB[A] 8bf which will both take different paths. Sheer RGB[A] 8bf should be a perfect match for the source. You can download a trial of the codec at http://www.bitjazz.com/en/products/sheervideo/
bangnoise
KeymasterFixed download at
sorry about that
bangnoise
KeymasterWe’ve just put a download up. It includes some fixes made today. Let us know how you get on.
The source is now on svn as well.
bangnoise
KeymasterBrian Gibson who does most of the Unity work has an update – drop him a line to get hold of it.
bangnoise
KeymasterI’ve just committed changes to ofxSyphonClient to get the server and app name for a client.
If you want to present a list of available servers, that’s beyond the current ofx functionality. Syphon.framework is hopefully well enough documented (with example code) that you could use it directly, even if you’re not familiar with Objective C. The source for Simple Client comes with the SDK.
bangnoise
KeymasterI’ve just replaced the download with a version which hopefully works for you. Yes copy and paste the UID into the appropriate input for the v002 Movie Player patch in Quartz Composer.
bangnoise
KeymasterIf you’re using Beta 4 of the movie player, you can set the UID of the device to be used for output. I’ve just thrown together a basic app which will give you the UID to paste in:
bangnoise
KeymasterCool, I haven’t looked into pixel-buffer access much.
Having iGlasses be a useful server would be great – publishing your frames the right way up shouldn’t be too difficult. SyphonServer is Key-Value-Observable for hasClients, so if you register for notifications for that using the standard KVO mechanism you could switch on/off the camera whenever that toggles.
I think a lot of people would be excited to see a Syphon-to-video-device bridge.
bangnoise
KeymasterCool – glad it’s working. It seems things don’t suffer too much from your locking the surface for buffer access, which is good to see.
You could consider passing in SyphonServerOptionIsPrivate when you create servers as your servers aren’t particularly useful other than to you (generally upside down, require the fake video device to be active). You’d then have to pass the serverDescription dictionary between processes – you presumably already have a communication channel you could send that through.
Anyway, good to hear Syphon helped!
bangnoise
Keymaster1. Great yep.
2. Simple Client uses Cocoa bindings for the interface, so descriptions is an array of one object which has come from the array of all servers from an instance of SyphonServerDirectory selected via the menu in the interface. Which isn’t so “Simple” – [[SyphonServerDirectory sharedDirectory] servers] will give you an array of all servers.
3. GL: Won’t Processing just let you hand out the original texture? What’s the point of the FBO stage? Pixel buffers: unfortunately glGetTexImage is allowed to fail if it can’t be bothered with the pixel transfer – and it seems it never can when using an IOSurface – you have to draw to an FBO with a texture attached then glGetTexImage from that texture.
4. Make sure you have an NSAutoreleasePool in place for EVERY call into Cocoa code. If you set a breakpoint on __NSAutoreleaseNoPool() you should be able to see where it’s missing.
bangnoise
KeymasterLooks like there’s an embedded copy of the Syphon.framework in the Processing project? It’s probably beta 1, which has an issue with server discovery on Lion.
Ideally don’t embed a copy of the framework but set things up to build a version from the project in SVN root instead, so it’s always up to date. For OpenFrameworks the directory structure on SVN does not reflect the distributed directory structure – instead there’s a project to build the framework and lay out the directory structure for distribution. Maybe more than you can be bothered with for now, but definitely something that should happen for Processing at some stage…
If you want to just get things going for now, grab a built copy of the framework from the SDK at http://code.google.com/p/syphon-framework/downloads/list
bangnoise
KeymasterExcellent! So many thanks for the effort.
bangnoise
KeymasterI’m assuming you get a nil value for img which is why everything it returns is nil?
I’d consider my point 4 and not using SyphonNameboundClient – it’s adding a layer of complication you probably don’t need. Perhaps you call its methods to set the name and app-name every render cycle, causing it to recreate the client every loop? That would mean the client never exists long enough to receive a frame.
bangnoise
KeymasterYo – There is nothing else to install – Syphon is built in to Modul8. I’d try contacting Garagecube for support. Sorry we can’t be more use.
bangnoise
KeymasterGreat – thanks so much for giving this more time.
1. Zero-values: Are you giving up after your first try? Keep trying – a new SyphonClient doesn’t receive frames instantly.
2. A leak. newFrameImageForContext: returns a retained SyphonImage, you need to release it
3. In fact you do need to retain the image such that it lasts as long as anyone might be using the values in the dictionary, because if it isn’t retained the SyphonClient is free to destroy the underlying texture. If you were just passing the dictionary as a NSDictionary I’d say stuff the SyphonImage in the dictionary as well, but I don’t know what the coercion process does. Are arbitrary NSObject subclasses retained after coercion, or only classes JNF knows how to coerce? … It might actually be simpler to write a Java wrapper class for SyphonImage.
4. This conversation may have been had before, but are you sure you want to be wrapping SyphonNameboundClient and not simply SyphonClient? Sorry if I’m repeating myself!
Anyway thanks so much for all this – I look forward to taking a proper look soon.
February 13, 2012 at 4:35 am in reply to: simple /stupid question processing & resolume with syphon #5652bangnoise
KeymasterCan’t decide if you’re a spam-bot James – could you repost in a new thread and ask a clear question if not?
bangnoise
KeymasterIt looks like it’s not finding Syphon.framework beside the library at
/Development/Workspaces/Proc11/SyphonTest/lib/user/Syphon/libJSyphon.jnilib – do you have Syphon.framework in the same directory?bangnoise
KeymasterJSyphon, the Java JNI implementation, needs work to finish the client so it dispenses frames – this will require work in JSyphonImage to wrap SyphonImage and JSyphonClient to complete the wrapping of SyphonClient – so look at those files as a place to start. JNI isn’t particularly joyful to work with in my limited experience, so uh… good luck!
bangnoise
KeymasterAwesome, thanks!
bangnoise
Keymastergreat yep, glad you’ve come up with a solution
-
AuthorPosts