TARGET = qavfmediaplayer #DEFINES += QT_DEBUG_AVF # Avoid clash with a variable named `slots' in a Quartz header CONFIG += no_keywords QT += multimedia-private network LIBS += -framework CoreMedia -framework CoreVideo -framework QuartzCore QMAKE_USE += avfoundation HEADERS += \ avfmediaplayercontrol.h \ avfmediaplayermetadatacontrol.h \ avfmediaplayerservice.h \ avfmediaplayersession.h \ avfmediaplayerserviceplugin.h \ avfvideooutput.h \ avfvideowindowcontrol.h OBJECTIVE_SOURCES += \ avfmediaplayercontrol.mm \ avfmediaplayermetadatacontrol.mm \ avfmediaplayerservice.mm \ avfmediaplayerserviceplugin.mm \ avfmediaplayersession.mm \ avfvideooutput.mm \ avfvideowindowcontrol.mm qtHaveModule(widgets) { QT += multimediawidgets-private HEADERS += \ avfvideowidgetcontrol.h \ avfvideowidget.h OBJECTIVE_SOURCES += \ avfvideowidgetcontrol.mm \ avfvideowidget.mm } ios|tvos { qtConfig(opengl) { HEADERS += \ avfvideoframerenderer_ios.h \ avfvideorenderercontrol.h \ avfdisplaylink.h OBJECTIVE_SOURCES += \ avfvideoframerenderer_ios.mm \ avfvideorenderercontrol.mm \ avfdisplaylink.mm } LIBS += -framework Foundation } else { LIBS += -framework AppKit qtConfig(opengl) { HEADERS += \ avfvideoframerenderer.h \ avfvideorenderercontrol.h \ avfdisplaylink.h OBJECTIVE_SOURCES += \ avfvideoframerenderer.mm \ avfvideorenderercontrol.mm \ avfdisplaylink.mm } } OTHER_FILES += \ avfmediaplayer.json PLUGIN_TYPE = mediaservice PLUGIN_CLASS_NAME = AVFMediaPlayerServicePlugin load(qt_plugin)