Calling a method on an object that has no implementation of that method should generate an exception, that should be printed in the log when running inside Xcode.
Or you could override NSApplication - (void)reportException:(NSException *)exception and handle it on your own.
NSDictionary doesn't make any guarantee about order, it's a data structure that is not meant to be ordered, so it's not a surprise the result looks like that.
There is a NSJSONWritingSortedKeys option if you want things in lexicographic order when converting from NSObjects to json. If not you will have to use an NSArray.
When in doubt, check the framework header directly, you can find the one you want in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MediaToolbox.framework/Versions/A/Headers/MTProfessionalVideoWorkflow.h
From my experience, VideoToolbox dictionaries are often incomplete or wrong. Anyway, yes, H.264 and HEVC encoders and others are always hardware accelerated on iOS.
MetalCPP is simply an header wrapper around the Metal Objective-C API. It's already possible to call every Objective-C API from C++, by using Objective-C++ in a .mm file.
The AppleTV 4th doesn't have an hardware HEVC decoder, so decoding HEVC is limited to software, maybe there isn't enough CPU power to decode it when FairPlay DRM is used, or there is some arbitrary check that disables it.
NSTableCellView are reused, to avoid wasting memory.
So you will have to keep this in mind when designing the way you update the cells.
One way to is subclass NSTableCellView, add a property that contains the object doing the work, and then observe the progress of the object. This avoid having to find the right cell everything.
When a cell is reused, just swap the object and refresh the observers.
Calling a method on an object that has no implementation of that method should generate an exception, that should be printed in the log when running inside Xcode.
Or you could override NSApplication - (void)reportException:(NSException *)exception and handle it on your own.
NSDictionary doesn't make any guarantee about order, it's a data structure that is not meant to be ordered, so it's not a surprise the result looks like that.
There is a NSJSONWritingSortedKeys option if you want things in lexicographic order when converting from NSObjects to json. If not you will have to use an NSArray.
When in doubt, check the framework header directly, you can find the one you want in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/MediaToolbox.framework/Versions/A/Headers/MTProfessionalVideoWorkflow.h
From my experience, VideoToolbox dictionaries are often incomplete or wrong. Anyway, yes, H.264 and HEVC encoders and others are always hardware accelerated on iOS.
MetalCPP is simply an header wrapper around the Metal Objective-C API. It's already possible to call every Objective-C API from C++, by using Objective-C++ in a .mm file.
The AppleTV 4th doesn't have an hardware HEVC decoder, so decoding HEVC is limited to software, maybe there isn't enough CPU power to decode it when FairPlay DRM is used, or there is some arbitrary check that disables it.
NSTableCellView are reused, to avoid wasting memory.
So you will have to keep this in mind when designing the way you update the cells.
One way to is subclass NSTableCellView, add a property that contains the object doing the work, and then observe the progress of the object. This avoid having to find the right cell everything.
When a cell is reused, just swap the object and refresh the observers.