838 |
838 |
839 // ----------------------------------------------------------------------------- |
839 // ----------------------------------------------------------------------------- |
840 // |
840 // |
841 // ----------------------------------------------------------------------------- |
841 // ----------------------------------------------------------------------------- |
842 // |
842 // |
843 TTimeIntervalMicroSeconds CMusEngClipSession::PositionMicroSecondsL( |
843 TTimeIntervalMicroSeconds CMusEngClipSession::PositionMicroSecondsL() |
844 TBool aActualPosition ) |
|
845 { |
844 { |
846 __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) ); |
845 __ASSERT_ALWAYS( iSession, User::Leave( KErrNotReady ) ); |
847 |
846 |
848 CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession ); |
847 CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession ); |
849 |
848 |
1005 |
998 |
1006 MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::DetermineBufferingPeriod()" ) |
999 MUS_LOG( "mus: [ENGINE] <- CMusEngClipSession::DetermineBufferingPeriod()" ) |
1007 } |
1000 } |
1008 |
1001 |
1009 // ----------------------------------------------------------------------------- |
1002 // ----------------------------------------------------------------------------- |
1010 // Modifies file position if position has reached end before clip has ended. |
|
1011 // File position is not going in sync with local video playback as playback |
|
1012 // buffers media before starting playing. |
|
1013 // ----------------------------------------------------------------------------- |
|
1014 // |
|
1015 TTimeIntervalMicroSeconds CMusEngClipSession::GetVideoSinkRelativeFilePos( |
|
1016 const TTimeIntervalMicroSeconds& aActualPosition, |
|
1017 const TTimeIntervalMicroSeconds& aDuration ) |
|
1018 { |
|
1019 MUS_LOG1( "mus: [ENGINE] PositionMicroSecondsL, pos before mod:%d", |
|
1020 aActualPosition.Int64() ) |
|
1021 |
|
1022 TTimeIntervalMicroSeconds tempCalculatedPosition( aActualPosition ); |
|
1023 |
|
1024 if ( iDelayFileEndingPos != 0 ) |
|
1025 { |
|
1026 iDelayFileEndingPos = aDuration; |
|
1027 tempCalculatedPosition = iDelayFileEndingPos; |
|
1028 } |
|
1029 else |
|
1030 { |
|
1031 // FRWD can go to zero even if clip has not ended, do not modify |
|
1032 // time in such situation. |
|
1033 if ( aActualPosition == 0 && |
|
1034 !iClipEnded && |
|
1035 iFRWDStartTime.Int64() == 0 && |
|
1036 !iRewindedToBeginning ) |
|
1037 { |
|
1038 const TInt KMusDelayEndingModifier = 2; |
|
1039 iDelayFileEndingPos = aDuration.Int64() - |
|
1040 iBufferingPeriod.Int64() / KMusDelayEndingModifier; |
|
1041 tempCalculatedPosition = iDelayFileEndingPos; |
|
1042 if ( iPreviousPos > tempCalculatedPosition ) |
|
1043 { |
|
1044 tempCalculatedPosition = iPreviousPos; |
|
1045 } |
|
1046 } |
|
1047 else |
|
1048 { |
|
1049 iDelayFileEndingPos = 0; |
|
1050 } |
|
1051 |
|
1052 if ( iRewindedToBeginning && aActualPosition > 0 ) |
|
1053 { |
|
1054 iRewindedToBeginning = EFalse; |
|
1055 } |
|
1056 |
|
1057 if ( tempCalculatedPosition < 0 ) |
|
1058 { |
|
1059 tempCalculatedPosition = 0; |
|
1060 } |
|
1061 } |
|
1062 |
|
1063 iPreviousPos = tempCalculatedPosition; |
|
1064 |
|
1065 return tempCalculatedPosition; |
|
1066 } |
|
1067 |
|
1068 // ----------------------------------------------------------------------------- |
|
1069 // |
1003 // |
1070 // ----------------------------------------------------------------------------- |
1004 // ----------------------------------------------------------------------------- |
1071 // |
1005 // |
1072 TBool CMusEngClipSession::IsH264Supported() const |
1006 TBool CMusEngClipSession::IsH264Supported() const |
1073 { |
1007 { |