diff -r 000000000000 -r 40261b775718 mmhais/videohai/devvideo/inc/devvideovideosurfacecustominterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmhais/videohai/devvideo/inc/devvideovideosurfacecustominterface.h Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,131 @@ +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef DEVVIDEOVIDEOSURFACECUSTOMINTERFACE_H +#define DEVVIDEOVIDEOSURFACECUSTOMINTERFACE_H + +#include +#include + +/** +DevVideo Surface Support Custom Interface UID. + +@publishedPartner +@prototype +*/ +const TUid KUidMMFVideoSurfaceSupport = { 0x1028340E }; + +/** +Video graphics surface change observer that is used with the MMMFVideoSurfaceSupport +custom interface. Controllers or other DevVideo clients using that custom interface +must implement this observer interface. + +@publishedPartner +@prototype +*/ +class MMMFVideoSurfaceObserver + { +public: + /** + Video surface created. The media device calls this method when a surface has been created + after (1) a surface has been created after a play command and the first frame for the stream + has been passed to the surface, and (2) when an existing surface that has already been created + by the media device is to be replaced with a new surface also created by the mdeai device. MMF + controllers typically send a KMMFEventCategoryVideoSurfaceCreated event to the client utility + when they receive this callback. + */ + virtual void MmvsoSurfaceCreated() = 0; + + /** + Video surface parameters changed. The client must get the updated surface parameters with + MmvssGetSurfaceParametersL() and recalculate its display layout. MMF controllers typically + send a KMMFEventCategoryVideoSurfaceParametersChanged event to the client utility when + they receive this callback. + */ + virtual void MmvsoSurfaceParametersChanged() = 0; + + /** + The client must remove the video surface. The media device calls this callback when the surface + needs to be replaced. This typically happens if the video picture size changes too much to fit in + existing surface buffers. + + The client must remove all surfaces from its current windows and when it has done so must call + MmvssSurfaceRemovedL(). + + MMF controllers typically send a KMMFEventCategoryVideoRemoveSurface event to the client + utility when they receive this callback and let the client utility remove the surface. + */ + virtual void MmvsoRemoveSurface() = 0; + }; + +/** +DevVideo custom interface. Video decoders and post-processor media devices +that support rendering to video surfaces implements this custom interface to +provide surface management support to the controller. Most of the methods in +this custom interface map directly to MMF custom commands, and controllers +typically implement the MMF custom commands using these methods. + +@publishedPartner +@prototype +*/ +class MMMFVideoSurfaceSupport + { +public: + /** + Requests the media device to use graphics surfaces for video rendering. + The client must call this method before Initialize() to ensure the media + device allocates the right types of resources for rendering. + */ + virtual void MmvssUseSurfaces() = 0; + + /** + Sets a new video surface support observer to receive surface management events + from the media device. + + @param aObserver New observer object to use. + */ + virtual void MmvssSetObserver(MMMFVideoSurfaceObserver& aObserver) = 0; + + /** + Retrieves parameters for the current surface. The client typically calls this in response + to a MmvsoSurfaceCreated() or MmvsoSurfaceParametersChanged() observer callback. + + @param aSurfaceId + Surface ID for the display. + @param aCropRect + Cropping rectangle within the surface. The crop rectangle identifies the area of + the surface that should be shown on the screen. + @param aPixelAspectRatio + Video picture pixel aspect ratio. + + @leave KErrNotReady if no surface is available for the display. + */ + + virtual void MmvssGetSurfaceParametersL(TSurfaceId& aSurfaceId, TRect& aCropRect, + TVideoAspectRatio& aPixelAspectRatio) = 0; + + /** + Indicates that the surface is no longer in use and can be destroyed. The client typically calls + this in response to MmvsoSurfaceCreated() (where the newly created surface is replacing an + existing one) or MmvsoRemoveSurface() observer callback. + + @param aSurfaceId Surface ID that is no longer in use + + @leave KErrNotFound if the surface does not exist + */ + virtual void MmvssSurfaceRemovedL(const TSurfaceId& aSurfaceId) = 0; + }; + +#endif // DEVVIDEOVIDEOSURFACECUSTOMINTERFACE_H