-
Notifications
You must be signed in to change notification settings - Fork 121
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
Clip and Image Metadata #142
Comments
Some thoughts on this:
In order to best handle point 2 above, I propose the API is handled with a new OfxMetadataSuiteV1. The workflow would be to first get a property set from either a Clip or an Image using the existing suites for doing so, then obtain the metadata property set from that, using metadataGet(). This is likely to be handle around some possibly-expensive implementation details, so must be released with metadataRelease(). Property keys can be enumerated with metadataEnumerate().
|
Some standard metadata:
Vendor-specific metadata keys should be prefixed with the vendor ID (ie. com.borisfx) |
Some additional useful metadata:
I'm strongly in favor of this feature, the media file path and accurate timestamp are essential for my use case and OpenFX currenty doesn't provide them |
On Sat, 10 Feb 2024 at 22:01, Paul Miller ***@***.***> wrote:
Some standard metadata:
- media file path (as a URL)
Should we define how to represent a per-clip path for file-per-frame
(sequence) media? printf-style ("%07d" with %% escaping)? ####### style?
- source frame number
- source timecode (OTIO uses HH:MM:SS;FRAME or HH:MM:SS.MS)
Where ";FRAME" implies drop-frame, presumably, and ":FRAME" non-drop?
Vendor-specific metadata keys should be prefixed with the vendor ID (ie.
com.borisfx)
Where "vendor-specific" means everything that's not defined in the suite
header file?
File-format-specific metadata should be prefixed with the file format ID
if there is one. (ie. openexr)
File-format prefixes are unlikely to be possible in my host I fear.
Do we need to define how OpenEXR metadata types with non-obvious mapping to
OFX string values are to be handled (e.g. chromaticities, box2i, m44f etc)?
Do we need to define what the prefixes are for some well-known file
formats? Or is it just "copy Nuke"?
There's ambiguity between what's vendor-specific and what's
file-format-specific too, unless we do say "if it's at all different from
Nuke then it's vendor-specific"?
|
I was thinking for frame meta-data we would pack chunks of meta-data inside a named group of data - then EXR or CameraX "values" can just be inside that without prefixes... group "EXR" { list... } - easier to search if you are looking just for something in particular then scanning all |
@revisionfx I'm not sure what you're getting at with your grouping idea. Are you thinking the actual metadata values would be a JSON string or something, represented as a single OpenFX string property? OpenFX doesn't have hierarchy/groups for properties otherwise. |
Phil used the example of OpenEXR |
DO you need a PropReason for change so frame meta-data change upstream if a node is a client get rerender? |
We agreed that metadata property keys should be prefixed with 'where it came from', and define a common set with the ofx prefix. |
In order to support "unknown/binary blob" types of metadata we should add a try "raw data" type to PropertSet and while we're at it, parameter support. I'll work up a separate issue for that. |
Just as a side-note, I had implemented this in openfx host support 3 years back, with also support for time varying metadata.
|
Well, this is interesting! It pretty much handles everything we have been discussing recently regarding Metadata as well. |
One key design difference I see is this API requires loaders to "create" properties, where the new proposal is inteded to be merely a wrapper around potentially-lazily-evaluated metadata. It would be difficult for Silhouette to have arbitrary plugins "create" their own properties, as internally these properties don't really "exist" in a list with a length, per-se. |
My use case was:
Temporal/View variant was added too, but since OpenFX doesn't have the concept of view out of the box, this should be stripped off. |
@fxtech This is lazily evaluated as long as the host doesn't call the action or just calls it with the desired metadata keys |
OK I didn't see you had added an Action. That's an interesting approach. |
The action (especially the recursive signaling of downstream effects) may be a bit of work for hosts to implement. Can we get to a "MVP" version of this without that feature, i.e. where only the host may specify metadata and it's read-only from the plugin side? |
Alexandre's implementation seems pretty robust, but for what we're trying to achieve in terms of simplicity I propose we go forward with my proposal for now. Would like to hear from others though because I am definitely not one to prefer reinventing the wheel. |
@fxtech - just refreshing my memory on this.
|
Just to be clear following today's conversation. |
I have this so far:
Proposed new methods in OfxPropertySuiteV2:
|
Open Effects Proposal for Standard Change
Please read the contribution guidelines first.
Standard Change Workflow
standard change
tagfeature/PROPOSAL-NAME
branch)maintainer merges PR to master which closes PR and issue
Requirements for accepting a standard change:
Summary
This proposal aims to add metadata read/write capability to plugins.
Motivation
Some plugins want to be able to get the file path and frame number of the media that sourced the current clip and/or frame.
Other plugins may want to query information about the lens used, or the stack of previous effects applied. The ability to add metadata to the output may also be useful.
Problem
Currently there is no way to query anything about input images to an effect came from, such as the name or path of the source clip.
Impact
This is a new feature, embodied as a new set of properties. It dos not affect any existing suites or properties.
This feature is entirely optional. A host that does not implement it will simply appear to have no meta data to an effect. There is no requirement for an effect to make use of it at all.
Documentation Impact
The documentation for this feature could be embodied entirely in the header file additions.
Stakeholders
Plugin writers should benefit the most from this change.
Discussion
The text was updated successfully, but these errors were encountered: