diff -r 951a5db380a0 -r e0b5df5c0969 videditor/ManualVideoEditor/src/VeiCutVideoContainer.cpp --- a/videditor/ManualVideoEditor/src/VeiCutVideoContainer.cpp Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1653 +0,0 @@ -/* -* Copyright (c) 2010 Ixonos Plc. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the "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: -* Ixonos Plc -* -* Description: -* -*/ - - -// INCLUDE FILES -// System includes -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -// User includes -#include "VeiAppUi.h" -#include "VeiCutterBar.h" -#include "VeiCutVideoContainer.h" -#include "VeiCutVideoView.h" -#include "veitextdisplay.h" -#include "VideoEditorHelp.hlp.hrh" // Topic contexts (literals) -#include "VideoEditorCommon.h" -#include "VideoEditorUtils.h" -#include "VeiErrorUi.h" - - -// ================= MEMBER FUNCTIONS ======================= -void CleanupRarray( TAny* object ) - { - (( RImageTypeDescriptionArray*)object)->ResetAndDestroy(); - } - -CVeiCutVideoContainer* CVeiCutVideoContainer::NewL( const TRect& aRect, CVeiCutVideoView& aView, CVeiErrorUI& aErrorUI ) - { - CVeiCutVideoContainer* self = CVeiCutVideoContainer::NewLC( aRect, aView, aErrorUI ); - CleanupStack::Pop( self ); - return self; - } - -CVeiCutVideoContainer* CVeiCutVideoContainer::NewLC( const TRect& aRect, CVeiCutVideoView& aView, CVeiErrorUI& aErrorUI ) - { - CVeiCutVideoContainer* self = new (ELeave) CVeiCutVideoContainer( aRect, aView, aErrorUI ); - CleanupStack::PushL( self ); - self->ConstructL( aRect, aView, aErrorUI ); - return self; - } - -void CVeiCutVideoContainer::ConstructL( const TRect& aRect, CVeiCutVideoView& /*aView*/, CVeiErrorUI& /*aErrorUI*/ ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::ConstructL: in"); - CreateWindowL(); - - iInternalVolume = 0; - - iState = EStateInitializing; - iFrameReady = EFalse; - iPlayOrPlayMarked = EFalse; - - iSeekPos = TTimeIntervalMicroSeconds( 0 ); - iSeeking = EFalse; - iCutVideoBar = CVeiCutterBar::NewL( this ); - - iConverter = CVeiImageConverter::NewL( this ); - iTakeSnapshot = EFalse; - iVideoDisplay = CVeiVideoDisplay::NewL( iDisplayRect, this, *this ); - iCutTimeDisplay = CVeiTextDisplay::NewL( iCutTimeDisplayRect, this ); - - TFileName mbmPath( VideoEditorUtils::IconFileNameAndPath(KVideoEditorUiComponentsIconFileId) ); - - AknIconUtils::CreateIconL( iPauseBitmap, iPauseBitmapMask, - mbmPath, EMbmVideoeditoruicomponentsQgn_prop_ve_pause, - EMbmVideoeditoruicomponentsQgn_prop_ve_pause_mask ); - - SetRect( aRect ); - - iBgContext = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain, Rect(), EFalse ); - iVideoBarTimer = CPeriodic::NewL( CActive::EPriorityLow ); - - EnableDragEvents(); - - ActivateL(); - - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::ConstructL: out"); - } - -CVeiCutVideoContainer::CVeiCutVideoContainer( const TRect& /*aRect*/, CVeiCutVideoView& aView, CVeiErrorUI& aErrorUI ):iView( aView ), iErrorUI( aErrorUI ) - { - } - - -CVeiCutVideoContainer::~CVeiCutVideoContainer() - { - if ( iCutVideoBar ) - { - delete iCutVideoBar; - } - if ( iBgContext ) - { - delete iBgContext; - } - if ( iVideoDisplay ) - { - delete iVideoDisplay; - } - if ( iCutTimeDisplay ) - { - delete iCutTimeDisplay; - } - if ( iVideoClipInfo ) - { - delete iVideoClipInfo; - iVideoClipInfo = NULL; - } - if ( iConverter ) - { - iConverter->Cancel(); - delete iConverter; - } - if ( iVideoBarTimer ) - { - iVideoBarTimer->Cancel(); - delete iVideoBarTimer; - } - - if ( iProgressDialog ) - { - delete iProgressDialog; - iProgressDialog = NULL; - } - if ( iSaveToFileName ) - { - delete iSaveToFileName; - iSaveToFileName = NULL; - } - - delete iPauseBitmap; - delete iPauseBitmapMask; - - delete iRemConTarget; - - delete iCallBackSaveSnapshot; - delete iCallBackTakeSnapshot; - } - -void CVeiCutVideoContainer::DialogDismissedL( TInt aButtonId ) - { - if ( aButtonId == -1 ) - { // when pressing cancel button. - CancelSnapshotSave(); - } - iTakeSnapshot = EFalse; - } - -void CVeiCutVideoContainer::SizeChanged() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::SizeChanged(): In"); - TSize videoScreenSize; - TRect rect( Rect() ); - if ( iBgContext ) - { - iBgContext->SetRect( rect ); - } - LOGFMT2(KVideoEditorLogFile, "CVeiCutVideoContainer::SizeChanged(): Rect(): %d,%d", rect.iBr.iX, rect.iBr.iY); - - // Scissor icon - TAknLayoutRect scissorsIconLayout; - scissorsIconLayout.LayoutRect(Rect(),AknLayoutScalable_Apps::main_vded_pane_g1()); - iCutVideoBar->SetComponentRect(CVeiCutterBar::EScissorsIcon, scissorsIconLayout.Rect()); - - // Progress bar - TAknLayoutRect progressBarLayout; - progressBarLayout.LayoutRect(Rect(),AknLayoutScalable_Apps::vded_slider_pane()); - iCutVideoBar->SetComponentRect(CVeiCutterBar::EProgressBar, progressBarLayout.Rect()); - - // left end of the slider when that part is unselected - TAknLayoutRect sliderLeftEndLayout; - sliderLeftEndLayout.LayoutRect( progressBarLayout.Rect(),AknLayoutScalable_Apps::vded_slider_pane_g3() ); - iCutVideoBar->SetComponentRect( CVeiCutterBar::ESliderLeftEndIcon, sliderLeftEndLayout.Rect() ); - - // middle part of the slider when that part is unselected - TAknLayoutRect sliderMiddleLayout; - sliderMiddleLayout.LayoutRect(progressBarLayout.Rect(),AknLayoutScalable_Apps::vded_slider_pane_g5()); - iCutVideoBar->SetComponentRect( CVeiCutterBar::ESliderMiddleIcon, sliderMiddleLayout.Rect() ); - - // right end of the slider when that part is unselected - TAknLayoutRect sliderRightEndLayout; - sliderRightEndLayout.LayoutRect(progressBarLayout.Rect(),AknLayoutScalable_Apps::vded_slider_pane_g4()); - iCutVideoBar->SetComponentRect( CVeiCutterBar::ESliderRightEndIcon, sliderRightEndLayout.Rect() ); - - // left end of the cut selection slider - TAknLayoutRect sliderSelectedLeftEndLayout; - sliderSelectedLeftEndLayout.LayoutRect(progressBarLayout.Rect(),AknLayoutScalable_Apps::vded_slider_pane_g3()); - iCutVideoBar->SetComponentRect( CVeiCutterBar::ESliderSelectedLeftEndIcon, sliderSelectedLeftEndLayout.Rect() ); - - // middle part of the cut selection slider - TAknLayoutRect sliderSelectedMiddleLayout; - sliderSelectedMiddleLayout.LayoutRect(progressBarLayout.Rect(),AknLayoutScalable_Apps::vded_slider_pane_g5()); - iCutVideoBar->SetComponentRect( CVeiCutterBar::ESliderSelectedMiddleIcon, sliderSelectedMiddleLayout.Rect() ); - - // right end of the cut selection slider - TAknLayoutRect sliderSelectedRightEndLayout; - sliderSelectedRightEndLayout.LayoutRect(progressBarLayout.Rect(),AknLayoutScalable_Apps::vded_slider_pane_g4()); - iCutVideoBar->SetComponentRect( CVeiCutterBar::ESliderSelectedRightEndIcon, sliderSelectedRightEndLayout.Rect() ); - - // playhead - TAknLayoutRect playheadLayout; - playheadLayout.LayoutRect(progressBarLayout.Rect(),AknLayoutScalable_Apps::vded_slider_pane_g1()); - iCutVideoBar->SetComponentRect( CVeiCutterBar::EPlayheadIcon, playheadLayout.Rect() ); - - // left/right border of cut selection slider - TAknLayoutRect cutAreaBorderLayout; - cutAreaBorderLayout.LayoutRect(progressBarLayout.Rect(),AknLayoutScalable_Apps::vded_slider_pane_g2()); - iCutVideoBar->SetComponentRect( CVeiCutterBar::ECutAreaBorderIcon, cutAreaBorderLayout.Rect() ); - - - // Start cut time text - TAknLayoutText startTimeTextLayout; - startTimeTextLayout.LayoutText(rect, AknLayoutScalable_Apps::main_vded_pane_t1() ); - iCutTimeDisplay->SetComponentRect(CVeiTextDisplay::EStartTimeText, startTimeTextLayout.TextRect()); - - // End cut time text - TAknLayoutText endTimeTextLayout; - endTimeTextLayout.LayoutText(rect, AknLayoutScalable_Apps::main_vded_pane_t2() ); - iCutTimeDisplay->SetComponentRect(CVeiTextDisplay::EEndTimeText, endTimeTextLayout.TextRect()); - - // Start cut time icon - TAknLayoutRect startTimeIconLayout; - startTimeIconLayout.LayoutRect(rect, AknLayoutScalable_Apps::main_vded_pane_g2() ); - iCutTimeDisplay->SetComponentRect(CVeiTextDisplay::EStartTimeIcon, startTimeIconLayout.Rect()); - - // End cut time icon - TAknLayoutRect endTimeIconLayout; - endTimeIconLayout.LayoutRect(rect, AknLayoutScalable_Apps::main_vded_pane_g3() ); - iCutTimeDisplay->SetComponentRect(CVeiTextDisplay::EEndTimeIcon, endTimeIconLayout.Rect()); - - // Pause icon - - - - // Video Display - TAknLayoutRect videoDisplayLayout; - videoDisplayLayout.LayoutRect(Rect(),AknLayoutScalable_Apps::vded_video_pane()); - iVideoDisplay->SetRect(videoDisplayLayout.Rect()); - - iDisplayRect = videoDisplayLayout.Rect(); - iIconDisplayRect = videoDisplayLayout.Rect(); - LOGFMT2(KVideoEditorLogFile, "CVeiCutVideoContainer::SizeChanged(): iDisplayRect: %d,%d", iDisplayRect.iBr.iX, iDisplayRect.iBr.iY); - - //CVeiCutterBar - // : Change this when LAF data is ready - TPoint cutBarTl = TPoint(STATIC_CAST( TInt, rect.iBr.iX*0.0114 ), - STATIC_CAST( TInt, rect.iBr.iY*0.875 ) ); - TSize cutBarSize = TSize(STATIC_CAST( TInt, rect.iBr.iX*0.9773 ), - STATIC_CAST( TInt, rect.iBr.iY*0.0973 ) ); - - TRect cutBarRect( cutBarTl, cutBarSize ); - iCutVideoBar->SetRect( cutBarRect ); - - //CVeiTextDisplay - // : Change this when LAF data is ready - TPoint cutTimeDisplayTl = TPoint(cutBarTl.iX, - STATIC_CAST( TInt, rect.iBr.iY*0.757 ) ); - TSize cutTimeDisplaySize = TSize(cutBarSize.iWidth, - STATIC_CAST( TInt, rect.iBr.iY*0.0903 ) ); - - iCutTimeDisplayRect = TRect( cutTimeDisplayTl, cutTimeDisplaySize ); - iCutTimeDisplay->SetRect( iCutTimeDisplayRect ); - iCutTimeDisplay->SetLayout( CVeiTextDisplay::ECutInCutOut ); - - - TInt iconWidth = STATIC_CAST( TInt, rect.iBr.iX * 0.07954545455 ); - AknIconUtils::SetSize( iPauseBitmap, TSize(iconWidth,iconWidth), EAspectRatioNotPreserved ); - - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::SizeChanged(): Out"); - } - -TTypeUid::Ptr CVeiCutVideoContainer::MopSupplyObject( TTypeUid aId ) - { - if ( aId.iUid == MAknsControlContext::ETypeId && iBgContext ) - { - return MAknsControlContext::SupplyMopObject( aId, iBgContext ); - } - return CCoeControl::MopSupplyObject( aId ); - } - -TInt CVeiCutVideoContainer::CountComponentControls() const - { - return 3; - } - -CCoeControl* CVeiCutVideoContainer::ComponentControl( TInt aIndex ) const - { - switch ( aIndex ) - { - case 0: - return iCutVideoBar; - case 1: - return iVideoDisplay; - case 2: - return iCutTimeDisplay; - default: - return NULL; - } - } - -void CVeiCutVideoContainer::Draw( const TRect& aRect ) const - { - CWindowGc& gc = SystemGc(); - // draw skin background - MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); - AknsDrawUtils::Background( skin, cc, this, gc, aRect ); - - if ( EStatePaused == iState ) - { - TPoint pauseIconTl = TPoint( iIconDisplayRect.iTl.iX - STATIC_CAST( TInt, Rect().iBr.iX*0.105), - iIconDisplayRect.iTl.iY + STATIC_CAST( TInt, Rect().iBr.iY*0.178 )); - gc.BitBltMasked( pauseIconTl, iPauseBitmap, - TRect( TPoint(0,0), iPauseBitmap->SizeInPixels() ), - iPauseBitmapMask, EFalse ); - } - } - - -// ---------------------------------------------------------------------------- -// CVeiCutVideoContainer::GetHelpContext(...) const -// -// Gets the control's help context. Associates the control with a particular -// Help file and topic in a context sensitive application. -// ---------------------------------------------------------------------------- -// -void CVeiCutVideoContainer::GetHelpContext( TCoeHelpContext& aContext ) const - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::GetHelpContext(): In"); - - // Set UID of the CS Help file (same as application UID). - aContext.iMajor = KUidVideoEditor; - - // Set the context/topic. - aContext.iContext = KVED_HLP_CUT_VIDEO_VIEW; - - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::GetHelpContext(): Out"); - } - - -void CVeiCutVideoContainer::HandleControlEventL( - CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/) - { - } - -// ---------------------------------------------------------------------------- -// CVeiCutVideoContainer::HandlePointerEventL -// From CCoeControl -// ---------------------------------------------------------------------------- -// -void CVeiCutVideoContainer::HandlePointerEventL( const TPointerEvent& aPointerEvent ) - { - LOG( KVideoEditorLogFile, "CVeiCutVideoContainer::HandlePointerEventL(): In" ); - if( AknLayoutUtils::PenEnabled() && iCutVideoBar ) - { - CCoeControl::HandlePointerEventL( aPointerEvent ); - - switch( aPointerEvent.iType ) - { - case TPointerEvent::EButton1Down: - { - iIsMarkDrag = EFalse; - iIsMarkTapped = EFalse; - TRect startMarkRect = iCutVideoBar->StartMarkRect(); - TRect endMarkRect = iCutVideoBar->EndMarkRect(); - // check if the pen goes down inside the start mark - if (startMarkRect.Contains(aPointerEvent.iPosition)) - { - iIsMarkTapped = ETrue; - iTappedMark = EStartMark; - } - // check if the pen goes down inside the end mark - else if (endMarkRect.Contains(aPointerEvent.iPosition)) - { - iIsMarkTapped = ETrue; - iTappedMark = EEndMark; - } - - TRect progressBarRect(iCutVideoBar->ProgressBarRect()); - // check if the pen goes down inside the progress bar - if( progressBarRect.Contains( aPointerEvent.iPosition ) ) - { - iIsMarkDrag = EFalse; - } - break; - } - case TPointerEvent::EDrag: - { - - TRect progressBarRect(iCutVideoBar->ProgressBarRect()); - if ( progressBarRect.Contains( aPointerEvent.iPosition ) ) - { - - if (iIsMarkTapped) - { - iIsMarkDrag = ETrue; - HandleProgressBarTouchL( progressBarRect, - aPointerEvent.iPosition.iX, - ETrue, - iTappedMark ); - } - else - { - - HandleProgressBarTouchL( progressBarRect, - aPointerEvent.iPosition.iX, - EFalse); - } - } - break; - } - case TPointerEvent::EButton1Up: - { - // pen up event is handled if it wasn't dragged - if (!iIsMarkDrag) - { - TRect progressBarRect(iCutVideoBar->ProgressBarRect()); - // Check if pressed position is in progress bar's rect - if( progressBarRect.Contains( aPointerEvent.iPosition ) ) - { - HandleProgressBarTouchL( progressBarRect, - aPointerEvent.iPosition.iX, - EFalse); - } - } - break; - } - default: - { - break; - } - } - } - LOG( KVideoEditorLogFile, "CVeiCutVideoContainer::HandlePointerEventL(): Out" ); - } - - -// ---------------------------------------------------------------------------- -// CVeiCutVideoContainer::HandleProgressBarTouchL -// -// ---------------------------------------------------------------------------- -// -void CVeiCutVideoContainer::HandleProgressBarTouchL( TRect aPBRect, - TInt aPressedPoint, - TBool aDragMarks, - CVeiCutVideoContainer::TCutMark aCutMark ) - { - if (( AknLayoutUtils::PenEnabled() ) && ( iState!=EStateInitializing )) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::HandleProgressBarTouchL(): In"); - - if ( iState == EStatePlaying ) - { - StopL(); - } - - // Progress Bar start and end points, and length - TInt pbEndPoint( aPBRect.iBr.iX ); - TInt pbStartPoint = ( aPBRect.iTl.iX ); - TInt totalPBLength( pbEndPoint - pbStartPoint ); - - // calculate the time position from the tapped progress bar coordinates - TTimeIntervalMicroSeconds newPosition( - ( ( aPressedPoint - pbStartPoint ) * - iVideoClipInfo->Duration().Int64() ) / - totalPBLength ); - - // move cut marks - if (aDragMarks) - { - // check that the start mark doesn't go past the end mark - // and not to the beginning - if ((aCutMark == EStartMark) && - (newPosition.Int64() > 0) && - (aPressedPoint < iCutVideoBar->EndMarkPoint() - 2*iCutVideoBar->EndMarkRect().Width())) - { - iView.MoveStartOrEndMarkL(newPosition, EStartMark); - iCutVideoBar->SetInPoint( newPosition ); - iCutTimeDisplay->SetCutIn( newPosition ); - } - // check that the end mark doesn't go before the start mark - // and not too close to the beginning - else if ((aCutMark == EEndMark) && - (newPosition.Int64() >= KMinCutVideoLength) && - (aPressedPoint > iCutVideoBar->StartMarkPoint() + 2*iCutVideoBar->StartMarkRect().Width())) - - { - iView.MoveStartOrEndMarkL(newPosition, EEndMark); - iCutVideoBar->SetOutPoint( newPosition ); - iCutTimeDisplay->SetCutOut( newPosition ); - } - } - - // move playhead - else if (( newPosition != iLastPosition ) && !aDragMarks) - { - iLastPosition = newPosition; - - iSeekPos = TTimeIntervalMicroSeconds( newPosition ); - - iCutVideoBar->SetCurrentPoint(( static_cast(iSeekPos.Int64() / 1000) )); - iVideoDisplay->SetPositionL( iSeekPos ); - GetThumbAtL( iSeekPos ); - - iView.UpdateTimeL(); - } - - LOG( KVideoEditorLogFile, "CVeiCutVideoContainer::HandleProgressBarTouchL(): Out" ); - - }// PenEnabled - - } - - - - -void CVeiCutVideoContainer::PlayL( const TDesC& aFilename ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::PlayL: in"); - iVideoDisplay->SetPositionL( iSeekPos ); - - if (iVideoClipInfo && !iFrameReady) - { - iVideoClipInfo->CancelFrame(); - } - iVideoDisplay->PlayL( aFilename ); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::PlayL: out"); - } - -void CVeiCutVideoContainer::PlayMarkedL( const TDesC& aFilename, - const TTimeIntervalMicroSeconds& aStartTime, - const TTimeIntervalMicroSeconds& aEndTime ) - { - LOGFMT3(KVideoEditorLogFile, "CVeiCutVideoContainer::PlayMarkedL, In, aStartTime:%Ld, aEndTime:%Ld, aFilename:%S", aStartTime.Int64(), aEndTime.Int64(), &aFilename); - iPlayOrPlayMarked = ETrue; - - if (iVideoClipInfo && !iFrameReady) - { - iVideoClipInfo->CancelFrame(); - } - iVideoDisplay->PlayL( aFilename, aStartTime, aEndTime ); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::PlayMarkedL, Out"); - } - -void CVeiCutVideoContainer::StopL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::StopL, in"); - iVideoDisplay->Stop( EFalse ); - - iSeekPos = TTimeIntervalMicroSeconds( 0 ); - - SetStateL( EStateStopped ); - PlaybackPositionL(); - - if (iVideoBarTimer) - { - iVideoBarTimer->Cancel(); - } - - iCutVideoBar->SetFinishedStatus( ETrue ); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::StopL, in"); - } - -void CVeiCutVideoContainer::TakeSnapshotL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::TakeSnapshotL in"); - - if( !iVideoClipInfo || !iFrameReady ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::TakeSnapshotL: 1"); - if (!iFrameReady) - { - iTakeSnapshotWaiting = ETrue; - } - return; - } - - iTakeSnapshotWaiting = EFalse; - iTakeSnapshot = ETrue; - const TTimeIntervalMicroSeconds& pos = PlaybackPositionL(); - - GetThumbAtL( pos ); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::TakeSnapshotL out"); - } - -void CVeiCutVideoContainer::PauseL( TBool aUpdateCBA ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::PauseL: In"); - - if (EStatePlaying == iState) - { - iLastPosition = iVideoDisplay->PositionL(); - iSeekPos = iLastPosition; - // to set next start point - iVideoDisplay->SetPositionL(iSeekPos); - } - - iVideoDisplay->PauseL(); - if (iVideoBarTimer) - { - iVideoBarTimer->Cancel(); - } - - #ifdef GET_PAUSE_THUMBNAIL - GetThumbAtL( iLastPosition ); - #endif - - if (EStateStoppedInitial == iState || EStateStopped == iState || - (EStateGettingFrame == iState && - (EStateStoppedInitial == iPreviousState || EStateStopped == iPreviousState))) - { - // just to trigger cba-update - SetStateL( iState, aUpdateCBA ); - } - else if (EStateInitializing != iState) - { - SetStateL( EStatePaused, aUpdateCBA ); - } - else - { - SetStateL( EStateStoppedInitial ); - } - - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::PauseL: Out"); - } - -void CVeiCutVideoContainer::SaveSnapshotL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::SaveSnapshotL: In"); - //first we have to encode bitmap - // get encoder types - RImageTypeDescriptionArray imageTypes; - iConverter->GetEncoderImageTypesL( imageTypes ); - - CleanupStack::PushL( TCleanupItem( CleanupRarray, &imageTypes ) ); - - TInt selectedIdx = 0; - - for( TInt i=0; iDescription() == KEncoderType ) - { - selectedIdx = i; - } - } - - RFs& fs = iEikonEnv->FsSession(); - - TParse file; - TFileName newname; - TFileName snapshotdir; - - TVeiSettings saveSettings; - // Get default snapshot name from settings view - - STATIC_CAST( CVeiAppUi*, iEikonEnv->AppUi() )->ReadSettingsL( saveSettings ); - - CAknMemorySelectionDialog::TMemory memory( saveSettings.MemoryInUse() ); - - newname.Append( saveSettings.DefaultSnapshotName() ); - newname.Append( _L(".JPEG") ); - file.Set( newname, NULL, NULL ); - - TInt error = KErrNone; - - snapshotdir.Zero(); - - if ( memory == CAknMemorySelectionDialog::EPhoneMemory ) - { - snapshotdir.Append( PathInfo::PhoneMemoryRootPath() ); - } - else - { - snapshotdir.Append( PathInfo::MemoryCardRootPath() ); - } - snapshotdir.Append( PathInfo::ImagesPath() ); - - error = fs.MkDirAll( file.Path() ); - if ( ( error != KErrAlreadyExists ) && ( error != KErrNone ) ) - { - return; - } - - newname.Zero(); - newname.Append( file.NameAndExt() ); - newname.Insert( 0, snapshotdir ); - CApaApplication::GenerateFileName( fs, newname ); - - //for cancellation - if ( iSaveToFileName ) - { - delete iSaveToFileName; - iSaveToFileName = NULL; - } - iSaveToFileName = HBufC::NewL( newname.Length() ); - *iSaveToFileName = newname; - - // request the actuall save/encode - // asynchronous, the result is reported via callback NotifyCompletion - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::SaveSnapshotL: 1, calling iConverter->StartToEncodeL"); - iConverter->StartToEncodeL( newname, - imageTypes[selectedIdx]->ImageType(), imageTypes[selectedIdx]->SubType()); - - CleanupStack::PopAndDestroy( &imageTypes ); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::SaveSnapshotL: Out"); - } - -void CVeiCutVideoContainer::CancelSnapshotSave() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::CancelSnapshotSave: in"); - if ( iConverter ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::CancelSnapshotSave: 1"); - iConverter->Cancel(); - iConverter->CancelEncoding(); //also close the file - } - if ( iSaveToFileName ) - { - LOGFMT(KVideoEditorLogFile, "CVeiCutVideoContainer::CancelSnapshotSave: 2, iSaveToFileName:%S", iSaveToFileName); - - RFs& fs = iEikonEnv->FsSession(); - /*TInt result =*/ fs.Delete( *iSaveToFileName ); - delete iSaveToFileName; - iSaveToFileName = NULL; - } - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::CancelSnapshotSave: out"); - } - -void CVeiCutVideoContainer::CloseStreamL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::CloseStreamL, in"); - if( !iFrameReady && iVideoClipInfo ) - { - iVideoClipInfo->CancelFrame(); - } - PlaybackPositionL(); - SetStateL( EStateStopped, EFalse ); - iView.UpdateCBAL(iState); - - iVideoDisplay->Stop( ETrue ); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::CloseStreamL, out"); - } - -void CVeiCutVideoContainer::SetInTime( const TTimeIntervalMicroSeconds& aTime ) - { - if ( iCutTimeDisplay ) - { - iCutTimeDisplay->SetCutIn( aTime ); - } - if ( iCutVideoBar ) - { - iCutVideoBar->SetInPoint( aTime ); - } - } - -void CVeiCutVideoContainer::SetOutTime( const TTimeIntervalMicroSeconds& aTime ) - { - if ( iCutTimeDisplay ) - { - iCutTimeDisplay->SetCutOut( aTime ); - } - - if ( iCutVideoBar ) - { - iCutVideoBar->SetOutPoint( aTime ); - } - } - -TTimeIntervalMicroSeconds CVeiCutVideoContainer::PlaybackPositionL() - { - if ( ( iSeeking ) || ( EStateStopped == iState ) ) - { - return iSeekPos; - } - if ( iState != EStatePlaying ) - { - return iLastPosition; - } - - if ( iVideoClipInfo && (iVideoDisplay->PositionL() < iVideoClipInfo->Duration()) ) - { - iLastPosition = iVideoDisplay->PositionL(); - } - - if ( ( iLastPosition == TTimeIntervalMicroSeconds( 0 ) ) && - ( iSeekPos != TTimeIntervalMicroSeconds( 0 ) ) ) - { - return iSeekPos; - } - - return iLastPosition; - } - -TKeyResponse CVeiCutVideoContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) - { - if ( aType == EEventKeyDown ) - { - iKeyRepeatCount = 0; - - TBool shiftKeyPressed = (aKeyEvent.iModifiers & EModifierShift ); - if( shiftKeyPressed ) - { - if( iView.IsEnoughFreeSpaceToSaveL() && (iTakeSnapshot == EFalse )) - { - /*if (EStatePlaying == iState) - { - PauseL(); - } - */ - TakeSnapshotL(); - } - return EKeyWasConsumed; - } - - return EKeyWasNotConsumed; - } - else if ( aType == EEventKeyUp ) - { - if ( iSeeking == EFalse ) - { - return EKeyWasNotConsumed; - } - iLastPosition = iSeekPos; - iVideoDisplay->SetPositionL( iSeekPos ); - - iSeeking = EFalse; - - if ( ( ( EStateStopped == iState ) || ( EStateStoppedInitial == iState ) - || ( EStatePaused == iState )) && - ( ( iLastKeyCode == EKeyLeftArrow ) || ( iLastKeyCode == EKeyRightArrow ) ) ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::OfferKeyEventL: 1, calling GetThumbAtL()"); - GetThumbAtL( iSeekPos ); - return EKeyWasConsumed; - } - else if ( EStatePlaying == iState ) - { - if ( iVideoBarTimer->IsActive() ) - { - iVideoBarTimer->Cancel(); - } - - if ( iVideoClipInfo && (iSeekPos >= iVideoClipInfo->Duration()) ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::OfferKeyEventL: 2, calling iVideoDisplay->Stop"); - iVideoDisplay->Stop( EFalse ); - } - else - { - iVideoDisplay->SetPositionL( iSeekPos ); - iVideoDisplay->ShowBlackScreen(); - if (iVideoClipInfo && !iFrameReady) - { - iVideoClipInfo->CancelFrame(); - } - iVideoDisplay->Play(); - } - return EKeyWasConsumed; - } - else - { - return EKeyWasConsumed; - } - } - else if ( aType == EEventKey ) - { - iLastKeyCode = aKeyEvent.iCode; - - switch (aKeyEvent.iCode) - { - case EKeyOK: - { - iView.HandleCommandL( EAknSoftkeyOk ); - return EKeyWasConsumed; - } - case EKeyDownArrow: - case EKeyUpArrow: - { - iVideoDisplay->OfferKeyEventL( aKeyEvent, aType ); - return EKeyWasConsumed; - } - case EKeyRightArrow: - { - iKeyRepeatCount++; - - if ( (iKeyRepeatCount > 2) && (iSeeking == EFalse) ) - { - if ( EStatePlaying == iState ) - { - iSeekPos = iVideoDisplay->PositionL(); - } - - iVideoDisplay->PauseL(); - iSeeking = ETrue; - iKeyRepeatCount = 0; - } - - if ( iSeeking && ( iState!=EStateInitializing ) && - ( iState!=EStatePlayingMenuOpen ) ) - { - TInt adjustment = TimeIncrement( iKeyRepeatCount ); - - TInt64 newPos = iSeekPos.Int64() + adjustment; - if ( iVideoClipInfo && (newPos > iVideoClipInfo->Duration().Int64()) ) - { - newPos = iVideoClipInfo->Duration().Int64(); - } - - iSeekPos = TTimeIntervalMicroSeconds( newPos ); - - iCutVideoBar->SetCurrentPoint( (static_cast(iSeekPos.Int64() / 1000))); - - iView.UpdateTimeL(); - return EKeyWasConsumed; - } - return EKeyWasNotConsumed; - } - - case EKeyLeftArrow: - { - iKeyRepeatCount++; - - if ( (iKeyRepeatCount > 2) && (iSeeking == EFalse) ) - { - - if ( EStatePlaying == iState ) - { - iSeekPos = iVideoDisplay->PositionL(); - } - - iVideoDisplay->PauseL(); - iSeeking = ETrue; - iKeyRepeatCount = 0; - } - - if ( iSeeking && ( iState!=EStateInitializing ) && - ( iState!=EStatePlayingMenuOpen ) ) - { - - TInt adjustment = TimeIncrement( iKeyRepeatCount ); - - TInt64 newPos = iSeekPos.Int64() - adjustment; - if ( newPos < 0 ) - { - newPos = 0; - } - iSeekPos = TTimeIntervalMicroSeconds( newPos ); - - iCutVideoBar->SetCurrentPoint( static_cast((iSeekPos.Int64() / 1000)) ); - - iView.UpdateTimeL(); - - return EKeyWasConsumed; - } - return EKeyWasNotConsumed; - } - case EKeyBackspace: //Clear - { - if (EStatePlaying != iState) - { - iView.ClearInOutL( ETrue, ETrue ); - } - - return EKeyWasConsumed; - } - default: - { - return EKeyWasNotConsumed; - } - } - } - else - { - return EKeyWasNotConsumed; - } - } - - - -TInt CVeiCutVideoContainer::TimeIncrement(TInt aKeyCount) const - { - if ( aKeyCount < 3 ) - { - return 100000; - } - else if ( aKeyCount < 4 ) - { - return 300000; - } - else if ( aKeyCount < 5 ) - { - return 500000; - } - else if ( aKeyCount < 10 ) - { - return 1000000; - } - else if ( aKeyCount < 13 ) - { - return 2000000; - } - else if ( aKeyCount < 15 ) - { - return 3000000; - } - else - { - return 5000000; - } - } - -TInt CVeiCutVideoContainer::UpdateProgressNoteL() - { - TTime intervalTime; - intervalTime.HomeTime(); - intervalTime += TTimeIntervalMicroSeconds( 50000 ); - TTime currentTime; - currentTime.HomeTime(); - while ( intervalTime > currentTime ) - { - currentTime.HomeTime(); - } - - iProgressInfo->IncrementAndDraw( 1 ); - - if ( KProgressbarFinalValue <= iProgressInfo->CurrentValue() ) - { - return 0; - } - return 1; - } - - -void CVeiCutVideoContainer::GetThumbL( const TDesC& aFilename ) - { - if ( iVideoClipInfo ) - { - delete iVideoClipInfo; - iVideoClipInfo = NULL; - } - - /*iVideoClipInfo = */CVedVideoClipInfo::NewL( aFilename, *this ); - } - - -void CVeiCutVideoContainer::GetThumbAtL( const TTimeIntervalMicroSeconds& aTime ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::GetThumbAtL: In"); - if( !iVideoClipInfo || ( !iFrameReady ) ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::GetThumbAtL: 1"); - return; - } - - TRect clipResolution = iVideoClipInfo->Resolution(); - TSize resolution( iVideoDisplay->Size() ); - - TInt frameIndex; - TInt totalFrameCount; - - frameIndex = iVideoClipInfo->GetVideoFrameIndexL( aTime ); - totalFrameCount = iVideoClipInfo->VideoFrameCount(); - - if ( frameIndex > totalFrameCount ) - { - frameIndex = totalFrameCount; - } - - //Generates a thumbnail bitmap of the given frame from video clip - if ( iTakeSnapshot ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::GetThumbAtL: 2"); - TDisplayMode displayMode = ENone; - TBool enhance = ETrue; - TSize resol( clipResolution.iBr.iX, clipResolution.iBr.iY ); - - /* : - check out on every phone before releasing whether videodisplay should be stopped before starting - asynchronous GetFrameL() - see how EStateGettingFrame is handled in SetPreviewState - Stopping frees memory and it is needed in memory sensible devices - */ - iVideoClipInfo->GetFrameL( *this, frameIndex, &resol, displayMode, enhance ); - SetStateL( EStateGettingFrame ); - iFrameReady = EFalse; - ShowProgressNoteL(); - } - else - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::GetThumbAtL: 3"); - /* : - check out on every phone before releasing whether videodisplay should be stopped before starting - asynchronous GetFrameL() - see how EStateGettingFrame is handled in SetPreviewState - Stopping frees memory and it is needed in memory sensible devices - */ - iVideoClipInfo->GetFrameL( *this, frameIndex, &resolution ); - SetStateL( EStateGettingFrame ); - iFrameReady = EFalse; - } - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::GetThumbAtL: out"); - } - -void CVeiCutVideoContainer::NotifyCompletion( TInt aErr ) - { - LOGFMT(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyCompletion: In, aErr:%d", aErr); - - if (EStateTerminating == iState) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyCompletion(): app is closing..."); - return; - } - - if ( KErrNone == aErr ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyCompletion: 1"); - - if (iProgressDialog) - { - TRAP_IGNORE(iProgressDialog->GetProgressInfoL()->SetAndDraw( KProgressbarFinalValue ); - iProgressDialog->ProcessFinishedL()); - } - } - else - { - if (iProgressDialog) - { - TRAP_IGNORE(iProgressDialog->GetProgressInfoL()->SetAndDraw( KProgressbarFinalValue ); - iProgressDialog->ProcessFinishedL()); - } - iErrorUI.ShowGlobalErrorNote( aErr ); - } - - // to eliminate previous (wrong) output file from being deleted in CancelSnapshotSave() - delete iSaveToFileName; - iSaveToFileName = NULL; - - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyCompletion: Out"); - } - -void CVeiCutVideoContainer::NotifyVideoClipInfoReady( CVedVideoClipInfo& aInfo, - TInt aError ) - { - LOGFMT(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoClipInfoReady, In, aError:%d", aError); - if (KErrNone == aError) - { - if (iVideoClipInfo) - { - delete iVideoClipInfo; - iVideoClipInfo = NULL; - } - iVideoClipInfo = &aInfo; - - TRect clipResolution = Rect(); - iDuration = iVideoClipInfo->Duration(); - iCutVideoBar->SetTotalDuration( iDuration ); - iView.DrawTimeNaviL(); - - TSize resolution( clipResolution.iBr.iX, clipResolution.iBr.iY-KVeiCutBarHeight ); - iFrameReady = EFalse; - iVideoClipInfo->GetFrameL( *this, 0, &resolution ); - } - SetStateL( EStateStoppedInitial ); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoClipInfoReady, Out"); - } - - -void CVeiCutVideoContainer::NotifyVideoClipFrameCompleted(CVedVideoClipInfo& /*aInfo*/, - TInt aError, - CFbsBitmap* aFrame) - { - LOGFMT(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoClipFrameCompleted, In, aError:%d", aError); - iFrameReady = ETrue; - - if (EStateGettingFrame == iState) - { - SetStateL(iPreviousState); - } - - if (KErrNone == aError && aFrame) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoClipFrameCompleted 1"); - - if ( iTakeSnapshot ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoClipFrameCompleted 2"); - iConverter->SetBitmap( aFrame ); - if (! iCallBackSaveSnapshot) - { - TCallBack cb (CVeiCutVideoContainer::AsyncSaveSnapshot, this); - iCallBackSaveSnapshot = new (ELeave) CAsyncCallBack(cb, CActive::EPriorityStandard); - } - iCallBackSaveSnapshot->CallBack(); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoClipFrameCompleted 3"); - } - else - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoClipFrameCompleted 4"); - TRAP_IGNORE(iVideoDisplay->ShowPictureL( *aFrame )); - delete aFrame; - aFrame = NULL; - - if (iTakeSnapshotWaiting) - { - if (! iCallBackTakeSnapshot) - { - TCallBack cb (CVeiCutVideoContainer::AsyncTakeSnapshot, this); - iCallBackTakeSnapshot = new (ELeave) CAsyncCallBack(cb, CActive::EPriorityStandard); - } - iCallBackTakeSnapshot->CallBack(); - } - } - } - else - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoClipFrameCompleted 5"); - if (aFrame) - { - delete aFrame; - aFrame = NULL; - } - - if (iProgressDialog) - { - iProgressInfo->SetAndDraw( KProgressbarFinalValue ); - TRAP_IGNORE(iProgressDialog->ProcessFinishedL()); - } - } - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoClipFrameCompleted, Out"); - } - -TInt CVeiCutVideoContainer::AsyncSaveSnapshot(TAny* aThis) - { - LOG( KVideoEditorLogFile, "CVeiCutVideoView::AsyncSaveSnapshot in"); - - // In the asynchronous version, trap the rest of the functions - // to make sure that the caller's TRequestStatus is always - // completed, also in case of failures. - CVeiCutVideoContainer* container = static_cast(aThis); - TInt err = KErrNone; - TRAP(err, container->SaveSnapshotL()); - LOGFMT( KVideoEditorLogFile, "CVeiEditVideoView::AsyncSaveSnapshot 2, err:%d", err); - - if (KErrNone != err) - { - container->StopProgressDialog(); - container->ShowGlobalErrorNote(err); - } - LOG( KVideoEditorLogFile, "CVeiEditVideoView::AsyncSaveSnapshot 3, returning"); - return KErrNone; - } - -void CVeiCutVideoContainer::ShowGlobalErrorNote(const TInt aErr) - { - iErrorUI.ShowGlobalErrorNote( aErr ); - } - -void CVeiCutVideoContainer::StopProgressDialog() - { - if (iProgressDialog) - { - TRAP_IGNORE(iProgressDialog->GetProgressInfoL()->SetAndDraw( KProgressbarFinalValue ); - iProgressDialog->ProcessFinishedL()); - } - } - -void CVeiCutVideoContainer::NotifyVideoDisplayEvent( const TPlayerEvent aEvent, const TInt& aInfo ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, In"); - - if (EStateTerminating == iState) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent(): app is closing..."); - return; - } - - switch (aEvent) - { - case MVeiVideoDisplayObserver::ELoadingStarted: - { - SetStateL(EStateOpening); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::ELoadingStarted"); - break; - } - case MVeiVideoDisplayObserver::EOpenComplete: - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, MVeiVideoDisplayObserver::EOpenComplete 1"); - iVideoDisplay->SetRotationL( EVideoRotationNone ); - TTimeIntervalMicroSeconds cutInTime = iView.GetVideoClipCutInTime(); - TTimeIntervalMicroSeconds cutOutTime = iView.GetVideoClipCutOutTime(); - - if ( iView.IsForeground() ) - { - if (iVideoClipInfo && !iFrameReady) - { - iVideoClipInfo->CancelFrame(); - } - if ( iPlayOrPlayMarked ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, MVeiVideoDisplayObserver::EOpenComplete 2"); - iVideoDisplay->PlayMarkedL( cutInTime, cutOutTime ); - } - else - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, MVeiVideoDisplayObserver::EOpenComplete 3"); - iVideoDisplay->Play(); - } - iPlayOrPlayMarked = EFalse; - } - else - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EOpenComplete 4"); - PauseL(); - } - break; - } - case MVeiVideoDisplayObserver::EBufferingStarted: - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EBufferingStarted"); - SetStateL( EStateBuffering ); - if ( iVideoBarTimer ) - { - iVideoBarTimer->Cancel(); - } - break; - } - case MVeiVideoDisplayObserver::ELoadingComplete: - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, MVeiVideoDisplayObserver::ELoadingComplete 1"); - // if VED is put to background in the middle of the buffering - // iVideoDisplay->PauseL(); cannot be called during the buffering, so its called here - if (EStatePaused == iState) - { - iVideoDisplay->PauseL(); - } - else - { - SetStateL( EStatePlaying ); - if (iVideoClipInfo && !iFrameReady) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, MVeiVideoDisplayObserver::ELoadingComplete 2"); - iVideoClipInfo->CancelFrame(); - } - if ( !iVideoBarTimer->IsActive() ) - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, MVeiVideoDisplayObserver::ELoadingComplete 3"); - const TUint delay = 100000; - iVideoBarTimer->Start( delay, delay, TCallBack( CVeiCutVideoContainer::DoAudioBarUpdate, this ) ); - } - iVideoDisplay->ShowBlackScreen(); - DrawDeferred(); - } - break; - } - case MVeiVideoDisplayObserver::EPlayComplete: - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, MVeiVideoDisplayObserver::EPlayComplete"); - iVideoDisplay->SetBlackScreen( EFalse ); - iSeekPos = TTimeIntervalMicroSeconds( 0 ); - - iLastPosition = TotalLength(); - iView.StopNaviPaneUpdateL(); - iCutVideoBar->SetFinishedStatus( ETrue ); - - if (iVideoBarTimer) - { - iVideoBarTimer->Cancel(); - } - - GetThumbAtL(0); - - SetStateL( EStateStopped ); - - if (KErrNoMemory == aInfo || KErrSessionClosed == aInfo) - { - iErrorUI.ShowGlobalErrorNote( aInfo ); - StopL(); - CloseStreamL(); - } - - DrawDeferred(); - break; - } - case MVeiVideoDisplayObserver::EStop: - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EStop"); - - if (EStateGettingFrame == iState) - { - break; - } - - if ( iVideoBarTimer ) - { - iVideoBarTimer->Cancel(); - } - iSeekPos = TTimeIntervalMicroSeconds( 0 ); - - GetThumbAtL(0); - iLastPosition = TotalLength(); - iView.StopNaviPaneUpdateL(); - iCutVideoBar->SetFinishedStatus( ETrue ); - - SetStateL( EStateStopped ); - DrawDeferred(); - break; - } - case MVeiVideoDisplayObserver::EVolumeLevelChanged: - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, MVeiVideoDisplayObserver::EVolumeLevelChanged"); - TInt playerVolume = iVideoDisplay->Volume(); - iView.ShowVolumeLabelL( playerVolume ); - break; - } - case MVeiVideoDisplayObserver::EError: - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent() MVeiVideoDisplayObserver::EError"); -// iErrorUI.ShowGlobalErrorNoteL( KErrGeneral ); - SetStateL( EStateStoppedInitial ); - break; - } - default: - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, MVeiVideoDisplayObserver::default"); - break; - }; - } - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::NotifyVideoDisplayEvent, Out"); - } - - -void CVeiCutVideoContainer::SetStateL(CVeiCutVideoContainer::TCutVideoState aState, TBool aUpdateCBA) - { - LOGFMT2(KVideoEditorLogFile, "CVeiCutVideoContainer::SetStateL: in, iState:%d, aState:%d", iState, aState); - if (EStateGettingFrame == aState) - { - iPreviousState = iState; - } - - iState = aState; - if (EStatePaused == iState) - { - DrawNow(); - } - - // If the foreground is lost while an arrow key is down, we do not get - // the key up -event, and iSeeking remains true. Reseting it here just in case. - iSeeking = EFalse; - - if ( aUpdateCBA ) - { - iView.UpdateCBAL( iState ); - } - - // While playing, grab the volume keys for adjusting playback volume. - // In other states let them pass e.g. to the music player. - if(EStatePlaying == iState) - { - if (!iRemConTarget) - { - iRemConTarget = CVeiRemConTarget::NewL( *this ); - } - } - else - { - delete iRemConTarget; - iRemConTarget = NULL; - } - - if (EStateGettingFrame == aState) - { - /* : - check out on every phone before releasing whether videodisplay should be stopped before starting - asynchronous GetFrameL() - see how EStateGettingFrame is handled in SetPreviewState - Stopping frees memory and it is needed in memory sensible devices - */ - //iVideoDisplay->Stop(ETrue); - } - - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::SetStateL:: out"); - } - -void CVeiCutVideoContainer::MarkedInL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::MarkedInL, In"); - if ( EStateInitializing == iState ) - { - return; - } - const TTimeIntervalMicroSeconds& position = PlaybackPositionL(); - iSeekPos = position; - - LOGFMT(KVideoEditorLogFile, "CVeiCutVideoContainer::MarkedInL, 2, setting cutINpoint:%Ld", position.Int64()); - iCutVideoBar->SetInPoint( position ); - iCutTimeDisplay->SetCutIn( position ); - PauseL(); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::MarkedInL, Out"); - } - -void CVeiCutVideoContainer::MarkedOutL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::MarkedOutL, In"); - if ( EStateInitializing == iState ) - { - return; - } - const TTimeIntervalMicroSeconds& position = PlaybackPositionL(); - iSeekPos = position; - - LOGFMT(KVideoEditorLogFile, "CVeiCutVideoContainer::MarkedOutL, 2, setting cutOUTpoint:%Ld", position.Int64()); - iCutVideoBar->SetOutPoint( position ); - iCutTimeDisplay->SetCutOut( position ); - - PauseL(); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::MarkedOutL, Out"); - } - -void CVeiCutVideoContainer::ShowInformationNoteL( const TDesC& aMessage ) const - { - CAknInformationNote* note = new ( ELeave ) CAknInformationNote( ETrue ); - note->ExecuteLD( aMessage ); - } - -void CVeiCutVideoContainer::ShowProgressNoteL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::ShowProgressNoteL, in"); - iProgressDialog = new ( ELeave ) CAknProgressDialog( REINTERPRET_CAST( CEikDialog**, - &iProgressDialog ), ETrue); - iProgressDialog->SetCallback( this ); - iProgressDialog->PrepareLC( R_VEI_PROGRESS_NOTE_WITH_CANCEL ); - - HBufC* stringholder = StringLoader::LoadL( R_VEI_PROGRESS_NOTE_SAVING_IMAGE, iEikonEnv ); - CleanupStack::PushL( stringholder ); - - iProgressDialog->SetTextL( *stringholder ); - CleanupStack::PopAndDestroy( stringholder ); - - iProgressInfo = iProgressDialog->GetProgressInfoL(); - iProgressInfo->SetFinalValue( KProgressbarFinalValue ); - iProgressDialog->RunLD(); - - iProgressInfo->SetAndDraw( 50 ); - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::ShowProgressNoteL, Out"); - } - -TInt CVeiCutVideoContainer::DoAudioBarUpdate( TAny* aThis ) - { - STATIC_CAST( CVeiCutVideoContainer*, aThis )->DoUpdate(); - return 42; - } - -void CVeiCutVideoContainer::DoUpdate() - { - TTimeIntervalMicroSeconds time; - time = iVideoDisplay->PositionL(); - if ( iSeeking ) - { - time = iSeekPos; - LOGFMT(KVideoEditorLogFile, "CVeiCutVideoContainer::DoUpdate(): 1, time:%Ld", time.Int64()); - } - else - { - LOGFMT(KVideoEditorLogFile, "CVeiCutVideoContainer::DoUpdate(): 2, time:%Ld", time.Int64()); - } - iCutVideoBar->SetCurrentPoint( static_cast((time.Int64() / 1000))); - iCutVideoBar->DrawDeferred(); - } -void CVeiCutVideoContainer::MuteL() - { - iVideoDisplay->SetMuteL( ETrue ); - } - -//============================================================================= -void CVeiCutVideoContainer::HandleVolumeUpL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::HandleVolumeUpL: in"); - - iVideoDisplay->AdjustVolumeL( 1 ); - - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::HandleVolumeUpL: out"); - } - -//============================================================================= -void CVeiCutVideoContainer::HandleVolumeDownL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::HandleVolumeDownL: in"); - - iVideoDisplay->AdjustVolumeL( -1 ); - - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::HandleVolumeDownL: out"); - } - -//============================================================================= -void CVeiCutVideoContainer::PrepareForTerminationL() - { - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::PrepareForTerminationL: in"); - - SetStateL( EStateTerminating ); - - if( !iFrameReady && iVideoClipInfo ) - { - iVideoClipInfo->CancelFrame(); - } - iState = EStateTerminating; - iVideoDisplay->Stop( ETrue ); - - LOG(KVideoEditorLogFile, "CVeiCutVideoContainer::PrepareForTerminationL: out"); - } - - -TInt CVeiCutVideoContainer::AsyncTakeSnapshot(TAny* aThis) - { - LOG( KVideoEditorLogFile, "CVeiCutVideoContainer::AsyncTakeSnapshot"); - - // In the asynchronous version, trap the rest of the functions - // to make sure that the caller's TRequestStatus is always - // completed, also in case of failures. - CVeiCutVideoContainer* container = static_cast(aThis); - TInt err = KErrNone; - TRAP(err, container->TakeSnapshotL()); - LOGFMT( KVideoEditorLogFile, "CVeiCutVideoContainer::AsyncTakeSnapshot 1, err:%d", err); - User::LeaveIfError(err); - return KErrNone; - } -// End of File