videoeditorengine/audioeditorengine/codecs/AMR/src/ProcAMRInFileHandler.cpp
branchRCL_3
changeset 3 e0b5df5c0969
parent 0 951a5db380a0
child 5 4c409de21d23
--- a/videoeditorengine/audioeditorengine/codecs/AMR/src/ProcAMRInFileHandler.cpp	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,526 +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 "ProcAMRInFileHandler.h"
-#include "ProcAMRFrameHandler.h"
-#include "ProcTools.h"
-#include "AudPanic.h"
-
-
-CProcAMRInFileHandler* CProcAMRInFileHandler::NewL(const TDesC& aFileName, 
-                                                   RFile* aFileHandle,
-                                                   CAudClip* aClip, 
-                                                   TInt aReadBufferSize,
-                                                   TInt aTargetSampleRate, 
-                                                   TChannelMode aChannelMode) 
-    {
-
-    CProcAMRInFileHandler* self = NewLC(aFileName, aFileHandle, aClip, aReadBufferSize, 
-                                        aTargetSampleRate, aChannelMode);
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-CProcAMRInFileHandler* CProcAMRInFileHandler::NewLC(const TDesC& aFileName, 
-                                                    RFile* aFileHandle,
-                                                    CAudClip* aClip, 
-                                                    TInt aReadBufferSize,
-                                                    TInt aTargetSampleRate, 
-                                                    TChannelMode aChannelMode) 
-    {
-    
-    CProcAMRInFileHandler* self = new (ELeave) CProcAMRInFileHandler();
-    CleanupStack::PushL(self);
-    self->ConstructL(aFileName, aFileHandle, aClip, aReadBufferSize,
-                    aTargetSampleRate, aChannelMode);
-    return self;
-    }
-
-CProcAMRInFileHandler::CProcAMRInFileHandler() : CProcInFileHandler() 
-    {
-    
-    
-    }
-
-void CProcAMRInFileHandler::GetPropertiesL(TAudFileProperties* aProperties) 
-    {
-
-    if (iProperties != 0)
-        {
-        *aProperties = *iProperties;
-        return;
-        }
-    aProperties->iAudioTypeExtension = EAudExtensionTypeNoExtension;
-    if (iFileOpen) 
-        {
-        aProperties->iFileFormat = EAudFormatAMR;
-        
-        TInt oldPos = iFilePos;
-
-        TInt fileSize = 0;
-        iFile.Size(fileSize);
-        
-        TBuf8<6> header;
-        //iFile.Read(0, header);
-        BufferedFileRead(0, header);
-        if (header.Compare(_L8("#!AMR\n")) == 0) 
-            {
-            aProperties->iAudioType = EAudAMR;
-            aProperties->iSamplingRate = 8000;
-            aProperties->iChannelMode = EAudSingleChannel;
-            aProperties->iBitrateMode = EAudVariable;
-            
-            TBuf8<1> buf;
-            //    iFile.Read(6, buf);
-            BufferedFileRead(6, buf);    
-            TUint dec_mode = (enum Mode)((buf[0] & 0x0078) >> 3);
-            
-            aProperties->iBitrate = KAmrBitRates[dec_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 CProcAMRInFileHandler::SeekAudioFrame(TInt32 aTime) 
-    {
-    
-
-    if (!iFileOpen) 
-        {
-        TAudPanic::Panic(TAudPanic::EInternal);
-        }
-
-    TInt fileSize = 0;
-    iFile.Size(fileSize);
-
-
-    TInt firstModeByte = 6;
-    TInt readSize = 0;
-    TBuf8<1> modeByte;
-    iCurrentTimeMilliseconds = 0;
-
-    TUint dec_mode; 
-    //iFile.Seek(ESeekStart, firstModeByte);
-    BufferedFileSetFilePos(firstModeByte);
-    
-    while(iCurrentTimeMilliseconds < aTime) 
-        {
-        
-        //iFile.Read(modeByte, 1);
-        BufferedFileRead(modeByte);
-        if (modeByte.Size() == 0) 
-            {
-            return EFalse;
-            }
-
-        dec_mode = (enum Mode)((modeByte[0] & 0x0078) >> 3);
-        
-        switch (dec_mode)
-        {
-        case 0:
-            readSize = 12;
-            break;
-        case 1:
-            readSize = 13;
-            break;
-        case 2:
-            readSize = 15;
-            break;
-        case 3:
-            readSize = 17;
-            break;
-        case 4:
-            readSize = 19;
-            break;
-        case 5:
-            readSize = 20;
-            break;
-        case 6:
-            readSize = 26;
-            break;
-        case 7:
-            readSize = 31;
-            break;
-        case 8:
-            readSize = 5;
-            break;
-        case 15:
-            readSize = 0;
-            break;
-        default:
-            readSize = 0;
-            break;
-        };
-        // read the next audio frame
-        //iFile.Read(audioFrame, read_size);
-        //if (iFile.Seek(ESeekCurrent, readSize) != KErrNone) {
-        //    return EFalse;
-        //}
-        if (!(BufferedFileSetFilePos(BufferedFileGetFilePos()+readSize))) 
-            {
-            
-            // EOF
-            return EFalse;
-            }
-        iCurrentTimeMilliseconds += 20;
-        }
-    return ETrue;
-    }    
-
-TBool CProcAMRInFileHandler::SeekCutInFrame() 
-    {
-
-    iCurrentTimeMilliseconds = iCutInTime;
-    return SeekAudioFrame(iCutInTime);
-    }
-    
-
-
-
-void CProcAMRInFileHandler::ConstructL(const TDesC& aFileName, 
-                                       RFile* aFileHandle,
-                                       CAudClip* aClip, 
-                                       TInt aReadBufferSize,
-                                       TInt aTargetSampleRate, 
-                                       TChannelMode aChannelMode) 
-    {
-    
-    
-
-    iTargetSampleRate = aTargetSampleRate;
-    iChannelMode = aChannelMode;
-
-    InitAndOpenFileL(aFileName, aFileHandle, aReadBufferSize);
-
-
-    if (aClip != 0)
-        {
-        iCutInTime = ProcTools::MilliSeconds(aClip->CutInTime());
-        
-        }
-
-    const TInt KSilentFrameSize = 13;
-    
-    TUint8 silentFrame[KSilentFrameSize]=
-        {
-        0x04,0x63,0x3C,0xC7,0xF0,0x03,0x04,0x39,0xFF,0xE0,
-        0x00,0x00,0x00
-        
-        };
-    
-
-    iSilentFrame = HBufC8::NewL(KSilentFrameSize);
-    iSilentFrame->Des().Append(silentFrame, KSilentFrameSize); 
-    iSilentFrameDuration = 20;
-
-    
-    iClip = aClip;
-    
-    TAudFileProperties prop;
-    GetPropertiesL(&prop);
-    
-    iDecoder = CProcDecoder::NewL();
-    
-    iDecodingPossible = iDecoder->InitL(prop, aTargetSampleRate, aChannelMode);
-    
-    
-    // Generate a frame handler --------------------->
-    
-    iFrameHandler = CProcAMRFrameHandler::NewL();
-    
-    if (iClip != 0 && iClip->Normalizing())
-        {
-        SetNormalizingGainL(iFrameHandler);    
-        }
-    
-    
-    }
-    
-TBool CProcAMRInFileHandler::GetEncAudioFrameL(HBufC8*& aFrame, TInt& aSize, TInt32& aTime)
-    {
-    if (!iFileOpen) 
-        {
-        TAudPanic::Panic(TAudPanic::EInternal);
-        }
-
-    aFrame = NULL;
-    TInt readSize = 0;
-    TBuf8<1> modeByte;
-//    TBuf8<32> audioFrame;
-    TUint dec_mode; 
-
-
-    //iFile.Read(modeByte);
-    BufferedFileRead(modeByte);
-    if (modeByte.Size() == 0) 
-        {
-        return EFalse;
-        }
-
-    dec_mode = (enum Mode)((modeByte[0] & 0x0078) >> 3);
-        
-        switch (dec_mode)
-        {
-        case 0:
-            readSize = 12;
-            break;
-        case 1:
-            readSize = 13;
-            break;
-        case 2:
-            readSize = 15;
-            break;
-        case 3:
-            readSize = 17;
-            break;
-        case 4:
-            readSize = 19;
-            break;
-        case 5:
-            readSize = 20;
-            break;
-        case 6:
-            readSize = 26;
-            break;
-        case 7:
-            readSize = 31;
-            break;
-        case 8:
-            readSize = 5;
-            break;
-        case 15:
-            readSize = 0;
-            break;
-        default:
-            readSize = 0;
-            break;
-        };
-
-        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;
-    }
-
-
-
-CProcAMRInFileHandler::~CProcAMRInFileHandler() 
-    {
-
-    if (iSilentFrame != 0) delete iSilentFrame;
-
-    ResetAndCloseFile();
-    
-    delete iDecoder;
-
-    delete iFrameHandler;
-
-    }
-
-
-TBool CProcAMRInFileHandler::GetFrameInfo(TInt& aSongDuration,
-                                           TInt& aFrameAmount, 
-                                           TInt& aAverageFrameDuration, 
-                                           TInt& aAverageFrameSize) 
-    {
-
-
-        
-
-    if (!iFileOpen) 
-        {
-        TAudPanic::Panic(TAudPanic::EInternal);
-        }
-
-    TInt fileSize = 0;
-    iFile.Size(fileSize);
-
-
-    TInt firstModeByte = 6;
-    TInt frameIndex = 1;
-    TInt readSize = 0;
-    TBuf8<1> modeByte;
-
-    TInt32 frameSizeSum = 0;
-    
-    TInt filePos = iFilePos;
-
-    TUint dec_mode; 
-
-    BufferedFileSetFilePos(firstModeByte);
-    
-    while(frameIndex < 180000) // 1 hour 
-        {
-
-        BufferedFileRead(modeByte);
-        if (modeByte.Size() == 0) 
-            {
-            break;
-            }
-
-        dec_mode = (enum Mode)((modeByte[0] & 0x0078) >> 3);
-        
-        switch (dec_mode)
-        {
-        case 0:
-            readSize = 12;
-            break;
-        case 1:
-            readSize = 13;
-            break;
-        case 2:
-            readSize = 15;
-            break;
-        case 3:
-            readSize = 17;
-            break;
-        case 4:
-            readSize = 19;
-            break;
-        case 5:
-            readSize = 20;
-            break;
-        case 6:
-            readSize = 26;
-            break;
-        case 7:
-            readSize = 31;
-            break;
-        case 8:
-            readSize = 5;
-            break;
-        case 15:
-            readSize = 0;
-            break;
-        default:
-            readSize = 0;
-            break;
-        };
-        if (!(BufferedFileSetFilePos(BufferedFileGetFilePos()+readSize))) 
-            {
-            
-            break; // EOF
-            }
-        frameSizeSum += readSize;
-        aSongDuration += 20;
-        frameIndex++;
-        }
-
-    aAverageFrameSize = frameSizeSum/frameIndex;
-    aFrameAmount = frameIndex;
-    aAverageFrameDuration = aSongDuration/aFrameAmount;
-    BufferedFileSetFilePos(filePos);
-    return ETrue;
-
-
-    }
-
-
-TBool CProcAMRInFileHandler::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;
-    }
-