diff -r 000000000000 -r 96612d01cf9f videofeeds/utils/src/CIptvRtpTo3gpConverter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/utils/src/CIptvRtpTo3gpConverter.cpp Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,145 @@ +/* +* Copyright (c) 2006-2009 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 to .3gp file converter* +*/ + + + + +#include +#include "IptvDebug.h" +#include "CIptvRtpTo3gpConverter.h" +#include "MIptvRtpTo3gpObserver.h" + +// --------------------------------------------------------------------------- +// NewL +// --------------------------------------------------------------------------- +CIptvRtpTo3gpConverter* CIptvRtpTo3gpConverter::NewL( RFs& aFs, MIptvRtpTo3gpObserver& aObserver, TInt aPriority ) + { + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::NewL IN" ); + CIptvRtpTo3gpConverter* self = new (ELeave) CIptvRtpTo3gpConverter( aFs, aObserver ); + CleanupStack::PushL( self ); + self->ConstructL( aPriority ); + CleanupStack::Pop( self ); + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::NewL OUT" ); + return self; + } + +// --------------------------------------------------------------------------- +// CIptvRtpTo3gpConverter +// --------------------------------------------------------------------------- +CIptvRtpTo3gpConverter::CIptvRtpTo3gpConverter( RFs& aFs, MIptvRtpTo3gpObserver& aObserver ) + : iFs(aFs) + , iObserver(aObserver) + { + } + +// --------------------------------------------------------------------------- +// ConstructL +// --------------------------------------------------------------------------- +void CIptvRtpTo3gpConverter::ConstructL( TInt aPriority ) + { + iIdle = CIdle::NewL( aPriority ); + } + +// --------------------------------------------------------------------------- +// ~CIptvRtpTo3gpConverter +// --------------------------------------------------------------------------- +CIptvRtpTo3gpConverter::~CIptvRtpTo3gpConverter() + { + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::~CIptvRtpTo3gpConverter IN" ); + DoCleanup( KErrCancel ); + + delete iIdle; + iIdle = NULL; + + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::~CIptvRtpTo3gpConverter OUT" ); + } + +// --------------------------------------------------------------------------- +// ConvertL +// --------------------------------------------------------------------------- +void CIptvRtpTo3gpConverter::DoCleanup( TInt aStatus ) + { + IPTVLOGSTRING2_LOW_LEVEL( "CIptvRtpTo3gpConverter::DoCleanup IN, status=%d", aStatus ); + + if( i3gpFilename ) + { + if( aStatus != KErrNone ) + { + (void)iFs.Delete( *i3gpFilename ); + } + delete i3gpFilename; + i3gpFilename = NULL; + } + iKeyframeWritten = EFalse; + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::DoCleanup OUT" ); + } + +// --------------------------------------------------------------------------- +// ConvertL +// --------------------------------------------------------------------------- +void CIptvRtpTo3gpConverter::ConvertL( const TDesC& aSrcRtpFilename, const TDesC& aDst3gpFilename ) + { + // Not supported, just leave + (void)aSrcRtpFilename; + (void)aDst3gpFilename; + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::ConvertL NOT SUPPORTED, check build configuration" ); + User::Leave( KErrNotSupported ); + } + +// --------------------------------------------------------------------------- +// CancelConverstion +// --------------------------------------------------------------------------- +void CIptvRtpTo3gpConverter::CancelConverstion() + { + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::CancelConverstion IN" ); + DoCleanup( KErrCancel ); + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::CancelConverstion OUT" ); + } + +// --------------------------------------------------------------------------- +// DoIdleCleanupAndNotify +// --------------------------------------------------------------------------- +void CIptvRtpTo3gpConverter::DoIdleCleanupAndNotify( TInt aStatus ) + { + IPTVLOGSTRING2_LOW_LEVEL( "CIptvRtpTo3gpConverter::DoIdleCleanupAndNotify IN, status=%d", aStatus ); + + // stop any previous idle cleanup + iIdle->Cancel(); + + // launch idle callback for cleanup and notification + void* self = static_cast( this ); + TCallBack callback( CleanupAndNotifyCallback, self ); + iIdleStatus = aStatus; + iIdle->Start( callback ); + + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::DoIdleCleanupAndNotify OUT" ); + } + +// --------------------------------------------------------------------------- +// CleanupAndNotifyCallback +// --------------------------------------------------------------------------- +TInt CIptvRtpTo3gpConverter::CleanupAndNotifyCallback( TAny* aSelf ) + { + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::CleanupAndNotifyCallback IN" ); + + // Do actual cleanup and notification + CIptvRtpTo3gpConverter* self = static_cast( aSelf ); + self->DoCleanup( self->iIdleStatus ); + self->iObserver.RtpTo3gpConversionReady( *self, self->iIdleStatus ); + + IPTVLOGSTRING_LOW_LEVEL( "CIptvRtpTo3gpConverter::CleanupAndNotifyCallback OUT" ); + return EFalse; + }