videditor/ManualVideoEditor/src/SampleArrayHandler.cpp
changeset 0 951a5db380a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videditor/ManualVideoEditor/src/SampleArrayHandler.cpp	Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,163 @@
+/*
+* 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
+// User includes
+#include <e32math.h> 
+
+#include "SampleArrayHandler.h"
+#include "VideoEditorCommon.h"      // Video Editor UID
+
+#include "VideoEditorDebugUtils.h"
+
+// ================= MEMBER FUNCTIONS =======================
+CSampleArrayHandler* CSampleArrayHandler::NewL()
+    {
+    CSampleArrayHandler* self = CSampleArrayHandler::NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+CSampleArrayHandler* CSampleArrayHandler::NewLC()
+    {
+    CSampleArrayHandler* self = new( ELeave )CSampleArrayHandler();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+void CSampleArrayHandler::ConstructL()
+    {
+    }
+
+CSampleArrayHandler::CSampleArrayHandler()
+    {
+    }
+
+
+CSampleArrayHandler::~CSampleArrayHandler()
+    {
+    delete [] iVisualization;
+    }
+
+void CSampleArrayHandler::SetVisualizationArray(TInt8* aVisualization, TInt aResolution)
+    {
+    LOG( KVideoEditorLogFile, "CSampleArrayHandler::SetVisualizationArray, In" );
+    iVisualization = aVisualization;
+    iVisualizationSize = aResolution;
+
+    // for testing
+    /*	for (TInt i = 0; i < iVisualizationSize; i++)
+    {
+    if (i == 127)	
+    iVisualization[i] = i - 127;
+    else
+    iVisualization[i] = i;				
+    }
+     */
+    TInt8 temp = 0; // help variable used in finding the biggest current sample value
+    for ( TInt i = 0; i < iVisualizationSize; i++ )
+        {
+        if ( iVisualization[i] > temp )
+            {
+            temp = iVisualization[i];
+            }
+        //LOGFMT2(KVideoEditorLogFile, "CSampleArrayHandler::SetVisualizationArray, SAMPLE[%d]:%d", i, iVisualization[i]);
+        }
+    iMaxSample = temp;
+
+    iScaleFactor = 1.0; // TReal
+    LOG( KVideoEditorLogFile, "CSampleArrayHandler::SetVisualizationArray, Out" );
+    }
+
+void CSampleArrayHandler::ScaleAudioVisualization( const TInt8& aNewMaxValue )
+    {
+    if ( iVisualization && ( aNewMaxValue != iMaxSampleInCurrentScale ))
+        {
+        iMaxSampleInCurrentScale = aNewMaxValue;
+        if ( !Math::IsZero(( TReal64 )iMaxSampleInCurrentScale ))
+            {
+            iScaleFactor = ( TReal64 )iMaxSampleInCurrentScale / ( TReal64 )iMaxSample; 
+
+            }
+
+        /*
+        //for testing
+        if (1 > coeff)
+        {				
+        for (TInt i = 0; i < iVisualizationSize; i++)
+        {
+        LOGFMT(KVideoEditorLogFile, "before scaling:%d", iVisualization[i]);				
+        iVisualization[i] *= coeff;		
+        LOGFMT(KVideoEditorLogFile, "after scaling:%d", iVisualization[i]);
+        }					
+        }*/
+        }
+    }
+
+TInt8 CSampleArrayHandler::Sample( const TInt aIndex )const
+    {
+    // must be scaled down in order to fit into screen			
+    if ( iScaleFactor < 1 )
+        {
+        return (( iVisualization[aIndex]* 1000 )*( iScaleFactor* 1000 )) / 1000000;
+                
+        }
+    else
+        {
+        return iVisualization[aIndex];
+        }
+    }
+
+TInt CSampleArrayHandler::Size()const
+    {
+    return iVisualizationSize;
+    }
+
+TInt CSampleArrayHandler::CurrentPoint()const
+    {
+    return iCurrentIndex;
+    }
+
+void CSampleArrayHandler::SetCurrentPoint(const TTimeIntervalMicroSeconds& aCurrentTime)
+    {
+    iCurrentTime = aCurrentTime;
+    iCurrentIndex = ( iCurrentTime.Int64() / 1000 ) / KAudioSampleInterval;
+    }
+
+void CSampleArrayHandler::SetCutInPoint(const TTimeIntervalMicroSeconds& aCutInTime)
+    {
+    iCutInTime = aCutInTime;
+    iCutInSampleIndex = ( iCutInTime.Int64() / 1000 ) / KAudioSampleInterval;
+    }
+
+void CSampleArrayHandler::SetCutOutPoint(const TTimeIntervalMicroSeconds& aCutOutTime)
+    {
+    iCutOutTime = aCutOutTime;
+    iCutOutSampleIndex = ( iCutOutTime.Int64() / 1000 ) / KAudioSampleInterval;
+    }
+
+TBool CSampleArrayHandler::SampleCutted( const TInt aIndex )const
+    {
+    return ( iCutInSampleIndex < aIndex ) && ( aIndex < iCutOutSampleIndex );
+    }
+
+// End of File