Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.
UI composition in Symbian^3 video player applications (Known Issue)
CVideoPlayerUtility in Symbian^3 uses a new graphics architecture for drawing video frames on the screen. Although the change is largely transparent to application developers, it should be taken into account when designing the UI of a video player application.
Symbian^3 introduces the ScreenPlay graphics architecture, enabling improved software performance, hardware-accelerated graphics, and third party graphics engines. ScreenPlay is also known as the New Graphics Architecture (NGA).
High-level graphics and video APIs such as CVideoPlayerUtility also use ScreenPlay architecture on Symbian^3 devices that support it. On previous Symbian platforms, such as S60 5th Edition, CVideoPlayerUtility uses Direct Screen Access (DSA) to draw video frames on the screen.
The compatibility of CVideoPlayerUtility has been maintained between S60 5th Edition and Symbian^3. However, although largely transparent to application developers, the change in the underlying architecture should be taken into account.
In Direct Screen Access, a DSA client draws directly on the screen; a DSA client communicates with the window server (WSERV) in order not to conflict with WSERV's own drawing operations. This is because anything drawn using DSA will appear on top of the window.
In ScreenPlay, the video is rendered on a background surface, composed together with graphics drawn by window server.
Consider the following piece of code, used in the view (container) class (derived from CCoeControl) of a video player application:
void CMyVideoPlayerAppView::Draw( const TRect& /*aRect*/) const
CWindowGc& gc = SystemGc();
// Clear (fill) the control's extent with current brush color
gc.Clear( Rect() ); // safe with DSA but not ScreenPlay!
Clearing the window is safe to do when video playback is done using DSA. However, on ScreenPlay architecture, the background surface is composed together with the opaque-colour window, thus totally obscuring the video area.
When migrating video player applications to Symbian^3, make sure their UI is drawn correctly with ScreenPlay architecture and surface composition.