diff -r 826cea16efd9 -r 13a33d82ad98 dvrengine/CommonRecordingEngine/DvrRtpClipHandler/inc/CRtpFromFile.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dvrengine/CommonRecordingEngine/DvrRtpClipHandler/inc/CRtpFromFile.h Wed Sep 01 12:20:37 2010 +0100 @@ -0,0 +1,329 @@ +/* +* Copyright (c) 2007 Nokia Corporation 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: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: RTP file read format for Common Recording Engine.* +*/ + + + + + +#ifndef __CRTPFROMFILE_H +#define __CRTPFROMFILE_H + +// INCLUDES +#include +#include +#include "MRtpTimerObserver.h" + +// CONSTANTS +// None + +// MACROS +// None + +// DATA TYPES +// None + +// FORWARD DECLARATIONS +class CRtpToFile; +class CRtpTimer; + +// CLASS DECLARATION + +/** +* RTP format read functionalities for RTP Clip Handler. +* +* @lib RtpClipHandler.lib +* @since Series 60 3.0 +*/ +class CRtpFromFile : public CRtpFileBase, + public MRtpTimerObserver + { + +public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aReadObs a reference to file read observer. + * @param aToFile a pointer to RTP save object. + * @return pointer to CRtpFromFile class. + */ + static CRtpFromFile* NewL( MRtpFileReadObserver& aReadObs, + CRtpToFile* aToFile ); + + /** + * Destructor. + */ + virtual ~CRtpFromFile(); + +public: // New functions + + /** + * Initiates RTP packet reading. + * @since Series 60 3.0 + * @param aClipPath a full path of the clip. + * @param aVersion a version of the clip. + * @param aTimeShift a mode selection. + * @return none. + */ + void InitRtpReadL( const TDesC& aClipPath, + TInt8& aVersion, + const TBool aTimeShift ); + + /** + * Initiates RTP packet reading. + * @since Series 60 3.0 + * @param aRtpHandle a open file handle for RTP file. + * @param aVersion a version of the clip. + * @param aTimeShift a mode selection. + * @return none. + */ + void InitRtpReadL( const RFile& aFileHandle, + TInt8& aVersion ); + + /** + * Swaps new clip for RTP packet reading. + * @since Series 60 3.0 + * @param aClipPath a full path of clip. + * @return a version of the clip. + */ + TInt8 SwapClipL( const TDesC& aClipPath ); + + /** + * Getter for SDP data from the clip. + * @since Series 60 3.0 + * @param none. + * @return a buffer keeping SDD data. + */ + HBufC8* GetClipSdpL(); + + /** + * Reads next RTP packets group from a clip. + * @since Series 60 3.0 + * @param aGroupPoint a group to read. + * @return KErrInUse if reading already active, + KErrEof if too close to live point, + KErrNone otherwise. + */ + TInt ReadNextGroupL( const TInt aGroupPoint ); + + /** + * Reads skipped RTP packet from a clip. + * @since Series 60 3.0 + * @param none. + * @return none. + */ + void ReadSkippedGroup(); + + /** + * Setter for last seek addres. + * @since Series 60 3.0 + * @param none. + * @return none. + */ + void UpdateLastSeekAddr(); + + /** + * Sets Seek point of the clip. + * @since Series 60 3.0 + * @param aTime a time where to seek. + * @return none. + */ + void SetSeekPointL( const TUint aTime ); + + /** + * Stops RTP packet reading. + * @since Series 60 3.0 + * @param aStatus a stopping status. + * @param aPlayerBuf a buffer length in player. + * @return none. + */ + void StopRtpRead( const TInt aStatus, + const TUint aPlayerBuf ); + + /** + * Getter for duration of the clip. + * @since Series 60 3.0 + * @param none. + * @return a duration of the clip. + */ + inline TUint Duration(); + + /** + * Getter for time shift mode. + * @since Series 60 3.0 + * @param none. + * @return true if time shift ongoing, otherwise false. + */ + inline TBool IsTimeShift(); + + /** + * Getter for currently active group point. + * @since Series 60 3.0 + * @param none. + * @return a group point of current read. + */ + inline TInt ThisGroup(); + +private: // Constructors and destructor + + /** + * C++ default constructor. + * @param aObs a RTP save observer. + * @param aToFile a pointer to RTP save object. + */ + CRtpFromFile( MRtpFileReadObserver& aReadObs, + CRtpToFile* aToFile ); + + /** + * Symbian 2nd phase constructor can leave and is private by default. + */ + void ConstructL(); + +private: // Functions from base classes + + /** + * From CRtpFileBase. + * Called when request completion event occurs. + * @since Series 60 3.0 + * @return none. + */ + void RunL(); + + /** + * From CRtpFileBase. + * Handles a leave occurring in the request completion event handler RunL(). + * @since Series 60 3.0 + * @param aError the leave code. + * @return status of run error handling. + */ + TInt RunError( TInt aError ); + + /** + * From CRtpFileBase. + * Called when request completion event cancelled. + * @since Series 60 3.0 + * @return none. + */ + void DoCancel(); + + /** + * From MRmTimerObserver : Called when timer completion event occurs. + * @since Series 60 3.0 + * @return none + */ + void TimerEventL(); + + /** + * From MRtpTimerObserver. + * Handles a leave occurring in the request completion event handler RunL(). + * @since Series 60 3.0 + * @param aError the leave code. + * @return none. + */ + void TimerError( const TInt aError ); + +private: // New functions + + /** + * Reads clip header from a clip. + * @since Series 60 3.0 + * @param aVersion a version of clip. + * @return none. + */ + void ReadClipHeaderL( TInt8& aVersion ); + + /** + * Reads meta header from a clip. + * @since Series 60 3.0 + * @param aSeekHeaderPoint a seek header point in clip. + * @param aSeekArrayPoint a seek array point in clip. + * @return Version of clip. + */ + TInt8 ReadMetaHeaderL( TInt& aSeekHeaderPoint, + TInt& aSeekArrayPoint ); + + /** + * Reads RTP payload from a clip. + * @since Series 60 3.0 + * @param none. + * @return none. + */ + void ReadNextGroupFromFileL(); + + /** + * Finds group base on seek time. + * @since Series 60 3.0 + * @param aTime a time to use for search. + * @param aArray a array to use for search. + * @return point to group where time with TS exist. + */ + TInt FindSeekGroup( const TUint aTime, + CArrayFix* aArray ); + + /** + * Updates playback count and spot attributes. + * @since Series 60 3.0 + * @param none. + * @return none. + */ + void UpdatePlayAttL(); + + /** + * Getter for last seek addres. + * @since Series 60 3.0 + * @param none. + * @return a last seek address. + */ + TInt LastSeekAddr(); + +private: // Data + + /** + * RTP read observer. + */ + MRtpFileReadObserver& iReadObs; + + /** + * Pointer to RTP save object. + */ + CRtpToFile* iToFile; + + /** + * File data buffer. + */ + HBufC8* iFileData; + + /** + * Request skipped. + */ + TBool iSkippedRead; + + /** + * Duration of the clip. + */ + TInt iDuration; + + /** + * Group read timer. + */ + CRtpTimer* iTimer; + + }; + +#include "CRtpFromFile.inl" + +#endif //__CRTPFROMFILE_H + +// End of File