Thank you for all of that information Greg and for answering each query individually.
That exception is being thrown because isMatchingFrameRateSupported is reporting false for your external display, but your AVCaptureExternalDisplayConfiguration specified true for shouldMatchFrameRate.
What determines 'isMatchingFrameRateSupported'? I use the same USB Hub and External Display on a MacBook Pro and I can go to Settings -> Displays and change the resolution and frame rate. I tested 1920 x 1080 at 60fps, 50fps, 30fps and 25fps and they all work. When I use that exact same hardware on an M4 iPad Pro it returns 'false' for 'isMatchingFrameRateSupported', presumably iPadOS is limiting this?
Great to know that I can use CAMetalLayer for this purpose. That would mean it could work for a Metal Backed Live Video Feed if I can get the display to work as per the above.
Though I think given the limitation of this functionality to AVCaptureDevice and that it wouldn't be respected when the user plays back video from within the app it may not be worth implementing.
I feel like it's about time iPadOS opened up frame rate selection for external displays to the user. It's getting more and more like a Desktop OS each year and many people use their iPad with an external display. Sure, have it default to what iPadOS thinks is best, but having an option in settings to set the resolution and frame rate doesn't feel like that big of an ask for users that know what they need for their specific use case.
Topic:
Media Technologies
SubTopic:
Video
Tags: