videoeditorengine/vedengine/src/vedcodecchecker.cpp
changeset 9 d87d32eab1a9
parent 0 951a5db380a0
--- a/videoeditorengine/vedengine/src/vedcodecchecker.cpp	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,962 +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
-#include <mp4lib.h>
-#include "ctrtranscoder.h"
-#include "ctrtranscoderobserver.h"
-#include "VedVideoClip.h"
-#include "vedvideosettings.h"
-#include "vedvolreader.h"
-#include "vedcodecchecker.h"
-#include "vedavcedit.h"
-
-// Constants
-const TUint KVOLHeaderBufferSize = 256;
-const TUint KAVCDCRBufferSize = 16384;
-const TUint KSubQCIFWidth = 128;
-const TUint KQCIFWidth = 176;
-const TUint KCIFWidth = 352;
-const TUint KQVGAWidth = 320;
-const TUint KVGAWidth = 640;
-//WVGA task
-const TUint KWVGAWidth = 864;
-
-// An assertion macro wrapper to clean up the code a bit
-#define CCASSERT(x) __ASSERT_DEBUG(x, User::Panic(_L("CVedCodecChecker"), -5000))
-
-// Print macro
-#ifdef _DEBUG
-#include <e32svr.h>
-#define PRINT(x) RDebug::Print x
-#else
-#define PRINT(x)
-#endif
-
-// Near-dummy observer class for temporary transcoder instance. In practice is only used to provide input framerate
-// to the transcoder
-class CTrObs : public CBase, public MTRTranscoderObserver
-    {
-public:
-    /* Constructor & destructor */
-    
-    inline CTrObs(TReal aFrameRate) : iInputFrameRate(aFrameRate) 
-        {
-        };
-    inline ~CTrObs()
-        {
-        };
-
-    // Dummy methods from MTRTranscoderObserver, just used to complete the observer class
-    inline void MtroInitializeComplete(TInt /*aError*/)
-        {
-        };
-    inline void MtroFatalError(TInt /*aError*/)
-        {
-        };
-    inline void MtroReturnCodedBuffer(CCMRMediaBuffer* /*aBuffer*/) 
-        {
-        };
-    // method to provide clip input framerate to transcoder
-    inline void MtroSetInputFrameRate(TReal& aRate)
-        {
-        aRate = iInputFrameRate;
-        };
-    inline void MtroAsyncStopComplete()
-        {
-        };
-        
-    inline void MtroSuspend()
-        {
-        };
-        
-    inline void MtroResume()
-        {
-        };
-        
-private:// data
-
-        // clip input framerate (fps)
-        TReal iInputFrameRate;
-    
-    };
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CVedCodecChecker* CVedCodecChecker::NewL() 
-    {
-    PRINT(_L("CVedCodecChecker::NewL in"));
-    
-    CVedCodecChecker* self = NewLC();
-    CleanupStack::Pop(self);
-    
-    PRINT(_L("CVedCodecChecker::NewL out"));
-    return self;
-    }
-
-CVedCodecChecker* CVedCodecChecker::NewLC()
-    {
-    PRINT(_L("CVedCodecChecker::NewLC in"));
-    
-    CVedCodecChecker* self = new (ELeave) CVedCodecChecker();
-    CleanupStack::PushL(self);
-    self->ConstructL();
-
-    PRINT(_L("CVedCodecChecker::NewLC out"));
-    return self;
-    }
-    
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::CVedCodecChecker
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CVedCodecChecker::CVedCodecChecker() : iOutputFormatsChecked(EFalse)
-    {    
-    }
-    
-// -----------------------------------------------------------------------------
-// CSizeEstimate::~CSizeEstimate
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CVedCodecChecker::~CVedCodecChecker()
-    {
-
-    // free all memory
-    for (TInt i = 0; i < KNumCodecs; i++)
-    {
-        if (iInputCodecsAndResolutions[i] != 0)
-            delete [] iInputCodecsAndResolutions[i];                    
-        
-        iInputCodecsAndResolutions[i] = 0;
-        
-        if (iOutputCodecsAndResolutions[i] !=  0)
-            delete [] iOutputCodecsAndResolutions[i];                    
-        
-        iOutputCodecsAndResolutions[i] = 0;
-    }
-    
-        
-    }
-
-// -----------------------------------------------------------------------------
-// CSizeEstimate::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CVedCodecChecker::ConstructL()
-    {
-    
-    PRINT(_L("CVedCodecChecker::ConstructL in"));
-    
-    TInt i;
-    
-    // reset pointer tables
-    for (i = 0; i < KNumCodecs; i++)
-    {
-        iInputCodecsAndResolutions[i] = 0;
-        iOutputCodecsAndResolutions[i] = 0;
-    }
-    
-    // allocate resolution tables
-    for (i = 0; i < KNumCodecs; i++)
-    {                        
-        TBool* temp =  new ( ELeave ) TBool[KNumResolutions];
-        for (TInt j = 0; j < KNumResolutions; j++)
-            temp[j] = 0;            
-        
-        iInputCodecsAndResolutions[i] = temp;        
-        
-        temp =  new ( ELeave ) TBool[KNumResolutions];
-        for (TInt j = 0; j < KNumResolutions; j++) 
-            temp[j] = 0;            
-        
-        iOutputCodecsAndResolutions[i] = temp;
-    }
-        
-    // check supported input codecs / resolutions
-    GetSupportedInputFormatsL();
-    
-    PRINT(_L("CVedCodecChecker::ConstructL out"));
-        
-    }
-
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::GetSupportedInputFormatsL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-void CVedCodecChecker::GetSupportedInputFormatsL()
-    {        
-
-    PRINT(_L("CVedCodecChecker::GetSupportedInputFormatsL in"));
-
-    const TSize KResolutions[KNumResolutions] = { KVedResolutionSubQCIF, 
-                                                  KVedResolutionQCIF, 
-                                                  KVedResolutionCIF, 
-                                                  KVedResolutionQVGA, 
-                                                  KVedResolutionVGA16By9,
-                                                  KVedResolutionVGA,
-                                                  //WVGA task
-                                                  KVedResolutionWVGA };
-
-    const TPtrC8 KCodecs[KNumCodecs] = { _L8("video/H263-2000; profile=0; level=10"),
-                                         _L8("video/H263-2000; profile=0; level=45"),
-                                         _L8("video/mp4v-es; profile-level-id=8"),
-                                         _L8("video/mp4v-es; profile-level-id=9"),
-                                         _L8("video/mp4v-es; profile-level-id=1"),
-                                         _L8("video/mp4v-es; profile-level-id=2"),
-                                         _L8("video/mp4v-es; profile-level-id=3"),
-                                         _L8("video/mp4v-es; profile-level-id=4"),                                         
-                                         _L8("video/H264; profile-level-id=42800A"),
-                                         _L8("video/H264; profile-level-id=42900B"),
-                                         _L8("video/H264; profile-level-id=42800B"),
-                                         _L8("video/H264; profile-level-id=42800C"), 
-                                         _L8("video/H264; profile-level-id=42800D"), 
-                                         _L8("video/H264; profile-level-id=428014"), 
-                                         //WVGA task
-                                         _L8("video/H264; profile-level-id=428015"),
-                                         _L8("video/H264; profile-level-id=428016"), 
-                                         _L8("video/H264; profile-level-id=42801E"), 
-                                         _L8("video/H264; profile-level-id=42801F")  };   
-
-    TTRVideoFormat inputFormat;
-    TTRVideoFormat outputFormat;      
-    
-    inputFormat.iDataType = CTRTranscoder::ETRDuCodedPicture;
-    outputFormat.iDataType = CTRTranscoder::ETRYuvRawData420;        
-    
-    for (TInt i = 0; i < KNumCodecs; i++)
-    {    
-    
-        PRINT((_L("GetSupportedInputFormatsL - testing codec %d"), i));
-    
-        // create temporary transcoder observer object, with input framerate as parameter, since it is asked by the transcoder
-        CTrObs* tmpObs = new (ELeave) CTrObs(15.0);
-        CleanupStack::PushL(tmpObs);
-    
-        // create temporary transcoder instance
-        CTRTranscoder* tmpTranscoder = CTRTranscoder::NewL(*tmpObs);
-        CleanupStack::PushL(tmpTranscoder);
-    
-        // check if codec supported at all    
-        if ( tmpTranscoder->SupportsInputVideoFormat(KCodecs[i]) )
-        {
-            TInt error = KErrNone;
-            // check all resolutions
-            for (TInt j = 0; j < KNumResolutions; j++)
-            {                            
-            
-                if ( (i < ECodecMPEG4VSPLevel0) && (j > EResolutionQCIF) )
-                {
-                    // Do not allow larger resolutions than QCIF for H.263
-                    CleanupStack::PopAndDestroy(tmpTranscoder);
-                    CleanupStack::PopAndDestroy(tmpObs);     
-                    PRINT((_L("GetSupportedInputFormatsL - break")));
-                    break;
-                }
-                
-                PRINT((_L("GetSupportedInputFormatsL - testing (%d, %d)"), i, j));
-
-                inputFormat.iSize = outputFormat.iSize = KResolutions[j];
-                
-                TRAP( error, tmpTranscoder->OpenL(reinterpret_cast<MCMRMediaSink*>(1),//the sink will not be used, hence this is acceptable 
-                                     CTRTranscoder::EDecoding,
-                                     KCodecs[i],
-                                     KNullDesC8,
-                                     inputFormat, 
-                                     outputFormat, 
-                                     EFalse ) );
-                                     
-                if (error == KErrNone)
-                {
-                    PRINT((_L("GetSupportedInputFormatsL - (%d, %d) supported"), i, j));
-                    iInputCodecsAndResolutions[i][j] = ETrue;
-                } 
-                else if (error == KErrNotSupported)
-                {
-                    PRINT((_L("GetSupportedInputFormatsL - (%d, %d) not supported"), i, j));
-                    iInputCodecsAndResolutions[i][j] = EFalse;                    
-                } 
-                else
-                    User::Leave(error);
-                
-                CleanupStack::PopAndDestroy(tmpTranscoder);
-                CleanupStack::PopAndDestroy(tmpObs);     
-                
-                if ( j < (KNumResolutions - 1) )
-                {                                    
-                    tmpObs = new (ELeave) CTrObs(15.0);
-                    CleanupStack::PushL(tmpObs);
-                                
-                    // create temporary transcoder instance
-                    tmpTranscoder = CTRTranscoder::NewL(*tmpObs);
-                    CleanupStack::PushL(tmpTranscoder);  
-                }
-            }
-        } 
-        else
-        {
-            // all resolutions unsupported
-            for (TInt j=0; j < KNumResolutions; j++)
-            {            
-                iInputCodecsAndResolutions[i][j] = EFalse;
-            }
-            
-            CleanupStack::PopAndDestroy(tmpTranscoder);
-            CleanupStack::PopAndDestroy(tmpObs);
-                 
-        }    
-    }   
-    
-    PRINT(_L("CVedCodecChecker::GetSupportedInputFormatsL out"));
-
-    }
-
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::GetSupportedOutputFormatsL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-void CVedCodecChecker::GetSupportedOutputFormatsL()
-    {        
-    
-    PRINT(_L("CVedCodecChecker::GetSupportedOutputFormatsL in"));
-
-    const TSize KResolutions[KNumResolutions] = { KVedResolutionSubQCIF, 
-                                                  KVedResolutionQCIF, 
-                                                  KVedResolutionCIF, 
-                                                  KVedResolutionQVGA, 
-                                                  KVedResolutionVGA16By9,
-                                                  KVedResolutionVGA };
-
-    const TPtrC8 KCodecs[KNumCodecs] = { _L8("video/H263-2000; profile=0; level=10"),
-                                         _L8("video/H263-2000; profile=0; level=45"),
-                                         _L8("video/mp4v-es; profile-level-id=8"),
-                                         _L8("video/mp4v-es; profile-level-id=9"),
-                                         _L8("video/mp4v-es; profile-level-id=1"),
-                                         _L8("video/mp4v-es; profile-level-id=2"),
-                                         _L8("video/mp4v-es; profile-level-id=3"),
-                                         _L8("video/mp4v-es; profile-level-id=4"),                                          
-                                         _L8("video/H264; profile-level-id=42800A"),
-                                         _L8("video/H264; profile-level-id=42900B"),
-                                         _L8("video/H264; profile-level-id=42800B"),
-                                         _L8("video/H264; profile-level-id=42800C"), 
-
-                                         //WVGA task
-                                         //(TPtrC8&)KNullDesC8,  // level 1.3 not supported in output
-                                         //(TPtrC8&)KNullDesC8,   // level 2 not supported in output  
-                                         _L8("video/H264; profile-level-id=42800D"),
-                                         _L8("video/H264; profile-level-id=428014"),                                          
-                                         _L8("video/H264; profile-level-id=428015"),
-                                         _L8("video/H264; profile-level-id=428016"), 
-                                         _L8("video/H264; profile-level-id=42801E"), 
-                                         _L8("video/H264; profile-level-id=42801F")                                      
-                                       }; 
-                                       
-                                       
-
-    TTRVideoFormat inputFormat;
-    TTRVideoFormat outputFormat;
-    
-    inputFormat.iDataType = CTRTranscoder::ETRYuvRawData420;
-    outputFormat.iDataType = CTRTranscoder::ETRDuCodedPicture;
-    
-    for (TInt i = 0; i < KNumCodecs; i++)
-    {        
-        PRINT((_L("GetSupportedOutputFormatsL - testing codec %d"), i));
-    
-        // create temporary transcoder observer object, with input framerate as parameter, since it is asked by the transcoder
-        CTrObs* tmpObs = new (ELeave) CTrObs(15.0);
-        CleanupStack::PushL(tmpObs);
-    
-        // create temporary transcoder instance
-        CTRTranscoder* tmpTranscoder = CTRTranscoder::NewL(*tmpObs);
-        CleanupStack::PushL(tmpTranscoder);
-        
-        //WVGA task
-        // AVC levels 3.1 and higher are not supported in output
-        if (i >= ECodecAVCBPLevel3_1)
-        {
-            CleanupStack::PopAndDestroy(tmpTranscoder);
-            CleanupStack::PopAndDestroy(tmpObs);
-            PRINT((_L("GetSupportedOutputFormatsL - break AVC check")));   
-            break;
-        }
-       
-    
-        // check if codec supported at all    
-        if ( tmpTranscoder->SupportsOutputVideoFormat(KCodecs[i]) )
-        {
-            TInt error = KErrNone;
-            // check all resolutions
-            for (TInt j = 0; j < KNumResolutions; j++)
-            {
-            
-                if ( (i < ECodecMPEG4VSPLevel0) && (j > EResolutionQCIF) )
-                {
-                    // Do not allow larger resolutions than QCIF for H.263
-                    CleanupStack::PopAndDestroy(tmpTranscoder);
-                    CleanupStack::PopAndDestroy(tmpObs);     
-                    PRINT((_L("GetSupportedOutputFormatsL - break")));
-                    break;
-                }
-                
-                PRINT((_L("GetSupportedOutputFormatsL - testing (%d, %d)"), i, j));            
-
-                inputFormat.iSize = outputFormat.iSize = KResolutions[j];
-                
-                TRAP( error, tmpTranscoder->OpenL(reinterpret_cast<MCMRMediaSink*>(1),//the sink will not be used, hence this is acceptable 
-                                     CTRTranscoder::EEncoding,
-                                     KNullDesC8,
-                                     KCodecs[i],                                     
-                                     inputFormat, 
-                                     outputFormat, 
-                                     EFalse ) );
-                                     
-                if (error == KErrNone)
-                {
-                    PRINT((_L("GetSupportedOutputFormatsL - (%d, %d) supported"), i, j));
-                    iOutputCodecsAndResolutions[i][j] = ETrue;
-                } 
-                else if (error == KErrNotSupported)
-                {
-                    PRINT((_L("GetSupportedOutputFormatsL - (%d, %d) not supported"), i, j));
-                    iOutputCodecsAndResolutions[i][j] = EFalse;                    
-                } 
-                else
-                    User::Leave(error);
-                
-                CleanupStack::PopAndDestroy(tmpTranscoder);
-                CleanupStack::PopAndDestroy(tmpObs);     
-                
-                if ( j < (KNumResolutions - 1) )
-                {                                    
-                    tmpObs = new (ELeave) CTrObs(15.0);
-                    CleanupStack::PushL(tmpObs);
-                                
-                    // create temporary transcoder instance
-                    tmpTranscoder = CTRTranscoder::NewL(*tmpObs);
-                    CleanupStack::PushL(tmpTranscoder);  
-                }
-            }
-        } 
-        else
-        {
-            // all resolutions unsupported
-            for (TInt j=0; j < KNumResolutions; j++)
-            {            
-                iOutputCodecsAndResolutions[i][j] = EFalse;
-            }
-            
-            CleanupStack::PopAndDestroy(tmpTranscoder);
-            CleanupStack::PopAndDestroy(tmpObs);
-                 
-        }    
-    }   
-    
-    PRINT(_L("CVedCodecChecker::GetSupportedOutputFormatsL out"));
-
-    }
-
-
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::IsSupportedInputClip
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-TBool CVedCodecChecker::IsSupportedInputClipL(CVedVideoClip* aClip)
-    {
-    
-    PRINT(_L("CVedCodecChecker::IsSupportedInputClipL in"));
-
-    if ( (aClip->Info()->VideoType() != EVedVideoTypeH263Profile0Level10) && 
-         (aClip->Info()->VideoType() != EVedVideoTypeH263Profile0Level45) && 
-         (aClip->Info()->VideoType() != EVedVideoTypeMPEG4SimpleProfile) &&
-         (aClip->Info()->VideoType() != EVedVideoTypeAVCBaselineProfile)
-        )
-    {
-        return KErrNotSupported;
-    }
-        
-    TResolution resolution = MapResolution( aClip->Info()->Resolution() );
-
-    if ( resolution == EResolutionUnsupported )
-        return EFalse;
-    
-    if ( aClip->Info()->VideoType() == EVedVideoTypeH263Profile0Level10 )
-    {
-        return iInputCodecsAndResolutions[ECodecH263BPLevel10][resolution];
-    } 
-    
-    if ( aClip->Info()->VideoType() == EVedVideoTypeH263Profile0Level45 )
-    {
-        return iInputCodecsAndResolutions[ECodecH263BPLevel45][resolution];
-    }        
-    
-#ifndef VIDEOEDITORENGINE_AVC_EDITING        
-    if ( aClip->Info()->VideoType() == EVedVideoTypeAVCBaselineProfile )
-    {
-        return EFalse;
-    }        
-#endif
-
-    // clip is MPEG-4 or AVC
-            
-    // create parser to fetch codec specific info    
-    MP4Handle mp4Handle = 0;
-    MP4Err mp4Error;
-    if (!aClip->Info()->FileHandle())
-    {        
-        TBuf<258> tempFileName(aClip->Info()->FileName());
-        tempFileName.ZeroTerminate();			
-                
-        MP4FileName name = reinterpret_cast<MP4FileName>( const_cast<TUint16*>(tempFileName.Ptr()) );
-        mp4Error = MP4ParseOpen(&mp4Handle, name);
-    } 
-    else
-    {
-        mp4Error = MP4ParseOpenFileHandle(&mp4Handle, aClip->Info()->FileHandle());
-    }
-    
-    if (mp4Error != MP4_OK)
-    {
-        if (mp4Handle)
-            MP4ParseClose(mp4Handle);
-        mp4Handle = 0;
-    
-        if (mp4Error == MP4_OUT_OF_MEMORY)
-            User::Leave(KErrNoMemory);
-        else
-            User::Leave(KErrGeneral);
-    }
-            
-    TInt bufSize = 0;
-    
-    if (aClip->Info()->VideoType() == EVedVideoTypeMPEG4SimpleProfile)
-        bufSize = KVOLHeaderBufferSize;
-    else
-        bufSize = KAVCDCRBufferSize;
-        
-    HBufC8* tmpBuffer = (HBufC8*) HBufC8::NewLC(bufSize);
-    
-    TPtr8 tmpPtr = tmpBuffer->Des();
-    mp4_u32 infoSize = 0;
-    
-    // get info
-    mp4Error = MP4ParseReadVideoDecoderSpecificInfo( mp4Handle, 
-                                                    (mp4_u8*)(tmpPtr.Ptr()),
-                                                    bufSize,
-                                                    &infoSize );
-                                                    
-    MP4ParseClose(mp4Handle);                                                    
-                                                    
-    if ( mp4Error != MP4_OK )
-    {
-        User::Leave(KErrGeneral);
-    }   
-
-    tmpPtr.SetLength(infoSize);
-    
-    TCodec codec = ECodecUnsupported;
-    
-    if (aClip->Info()->VideoType() == EVedVideoTypeMPEG4SimpleProfile)
-    {
-        // Parse profile-level-id
-        CVedVolReader* tmpVolReader = CVedVolReader::NewL();
-        CleanupStack::PushL(tmpVolReader);
-
-        tmpVolReader->ParseVolHeaderL(tmpPtr);
-
-        TInt profileLevelId = tmpVolReader->ProfileLevelId();
-        
-        codec = MapProfileLevelId(profileLevelId);
-    }     
-    
-#ifdef VIDEOEDITORENGINE_AVC_EDITING    
-    else    
-    {
-        CVedAVCEdit* tmpAvcEdit = CVedAVCEdit::NewL();
-        CleanupStack::PushL(tmpAvcEdit);
-    
-        // this leaves with KErrNotSupported if clip is not supported
-        tmpAvcEdit->SaveAVCDecoderConfigurationRecordL(tmpPtr, EFalse);
-    
-        // Parse level    
-        TInt level = 0;
-        User::LeaveIfError( tmpAvcEdit->GetLevel(tmpPtr, level) );
-        
-        codec = MapAVCLevel(level);
-    }
-#endif
-    
-    CleanupStack::PopAndDestroy(2);
-	
-    if (codec == ECodecUnsupported)
-        return EFalse;
-
-    PRINT(_L("CVedCodecChecker::IsSupportedInputClipL out"));
-
-    return iInputCodecsAndResolutions[codec][resolution];
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::IsSupportedOutputFormatL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//   
-TBool CVedCodecChecker::IsSupportedOutputFormatL(const TPtrC8& aMimeType, TSize aResolution)
-    {
-    
-    PRINT(_L("CVedCodecChecker::IsSupportedOutputFormatL in"));
-    
-    if (aMimeType == KNullDesC8)
-    {
-        User::Leave(KErrArgument);
-    }
-    
-    if ( !iOutputFormatsChecked )
-    {   
-        // check supported output formats
-        GetSupportedOutputFormatsL();
-        iOutputFormatsChecked = ETrue;
-    }        
-    
-    TResolution resolution = MapResolution(aResolution);
-    
-    if (resolution == EResolutionUnsupported)
-        return EFalse;
-    
-    TCodec codec = ParseMimeType(aMimeType, aResolution);
-    
-    if (codec == ECodecUnsupported)
-        return EFalse;    
-    
-    PRINT(_L("CVedCodecChecker::IsSupportedOutputFormatL out"));
-    
-    return iOutputCodecsAndResolutions[codec][resolution];
-    
-    }
-    
-    
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::MapResolution
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//   
-TResolution CVedCodecChecker::MapResolution(TSize aResolution)
-    {
-
-    if ( aResolution == KVedResolutionSubQCIF )
-        return EResolutionSubQCIF;
-    
-    else if ( aResolution == KVedResolutionQCIF )
-        return EResolutionQCIF;
-    
-    else if ( aResolution == KVedResolutionCIF )
-        return EResolutionCIF;
-    
-    else if ( aResolution == KVedResolutionQVGA )
-        return EResolutionQVGA;
-    
-    else if ( aResolution == KVedResolutionVGA16By9 )
-        return EResolutionVGA16By9;
-    
-    else if ( aResolution == KVedResolutionVGA )
-        return EResolutionVGA;
-    //WVGA task       
-    else if ( aResolution == KVedResolutionWVGA )
-        return EResolutionWVGA;
-    
-    return EResolutionUnsupported;
-    }
-
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::MapProfileLevelId
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//   
-TCodec CVedCodecChecker::MapProfileLevelId(TInt aProfileLevelId)
-    {
-
-    if ( aProfileLevelId == 8 )
-        return ECodecMPEG4VSPLevel0;
-    
-    if ( aProfileLevelId == 9 )
-        return ECodecMPEG4VSPLevel0B;
-    
-    if ( aProfileLevelId == 1 )
-        return ECodecMPEG4VSPLevel1;
-    
-    if ( aProfileLevelId == 2 )
-        return ECodecMPEG4VSPLevel3;
-    
-    if ( aProfileLevelId == 3 )
-        return ECodecMPEG4VSPLevel3;
-    
-    if ( aProfileLevelId == 4 )
-        return ECodecMPEG4VSPLevel4;
-    
-    return ECodecUnsupported;
-
-    }
-    
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::MapAVCLevel
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//   
-TCodec CVedCodecChecker::MapAVCLevel(TInt aLevel)
-    {
-    
-    if ( aLevel == 10 )
-        return ECodecAVCBPLevel1;
-    
-    if ( aLevel == 101 )
-        return ECodecAVCBPLevel1B;
-    
-    if ( aLevel == 11 )
-        return ECodecAVCBPLevel1_1;
-    
-    if ( aLevel == 12 )
-        return ECodecAVCBPLevel1_2;
-    
-    if ( aLevel == 13 )
-        return ECodecAVCBPLevel1_3;
-    
-    if ( aLevel == 20 )
-        return ECodecAVCBPLevel2;    
-    //WVGA task
-    if ( aLevel == 21 )
-        return ECodecAVCBPLevel2_1;
-    
-    if ( aLevel == 22 )
-        return ECodecAVCBPLevel2_2;
-    
-    if ( aLevel == 30 )
-        return ECodecAVCBPLevel3;
-    
-    if ( aLevel == 31 )
-        return ECodecAVCBPLevel3_1; 
-    
-    return ECodecUnsupported;
-    
-    }
-    
-// -----------------------------------------------------------------------------
-// CVedCodecChecker::ParseMimeType
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//   
-TCodec CVedCodecChecker::ParseMimeType(const TPtrC8& aMimeType, TSize aResolution)
-    {
-
-    // figure out codec
-    TCodec codec;
-    
-    if ( aMimeType.MatchF( _L8("*video/H263-2000*") ) != KErrNotFound )
-    {
-        codec = ECodecH263BPLevel10;
-        
-        if ( aMimeType.MatchF( _L8("*profile*") ) != KErrNotFound )
-        {
-            // Profile info is given, check it
-            if ( aMimeType.MatchF( _L8("*profile=0*") ) == KErrNotFound )
-            {
-                return ECodecUnsupported;
-            }
-        }
-        else 
-        {
-            // no profile given
-        }
-        
-        if ( aMimeType.MatchF( _L8("*level=10*") ) != KErrNotFound )
-        {
-            codec = ECodecH263BPLevel10;            
-        }
-            
-        else if ( aMimeType.MatchF( _L8("*level=45*") ) != KErrNotFound )
-        {            
-            codec = ECodecH263BPLevel45;                		
-        }
-        
-        else if ( aMimeType.MatchF( _L8("*level*") ) != KErrNotFound )
-        {
-            // no other levels supported
-            return ECodecUnsupported;
-        }
-        else
-        {
-            // if no level is given assume 10
-        }        
-    }
-    else if ( (aMimeType.MatchF( _L8("*video/mp4v-es*") ) != KErrNotFound) || 
-              (aMimeType.MatchF( _L8("*video/MP4V-ES*") ) != KErrNotFound) )
-    {
-    
-        codec = ECodecMPEG4VSPLevel0;
-        
-        // Check profile-level
-        if ( aMimeType.MatchF( _L8("*profile-level-id=*") ) != KErrNotFound )
-        {
-            if ( aMimeType.MatchF( _L8("*profile-level-id=8*") ) != KErrNotFound )
-            {
-                codec = ECodecMPEG4VSPLevel0;
-            }
-            else if( aMimeType.MatchF( _L8("*profile-level-id=1*") ) != KErrNotFound )
-            {
-                codec = ECodecMPEG4VSPLevel1;
-            }
-            else if ( aMimeType.MatchF( _L8("*profile-level-id=2*") ) != KErrNotFound )
-            {
-                codec = ECodecMPEG4VSPLevel2;                
-            }
-            else if ( aMimeType.MatchF( _L8("*profile-level-id=3*") ) != KErrNotFound )
-            {
-                codec = ECodecMPEG4VSPLevel3;            
-            }
-            else if ( aMimeType.MatchF( _L8("*profile-level-id=9*") ) != KErrNotFound )
-            {
-                codec = ECodecMPEG4VSPLevel0B;                
-            }
-            else if ( aMimeType.MatchF( _L8("*profile-level-id=4*") ) != KErrNotFound )
-            {
-                codec = ECodecMPEG4VSPLevel4;
-            }
-            else
-            {
-                return ECodecUnsupported;                
-            }
-        
-        } 
-        else
-        {   // no profile-level id
-            switch( aResolution.iWidth )
-            {                
-                case KSubQCIFWidth:
-                case KQCIFWidth:
-                {
-                    // Set profile-level-id=0
-                    codec = ECodecMPEG4VSPLevel0;
-                    break;
-                }
-                
-                case KCIFWidth:
-                case KQVGAWidth:
-                {                
-                    // Set profile-level-id=2
-                    codec = ECodecMPEG4VSPLevel2;
-                    break;
-                }
-
-                case KVGAWidth:
-                {
-                    // Set profile-level-id=4 (4a)
-                    codec = ECodecMPEG4VSPLevel4;                    
-                    break;
-                }
-
-                default:
-                {
-                    // Set profile-level-id=0
-                    codec = ECodecMPEG4VSPLevel0;
-                }                
-            }
-            
-        }
-    } 
-    
-#ifdef VIDEOEDITORENGINE_AVC_EDITING
-    else if ( (aMimeType.MatchF( _L8("*video/h264*") ) != KErrNotFound) || 
-              (aMimeType.MatchF( _L8("*video/H264*") ) != KErrNotFound) )
-    
-    {
-        codec = ECodecAVCBPLevel1;
-        
-        if ( aMimeType.MatchF( _L8("*profile-level-id=42800A*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel1;
-        }
-        else if( aMimeType.MatchF( _L8("*profile-level-id=42900B*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel1B;
-        }
-        else if ( aMimeType.MatchF( _L8("*profile-level-id=42800B*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel1_1;                
-        }
-        else if ( aMimeType.MatchF( _L8("*profile-level-id=42800C*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel1_2;
-        }    
-        //WVGA task
-        else if ( aMimeType.MatchF( _L8("*profile-level-id=42800D*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel1_3;
-        } 
-        else if ( aMimeType.MatchF( _L8("*profile-level-id=428014*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel2;
-        } 
-        else if ( aMimeType.MatchF( _L8("*profile-level-id=428015*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel2_1;
-        } 
-        else if ( aMimeType.MatchF( _L8("*profile-level-id=428016*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel2_2;
-        } 
-        else if ( aMimeType.MatchF( _L8("*profile-level-id=42801E*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel3;
-        } 
-        else if ( aMimeType.MatchF( _L8("*profile-level-id=42801F*") ) != KErrNotFound )
-        {
-            codec = ECodecAVCBPLevel3_1;
-        } 
-        else
-        {
-            return ECodecUnsupported;                
-        }        
-    }
-#endif
-
-    else 
-    {
-        return ECodecUnsupported;
-    }
-    
-    return codec;
-
-}
-            
-            
-// End of file
-