diff -r 33a5d2bbf6fc -r 73a1feb507fb mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipsession.cpp --- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipsession.cpp Thu Aug 19 09:51:39 2010 +0300 +++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipsession.cpp Tue Aug 31 15:12:07 2010 +0300 @@ -23,10 +23,12 @@ #include "musengclipsession.h" #include "mussipprofilehandler.h" #include "musengmceutils.h" - +#include "mussessionproperties.h" // SYSTEM INCLUDES -#include +#include +#include +#include #include #include #include @@ -41,6 +43,7 @@ #include #include #include +#include // ----------------------------------------------------------------------------- @@ -106,33 +109,26 @@ // void UT_CMusEngClipSession::SetupL() { - iObserver = new( ELeave ) CMusEngObserverStub; - iClipSession = CMusEngClipSession::NewL( TRect(0,0, 100,100), - *iObserver, - *iObserver, - *iObserver ); - iClipSession->SetClipL( KTestVideoFileName ); + iLcSessionObserver = new( ELeave )CLcSessionObserverStub; + iLcUiProvider = new( ELeave )CLcUiProviderStub; + iAudioRoutingObserver = new( ELeave )CMusEngObserverStub; + + iClipSession = CMusEngClipSession::NewL(); + iClipSession->SetLcSessionObserver( iLcSessionObserver ); + iClipSession->SetLcUiProvider( iLcUiProvider ); + iClipSession->LocalVideoPlayer()->LcSourceFileControl()->SetLcFileNameL( + KTestVideoFileName() ); + delete iClipSession->iVideoCodecList; + iClipSession->iVideoCodecList = NULL; iClipSession->iVideoCodecList = KMceSDPNameH264().AllocL(); SIPStrings::OpenL(); + + User::LeaveIfError( RProperty::Set( NMusSessionApi::KCategoryUid, + NMusSessionApi::KRemoteSipAddress, + KTestRecipientSipUri ) ); } -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::Setup2L() - { - iObserver = new( ELeave ) CMusEngObserverStub; - iClipSession = CMusEngClipSession::NewL( TRect(0,0, 100,100), - *iObserver, - *iObserver, - *iObserver ); - iClipSession->SetClipL( KTestVideoFileName ); - iClipSession->iVideoCodecList = KMceSDPNameH263().AllocL(); - - SIPStrings::OpenL(); - } // ----------------------------------------------------------------------------- // @@ -142,14 +138,16 @@ { SIPStrings::Close(); delete iClipSession; - delete iObserver; + delete iLcSessionObserver; + delete iLcUiProvider; + delete iAudioRoutingObserver; + PropertyHelper::Close(); } // TEST CASES - // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- @@ -157,662 +155,8 @@ void UT_CMusEngClipSession::UT_NewLL() { EUNIT_ASSERT( iClipSession ) - EUNIT_ASSERT( iClipSession->iFileName != KNullDesC() ) EUNIT_ASSERT( !iClipSession->iSession ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_SetClipLL() - { - // Try with protected file, cannot use EUNIT_ASSERT_SPECIFIC_LEAVE - TRAPD( error, iClipSession->SetClipL( KMusDrmProtectedFileName() ) ) - MUS_TEST_FORWARD_ALLOC_FAILURE( error ); - EUNIT_ASSERT( error == KErrPermissionDenied ) - EUNIT_ASSERT_EQUALS( iClipSession->iFileName, KTestVideoFileName() ) - - // Change the file before session is established - iClipSession->SetClipL( KTestAvcVideoFileName() ); - EUNIT_ASSERT_EQUALS( iClipSession->iFileName, KTestAvcVideoFileName() ) - EUNIT_ASSERT( !iClipSession->iSession ) - - // simulate session establishment - ESTABLISH_OUT_SESSION( iClipSession ); - - // Now test with established session - iClipSession->SetClipL( KTestVideoFileName() ); - - CMceFileSource* file = - MusEngMceUtils::GetFileSourceL( *iClipSession->iSession ); - - EUNIT_ASSERT_EQUALS( iClipSession->iFileName, KTestVideoFileName() ) - EUNIT_ASSERT_EQUALS( file->iFileName, KTestVideoFileName() ) - - - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_FastForwardLL() - { - // Try before establishment - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->FastForwardL( ETrue ), - KErrNotReady ) - - // Establish session, simulate position and duration and try again - ESTABLISH_OUT_SESSION( iClipSession ); - - CMceFileSource* file = - MusEngMceUtils::GetFileSourceL( *iClipSession->iSession ); - - file->iDuration = KMusEngTestFileDuration; - file->iPosition = KMusEngTestFilePosition; - - iClipSession->FastForwardL( ETrue ); - - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() > 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 ) - - // Simulate fastforwarding for a while - User::After( 1000 ); - - // Try to fastforward when already fastforwarding, will be ignored - iClipSession->FastForwardL( ETrue ); - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() > 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 ) - - // Stop fastforwarding - iClipSession->FastForwardL( EFalse ); - EUNIT_ASSERT( file->iPosition > KMusEngTestFilePosition ) - EUNIT_ASSERT( file->iPosition != file->iDuration ) - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 ) - - // Try to stop fastforwarding again, leaves - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->FastForwardL( EFalse ), - KErrAlreadyExists ) - - // Start fastrewinding - iClipSession->FastRewindL( ETrue ); - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() > 0 ) - - // Start fastforwarding, rewinding should be stopped and FFWD started - iClipSession->FastForwardL( ETrue ); - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() > 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 ) - - // Simulate fastforwarding for a while - User::After( 1000 ); - - // Simulate that clip is almost in end and fastforwarding would have - // continued over end, position should be set to duration. - - file->iPosition = TTimeIntervalMicroSeconds( file->iDuration.Int64() - 1 ); - - iClipSession->FastForwardL( EFalse ); - EUNIT_ASSERT( file->iPosition == file->iDuration ) - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 ) - - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_FastRewindLL() - { - // Try before establishment - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->FastRewindL( ETrue ), - KErrNotReady ) - - // Establish session, simulate position and duration and try again - ESTABLISH_OUT_SESSION( iClipSession ); - - CMceFileSource* file = - MusEngMceUtils::GetFileSourceL( *iClipSession->iSession ); - - file->iDuration = KMusEngTestFileDuration; - file->iPosition = KMusEngTestFilePosition; - - iClipSession->FastRewindL( ETrue ); - - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() > 0 ) - - // Simulate fastrewinding for a while - User::After( 1000 ); - - // Try to fastrewind when already fastrewinding, will be ignored - iClipSession->FastRewindL( ETrue ); - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() > 0 ) - - // Stop fastrewinding - iClipSession->FastRewindL( EFalse ); - EUNIT_ASSERT( file->iPosition < KMusEngTestFilePosition ) - EUNIT_ASSERT( file->iPosition != TTimeIntervalMicroSeconds( 0 ) ) - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 ) - - // Try to stop fastrewinding again, leaves - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->FastRewindL( EFalse ), - KErrAlreadyExists ) - - // Start fastforwarding - iClipSession->FastForwardL( ETrue ); - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() >= 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 ) - - // Start fastrewinding, forwarding should be stopped and FFWD started - iClipSession->FastRewindL( ETrue ); - EUNIT_ASSERT( !file->iIsEnabled ); - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() >= 0 ) - - // Simulate that clip has just begun and fastrewinding would have - // continued over beginning, position should be set to zero. - - file->iPosition = TTimeIntervalMicroSeconds( 1 ); - - // Simulate fastrewinding for a while - User::After( 1000 ); - - iClipSession->FastRewindL( EFalse ); - EUNIT_ASSERT( file->iPosition == TTimeIntervalMicroSeconds( 0 ) ) - EUNIT_ASSERT( !file->iIsEnabled ) - EUNIT_ASSERT( iClipSession->iFFWDStartTime.Int64() == 0 ) - EUNIT_ASSERT( iClipSession->iFRWDStartTime.Int64() == 0 ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_PositionLL() - { - // Try before establishment - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PositionL(), KErrNotReady ) - - // Establish session and try again - ESTABLISH_OUT_SESSION( iClipSession ); - - CMceFileSource* file = - MusEngMceUtils::GetFileSourceL( *iClipSession->iSession ); - file->iPosition = 2000000; - - EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 == - file->iPosition.Int64() ) - - // Ask position while fastforwarding, it should be bigger than real position - iClipSession->FastForwardL( ETrue ); - - User::After( 1000000 ); // We have to wait since dividing in PositionL and - // multiplying before comparison loses difference - - EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 > - file->iPosition.Int64() ) - - // Ask position while fastforwarding beyond end of clip, clip duration is - // returned - file->iPosition = file->iDuration; - - EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 == - file->iDuration.Int64() ) - - // Stop fastforwarding, start fastrewinding, position is set to the end clip - iClipSession->FastForwardL( EFalse ); - iClipSession->FastRewindL( ETrue ); - - User::After( 1000000 ); // We have to wait since dividing in PositionL and - // multiplying before comparison loses difference - - // Ask position while fastrewinding, it should be smaller than real - // position - EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 < - file->iPosition.Int64() ) - - // Ask position while fastrewinding beyond the beginning of clip, zero - // returned - file->iPosition = 0; - - EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 == 0 ) - - // Asking position when rewinded to beginning but rewinding has ended - // and clip has not ended (position should not be altered in that case) - iClipSession->iRewindedToBeginning = ETrue; - file->iPosition = 0; - iClipSession->iFRWDStartTime = TTime( 0 ); - - EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 == 0 ) - - // Position has proceeded from beginning, rewinding to beginning info - // is cleared. - file->iPosition = 10000000; - iClipSession->iFRWDStartTime = TTime( 0 ); - iClipSession->iRewindedToBeginning = EFalse; - EUNIT_ASSERT( iClipSession->PositionL().Int() * 1000000 == 10000000 ) - EUNIT_ASSERT( iClipSession->iRewindedToBeginning == EFalse ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_DurationLL() - { - // Try before establishment - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->DurationL(), KErrNotReady ) - - // Establish session and try again - ESTABLISH_OUT_SESSION( iClipSession ); - - CMceFileSource* file = - MusEngMceUtils::GetFileSourceL( *iClipSession->iSession ); - file->iDuration = 2000000; - - EUNIT_ASSERT( iClipSession->DurationL().Int() * 1000000 == - file->iDuration.Int64() ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_SetPositionLL() - { - TTimeIntervalSeconds time( 20 ); - - // Try before establishment - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->SetPositionL( time ), - KErrNotReady ) - - // Normal case with already disabled file source - ESTABLISH_OUT_SESSION( iClipSession ); - - CMceFileSource* file = - MusEngMceUtils::GetFileSourceL( *iClipSession->iSession ); - file->iIsEnabled = EFalse; - - iClipSession->SetPositionL( time ); - - EUNIT_ASSERT( file->iPosition.Int64() == - static_cast(time.Int()) * 1000000 ) - EUNIT_ASSERT( !file->iIsEnabled ) - - // Normal case with enabled file source - TTimeIntervalSeconds anotherTime( 30 ); - - file->iIsEnabled = ETrue; - iClipSession->SetPositionL( anotherTime ); - - EUNIT_ASSERT( file->iPosition.Int64() == - static_cast(anotherTime.Int()) * 1000000 ) - EUNIT_ASSERT( file->iIsEnabled ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_TranscodeLToAvcL() - { - // Check that transcoding is not possible before invite - EUNIT_ASSERT_SPECIFIC_LEAVE( - iClipSession->TranscodeL( KTestVideoFileName() ), - KErrNotReady ) - - // Construct session with video and audio streams that must transcoded - - CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile(); - - iClipSession->iSession = CMceOutSession::NewL( - *(iClipSession->iManager), - *profile, - KTestRecipientSipUri8() ); - - CMceVideoStream* videoStream = CMceVideoStream::NewLC(); - - CMceRtpSink* rtpsink = CMceRtpSink::NewLC(); - videoStream->AddSinkL( rtpsink ); - CleanupStack::Pop( rtpsink ); - - CMceFileSource* fileSource = - CMceFileSource::NewLC( *iClipSession->iManager, KTestAvcVideoFileName() ); - videoStream->SetSourceL( fileSource ); - CleanupStack::Pop( fileSource ); - - iClipSession->iSession->AddStreamL( videoStream ); - CleanupStack::Pop( videoStream ); - - CMceAudioStream* audioStream = CMceAudioStream::NewLC(); - - audioStream->AddSinkL( CMceRtpSink::NewLC() ); - CleanupStack::Pop(); - - audioStream->SetSourceL( fileSource ); - - iClipSession->iSession->AddStreamL( audioStream ); - CleanupStack::Pop( audioStream ); - - videoStream->iState = CMceMediaStream::ETranscodingRequired; - audioStream->iState = CMceMediaStream::ETranscodingRequired; - - // Remove all codecs (file has some unknown codec type) - RPointerArray videoCodecs = videoStream->Codecs(); - for ( TInt i = 0; i < videoCodecs.Count(); i++ ) - { - videoStream->RemoveCodecL( *videoCodecs[ i ] ); - } - RPointerArray videoCodecs2 = videoStream->Codecs(); - EUNIT_ASSERT_EQUALS( videoCodecs2.Count(), 0 ) - EUNIT_ASSERT( audioStream->Codecs().Count() > 1 ) - - // Add some stream which must not be transcoded - - CMceAudioStream* inStream = CMceAudioStream::NewLC(); - - inStream->AddSinkL( CMceSpeakerSink::NewLC() ); - CleanupStack::Pop(); - - inStream->SetSourceL( CMceRtpSource::NewLC() ); - CleanupStack::Pop(); - - iClipSession->iSession->AddStreamL( inStream ); - CleanupStack::Pop( inStream ); - - // Transcode - iClipSession->TranscodeL( KTestAvcVideoFileName() ); - - // Check that transcoding has begun (transcoding to AVC as we know - // that other end supports it - EUNIT_ASSERT( iClipSession->iTranscodingOngoing ) - EUNIT_ASSERT( videoStream->State() == CMceMediaStream::ETranscoding ) - EUNIT_ASSERT( audioStream->State() == CMceMediaStream::ETranscoding ) - EUNIT_ASSERT( inStream->State() != CMceMediaStream::ETranscoding ) - - // Check that codecs have been replaced - const RPointerArray videoCodecs3 = videoStream->Codecs(); - EUNIT_ASSERT_EQUALS( videoCodecs3.Count(), 1 ) - EUNIT_ASSERT( videoCodecs3[0]->SdpName().FindF( KMceSDPNameH264() ) >= 0 ) - EUNIT_ASSERT( audioStream->Codecs().Count() == 1 ) - EUNIT_ASSERT( audioStream->Codecs()[0]->AllowedBitrates() == - KMceAllowedAmrNbBitrate475 ) - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_TranscodeLToH263L() - { - // Check that transcoding is not possible before invite - EUNIT_ASSERT_SPECIFIC_LEAVE( - iClipSession->TranscodeL( KTestVideoFileName() ), - KErrNotReady ) - - // Construct session with video and audio streams that must transcoded - - CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile(); - - iClipSession->iSession = CMceOutSession::NewL( - *(iClipSession->iManager), - *profile, - KTestRecipientSipUri8() ); - - CMceVideoStream* videoStream = CMceVideoStream::NewLC(); - - CMceRtpSink* rtpsink = CMceRtpSink::NewLC(); - videoStream->AddSinkL( rtpsink ); - CleanupStack::Pop( rtpsink ); - - CMceFileSource* fileSource = - CMceFileSource::NewLC( *iClipSession->iManager, KTestAvcVideoFileName() ); - videoStream->SetSourceL( fileSource ); - CleanupStack::Pop( fileSource ); - - iClipSession->iSession->AddStreamL( videoStream ); - CleanupStack::Pop( videoStream ); - - CMceAudioStream* audioStream = CMceAudioStream::NewLC(); - - audioStream->AddSinkL( CMceRtpSink::NewLC() ); - CleanupStack::Pop(); - - audioStream->SetSourceL( fileSource ); - - iClipSession->iSession->AddStreamL( audioStream ); - CleanupStack::Pop( audioStream ); - - videoStream->iState = CMceMediaStream::ETranscodingRequired; - audioStream->iState = CMceMediaStream::ETranscodingRequired; - - const RPointerArray videoCodecs = videoStream->Codecs(); - EUNIT_ASSERT_EQUALS( videoCodecs.Count(), 1 ) - EUNIT_ASSERT( videoCodecs[0]->SdpName().FindF( KMceSDPNameH264() ) >= 0 ) - EUNIT_ASSERT( audioStream->Codecs().Count() > 1 ) - - TSize resolution(200,200); // Some value - videoStream->Codecs()[0]->SetResolutionL( resolution ); - audioStream->Codecs()[0]->SetBitrate( KMceAllowedAmrNbBitrateAll ); - - // Add some stream which must not be transcoded - - CMceAudioStream* inStream = CMceAudioStream::NewLC(); - - inStream->AddSinkL( CMceSpeakerSink::NewLC() ); - CleanupStack::Pop(); - - inStream->SetSourceL( CMceRtpSource::NewLC() ); - CleanupStack::Pop(); - - iClipSession->iSession->AddStreamL( inStream ); - CleanupStack::Pop( inStream ); - - // Transcode - iClipSession->TranscodeL( KTestAvcVideoFileName() ); - - // Check that transcoding has begun (transcoding to H263 as we don't - // know whether other end supports H264) EUNIT_ASSERT( iClipSession->iTranscodingOngoing ) - EUNIT_ASSERT( videoStream->State() == CMceMediaStream::ETranscoding ) - EUNIT_ASSERT( audioStream->State() == CMceMediaStream::ETranscoding ) - EUNIT_ASSERT( inStream->State() != CMceMediaStream::ETranscoding ) - - // Check that codecs have been replaced - const RPointerArray videoCodecs2 = videoStream->Codecs(); - EUNIT_ASSERT_EQUALS( videoCodecs2.Count(), 1 ) - EUNIT_ASSERT( videoCodecs2[0]->SdpName().FindF( KMceSDPNameH263() ) >= 0 ) - EUNIT_ASSERT( audioStream->Codecs().Count() == 1 ) - - EUNIT_ASSERT( videoStream->Codecs()[0]->Resolution() != resolution ) - EUNIT_ASSERT( audioStream->Codecs()[0]->AllowedBitrates() == - KMceAllowedAmrNbBitrate475 ) - } - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_CancelTranscodeLL() - { - // Check that canceling transcoding is not possible before actual - // transcoding - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->CancelTranscodeL(), - KErrNotReady ) - - // Construct session structure - - CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile(); - - iClipSession->iSession = CMceOutSession::NewL( - *(iClipSession->iManager), - *profile, - KTestRecipientSipUri8() ); - - CMceVideoStream* videoStream = CMceVideoStream::NewLC(); - - CMceRtpSink* rtpsink = CMceRtpSink::NewLC(); - videoStream->AddSinkL( rtpsink ); - CleanupStack::Pop( rtpsink ); - - CMceFileSource* fileSource = - CMceFileSource::NewLC( *iClipSession->iManager, KTestVideoFileName() ); - videoStream->SetSourceL( fileSource ); - CleanupStack::Pop( fileSource ); - - iClipSession->iSession->AddStreamL( videoStream ); - CleanupStack::Pop( videoStream ); - - CMceAudioStream* audioStream = CMceAudioStream::NewLC(); - - audioStream->AddSinkL( CMceRtpSink::NewLC() ); - CleanupStack::Pop(); - - audioStream->SetSourceL( fileSource ); - - iClipSession->iSession->AddStreamL( audioStream ); - CleanupStack::Pop( audioStream ); - - // Set need for transcoding - videoStream->iState = CMceMediaStream::ETranscodingRequired; - audioStream->iState = CMceMediaStream::ETranscodingRequired; - - // Transcode - iClipSession->TranscodeL( KTestAvcVideoFileName() ); - - EUNIT_ASSERT( videoStream->State() == CMceMediaStream::ETranscoding ) - EUNIT_ASSERT( audioStream->State() == CMceMediaStream::ETranscoding ) - - // Cancel - iClipSession->CancelTranscodeL(); - - EUNIT_ASSERT( videoStream->State() == - CMceMediaStream::ETranscodingRequired ) - EUNIT_ASSERT( audioStream->State() == - CMceMediaStream::ETranscodingRequired ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_PlayLL() - { - // Check that resuming is not possible before invite - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PlayL(), KErrNotReady ) - - ESTABLISH_OUT_SESSION( iClipSession ); - - // Check that playing is not possible during FFWD - iClipSession->iFFWDStartTime = TTime( 10 ); - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PlayL(), KErrNotReady ) - iClipSession->iFFWDStartTime = TTime( 0 ); - - // Check that playing is not possible during FRWD - iClipSession->iFRWDStartTime = TTime( 10 ); - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PlayL(), KErrNotReady ) - iClipSession->iFRWDStartTime = TTime( 0 ); - - // Successful case - CMceFileSource* file = - MusEngMceUtils::GetFileSourceL( *(iClipSession->iSession) ); - - file->iIsEnabled = EFalse; - - iClipSession->PlayL(); - - EUNIT_ASSERT( file->IsEnabled() ) - - // Try to play again, request should be ignored - - iClipSession->PlayL(); - - EUNIT_ASSERT( file->IsEnabled() ) - - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_PauseLL() - { - // Check that pausing is not possible before invite - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PauseL(), KErrNotReady ) - - ESTABLISH_OUT_SESSION( iClipSession ); - - // Check that pausing is not possible during FFWD - iClipSession->iFFWDStartTime = TTime( 10 ); - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PauseL(), KErrNotReady ) - iClipSession->iFFWDStartTime = TTime( 0 ); - - // Check that pausing is not possible during FRWD - iClipSession->iFRWDStartTime = TTime( 10 ); - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->PauseL(), KErrNotReady ) - iClipSession->iFRWDStartTime = TTime( 0 ); - - // Successful case - - CMceFileSource* file = - MusEngMceUtils::GetFileSourceL( *(iClipSession->iSession) ); - - file->iIsEnabled = ETrue; - - iClipSession->PauseL(); - - EUNIT_ASSERT( !file->IsEnabled() ) - - // Try to pause again, request should be ignored - - iClipSession->PauseL(); - - EUNIT_ASSERT( !file->IsEnabled() ) - - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -void UT_CMusEngClipSession::UT_IsPlayingLL() - { - // Try without a session - EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->IsPlayingL(), KErrNotReady ); - - // Normal cases - ESTABLISH_OUT_SESSION( iClipSession ); - - iClipSession->PlayL(); - EUNIT_ASSERT( iClipSession->IsPlayingL() ) - - iClipSession->PauseL(); - EUNIT_ASSERT( !iClipSession->IsPlayingL() ) + EUNIT_ASSERT( iClipSession->iMceManagerUid == TUid::Uid( KMusUiUid ) ); } @@ -821,39 +165,26 @@ // ----------------------------------------------------------------------------- // void UT_CMusEngClipSession::UT_CompleteSessionStructureLL() - { - + { CMceStreamBundle* localBundle = - CMceStreamBundle::NewLC( CMceStreamBundle::ELS ); + CMceStreamBundle::NewLC( CMceStreamBundle::ELS ); // Check that structure cannot be completed before creating the session EUNIT_ASSERT_SPECIFIC_LEAVE( iClipSession->CompleteSessionStructureL( *localBundle ), KErrNotReady ) - // Check that structure cannot be completed before setting the file name - iClipSession->iFileName = KNullDesC(); - CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile(); - + // Normal case + CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile(); iClipSession->iSession = CMceOutSession::NewL( - *(iClipSession->iManager), - *profile, - KTestRecipientSipUri8() ); - - EUNIT_ASSERT_SPECIFIC_LEAVE( - iClipSession->CompleteSessionStructureL( *localBundle ), - KErrNotReady ) + *iClipSession->iManager, *profile, KTestRecipientSipUri8() ); - // Normal case - iClipSession->iFileName = KTestVideoFileName(); iClipSession->CompleteSessionStructureL( *localBundle ); - EUNIT_ASSERT( iClipSession->iSession->Streams().Count() == 3 ) EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Type() == KMceVideo ) EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Source() ) EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Source()->Type() == - KMceFileSource ) - EUNIT_ASSERT( !iClipSession->IsPlayingL() ) + KMceFileSource ) EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Sinks().Count() == 1 ) EUNIT_ASSERT( iClipSession->iSession->Streams()[0]->Sinks()[0]->Type() == KMceRTPSink ) @@ -883,7 +214,7 @@ CleanupStack::PopAndDestroy( videoStream ); // Simulate sending invite - iClipSession->InviteL( KTestRecipientSipUri() ); + iClipSession->EstablishLcSessionL(); // Try all the stream states CMceMediaStream* changedStream = iClipSession->iSession->Streams()[0]; @@ -892,56 +223,57 @@ changedStream->iState = CMceMediaStream::EUninitialized; static_cast(iClipSession)->StreamStateChanged( *changedStream ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EInitialized, stream is initialized changedStream->iState = CMceMediaStream::EInitialized; static_cast(iClipSession)->StreamStateChanged( *changedStream ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EBuffering, stream is buffering changedStream->iState = CMceMediaStream::EBuffering; static_cast(iClipSession)->StreamStateChanged( *changedStream ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EIdle, stream is not receiving RTP changedStream->iState = CMceMediaStream::EIdle; static_cast(iClipSession)->StreamStateChanged( *changedStream ); - EUNIT_ASSERT( iObserver->iStreamIdleCalled ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EStreaming, stream is streaming changedStream->iState = CMceMediaStream::EStreaming; static_cast(iClipSession)->StreamStateChanged( *changedStream ); - EUNIT_ASSERT( iObserver->iStreamStreamingCalled ) - iObserver->Reset(); + EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ), + TInt( CLcSessionObserverStub::EPlayerStateChanged ) ) + iLcSessionObserver->Reset(); // EDisabled, stream is explicitly disabled changedStream->iState = CMceMediaStream::EDisabled; static_cast(iClipSession)->StreamStateChanged( *changedStream ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // ENoResources, stream has no needed resources to stream changedStream->iState = CMceMediaStream::ENoResources; static_cast(iClipSession)->StreamStateChanged( *changedStream ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // ETranscodingRequired, stream requires non-realtime transcoding changedStream->iState = CMceMediaStream::ETranscodingRequired; static_cast(iClipSession)->StreamStateChanged( *changedStream ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // ETranscoding, stream is transcoding in non-realtime changedStream->iState = CMceMediaStream::ETranscoding; static_cast(iClipSession)->StreamStateChanged( *changedStream ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) } @@ -962,7 +294,7 @@ CleanupStack::PopAndDestroy( videoStream ); // Simulate sending invite - iClipSession->InviteL( KTestRecipientSipUri() ); + iClipSession->EstablishLcSessionL(); // Try all the non-default stream states CMceMediaStream* changedStream = iClipSession->iSession->Streams()[0]; @@ -973,68 +305,9 @@ changedSource->iIsEnabled = EFalse; iClipSession->StreamStateChanged( *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->iEndOfClipCalled == ETrue ) + // TODO: EUNIT_ASSERT( iLcSessionObserver->iEndOfClipCalled ) changedSource->iIsEnabled = ETrue; - iObserver->Reset(); - - // ETranscodingRequired, transcoding has failed - iClipSession->iSession->iState = CMceSession::EIdle; - iClipSession->iTranscodingOngoing = ETrue; - changedStream->iState = CMceMediaStream::ETranscodingRequired; - static_cast(iClipSession)->StreamStateChanged( - *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->iTranscodingFailedCalled ) - EUNIT_ASSERT( !iClipSession->iTranscodingOngoing ) - iObserver->Reset(); - - // ETranscoding, transcoding has progresssed - iClipSession->iSession->iState = CMceSession::EIdle; - changedStream->iState = CMceMediaStream::ETranscoding; - static_cast(changedSource)->iTranscodingPercentage = 20; - static_cast(iClipSession)->StreamStateChanged( - *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->iTranscodingProgressedPercentage == 20 ) - iObserver->Reset(); - - // ETranscoding, transcoding has progresssed, querying percentage fails - iClipSession->iSession->iState = CMceSession::EIdle; - changedStream->iState = CMceMediaStream::ETranscoding; - iObserver->iTranscodingProgressedPercentage = -1; // make assertion possible - static_cast(changedSource)->iFailWithCode = KErrNotReady; - static_cast(changedSource)->iTranscodingPercentage = 30; - static_cast(iClipSession)->StreamStateChanged( - *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->iTranscodingProgressedPercentage == 0 ) - iObserver->Reset(); - - // EInitialized, transcoding has completed, establishment fails - iClipSession->iSession->iState = CMceSession::EIdle; - iClipSession->iSession->iFailWithCode = KErrCorrupt; // != KErrNone - iClipSession->iTranscodingOngoing = ETrue; - changedStream->iState = CMceMediaStream::EInitialized; - static_cast(changedSource)->iTranscodingPercentage = 100; - static_cast(iClipSession)->StreamStateChanged( - *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->iTranscodingCompletedInitCalled ) - EUNIT_ASSERT( iObserver->iTranscodingCompletedFinalizeCalled ) - EUNIT_ASSERT( iObserver->iSessionFailedCalled ) - EUNIT_ASSERT( !iClipSession->iTranscodingOngoing ) - iObserver->Reset(); - - // EInitialized, transcoding has completed, establishment succeeds - iClipSession->iSession->iState = CMceSession::EIdle; - iClipSession->iTranscodingOngoing = ETrue; - changedStream->iState = CMceMediaStream::EInitialized; - static_cast(changedSource)->iTranscodingPercentage = 100; - static_cast(iClipSession)->StreamStateChanged( - *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->iTranscodingCompletedInitCalled ) - EUNIT_ASSERT( iObserver->iTranscodingCompletedFinalizeCalled ) - // Next cannot be asserted since it is not true with alloc decoration - // EUNIT_ASSERT( !iObserver->iSessionFailedCalled ) - EUNIT_ASSERT( !iClipSession->iTranscodingOngoing ) - iObserver->Reset(); - + iLcSessionObserver->Reset(); // Test default stream state change behavior, remove or change when // behavior changes @@ -1044,13 +317,13 @@ changedStream->iState = CMceMediaStream::EUninitialized; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EInitialized, stream is initialized changedStream->iState = CMceMediaStream::EInitialized; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // Special meaning (Transcoding ready), tested separately @@ -1058,20 +331,21 @@ changedStream->iState = CMceMediaStream::EBuffering; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EIdle, stream is not receiving RTP changedStream->iState = CMceMediaStream::EIdle; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->iStreamIdleCalled ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EStreaming, stream is streaming changedStream->iState = CMceMediaStream::EStreaming; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->iStreamStreamingCalled ) - iObserver->Reset(); + EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ), + TInt( CLcSessionObserverStub::EPlayerStateChanged ) ) + iLcSessionObserver->Reset(); // EDisabled, stream is explicitly disabled // This state has non-default meaning, tested before defaults @@ -1080,9 +354,7 @@ changedStream->iState = CMceMediaStream::ENoResources; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSource ); - EUNIT_ASSERT( iObserver->IsReseted() ) - - + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) } @@ -1102,7 +374,7 @@ CleanupStack::PopAndDestroy( videoStream ); // Simulate sending invite - iClipSession->InviteL( KTestRecipientSipUri() ); + iClipSession->EstablishLcSessionL(); // Test default stream state change behavior CMceMediaStream* changedStream = iClipSession->iSession->Streams()[0]; @@ -1113,65 +385,65 @@ static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSink ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EInitialized, stream is initialized changedStream->iState = CMceMediaStream::EInitialized; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSink ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EBuffering, stream is buffering changedStream->iState = CMceMediaStream::EBuffering; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSink ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EIdle, stream is not receiving RTP changedStream->iState = CMceMediaStream::EIdle; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSink ); - EUNIT_ASSERT( iObserver->iStreamIdleCalled ); + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // EStreaming, stream is streaming changedStream->iState = CMceMediaStream::EStreaming; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSink ); - EUNIT_ASSERT( iObserver->iStreamStreamingCalled ) - iObserver->Reset(); + EUNIT_ASSERT_EQUALS( TInt( iLcSessionObserver->iCalledFunction ), + TInt( CLcSessionObserverStub::EPlayerStateChanged ) ) + iLcSessionObserver->Reset(); // EDisabled, stream is explicitly disabled changedStream->iState = CMceMediaStream::EDisabled; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSink ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // ENoResources, stream has no needed resources to stream changedStream->iState = CMceMediaStream::ENoResources; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSink ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // ETranscodingRequired, stream requires non-realtime transcoding changedStream->iState = CMceMediaStream::ETranscodingRequired; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSink ); - EUNIT_ASSERT( iObserver->IsReseted() ) + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) // ETranscoding, stream is transcoding in non-realtime changedStream->iState = CMceMediaStream::ETranscoding; static_cast(iClipSession)->StreamStateChanged( *changedStream, *changedSink ); - EUNIT_ASSERT( iObserver->IsReseted() ) - + EUNIT_ASSERT( iLcSessionObserver->IsReseted() ) } @@ -1265,65 +537,6 @@ // // ----------------------------------------------------------------------------- // -void UT_CMusEngClipSession::UT_HasClipEndedL() - { - // Try before establishing the session - EUNIT_ASSERT( !iClipSession->HasClipEnded() ) - - // Try with session, but without video out stream - - CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile(); - - iClipSession->iSession = CMceOutSession::NewL( - *(iClipSession->iManager), - *profile, - KTestRecipientSipUri8() ); - - EUNIT_ASSERT( !iClipSession->HasClipEnded() ) - - // Try with video out stream without source... - CMceVideoStream* videoOut = CMceVideoStream::NewLC(); - - videoOut->AddSinkL( CMceRtpSink::NewLC() ); - CleanupStack::Pop(); - - iClipSession->iSession->AddStreamL( videoOut ); - CleanupStack::Pop( videoOut ); - - EUNIT_ASSERT( !iClipSession->HasClipEnded() ) - - // And with enabled source and stream - videoOut->SetSourceL( CMceFileSource::NewLC( *iClipSession->iManager, - iClipSession->iFileName ) ); - CleanupStack::Pop(); - - EUNIT_ASSERT( !iClipSession->HasClipEnded() ) - - // try with different position and duration - (static_cast (videoOut->Source()))->iPosition = 90; - (static_cast (videoOut->Source()))->iDuration = 111; - EUNIT_ASSERT( !iClipSession->HasClipEnded() ) - - // Disapling source - (static_cast (videoOut->Source()))->DisableL(); - EUNIT_ASSERT( !iClipSession->HasClipEnded() ) - - // Disapling stream - videoOut->iState = CMceMediaStream::EDisabled; - EUNIT_ASSERT( !iClipSession->HasClipEnded() ) - - // and finaly try with "real" end of clip - (static_cast (videoOut->Source()))->iPosition = 0; - (static_cast (videoOut->Source()))->iDuration = 111; - - EUNIT_ASSERT( iClipSession->HasClipEnded() ) - } - - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// void UT_CMusEngClipSession::UT_ConstructAudioStructureLL() { @@ -1356,8 +569,9 @@ videoOut->AddSinkL( CMceRtpSink::NewLC() ); CleanupStack::Pop(); - videoOut->SetSourceL( CMceFileSource::NewLC( *iClipSession->iManager, - iClipSession->iFileName ) ); + videoOut->SetSourceL( CMceFileSource::NewLC( + *iClipSession->iManager, + iClipSession->LocalVideoPlayer()->LcSourceFileControl()->LcFileName() ) ); CleanupStack::Pop(); iClipSession->iSession->AddStreamL( videoOut ); @@ -1424,7 +638,8 @@ // void UT_CMusEngClipSession::UT_EstablishSessionLL() { - iClipSession->SetClipL( KTestAvcVideoFileName() ); + iClipSession->LocalVideoPlayer()->LcSourceFileControl()->SetLcFileNameL( + KTestAvcVideoFileName() ); // Try to establish, must fail, because of missing session TRAPD( error, iClipSession->EstablishSessionL() ); @@ -1437,7 +652,7 @@ // 1.Test that in case the peer party supports H264, no transcoding is needed // Call to CMusEngOutMceSession::InviteL leads to call to EstablishL - iClipSession->InviteL( KTestRecipientSipUri ); + iClipSession->EstablishLcSessionL(); const RPointerArray& streams = iClipSession->iSession->Streams(); @@ -1453,13 +668,10 @@ } } - - EUNIT_ASSERT( !iObserver->iTranscodingNeededCalled ) - EUNIT_ASSERT( !iClipSession->iTranscodingRequiredDueMissingOptions ) /////// // 2.Test the case when we don't know whether peer supports H264, - // transcoding is needed, H264 codec has to be removed from the codec list + // transcoding is needed => function will leave with KErrNotSupported delete iClipSession->iSession; iClipSession->iSession = NULL; @@ -1467,140 +679,25 @@ delete iClipSession->iVideoCodecList; iClipSession->iVideoCodecList = NULL; - // Call to CMusEngOutMceSession::InviteL leads to call to EstablishL - iClipSession->InviteL( KTestRecipientSipUri ); - - const RPointerArray& streams2 = iClipSession->iSession->Streams(); - - for ( TInt i = 0; i < streams2.Count(); ++i ) - { - if ( streams2[i]->Type() == KMceVideo ) - { - CMceVideoStream* videoStream = static_cast( streams2[i] ); - const RPointerArray codecs = videoStream->Codecs(); - EUNIT_ASSERT_EQUALS( codecs.Count(), 1 ) - EUNIT_ASSERT( codecs[0]->SdpName().FindF( KMceSDPNameH263() ) >= 0 ) - } - } - - EUNIT_ASSERT( iObserver->iTranscodingNeededCalled ) - EUNIT_ASSERT( iObserver->iDueUnknowCapas ) - EUNIT_ASSERT( iClipSession->iTranscodingRequiredDueMissingOptions ) + MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipSession->EstablishLcSessionL(), + KErrNotSupported ) + /////// - // 3. Establish behaves differently at second round in case clip is AVC - // and because remote party's capabilities were unknown. Use-case is such - // that AVC is tried to be transcoded first but if it fails, invite is retried - // by using AVC - iObserver->Reset(); - iClipSession->InviteL( KTestRecipientSipUri ); - const RPointerArray& testStreams = iClipSession->iSession->Streams(); - - for ( TInt i = 0; i < testStreams.Count(); ++i ) - { - if ( testStreams[i]->Type() == KMceVideo ) - { - CMceVideoStream* videoStream = static_cast( testStreams[i] ); - const RPointerArray codecs = videoStream->Codecs(); - EUNIT_ASSERT_EQUALS( codecs.Count(), 1 ) - EUNIT_ASSERT( codecs[0]->SdpName().FindF( KMceSDPNameH264() ) >= 0 ) - } - } - - EUNIT_ASSERT( !iObserver->iTranscodingNeededCalled ) - EUNIT_ASSERT( !iObserver->iDueUnknowCapas ) - - /////// - // 4.Test that if peer doesn't supports H264, transcoding is needed - // H264 codec has to be removed from the codec list - - iObserver->iTranscodingNeededCalled = EFalse; + // 3.Test that if peer doesn't supports H264, transcoding is needed + // => function will leave with KErrNotSupported delete iClipSession->iSession; iClipSession->iSession = NULL; iClipSession->iVideoCodecList = KMceSDPNameH263().AllocL(); - // Call to CMusEngOutMceSession::InviteL leads to call to EstablishL - iClipSession->InviteL( KTestRecipientSipUri ); - - const RPointerArray& streams3 = iClipSession->iSession->Streams(); - - for ( TInt i = 0; i < streams3.Count(); ++i ) - { - if ( streams3[i]->Type() == KMceVideo ) - { - CMceVideoStream* videoStream = static_cast( streams3[i] ); - const RPointerArray codecs = videoStream->Codecs(); - EUNIT_ASSERT_EQUALS( codecs.Count(), 1 ) - EUNIT_ASSERT( codecs[0]->SdpName().FindF( KMceSDPNameH263() ) >= 0 ) - } - } - - EUNIT_ASSERT( iObserver->iTranscodingNeededCalled ) - EUNIT_ASSERT( !iObserver->iDueUnknowCapas ) - + MUSENG_EUNIT_ASSERT_SPECIFIC_LEAVE( + iClipSession->EstablishLcSessionL(), + KErrNotSupported ) } -void UT_CMusEngClipSession::UT_IsRewindFromEndL() - { - // Try before establishing the session - EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() ) - - // Try with session, but without video out stream - - CSIPProfile* profile = iClipSession->iSipProfileHandler->Profile(); - - iClipSession->iSession = CMceOutSession::NewL( - *(iClipSession->iManager), - *profile, - KTestRecipientSipUri8() ); - - EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() ) - - // Try with video out stream without source... - CMceVideoStream* videoOut = CMceVideoStream::NewLC(); - - videoOut->AddSinkL( CMceRtpSink::NewLC() ); - CleanupStack::Pop(); - - iClipSession->iSession->AddStreamL( videoOut ); - CleanupStack::Pop( videoOut ); - - EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() ) - - // And with enabled source and stream - videoOut->SetSourceL( CMceFileSource::NewLC( *iClipSession->iManager, - iClipSession->iFileName ) ); - CleanupStack::Pop(); - - EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() ) - - // try with different position and duration - (static_cast (videoOut->Source()))->iPosition = 90; - (static_cast (videoOut->Source()))->iDuration = 111; - EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() ) - - // Disapling source - (static_cast (videoOut->Source()))->DisableL(); - EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() ) - - // Disapling stream - videoOut->iState = CMceMediaStream::EDisabled; - EUNIT_ASSERT( iClipSession->IsRewindFromEnd() ) - - iClipSession->iPause = ETrue; - EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() ) - - iClipSession->iPause = EFalse; - EUNIT_ASSERT( iClipSession->IsRewindFromEnd() ) - - // and finaly try with "real" end of clip - (static_cast (videoOut->Source()))->iPosition = 0; - (static_cast (videoOut->Source()))->iDuration = 111; - - EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() ) - } // TEST TABLE @@ -1617,90 +714,6 @@ SetupL, UT_NewLL, Teardown) EUNIT_TEST( - "SetClipL - test ", - "CMusEngClipSession", - "AetClipL", - "FUNCTIONALITY", - SetupL, UT_SetClipLL, Teardown) - -EUNIT_TEST( - "FastForwardL - test ", - "CMusEngClipSession", - "FastForwardL", - "FUNCTIONALITY", - SetupL, UT_FastForwardLL, Teardown) - -EUNIT_TEST( - "FastRewindL - test ", - "CMusEngClipSession", - "FastRewindL", - "FUNCTIONALITY", - SetupL, UT_FastRewindLL, Teardown) - -EUNIT_TEST( - "PositionL - test ", - "CMusEngClipSession", - "PositionL", - "FUNCTIONALITY", - SetupL, UT_PositionLL, Teardown) - -EUNIT_TEST( - "DurationL - test ", - "CMusEngClipSession", - "DurationL", - "FUNCTIONALITY", - SetupL, UT_DurationLL, Teardown) - -EUNIT_TEST( - "SetPositionL - test ", - "CMusEngClipSession", - "SetPositionL", - "FUNCTIONALITY", - SetupL, UT_SetPositionLL, Teardown) - -EUNIT_TEST( - "TranscodeL - To AVC test ", - "CMusEngClipSession", - "TranscodeL", - "FUNCTIONALITY", - SetupL, UT_TranscodeLToAvcL, Teardown) - -EUNIT_TEST( - "TranscodeL - To H263 test ", - "CMusEngClipSession", - "TranscodeL", - "FUNCTIONALITY", - Setup2L, UT_TranscodeLToH263L, Teardown) - -EUNIT_TEST( - "CancelTranscodeL - test ", - "CMusEngClipSession", - "CancelTranscodeL", - "FUNCTIONALITY", - SetupL, UT_CancelTranscodeLL, Teardown) - -EUNIT_TEST( - "PlayL - test ", - "CMusEngClipSession", - "PlayL", - "FUNCTIONALITY", - SetupL, UT_PlayLL, Teardown) - -EUNIT_TEST( - "PauseL - test ", - "CMusEngClipSession", - "PauseL", - "FUNCTIONALITY", - SetupL, UT_PauseLL, Teardown) - -EUNIT_TEST( - "IsPlayingL - test ", - "CMusEngClipSession", - "IsPlayingL", - "FUNCTIONALITY", - SetupL, UT_IsPlayingLL, Teardown) - -EUNIT_TEST( "CompleteSessionStructureL - test ", "CMusEngClipSession", "CompleteSessionStructureL", @@ -1741,13 +754,6 @@ "AddVideoCodecL", "FUNCTIONALITY", SetupL, UT_AddVideoCodecLL, Teardown) - -EUNIT_TEST( - "HasClipEnded - test ", - "CMusEngClipSession", - "HasClipEnded", - "FUNCTIONALITY", - SetupL, UT_HasClipEndedL, Teardown) EUNIT_TEST( "ConstructAudioStructureL - test ", @@ -1770,13 +776,7 @@ "FUNCTIONALITY", SetupL, UT_EstablishSessionLL, Teardown) -EUNIT_TEST( - "IsRewindFromEnd - test ", - "CMusEngClipSession", - "IsRewindFromEnd", - "FUNCTIONALITY", - SetupL, UT_IsRewindFromEndL, Teardown) - + EUNIT_END_TEST_TABLE // END OF FILE