diff -r 000000000000 -r 95b198f216e5 drm_plat/drm_legacy_api/inc/Oma2Dcf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/drm_plat/drm_legacy_api/inc/Oma2Dcf.h Thu Dec 17 08:52:27 2009 +0200 @@ -0,0 +1,245 @@ +/* +* Copyright (c) 2002-2004 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: Declaration of the DCF file format class +* +*/ + + + +#ifndef OMA2DCF_H +#define OMA2DCF_H + +// INCLUDES +#include "Oma2Agent.h" +#include "DcfCommon.h" + +// LOCAL CONSTANTS AND MACROS +/* constant for variable-length definitions */ +#define SRVSEC_ANY_SIZE 1 + +#define SWAP32( num ) ( (num) = ( (((num) & 0xff000000) >>24) | (((num) & 0x00ff0000) >>8) | \ + (((num) & 0x0000ff00) <<8) | (((num) & 0x000000ff) <<24) ) ) + +// STRUCTURES +typedef struct + { + TUint32 size; + TUint32 type; + TUint32 versionAndFlags; + } tBoxHeaderStr; + +// CLASS DECLARATION +class COma2DcfPartInfo; + +/** +* Encapsulates an OMA DRM 2.0 DCF file +* +* @lib DrmDcf.lib +* @since Series 60 3.0 +*/ +class COma2Dcf : public CDcfCommon + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static COma2Dcf* NewL( + const RFile& aFile, + TInt aPart = 0); + + /** + * Destructor. + */ + IMPORT_C virtual ~COma2Dcf(); + + public: // New functions + + IMPORT_C void SetTransactionIdL( + const TDesC8& aTransactionId); + + IMPORT_C void SetRightsObjectsL( + RPointerArray& aRoList); + + IMPORT_C void GetHashL(); + + IMPORT_C static TBool IsValidDcf( + const TDesC8& aDcfFragment); + + void ReadPartsL(void); + + void ReadContainerL( + TInt aOffset, + TInt& aSize); + + void ReadDiscreteMediaHeaderL( + TInt aOffset, + TInt& aSize); + + void ReadContentObjectL( + TInt aOffset, + TInt& aSize); + + void ReadCommonHeadersL( + TInt aOffset, + TInt& aSize); + + void ReadMutableInfoL( + TInt aOffset, + TInt& aSize); + + void ReadExtendedHeadersL( + TInt aOffset, + TInt aEndOfBox); + + void ReadBoxSizeAndTypeL( + TInt aOffset, + TInt& aSize, + TUint32& aType, + TInt& aHeaderSize); + + void ParseTextualHeadersL( + const TDesC8& aMemoryBlock); + + void RewriteMutableInfoL( + const TDesC8& aTransactionId, + RPointerArray& aRoList); + + TInt CheckUniqueId( + const TDesC& aUniqueId); + + TInt OpenPart( + const TDesC& aUniqueId); + + TInt OpenPart( + TInt aPart); + + void GetPartIdsL( + RPointerArray& aPartList); + + private: // New functions + /** + * VerifyTypeL + * @param aType the type value to be verified + * @param aRefType the reference type + */ + void VerifyTypeL( + TUint32 aType, + TUint32 aRefType); + + /** + * ReadOneTextualHeaderL + * @param aBlock header buffer + * @param aName Textual header name + * @param aBuf Buffer to save value, if not found, it should be NULL, previous data is discarded + * @param aError KErrNone if the header was found, otherwise KErrNotFound or other errors + * @return Offset of the header in the data block + */ + TInt ReadOneTextualHeaderL( + const TDesC8& aBlock, + const TDesC8& aName, + HBufC8*& aBuf, + TInt& aError); + + /** + * SetHeaderWithParameterL + * @param aValue header value + * @param aMethod Buffer to save method value, if not found, it should be NULL, previous data is discarded + * @param aParameter Buffer to save paramter value, if not found, it should be NULL, previous data is discarded + */ + void SetHeaderWithParameterL( + const TDesC8& aValue, + HBufC8*& aMethod, + HBufC8*& aParameter); + + void ReadPartInfoL( + COma2DcfPartInfo* aPart, + TInt aOffset); + + void ReadUserDataL( + TInt aOffset, + TInt& aSize); + + void ParseUserDataSubBoxesL( + const TDesC8& aMemoryBlock); + + void ReadOneUserDataBoxL( + const TDesC8& aBlock, + const TDesC8& aName, + HBufC8*& aBuf); + + + protected: + + /** + * C++ default constructor. + */ + COma2Dcf(); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL( + const RFile& aFile, + TInt aPart); + public: // Data + TEncryptionPadding iEncrytionPadding; + TSilentRefresh iSilentRefresh; + TPreview iPreview; + HBufC8* iPreviewParameter; + HBufC8* iSilentParameter; + HBufC8* iTextualHeaders; + HBufC8* iContentUrl; + HBufC8* iContentVersion; + HBufC8* iContentLocation; + HBufC8* iTransactionTracking; + RPointerArray iRightsObjects; + HBufC8* iUserData; + HBufC8* iAuthor; + HBufC8* iCopyRight; + HBufC8* iInfoUri; + HBufC8* iGroupId; + HBufC8* iGroupKey; + TEncryptionMethod iGkEncryptionMethod; + RPointerArray iParts; + COma2DcfPartInfo* iMutablePart; + + // metadataboxes + HBufC8* iPerformer; + HBufC8* iGenre; + HBufC8* iRatingInfo; + HBufC8* iClassificationInfo; + HBufC8* iKeyword; + HBufC8* iLocInfoName; + HBufC8* iLocInfoAstronomicalBody; + HBufC8* iLocInfoAdditionalNotes; + HBufC8* iAlbumTitle; + HBufC8* iCoverUri; + HBufC8* iLyricsURL; + TUint16 iRecordingYear; + TUint8 iAlbumTrack; + + // Set to ETrue if both preview and silent headers are present + // and preview rights are to be used, EFalse otherwise + TBool iPreviewOverridesSilentRefresh; + + protected: // Data + + private: // Data + TBool iUserDataLanguageDefined; + }; + +#endif // OMA2DCF_H + +// End of File