Jump to content

General architecture


hendrik
 Share

Recommended Posts

Not directly python questions, rather about overall architecture of workflows.

What kind of data is passed from node to node? Lets say I have a ExrFile input connected to prores process node. One of them is decoder, another encoder. So how exactly does image data move between them? And is there way to intercept it (the actual image data) with Python?

What is the order or operations for executing nodes when processing? Lets say I want to modify the url of some input node with python. How can I accomplish this? I can't add python node in front of input node and placing it separately or after it does not execute it before...

Edited by hendrik
Link to comment
Share on other sites

On 6/18/2019 at 6:11 PM, hendrik said:

Not directly python questions, rather about overall architecture of workflows.

What kind of data is passed from node to node? Lets say I have a ExrFile input connected to prores process node. One of them is decoder, another encoder. So how exactly does image data move between them? And is there way to intercept it (the actual image data) with Python?

What is the order or operations for executing nodes when processing? Lets say I want to modify the url of some input node with python. How can I accomplish this? I can't add python node in front of input node and placing it separately or after it does not execute it before...

the connections are  managed by a class called Cconnector (Mistika.classes.Cconnector). 

that class has a function called universalPath. it gives you a class called CuniversalPath (Mistika.classes.Mistika.CuniversalPath) wich manages file sequences.

at the moment we have not implemented a path for the metadata, so it has to be asked directly to the parent node, but we plan to add a special path for that.

At the moment, the actual pixels info can not be intercepted, The best way to manipulate the images is using Display Filters coming from Mistika Boutique. We  could export a class to access them if customers find that functionality useful. But ATM it is not possible, and that functionality will not happen before release.

 

Please, let me know if you need deeper information about any of those classes

kindly yours

Miguel

Link to comment
Share on other sites

On 6/18/2019 at 5:11 PM, hendrik said:

 And is there way to intercept it (the actual image data) with Python?

 

Not directly in Python, but you could try the following (not sure if it works for your purposes):  First create a display filter in Mistika Boutique including  a GLSL effect, which can load a user script written in glsl language. Then apply that display filter  in a workflow node.  When executing  that node the image data will be passed to your GLSL code, which could do any  transformation to the image as desired. 

 

 

 

Link to comment
Share on other sites

On 6/20/2019 at 3:53 PM, Miguel Angel Doncel said:

the connections are  managed by a class called Cconnector (Mistika.classes.Cconnector). 

that class has a function called universalPath. it gives you a class called CuniversalPath (Mistika.classes.Mistika.CuniversalPath) wich manages file sequences.

I understand that nodes pass the path, but how does the image data move between them? I guess you use the Mistika engine backend for conversions? So basically graph builds an internal project that gets rendered when queue is executed? Because decoder has to push decoded image data somewhere and encoder must pick it up, thus the part about intercepting the data flow.

This question is partly motivated by idea of adding reformatting to flow, currently I think there is no way to do it, what goes in, comes out resolution, fps etc wise..?

Link to comment
Share on other sites

yes it uses the render engine, but you can still have control:

- If you need access to pixel values, insert a GLSL effect in  a display filter from Ultima or  Boutique (several workflow nodes have a display filter parameter ).  GLSL is a programming language (an evolution of GL )specialised in image processing,  so you can not write python code to process pixel information but i you could do it in GLSL 

 

- Regarding the metadata you mention (resolution , fps, etc) a good part of it is stored in task node parameters that you can read, and also  change depending on the case.

 

Some other metadata is not accessible as node  parameters but you could still read it and  change it, as a workflows project is just a  text file, and also the rnd, clip metadata (.clp files  for rendrded clips and .lnk for source media ) and display filters, as everything else  in Mistika (there are no binary databases , just text files) . Just importing media files in Mistika Boutique will read all the significant metadata from the source media files and it will  put it in ".lnk" text files in your project in a coherent manner ( a same script will work for all formats ) , so you could get it from there.

However, for some of the cases I mention  you will also need Mistika Boutique, not only Mistika Workflows  

Edited by Javier Moreno
misspellings
Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.