Build a Delphi FireMonkey component that provides a way to play a video file in macOS while sending the bits for each video frame to a callback function. This component must provide a way to open a video file as well as provide basic transport functions like play, pause, stop, and stream position. Audio must also be supported with the basic functions of setting the audio level and mute.
Each video frame must be provided through a callback function passing it a TBitmapSurface (FMX). This must be passed at the properly scheduled time so that the video is synchronized with the audio.
This component must be built with Delphi with calls into the native macOS API so that it only uses the media components provided by macOS. It is acceptable to build part of this solution using Object C and/or Swift if it will help in building the interface between Delphi and the OS. If so, the complete XCode project must also be included.
This component should not do any video decoding itself nor should it use any third-party tool either. This is to avoid patent infringements. All video and audio decoding must take place using native OS components.
For clarification: this component does not display video on its own. All video frames are provided thought a callback function as data in a TBitmapSurface.