--- a/dvrengine/CommonRecordingEngine/DvrRtpClipHandler/src/CRtpMetaHeader.cpp Thu Aug 19 10:54:18 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,625 +0,0 @@
-/*
-* 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: Implementation of the Common Recording Engine RTP read class.*
-*/
-
-
-
-
-// INCLUDE FILES
-#include <ipvideo/CRtpMetaHeader.h>
-#include <bsp.h>
-#include <etelmm.h>
-#include "videoserviceutilsLogger.h"
-
-// CONSTANTS
-// None
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::NewL
-// Static two-phased constructor. Leaves object to cleanup stack.
-// -----------------------------------------------------------------------------
-//
-CRtpMetaHeader* CRtpMetaHeader::NewL( RFile& aFile, const TMetaMode& aMode )
- {
- CRtpMetaHeader* self = CRtpMetaHeader::NewLC( aFile, aMode );
- CleanupStack::Pop( self );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::NewLC
-// Static two-phased constructor. Leaves object to cleanup stack.
-// -----------------------------------------------------------------------------
-//
-CRtpMetaHeader* CRtpMetaHeader::NewLC( RFile& aFile, const TMetaMode& aMode )
- {
- CRtpMetaHeader* self = new( ELeave ) CRtpMetaHeader( aFile, aMode );
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::CRtpMetaHeader
-// C++ default constructor can NOT contain any code, that might leave.
-// -----------------------------------------------------------------------------
-//
-CRtpMetaHeader::CRtpMetaHeader( RFile& aFile, const TMetaMode& aMode )
- : iFile( aFile ),
- iMode( aMode ),
- iMetaData( NULL ),
- iDataPtr( 0, 0 ),
- iEsgDataPoint( KErrNotFound ),
- iSrtpDataPoint( KErrNotFound ),
- iSdpDataPoint( KErrNotFound ),
- iMetaTotal( KErrNotFound )
- {
- // None
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ConstructL()
- {
- LOG( "CRtpMetaHeader::ConstructL()" );
-
- // Mode
- if ( iMode == EMetaRead || iMode == EMetaUpdate )
- {
- // Read whole meta area
- ReadTintFromFileL( KMetaLengthPoint, iMetaTotal );
-
- // Meta header has reasonable length?
- if ( iMetaTotal > KMaxMetaHeaderLength || iMetaTotal <= 0 )
- {
- LOG( "CRtpMetaHeader::ConstructL(), Meta Total Corrupted" );
- User::Leave( KErrCorrupt );
- }
-
- // Room for header
- iMetaData = HBufC8::NewL( iMetaTotal );
- iDataPtr.Set( iMetaData->Des() );
- User::LeaveIfError( iFile.Read( KMetaLengthPoint, iDataPtr, iMetaTotal ) );
-
- // All data exist in meta header?
- if ( iDataPtr.Length() < iMetaTotal )
- {
- LOG( "CRtpMetaHeader::ConstructL(), Meta Header Corrupted" );
- User::Leave( KErrCorrupt );
- }
-
- // ESG data point ( device info point + device info data )
- iEsgDataPoint = KDeviceInfoPoint + KStringLengthBytes +
- iDataPtr[KDeviceInfoPoint];
-
- // SRTP data point ( ESG data point + Service name + Program name )
- TInt snp( iEsgDataPoint + KStringLengthBytes + iDataPtr[iEsgDataPoint] );
- iSrtpDataPoint = snp + KStringLengthBytes + iDataPtr[snp];
-
- // SDD file point ( SRTP data point + SRTP data )
- const TInt srtplen( CRtpUtil::GetValueL(
- iDataPtr.Mid( iSrtpDataPoint, KIntegerBytes ) ) );
- User::LeaveIfError( srtplen );
- iSdpDataPoint = iSrtpDataPoint + KIntegerBytes + srtplen;
- }
- else // Write
- {
- iMetaData = HBufC8::NewL( 0 );
- // Room for meta length
- iMetaTotal = KMetaLengthPoint;
- AddIntegerL( KMetaLengthPoint, KErrNotFound );
- }
- }
-
-// -----------------------------------------------------------------------------
-// Destructor
-//
-CRtpMetaHeader::~CRtpMetaHeader()
-// -----------------------------------------------------------------------------
- {
- LOG( "CRtpMetaHeader::~CRtpMetaHeader()" );
-
- delete iMetaData;
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::SeekHeaderPoint
-// Getter for seek header point.
-// Returns: Point to seek header
-// -----------------------------------------------------------------------------
-//
-TInt CRtpMetaHeader::SeekHeaderPoint()
- {
- return iMetaTotal;
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::CommitL
-// Writes meta header to the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::CommitL()
- {
- LOG( "CRtpMetaHeader::CommitL() in" );
-
- User::LeaveIfError( iMetaTotal );
- User::LeaveIfError( ( iMetaTotal > KMaxMetaHeaderLength ) * KErrCorrupt );
-
- if ( iMode == EMetaWrite )
- {
- User::LeaveIfError( iEsgDataPoint );
- User::LeaveIfError( iSrtpDataPoint );
- User::LeaveIfError( iSdpDataPoint );
-
- // Meta length
- iDataPtr.Delete( KMetaLengthPoint, KIntegerBytes );
- AddIntegerL( KMetaLengthPoint, iMetaTotal );
-
- User::LeaveIfError( iFile.Write( iDataPtr, iMetaTotal ) );
- }
-
- LOG( "CRtpMetaHeader::CommitL() out" );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteAttributesL
-// Writes atributes to meta data header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteAttributesL( const SAttributes& aAtt )
- {
- TInt data( 0 );
- data|= aAtt.iOngoing << KOngoingFlagShift;
- data|= aAtt.iCompleted << KCompletedFlagShift;
- data|= aAtt.iProtected << KProtectedFlagShift;
- data|= aAtt.iFailed << KFailedFlagShift;
- data|= aAtt.iVersion << KVersionFieldShift;
- data|= aAtt.iQuality << KQualityFieldShift;
- data|= aAtt.iPostRule << KPostRuleFieldShift;
- data|= aAtt.iParental << KParentalFieldShift;
-
- AddIntegerL( KAttributesPoint, data );
- AddIntegerL( KPlayCountPoint, aAtt.iPlayCount );
- AddIntegerL( KPlaySpotPoint, aAtt.iPlaySpot );
-
- // Reserved room for 4 integers
- AddIntegerL( KReservedPoint1, 0 );
- AddIntegerL( KReservedPoint2, 0 );
- AddIntegerL( KReservedPoint3, 0 );
- AddIntegerL( KReservedPoint4, 0 );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteStartTimeL
-// Writes start date/time info to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteStartTimeL( const TTime& aTime )
- {
- AddTimeL( KStartTimePoint, aTime );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteEndTimeL
-// Writes end date/time info to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteEndTimeL( const TTime& aTime )
- {
- AddTimeL( KEndTimePoint, aTime );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteDurationL
-// Writes duration of clip to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteDurationL( const TInt aDuration )
- {
- AddIntegerL( KDurationPoint, aDuration );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteSeekArrayPointL
-// Writes seek array point of clip to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteSeekArrayPointL( const TInt aPoint )
- {
- AddIntegerL( KSeekArrayPoint, aPoint );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteUserIdL
-// Writes user id to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteUserIdL( const TDesC& aId )
- {
- WriteStringDataL( KUserIdPoint, aId );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteDeviceInfoL
-// Writes device info to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteDeviceInfoL( const TDesC& aInfo )
- {
- WriteStringDataL( KDeviceInfoPoint, aInfo );
- iEsgDataPoint = KDeviceInfoPoint + KStringLengthBytes + aInfo.Length();
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteEsgDataL
-// Writes ESG data to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteEsgDataL( const TDesC& aService, const TDesC& aProgram )
- {
- // Device info must exist first
- User::LeaveIfError( iEsgDataPoint );
-
- // Service name
- WriteStringDataL( iEsgDataPoint, aService );
-
- // Program name
- const TInt prog( iEsgDataPoint + KStringLengthBytes + aService.Length() );
- WriteStringDataL( prog, aProgram );
- iSrtpDataPoint = prog + KStringLengthBytes + aProgram.Length();
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteSrtpDataL
-// Writes SRTP data to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteSrtpDataL( const TDesC8& aSrtpData )
- {
- // ESG data must exist first
- User::LeaveIfError( iSrtpDataPoint );
- User::LeaveIfError( ( iMode!=EMetaWrite ) * KErrAccessDenied );
-
- AddIntegerL( iSrtpDataPoint, aSrtpData.Length() );
- AddDataL( iSrtpDataPoint + KIntegerBytes, aSrtpData );
- iSdpDataPoint = iSrtpDataPoint + KIntegerBytes + aSrtpData.Length();
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteSdpDataL
-// Writes SDP file data to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteSdpDataL( const TDesC8& aSdpData )
- {
- // SRTP data must exist first
- User::LeaveIfError( iSdpDataPoint );
- User::LeaveIfError( ( iMode != EMetaWrite ) * KErrAccessDenied );
-
- if ( aSdpData.Length() )
- {
- AddIntegerL( iSdpDataPoint, aSdpData.Length() );
- AddDataL( iSdpDataPoint + KIntegerBytes, aSdpData );
- }
- else
- {
- AddIntegerL( iSdpDataPoint, 0 );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadAttributesL
-// Reads attributes of meta data header from clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadAttributesL( SAttributes& aAtt )
- {
- aAtt.iVersion = 0;
-
- // Attributes
- HBufC8* bytes = iDataPtr.Mid( KAttributesPoint, KIntegerBytes ).AllocLC();
- TUint data( CRtpUtil::GetValueL( bytes->Des() ) );
- CleanupStack::PopAndDestroy( bytes );
- aAtt.iOngoing = ( data >> KOngoingFlagShift ) & ETrue;
- aAtt.iCompleted = ( data >> KCompletedFlagShift ) & ETrue;
- aAtt.iProtected = ( data >> KProtectedFlagShift ) & ETrue;
- aAtt.iFailed = ( data >> KFailedFlagShift ) & ETrue;
- aAtt.iVersion = ( TUint8 )( ( data >> KVersionFieldShift ) & 0xF );
- aAtt.iQuality = ( TUint8 )( ( data >> KQualityFieldShift ) & KMaxTUint8 );
- aAtt.iPostRule = ( TUint8 )( ( data >> KPostRuleFieldShift ) & KMaxTUint8 );
- aAtt.iParental = ( TUint8 )( ( data >> KParentalFieldShift ) & KMaxTUint8 );
-
- // Play count
- bytes = iDataPtr.Mid( KPlayCountPoint, KIntegerBytes ).AllocLC();
- aAtt.iPlayCount = CRtpUtil::GetValueL( bytes->Des() );
- CleanupStack::PopAndDestroy( bytes );
-
- // Play start spot
- bytes = iDataPtr.Mid( KPlaySpotPoint, KIntegerBytes ).AllocLC();
- aAtt.iPlaySpot = CRtpUtil::GetValueL( bytes->Des() );
- CleanupStack::PopAndDestroy( bytes );
-
- // Reserved room for 4 integers
- /*
- bytes = iDataPtr.Mid( KReservedPoint1, KIntegerBytes ).AllocLC();
- aAtt.iReservedX = CRtpUtil::GetValueL( bytes->Des() );
- CleanupStack::PopAndDestroy( bytes );
-
- bytes = iDataPtr.Mid( KReservedPoint2, KIntegerBytes ).AllocLC();
- aAtt.iReservedX = CRtpUtil::GetValueL( bytes->Des() );
- CleanupStack::PopAndDestroy( bytes );
-
- bytes = iDataPtr.Mid( KReservedPoint3, KIntegerBytes ).AllocLC();
- aAtt.iReservedX = CRtpUtil::GetValueL( bytes->Des() );
- CleanupStack::PopAndDestroy( bytes );
-
- bytes = iDataPtr.Mid( KReservedPoint4, KIntegerBytes ).AllocLC();
- aAtt.iReservedX = CRtpUtil::GetValueL( bytes->Des() );
- CleanupStack::PopAndDestroy( bytes );
- */
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadStartTimeL
-// Reads date/time of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadStartTimeL( TTime& aTime )
- {
- GetTimeL( KStartTimePoint, aTime );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadEndTimeL
-// Reads date/time of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadEndTimeL( TTime& aTime )
- {
- GetTimeL( KEndTimePoint, aTime );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadDurationL
-// Reads clip duration of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadDurationL( TInt& aDuration )
- {
- HBufC8* bytes = iDataPtr.Mid( KDurationPoint, KIntegerBytes ).AllocLC();
- aDuration = CRtpUtil::GetValueL( bytes->Des() );
- User::LeaveIfError( aDuration );
- CleanupStack::PopAndDestroy( bytes );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadSeekArrayPointL
-// Reads seek array point of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadSeekArrayPointL( TInt& aPoint )
- {
- HBufC8* bytes = iDataPtr.Mid( KSeekArrayPoint, KIntegerBytes ).AllocLC();
- aPoint = CRtpUtil::GetValueL( bytes->Des() );
- User::LeaveIfError( aPoint );
- CleanupStack::PopAndDestroy( bytes );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadUserIdL
-// Reads user id of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadUserIdL( TDes& aId )
- {
- ReadStringDataL( KUserIdPoint, aId );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadDeviceInfoL
-// Reads device info of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadDeviceInfoL( TDes& aInfo )
- {
- ReadStringDataL( KDeviceInfoPoint, aInfo );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadEsgDataL
-// Reads ESG data of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadEsgDataL( TDes& aService, TDes& aProgram )
- {
- User::LeaveIfError( iEsgDataPoint );
-
- // Service name
- ReadStringDataL( iEsgDataPoint, aService );
-
- // Program name
- const TInt prog( iEsgDataPoint + KStringLengthBytes + aService.Length() );
- ReadStringDataL( prog, aProgram );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadSrtpDataL
-// Reads SRTP data of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-HBufC8* CRtpMetaHeader::ReadSrtpDataL()
- {
- User::LeaveIfError( iSrtpDataPoint );
-
- // Length
- const TInt len( CRtpUtil::GetValueL(
- iDataPtr.Mid( iSrtpDataPoint, KIntegerBytes ) ) );
- // Data
- const TInt total( iSrtpDataPoint + KIntegerBytes + len );
- User::LeaveIfError( ( len < 0 || total > iDataPtr.MaxLength() ) * KErrCorrupt );
- HBufC8* buf = iDataPtr.Mid( iSrtpDataPoint + KIntegerBytes, len ).AllocL();
- return buf;
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadSdpDataL
-// Reads SDP file data of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-HBufC8* CRtpMetaHeader::ReadSdpDataL()
- {
- User::LeaveIfError( iSdpDataPoint );
-
- // Length
- const TInt len( CRtpUtil::GetValueL(
- iDataPtr.Mid( iSdpDataPoint, KIntegerBytes ) ) );
- // Data
- const TInt total( iSdpDataPoint + KIntegerBytes + len );
- User::LeaveIfError( ( len <= 0 || total > iDataPtr.MaxLength() ) * KErrCorrupt );
- HBufC8* buf = iDataPtr.Mid( iSdpDataPoint + KIntegerBytes, len ).AllocL();
- return buf;
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::WriteStringDataL
-// Writes data with length info to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::WriteStringDataL( const TInt aPosition, const TDesC& aData )
- {
- const TInt len( aData.Length() );
- User::LeaveIfError( ( len > TInt( KMaxTUint8 ) ) * KErrArgument );
- User::LeaveIfError( ( iMode != EMetaWrite ) * KErrAccessDenied );
-
- // Length
- TBuf8<KStringLengthBytes> buf( KNullDesC8 );
- buf.Append( KCharSpace );
- buf[0] = ( TUint8 )( len );
- AddDataL( aPosition, buf );
-
- // Data to 8-bit
- HBufC8* data = HBufC8::NewLC( aData.Length() );
- TPtr8 ptr( data->Des() );
- ptr.Copy( aData );
- AddDataL( aPosition + KStringLengthBytes, ptr );
- CleanupStack::PopAndDestroy( data );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadStringDataL
-// Reads data with length info of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadStringDataL( const TInt aPosition, TDes& aData )
- {
- User::LeaveIfError( ( aPosition < 0 || aPosition > iDataPtr.Length() )
- * KErrArgument );
- const TInt len( iDataPtr[aPosition] );
- User::LeaveIfError( ( len < 0 || len > TInt( KMaxTUint8 ) ) * KErrCorrupt );
- User::LeaveIfError( ( len > aData.MaxLength() ) * KErrArgument );
-
- aData.Copy( iDataPtr.Mid( aPosition + KStringLengthBytes, len ) );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::AddTimeL
-// Writes data/time or duration of clip to meta header of the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::AddTimeL( const TInt aPosition, const TTime& aTime )
- {
- HBufC8* bytes = CRtpUtil::MakeBytesLC( I64LOW( aTime.Int64() ) );
- AddDataL( aPosition, bytes->Des() );
- CleanupStack::PopAndDestroy( bytes );
-
- bytes = CRtpUtil::MakeBytesLC( I64HIGH( aTime.Int64() ) );
- AddDataL( aPosition + KIntegerBytes, bytes->Des() );
- CleanupStack::PopAndDestroy( bytes );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::GetTimeL
-// Reads time value of meta header from the clip.
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::GetTimeL( const TInt aPosition, TTime& aTime )
- {
- TUint low( CRtpUtil::GetValueL(
- iDataPtr.Mid( aPosition, KIntegerBytes ) ) );
- TUint high( CRtpUtil::GetValueL(
- iDataPtr.Mid( aPosition + KIntegerBytes, KIntegerBytes ) ) );
-
- aTime = TInt64( MAKE_TINT64( high, low ) );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::AddIntegerL
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::AddIntegerL( const TInt aPosition, const TInt aValue )
- {
- HBufC8* bytes = CRtpUtil::MakeBytesLC( aValue );
- AddDataL( aPosition, bytes->Des() );
- CleanupStack::PopAndDestroy( bytes );
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::AddDataL
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::AddDataL( const TInt aPosition, const TDesC8& aData )
- {
- // Write must be in certain order
- User::LeaveIfError( ( aPosition > iMetaTotal ) * KErrWrite );
-
- switch ( iMode )
- {
- case EMetaWrite:
- iMetaTotal = iMetaData->Length() + aData.Length();
- iMetaData = iMetaData->ReAllocL( iMetaTotal );
- iDataPtr.Set( iMetaData->Des() );
- iDataPtr.Insert( aPosition, aData );
- break;
-
- case EMetaUpdate:
- User::LeaveIfError( iFile.Write( aPosition, aData, aData.Length() ) );
- break;
-
- default:
- User::Leave( KErrNotSupported );
- break;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CRtpMetaHeader::ReadTintFromFileL
-// -----------------------------------------------------------------------------
-//
-void CRtpMetaHeader::ReadTintFromFileL( const TInt& aPosition, TInt& aValue )
- {
- HBufC8* bytes = HBufC8::NewLC( KIntegerBytes );
- TPtr8 ptr( bytes->Des() );
- User::LeaveIfError( iFile.Read( aPosition, ptr, KIntegerBytes ) );
-
- aValue = CRtpUtil::GetValueL( ptr );
- CleanupStack::PopAndDestroy( bytes );
- }
-
-// End of File