videoeditorengine/audioeditorengine/codecs/AWB/src/ProcAWBInFileHandler.cpp
branchRCL_3
changeset 3 e0b5df5c0969
parent 0 951a5db380a0
child 5 4c409de21d23
--- a/videoeditorengine/audioeditorengine/codecs/AWB/src/ProcAWBInFileHandler.cpp	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,426 +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 "ProcAWBInFileHandler.h"
-#include "ProcAWBFrameHandler.h"
-
-#include "AudPanic.h"
-#include "AWBConstants.h"
-#include "ProcTools.h"
-
-
-CProcAWBInFileHandler* CProcAWBInFileHandler::NewL(const TDesC& aFileName,  
-                                                   RFile* aFileHandle,
-                                                   CAudClip* aClip, 
-                                                   TInt aReadBufferSize,
-                                                   TInt aTargetSampleRate, 
-                                                   TChannelMode aChannelMode) 
-    {
-
-    CProcAWBInFileHandler* self = NewLC(aFileName, aFileHandle, aClip, 
-                    aReadBufferSize, aTargetSampleRate, aChannelMode);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-CProcAWBInFileHandler* CProcAWBInFileHandler::NewLC(const TDesC& aFileName, 
-                                                    RFile* aFileHandle,
-                                                    CAudClip* aClip, 
-                                                    TInt aReadBufferSize,
-                                                    TInt aTargetSampleRate, 
-                                                    TChannelMode aChannelMode) 
-    {
-    
-    CProcAWBInFileHandler* self = new (ELeave) CProcAWBInFileHandler();
-    CleanupStack::PushL(self);
-    self->ConstructL(aFileName, aFileHandle, aClip, aReadBufferSize, 
-                    aTargetSampleRate, aChannelMode);
-    return self;
-    }
-
-CProcAWBInFileHandler::CProcAWBInFileHandler() : CProcInFileHandler() 
-    {
-    
-    
-    }
-
-void CProcAWBInFileHandler::GetPropertiesL(TAudFileProperties* aProperties) 
-    {
-
-    if (iProperties != 0)
-        {
-        *aProperties = *iProperties;
-        return;
-        }
-    
-    aProperties->iAudioTypeExtension = EAudExtensionTypeNoExtension;
-    
-    if (iFileOpen) 
-        {
-        aProperties->iFileFormat = EAudFormatAMRWB;
-        
-        TInt oldPos = iFilePos;
-
-        TInt fileSize = 0;
-        iFile.Size(fileSize);
-        
-        TBuf8<9> header;
-
-        BufferedFileRead(0, header);
-        if (header.Compare(_L8("#!AMR-WB\n")) == 0) 
-            {
-            aProperties->iAudioType = EAudAMRWB;
-            aProperties->iSamplingRate = 16000;
-            aProperties->iChannelMode = EAudSingleChannel;
-            aProperties->iBitrateMode = EAudVariable;
-            
-            TBuf8<1> modeByte;
-            BufferedFileRead(9, modeByte);
-
-            TUint8 toc = modeByte[0];
-            
-            TUint8 mode = static_cast<TUint8>((toc >> 3) & 0x0F);
-            
-            aProperties->iBitrate = KAWBBitRates[mode];
-            TInt durationMilli = 0;
-            TInt frameAmount = 0;
-            TInt frameDuration = 0;
-            TInt frameSize = 0;
-
-            GetFrameInfo(durationMilli, frameAmount, frameDuration, frameSize);
-
-            TInt64 tmp = (TInt64)(TInt)durationMilli*1000;
-            // milliseconds->microseconds
-            TTimeIntervalMicroSeconds durationMicro(tmp);
-            aProperties->iDuration = durationMicro;
-            aProperties->iFrameCount = frameAmount;
-            
-            tmp = (TInt64)(TInt)frameDuration*1000;
-            TTimeIntervalMicroSeconds frameDurationMicro(tmp);
-            
-            aProperties->iFrameDuration = frameDurationMicro;
-            aProperties->iFrameLen = frameSize;
-            
-            
-            }
-        BufferedFileSetFilePos(oldPos);
-        }
-    else 
-        {
-        TAudPanic::Panic(TAudPanic::EInternal);
-        }
-
-    if (iProperties == 0)
-        {
-        iProperties = new (ELeave) TAudFileProperties;
-        *iProperties = *aProperties;
-        }
-    
-    
-    
-    
-    }
-
-TBool CProcAWBInFileHandler::SeekAudioFrame(TInt32 aTime) 
-    {
-    
-    if (!iFileOpen) 
-        {
-        TAudPanic::Panic(TAudPanic::EInternal);
-        }
-
-    TInt fileSize = 0;
-    iFile.Size(fileSize);
-
-
-    TInt firstModeByte = 9;
-    TInt readSize = 0;
-    TBuf8<1> modeByte;
-    iCurrentTimeMilliseconds = 0;
-
-    BufferedFileSetFilePos(firstModeByte);
-    
-    while(iCurrentTimeMilliseconds < aTime) 
-        {
-        
-        //iFile.Read(modeByte, 1);
-        BufferedFileRead(modeByte);
-        if (modeByte.Size() == 0) 
-            {
-            return EFalse;
-            }
-
-        TUint8 toc = modeByte[0];
-        TUint8 mode = static_cast<TUint8>((toc >> 3) & 0x0F);
-
-        readSize = KAWBPacked_size[mode];
-
-        if (!(BufferedFileSetFilePos(BufferedFileGetFilePos()+readSize))) 
-            {
-            
-            // EOF
-            return EFalse;
-            }
-        iCurrentTimeMilliseconds += 20;
-
-        }
-    return ETrue;
-
-    }    
-
-TBool CProcAWBInFileHandler::SeekCutInFrame() 
-    {
-
-    iCurrentTimeMilliseconds = iCutInTime;
-    return SeekAudioFrame(iCutInTime);
-    }
-    
-
-
-void CProcAWBInFileHandler::ConstructL(const TDesC& aFileName, 
-                                       RFile* aFileHandle,
-                                       CAudClip* aClip, 
-                                       TInt aReadBufferSize,
-                                       TInt aTargetSampleRate, 
-                                       TChannelMode aChannelMode) 
-    {
-    
-
-    iTargetSampleRate = aTargetSampleRate;
-    iChannelMode = aChannelMode;
-
-
-    InitAndOpenFileL(aFileName, aFileHandle, aReadBufferSize);
-    
-
-    iClip = aClip;
-
-    if (aClip != 0)
-        {
-        iCutInTime = ProcTools::MilliSeconds(aClip->CutInTime());
-        
-        }
-
-
-    TUint8 sf[18] = {0x04,0x10,0x20,0x00,0x21,
-    0x1C,0x14,0xD0,0x11,0x40,0x4C,0xC1,0xA0,
-    0x50,0x00,0x00,0x44,0x30};
-    iSilentFrame = HBufC8::NewL(18);
-    iSilentFrame->Des().Append(sf,18);
-    iSilentFrameDuration = 20;
-    
-    
-    if (iClip != 0 && iClip->Normalizing())
-        {
-        SetNormalizingGainL(iFrameHandler);    
-        }
-    
-    TAudFileProperties prop;
-    GetPropertiesL(&prop);
-    
-    iDecoder = CProcDecoder::NewL();
-    
-    iDecodingPossible = iDecoder->InitL(prop, aTargetSampleRate, aChannelMode);
-    
-    
-    iFrameHandler = CProcAWBFrameHandler::NewL();
-    
-    if (iClip != 0 && iClip->Normalizing())
-        {
-        SetNormalizingGainL(iFrameHandler);    
-        }
-    
-    }
-
-
-
-
-TBool CProcAWBInFileHandler::GetEncAudioFrameL(HBufC8*& aFrame, TInt& aSize, TInt32& aTime)
-    {
-    if (!iFileOpen) 
-        {
-        TAudPanic::Panic(TAudPanic::EInternal);
-        }
-
-    aFrame = NULL;
-    TInt readSize = 0;
-    TBuf8<1> modeByte;
-
-    BufferedFileRead(modeByte);
-
-    if (modeByte.Size() == 0) 
-        {
-        return EFalse;
-        }
-
-    TUint8 toc = modeByte[0];
-    TUint8 mode = static_cast<TUint8>((toc >> 3) & 0x0F);
-
-    readSize = KAWBPacked_size[mode];
-
-
-    
-    HBufC8* audioFrame = HBufC8::NewL(readSize+1);
-
-    TPtr8 tmpDes((TPtr8)audioFrame->Des());
-    
-    BufferedFileRead((TPtr8&) tmpDes, readSize);
-    audioFrame->Des().Insert(0, modeByte);
-
-    aFrame = audioFrame;
-
-    TRAPD(err, ManipulateGainL(aFrame));
-    
-    if (err != KErrNone)
-        {
-        // something went wrong with the gain manipulation
-        // continue by returning the original frame
-        }
-    
-
-    aSize = aFrame->Size();
-    aTime = 20;
-    iCurrentTimeMilliseconds += 20;
-    
-
-    return ETrue;
-    }
-
-
-
-CProcAWBInFileHandler::~CProcAWBInFileHandler() 
-    {
-
-    if (iSilentFrame != 0) delete iSilentFrame;
-    ResetAndCloseFile();
-
-
-    delete iDecoder;
-    delete iFrameHandler;
-    
-    }
-
-
-TBool CProcAWBInFileHandler::GetFrameInfo(TInt& aSongDuration,
-                                           TInt& aFrameAmount, 
-                                           TInt& aAverageFrameDuration, 
-                                           TInt& aAverageFrameSize) 
-    {
-
-
-        
-
-    if (!iFileOpen) 
-        {
-        TAudPanic::Panic(TAudPanic::EInternal);
-        }
-
-    TInt fileSize = 0;
-    iFile.Size(fileSize);
-
-
-    TInt firstModeByte = 9;
-    TInt frameIndex = 1;
-    TInt readSize = 0;
-    TBuf8<1> modeByte;
-
-    TInt32 frameSizeSum = 0;
-    
-    TInt filePos = iFilePos;
-
-    BufferedFileSetFilePos(firstModeByte);
-    
-    while(frameIndex < 180000) // 1 hour 
-        {
-        
-
-        BufferedFileRead(modeByte);
-        if (modeByte.Size() == 0) 
-            {
-            break;
-            }
-
-        TUint8 toc = modeByte[0];
-        TUint8 mode = static_cast<TUint8>((toc >> 3) & 0x0F);
-
-        readSize = KAWBPacked_size[mode];
-
-        frameSizeSum += readSize;
-        aSongDuration += 20;
-
-        if (!(BufferedFileSetFilePos(BufferedFileGetFilePos()+readSize))) 
-            {
-            
-            break; // EOF
-            }
-        
-        frameIndex++;
-        }
-
-    aAverageFrameSize = frameSizeSum/frameIndex;
-    aFrameAmount = frameIndex;
-    aAverageFrameDuration = aSongDuration/aFrameAmount;
-    BufferedFileSetFilePos(filePos);
-    return ETrue;
-
-
-    }
-
-
-TBool CProcAWBInFileHandler::SetNormalizingGainL(const CProcFrameHandler* aFrameHandler)
-    {
-
-    HBufC8* point = 0;
-    TInt siz;
-    TInt32 tim = 0;
-    TInt8 margin = 0;
-    TInt minMargin = KMaxTInt;
-    TInt tmpGain = 0;
-    TInt frameCounter = 0;
-    while(GetEncAudioFrameL(point, siz, tim)) 
-                    
-        {
-        aFrameHandler->GetNormalizingMargin(point, margin);
-        tmpGain += margin;
-                    
-        delete point;
-        point = 0;
-        frameCounter++;
-        if (frameCounter > 1) 
-            {
-            tmpGain = tmpGain/3;
-                        
-            if (tmpGain < minMargin) 
-                {
-                minMargin = tmpGain;
-                }
-                
-            frameCounter = 0;
-            tmpGain = 0;
-            }
-        }
-
-    iNormalizingMargin = static_cast<TInt8>(minMargin);
-
-    return ETrue;
-
-    }
-    
-