OpenTimelineIO / toucan

Experiments with timeline rendering
Apache License 2.0
17 stars 1 forks source link

Issue with OpenImageIO Buffer when Running #24

Open ArnaudJalbert opened 4 days ago

ArnaudJalbert commented 4 days ago

Hello!

We were able to build and run toucan inside Linux(Rocky8.9). However, we are currently having issues when trying to render an OTIO timeline. It looks like an OpenImageIO buffer error is raised when a Gap or an effect is encountered by the tool. This does not seem to happen on Mac, only on Linux. Anytime a gap is encountered, this error message is printed out:

An ImageBuf was destroyed with a pending error message that was never retrieved via ImageBuf::geterror().
This was the error message: jpeg image resolution must be at least 1x1, you asked for 0x0

It looks like OpenImageIO is trying to write a frame but since it's a gap there is no data to write.

For example, when trying to write Transition.otio with command toucan-render ./data/Transiotion.otio test_toucan.jpg will yield"

0/10

1/10

2/10

3/10

4/10

5/10

An ImageBuf was destroyed with a pending error message that was never
retrieved via ImageBuf::geterror(). This was the error message:
jpeg image resolution must be at least 1x1, you asked for 0x0

6/10

An ImageBuf was destroyed with a pending error message that was never
retrieved via ImageBuf::geterror(). This was the error message:
jpeg image resolution must be at least 1x1, you asked for 0x0

7/10

An ImageBuf was destroyed with a pending error message that was never
retrieved via ImageBuf::geterror(). This was the error message:
jpeg image resolution must be at least 1x1, you asked for 0x0

8/10

An ImageBuf was destroyed with a pending error message that was never
retrieved via ImageBuf::geterror(). This was the error message:
jpeg image resolution must be at least 1x1, you asked for 0x0

9/10

An ImageBuf was destroyed with a pending error message that was never
retrieved via ImageBuf::geterror(). This was the error message:
jpeg image resolution must be at least 1x1, you asked for 0x0

Here, it looks like toucan fails when it encounters the transition effect. Running the Gap example, we get a similar error:

toucan-render '/home/ajalbert/workspace/toucan/data/Gap.otio' test/test.jpg
0/9
1/9
2/9
3/9
An ImageBuf was destroyed with a pending error message that was never
retrieved via ImageBuf::geterror(). This was the error message:
jpeg image resolution must be at least 1x1, you asked for 0x0
4/9
An ImageBuf was destroyed with a pending error message that was never
retrieved via ImageBuf::geterror(). This was the error message:
jpeg image resolution must be at least 1x1, you asked for 0x0
5/9
An ImageBuf was destroyed with a pending error message that was never
retrieved via ImageBuf::geterror(). This was the error message:
jpeg image resolution must be at least 1x1, you asked for 0x0
6/9
7/9
8/9

Would happen to have an idea why this would be happening on Linux only? Maybe there is a difference between the OpenImageIO API on Mac and on Linux?

Let me know if you could help us and if there is anything we can do!

Thank you!

darbyjohnston commented 1 day ago

Maybe it is not finding the plugins; could you try running the command with the "-v" (verbose) flag?

ArnaudJalbert commented 1 day ago

Hello @darbyjohnston ! Thanks for the tip I will try that today!

ArnaudJalbert commented 1 day ago

Hello @darbyjohnston ! When I run the command with the verbose flag it looks like the logs are indicating that the plugin is found correctly:

toucan-render -v '/home/ajalbert/Desktop/test_otio.otio' ./Desktop/test_toucan_arno/test.jpg
toucan::ImageEffectHost: Searching for plugins...
toucan::ImageEffectHost:   Search path: 
toucan::ImageEffectHost:   Search path: ../..
toucan::ImageEffectHost: Loading plugins...
toucan::ImageEffectHost: Initializing plugins...
0/249
1/249
2/249
3/249
darbyjohnston commented 23 hours ago

Sorry, I need to make the language more clear, it looks like the plugins are missing. If it finds the plugins it will print each one like this:

toucan::ImageEffectHost: Loading plugins...
toucan::ImageEffectHost:   Path: bin\toucan-render\Debug\..\..\..\plugins\Debug\toucanColorSpace.ofx
toucan::ImageEffectHost:   Path: bin\toucan-render\Debug\..\..\..\plugins\Debug\toucanDraw.ofx
toucan::ImageEffectHost:   Path: bin\toucan-render\Debug\..\..\..\plugins\Debug\toucanFilter.ofx
toucan::ImageEffectHost:   Path: bin\toucan-render\Debug\..\..\..\plugins\Debug\toucanGenerator.ofx
toucan::ImageEffectHost:   Path: bin\toucan-render\Debug\..\..\..\plugins\Debug\toucanTransform.ofx
toucan::ImageEffectHost:   Path: bin\toucan-render\Debug\..\..\..\plugins\Debug\toucanTransition.ofx
toucan::ImageEffectHost: Initializing plugins...
toucan::ImageEffectHost:   Plugin: toucan:ColorConvert
toucan::ImageEffectHost:     Context: OfxImageEffectContextFilter
toucan::ImageEffectHost:     "color_config": OfxParamTypeString
toucan::ImageEffectHost:     "context_key": OfxParamTypeString
toucan::ImageEffectHost:     "context_value": OfxParamTypeString
toucan::ImageEffectHost:     "fromspace": OfxParamTypeString
toucan::ImageEffectHost:     "premult": OfxParamTypeBoolean
toucan::ImageEffectHost:     "tospace": OfxParamTypeString

It will search for the plugins in directories relative to the binary. Do you see the "*.ofx" files in the "lib" directory?