diff -r 000000000000 -r bde4ae8d615e os/mm/mmhais/videohai/devvideo/inc/devvideoclientbuffersupport.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/mm/mmhais/videohai/devvideo/inc/devvideoclientbuffersupport.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,89 @@ +// 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 DEVVIDEOCLIENTBUFFERSUPPORT_H +#define DEVVIDEOCLIENTBUFFERSUPPORT_H + +#include + +class TVideoFrameBuffer; + +/** +DevVideo Client Buffer Support Custom Interface UID. + +@publishedPartner +@released +*/ +const TUid KUidMMFVideoClientBufferSupport = { 0x10283417 }; + +/** +In implementations where the controller creates and manages surfaces, this +DevVideo custom interface lets the decoder decode into those client-supplied +surface buffers. + +@publishedPartner +@released +*/ +class MMMFVideoClientBufferSupport + { +public: + /** + Enables client buffer mode. This method must be called before Initialize() with + aClientBuffers=ETrue to use client-supplied buffers. When client-supplied buffers + are used the decoder will not allocate output buffers, but will instead expect to + receive them from the client using MvcbsSupplyBuffer(). + + @param aClientBuffers ETrue to enable using client-supplied buffers, EFalse to + disable this. + */ + virtual void MvcbsUseClientBuffers(TBool aClientBuffers) = 0; + + /** + Supplies a buffer to be used for decoder output. The decoder will decode a + picture into the buffer and return it to the client through the standard + DevVideoPlay data flow (MdvppNewPicture() and NextPictureL()). The client can + identify the buffer by comparing TVideoPicture.iData.iRawData in the output + picture to TVideoFrameBuffer.Buffer() in the supplied buffer. + + Clients can queue multiple buffers in a decoder by calling this method several + times before receiving output pictures. + + The client must call ReturnPicture() for each decoder output picture even when + using client-supplied buffers, since the decoder must still be able to free other + DevVideo-related data structures such as the TVideoPicture object itself. + + @param aBuffer A TVideoFrameBuffer structure describing the buffer. The buffer + must remain accessible and the reference valid until the client receives the + buffer through NextPictureL() or calls MvcbsReleaseBuffers(). + */ + virtual void MvcbsSupplyBuffer(TVideoFrameBuffer& aBuffer) = 0; + + /** + Requests the decoder to release all buffers previously supplied with + MvcbsSupplyBuffer() but not yet used. The decoder must synchronously stop using + any such buffers before returning from this method. + + This method is typically used when the client must delete a surface unexpectedly. + + Note that decoded buffers may also be buffered in DevVideoPlay. Therefore, in + addition to calling this method the client must also receive all decoded pictures + from DevVideoPlay by calling NextPictureL() repeatedly until no more pictures are + available. + */ + virtual void MvcbsReleaseBuffers() = 0; + }; + +#endif // DEVVIDEOCLIENTBUFFERSUPPORT_H