mp4sp_enc/arimp4spencwrapper/export_hdr/arimp4spencwrapper.h
author Pat Downey <patd@symbian.org>
Fri, 23 Jul 2010 16:58:44 +0100
changeset 0 bb31fbe78861
permissions -rw-r--r--
Initial commit of Aricent codec contribution.

/*
* Copyright (c) 2009 Aricent and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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:
* Aricent - initial contribution.
*
* Contributors:
*
* Description:
* Export header file for wrapper APIs.Interface class for
* Mpeg4SP/H263 encoder wrapper.The member functions are pure virtual functions
* which are to be implemented by the derived class.
*
*/


#ifndef ARIMP4SPENCWRAPPER_H
#define ARIMP4SPENCWRAPPER_H

//	INCLUDES
#include <e32def.h>
#include <e32base.h>
#include <devvideoconstants.h>
#include "aribasecodec.h"


// FORWARD DECLARATIONS
class MBaseCodecObserver;
class TMpeg4H263HWDeviceInitParams;
class TMpeg4H263EncoderInitParams;


class CAriMp4spencWrapper:  public CBase, public MBaseCodec
	{

	public:// Constructor and Destructor

		/**
		 * Two-phased constructor.
		 * @param aEncoderParams
		 *    Encoder params used to create the encoder.
		 * @return pointer to an instance of CAriMp4spencWrapper
		 */
		IMPORT_C static CAriMp4spencWrapper* NewL(TMpeg4H263EncoderInitParams &aParams);

		/**> Destructor */
		virtual ~CAriMp4spencWrapper();


	public:// MBaseCodec functions

		/**
		 * From MBaseCodec
		 * Encodes an input buffer
		 * @param	aInpBuf
		 *    Coded input data passed by Engine.
		 * @param	aOutBuf
		 *	  Encoded output data
		 * @leave	"The method will leave if an error occurs".
		 * @return	one of the TCodecState
		 */
		virtual TInt DoProcessL( TAny *aInpBuf, TAny* aOutBuf) = 0;

		/**
		 * From MBaseCodec
		 * Encodes an input buffer
		 * @param	aCommand
		 *    The command passed - indicates encoder parameter to be set.
		 * @param	aOutBuf
		 *	  The value used to set the parameter.
		 * @leave	"The method will leave if an error occurs".
		 * @return	one of the TCodecState
		 */

		virtual TInt SetParam( TInt aCommand, TAny* aCmdData ) = 0;

		/**
		 * Used to get codec parameteres
		 * @param aCommand
		 *    Indicates the encoder parameter to get
		 * @param aCmdData
		 *    The value of the encoder parameter (OUT)
		 * @return symbian wide error code
		*/
		virtual TInt GetParam (TInt aCommand, TAny* aCmdData) = 0;


		/**
		 * Cancels all processing of the commands
		 * @return None
		 */
		virtual void Reset () = 0;


		/**
		 * Sets the clocksource.
		 * @param aClockSource
		 *    The clocksource which will be used by wrapper.
		 * @param aProcessingTime
		 *    Not used currently.
		 * @return TInt KErrArgument if clocksource is NULL
		 *              else returns KErrNone
		 */
		virtual TInt SetSyncOptions( TAny* aClockSource,
										TInt aProcessingTime = 0 ) = 0;

		/**
		 * Sets the reference time to be used by wrapper.
		 * @param aReferenceTime
		 *    The reference time passed by the plugin
		 * @return None
		 */

		virtual void SetUpdatedRefernceTime( TInt64 &aReferenceTime ) = 0;

		/**
		 * Indicates whether current picture has been encoded or not.
		 * @return TBool ETrue if ppicture is skipped.
		 */

		virtual TBool IsCurrentPictureSkipped() = 0;

	};

#endif //ARIMP4SPENCWRAPPER_H