diff -r 000000000000 -r 96612d01cf9f videofeeds/utils/src/CIptvMediaContent.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/utils/src/CIptvMediaContent.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,363 @@ +/* +* Copyright (c) 2004-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: Utilities to handle media content* +*/ + + + + +#include +#include "IptvDebug.h" +#include "CIptvMediaContent.h" + +#ifdef _DEBUG +const TInt KIptvMaxDebugPrint = 100; +#endif + +// ======== MEMBER FUNCTIONS ======== + +// -------------------------------------------------------------------------- +// CIptvMediaContent::NewL +// Two-phased constructor. +// -------------------------------------------------------------------------- +// +EXPORT_C CIptvMediaContent* CIptvMediaContent::NewL() + { + CIptvMediaContent* self = new ( ELeave ) CIptvMediaContent(); + return self; + } + +// -------------------------------------------------------------------------- +// CIptvMediaContent::~CIptvMediaContent +// Destructor +// -------------------------------------------------------------------------- +// +CIptvMediaContent::~CIptvMediaContent() + { + delete iMediaContentUrl; + } + +// -------------------------------------------------------------------------- +// CIptvMediaContent::CIptvMediaContent +// C++ default constructor +// -------------------------------------------------------------------------- +// +CIptvMediaContent::CIptvMediaContent() + { + } + +// -------------------------------------------------------------------------- +// CIptvMediaContent::PrintL +// -------------------------------------------------------------------------- +// +EXPORT_C void CIptvMediaContent::PrintL() + { +#ifdef _DEBUG + + IPTVLOGSTRING_LOW_LEVEL( "CIptvMediaContent::PrintL" ); + + TBuf temp; + TInt count = Min( KIptvMaxDebugPrint, iMediaContentUrl->Length() ); + temp.Copy( iMediaContentUrl->Mid( 0, count ) ); + + IPTVLOGSTRING2_LOW_LEVEL("--- Url: %S", &temp); + + switch ( iDownloadType ) + { + case EIptvDownloadTypeStream: + { + IPTVLOGSTRING_LOW_LEVEL( + "--- Download type: EIptvDownloadTypeStream" ); + break; + } + + case EIptvDownloadTypeImmediate: + { + IPTVLOGSTRING_LOW_LEVEL( + "--- Download type: EIptvDownloadTypeImmediate" ); + break; + } + + case EIptvDownloadTypePostponed: + { + IPTVLOGSTRING_LOW_LEVEL( + "--- Download type: EIptvDownloadTypePostponed" ); + break; + } + + case EIptvDownloadTypeScheduled: + { + IPTVLOGSTRING_LOW_LEVEL( + "--- Download type: EIptvDownloadTypeScheduled" ); + break; + } + + default: + { + break; + } + } + + IPTVLOGSTRING2_LOW_LEVEL( "--- Filesize: %d", iFileSize ); + IPTVLOGSTRING2_LOW_LEVEL( "--- Mime-type: %S", &iMimeType ); + IPTVLOGSTRING2_LOW_LEVEL( "--- Medium: %S", &iMedium ); + + if ( iIsDefault ) + { + IPTVLOGSTRING_LOW_LEVEL( "--- Is default: ETrue" ); + } + else + { + IPTVLOGSTRING_LOW_LEVEL( "--- Is default: EFalse" ); + } + + IPTVLOGSTRING2_LOW_LEVEL( "--- Bitrate: %d", iBitrate ); + IPTVLOGSTRING2_LOW_LEVEL( "--- Framerate: %d", iFramerate ); + IPTVLOGSTRING2_LOW_LEVEL( "--- Samplingrate: %d", iSamplingrate ); + IPTVLOGSTRING2_LOW_LEVEL( "--- Duration: %d", iDuration ); + IPTVLOGSTRING2_LOW_LEVEL( "--- Height: %d", iHeight ); + IPTVLOGSTRING2_LOW_LEVEL( "--- Width: %d", iWidth ); + IPTVLOGSTRING2_LOW_LEVEL( "--- Language: %S", &iLanguage ); + + switch ( iExpression ) + { + case EFull: + { + IPTVLOGSTRING_LOW_LEVEL("--- Expression: EFull"); + break; + } + + case ESample: + { + IPTVLOGSTRING_LOW_LEVEL("--- Expression: ESample"); + break; + } + + case ENonStop: + { + IPTVLOGSTRING_LOW_LEVEL("--- Expression: ENonStop"); + break; + } + + default: + { + break; + } + } + + IPTVLOGSTRING2_LOW_LEVEL( "--- Last position: %d", iLastPosition ); +#endif + } + +// -------------------------------------------------------------------------- +// Externalize +// -------------------------------------------------------------------------- +// +EXPORT_C void CIptvMediaContent::ExternalizeL( RWriteStream& aStream ) const + { + IPTVLOGSTRING_LOW_LEVEL( "CIptvMediaContent::ExternalizeL" ); + + // Content key + aStream.WriteUint32L( iContentKey ); + + // Index + aStream.WriteUint32L( iIndex ); + + // Download type + aStream.WriteUint32L( iDownloadType ); + + // File id (Part of global file id (1/2) + aStream.WriteUint32L( iFileId ); + + // Drive id (Part of global file id (2/2) + aStream.WriteUint32L( iDriveId ); + + // Content URL (MRSS) + if ( iMediaContentUrl ) + { + CIptvUtil::WriteDesToStreamL( *iMediaContentUrl, aStream ); + } + else + { + aStream.WriteUint32L( 0 ); + } + + // File size (MRSS) + aStream.WriteUint32L( iFileSize ); + + // Mime-type (MRSS + CIptvUtil::WriteDesToStreamL( iMimeType, aStream ); + + // Medium (not used in client side) + + // iIsDefault (not used in client side) + + // Expression + aStream.WriteUint32L( iExpression ); + + // Bitrate (not used in client side) + + // Framerate (not used in client side) + + // Samplingrate (not used in client side) + + // Duration + aStream.WriteUint32L( iDuration ); + + // Height (Not used in client side) + + // Width (Not used in client side) + + // Language + CIptvUtil::WriteDesToStreamL( iLanguage, aStream ); + + // Last position + aStream.WriteUint32L( iLastPosition ); + } + +// -------------------------------------------------------------------------- +// Internalize +// -------------------------------------------------------------------------- +// +EXPORT_C void CIptvMediaContent::InternalizeL( RReadStream& aStream ) + { + IPTVLOGSTRING_LOW_LEVEL( "CIptvMediaContent::InternalizeL" ); + + // Content key + iContentKey = aStream.ReadUint32L(); + + // Index + iIndex = aStream.ReadUint32L(); + + // Download type + iDownloadType = aStream.ReadUint32L(); + + // File id (Part of global file id (1/2) + iFileId = aStream.ReadUint32L(); + + // Drive id (Part of global file id (2/2) + iDriveId = aStream.ReadUint32L(); + + // Content URL (MRSS) + delete iMediaContentUrl; + iMediaContentUrl = NULL; + + iMediaContentUrl = HBufC::NewL( KIptvEpgContentBrowserUrlMaxLength ); + TPtr16 p = iMediaContentUrl->Des(); + CIptvUtil::ReadDesFromStreamL( p, aStream ); + iMediaContentUrl = + iMediaContentUrl->ReAllocL( iMediaContentUrl->Length() ); + + // File size (MRSS) + iFileSize = aStream.ReadUint32L(); + + // Mime-type (MRSS) + CIptvUtil::ReadDesFromStreamL( iMimeType, aStream ); + + // Expression + iExpression = aStream.ReadUint32L(); + + // Duration + iDuration = aStream.ReadUint32L(); + + // Language + CIptvUtil::ReadDesFromStreamL( iLanguage, aStream ); + + // Last position + iLastPosition = aStream.ReadUint32L(); + } + +// -------------------------------------------------------------------------- +// Count externalized size +// -------------------------------------------------------------------------- +// +EXPORT_C TUint32 CIptvMediaContent::CountExternalizeSize() + { + IPTVLOGSTRING_LOW_LEVEL( "CIptvMediaContent::CountExternalizeSize" ); + + TUint32 size = 0; + + size = + // Content key + 4 + + + // Index + 4 + + + // Download type + 4 + + + // File id (Part of global file id (1/2) + 4 + + + // Drive id (Part of global file id (2/2) + 4 + + + // Content URL (MRSS) + 4 + ( iMediaContentUrl->Length() * 2 ) + + + // File size (MRSS) + 4 + + + // Mime-type (MRSS) + 4 + ( iMimeType.Length() * 2 ) + + + // Expression + 4 + + + // Duration + 4 + + + // Language + 4 + ( iLanguage.Length() * 2 ) + + + // Last position + 4; + + return size; + } + +// -------------------------------------------------------------------------- +// Set media content URL +// -------------------------------------------------------------------------- +// +EXPORT_C void CIptvMediaContent::SetMediaContentUrlL( + const TDesC& aMediaUrl ) + { + delete iMediaContentUrl; + iMediaContentUrl = NULL; + + TInt actualLength = Min( KIptvCAContentUrlLength, aMediaUrl.Length() ); + + if ( actualLength > 0 ) + { + iMediaContentUrl = HBufC::NewL( actualLength ); + TPtr16 ptr = iMediaContentUrl->Des(); + ptr.Copy( aMediaUrl.Mid( 0, actualLength ) ); + } + } + +// -------------------------------------------------------------------------- +// Get media content URL +// -------------------------------------------------------------------------- +// +EXPORT_C TPtrC CIptvMediaContent::GetMediaContentUrl() const + { + if ( iMediaContentUrl ) + { + return iMediaContentUrl->Des(); + } + + return TPtrC(); + }