| 868 | } |
| 869 | |
| 870 | MediaPlayer::MediaPlayer() |
| 871 | { |
| 872 | auto pvd = new PrivateVideoDescriptor{}; |
| 873 | _videoContext = pvd; |
| 874 | # if AX_VIDEOPLAYER_DEBUG_DRAW |
| 875 | _debugDrawNode = DrawNode::create(); |
| 876 | addChild(_debugDrawNode); |
| 877 | # endif |
| 878 | |
| 879 | // Initialize mediaPlayer backend |
| 880 | pvd->_engine = _meFactory->createMediaEngine(); |
| 881 | if (pvd->_engine) |
| 882 | { |
| 883 | /// create video render sprite |
| 884 | pvd->_vrender = new Sprite(); |
| 885 | pvd->_vrender->init(); |
| 886 | pvd->_vrender->setAutoUpdatePS(false); |
| 887 | this->addProtectedChild(pvd->_vrender); |
| 888 | /// setup media event callback |
| 889 | pvd->_engine->setCallbacks( |
| 890 | [this, pvd](MEMediaEventType event) { |
| 891 | switch (event) |
| 892 | { |
| 893 | case MEMediaEventType::Playing: |
| 894 | if (!isPlaying()) |
| 895 | onPlayEvent((int)EventType::PLAYING); |
| 896 | break; |
| 897 | |
| 898 | case MEMediaEventType::Paused: |
| 899 | onPlayEvent((int)EventType::PAUSED); |
| 900 | break; |
| 901 | |
| 902 | case MEMediaEventType::Stopped: |
| 903 | onPlayEvent(pvd->_engine->isPlaybackEnded() ? (int)EventType::COMPLETED : (int)EventType::STOPPED); |
| 904 | break; |
| 905 | |
| 906 | /* Raised by a media source when a presentation ends. This event signals that all streams in the |
| 907 | presentation are complete. The Media Session forwards this event to the application. */ |
| 908 | // case MEEndOfPresentation: |
| 909 | // onPlayEvent((int)EventType::COMPLETED); |
| 910 | // break; |
| 911 | |
| 912 | /* Raised by the Media Session when it has finished playing the last presentation in the playback queue. |
| 913 | * We send complete event at this case |
| 914 | */ |
| 915 | // case MEMediaEventType::Stopped: |
| 916 | // onPlayEvent((int)EventType::COMPLETED); |
| 917 | // break; |
| 918 | case MEMediaEventType::Error: |
| 919 | onPlayEvent((int)EventType::ERROR); |
| 920 | break; |
| 921 | } |
| 922 | }, |
| 923 | [this, pvd](const ax::MEVideoFrame& frame) { |
| 924 | auto pixelFormat = frame._vpd._PF; |
| 925 | auto bPixelDescChnaged = !frame._vpd.equals(pvd->_vpixelDesc); |
| 926 | if (bPixelDescChnaged) |
| 927 | { |
nothing calls this directly
no test coverage detected