diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmccvideosourcesink/inc/mccvideosourcewrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmccvideosourcesink/inc/mccvideosourcewrapper.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,199 @@ +/* +* Copyright (c) 2006 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: +* +*/ + + + +// INCLUDES +#ifndef MCCVIDEOSOURCEWRAPPER_H +#define MCCVIDEOSOURCEWRAPPER_H + +#include +#include +#include +#include +#include +#include <3gplibrary/mp4lib.h> +#include +#include +#include +#include + +#include "mmcccodecinformation.h" + +class TMccCodecInfo; + +const TInt KIPULRandomAccessPeriod = 2; //Time in seconds between intra frames + +// CLASS DECLARATION + +/** +* +*/ +class CMccVideoSourceWrapper: public CBase, public MCMRMediaSink, public MCMRMediaRecorderObserver + { + + public: // Methods called internally or by the controller + + /** + * Two-phased constructor. + */ + static CMccVideoSourceWrapper* NewL( + MCMRMediaSink& aObserver, + MCMRMediaRecorderObserver& aObserver2 ); + + virtual ~CMccVideoSourceWrapper(); + + public: // new + + void OpenL( MDataSource* aAudioSource, + TInt aCameraHandle, + const TDesC8& aVideoMimeType = KNullDesC8, + TFourCC aAudioType = KFourCCNULL, + TUid aEncoderUid = KNullUid ); + + void PlayL(); + + void ResumeL(); + + void PauseL(); + + void StopL(); + + void SetVideoBitrateL( TUint aVideoBitRate ); + + void SetVideoFrameRateL( TReal32 aFramesPerSecond ); + + TUint GetVideoBitrateL(); + + CCMRMediaRecorder::TRecorderState State(); + + void SetVideoRateControlOptionsL( const TRateControlOptions& aOptions ); + + void GetVideoRateControlOptionsL( TRateControlOptions& aOptions ); + + public: // from MCMRMediaSink + + /** + * Write a buffer to sink + * @since 2.1 + * @param CCMRMediaBuffer* aBuffer The buffer to write + * @return TInt Error code + */ + virtual void WriteBufferL(CCMRMediaBuffer* aBuffer); + + /** + * Inform video frame size to sink + * @since 2.1 + * @param TSize aSize Video frame size + * @return TInt Error code + */ + virtual TInt SetVideoFrameSize(TSize aSize); + + /** + * Inform average video bitrate to sink + * @since 2.1 + * @param TInt aBitRate Average video bitrate + * @return TInt Error code + */ + virtual TInt SetAverageVideoBitRate(TInt aBitRate); + + /** + * Inform maximum video bitrate to sink + * @since 2.1 + * @param TInt aBitRate Maximum expected video bitrate + * @return TInt Error code + */ + virtual TInt SetMaxVideoBitRate(TInt aBitRate); + + /** + * Inform average audio bitrate to sink + * @since 2.1 + * @param TInt aBitRate Average audio bitrate + * @return TInt Error code + */ + virtual TInt SetAverageAudioBitRate(TInt aBitRate); + + public: // from MCMRMediaRecorderObserver + + /** + * Informs the user that PrepareL() has been completed with or + * without errors. If aError != KErrNone, media recorder remains in + * open state + * @since 2.1 + * @param aError Error code + * @return void + */ + virtual void MmroPrepareComplete(TInt aError); + + /** + * Informs the user about a state change. + * Useful to find out when a new prepare is needed after + * a setting was changed + * @since 2.1 + * @param aState New state (CCMRMediaRecorder - TRecorderState) + * @param aError Error code + * @return void + */ + virtual void MmroStateChange(TInt aState, TInt aError); + + /** + * Informs the user about a temporary runtime error. + * Recording can't continue right now but it may + * be possible to continue later (e.g. audio HW was + * taken by a higher priority application) + * @since 2.1 + * @param aError Error code + * @return void + */ + virtual void MmroTemporaryError(TInt aError); + + /** + * Informs the user about a fatal runtime error (e.g. OOM). + * MediaRecorder must be deleted and recreated. + * @since 2.1 + * @param aError Error code + * @return void + */ + virtual void MmroFatalError(TInt aError); + + private: + + void ConstructL(); + + CMccVideoSourceWrapper( + MCMRMediaSink& aObserver, + MCMRMediaRecorderObserver& aObserver2 ); + + private: + + CCMRMediaRecorder* iMediaRecorder; + MCMRMediaSink& iObserver; + MCMRMediaRecorderObserver& iObserver2; + + TBool iFatalErrorOccured; + + private: + #ifdef TEST_EUNIT + friend class UT_CMccVideoSourceImpl; + #endif + }; + + +#endif + + +// End of file