TouchDesigner 099 OSX ProRes codec?

Hello,

I expected the TouchDesigner Mac version would not encode ProRes codec yet, but i thought at lease it decodes the Prores.
but it seems like it’s not able to play a .mov file made with Prores codec. will there be a ProRes codec support in the future? or am I missing something?

It looks like Touch on Mac still uses ffmpeg (libavcodec). That means it can support ProRes (as could the Windows version) but it’s a reverse engineered effort with questionable licensing (although I’ve never heard of Apple going for anyone).

So - ffmpeg is open source. You have a right to recompile your own version and switch it out, and Derivative responsibility is to allow you to do that (by not hiding the library or making it not changeable). I assume - since they are great guys - they have followed that, so we as a community can make our own.

Since I have the ‘unique pleasure’ :confused: of compiling ffmpeg for Mac fairly often, if someone from Derivative points me to the build settings I will happily make a community version that supports ProRes.

The 088 wiki for ffmpeg had a link to build scripts. I don’t see that for 099 or Mac currently.

Bruce

Yep, you are entirely correct Bruce on everything here. We aren’t supporting it yet due to the unsure licensing rules Apple imposes on it. It’s possible we could add a fallback that uses Apple’s native prores playback library, but that isn’t planned in the short term right now. Our open source FFmpeg information is here:
derivative.ca/wiki099/index … tle=FFmpeg

I’ll mention we will be moving to a custom branch of the release/3.1 branch soon though, so you may need to recompile again.

But there’s a reasonable chance that a current build would work? I can probably step on branches/releases if needed.

On the build - I see that info, but nothing extra? The build line or script? No changes? On my Mac builds I usually have to change to a loader path so the framework is found - do you have another trick for that?

Bruce

You would want to use that branch for sure, other branches would likely not work due to changes in the sizes of structures in the library.
You can get our build line script by checking the
ffmpeg --version
For the executable we include. For paths, you can use otool -L to see what we have set our current dylibs to be, and make yours the same using install_name_tool

Huh.

On Mac, there’s no ffmpeg executable, just dylibs, and oddly, otool shows no links between TouchDesigner and the libav stuff.

Have to come back to this later anyway - but I will make versions with more codecs, no problem.

Bruce

Ah guess we are missing that, I’ll see if I can dig it up, but it’s mostly just disabling codecs that I feel may have licensing issues, and enabling other ones that requires external libraries.

There wouldn’t be any link between the ffmpeg dylibs -> TD, but rather the other way around (libLIBAV.dylib in particular)

10 points for Bruce&Malcolm, lovely thread this is

Agreed. Nice thread. It would be great to get a step by step guide, that’s a little easier to follow, for those of us who perhaps aren’t familiar with compiling, of how to enable ProRes playback in Touch Designer - PC and Mac.

I have to say, ffmpeg is not a good starter project if you’re not using to compiling. It’s a bear.

But with the info from Malcolm, we can probably make a fork with the setup so a few of us can contribute to it.

Bruce

see here which forks of ffmpeg touchdesigner uses in 099 and before: derivative.ca/wiki099/index.php?title=FFmpeg

it would be great if we manage to also enable DXV codec in the custom build of ffmpeg (for all the Resolume users with a big DXV library)

github.com/FFmpeg/FFmpeg/blob/m … odec/dxv.c

1 Like

I can confirm that current versions of ffmpeg do have dxv, but it seems that the current version of DXV (DXV 3) available has features that aren’t supported:

[dxv @ 0x1049a6800] Tag 0x59434736 is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.

That’s with a current version of ffmpeg from GIT - definitely more current than the one Derivative has used.

If someone wants to send me a file encoded in a previous dxv version, I’ll retest.

NOTE: this is not tested in TouchDesigner, just using my ffmpeg compilation.

Bruce

The issue with doing this though is that you aren’t going to have high performance playback of DXV. FFmpeg is going to be doing the texture decompression instead of the GPU doing it, which I think is actually pretty slow if done on the CPU. So I’m not sure if this is a good path for people to take…

I’m actually considering forcing DXV support completely off, even if the FFmpeg version supports it. It just seems like a trap for people to fall into…

I was looking for a way to encode h254 using Intel Quick Sync
But i see that it is already enabled in your ffmpeg version “–enable-encoder=h264_qsv”
is there any reason why it is not an option in the MovieFileOut TOP?

I’ve always assumed that no prores support is due to licensing issues, but in 2021, just about every other pro video program has found (what i would assume to be a legal) way of supporting it on mac or windows… Resolume, MadMapper, Adobe Suite, Notch, Watchout etc.

Is it possible that the decision not to support prores was made years ago when the license was more restrictive, and that this could be re-investigated to see if it may be viable in the future?

2 Likes

@drmbt +1
was just about to ask the same question, glad I used the search :wink:

seems there was more talk in the past about ProRes having funky licencing than now…

It would seem that actually only Adobe is using an authorized/certified ProRes support from that list of applications you mention. Apple ProRes and ProRes RAW Authorized Products - Apple Support
The others are classified by Apple as ‘unauthorized’, not that it means illegal, but its not clear in fact what it means.
We will look around again, its been difficult to get any feedback from Apple.

2 Likes

ah… Didn’t see this list before.
My assuption was Unreal and Unity >>must be<< supported in an ‘unofficial’ way.

The feedback from Apple is a big downer tho… wondering if there’s a difference in licencing ProRes for MacOS and Windows…

Hi Malcolm,

Maybe I missed it in the chat here. Why not implement a licensed or otherwise Apple “approved” ProRes implementation? While HAP is great ProRes still seems to be the standard delivery format in the production world and being able to work with ProRes files directly without having to transcode would open up efficiencies for a lot of work flows.