# HG changeset patch # User hgs # Date 1283962523 -3600 # Node ID b6488ac24ddcaca3e162e14a2d000a0927f42898 # Parent 481b3bce574a429420a30c87898348bf2d1cb174 2010wk34_02 diff -r 481b3bce574a -r b6488ac24ddc mdfdevvideoextensions/nga_mdf_postprocessor/inc/surface_hints.h --- a/mdfdevvideoextensions/nga_mdf_postprocessor/inc/surface_hints.h Mon Aug 23 21:48:44 2010 +0100 +++ b/mdfdevvideoextensions/nga_mdf_postprocessor/inc/surface_hints.h Wed Sep 08 17:15:23 2010 +0100 @@ -48,6 +48,12 @@ */ const TInt KSurfaceProtection = 0x3; +/** Hint about the surface’s characteristics or properties, + For example if a surface can be persisted by the effects engine. + @see TSurfaceCharacteristics for possible values. +*/ +const TInt KSurfaceCharacteristics = 0x4; + /** Values used for the KSurfaceContent key */ enum TSurfaceContent @@ -121,6 +127,17 @@ }; +/** Values used for the KSurfaceCharacteristics key. The values are bitmasks and can be combined. +*/ +enum TSurfaceCharacteristics + { + /** + * Surface cannot be persisted once it has been closed by the creator + */ + ENotPersistable = 1, + }; + + class TSurfaceUpdate { /** Constructor. @@ -186,7 +203,7 @@ return ( iValue & 0x80000000 ) ? ETrue : EFalse; } -}; //namespace surfaceHints +} //namespace surfaceHints #endif //__SURFACE_HINTS_LOCAL_H__ diff -r 481b3bce574a -r b6488ac24ddc mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp --- a/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp Mon Aug 23 21:48:44 2010 +0100 +++ b/mdfdevvideoextensions/nga_mdf_postprocessor/src/NGAPostProcHwDevice.cpp Wed Sep 08 17:15:23 2010 +0100 @@ -2332,7 +2332,6 @@ err = iSurfaceHandler->AddSurfaceHint(iSurfaceId,iHint); if(err == KErrAlreadyExists) { - err = KErrNone; err = iSurfaceHandler->SetSurfaceHint(iSurfaceId,iHint); } PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:AddHints. err = %d --"), this,err); @@ -2342,10 +2341,21 @@ err = iSurfaceHandler->AddSurfaceHint(iSurfaceId,iHint); if(err == KErrAlreadyExists) { - err = KErrNone; err = iSurfaceHandler->SetSurfaceHint(iSurfaceId,iHint); } PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:AddHints. err = %d --"), this,err); + if(iUsingExternalSurface) + { + iHint.iKey.iUid = surfaceHints::KSurfaceCharacteristics; + iHint.iValue = surfaceHints::ENotPersistable; + iHint.iMutable = ETrue; + err = iSurfaceHandler->AddSurfaceHint(iSurfaceId,iHint); + if(err == KErrAlreadyExists) + { + err = iSurfaceHandler->SetSurfaceHint(iSurfaceId,iHint); + } + PP_DEBUG(_L("CNGAPostProcHwDevice[%x]:AddHints. err = %d --"), this,err); + } return err; } diff -r 481b3bce574a -r b6488ac24ddc mm_pub/drm_audio_player_api/tsrc/data/mmc/drm/test3gp.dcf diff -r 481b3bce574a -r b6488ac24ddc mm_pub/drm_audio_player_api/tsrc/data/mmc/drm/testmp3.dcf diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Group/bld.inf --- a/mmtestenv/mmtesttools/Group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ b/mmtestenv/mmtesttools/Group/bld.inf Wed Sep 08 17:15:23 2010 +0100 @@ -45,8 +45,6 @@ ../Rom/miscUnitTests.iby /epoc32/rom/include/miscunittests.iby ../Rom/miscIntTests.iby /epoc32/rom/include/miscinttests.iby -../Rom/omxilunittests.iby /epoc32/rom/include/omxilunittests.iby - ../Rom/misc.iby /epoc32/rom/include/misc.iby ../Rom/miscOpt.iby /epoc32/rom/include/miscopt.iby ../Rom/miscOptTests.iby /epoc32/rom/include/miscopttests.iby @@ -226,18 +224,6 @@ ../Scripts/runmmfvideorendererunittests.bat c:/runmmfvideorendererunittests.bat #endif // SYMBIAN_GRAPHICS_USE_GCE ../Scripts/runMMFVideoNoGCETests.bat c:/runmmfvideonogcetests.bat -// OMX IL - -// only use if A3F is created -#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND -../Scripts/runmilifunittests.bat c:/runmilifunittests.bat -../Scripts/runmmpacketvideotests.bat c:/runmmpacketvideotests.bat -#endif //SYMBIAN_MULTIMEDIA_A3FDEVSOUND - -../Scripts/runomxilcomppcmrendererunittests.bat c:/runomxilcomppcmrendererunittests.bat -../Scripts/runomxilcontentpipeunittests.bat c:/runomxilcontentpipeunittests.bat -../Scripts/runomxilcoreconftests.bat c:/runomxilcoreconftests.bat -../Scripts/runomxilcoreconftestswinscwudeb.bat c:/omxil/runomxilcoreconftestswinscwudeb.bat ../RTA/rta.ini /epoc32/winscw/c/rta/rta.ini ../RTA/rta.script /epoc32/winscw/c/rta/rta.script diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Rom/omxilunittests.iby --- a/mmtestenv/mmtesttools/Rom/omxilunittests.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILUNITTESTS_IBY -#define OMXILUNITTESTS_IBY - -#include -#include -#include -#include -#include -#include -#include -#include - -data=EPOCROOT##epoc32\data\c\runomxilcomppcmrendererunittests.bat runomxilcomppcmrendererunittests.bat -data=EPOCROOT##epoc32\data\c\runomxilcontentpipeunittests.bat runomxilcontentpipeunittests.bat -data=EPOCROOT##epoc32\data\c\runomxilcoreconftests.bat runomxilcoreconftests.bat -data=EPOCROOT##epoc32\data\c\runmilifunittests.bat runmilifunittests.bat - -#endif // OMXILUNITTESTS_IBY diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/CopyDataToCF.bat --- a/mmtestenv/mmtesttools/Scripts/CopyDataToCF.bat Mon Aug 23 21:48:44 2010 +0100 +++ b/mmtestenv/mmtesttools/Scripts/CopyDataToCF.bat Wed Sep 08 17:15:23 2010 +0100 @@ -859,23 +859,6 @@ copy %EPOCROOT%epoc32\data\c\mm\mdf\truepause\testingOut3.raw %1\mm\mdf\truepause\testingOut3.raw REM ################################# END HWDEV TRUEPAUSE DATA ######################################### -REM ################################# START OMXIL DATA ################################## -mkdir %1\unittest\omxil\ -mkdir %1\unittest\omxil\testfiles\ - -copy %EPOCROOT%epoc32\data\c\omxil\testfiles\*.* %1\unittest\omxil\testfiles\*.* - -mkdir %1\unittest\omxil\test\ -mkdir %1\unittest\omxil\aacdecoder\ -mkdir %1\unittest\omxil\common\ -mkdir %1\unittest\omxil\pcmrenderer\ - -copy %EPOCROOT%epoc32\data\c\omxil\test\*.* %1\unittest\omxil\test\*.* -copy %EPOCROOT%epoc32\data\c\omxil\aacdecoder\*.* %1\unittest\omxil\aacdecoder\*.* -copy %EPOCROOT%epoc32\data\c\omxil\common\*.* %1\unittest\omxil\common\*.* -copy %EPOCROOT%epoc32\data\c\omxil\pcmrenderer\*.* %1\unittest\omxil\pcmrenderer\*.* - -REM ################################ END OMXIL DATA ############################ REM ################################ DevSubtitle data ########################## diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/mmpacketvideotests_copy_data.txt --- a/mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/mmpacketvideotests_copy_data.txt Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -md e:\logs\ -md e:\logs\testresults\ -md e:\logs\testresults\omxil\ -md c:\tsi_a3f_devsound_aac\ -copy z:\tsi_a3f_devsound_aac_play.ini c:\tsi_a3f_devsound_aac\tsi_a3f_devsound_aac_play.ini -copy e:\inttest\a3f\tsi_a3f_devsound_aac\*.* c:\tsi_a3f_devsound_aac\ -md c:\omxil\ -md c:\omxil\testfiles\ -copy e:\unittest\omxil\testfiles\*.* c:\omxil\testfiles\ diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/mmpacketvideotests_del_data.txt --- a/mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/mmpacketvideotests_del_data.txt Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -del c:\tsi_a3f_devsound_aac\*.* -del c:\omxil\testfiles\*.* -del c:\omxil\*.* -del c:\*.* diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/omxilcomponentsunittests_copy_data.txt --- a/mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/omxilcomponentsunittests_copy_data.txt Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -md e:\logs\ -md e:\logs\testresults\ -md e:\logs\testresults\omxil\ - -md c:\omxil\ -md c:\omxil\testfiles\ - -copy E:\unittest\omxil\testfiles\*.* c:\omxil\testfiles\ diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/omxilcomponentsunittests_del_data.txt --- a/mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/omxilcomponentsunittests_del_data.txt Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -del c:\omxil\testfiles\*.* - -md e:\logs\ -md e:\logs\testresults\ -md e:\logs\testresults\omxil\ - -copy c:\logs\testresults\omxil\*.htm e:\logs\testresults\omxil\ -del c:\logs\testresults\omxil\*.htm - -del c:\omxil\testfiles\*.* diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/omxilcoreconftests_copy_data.txt --- a/mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/omxilcoreconftests_copy_data.txt Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -md c:\omxil\ -md c:\omxil\test\ -md c:\omxil\aacdecoder\ -md c:\omxil\common\ -md c:\omxil\pcmrenderer\ - - -copy E:\unittest\omxil\test\*.* c:\omxil\test\ -copy E:\unittest\omxil\aacdecoder\*.* c:\omxil\aacdecoder\ -copy E:\unittest\omxil\common\*.* c:\omxil\common\ -copy E:\unittest\omxil\pcmrenderer\*.* c:\omxil\pcmrenderer\ diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/omxilcoreconftests_del_data.txt --- a/mmtestenv/mmtesttools/Scripts/DABS/CommandFiles/omxilcoreconftests_del_data.txt Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -del E:\unittest\omxil\test\*_coreconftestoutput.txt -del E:\unittest\omxil\aacdecoder\*_coreconfvendoroutput.txt -del E:\unittest\omxil\common\*_coreconfvendoroutput.txt -del E:\unittest\omxil\pcmrenderer\*_coreconfvendoroutput.txt - - -copy c:\omxil\test\*_coreconftestoutput.txt E:\unittest\omxil\test\ -copy c:\omxil\aacdecoder\*_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\ -copy c:\omxil\common\*_coreconfvendoroutput.txt E:\unittest\omxil\common\ -copy c:\omxil\pcmrenderer\*_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\ - - -del c:\omxil\*.* diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/DABS/test_data.txt --- a/mmtestenv/mmtesttools/Scripts/DABS/test_data.txt Mon Aug 23 21:48:44 2010 +0100 +++ b/mmtestenv/mmtesttools/Scripts/DABS/test_data.txt Wed Sep 08 17:15:23 2010 +0100 @@ -60,10 +60,8 @@ ../runmmfdevsoundinttests.bat ../runa3fdevsoundinttests.bat ../runa3fdevsoundlonginttests.bat -../runmmpacketvideotests.bat ../runmmfdevvideointtests.bat ../runMMFSecureDrmUnitTests.bat ../runMMFSecureDrmIntTests.bat ../runmmfaclntsecuredrmunittests.bat -../runomxilcoreconftests.bat ../run3gplibrarytests.bat \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/runAllAudioTests.bat --- a/mmtestenv/mmtesttools/Scripts/runAllAudioTests.bat Mon Aug 23 21:48:44 2010 +0100 +++ b/mmtestenv/mmtesttools/Scripts/runAllAudioTests.bat Wed Sep 08 17:15:23 2010 +0100 @@ -18,5 +18,4 @@ runMDFUnitTests.bat RunMMFAudioIntTests.bat RunMMFAudioUnitTests.bat -runmmpacketvideotests.bat runMMFOptUnitTests.bat diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/runMMFAudioUnitTests.bat --- a/mmtestenv/mmtesttools/Scripts/runMMFAudioUnitTests.bat Mon Aug 23 21:48:44 2010 +0100 +++ b/mmtestenv/mmtesttools/Scripts/runMMFAudioUnitTests.bat Wed Sep 08 17:15:23 2010 +0100 @@ -40,10 +40,6 @@ runMMFAclntDRMUnitTests.bat runMMFSrsSnkUnitTests.bat runMMFOggctrlUnitTests.bat -runmilifunittests.bat -runomxilcomppcmrendererunittests.bat -runomxilcontentpipeunittests.bat -runomxilcoreconftests.bat runMMFSecureDrmUnitTests.bat runmmfaclntsecuredrmunittests.bat REM run runmmfvideorendererunittests.bat if SYMBIAN_GRAPHICS_USE_GCE is enabled diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/runMMFUnitTests.bat --- a/mmtestenv/mmtesttools/Scripts/runMMFUnitTests.bat Mon Aug 23 21:48:44 2010 +0100 +++ b/mmtestenv/mmtesttools/Scripts/runMMFUnitTests.bat Wed Sep 08 17:15:23 2010 +0100 @@ -45,9 +45,6 @@ runMMFOggctrlUnitTests.bat runMMFAvictrlUnitTests.bat runmmfrufunittests.bat -runomxilcomppcmrendererunittests.bat -runomxilcontentpipeunittests.bat -runomxilcoreconftests.bat runMMFSecureDrmUnitTests.bat runmmfaclntsecuredrmunittests.bat REM run runmmfvideorendererunittests.bat if SYMBIAN_GRAPHICS_USE_GCE is enabled diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/runmilifunittests.bat --- a/mmtestenv/mmtesttools/Scripts/runmilifunittests.bat Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -rem Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem - -del E:\Logs\TestResults\omxil\tsu_milif_omxilif.* -md E:\Logs -md E:\Logs\TestResults -md E:\Logs\TestResults\omxil - -testframework z:\omxil\tsu_milif_omxilif.script - -move C:\Logs\TestResults\omxil\*.htm E:\Logs\TestResults\omxil -del C:\*.* diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/runmmpacketvideotests.bat --- a/mmtestenv/mmtesttools/Scripts/runmmpacketvideotests.bat Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem - -del e:\logs\testresults\tsi_a3f_devsound_aac*.* -del e:\logs\testresults\omxil\tsu_milif_omxilif*.* -del e:\logs\testresults\omxil\tsu_omxil_aacdecoder_01_debug*.* - -md e:\logs\ -md e:\logs\testresults\ -md e:\logs\testresults\omxil\ - -md c:\tsi_a3f_devsound_aac\ - -rem ******************A3F Devsound PacketVideo Integration Tests **************** - - -copy z:\tsi_a3f_devsound_aac_play.ini c:\tsi_a3f_devsound_aac\tsi_a3f_devsound_aac_play.ini - -rem Copy test data -copy e:\inttest\a3f\tsi_a3f_devsound_aac\*.* c:\tsi_a3f_devsound_aac\ - -testframework tsi_a3f_devsound_aac_play_debug.script -move c:\logs\testresults\*.htm e:\logs\testresults\ - -testframework tsi_a3f_devsound_aac_play_alloc.script -move c:\logs\testresults\*.htm e:\logs\testresults\ - -del c:\tsi_a3f_devsound_aac\*.* - - -rem ***************************************************************************** - -rem *********** Multimedia Integration Layer Interface PacketVideo Unit Tests *********** - - -testframework z:\omxil\tsu_milif_omxilif_aac.script -move c:\logs\testresults\omxil\*.htm e:\logs\testresults\omxil\ - -rem ***************************************************************************** - -rem ************************ OMX IL AAC Decoder Unit Tests ************************ - -md c:\omxil\ -md c:\omxil\testfiles\ - -copy e:\unittest\omxil\testfiles\*.* c:\omxil\testfiles\ - -testframework \omxil\tsu_omxil_aacdecoder_01_debug.script -move c:\logs\testresults\omxil\tsu_omxil_aacdecoder_01_debug.htm e:\logs\testresults\omxil\ - -del c:\omxil\testfiles\*.* -del c:\omxil\*.* - -rem ***************************************************************************** - -del c:\*.* \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/runomxilcomppcmrendererunittests.bat --- a/mmtestenv/mmtesttools/Scripts/runomxilcomppcmrendererunittests.bat Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -rem Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem - -del E:\Logs\TestResults\omxil\tsu_omxil_pcmrenderer_01.htm - -md E:\Logs -md E:\Logs\TestResults -md E:\Logs\TestResults\omxil - -md C:\omxil\ -md C:\omxil\testfiles\ - -copy e:\unittest\omxil\testfiles\*.* C:\omxil\testfiles\ - -testframework \omxil\tsu_omxil_pcmrenderer_01.script -move C:\Logs\TestResults\omxil\tsu_omxil_pcmrenderer_01.htm E:\Logs\TestResults\omxil\ - -del C:\omxil\testfiles\*.* diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/runomxilcontentpipeunittests.bat --- a/mmtestenv/mmtesttools/Scripts/runomxilcontentpipeunittests.bat Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -rem Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem - -del E:\Logs\TestResults\omxil\tsu_omxil_dummycontentpipe*.* -md E:\Logs -md E:\Logs\TestResults -md E:\Logs\TestResults\omxil - -testframework z:\omxil\tsu_omxil_dummycontentpipe.script - -move C:\Logs\TestResults\omxil\*.htm E:\Logs\TestResults\omxil -del C:\*.* diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/runomxilcoreconftests.bat --- a/mmtestenv/mmtesttools/Scripts/runomxilcoreconftests.bat Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -rem Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem Core-Loader Conformance Tests for test and vendor components -rem -rem - - -del E:\unittest\omxil\test\*_coreconftestoutput.txt -del E:\unittest\omxil\aacdecoder\*_coreconfvendoroutput.txt -del E:\unittest\omxil\common\*_coreconfvendoroutput.txt -del E:\unittest\omxil\pcmrenderer\*_coreconfvendoroutput.txt - - -REM ...where core-loader conformance input files will be exported/copied -md c:\omxil\ -md c:\omxil\test\ -md c:\omxil\aacdecoder\ -md c:\omxil\common\ -md c:\omxil\pcmrenderer\ - - -REM copy core-loader conformance input files to H4 -copy E:\unittest\omxil\test\*.* c:\omxil\test\ -copy E:\unittest\omxil\aacdecoder\*.* c:\omxil\aacdecoder\ -copy E:\unittest\omxil\common\*.* c:\omxil\common\ -copy E:\unittest\omxil\pcmrenderer\*.* c:\omxil\pcmrenderer\ - - -REM run core conformance tests -coreconf.exe c:\omxil\test\coreinitdeinit_coreconftestinput.txt -move c:\omxil\test\coreinitdeinit_coreconftestoutput.txt E:\unittest\omxil\test\coreinitdeinit_coreconftestoutput.txt - -coreconf.exe c:\omxil\test\getcontentpipe_coreconftestinput.txt -move c:\omxil\test\getcontentpipe_coreconftestoutput.txt E:\unittest\omxil\test\getcontentpipe_coreconftestoutput.txt - -coreconf.exe c:\omxil\test\setuptunnel_coreconftestinput.txt -move c:\omxil\test\setuptunnel_coreconftestoutput.txt E:\unittest\omxil\test\setuptunnel_coreconftestoutput.txt - -REM run core-loader conformance tests -coreconf.exe c:\omxil\test\compload_coreconftestinput.txt -move c:\omxil\test\compload_coreconftestoutput.txt E:\unittest\omxil\test\compload_coreconftestoutput.txt - -coreconf.exe c:\omxil\test\compnameenum_coreconftestinput.txt -move c:\omxil\test\compnameenum_coreconftestoutput.txt E:\unittest\omxil\test\compnameenum_coreconftestoutput.txt - -coreconf.exe c:\omxil\test\compsofrole_coreconftestinput.txt -move c:\omxil\test\compsofrole_coreconftestoutput.txt E:\unittest\omxil\test\compsofrole_coreconftestoutput.txt - -coreconf.exe c:\omxil\test\rolesofcomp_coreconftestinput.txt -move c:\omxil\test\rolesofcomp_coreconftestoutput.txt E:\unittest\omxil\test\rolesofcomp_coreconftestoutput.txt - -REM run all conformance tests -coreconf.exe c:\omxil\test\allconftests_coreconftestinput.txt -move c:\omxil\test\allconftests_coreconftestoutput.txt E:\unittest\omxil\test\allconftests_coreconftestoutput.txt - -coreconf.exe c:\omxil\test\allconftests2_coreconftestinput.txt -move c:\omxil\test\allconftests2_coreconftestoutput.txt E:\unittest\omxil\test\allconftests2_coreconftestoutput.txt - -coreconf.exe c:\omxil\test\allconftests3_coreconftestinput.txt -move c:\omxil\test\allconftests3_coreconftestoutput.txt E:\unittest\omxil\test\allconftests3_coreconftestoutput.txt - - -REM run core conformance tests with vendor components -coreconf.exe c:\omxil\aacdecoder\coreinitdeinit_coreconfvendorinput.txt -move c:\omxil\aacdecoder\coreinitdeinit_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\coreinitdeinit_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\aacdecoder\getcontentpipe_coreconfvendorinput.txt -move c:\omxil\aacdecoder\getcontentpipe_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\getcontentpipe_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\aacdecoder\setuptunnel_coreconfvendorinput.txt -move c:\omxil\aacdecoder\setuptunnel_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\setuptunnel_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\aacdecoder\compload_coreconfvendorinput.txt -move c:\omxil\aacdecoder\compload_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\compload_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\aacdecoder\compnameenum_coreconfvendorinput.txt -move c:\omxil\aacdecoder\compnameenum_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\compnameenum_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\aacdecoder\compsofrole_coreconfvendorinput.txt -move c:\omxil\aacdecoder\compsofrole_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\compsofrole_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\aacdecoder\rolesofcomp_coreconfvendorinput.txt -move c:\omxil\aacdecoder\rolesofcomp_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\rolesofcomp_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\aacdecoder\allconftests_coreconfvendorinput.txt -move c:\omxil\aacdecoder\allconftests_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\allconftests_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\aacdecoder\allconftests2_coreconfvendorinput.txt -move c:\omxil\aacdecoder\allconftests2_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\allconftests2_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\aacdecoder\allconftests3_coreconfvendorinput.txt -move c:\omxil\aacdecoder\allconftests3_coreconfvendoroutput.txt E:\unittest\omxil\aacdecoder\allconftests3_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\coreinitdeinit_coreconfvendorinput.txt -move c:\omxil\common\coreinitdeinit_coreconfvendoroutput.txt E:\unittest\omxil\common\coreinitdeinit_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\getcontentpipe_coreconfvendorinput.txt -move c:\omxil\common\getcontentpipe_coreconfvendoroutput.txt E:\unittest\omxil\common\getcontentpipe_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\setuptunnel_coreconfvendorinput.txt -move c:\omxil\common\setuptunnel_coreconfvendoroutput.txt E:\unittest\omxil\common\setuptunnel_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\compload_coreconfvendorinput.txt -move c:\omxil\common\compload_coreconfvendoroutput.txt E:\unittest\omxil\common\compload_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\compnameenum_coreconfvendorinput.txt -move c:\omxil\common\compnameenum_coreconfvendoroutput.txt E:\unittest\omxil\common\compnameenum_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\compsofrole_coreconfvendorinput.txt -move c:\omxil\common\compsofrole_coreconfvendoroutput.txt E:\unittest\omxil\common\compsofrole_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\rolesofcomp_coreconfvendorinput.txt -move c:\omxil\common\rolesofcomp_coreconfvendoroutput.txt E:\unittest\omxil\common\rolesofcomp_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\allconftests_coreconfvendorinput.txt -move c:\omxil\common\allconftests_coreconfvendoroutput.txt E:\unittest\omxil\common\allconftests_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\allconftests2_coreconfvendorinput.txt -move c:\omxil\common\allconftests2_coreconfvendoroutput.txt E:\unittest\omxil\common\allconftests2_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\allconftests3_coreconfvendorinput.txt -move c:\omxil\common\allconftests3_coreconfvendoroutput.txt E:\unittest\omxil\common\allconftests3_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\allconftests4_coreconfvendorinput.txt -move c:\omxil\common\allconftests4_coreconfvendoroutput.txt E:\unittest\omxil\common\allconftests4_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\allconftests5_coreconfvendorinput.txt -move c:\omxil\common\allconftests5_coreconfvendoroutput.txt E:\unittest\omxil\common\allconftests5_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\common\allconftests6_coreconfvendorinput.txt -move c:\omxil\common\allconftests6_coreconfvendoroutput.txt E:\unittest\omxil\common\allconftests6_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\coreinitdeinit_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\coreinitdeinit_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\coreinitdeinit_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\getcontentpipe_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\getcontentpipe_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\getcontentpipe_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\setuptunnel_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\setuptunnel_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\setuptunnel_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\compload_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\compload_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\compload_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\compnameenum_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\compnameenum_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\compnameenum_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\compsofrole_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\compsofrole_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\compsofrole_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\rolesofcomp_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\rolesofcomp_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\rolesofcomp_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\allconftests_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\allconftests_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\allconftests_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\allconftests2_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\allconftests2_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\allconftests2_coreconfvendoroutput.txt - -coreconf.exe c:\omxil\pcmrenderer\allconftests3_coreconfvendorinput.txt -move c:\omxil\pcmrenderer\allconftests3_coreconfvendoroutput.txt E:\unittest\omxil\pcmrenderer\allconftests3_coreconfvendoroutput.txt - - -REM delete core-loader conformance input files from H4 -del c:\omxil\test\*.* -del c:\omxil\aacdecoder\*.* -del c:\omxil\common\*.* -del c:\omxil\pcmrenderer\*.* diff -r 481b3bce574a -r b6488ac24ddc mmtestenv/mmtesttools/Scripts/runomxilcoreconftestswinscwudeb.bat --- a/mmtestenv/mmtesttools/Scripts/runomxilcoreconftestswinscwudeb.bat Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -rem Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -rem All rights reserved. -rem This component and the accompanying materials are made available -rem under the terms of "Eclipse Public License v1.0" -rem which accompanies this distribution, and is available -rem at the URL "http://www.eclipse.org/legal/epl-v10.html". -rem -rem Initial Contributors: -rem Nokia Corporation - initial contribution. -rem -rem Contributors: -rem -rem Description: -rem this bat file is used to run all core conformance tests on emulator and in UDEB mode only -rem because for vendor components, the binaries are not available in UREL mode and tests will fail -rem this bat file is exported to \epoc32\winscw\c\omxil and can be run from this location -rem or can also be run from \TestTools\Scripts -rem this bat file will not be in the ROM; for testing on hw, use runomxilcoreconftests.bat -rem -rem - -cd \epoc32\release\winscw\udeb - -coreconf.exe \omxil\test\allconftests_coreconftestinput.txt -coreconf.exe \omxil\test\allconftests2_coreconftestinput.txt -coreconf.exe \omxil\test\allconftests3_coreconftestinput.txt -coreconf.exe \omxil\test\compload_coreconftestinput.txt -coreconf.exe \omxil\test\compnameenum_coreconftestinput.txt -coreconf.exe \omxil\test\compsofrole_coreconftestinput.txt -coreconf.exe \omxil\test\coreinitdeinit_coreconftestinput.txt -coreconf.exe \omxil\test\getcontentpipe_coreconftestinput.txt -coreconf.exe \omxil\test\rolesofcomp_coreconftestinput.txt -coreconf.exe \omxil\test\setuptunnel_coreconftestinput.txt - -coreconf.exe \omxil\aacdecoder\allconftests_coreconfvendorinput.txt -coreconf.exe \omxil\aacdecoder\allconftests2_coreconfvendorinput.txt -coreconf.exe \omxil\aacdecoder\allconftests3_coreconfvendorinput.txt -coreconf.exe \omxil\aacdecoder\compload_coreconfvendorinput.txt -coreconf.exe \omxil\aacdecoder\compnameenum_coreconfvendorinput.txt -coreconf.exe \omxil\aacdecoder\compsofrole_coreconfvendorinput.txt -coreconf.exe \omxil\aacdecoder\coreinitdeinit_coreconfvendorinput.txt -coreconf.exe \omxil\aacdecoder\getcontentpipe_coreconfvendorinput.txt -coreconf.exe \omxil\aacdecoder\rolesofcomp_coreconfvendorinput.txt -coreconf.exe \omxil\aacdecoder\setuptunnel_coreconfvendorinput.txt - -coreconf.exe \omxil\common\allconftests_coreconfvendorinput.txt -coreconf.exe \omxil\common\allconftests2_coreconfvendorinput.txt -coreconf.exe \omxil\common\allconftests3_coreconfvendorinput.txt -coreconf.exe \omxil\common\allconftests4_coreconfvendorinput.txt -coreconf.exe \omxil\common\allconftests5_coreconfvendorinput.txt -coreconf.exe \omxil\common\allconftests6_coreconfvendorinput.txt -coreconf.exe \omxil\common\compload_coreconfvendorinput.txt -coreconf.exe \omxil\common\compnameenum_coreconfvendorinput.txt -coreconf.exe \omxil\common\compsofrole_coreconfvendorinput.txt -coreconf.exe \omxil\common\coreinitdeinit_coreconfvendorinput.txt -coreconf.exe \omxil\common\getcontentpipe_coreconfvendorinput.txt -coreconf.exe \omxil\common\rolesofcomp_coreconfvendorinput.txt -coreconf.exe \omxil\common\setuptunnel_coreconfvendorinput.txt - -coreconf.exe \omxil\pcmrenderer\allconftests_coreconfvendorinput.txt -coreconf.exe \omxil\pcmrenderer\allconftests2_coreconfvendorinput.txt -coreconf.exe \omxil\pcmrenderer\allconftests3_coreconfvendorinput.txt -coreconf.exe \omxil\pcmrenderer\compload_coreconfvendorinput.txt -coreconf.exe \omxil\pcmrenderer\compnameenum_coreconfvendorinput.txt -coreconf.exe \omxil\pcmrenderer\compsofrole_coreconfvendorinput.txt -coreconf.exe \omxil\pcmrenderer\coreinitdeinit_coreconfvendorinput.txt -coreconf.exe \omxil\pcmrenderer\getcontentpipe_coreconfvendorinput.txt -coreconf.exe \omxil\pcmrenderer\rolesofcomp_coreconfvendorinput.txt -coreconf.exe \omxil\pcmrenderer\setuptunnel_coreconfvendorinput.txt diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/group/bld.inf --- a/omxil/mmilapi/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -// Include refomxil and unit test subcomponent bld.inf's -#include "../refomxil/group/bld.inf" -#include "../unittest/group/bld.inf" - -// End of file \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/group/multimedia_il_api.mrp --- a/omxil/mmilapi/group/multimedia_il_api.mrp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -# multimedia_il_api.mrp -# -# Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "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: -# -# Description: -# - -component multimedia_il_api - -source \sf\os\mm\omxil\mmilapi\ - -binary \sf\os\mm\omxil\mmilapi\group all - -exports \sf\os\mm\omxil\mmilapi\group - -notes_source \component_defs\release.src - -ipr T diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/ilaudioconfigstructs.h --- a/omxil/mmilapi/ilif/inc/ilaudioconfigstructs.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,159 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef ILAUDIOCONFIGSTRUCTS_H -#define ILAUDIOCONFIGSTRUCTS_H - -#include - -/** -@file -@internalTechnology -@prototype -*/ - -/** -This is the structure to be used by implementations of the MMMFDevSoundCustomInterfaceSpecificConfig::SetFormatSpecificConfigL() -method to pass the AudioSpecificConfig configuration data blindly to the codec. -*/ -class TAudioSpecificConfigType -{ -public: - /** The pointer to the AudioSpecificConfig chunk of data. - */ - TUint8* iAudioSpecificConfig; - - /** The length of the data encapsulated in this structure.. - */ - TUint32 iAudioSpecificConfigLength; - -}; - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* The rest of this file defines some structures that are not publishedPartner yet. -/* They have been defined for internal used only as a proof of concept for testing -/* the varios possible MILIF implementations. -/* These definition could be upgraded to publishedPartner when the need for Symbian -/* support of these particular params arises. -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** -A typedef to symbianize the OpenMAX IL PORTFORMATTYPE parameter structure. -*/ -typedef OMX_AUDIO_PARAM_PORTFORMATTYPE TAudioPortFormatType; - - -/** -A typedef to symbianize the OpenMAX IL VORBISTYPE parameter structure. - -@internalTechnology -@prototype -*/ -typedef OMX_AUDIO_PARAM_VORBISTYPE TPortVorbisType; - -/** -A typedef to symbianize the OpenMAX IL PCMMODETYPE parameter structure. - -@internalTechnology -@prototype -*/ -typedef OMX_AUDIO_PARAM_PCMMODETYPE TPortPCMModeType; - -/** -A typedef to symbianize the OpenMAX IL AACPROFILETYPE parameter structure. - -@internalTechnology -@prototype -*/ -typedef OMX_AUDIO_PARAM_AACPROFILETYPE TPortAACProfileType; - -/** -A typedef to symbianize the OpenMAX IL VOLUMETYPE parameter structure. - -@internalTechnology -@prototype -*/ -typedef OMX_AUDIO_CONFIG_VOLUMETYPE TPortVolumeType; - -/** -A typedef to symbianize the OpenMAX IL MUTETYPE parameter structure. - -@internalTechnology -@prototype -*/ -typedef OMX_AUDIO_CONFIG_MUTETYPE TPortMuteType; - - -/** -This is the structure to be used by implementations of the MMMFDevSoundCustomInterfaceSpecificConfig::SetFormatSpecificConfigL() -method to extract configuration data from the AudioSpecificConfig. - -@internalTechnology -@prototype -*/ -class TAacConfig - { -public: - inline TAacConfig(); - - inline TAacConfig(TUint8 aAudioType, TUint8 aSamplingRateIndex, TUint32 aNumChannels, TInt aStereoMode); - -public: - /** The audio object type - */ - TUint8 iAudioType; - - /** The rate index of the audio data. - */ - TUint8 iSamplingRateIndex; - - /** Number of channels of the underlying AAC coded stream - */ - TUint32 iNumChannels; - - /** The type of stereo audio data. - */ - TInt iStereoMode; - }; - -inline -TAacConfig::TAacConfig() - : - iAudioType(0), - iSamplingRateIndex(0), - iNumChannels(0), - iStereoMode(0) - { - } - -inline -TAacConfig::TAacConfig( - TUint8 aAudioType, - TUint8 aSamplingRateIndex, - TUint32 aNumChannels, - TInt aStereoMode - ) - : - iAudioType(aAudioType), - iSamplingRateIndex(aSamplingRateIndex), - iNumChannels(aNumChannels), - iStereoMode(aStereoMode) - { - } - - - -#endif // ILAUDIOCONFIGSTRUCTS_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/ilconfigstructs.h --- a/omxil/mmilapi/ilif/inc/ilconfigstructs.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef ILCONFIGSTRUCTS_H -#define ILCONFIGSTRUCTS_H - -#include - - -/** - A typedef to symbianize the OpenMAX IL PORTDEFINITIONTYPE parameter structure. - */ -typedef OMX_PARAM_PORTDEFINITIONTYPE TPortDefinitionType; - - -#endif // ILCONFIGSTRUCTS_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/ilifbase.h --- a/omxil/mmilapi/ilif/inc/ilifbase.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,284 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef ILIFBASE_H -#define ILIFBASE_H - -#include - - -/** - Enumeration used to indicate IL Component internal state. -*/ -enum TILComponentState - { - /** - Component invalid state - */ - EComponentInvalid = 0, - /** - Component loaded state - */ - EComponentLoaded, - /** - Component idle state - */ - EComponentIdle, - /** - Component executing state - */ - EComponentExecuting, - /** - Component paused state - */ - EComponentPaused, - /** - Component waiting for resources state - */ - EComponentWaitingForResources, - /** - Component loading state - */ - EComponentLoading, - /** - Component initializing state - */ - EComponentInitializing, - - EComponentMax = 0X7FFFFFFF - }; - - -/** -Enumeration used to indicate if a port is an input or an output port -*/ -enum TPortDirection -{ - /** - Port is an input port - */ - EDirInput, - /** - Port is an output port - */ - EDirOutput -}; - - -/** - Enumeration used to define the various types of IL Events - This enumeration matches the possible component events as defined in the - OpenMAX v1.1 specification - */ -enum TILEventTypes - { - /** - Component has completed the execution of a command. - */ - EEventCmdComplete = 0, - /** - Component has detected an error condition. - */ - EEventError, - /** - A buffer mark has reached the target component, and the IL client has - received this event with the private data pointer of the mark. - */ - EEventMark, - /** - Component has changed port settings. For example, the component has - changed port settings resulting from bit stream parsing. - */ - EEventPortSettingsChanged, - /** - The event that a component sends when it detects the end of a stream. - */ - EEventBufferFlag, - /** - The component has been granted resources and is transitioning from the - OMX_StateWaitForResources state to the OMX_StateIdle state. - */ - EEventResourcesAcquired, - /** - The component has been resumed (i.e. no longer suspended) due to - reacquisition of resources. - */ - EEventDynamicResourcesAvailable, - - EEventMax = 0X7FFFFFFF - }; - - -/** -Event structure representing the events and data sent from the IL component to the IL client. -*/ -class TILEvent - { -public: - inline TILEvent(); - - inline TILEvent(TILEventTypes aEvent, TUint32 aData1, TUint32 aData2, TAny* aExtraData); - -public: - /** - Event the component wants to notify the application about. - */ - TILEventTypes iEvent; - /** - The first integer event-specific parameter. - */ - TUint32 iData1; - /** - The second integer event-specific parameter. - */ - TUint32 iData2; - /** - A pointer to additional event-specific data the component wants to send to the application. - The component owns the memory. - */ - TAny* iExtraData; - }; - -/** - Enumeration used to define commands sent to the IL component - This enumeration defines commands as defined in the OpenMAX v1.1 specification - that are not alredy covered by the Symbian IL API - */ -enum TILCommandTypes - { - /** - Change the component state command. - */ - ECommandStateSet, - /** - Flush the data queue(s) of a component. - */ - ECommandFlush, - /** - Disable a port on a component. - */ - ECommandPortDisable, - /** - Enable a port on a component. - */ - ECommandPortEnable, - /** - Mark a component/buffer for observation. - */ - ECommandMarkBuffer, - /** - Invalid command. - */ - ECommandInvalid = 0X7FFFFFFF - }; - -/** -Command structure representing the command's data sent to the IL component by the IL client -*/ -class TILCommand - { -public: - inline TILCommand(); - - inline TILCommand(TILCommandTypes iCmd, TUint32 aData1, TAny* aExtraData); - -public: - /** - Command that the application wants to send to the component. - */ - TILCommandTypes iCmd; - /** - The integer command-specific parameter. - */ - TUint32 iData1; - /** - A pointer to additional command-specific data the application wants to send to the component. - The application owns the memory. - */ - TAny* iExtraData; - }; - - -/** -Structure encapsulating the various fields needed to represent a version of some content. -*/ -class TILVersion - { -public: - inline TILVersion(); - - inline TILVersion(TUint8 aMajor, TUint8 aMinor, TUint8 aRev, TUint8 aStep); - - inline TBool operator==(TILVersion aVersion); - - inline TBool operator!=(TILVersion aVersion); - -public: - /** - Integer representing the Major version number. - */ - TUint8 iMajor; - /** - Integer representing the Minor version number. - */ - TUint8 iMinor; - /** - Integer representing the Revision version number. - */ - TUint8 iRev; - /** - Integer representing the Step version number. - */ - TUint8 iStep; - }; - -/** -Structure encapsulating the various fields needed to represent a version of an IL component. -This structure is based on the arguments required by the OMX_GetComponentVersion OMX API MACRO. -*/ -class TILComponentVersion - { -public: - inline TILComponentVersion(TPtr8& aPtr); - -public: - /** - The component name to which the structure applies. - */ - TPtr8 iComponentName; - /** - The version of the component to which structure applies. - */ - TILVersion iComponentVersion; - /** - The version of the specification that was used to build this component. - */ - TILVersion iSpecVersion; - /** - The unique identifier for the particular instance of the component to which structure applies. - */ - TUint32 iComponentUniqueID; - }; - - -#include "ilifbase.inl" - -#endif // ILIFBASE_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/ilifbase.inl --- a/omxil/mmilapi/ilif/inc/ilifbase.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef ILIFBASE_INL -#define ILIFBASE_INL - -inline -TILEvent::TILEvent() - : - iEvent(EEventMax), - iData1(0), - iData2(0), - iExtraData(0) - { - } - -inline -TILEvent::TILEvent( - TILEventTypes aEvent, - TUint32 aData1, - TUint32 aData2, - TAny* aExtraData - ) - : - iEvent(aEvent), - iData1(aData1), - iData2(aData2), - iExtraData(aExtraData) - { - } - -inline -TILCommand::TILCommand() - : - iCmd(ECommandInvalid), - iData1(0), - iExtraData(0) - { - } - -inline -TILCommand::TILCommand( - TILCommandTypes aCmd, - TUint32 aData1, - TAny* aExtraData - ) - : - iCmd(aCmd), - iData1(aData1), - iExtraData(aExtraData) - { - } - -inline TILVersion::TILVersion() - : - iMajor(0), - iMinor(0), - iRev(0), - iStep(0) - { - } - -inline TILVersion::TILVersion( - TUint8 aMajor, - TUint8 aMinor, - TUint8 aRev, - TUint8 aStep - ) - : - iMajor(aMajor), - iMinor(aMinor), - iRev(aRev), - iStep(aStep) - { - } - -inline TBool TILVersion::operator==(TILVersion aVersion) - { - return (!(operator!=(aVersion))); - } - -inline TBool TILVersion::operator!=(TILVersion aVersion) - { - return ((aVersion.iMajor != iMajor) || (aVersion.iMinor != iMinor) || (aVersion.iRev != iRev) || (aVersion.iStep != iStep)); - } - -inline TILComponentVersion::TILComponentVersion( - TPtr8& aPtr - ) - : - iComponentName(aPtr), - iComponentVersion(), - iSpecVersion(), - iComponentUniqueID(0) - { - } - - -#endif // ILIFBASE_INL diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/ilifuids.h --- a/omxil/mmilapi/ilif/inc/ilifuids.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef ILIFUIDS_H -#define ILIFUIDS_H - -#include "ilifuids.hrh" - -/** -UID used to identify the MILComponentIf API. -@see KILComponentIfUid -*/ -const TUid KUidILComponentIf = { KILComponentIfUid }; - -#endif // ILIFUIDS_H \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/ilifuids.hrh --- a/omxil/mmilapi/ilif/inc/ilifuids.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef ILIFUIDS_HRH -#define ILIFUIDS_HRH - -/** -Defines the numerical value for KUidILComponentIf. -@see KUidILComponentIf -*/ -#define KILComponentIfUid 0x10285C08 - -#endif // ILIFUIDS_HRH - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/iltypeuids.h --- a/omxil/mmilapi/ilif/inc/iltypeuids.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,139 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef ILTYPEUIDS_H -#define ILTYPEUIDS_H - -/** -@file -@internalTechnology -@prototype -*/ - -/** -The UID to identify the specific TOMXILStructParam type of IL structs. -@see TOMXILStructParam -*/ -const TInt KUidOMXILStructType = 0x10285C09; - -/** -The UID to identify the TTaskConfig encapsulated in the TILStruct. -@see TILTaskConfig -*/ -const TInt KUidMMFTTaskConfig = 0x10285C0A; - -/** -The UID to identify the TAudioSpecificConfigType encapsulated in the TILStruct. -@see TILAudioSpecificConfig -*/ -const TInt KUidMMFAudioSpecificConfigType = 0x10285C7E; - -/** -The UID to identify the TTimeIntervalMicroSeconds encapsulated in the TILStruct. -@see TILVolumeRamp -*/ -const TInt KUidMMFVolumeRampType = 0x10285CC7; - -/** -The UID to identify the TUint encapsulated in the TILStruct representing the Volume. -@see TILVolume -*/ -const TInt KUidMMFVolumeType = 0x10285D18; - -/** -The UID to identify the TUint encapsulated in the TILStruct representing the number of bytes played. -@see TILBytesPlayed -*/ -const TInt KUidMMFBytesPlayedType = 0x10285CC8; - -/** -The UID to identify the TPortDefinitionType encapsulated in the TILStruct. -@see TILPortDefinition -*/ -const TInt KUidTPortDefinitionType = 0x10285C0B; - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* The rest of this file defines some UIDs that are not publishedPartner yet. -/* They have been defined for internal used only as a proof of concept for testing -/* the varios possible MILIF implementations. -/* These definition could be upgraded to publishedPartner when the need for Symbian -/* support of these particular params arises. -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -/** -The UID to identify the TAacConfig encapsulated in the TILStruct. -@see TILAacConfig - -@internalTechnology -@prototype -*/ -const TInt KUidMMFTAacConfig = 0x10285C25; - -/** -The UID to identify the TAudioPortFormatType encapsulated in the TILStruct. -@see TILAudioPortFormat - -@internalTechnology -@prototype -*/ -const TInt KUidTAudioPortFormatType = 0x10285C0C; - -/** -The UID to identify the TPortVorbisType encapsulated in the TILStruct. -@see TILPortVorbis - -@internalTechnology -@prototype -*/ -const TInt KUidTPortVorbisType = 0x10285C0D; - -/** -The UID to identify the TPortPCMModeType encapsulated in the TILStruct. -@see TILPortModePCM - -@internalTechnology -@prototype -*/ -const TInt KUidTPortPCMModeType = 0x10285C0E; - -/** -The UID to identify the TPortAACProfileType encapsulated in the TILStruct. -@see TILPortAACProfile - -@internalTechnology -@prototype -*/ -const TInt KUidTPortAACProfileType = 0x10285C0F; - -/** -The UID to identify the TPortVolumeType encapsulated in the TILStruct. -@see TILPortVolume - -@internalTechnology -@prototype -*/ -const TInt KUidTPortVolumeType = 0x10285C10; - -/** -The UID to identify the TPortMuteType encapsulated in the TILStruct. -@see TILPortMute - -@internalTechnology -@prototype -*/ -const TInt KUidTPortMuteType = 0x10285C11; - - -#endif // ILTYPEUIDS_H \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/milcomponentif.h --- a/omxil/mmilapi/ilif/inc/milcomponentif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,334 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef MILCOMPONENTIF_H -#define MILCOMPONENTIF_H - -#include -#include "ilifbase.h" -#include "tilstruct.h" - -class MILIfObserver; -class MILComponentPortIf; - -/** -IL Component interface class -*/ -class MILComponentIf - { -public: - - /** - Synchronous method which creates the physical IL Component. - - @param aComponentName - The string identifying the name of the component. - @param aComponentObserver - The class to receive asynchronous component events. - @leave System wide error. - */ - virtual void CreateComponentL(const TDesC8& aComponentName, MILIfObserver& aComponentObserver) = 0; - - /** - Synchronous method which creates the physical IL Component. - - @param aComponentUID - The UIF identifying a particular component implementation. - @param aComponentObserver - The class to receive asynchronous component events. - @leave System wide error. - */ - virtual void CreateComponentL(const TUid& aComponentUID, MILIfObserver& aComponentObserver) = 0; - - /** - Called by the IL client to release the component associated to this interface - */ - virtual void ReleaseComponent() = 0; - - /** - Synchronous method which returns the input ports a component holds. - The array is cleared before appending ports. - - @param aComponentPorts - The array to which the input ports will be appended. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt GetComponentInputPorts(RPointerArray& aComponentPorts) const = 0; - - /** - Synchronous method which returns the output ports a component holds. - The array is cleared before appending ports. - - @param aComponentPorts - The array to which the output ports will be appended. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt GetComponentOutputPorts(RPointerArray& aComponentPorts) const = 0; - - /** - Synchronous method which sets the configuration for a Component. - Note that in the omx implementation of this interface this function will be used for both SetParameter() - and SetConfig() - - @param aConfig - The reference to the structure that contains the configuration data. - @param aComponentPort - The component's port to be configured when needed, otherwise NULL. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see TILStruct - */ - virtual TInt SetConfig(const TILStruct& aConfig, const MILComponentPortIf* aComponentPort = NULL) = 0; - - /** - Synchronous method which gets a configuration structure from a component. - Note that in the omx implementation of this interface this function will be used for both GetParameter() - and GetConfig() - - @param aConfig - The reference to the structure that is to contain the configuration information. - @param aComponentPort - The component's port to be queried when needed, otherwise NULL. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see TILStruct - */ - virtual TInt GetConfig(TILStruct& aConfig, const MILComponentPortIf* aComponentPort = NULL) const = 0; - - /** - Asynchronous method which instructs the Component to start the initialization. - An event is sent to the component's observer on completion. - - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see MILIfObserver::MsgFromILComponent() - */ - virtual TInt Initialize() = 0; - - /** - Asynchronous method which instructs the Component to start the execution. - An event is sent to the component's observer on completion. - - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see MILIfObserver::MsgFromILComponent() - */ - virtual TInt Execute() = 0; - - /** - Asynchronous method which pauses the current on-going task. - An event is sent to the component's observer on completion. - - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see MILIfObserver::MsgFromILComponent() - */ - virtual TInt Pause() = 0; - - /** - Asynchronous method which stops the current on-going task. - An event is sent to the component's observer on completion. - - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see MILIfObserver::MsgFromILComponent() - */ - virtual TInt Stop() = 0; - - /** - Asynchronous method which moves the component back to its uninitialized state. - An event is sent to the component's observer on completion. - - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see MILIfObserver::MsgFromILComponent() - */ - virtual TInt UnInitialize() = 0; - - /** - Synchronous method which returns the current state of the Component. - - @param aState - The current state of the Component. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt GetState(TILComponentState& aState) const = 0; - - /** - Synchronous method which sends a command to the component. - - @param aCommand - The reference to the structure that is to contain the command to be executed by the component. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see TILCommand - */ - virtual TInt SendCommand(const TILCommand& aCommand) = 0; - - /** - Asynchronous function used to flush all component ports. - An event is sent to the component's observer on completion. - - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt FlushAllPorts() = 0; - - /** - Called by the IL client to query the component about the roles it supports. - A component role is a string identifying the behaviour of the component. - - @param aComponentRole - The pointer to the string returned identifying the role of the component. - @param aIndex - The index of the component's role being queried. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt ComponentRoleEnum(TPtr8& aComponentRole, TUint32 aIndex) const = 0; - - - /** - Called by the IL client to query the component's version. - - @param aVersion - The reference to the structure that is to contain the version of the component - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see TILComponentVersion - */ - virtual TInt GetComponentVersion(TILComponentVersion& aVersion) const = 0; - - /** - Synchronous method which uses a standardized OpenMAX or vendor-specific extension string - to set a particular component configuration. - Note that in the OMX implementation of this interface this function will be used for both - SetParameter() and SetConfig(). - - @param aParameterName - The string that identifies the data container. - @param aConfig - The reference to the structure that allows access to the data container used for this - particular component configuration - @param aComponentPort - The component's port to which the config command is targeted to. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see TILStruct - */ - virtual TInt SetExtConfig(const TDesC8& aParameterName, const TILStruct& aConfig, const MILComponentPortIf* aComponentPort = NULL) = 0; - - /** - Synchronous method which uses a standardized OpenMAX or vendor-specific extension string - to get a particular component configuration. - - @param aParameterName - The string that identifies the data container. - @param aConfig - The reference to the structure to access the component's configuration data. - @param aComponentPort - The component's port to which the config command is targeted to. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see TILStruct - */ - virtual TInt GetExtConfig(const TDesC8& aParameterName, TILStruct& aConfig, const MILComponentPortIf* aComponentPort = NULL) const = 0; - - - /** - Synchronous method to set a particular instance of this interface to the specific role passed as a parameter. - A single implementation of this API may support various component roles. It is necessary for the - implementation to know what type of component is configuring so that the appropriate translation of - configuration parameters can be chosen. - The role UIDs may be defined by the client application and can be mapped be the implementation of this API - to roles the components under this layer understand. - - @param aFormat - The UID identifying the role to be played by the implementation of this API. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt SetComponentIfRole(const TUid& aComponentRole) = 0; - - /** - Synchronous method to set a particular instance of this interface to the specific role passed as a parameter. - A single implementation of this API may support various component roles. It is necessary for the - implementation to know what type of component is configuring so that the appropriate translation of - configuration parameters can be chosen. - Usually the component role names are defined by a known standard body. For instance role names are defined - for OpenMAX IL Standard Components by Khronos Group. - - @param aComponentRole - The string identifying the role to be played by the implementation of this API. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt SetComponentIfRole(const TDesC8& aComponentRole) = 0; - - /** - Synchronous method to query about the particular role the interface is set to. - A single implementation of this API can support various roles, however the role of the interface - is that of the physical component instantiated under this interface. - The role of the interface is set by the client after the component creation by calling SetComponentIfRole. - The role UIDs may be defined by the client application and can be mapped be the implementation of this API - to roles the components under this layer understand. - - @param aComponentRole - The UID identifying this interface's role which is to be passed back to the caller. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt GetComponentIfRole(TUid& aComponentRole) const = 0; - - /** - Synchronous method to query about the particular role the interface is set to. - A single implementation of this API can support various roles, however the role of the interface - is that of the [hysical component instantiated under this interface. - The role of the interface is set by the client after the component creation by calling SetComponentIfRole. - Usually the component role names are defined by a known standard body. For instance role names are defined - for OpenMAX IL Standard Components by Khronos Group. - - @param aComponentRole - The string identifying this interface's role which is to be passed back to the caller. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt GetComponentIfRole(TDes8& aComponentRole) const = 0; - - /** - Synchronous method used to identify a particular interface implementation. - It takes as a parameter the UID identifying the type of the interface requested and - it returns a pointer to the specified interface or NULL if it does not exist. - Must be cast to correct type by the user - - @param aInterfaceId - The UID associated with the interface requested. - @return A pointer to the specified interface or NULL if it has not be implemented. - */ - virtual TAny* CustomInterface(TUid aInterfaceId) = 0; - - }; - - -#endif // MILCOMPONENTIF_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/milcomponentportif.h --- a/omxil/mmilapi/ilif/inc/milcomponentportif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef MILCOMPONENTPORTIF_H -#define MILCOMPONENTPORTIF_H - -#include -#include "ilifbase.h" -#include "milcomponentif.h" - -class MILComponentPortIf; -class MILComponentPortIfObserver; - -class CMMFBuffer; - -/** -IL Component Port interface class -*/ -class MILComponentPortIf - { -public: - - /** - Asynchronous function used to get data from an output Port. - - @param aBuffer - Reference to the buffer to be filled. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt FillThisBuffer(CMMFBuffer& aBuffer) = 0; - - /** - Asynchronous function used to deliver data to an input Port. - - @param aBuffer - Reference to the buffer to be emptied. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt EmptyThisBuffer(const CMMFBuffer& aBuffer) = 0; - - /** - Called by an IL client to request tunnelling between the component's port represented by this - interface and the component's port represented by the port interface passed as a parameter. - It can also be called by an IL client to request tearing down an existing tunnel by passing a NULL - port argument. - - @param aPort - The port interface representing the port to be tunelled to, or NULL to disconnect tunnel. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt TunnelRequest(MILComponentPortIf* aPort) = 0; - - /** - Called by a component to get the index of this port. - - @return An integer specifying the index of this port. - */ - virtual TInt PortIndex() const = 0; - - /** - Called by a component to get the direction of this port. - - @return The direction of this port - */ - virtual TPortDirection PortDirection() const = 0; - - /** - Synchronous function used to instruct the port to create a buffer. - - @param aBufferSize - The size of the buffer to be created. - @leave KErrNoMemory if not sufficient memory available when creating the buffer. - @return A pointer to the newly created buffer. - */ - virtual CMMFBuffer* CreateBufferL(TInt aBufferSize) = 0; - - /** - Synchronous function used to instruct the Port to use the buffer passed - in the function's argument. - - @param aBuffer - A reference to the buffer to be used by the Port. - @return An error code indicating if the function call was successful. - KErrNone on success, otherwise another of the system-wide error codes. - */ - virtual TInt UseBuffer(CMMFBuffer& aBuffer) = 0; - - /** - Synchronous function used to instruct the port to free the buffer passed - in the function's argument. - - @param aBuffer - The buffer to be freed - @return An error code indicating if the function call was successful. - KErrNone on success, otherwise another of the system-wide error codes. - */ - virtual TInt FreeBuffer(CMMFBuffer* aBuffer) = 0; - - /** - Asynchronous function used to flush this port. - - @return An error code indicating if the function call was successful. - KErrNone on success, otherwise another of the system-wide error codes. - */ - virtual TInt FlushPort() = 0; - - /** - Asynchronous function used to enable this port. - - @return An error code indicating if the function call was successful. - KErrNone on success, otherwise another of the system-wide error codes. - */ - virtual TInt EnablePort() = 0; - - /** - Asynchronous function used to disable this port. - - @return An error code indicating if the function call was successful. - KErrNone on success, otherwise another of the system-wide error codes. - */ - virtual TInt DisablePort() = 0; - - /** - Synchronous function that returns a pointer to a component owning this port. - - @return A pointer to this port's component - */ - virtual MILComponentIf* PortComponent() const = 0; - - }; - -#endif // MILCOMPONENTPORTIF_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/milifobserver.h --- a/omxil/mmilapi/ilif/inc/milifobserver.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef MILIFOBSERVER_H -#define MILIFOBSERVER_H - -#include -#include "ilifbase.h" - -class CMMFBuffer; -class MILComponentIf; - -/** -IL Component observer class -*/ -class MILIfObserver - { -public: - /** - Callback function to send an event/message to the component observer, i.e. the IL client. - - @param aComponent - The IL Component which sent the callback. - @param aEvent - A reference to the structure that contains the event data. - Any implementation of this function should be able to handle expected and unexpected events. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - @see TILEvent - */ - virtual TInt MsgFromILComponent(const MILComponentIf* aComponent, const TILEvent& aEvent) = 0; - - /** - Callback function to return to the component port observer the buffer that has been delivered. - The observer is usually the IL client or another port. - - Note that for some implementations this is essentially equivalent to EmptyBufferDone() from input - ports and FillBufferDone() from output ports. - - @param aPort - The interface from the port which sent the callback. - @param aBuffer - The buffer returned by the IL component. - @return An error code indicating if the function call was successful. KErrNone on success, otherwise - another of the system-wide error codes. - */ - virtual TInt BufferDelivered(const MILComponentPortIf* aPort, const CMMFBuffer* aBuffer) = 0; - }; - -#endif // MILIFOBSERVER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/tilstruct.h --- a/omxil/mmilapi/ilif/inc/tilstruct.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef TILSTRUCT_H -#define TILSTRUCT_H - -#include - -/** -Configuration structure base class. -Represents a configuration structure identified by a base class. -*/ -class TILStruct - { -public: - inline const TUid& Uid() const; - -protected: - inline TILStruct(); - -protected: - TUid iUid; - }; - -/** -Template class to create a TILStruct configuration given a structure and an unique UID to identify it. -*/ -template -class TILStructParam : public TILStruct - { -public: - inline TILStructParam(const T& aParameterStructure); - inline TILStructParam(); - inline operator T&(); - inline static const T* GetStructure(const TILStruct& aConfig); - inline static T* GetStructure(TILStruct& aConfig); -private: - TPckgBuf iBuf; - }; - -#include "tilstruct.inl" - -#endif // TILSTRUCT_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/tilstruct.inl --- a/omxil/mmilapi/ilif/inc/tilstruct.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef TILSTRUCT_INL -#define TILSTRUCT_INL - -/** -Constructor -*/ -inline TILStruct::TILStruct() - : - iUid(KNullUid) - { - } - -/** -Obtain the UID identifying the structure. -@return The identifying UID of the structure. -*/ -inline const TUid& TILStruct::Uid() const - { - return iUid; - } - -/** -Constructor -@param aParameterStructure The structure to store -*/ -template -inline TILStructParam::TILStructParam(const T& aParameterStructure) - { - iUid = TUid::Uid(U); - iBuf = TPckgBuf(aParameterStructure); - } - -/** -Default Constructor -*/ -template -inline TILStructParam::TILStructParam() - { - iUid = TUid::Uid(U); - } - -/** -Operator to return the structure represented by the class. -@return The structure represented by the class. -*/ -template -inline TILStructParam::operator T&() - { - return iBuf(); - } - -/** -Static method to return the structure represented by TILStruct. -@param A const reference to the base structure. -@return A const pointer to the structure represented by the class. -*/ -template -inline const T* TILStructParam::GetStructure(const TILStruct& aConfig) - { - const T* ptr = &((static_cast& >(aConfig)).iBuf()); - return ptr; - } - -/** -Static method to return the structure represented by TILStruct. -@param A reference to the base structure. -@return A pointer to the structure represented by the class. -*/ -template -inline T* TILStructParam::GetStructure(TILStruct& aConfig) - { - T* ptr = &((static_cast& >(aConfig)).iBuf()); - return ptr; - } - - - -#endif // TILSTRUCT_INL diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/tilstructtypes.h --- a/omxil/mmilapi/ilif/inc/tilstructtypes.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,154 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef TILSTRUCTTYPES_H -#define TILSTRUCTTYPES_H - -#include "tilstruct.h" -#include "iltypeuids.h" -#include "ilconfigstructs.h" -#include "ilaudioconfigstructs.h" -#include - - -/** -TILStruct to encapsulate TTaskConfig -see KUidMMFTTaskConfig -see TILStructParam -*/ -typedef TILStructParam TILTaskConfig; - -/** -TILStruct to encapsulate TAudioSpecificConfigType -see KUidMMFAudioSpecificConfigType -see TILStructParam -*/ -typedef TILStructParam TILAudioSpecificConfig; - -/** -TILStruct to encapsulate TPortDefinitionType -see KUidTPortDefinitionType -see TILStructParam -*/ -typedef TILStructParam TILPortDefinition; - -/** -TILStruct to encapsulate TTimeIntervalMicroSeconds containing the volume ramping interval -see KUidMMFVorlumeRampType -see TILStructParam -*/ -typedef TILStructParam TILVolumeRamp; - -/** -TILStruct to encapsulate the TUint containing the volume setting -see KUidMMFVolumeType -see TILStructParam -*/ -typedef TILStructParam TILVolume; - -/** -TILStruct to encapsulate the TUint containing the number of bytes played -see KUidMMFBytesPlayedType -see TILStructParam -*/ -typedef TILStructParam TILBytesPlayed; - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ -/* The rest of this file defines some structures that are not publishedPartner yet. -/* They have been defined for internal used only as a proof of concept for testing -/* the various possible MILIF implementations. -/* These definition could be upgraded to publishedPartner when the need for Symbian -/* support of these particular params arises. -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - - -/** -TILStruct to encapsulate TAacConfig -see KUidMMFTAacConfig -see TILStructParam - -@internalTechnology -@prototype -*/ -typedef TILStructParam TILAacConfig; - -/** -TILStruct to encapsulate TAudioPortFormatType -see KUidTAudioPortFormatType -see TILStructParam - -@internalTechnology -@prototype -*/ -typedef TILStructParam TILAudioPortFormat; - -/** -TILStruct to encapsulate TPortVorbisType -see KUidTPortVorbisType -see TILStructParam - -@internalTechnology -@prototype -*/ -typedef TILStructParam TILPortVorbis; - -/** -TILStruct to encapsulate TPortPCMModeType -see KUidTPortPCMModeType -see TILStructParam - -@internalTechnology -@prototype -*/ -typedef TILStructParam TILPortPCMMode; - -/** -TILStruct to encapsulate TPortAACProfileType -see KUidTPortAACProfileType -see TILStructParam - -@internalTechnology -@prototype -*/ -typedef TILStructParam TILPortAACProfile; - -/** -TILStruct to encapsulate TPortVolumeType -see KUidTPortVolumeType -see TILStructParam - -@internalTechnology -@prototype -*/ -typedef TILStructParam TILPortVolume; - -/** -TILStruct to encapsulate TPortMuteType -see KUidTPortMuteType -see TILStructParam - -@internalTechnology -@prototype -*/ -typedef TILStructParam TILPortMute; - -#endif // TILSTRUCTTYPES_H \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/tomxilstruct.h --- a/omxil/mmilapi/ilif/inc/tomxilstruct.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef TOMXILSTRUCT_H -#define TOMXILSTRUCT_H - -#include "tilstruct.h" -#include - -/** -A typedef to symbianize the OpenMAX IL index type structure. -*/ -typedef OMX_INDEXTYPE TILStructIndex; - - -/** -Derived class to create a TILStruct configuration given an index and a pointer to a parameter structure. -The index identifies the param structure -*/ -class TOMXILStructParam : public TILStruct - { -public: - inline TOMXILStructParam(TAny* aParam, TILStructIndex aIndex); - inline TAny* Param() const; - inline TILStructIndex Index() const; - -private: - TAny* iParam; // Not owned - TILStructIndex iIndex; - }; - -#include "tomxilstruct.inl" - -#endif // TOMXILSTRUCT_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/ilif/inc/tomxilstruct.inl --- a/omxil/mmilapi/ilif/inc/tomxilstruct.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalTechnology - @prototype -*/ - -#ifndef TOMXILSTRUCT_INL -#define TOMXILSTRUCT_INL - - -/** -Constructor - -@param aParam - The pointer to the structure associated to the particular index stored in this wrapper class. -@param aIndex - An index to identify the definition of the structure pointed to by this wrapper class. -*/ -inline TOMXILStructParam::TOMXILStructParam(TAny* aParam, TILStructIndex aIndex) - : iParam(aParam), iIndex(aIndex) -{ - ASSERT(aParam); - - iUid = TUid::Uid(KUidOMXILStructType); -} - - -/** -Method to return the pointer to the structure represented by the index stored in this TOMXILStructParam. -The pointer should be cast to the structure associated to the TILStructIndex stored TOMXILStructParam - -@return A pointer to the OMX IL structure represented by this particular instance of the TOMXILStructParam -*/ -inline TAny* TOMXILStructParam::Param() const -{ - // This is not a const method. The fields in Param could be modified by the client. - return iParam; -} - - -/** -Method to return the TILStructIndex. - -@return A TILStructIndex index -@see TILStructIndex -*/ -inline TILStructIndex TOMXILStructParam::Index() const -{ - return iIndex; -} - - -#endif // TOMXILSTRUCT_INL diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/bwins/omxilgenericilif.def --- a/omxil/mmilapi/refomxil/bwins/omxilgenericilif.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -EXPORTS - ??0COmxILGenericILIF@@IAE@XZ @ 1 NONAME ; COmxILGenericILIF::COmxILGenericILIF(void) - ??1COmxILGenericILIF@@UAE@XZ @ 2 NONAME ; COmxILGenericILIF::~COmxILGenericILIF(void) - ?ComponentRoleEnum@COmxILGenericILIF@@UBEHAAVTPtr8@@K@Z @ 3 NONAME ; int COmxILGenericILIF::ComponentRoleEnum(class TPtr8 &, unsigned long) const - ?CreateComponentL@COmxILGenericILIF@@UAEXABVTDesC8@@AAVMILIfObserver@@@Z @ 4 NONAME ; void COmxILGenericILIF::CreateComponentL(class TDesC8 const &, class MILIfObserver &) - ?CreateComponentL@COmxILGenericILIF@@UAEXABVTUid@@AAVMILIfObserver@@@Z @ 5 NONAME ; void COmxILGenericILIF::CreateComponentL(class TUid const &, class MILIfObserver &) - ?CustomInterface@COmxILGenericILIF@@UAEPAXVTUid@@@Z @ 6 NONAME ; void * COmxILGenericILIF::CustomInterface(class TUid) - ?EmptyBufferDone@COmxILGenericILIF@@UAEHPBVCMMFBuffer@@H@Z @ 7 NONAME ; int COmxILGenericILIF::EmptyBufferDone(class CMMFBuffer const *, int) - ?EventHandler@COmxILGenericILIF@@UAEHW4OMX_EVENTTYPE@@KKPAX@Z @ 8 NONAME ; int COmxILGenericILIF::EventHandler(enum OMX_EVENTTYPE, unsigned long, unsigned long, void *) - ?Execute@COmxILGenericILIF@@UAEHXZ @ 9 NONAME ; int COmxILGenericILIF::Execute(void) - ?FillBufferDone@COmxILGenericILIF@@UAEHPAVCMMFBuffer@@H@Z @ 10 NONAME ; int COmxILGenericILIF::FillBufferDone(class CMMFBuffer *, int) - ?FlushAllPorts@COmxILGenericILIF@@UAEHXZ @ 11 NONAME ; int COmxILGenericILIF::FlushAllPorts(void) - ?GetComponentIfRole@COmxILGenericILIF@@UBEHAAVTDes8@@@Z @ 12 NONAME ; int COmxILGenericILIF::GetComponentIfRole(class TDes8 &) const - ?GetComponentIfRole@COmxILGenericILIF@@UBEHAAVTUid@@@Z @ 13 NONAME ; int COmxILGenericILIF::GetComponentIfRole(class TUid &) const - ?GetComponentInputPorts@COmxILGenericILIF@@UBEHAAV?$RPointerArray@VMILComponentPortIf@@@@@Z @ 14 NONAME ; int COmxILGenericILIF::GetComponentInputPorts(class RPointerArray &) const - ?GetComponentOutputPorts@COmxILGenericILIF@@UBEHAAV?$RPointerArray@VMILComponentPortIf@@@@@Z @ 15 NONAME ; int COmxILGenericILIF::GetComponentOutputPorts(class RPointerArray &) const - ?GetComponentVersion@COmxILGenericILIF@@UBEHAAVTILComponentVersion@@@Z @ 16 NONAME ; int COmxILGenericILIF::GetComponentVersion(class TILComponentVersion &) const - ?GetConfig@COmxILGenericILIF@@UBEHAAVTILStruct@@PBVMILComponentPortIf@@@Z @ 17 NONAME ; int COmxILGenericILIF::GetConfig(class TILStruct &, class MILComponentPortIf const *) const - ?GetExtConfig@COmxILGenericILIF@@UBEHABVTDesC8@@AAVTILStruct@@PBVMILComponentPortIf@@@Z @ 18 NONAME ; int COmxILGenericILIF::GetExtConfig(class TDesC8 const &, class TILStruct &, class MILComponentPortIf const *) const - ?GetState@COmxILGenericILIF@@UBEHAAW4TILComponentState@@@Z @ 19 NONAME ; int COmxILGenericILIF::GetState(enum TILComponentState &) const - ?Initialize@COmxILGenericILIF@@UAEHXZ @ 20 NONAME ; int COmxILGenericILIF::Initialize(void) - ?OmxGetConfig@COmxILGenericILIF@@IBEHW4OMX_INDEXTYPE@@PAX@Z @ 21 NONAME ; int COmxILGenericILIF::OmxGetConfig(enum OMX_INDEXTYPE, void *) const - ?OmxGetExtensionIndex@COmxILGenericILIF@@IBEHABVTDesC8@@PAW4OMX_INDEXTYPE@@@Z @ 22 NONAME ; int COmxILGenericILIF::OmxGetExtensionIndex(class TDesC8 const &, enum OMX_INDEXTYPE *) const - ?OmxGetParameter@COmxILGenericILIF@@IBEHW4OMX_INDEXTYPE@@PAX@Z @ 23 NONAME ; int COmxILGenericILIF::OmxGetParameter(enum OMX_INDEXTYPE, void *) const - ?OmxSetConfig@COmxILGenericILIF@@IAEHW4OMX_INDEXTYPE@@PAX@Z @ 24 NONAME ; int COmxILGenericILIF::OmxSetConfig(enum OMX_INDEXTYPE, void *) - ?OmxSetParameter@COmxILGenericILIF@@IAEHW4OMX_INDEXTYPE@@PAX@Z @ 25 NONAME ; int COmxILGenericILIF::OmxSetParameter(enum OMX_INDEXTYPE, void *) - ?Pause@COmxILGenericILIF@@UAEHXZ @ 26 NONAME ; int COmxILGenericILIF::Pause(void) - ?ReleaseComponent@COmxILGenericILIF@@UAEXXZ @ 27 NONAME ; void COmxILGenericILIF::ReleaseComponent(void) - ?SendCommand@COmxILGenericILIF@@UAEHABVTILCommand@@@Z @ 28 NONAME ; int COmxILGenericILIF::SendCommand(class TILCommand const &) - ?SetComponentIfRole@COmxILGenericILIF@@UAEHABVTDesC8@@@Z @ 29 NONAME ; int COmxILGenericILIF::SetComponentIfRole(class TDesC8 const &) - ?SetComponentIfRole@COmxILGenericILIF@@UAEHABVTUid@@@Z @ 30 NONAME ; int COmxILGenericILIF::SetComponentIfRole(class TUid const &) - ?SetConfig@COmxILGenericILIF@@UAEHABVTILStruct@@PBVMILComponentPortIf@@@Z @ 31 NONAME ; int COmxILGenericILIF::SetConfig(class TILStruct const &, class MILComponentPortIf const *) - ?SetExtConfig@COmxILGenericILIF@@UAEHABVTDesC8@@ABVTILStruct@@PBVMILComponentPortIf@@@Z @ 32 NONAME ; int COmxILGenericILIF::SetExtConfig(class TDesC8 const &, class TILStruct const &, class MILComponentPortIf const *) - ?Stop@COmxILGenericILIF@@UAEHXZ @ 33 NONAME ; int COmxILGenericILIF::Stop(void) - ?UnInitialize@COmxILGenericILIF@@UAEHXZ @ 34 NONAME ; int COmxILGenericILIF::UnInitialize(void) - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/eabi/omxilgenericilif.def --- a/omxil/mmilapi/refomxil/eabi/omxilgenericilif.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -EXPORTS - _ZN17COmxILGenericILIF10InitializeEv @ 1 NONAME - _ZN17COmxILGenericILIF11SendCommandERK10TILCommand @ 2 NONAME - _ZN17COmxILGenericILIF12EventHandlerE13OMX_EVENTTYPEmmPv @ 3 NONAME - _ZN17COmxILGenericILIF12OmxSetConfigE13OMX_INDEXTYPEPv @ 4 NONAME - _ZN17COmxILGenericILIF12SetExtConfigERK6TDesC8RK9TILStructPK18MILComponentPortIf @ 5 NONAME - _ZN17COmxILGenericILIF12UnInitializeEv @ 6 NONAME - _ZN17COmxILGenericILIF13FlushAllPortsEv @ 7 NONAME - _ZN17COmxILGenericILIF14FillBufferDoneEP10CMMFBufferi @ 8 NONAME - _ZN17COmxILGenericILIF15CustomInterfaceE4TUid @ 9 NONAME - _ZN17COmxILGenericILIF15EmptyBufferDoneEPK10CMMFBufferi @ 10 NONAME - _ZN17COmxILGenericILIF15OmxSetParameterE13OMX_INDEXTYPEPv @ 11 NONAME - _ZN17COmxILGenericILIF16CreateComponentLERK4TUidR13MILIfObserver @ 12 NONAME - _ZN17COmxILGenericILIF16CreateComponentLERK6TDesC8R13MILIfObserver @ 13 NONAME - _ZN17COmxILGenericILIF16ReleaseComponentEv @ 14 NONAME - _ZN17COmxILGenericILIF18SetComponentIfRoleERK4TUid @ 15 NONAME - _ZN17COmxILGenericILIF18SetComponentIfRoleERK6TDesC8 @ 16 NONAME - _ZN17COmxILGenericILIF4StopEv @ 17 NONAME - _ZN17COmxILGenericILIF5PauseEv @ 18 NONAME - _ZN17COmxILGenericILIF7ExecuteEv @ 19 NONAME - _ZN17COmxILGenericILIF9SetConfigERK9TILStructPK18MILComponentPortIf @ 20 NONAME - _ZN17COmxILGenericILIFC2Ev @ 21 NONAME - _ZN17COmxILGenericILIFD0Ev @ 22 NONAME - _ZN17COmxILGenericILIFD1Ev @ 23 NONAME - _ZN17COmxILGenericILIFD2Ev @ 24 NONAME - _ZNK17COmxILGenericILIF12GetExtConfigERK6TDesC8R9TILStructPK18MILComponentPortIf @ 25 NONAME - _ZNK17COmxILGenericILIF12OmxGetConfigE13OMX_INDEXTYPEPv @ 26 NONAME - _ZNK17COmxILGenericILIF15OmxGetParameterE13OMX_INDEXTYPEPv @ 27 NONAME - _ZNK17COmxILGenericILIF17ComponentRoleEnumER5TPtr8m @ 28 NONAME - _ZNK17COmxILGenericILIF18GetComponentIfRoleER4TUid @ 29 NONAME - _ZNK17COmxILGenericILIF18GetComponentIfRoleER5TDes8 @ 30 NONAME - _ZNK17COmxILGenericILIF19GetComponentVersionER19TILComponentVersion @ 31 NONAME - _ZNK17COmxILGenericILIF20OmxGetExtensionIndexERK6TDesC8P13OMX_INDEXTYPE @ 32 NONAME - _ZNK17COmxILGenericILIF22GetComponentInputPortsER13RPointerArrayI18MILComponentPortIfE @ 33 NONAME - _ZNK17COmxILGenericILIF23GetComponentOutputPortsER13RPointerArrayI18MILComponentPortIfE @ 34 NONAME - _ZNK17COmxILGenericILIF8GetStateER17TILComponentState @ 35 NONAME - _ZNK17COmxILGenericILIF9GetConfigER9TILStructPK18MILComponentPortIf @ 36 NONAME - _ZTI13COmxCallbacks @ 37 NONAME - _ZTI17COmxBufferManager @ 38 NONAME - _ZTI17COmxILGenericILIF @ 39 NONAME - _ZTI21COmxILGenericPortILIF @ 40 NONAME - _ZTIN17COmxBufferManager10COmxBufferE @ 41 NONAME - _ZTIN17COmxILGenericILIF5CBodyE @ 42 NONAME - _ZTV13COmxCallbacks @ 43 NONAME - _ZTV17COmxBufferManager @ 44 NONAME - _ZTV17COmxILGenericILIF @ 45 NONAME - _ZTV21COmxILGenericPortILIF @ 46 NONAME - _ZTVN17COmxBufferManager10COmxBufferE @ 47 NONAME - _ZTVN17COmxILGenericILIF5CBodyE @ 48 NONAME - _ZThn4_N17COmxILGenericILIF10InitializeEv @ 49 NONAME - _ZThn4_N17COmxILGenericILIF11SendCommandERK10TILCommand @ 50 NONAME - _ZThn4_N17COmxILGenericILIF12UnInitializeEv @ 51 NONAME - _ZThn4_N17COmxILGenericILIF13FlushAllPortsEv @ 52 NONAME - _ZThn4_N17COmxILGenericILIF15CustomInterfaceE4TUid @ 53 NONAME - _ZThn4_N17COmxILGenericILIF16CreateComponentLERK4TUidR13MILIfObserver @ 54 NONAME - _ZThn4_N17COmxILGenericILIF16CreateComponentLERK6TDesC8R13MILIfObserver @ 55 NONAME - _ZThn4_N17COmxILGenericILIF16ReleaseComponentEv @ 56 NONAME - _ZThn4_N17COmxILGenericILIF18SetComponentIfRoleERK4TUid @ 57 NONAME - _ZThn4_N17COmxILGenericILIF18SetComponentIfRoleERK6TDesC8 @ 58 NONAME - _ZThn4_N17COmxILGenericILIF4StopEv @ 59 NONAME - _ZThn4_N17COmxILGenericILIF5PauseEv @ 60 NONAME - _ZThn4_N17COmxILGenericILIF7ExecuteEv @ 61 NONAME - _ZThn4_NK17COmxILGenericILIF17ComponentRoleEnumER5TPtr8m @ 62 NONAME - _ZThn4_NK17COmxILGenericILIF18GetComponentIfRoleER4TUid @ 63 NONAME - _ZThn4_NK17COmxILGenericILIF18GetComponentIfRoleER5TDes8 @ 64 NONAME - _ZThn4_NK17COmxILGenericILIF19GetComponentVersionER19TILComponentVersion @ 65 NONAME - _ZThn4_NK17COmxILGenericILIF22GetComponentInputPortsER13RPointerArrayI18MILComponentPortIfE @ 66 NONAME - _ZThn4_NK17COmxILGenericILIF23GetComponentOutputPortsER13RPointerArrayI18MILComponentPortIfE @ 67 NONAME - _ZThn4_NK17COmxILGenericILIF8GetStateER17TILComponentState @ 68 NONAME - _ZThn8_N17COmxILGenericILIF12EventHandlerE13OMX_EVENTTYPEmmPv @ 69 NONAME - _ZThn8_N17COmxILGenericILIF14FillBufferDoneEP10CMMFBufferi @ 70 NONAME - _ZThn8_N17COmxILGenericILIF15EmptyBufferDoneEPK10CMMFBufferi @ 71 NONAME - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/group/bld.inf --- a/omxil/mmilapi/refomxil/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND - - -PRJ_MMPFILES -../mmpfiles/omxilgenericilif.mmp - -PRJ_EXPORTS -// IBY FILE -milif.iby /epoc32/rom/include/milif.iby - -#endif // SYMBIAN_MULTIMEDIA_A3FDEVSOUND - -// End of file diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/group/milif.iby --- a/omxil/mmilapi/refomxil/group/milif.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef MILIF_IBY -#define MILIF_IBY - -#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND - -// OMX IL Generic IL Interface -file=ABI_DIR\BUILD_DIR\omxilgenericilif.dll System\Libs\omxilgenericilif.dll - -#endif // SYMBIAN_MULTIMEDIA_A3FDEVSOUND - -#endif // MILIF_IBY \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/inc/momxilcomponentifobserver.h --- a/omxil/mmilapi/refomxil/inc/momxilcomponentifobserver.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef MOMXILCOMPONENTIFOBSERVER_H -#define MOMXILCOMPONENTIFOBSERVER_H - -#include -#include - -class CMMFBuffer; - -/** -OpenMAX component interface observer class. -This is an internal interface class that encapsulates and represents the OpenMAX callback API as defined by the OpenMAX specification. -*/ -class MOmxILComponentIfObserver - { -public: - - /** - Callback method that returns the buffer that has been filled. - - @param aBuffer - The buffer returned by the OpenMAX component. - @param aPortIndex - The OpenMAX component's port index returning the buffer. - @return - KErrNone, if successful; otherwise one of the other system-wide error codes. - */ - - virtual TInt FillBufferDone(CMMFBuffer* aBuffer, TInt aPortIndex) = 0; - - /** - Callback method that returns the buffer that has been emptied. - - @param aBuffer - The buffer returned by the OpenMAX component. - @param aPortIndex - The OpenMAX component's port index returning the buffer. - @return - KErrNone, if successful; otherwise one of the other system-wide error codes. - */ - virtual TInt EmptyBufferDone(const CMMFBuffer* aBuffer, TInt aPortIndex) = 0; - - /** - Callback method used by the component to notify the client application of a particular event. - - @param aEvent - Event the component wants to notify the application about. - @param aData1 - The first integer event-specific parameter. - @param aData2 - The second integer event-specific parameter. - @param aExtraInfo - A pointer to additional event-specific data the component wants to send to the application. - The component owns the memory. - @return - KErrNone, if successful; otherwise one of the other system-wide error codes. - */ - virtual TInt EventHandler(OMX_EVENTTYPE aEvent, TUint32 aData1, TUint32 aData2, TAny* aExtraInfo) = 0; - }; - -#endif // MOMXILCOMPONENTIFOBSERVER_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/inc/omxilcoreutils.h --- a/omxil/mmilapi/refomxil/inc/omxilcoreutils.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILCOREUTILS_H -#define OMXILCOREUTILS_H - -#include "ilifbase.h" -#include -#include - - -const TInt KSymbianErrors[] = - { - KErrNoMemory, /*OMX_ErrorInsufficientResources*/ - KErrUnknown, /*OMX_ErrorUndefined*/ - KErrBadName, /*OMX_ErrorInvalidComponentName*/ - KErrNotFound, /*OMX_ErrorComponentNotFound*/ - KErrGeneral, /*OMX_ErrorInvalidComponent*/ - KErrArgument, /*OMX_ErrorBadParameter*/ - KErrNotSupported, /*OMX_ErrorNotImplemented*/ - KErrUnderflow, /*OMX_ErrorUnderflow*/ - KErrOverflow, /*OMX_ErrorOverflow*/ - KErrHardwareNotAvailable, /* OMX_ErrorHardware*/ - KErrGeneral, /*OMX_ErrorInvalidState*/ - KErrCorrupt, /*OMX_ErrorStreamCorrupt*/ - KErrArgument, /*OMX_ErrorPortsNotCompatible*/ - KErrHardwareNotAvailable, /*OMX_ErrorResourcesLost*/ - KErrCompletion, /*OMX_ErrorNoMore*/ - KErrGeneral, /*OMX_ErrorVersionMismatch*/ - KErrNotReady, /*OMX_ErrorNotReady*/ - KErrTimedOut, /*OMX_ErrorTimeout*/ - KErrNone, /*OMX_ErrorSameState*/ - KErrNotReady, /*OMX_ErrorResourcesPreempted*/ - KErrNotReady, /*OMX_ErrorPortUnresponsiveDuringAllocation*/ - KErrNotReady, /*OMX_ErrorPortUnresponsiveDuringDeallocation*/ - KErrNotReady, /*OMX_ErrorPortUnresponsiveDuringStop*/ - KErrNotReady, /*OMX_ErrorIncorrectStateTransition*/ - KErrNotReady, /*OMX_ErrorIncorrectStateOperation*/ - KErrNotSupported, /*OMX_ErrorUnsupportedSetting*/ - KErrNotSupported, /*OMX_ErrorUnsupportedIndex*/ - KErrArgument, /*OMX_ErrorBadPortIndex*/ - KErrNotReady, /*OMX_ErrorPortUnpopulated*/ - KErrNotReady, /*OMX_ErrorComponentSuspended*/ - KErrNotReady, /*OMX_ErrorDynamicResourcesUnavailable*/ - KErrCorrupt, /*OMX_ErrorMbErrorsInFrame*/ - KErrNotSupported, /*OMX_ErrorFormatNotDetected*/ - KErrGeneral, /*OMX_ErrorContentPipeOpenFailed*/ - KErrGeneral, /*OMX_ErrorContentPipeCreationFailed*/ - KErrCorrupt, /*OMX_ErrorSeperateTablesUsed*/ - KErrNotSupported, /*OMX_ErrorTunnelingUnsupported*/ - }; - - -TInt ConvertOmxErrorType(OMX_ERRORTYPE aErrorType); -OMX_ERRORTYPE ConvertSymbianErrorType(TInt aError); -TILComponentState ConvertOmxState(OMX_STATETYPE aState); -OMX_COMMANDTYPE ConvertSymbianCommandType(TILCommandTypes aCmd); - -#endif // OMXILCOREUTILS_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/inc/omxilgenericilif.h --- a/omxil/mmilapi/refomxil/inc/omxilgenericilif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILGENERICILIF_H -#define OMXILGENERICILIF_H - - -#include "milcomponentif.h" -#include "momxilcomponentifobserver.h" -#include -#include - -/** -Implementation of the MILComponentIf specific to OpenMAX specification. -This is the base class implementing the generic parts of the interface and it should be -further extended by derivation with the settings of the specific implementation -*/ -class COmxILGenericILIF : public CBase, - public MILComponentIf, - public MOmxILComponentIfObserver - { -friend class COmxILGenericPortILIF; - -public: - // from MILComponentIf - IMPORT_C void CreateComponentL(const TDesC8& aComponentName, MILIfObserver& aComponentIfObserver); - IMPORT_C void CreateComponentL(const TUid& aUid, MILIfObserver& ComponentIfObserver); - IMPORT_C void ReleaseComponent(); - IMPORT_C TInt GetComponentInputPorts(RPointerArray& aComponentPorts) const; - IMPORT_C TInt GetComponentOutputPorts(RPointerArray& aComponentPorts) const; - IMPORT_C virtual TInt SetConfig(const TILStruct& aConfig, const MILComponentPortIf* aComponentPort = NULL) = 0; - IMPORT_C virtual TInt GetConfig(TILStruct& aConfig, const MILComponentPortIf* aComponentPort = NULL) const = 0; - IMPORT_C TInt Initialize(); - IMPORT_C TInt Execute(); - IMPORT_C TInt Pause(); - IMPORT_C TInt Stop(); - IMPORT_C TInt UnInitialize(); - IMPORT_C TInt GetState(TILComponentState& aState) const; - IMPORT_C TInt SendCommand(const TILCommand& aCommand); - IMPORT_C TInt FlushAllPorts(); - IMPORT_C TInt ComponentRoleEnum(TPtr8& aComponentRole, TUint32 aIndex) const; - IMPORT_C TInt GetComponentVersion(TILComponentVersion& aVersion) const; - IMPORT_C TInt SetComponentIfRole(const TUid& aComponentRole); - IMPORT_C TInt SetComponentIfRole(const TDesC8& aComponentRole); - IMPORT_C TInt GetComponentIfRole(TUid& aComponentRole) const; - IMPORT_C TInt GetComponentIfRole(TDes8& aComponentRole) const; - IMPORT_C virtual TInt SetExtConfig(const TDesC8& aParameterName, const TILStruct& aConfig, const MILComponentPortIf* aComponentPort = NULL) = 0; - IMPORT_C virtual TInt GetExtConfig(const TDesC8& aParameterName, TILStruct& aConfig, const MILComponentPortIf* aComponentPort = NULL) const = 0; - IMPORT_C TAny* CustomInterface(TUid aUid); - - // from MOmxILComponentIfObserver - IMPORT_C TInt FillBufferDone(CMMFBuffer* aBuffer, TInt aPortIndex); - IMPORT_C TInt EmptyBufferDone(const CMMFBuffer* aBuffer, TInt aPortIndex); - IMPORT_C TInt EventHandler(OMX_EVENTTYPE aEvent, TUint32 aData1, TUint32 aData2, TAny* aExtraInfo); - - IMPORT_C ~COmxILGenericILIF(); - -protected: - IMPORT_C COmxILGenericILIF(); - - IMPORT_C TInt OmxGetParameter(OMX_INDEXTYPE aParamIndex, TAny* aComponentParameterStructure) const; - IMPORT_C TInt OmxSetParameter(OMX_INDEXTYPE aParamIndex, TAny* aComponentParameterStructure); - IMPORT_C TInt OmxGetConfig(OMX_INDEXTYPE aConfigIndex, TAny* aValue) const; - IMPORT_C TInt OmxSetConfig(OMX_INDEXTYPE aConfigIndex, TAny* aValue); - IMPORT_C TInt OmxGetExtensionIndex(const TDesC8& aParameterName, OMX_INDEXTYPE* aIndexType) const; - -private: - // Internal implementation. Only meant to be used by the component's port interface. - TInt OmxSendCommand(OMX_COMMANDTYPE aCmd, TUint32 aParam1, TAny* aCmdData); - TInt OmxComponentTunnelRequest(TUint32 aPortInput, OMX_HANDLETYPE aOutput, TUint32 aPortOutput); - TInt OmxComponentDisconnectTunnel(TUint32 aPortInput, OMX_HANDLETYPE aOutput, TUint32 aPortOutput); - TInt OmxUseBuffer(CMMFBuffer* aBuffer, TUint32 aPortIndex); - CMMFBuffer* OmxAllocateBufferL(TUint32 aPortIndex, TUint32 aSizeBytes); - TInt OmxFreeBuffer(CMMFBuffer* aBuffer); - TInt OmxEmptyThisBuffer(const CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - TInt OmxFillThisBuffer(CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - OMX_COMPONENTTYPE* OmxHandle() const; - -private: - class CBody; - - CBody* iBody; - }; - -#endif // OMXILGENERICILIF_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/inc/omxilgenericilifbodyimpl.h --- a/omxil/mmilapi/refomxil/inc/omxilgenericilifbodyimpl.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILGENERICILIFBODYIMPL_H -#define OMXILGENERICILIFBODYIMPL_H - -#include "momxilcomponentifobserver.h" -#include -#include - - -class COmxBufferManager : public CBase - { -public: - - class COmxBuffer : public CBase - { - public: - static COmxBuffer* NewL(OMX_BUFFERHEADERTYPE* aBufferHeader, CMMFBuffer* aBuffer); - ~COmxBuffer(); - - CMMFBuffer* MmfBuffer() const; - OMX_BUFFERHEADERTYPE* BufferHeader() const; - - void SetPortObserver(MOmxILComponentIfObserver* aObserver); - MOmxILComponentIfObserver* PortObserver() const; - - private: - COmxBuffer(); - void ConstructL(OMX_BUFFERHEADERTYPE* aBufferHeader, CMMFBuffer* aBuffer); - - OMX_BUFFERHEADERTYPE* iBufferHeader; - CMMFBuffer* iMmfBuffer; - - TBool iOwnsMmfBuffer; - - MOmxILComponentIfObserver* iPortObserver; - }; - -public: - COmxBufferManager(OMX_COMPONENTTYPE* aHandle); - ~COmxBufferManager(); - - // Buffer lookup - COmxBuffer* FindBuffer(const CMMFBuffer* aBuffer) const; - COmxBuffer* FindBuffer(OMX_BUFFERHEADERTYPE* aBuffer) const; - - // OMX Calls - TInt UseBuffer(CMMFBuffer& aBuffer, TUint nPortIndex); - CMMFBuffer* AllocateBufferL(TUint nPortIndex, TUint nSizeBytes); - TInt FreeBuffer(CMMFBuffer* aBuffer); - - TInt EmptyThisBuffer(const CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - TInt FillThisBuffer(CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - - // Store OMX buffer pointer - void StoreBufferL(OMX_BUFFERHEADERTYPE* aBufferHeader, CMMFBuffer* aBuffer); - -private: - RPointerArray iBuffers; - OMX_COMPONENTTYPE* iHandle; - }; - -class COmxCallbacks : public CActive - { -public: - enum TMessageType - { - EFillBufferCallback, - EEmptyBufferCallback, - EEventCallback - }; - - class TEventParams - { - public: - OMX_EVENTTYPE iEvent; - TUint32 iData1; - TUint32 iData2; - TAny* iExtraData; - }; - - class TOmxMessage - { - public: - TMessageType iType; - OMX_HANDLETYPE iComponent; - union - { - COmxBufferManager::COmxBuffer* iBuffer; - TEventParams iEventParams; - }; - }; -public: - static COmxCallbacks* NewL(MOmxILComponentIfObserver& aObserver); - operator OMX_CALLBACKTYPE*(); - void RunL(); - void DoCancel(); - - TInt FillBufferDone(OMX_HANDLETYPE aComponent, COmxBufferManager::COmxBuffer* aBuffer); - TInt EmptyBufferDone(OMX_HANDLETYPE aComponent, COmxBufferManager::COmxBuffer* aBuffer); - TInt EventHandler(OMX_HANDLETYPE aComponent, const TEventParams& aParams); - virtual ~COmxCallbacks(); - -private: - void ConstructL(); - COmxCallbacks(MOmxILComponentIfObserver& aObserver); - -private: - OMX_CALLBACKTYPE iHandle; - RMsgQueue iMsgQueue; - MOmxILComponentIfObserver& iParent; - }; - - -// OMX callback handler functions -OMX_ERRORTYPE EventHandler(OMX_OUT OMX_HANDLETYPE aComponent, - OMX_OUT TAny* aAppData, - OMX_OUT OMX_EVENTTYPE aEvent, - OMX_OUT TUint32 aData1, - OMX_OUT TUint32 aData2, - OMX_OUT TAny* aExtra); - -OMX_ERRORTYPE EmptyBufferDone( - OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_BUFFERHEADERTYPE* aBuffer); - -OMX_ERRORTYPE FillBufferDone( - OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_BUFFERHEADERTYPE* aBuffer); - -#endif // OMXILGENERICILIFBODYIMPL_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/inc/omxilgenericportilif.h --- a/omxil/mmilapi/refomxil/inc/omxilgenericportilif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILGENERICPORTILIF_H -#define OMXILGENERICPORTILIF_H - -#include "milcomponentportif.h" -#include "omxilgenericilif.h" - - -/** -Concrete implementation of the MILComponentPortIf that encapsulates the -component's port specific behaviour according to OpenMAX specification. -*/ -class COmxILGenericPortILIF : public CBase, - public MILComponentPortIf - { -public: - static COmxILGenericPortILIF* NewL(COmxILGenericILIF& aParent, TPortDirection aPortDirection, TInt aIndex); - - // MILComponentPortIf - TInt FillThisBuffer(CMMFBuffer& aBuffer); - TInt EmptyThisBuffer(const CMMFBuffer& aBuffer); - TInt TunnelRequest(MILComponentPortIf* aPort); - TInt PortIndex() const; - TPortDirection PortDirection() const; - CMMFBuffer* CreateBufferL(TInt aBufferSize); - TInt UseBuffer(CMMFBuffer& aBuffer); - TInt FreeBuffer(CMMFBuffer* aBuffer); - TInt FlushPort(); - TInt EnablePort(); - TInt DisablePort(); - MILComponentIf* PortComponent() const; - - void SetPortConnectedTo(COmxILGenericPortILIF* aPort); - -private: - COmxILGenericPortILIF(COmxILGenericILIF& aParent, TPortDirection aPortDirection, TInt aIndex); - -private: - TPortDirection iPortDirection; - TInt iPortIndex; - COmxILGenericILIF& iPortComponent; - COmxILGenericPortILIF* iTunneledPort; - }; - -#endif // OMXILGENERICPORTILIF_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/inc/omxilspecversion.h --- a/omxil/mmilapi/refomxil/inc/omxilspecversion.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILSPECVERSION_H -#define OMXILSPECVERSION_H - -#include - - -// OMX IL v1.1.1 used for this implementation -const TUint8 KOMXILSpecVersionMajor = 1; -const TUint8 KOMXILSpecVersionMinor = 1; -const TUint8 KOMXILSpecVersionRevision = 1; -const TUint8 KOMXILSpecVersionStep = 0; - -const OMX_VERSIONTYPE KOMXILSpecVersion = { KOMXILSpecVersionMajor, KOMXILSpecVersionMinor, KOMXILSpecVersionRevision, KOMXILSpecVersionStep }; - - -#endif // OMXILSPECVERSION_H \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/mmpfiles/omxilgenericilif.mmp --- a/omxil/mmilapi/refomxil/mmpfiles/omxilgenericilif.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/omxilgenericilif/omxilgenericilif.hrh" - -TARGET omxilgenericilif.dll -TARGETTYPE dll - -CAPABILITY All -TCB - -UID KSharedLibraryUidDefine KUidOmxILGenericILIFDll -VENDORID 0x70000001 - - -SOURCEPATH ../src/omxilgenericilif -SOURCE omxilgenericilif.cpp -SOURCE omxilgenericilifbody.cpp -SOURCE omxilgenericilifbodyimpl.cpp -SOURCE omxilgenericportilif.cpp -SOURCE omxilcoreutils.cpp - -USERINCLUDE ../src/omxilgenericilif -USERINCLUDE ../inc -USERINCLUDE ../../ilif/inc - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -LIBRARY euser.lib -LIBRARY mmfserverbaseclasses.lib -LIBRARY omxilcoreclient.lib - - -DEFFILE omxilgenericilif.def -NOSTRICTDEF - - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/src/omxilgenericilif/omxilcoreutils.cpp --- a/omxil/mmilapi/refomxil/src/omxilgenericilif/omxilcoreutils.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "omxilcoreutils.h" - - -/** - Converts an OpenMAX error code to a Symbian error code. - @param aErrorType The OpenMAX error code. - @return The Symbian error code. - */ -TInt ConvertOmxErrorType(OMX_ERRORTYPE aErrorType) - { - if (aErrorType == OMX_ErrorNone) - { - return KErrNone; - } - else if (aErrorType >= OMX_ErrorInsufficientResources && - aErrorType <= OMX_ErrorTunnelingUnsupported) - { - return KSymbianErrors[aErrorType - OMX_ErrorInsufficientResources]; - } - else - { - return KErrGeneral; - } - } - -/** - Converts a Symbian error code to an OpenMAX error code. - @param aError The Symbian error code. - @return The OpenMAX error code. - */ -OMX_ERRORTYPE ConvertSymbianErrorType(TInt aError) - { - // In the current implementation this function is only used for the return code in the - // callback methods. Currently the only expected errors KErrNone and KErrOverflow. - - OMX_ERRORTYPE err = OMX_ErrorNone; - switch (aError) - { - case KErrNone: - err = OMX_ErrorNone; - break; - case KErrOverflow: - case KErrNoMemory: - err = OMX_ErrorInsufficientResources; - break; - case KErrNotSupported: - err = OMX_ErrorNotImplemented; - break; - case KErrNotReady: - err = OMX_ErrorNotReady; - break; - case KErrGeneral: - default: - err = OMX_ErrorUndefined; - } - return err; - } - -/** - Converts an OpenMAX state to a Symbian state. - @param aState - The OpenMAX error code. - @return The Symbian state. - @see TILComponentState - */ -TILComponentState ConvertOmxState(OMX_STATETYPE aState) - { - TILComponentState state = EComponentInvalid; - switch (aState) - { - case OMX_StateInvalid: - state = EComponentInvalid; - break; - case OMX_StateLoaded: - state = EComponentLoaded; - break; - case OMX_StateIdle: - state = EComponentIdle; - break; - case OMX_StateExecuting: - state = EComponentExecuting; - break; - case OMX_StatePause: - state = EComponentPaused; - break; - case OMX_StateWaitForResources: - state = EComponentWaitingForResources; - break; - default: - state = EComponentInvalid; - } - return state; - } - - -OMX_COMMANDTYPE ConvertSymbianCommandType(TILCommandTypes aCmd) - { - OMX_COMMANDTYPE omxcommand = OMX_CommandMax; - switch (aCmd) - { - case ECommandStateSet: - omxcommand = OMX_CommandStateSet; - break; - case ECommandFlush: - omxcommand = OMX_CommandFlush; - break; - case ECommandPortDisable: - omxcommand = OMX_CommandPortDisable; - break; - case ECommandPortEnable: - omxcommand = OMX_CommandPortEnable; - break; - case ECommandMarkBuffer: - omxcommand = OMX_CommandMarkBuffer; - break; - default: - omxcommand = OMX_CommandMax; - } - return omxcommand; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilif.cpp --- a/omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilif.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,299 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "omxilgenericilif.h" -#include "omxilgenericilifbody.h" -#include "omxilcoreutils.h" -#include "ilifuids.h" -#include - - -const TUint32 KOMXALL = 0xFFFFFFFF; - - -EXPORT_C COmxILGenericILIF::COmxILGenericILIF() - { - } - -EXPORT_C COmxILGenericILIF::~COmxILGenericILIF() - { - if (iBody) - { - delete iBody; - } - } - -EXPORT_C void COmxILGenericILIF::CreateComponentL(const TDesC8& aComponentName, - MILIfObserver& aComponentIfObserver) - { - iBody = CBody::NewL(*this, aComponentIfObserver, aComponentName); - - User::LeaveIfError(iBody->SetPortsL()); - } - -EXPORT_C void COmxILGenericILIF::CreateComponentL(const TUid& /*aUid*/, - MILIfObserver& /*ComponentIfObserver*/) - { - // OMX Versions do not use this method of creation - User::Leave(KErrNotSupported); - } - -EXPORT_C void COmxILGenericILIF::ReleaseComponent() - { - delete iBody; - iBody = NULL; - - delete this; - } - -EXPORT_C TInt COmxILGenericILIF::GetComponentInputPorts(RPointerArray& aComponentPorts) const - { - return (iBody->GetComponentPorts(aComponentPorts, OMX_DirInput)); - } - -EXPORT_C TInt COmxILGenericILIF::GetComponentOutputPorts(RPointerArray& aComponentPorts) const - { - return (iBody->GetComponentPorts(aComponentPorts, OMX_DirOutput)); - } - -EXPORT_C TInt COmxILGenericILIF::SetConfig(const TILStruct& /*aConfig*/, - const MILComponentPortIf* /*aComponentPort*/) - { - // It should be implemented in the derived class - return (KErrNotSupported); - } - -EXPORT_C TInt COmxILGenericILIF::GetConfig(TILStruct& /*aConfig*/, - const MILComponentPortIf* /*aComponentPort*/) const - { - // It should be implemented in the derived class - return (KErrNotSupported); - } - -EXPORT_C TInt COmxILGenericILIF::Initialize() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StateIdle, NULL)); - } - -EXPORT_C TInt COmxILGenericILIF::Execute() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StateExecuting, NULL)); - } - -EXPORT_C TInt COmxILGenericILIF::Pause() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StatePause, NULL)); - } - -EXPORT_C TInt COmxILGenericILIF::Stop() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StateIdle, NULL)); - } - -EXPORT_C TInt COmxILGenericILIF::UnInitialize() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StateLoaded, NULL)); - } - -EXPORT_C TInt COmxILGenericILIF::GetState(TILComponentState& aState) const - { - TInt error; - OMX_STATETYPE state; - error = iBody->OmxGetState(&state); - aState = ConvertOmxState(state); - return error; - } - -EXPORT_C TInt COmxILGenericILIF::SendCommand(const TILCommand& aCommand) - { - OMX_COMMANDTYPE command = ConvertSymbianCommandType(aCommand.iCmd); - return (iBody->OmxSendCommand(command, aCommand.iData1, aCommand.iExtraData)); - } - -EXPORT_C TInt COmxILGenericILIF::FlushAllPorts() - { - return (iBody->OmxSendCommand(OMX_CommandFlush, KOMXALL, NULL)); - } - -EXPORT_C TInt COmxILGenericILIF::ComponentRoleEnum(TPtr8& aComponentRole, - TUint32 aIndex) const - { - return (iBody->OmxComponentRoleEnum(aComponentRole, aIndex)); - } - -EXPORT_C TInt COmxILGenericILIF::GetComponentVersion(TILComponentVersion& aVersion) const - { - return (iBody->OmxGetComponentVersion(aVersion.iComponentName, - (OMX_VERSIONTYPE*)&aVersion.iComponentVersion, - (OMX_VERSIONTYPE*)&aVersion.iSpecVersion, - (OMX_UUIDTYPE*)&aVersion.iComponentUniqueID)); - } - -EXPORT_C TInt COmxILGenericILIF::SetComponentIfRole(const TUid& aComponentRole) - { - return (iBody->SetIfToRole(aComponentRole)); - } - -EXPORT_C TInt COmxILGenericILIF::SetComponentIfRole(const TDesC8& /*aComponentRole*/) - { - // Under A3F the roles are identified by Format Uid rather than role names. - return (KErrNotSupported); - } - -EXPORT_C TInt COmxILGenericILIF::GetComponentIfRole(TUid& aComponentRole) const - { - return (iBody->GetIfRole(aComponentRole)); - } - -EXPORT_C TInt COmxILGenericILIF::GetComponentIfRole(TDes8& /*aComponentRole*/) const - { - // Under A3F the roles are identified by Format Uid rather than role names. - return (KErrNotSupported); - } - -EXPORT_C TInt COmxILGenericILIF::SetExtConfig(const TDesC8& /*aParameterName*/, - const TILStruct& /*aConfig*/, - const MILComponentPortIf* /*aComponentPort*/) - { - // It should be implemented in the derived class - return (KErrNotSupported); - } - -EXPORT_C TInt COmxILGenericILIF::GetExtConfig(const TDesC8& /*aParameterName*/, - TILStruct& /*aConfig*/, - const MILComponentPortIf* /*aComponentPort*/) const - { - // It should be implemented in the derived class - return (KErrNotSupported); - } - -EXPORT_C TAny* COmxILGenericILIF::CustomInterface(TUid aUid) - { - if (aUid == KUidILComponentIf) - { - MILComponentIf* componentIf = this; - return componentIf; - } - else - { - return NULL; - } - } - -EXPORT_C TInt COmxILGenericILIF::FillBufferDone(CMMFBuffer* aBuffer, - TInt aPortIndex) - { - return (iBody->FillBufferDone(aBuffer, aPortIndex)); - } - -EXPORT_C TInt COmxILGenericILIF::EmptyBufferDone(const CMMFBuffer* aBuffer, - TInt aPortIndex) - { - return (iBody->EmptyBufferDone(aBuffer, aPortIndex)); - } - -EXPORT_C TInt COmxILGenericILIF::EventHandler(OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - TAny* aExtraInfo) - { - return (iBody->EventHandler(aEvent, aData1, aData2, aExtraInfo)); - } - -EXPORT_C TInt COmxILGenericILIF::OmxGetParameter(OMX_INDEXTYPE aParamIndex, - TAny* aComponentParameterStructure) const - { - return (iBody->OmxGetParameter(aParamIndex, aComponentParameterStructure)); - } - -EXPORT_C TInt COmxILGenericILIF::OmxSetParameter(OMX_INDEXTYPE aParamIndex, - TAny* aComponentParameterStructure) - { - return (iBody->OmxSetParameter(aParamIndex, aComponentParameterStructure)); - } - -EXPORT_C TInt COmxILGenericILIF::OmxGetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* aValue) const - { - return (iBody->OmxGetConfig(aConfigIndex, aValue)); - } - -EXPORT_C TInt COmxILGenericILIF::OmxSetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* aValue) - { - return (iBody->OmxSetConfig(aConfigIndex, aValue)); - } - -EXPORT_C TInt COmxILGenericILIF::OmxGetExtensionIndex(const TDesC8& aParameterName, - OMX_INDEXTYPE* aIndexType) const - { - return (iBody->OmxGetExtensionIndex(aParameterName, aIndexType)); - } - -TInt COmxILGenericILIF::OmxSendCommand(OMX_COMMANDTYPE aCmd, - TUint32 aParam1, - TAny* aCmdData) - { - return (iBody->OmxSendCommand(aCmd, aParam1, aCmdData)); - } - -TInt COmxILGenericILIF::OmxComponentTunnelRequest(TUint32 aPortInput, - OMX_HANDLETYPE aOutput, - TUint32 aPortOutput) - { - return (iBody->OmxComponentTunnelRequest(aPortInput, aOutput, aPortOutput)); - } - -TInt COmxILGenericILIF::OmxComponentDisconnectTunnel(TUint32 aPortInput, - OMX_HANDLETYPE aOutput, - TUint32 aPortOutput) - { - return (iBody->OmxComponentDisconnectTunnel(aPortInput, aOutput, aPortOutput)); - } - -TInt COmxILGenericILIF::OmxUseBuffer(CMMFBuffer* aBuffer, - TUint32 aPortIndex) - { - return (iBody->OmxUseBuffer(aBuffer, aPortIndex)); - } - -CMMFBuffer* COmxILGenericILIF::OmxAllocateBufferL(TUint32 aPortIndex, - TUint32 aSizeBytes) - { - return (iBody->OmxAllocateBufferL(aPortIndex, aSizeBytes)); - } - -TInt COmxILGenericILIF::OmxFreeBuffer(CMMFBuffer* aBuffer) - { - return (iBody->OmxFreeBuffer(aBuffer)); - } - -TInt COmxILGenericILIF::OmxEmptyThisBuffer(const CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - return (iBody->OmxEmptyThisBuffer(aBuffer, aObserver)); - } - -TInt COmxILGenericILIF::OmxFillThisBuffer(CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - return (iBody->OmxFillThisBuffer(aBuffer, aObserver)); - } - - -OMX_COMPONENTTYPE* COmxILGenericILIF::OmxHandle() const - { - return (iBody->Handle()); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilif.hrh --- a/omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilif.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILGENERICILIF_HRH -#define OMXILGENERICILIF_HRH - -#define KSharedLibraryUidDefine 0x1000008D - -// UID to identify the generic OMX MILIF Dll. -// This DLL is part of the reference milif implementation. -#define KUidOmxILGenericILIFDll 0x10285C7C - -#endif // OMXILGENERICILIF_HRH - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilifbody.cpp --- a/omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilifbody.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,430 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -#include "omxilgenericilifbody.h" -#include "omxilcoreutils.h" -#include "omxilspecversion.h" -#include "milifobserver.h" -#include "tilstructtypes.h" - - -const TInt KMaxComponentNameLength = 128; - - -COmxILGenericILIF::CBody::CBody(COmxILGenericILIF& aParent, - MILIfObserver& aComponentIfObserver) - : - iParent(aParent), - iIfObserver(aComponentIfObserver) - - { - } - -COmxILGenericILIF::CBody::~CBody() - { - iInputPorts.ResetAndDestroy(); - iInputPorts.Close(); - iOutputPorts.ResetAndDestroy(); - iOutputPorts.Close(); - delete iBufferManager; - delete iCallbacks; - - ::OMX_FreeHandle(reinterpret_cast(iHandle)); - } - -COmxILGenericILIF::CBody* COmxILGenericILIF::CBody::NewL(COmxILGenericILIF& aParent, - MILIfObserver& aComponentIfObserver, - const TDesC8& aComponentName) - { - CBody* self = new (ELeave) CBody(aParent, aComponentIfObserver); - CleanupStack::PushL(self); - self->ConstructL(aComponentName); - CleanupStack::Pop(self); - return self; - } - -void COmxILGenericILIF::CBody::ConstructL(const TDesC8& aComponentName) - { - iCallbacks = COmxCallbacks::NewL(iParent); - - RBuf8 buf; - buf.CleanupClosePushL(); - buf.CreateL(aComponentName, KMaxComponentNameLength); - TUint8* name = const_cast(buf.PtrZ()); - - OMX_ERRORTYPE errorType = ::OMX_GetHandle(reinterpret_cast(&iHandle), - reinterpret_cast(name), - iCallbacks, - *iCallbacks); - CleanupStack::PopAndDestroy(&buf); - - User::LeaveIfError(ConvertOmxErrorType(errorType)); - - iBufferManager = new (ELeave) COmxBufferManager(iHandle); - } - -OMX_COMPONENTTYPE* COmxILGenericILIF::CBody::Handle() const - { - return iHandle; - } - -TInt COmxILGenericILIF::CBody::OmxGetComponentVersion(TPtr8 aComponentName, - OMX_VERSIONTYPE* aComponentVersion, - OMX_VERSIONTYPE* aSpecVersion, - OMX_UUIDTYPE* aComponentUUID) - { - ASSERT(aComponentVersion); - ASSERT(aSpecVersion); - ASSERT(aComponentUUID); - - TUint8* cname = const_cast(aComponentName.PtrZ()); - OMX_ERRORTYPE error = iHandle->GetComponentVersion(reinterpret_cast(iHandle), - reinterpret_cast(cname), aComponentVersion, aSpecVersion, aComponentUUID); - - TLex8 lex(cname); - TInt length; - for( length = 0; !lex.Eos(); ++length ) - { - lex.Inc(); - } - aComponentName.SetLength(length); - - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::OmxSendCommand(OMX_COMMANDTYPE aCmd, - TUint32 aParam, - TAny* aCmdData) - { - OMX_ERRORTYPE error = iHandle->SendCommand(reinterpret_cast(iHandle), aCmd, aParam, aCmdData); - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::OmxGetParameter(OMX_INDEXTYPE aParamIndex, - TAny* aValue) - { - ASSERT(aValue); - - OMX_ERRORTYPE error = iHandle->GetParameter(reinterpret_cast(iHandle), aParamIndex, aValue); - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::OmxSetParameter(OMX_INDEXTYPE aIndex, - TAny* aValue) - { - ASSERT(aValue); - - OMX_ERRORTYPE error = iHandle->SetParameter(reinterpret_cast(iHandle), aIndex, aValue); - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::OmxGetConfig(OMX_INDEXTYPE aIndex, - TAny* aValue) - { - ASSERT(aValue); - - OMX_ERRORTYPE error = iHandle->GetConfig(reinterpret_cast(iHandle), aIndex, aValue); - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::OmxSetConfig(OMX_INDEXTYPE aIndex, - TAny* aValue) - { - ASSERT(aValue); - - OMX_ERRORTYPE error = iHandle->SetConfig(reinterpret_cast(iHandle), aIndex, aValue); - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::OmxGetExtensionIndex(const TDesC8& aParameterName, - OMX_INDEXTYPE* aIndexType) - { - HBufC8* buf = HBufC8::New(aParameterName.Length()+1); - if (buf == NULL) - { - return KErrNoMemory; - } - else - { - *buf = aParameterName; - TUint8* cstring = const_cast(buf->Des().PtrZ()); - OMX_ERRORTYPE error = iHandle->GetExtensionIndex(reinterpret_cast(iHandle), reinterpret_cast(cstring), aIndexType); - delete buf; - return ConvertOmxErrorType(error); - } - } - -TInt COmxILGenericILIF::CBody::OmxGetState(OMX_STATETYPE* aState) - { - - OMX_ERRORTYPE error = iHandle->GetState(reinterpret_cast(iHandle), aState); - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::OmxComponentTunnelRequest(TUint32 aPortInput, - OMX_HANDLETYPE aOutput, - TUint32 aPortOutput) - { - OMX_ERRORTYPE error = ::OMX_SetupTunnel(aOutput, aPortOutput, reinterpret_cast(iHandle), aPortInput); - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::OmxComponentDisconnectTunnel(TUint32 aPortInput, - OMX_HANDLETYPE aOutput, - TUint32 aPortOutput) - { - OMX_ERRORTYPE error = ::OMX_SetupTunnel(aOutput, aPortOutput, 0, 0); - if (error == OMX_ErrorNone) - { - error = ::OMX_SetupTunnel(0, 0, reinterpret_cast(iHandle), aPortInput); - } - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::OmxUseBuffer(CMMFBuffer* aBuffer, - TUint32 aPortIndex) - { - ASSERT(aBuffer); - - return (iBufferManager->UseBuffer(*aBuffer, aPortIndex)); - } - -CMMFBuffer* COmxILGenericILIF::CBody::OmxAllocateBufferL(TUint32 aPortIndex, - TUint32 aSizeBytes) - { - return (iBufferManager->AllocateBufferL(aPortIndex, aSizeBytes)); - } - -TInt COmxILGenericILIF::CBody::OmxFreeBuffer(CMMFBuffer* aBuffer) - { - ASSERT(aBuffer); - - return (iBufferManager->FreeBuffer(aBuffer)); - } - -TInt COmxILGenericILIF::CBody::OmxEmptyThisBuffer(const CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - ASSERT(aBuffer); - - return (iBufferManager->EmptyThisBuffer(aBuffer, aObserver)); - } - -TInt COmxILGenericILIF::CBody::OmxFillThisBuffer(CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - ASSERT(aBuffer); - - return (iBufferManager->FillThisBuffer(aBuffer, aObserver)); - } - -TInt COmxILGenericILIF::CBody::OmxComponentRoleEnum(TPtr8& aComponentRole, - TUint32 aIndex) - { - TUint8* role = const_cast (aComponentRole.PtrZ()); - OMX_ERRORTYPE error = iHandle->ComponentRoleEnum(reinterpret_cast(iHandle), reinterpret_cast(role), aIndex); - - TLex8 lex(role); - TInt length; - for( length = 0; !lex.Eos(); ++length ) - { - lex.Inc(); - } - aComponentRole.SetLength(length); - - return ConvertOmxErrorType(error); - } - -TInt COmxILGenericILIF::CBody::SetIfToRole(const TUid& aComponentRole) - { - iFormat = aComponentRole; - return KErrNone; - } - -TInt COmxILGenericILIF::CBody::GetIfRole(TUid& aComponentRole) const - { - aComponentRole = iFormat; - return KErrNone; - } - -TInt COmxILGenericILIF::CBody::SetPortsL() - { - OMX_PORT_PARAM_TYPE param; - param.nVersion = KOMXILSpecVersion; - param.nSize = sizeof(OMX_PORT_PARAM_TYPE); - TInt err = OmxGetParameter(OMX_IndexParamAudioInit, ¶m); - - if (err == KErrNone) - { - for (TInt i=0; i < param.nPorts && err == KErrNone; i++ ) - { - OMX_PARAM_PORTDEFINITIONTYPE portInfo; - portInfo.nPortIndex = i; - portInfo.nVersion = KOMXILSpecVersion; - portInfo.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - err = OmxGetParameter(OMX_IndexParamPortDefinition, &portInfo); - if (err == KErrNone) - { - if (portInfo.eDir == OMX_DirInput) - { - COmxILGenericPortILIF* inputPort = COmxILGenericPortILIF::NewL(iParent, EDirInput, portInfo.nPortIndex); - err = iInputPorts.Append(inputPort); - } - else - { - COmxILGenericPortILIF* outputPort = COmxILGenericPortILIF::NewL(iParent, EDirOutput, portInfo.nPortIndex); - err = iOutputPorts.Append(outputPort); - } - } - } - } - return err; - } - -TInt COmxILGenericILIF::CBody::GetComponentPorts(RPointerArray& aComponentPorts, - OMX_DIRTYPE aDirection) - { - TInt err = KErrNone; - if (aDirection == OMX_DirInput) - { - const TInt counter = iInputPorts.Count(); - for (TInt i=0; i < counter && err == KErrNone; i++ ) - { - err = aComponentPorts.Append(iInputPorts[i]); - } - } - else if (aDirection == OMX_DirOutput) - { - const TInt counter = iOutputPorts.Count(); - for (TInt i=0; i < counter && err == KErrNone; i++ ) - { - err = aComponentPorts.Append(iOutputPorts[i]); - } - } - else - { - err = KErrNotSupported; - } - return err; - } - -TInt COmxILGenericILIF::CBody::FillBufferDone(CMMFBuffer* aBuffer, - TInt aPortIndex) - { - ASSERT(aBuffer); - - // Loop through all output ports to search for the interface associated to this port index - const TInt counter = iOutputPorts.Count(); - for (TInt i=0; i < counter; i++ ) - { - if (iOutputPorts[i]->PortIndex() == aPortIndex) - { - return (iIfObserver.BufferDelivered(iOutputPorts[i], aBuffer)); - } - } - - return KErrNotFound; - } - -TInt COmxILGenericILIF::CBody::EmptyBufferDone(const CMMFBuffer* aBuffer, - TInt aPortIndex) - { - ASSERT(aBuffer); - - // Loop through all input ports to search for the interface associated to this port index - const TInt counter = iInputPorts.Count(); - for (TInt i=0; i < counter; i++ ) - { - if (iInputPorts[i]->PortIndex() == aPortIndex) - { - return (iIfObserver.BufferDelivered(iInputPorts[i], aBuffer)); - } - } - - return KErrNotFound; - } - -TInt COmxILGenericILIF::CBody::EventHandler(OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - TAny* /*aExtraInfo*/) - { - TInt err = KErrNone; - TILEvent thisEvent; - - switch (aEvent) - { - case OMX_EventCmdComplete: - { - thisEvent.iEvent = EEventCmdComplete; - if (aData1 == OMX_CommandStateSet) - { - thisEvent.iData1 = ECommandStateSet; - OMX_STATETYPE state = static_cast(aData2); - thisEvent.iData2 = ConvertOmxState(state); - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - break; - } - else if (aData1 == OMX_CommandFlush) - { - thisEvent.iData1 = ECommandFlush; - thisEvent.iData2 = aData2; // Port index - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - } - else if (aData1 == OMX_CommandPortDisable) - { - thisEvent.iData1 = ECommandPortDisable; - thisEvent.iData2 = aData2; // Port index - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - } - else if (aData1 == OMX_CommandPortEnable) - { - thisEvent.iData1 = ECommandPortEnable; - thisEvent.iData2 = aData2; // Port index - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - } - else - { - err = KErrNotSupported; - } - - break; - } - case OMX_EventBufferFlag: - { - // Propagate the EOF up to client as KErrUnderflow - thisEvent.iEvent = EEventBufferFlag; - thisEvent.iData1 = aData1; - thisEvent.iData2 = static_cast(KErrUnderflow); - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - break; - } - case OMX_EventError: - { - // Propagate the error up to client - thisEvent.iEvent = EEventError; - OMX_ERRORTYPE errorx = static_cast(aData1); - thisEvent.iData1 = ConvertOmxErrorType(errorx); - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - break; - } - default: - { - err = KErrNotSupported; - } - } - return err; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilifbody.h --- a/omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilifbody.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILGENERICILIFBODY_H -#define OMXILGENERICILIFBODY_H - - -#include "omxilgenericilif.h" -#include "omxilgenericportilif.h" -#include "omxilgenericilifbodyimpl.h" -#include -#include - - -/** -Body implementation of the COmxILGenericILIF specific to OpenMAX specification. -*/ -class COmxILGenericILIF::CBody : public CBase - { -public: - static CBody* NewL(COmxILGenericILIF& aParent, - MILIfObserver& aComponentIfObserver, - const TDesC8& aComponentName); - ~CBody(); - - OMX_COMPONENTTYPE* Handle() const; - - TInt OmxGetComponentVersion(TPtr8 aComponentName, OMX_VERSIONTYPE* aComponentVersion, OMX_VERSIONTYPE* aSpecVersion, OMX_UUIDTYPE* aComponentUUID); - TInt OmxSendCommand(OMX_COMMANDTYPE aCmd, TUint32 aParam1, TAny* aCmdData); - TInt OmxGetParameter(OMX_INDEXTYPE aParamIndex, TAny* aComponentParameterStructure); - TInt OmxSetParameter(OMX_INDEXTYPE aIndex, TAny* aComponentParameterStructure); - TInt OmxGetConfig(OMX_INDEXTYPE aIndex, TAny* aValue); - TInt OmxSetConfig(OMX_INDEXTYPE aIndex, TAny* aValue); - TInt OmxGetExtensionIndex(const TDesC8& aParameterName, OMX_INDEXTYPE* aIndexType); - TInt OmxGetState(OMX_STATETYPE* aState); - TInt OmxComponentTunnelRequest(TUint32 aPortInput, OMX_HANDLETYPE aOutput, TUint32 aPortOutput); - TInt OmxComponentDisconnectTunnel(TUint32 aPortInput, OMX_HANDLETYPE aOutput, TUint32 aPortOutput); - TInt OmxUseBuffer(CMMFBuffer* aBuffer, TUint32 aPortIndex); - CMMFBuffer* OmxAllocateBufferL(TUint32 aPortIndex, TUint32 aSizeBytes); - TInt OmxFreeBuffer(CMMFBuffer* aBuffer); - TInt OmxEmptyThisBuffer(const CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - TInt OmxFillThisBuffer(CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - TInt OmxComponentRoleEnum(TPtr8& aComponentRole, TUint32 aIndex); - TInt SetIfToRole(const TUid& aComponentRole); - TInt GetIfRole(TUid& aComponentRole) const; - TInt GetComponentPorts(RPointerArray& aComponentPorts, OMX_DIRTYPE); - TInt SetPortsL(); - - TInt FillBufferDone(CMMFBuffer* aBuffer, TInt aPortIndex); - TInt EmptyBufferDone(const CMMFBuffer* aBuffer, TInt aPortIndex); - TInt EventHandler(OMX_EVENTTYPE aEvent, TUint32 aData1, TUint32 aData2, TAny* aExtraInfo); - -private: - CBody(COmxILGenericILIF& aParent, MILIfObserver& aComponentIfObserver); - void ConstructL(const TDesC8& aComponentName); - -private: - - OMX_COMPONENTTYPE* iHandle; - - RPointerArray iInputPorts; - RPointerArray iOutputPorts; - - COmxBufferManager* iBufferManager; - COmxCallbacks* iCallbacks; - - COmxILGenericILIF& iParent; - MILIfObserver& iIfObserver; - - TUid iFormat; - }; - -#endif // OMXILGENERICILIFBODY_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilifbodyimpl.cpp --- a/omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericilifbodyimpl.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,441 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// omxilgenericifilbodyimpl.cpp -// -// - -#include "omxilgenericilifbodyimpl.h" -#include "omxilcoreutils.h" -#include -#include -#include - - -const TInt KMaxMsgQueueEntries = 10; - -COmxBufferManager::COmxBufferManager(OMX_COMPONENTTYPE* aHandle) - : iHandle(aHandle) - { - } - -COmxBufferManager::COmxBuffer::COmxBuffer() - { - } - - -COmxBufferManager::COmxBuffer* COmxBufferManager::COmxBuffer::NewL(OMX_BUFFERHEADERTYPE* aBufferHeader, - CMMFBuffer* aBuffer) - { - COmxBuffer* self = new (ELeave) COmxBuffer; - CleanupStack::PushL(self); - self->ConstructL(aBufferHeader, aBuffer); - CleanupStack::Pop(self); - return self; - } - -COmxBufferManager::COmxBuffer::~COmxBuffer() - { - if (iOwnsMmfBuffer) - { - delete iMmfBuffer; - } - } - -CMMFBuffer* COmxBufferManager::COmxBuffer::MmfBuffer() const - { - return iMmfBuffer; - } - -OMX_BUFFERHEADERTYPE* COmxBufferManager::COmxBuffer::BufferHeader() const - { - return iBufferHeader; - } - -void COmxBufferManager::COmxBuffer::SetPortObserver(MOmxILComponentIfObserver* aObserver) - { - iPortObserver = aObserver; - } - -MOmxILComponentIfObserver* COmxBufferManager::COmxBuffer::PortObserver() const - { - return iPortObserver; - } - -COmxBufferManager::COmxBuffer* COmxBufferManager::FindBuffer(const CMMFBuffer* aBuffer) const - { - COmxBuffer* buffer = NULL; - for (TInt i=0;iMmfBuffer() == aBuffer) - { - buffer = iBuffers[i]; - } - } - return buffer; - } - -COmxBufferManager::COmxBuffer* COmxBufferManager::FindBuffer(OMX_BUFFERHEADERTYPE* aBuffer) const - { - return reinterpret_cast(aBuffer->pAppPrivate); - } - - TInt COmxBufferManager::UseBuffer(CMMFBuffer& aBuffer, TUint aPortIndex) - { - if (CMMFBuffer::IsSupportedDataBuffer(aBuffer.Type())) - { - OMX_BUFFERHEADERTYPE* buffer; - CMMFDataBuffer& dataBuffer = static_cast(aBuffer); - - TDes8& aBufferDes = dataBuffer.Data(); - OMX_ERRORTYPE error = iHandle->UseBuffer(static_cast(iHandle), &buffer, aPortIndex, (void*)&aBuffer, aBufferDes.MaxLength(), const_cast(aBufferDes.Ptr())); - if (error != OMX_ErrorNone) - { - return ConvertOmxErrorType(error); - } - TRAPD(err, StoreBufferL(buffer, &aBuffer)); - return err; - } - else - { - return KErrNotSupported; - } - } - - - CMMFBuffer* COmxBufferManager::AllocateBufferL(TUint aPortIndex, - TUint aSizeBytes) - { - OMX_BUFFERHEADERTYPE* buffer; - OMX_ERRORTYPE error = iHandle->AllocateBuffer(static_cast(iHandle), &buffer, aPortIndex, NULL, aSizeBytes); - User::LeaveIfError(ConvertOmxErrorType(error)); - - StoreBufferL(buffer,NULL); // transfers ownership - - return FindBuffer(buffer)->MmfBuffer(); - } - - - TInt COmxBufferManager::FreeBuffer(CMMFBuffer* aBuffer) - { - COmxBuffer* buffer; - for (TInt i=0;iMmfBuffer() == aBuffer) - { - iBuffers.Remove(i); - OMX_ERRORTYPE err = iHandle->FreeBuffer(static_cast(iHandle), 0, buffer->BufferHeader()); - delete buffer; - return err; - } - } - return KErrNotFound; - } - -void COmxBufferManager::COmxBuffer::ConstructL(OMX_BUFFERHEADERTYPE* aBufferHeader, - CMMFBuffer* aBuffer) - { - - // Now if CMMFBuffer is NULL, this is been called from allocate buffer, and we need to - // Allocate a ptr buffer to correspond to the buffer created by OMX - ASSERT(aBufferHeader); - iBufferHeader = aBufferHeader; - if (aBuffer == NULL) - { - TPtr8 ptr(iBufferHeader->pBuffer, iBufferHeader->nFilledLen, iBufferHeader->nAllocLen); - CMMFBuffer* mmfBuffer = CMMFPtrBuffer::NewL(ptr); - iMmfBuffer = mmfBuffer; - iOwnsMmfBuffer = ETrue; - } - else - { - iMmfBuffer = aBuffer; - } - - // store pointer to element in array - iBufferHeader->pAppPrivate = this; - } - -void COmxBufferManager::StoreBufferL(OMX_BUFFERHEADERTYPE* aBufferHeader, - CMMFBuffer* aBuffer) - { - COmxBuffer* buf = COmxBuffer::NewL(aBufferHeader, aBuffer); - CleanupStack::PushL(buf); - iBuffers.AppendL(buf); - CleanupStack::Pop(buf); - } - - TInt COmxBufferManager::EmptyThisBuffer(const CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - if (CMMFBuffer::IsSupportedDataBuffer(aBuffer->Type())) - { - COmxBuffer* omxBuffer = FindBuffer(aBuffer); - if (!omxBuffer) - { - return KErrNotFound; - } - - omxBuffer->SetPortObserver(aObserver); - OMX_BUFFERHEADERTYPE* bufferHeader = omxBuffer->BufferHeader(); - const CMMFDataBuffer* buf = static_cast(aBuffer); - const TDesC8& des = buf->Data(); - bufferHeader->nFilledLen = des.Length(); - bufferHeader->nFlags = 0; - if (aBuffer->LastBuffer()) - { - bufferHeader->nFlags |= OMX_BUFFERFLAG_EOS; - } - else - { - bufferHeader->nFlags &= ~OMX_BUFFERFLAG_EOS; - } - return ConvertOmxErrorType(iHandle->EmptyThisBuffer(static_cast(iHandle), bufferHeader)); - } - else - { - return KErrNotSupported; - } - } - - - TInt COmxBufferManager::FillThisBuffer(CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - if (CMMFBuffer::IsSupportedDataBuffer(aBuffer->Type())) - { - COmxBuffer* omxBuffer = FindBuffer(aBuffer); - if (!omxBuffer) - { - return KErrNotFound; - } - omxBuffer->SetPortObserver(aObserver); - OMX_BUFFERHEADERTYPE* bufferHeader = omxBuffer->BufferHeader(); - - bufferHeader->nFilledLen = 0; - // clear last buffer flag - bufferHeader->nFlags &= ~OMX_BUFFERFLAG_EOS; - return ConvertOmxErrorType(iHandle->FillThisBuffer(static_cast(iHandle), bufferHeader)); - } - else - { - return KErrNotSupported; - } - } - - - -COmxBufferManager::~COmxBufferManager() - { - for (TInt i=0;iFreeBuffer(static_cast(iHandle), 0, omxBuffer->BufferHeader()); - delete omxBuffer; - } - iBuffers.Close(); - } - - -COmxCallbacks* COmxCallbacks::NewL(MOmxILComponentIfObserver& aObserver) - { - COmxCallbacks* self = new (ELeave) COmxCallbacks(aObserver); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - - -void COmxCallbacks::ConstructL() - { - OMX_CALLBACKTYPE h = - { - &::EventHandler, - &::EmptyBufferDone, - &::FillBufferDone - }; - - iHandle = h; - CActiveScheduler::Add(this); - - User::LeaveIfError(iMsgQueue.CreateLocal(KMaxMsgQueueEntries)); - iMsgQueue.NotifyDataAvailable(iStatus); - SetActive(); - } - -COmxCallbacks::COmxCallbacks(MOmxILComponentIfObserver& aObserver) - : CActive(EPriorityStandard), - iParent(aObserver) - { - } - - -COmxCallbacks::operator OMX_CALLBACKTYPE*() - { - return &iHandle; - } - - -void COmxCallbacks::RunL() - { - TOmxMessage msg; - - while (iMsgQueue.Receive(msg)==KErrNone) - { - switch (msg.iType) - { - case EEmptyBufferCallback: - { - MOmxILComponentIfObserver* callback = msg.iBuffer->PortObserver(); - const CMMFBuffer* buffer = msg.iBuffer->MmfBuffer(); - OMX_BUFFERHEADERTYPE* bufferHeader = msg.iBuffer->BufferHeader(); - TInt portIndex = static_cast(bufferHeader->nInputPortIndex); - User::LeaveIfError(callback->EmptyBufferDone(buffer, portIndex)); - break; - } - - case EFillBufferCallback: - { - CMMFBuffer* mmfBuffer = msg.iBuffer->MmfBuffer(); - OMX_BUFFERHEADERTYPE* bufferHeader = msg.iBuffer->BufferHeader(); - - if (CMMFBuffer::IsSupportedDataBuffer(mmfBuffer->Type())) - { - CMMFDataBuffer* dataBuffer = static_cast(mmfBuffer); - TDes8& aBufferDes = dataBuffer->Data(); - aBufferDes.SetLength(bufferHeader->nFilledLen); - mmfBuffer->SetLastBuffer(bufferHeader->nFlags & OMX_BUFFERFLAG_EOS); - } - else - { - ASSERT(EFalse); - } - MOmxILComponentIfObserver* callback = msg.iBuffer->PortObserver(); - bufferHeader = msg.iBuffer->BufferHeader(); - TInt portIndex = static_cast(bufferHeader->nOutputPortIndex); - User::LeaveIfError(callback->FillBufferDone(mmfBuffer, portIndex)); - break; - } - case EEventCallback: - { - TInt err = KErrNone; - err = iParent.EventHandler(msg.iEventParams.iEvent, - msg.iEventParams.iData1, - msg.iEventParams.iData2, - msg.iEventParams.iExtraData); - if (err != KErrNone) - { - // Very possible the event is not supported by the IL Client. - // Ignore for now - // ASSERT(EFalse); // Uncomment this line if interested in catching this case on debug mode. - } - break; - } - default: - { - // This is an invalid state - ASSERT(EFalse); - } - }; - } - - // setup for next callbacks - iStatus = KRequestPending; - iMsgQueue.NotifyDataAvailable(iStatus); - SetActive(); - } - -COmxCallbacks::~COmxCallbacks() - { - Cancel(); - iMsgQueue.Close(); - } - - -void COmxCallbacks::DoCancel() - { - if (iMsgQueue.Handle()!=NULL) - { - iMsgQueue.CancelDataAvailable(); - } - } - - -TInt COmxCallbacks::FillBufferDone(OMX_HANDLETYPE aComponent, - COmxBufferManager::COmxBuffer* aBuffer) - { - TOmxMessage message; - message.iType = EFillBufferCallback; - message.iComponent = aComponent; - message.iBuffer = aBuffer; - return iMsgQueue.Send(message); - } - -TInt COmxCallbacks::EmptyBufferDone(OMX_HANDLETYPE aComponent, - COmxBufferManager::COmxBuffer* aBuffer) - { - TOmxMessage message; - message.iType = EEmptyBufferCallback; - message.iComponent = aComponent; - message.iBuffer = aBuffer; - return iMsgQueue.Send(message); - } - -TInt COmxCallbacks::EventHandler(OMX_HANDLETYPE aComponent, - const TEventParams& aEventParams) - { - TOmxMessage message; - message.iType = EEventCallback; - message.iComponent = aComponent; - message.iEventParams = aEventParams; - return iMsgQueue.Send(message); - } - - - -OMX_ERRORTYPE EventHandler(OMX_OUT OMX_HANDLETYPE aComponent, - OMX_OUT TAny* aAppData, - OMX_OUT OMX_EVENTTYPE aEvent, - OMX_OUT TUint32 aData1, - OMX_OUT TUint32 aData2, - OMX_OUT TAny* aExtra) - { - COmxCallbacks::TEventParams eventParams; - eventParams.iEvent = aEvent; - eventParams.iData1 = aData1; - eventParams.iData2 = aData2; - eventParams.iExtraData = aExtra; - TInt error = static_cast(aAppData)->EventHandler(aComponent, eventParams); - return ConvertSymbianErrorType(error); - } - -OMX_ERRORTYPE EmptyBufferDone(OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_BUFFERHEADERTYPE* aBuffer) - { - COmxBufferManager::COmxBuffer* buffer = static_cast(aBuffer->pAppPrivate); - TInt error = static_cast(aAppData)->EmptyBufferDone(aComponent, buffer); - return ConvertSymbianErrorType(error); - } - -OMX_ERRORTYPE FillBufferDone(OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_BUFFERHEADERTYPE* aBuffer) - { - COmxBufferManager::COmxBuffer* buffer = static_cast(aBuffer->pAppPrivate); - TInt error = static_cast(aAppData)->FillBufferDone(aComponent, buffer); - return ConvertSymbianErrorType(error); - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericportilif.cpp --- a/omxil/mmilapi/refomxil/src/omxilgenericilif/omxilgenericportilif.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,180 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "omxilgenericportilif.h" - -/** -class COmxILGenericPortILIF -Concrete implementation of the MILComponentPortIf that encapsulates the -component's port specific behaviour according to OpenMAX specification. -*/ -COmxILGenericPortILIF::COmxILGenericPortILIF(COmxILGenericILIF& aParent, - TPortDirection aPortDirection, - TInt aIndex) - : - iPortDirection (aPortDirection), - iPortIndex (aIndex), - iPortComponent(aParent) - { - } - -COmxILGenericPortILIF* COmxILGenericPortILIF::NewL(COmxILGenericILIF& aParent, - TPortDirection aPortDirection, - TInt aIndex) - { - COmxILGenericPortILIF* self = new (ELeave) COmxILGenericPortILIF(aParent, aPortDirection, aIndex); - return self; - } - -TInt COmxILGenericPortILIF::FillThisBuffer(CMMFBuffer& aBuffer) - { - if (iPortDirection == EDirOutput) - { - return iPortComponent.OmxFillThisBuffer(&aBuffer, &iPortComponent); - } - else - { - return KErrCorrupt; - } - } - -TInt COmxILGenericPortILIF::EmptyThisBuffer(const CMMFBuffer& aBuffer) - { - if (iPortDirection == EDirInput) - { - return iPortComponent.OmxEmptyThisBuffer(&aBuffer, &iPortComponent); - } - else - { - return KErrCorrupt; - } - } - -TInt COmxILGenericPortILIF::TunnelRequest(MILComponentPortIf* aPort) - { - TInt error = KErrNotSupported; - - if (aPort) - // This is the connet tunnel request - { - TPortDirection otherPortDir = aPort->PortDirection(); - COmxILGenericILIF* otherPortComponent = static_cast(aPort->PortComponent()); - - if (iPortDirection != otherPortDir) - { - if (iPortDirection == EDirInput) - { - error = iPortComponent.OmxComponentTunnelRequest(iPortIndex, - otherPortComponent->OmxHandle(), - aPort->PortIndex()); - - } - else - { - error = otherPortComponent->OmxComponentTunnelRequest(aPort->PortIndex(), - iPortComponent.OmxHandle(), - iPortIndex); - } - - if (error == KErrNone) - { - iTunneledPort = static_cast(aPort); - iTunneledPort->SetPortConnectedTo(this); - } - } - } - else - // This is the disconnet tunnel request - { - TPortDirection otherPortDir = iTunneledPort->PortDirection(); - COmxILGenericILIF* otherPortComponent = static_cast (iTunneledPort->PortComponent()); - - if (iPortDirection != otherPortDir) - { - if (iPortDirection == EDirInput) - { - error = iPortComponent.OmxComponentDisconnectTunnel(iPortIndex, - otherPortComponent->OmxHandle(), - iTunneledPort->PortIndex()); - } - else - { - error = otherPortComponent->OmxComponentDisconnectTunnel(iTunneledPort->PortIndex(), - iPortComponent.OmxHandle(), - iPortIndex); - } - - if (error == KErrNone) - { - iTunneledPort->SetPortConnectedTo(NULL); - iTunneledPort = NULL; - } - } - } - - return error; - } - -TInt COmxILGenericPortILIF::PortIndex() const - { - return iPortIndex; - } - -TPortDirection COmxILGenericPortILIF::PortDirection() const - { - return iPortDirection; - } - -CMMFBuffer* COmxILGenericPortILIF::CreateBufferL(TInt aBufferSize) - { - return iPortComponent.OmxAllocateBufferL(iPortIndex, aBufferSize); - } - -TInt COmxILGenericPortILIF::UseBuffer(CMMFBuffer& aBuffer) - { - return iPortComponent.OmxUseBuffer(&aBuffer, iPortIndex); - } - -TInt COmxILGenericPortILIF::FreeBuffer(CMMFBuffer* aBuffer) - { - return iPortComponent.OmxFreeBuffer(aBuffer); - } - -TInt COmxILGenericPortILIF::FlushPort() - { - return iPortComponent.OmxSendCommand(OMX_CommandFlush, iPortIndex, NULL); - } - -TInt COmxILGenericPortILIF::EnablePort() - { - return iPortComponent.OmxSendCommand(OMX_CommandPortEnable, iPortIndex, NULL); - } - -TInt COmxILGenericPortILIF::DisablePort() - { - return iPortComponent.OmxSendCommand(OMX_CommandPortDisable, iPortIndex, NULL); - } - -MILComponentIf* COmxILGenericPortILIF::PortComponent() const - { - return &iPortComponent; - } - -void COmxILGenericPortILIF::SetPortConnectedTo(COmxILGenericPortILIF* aPort) - { - iTunneledPort = aPort; - } - - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/bwins/omxildummybaseilif.def --- a/omxil/mmilapi/unittest/bwins/omxildummybaseilif.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -EXPORTS - ??0COmxILDummyBaseILIF@@IAE@XZ @ 1 NONAME ; COmxILDummyBaseILIF::COmxILDummyBaseILIF(void) - ??1COmxILDummyBaseILIF@@UAE@XZ @ 2 NONAME ; COmxILDummyBaseILIF::~COmxILDummyBaseILIF(void) - ?ComponentRoleEnum@COmxILDummyBaseILIF@@UBEHAAVTPtr8@@K@Z @ 3 NONAME ; int COmxILDummyBaseILIF::ComponentRoleEnum(class TPtr8 &, unsigned long) const - ?CreateComponentL@COmxILDummyBaseILIF@@UAEXABVTDesC8@@AAVMILIfObserver@@@Z @ 4 NONAME ; void COmxILDummyBaseILIF::CreateComponentL(class TDesC8 const &, class MILIfObserver &) - ?CreateComponentL@COmxILDummyBaseILIF@@UAEXABVTUid@@AAVMILIfObserver@@@Z @ 5 NONAME ; void COmxILDummyBaseILIF::CreateComponentL(class TUid const &, class MILIfObserver &) - ?CustomInterface@COmxILDummyBaseILIF@@UAEPAXVTUid@@@Z @ 6 NONAME ; void * COmxILDummyBaseILIF::CustomInterface(class TUid) - ?EmptyBufferDone@COmxILDummyBaseILIF@@UAEHPBVCMMFBuffer@@H@Z @ 7 NONAME ; int COmxILDummyBaseILIF::EmptyBufferDone(class CMMFBuffer const *, int) - ?EventHandler@COmxILDummyBaseILIF@@UAEHW4OMX_EVENTTYPE@@KKPAX@Z @ 8 NONAME ; int COmxILDummyBaseILIF::EventHandler(enum OMX_EVENTTYPE, unsigned long, unsigned long, void *) - ?Execute@COmxILDummyBaseILIF@@UAEHXZ @ 9 NONAME ; int COmxILDummyBaseILIF::Execute(void) - ?FillBufferDone@COmxILDummyBaseILIF@@UAEHPAVCMMFBuffer@@H@Z @ 10 NONAME ; int COmxILDummyBaseILIF::FillBufferDone(class CMMFBuffer *, int) - ?FlushAllPorts@COmxILDummyBaseILIF@@UAEHXZ @ 11 NONAME ; int COmxILDummyBaseILIF::FlushAllPorts(void) - ?GetComponentIfRole@COmxILDummyBaseILIF@@UBEHAAVTDes8@@@Z @ 12 NONAME ; int COmxILDummyBaseILIF::GetComponentIfRole(class TDes8 &) const - ?GetComponentIfRole@COmxILDummyBaseILIF@@UBEHAAVTUid@@@Z @ 13 NONAME ; int COmxILDummyBaseILIF::GetComponentIfRole(class TUid &) const - ?GetComponentInputPorts@COmxILDummyBaseILIF@@UBEHAAV?$RPointerArray@VMILComponentPortIf@@@@@Z @ 14 NONAME ; int COmxILDummyBaseILIF::GetComponentInputPorts(class RPointerArray &) const - ?GetComponentOutputPorts@COmxILDummyBaseILIF@@UBEHAAV?$RPointerArray@VMILComponentPortIf@@@@@Z @ 15 NONAME ; int COmxILDummyBaseILIF::GetComponentOutputPorts(class RPointerArray &) const - ?GetComponentVersion@COmxILDummyBaseILIF@@UBEHAAVTILComponentVersion@@@Z @ 16 NONAME ; int COmxILDummyBaseILIF::GetComponentVersion(class TILComponentVersion &) const - ?GetConfig@COmxILDummyBaseILIF@@UBEHAAVTILStruct@@PBVMILComponentPortIf@@@Z @ 17 NONAME ; int COmxILDummyBaseILIF::GetConfig(class TILStruct &, class MILComponentPortIf const *) const - ?GetExtConfig@COmxILDummyBaseILIF@@UBEHABVTDesC8@@AAVTILStruct@@PBVMILComponentPortIf@@@Z @ 18 NONAME ; int COmxILDummyBaseILIF::GetExtConfig(class TDesC8 const &, class TILStruct &, class MILComponentPortIf const *) const - ?GetState@COmxILDummyBaseILIF@@UBEHAAW4TILComponentState@@@Z @ 19 NONAME ; int COmxILDummyBaseILIF::GetState(enum TILComponentState &) const - ?Initialize@COmxILDummyBaseILIF@@UAEHXZ @ 20 NONAME ; int COmxILDummyBaseILIF::Initialize(void) - ?OmxGetConfig@COmxILDummyBaseILIF@@IBEHW4OMX_INDEXTYPE@@PAX@Z @ 21 NONAME ; int COmxILDummyBaseILIF::OmxGetConfig(enum OMX_INDEXTYPE, void *) const - ?OmxGetExtensionIndex@COmxILDummyBaseILIF@@IBEHABVTDesC8@@PAW4OMX_INDEXTYPE@@@Z @ 22 NONAME ; int COmxILDummyBaseILIF::OmxGetExtensionIndex(class TDesC8 const &, enum OMX_INDEXTYPE *) const - ?OmxGetParameter@COmxILDummyBaseILIF@@IBEHW4OMX_INDEXTYPE@@PAX@Z @ 23 NONAME ; int COmxILDummyBaseILIF::OmxGetParameter(enum OMX_INDEXTYPE, void *) const - ?OmxSetConfig@COmxILDummyBaseILIF@@IAEHW4OMX_INDEXTYPE@@PAX@Z @ 24 NONAME ; int COmxILDummyBaseILIF::OmxSetConfig(enum OMX_INDEXTYPE, void *) - ?OmxSetParameter@COmxILDummyBaseILIF@@IAEHW4OMX_INDEXTYPE@@PAX@Z @ 25 NONAME ; int COmxILDummyBaseILIF::OmxSetParameter(enum OMX_INDEXTYPE, void *) - ?Pause@COmxILDummyBaseILIF@@UAEHXZ @ 26 NONAME ; int COmxILDummyBaseILIF::Pause(void) - ?ReleaseComponent@COmxILDummyBaseILIF@@UAEXXZ @ 27 NONAME ; void COmxILDummyBaseILIF::ReleaseComponent(void) - ?SendCommand@COmxILDummyBaseILIF@@UAEHABVTILCommand@@@Z @ 28 NONAME ; int COmxILDummyBaseILIF::SendCommand(class TILCommand const &) - ?SetComponentIfRole@COmxILDummyBaseILIF@@UAEHABVTDesC8@@@Z @ 29 NONAME ; int COmxILDummyBaseILIF::SetComponentIfRole(class TDesC8 const &) - ?SetComponentIfRole@COmxILDummyBaseILIF@@UAEHABVTUid@@@Z @ 30 NONAME ; int COmxILDummyBaseILIF::SetComponentIfRole(class TUid const &) - ?SetConfig@COmxILDummyBaseILIF@@UAEHABVTILStruct@@PBVMILComponentPortIf@@@Z @ 31 NONAME ; int COmxILDummyBaseILIF::SetConfig(class TILStruct const &, class MILComponentPortIf const *) - ?SetExtConfig@COmxILDummyBaseILIF@@UAEHABVTDesC8@@ABVTILStruct@@PBVMILComponentPortIf@@@Z @ 32 NONAME ; int COmxILDummyBaseILIF::SetExtConfig(class TDesC8 const &, class TILStruct const &, class MILComponentPortIf const *) - ?Stop@COmxILDummyBaseILIF@@UAEHXZ @ 33 NONAME ; int COmxILDummyBaseILIF::Stop(void) - ?UnInitialize@COmxILDummyBaseILIF@@UAEHXZ @ 34 NONAME ; int COmxILDummyBaseILIF::UnInitialize(void) - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/bwins/tsu_milif_omxilif.def --- a/omxil/mmilapi/unittest/bwins/tsu_milif_omxilif.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?NewTestSuiteL@CTestSuiteMILIF@@SAPAV1@XZ @ 1 NONAME ; class CTestSuiteMILIF * CTestSuiteMILIF::NewTestSuiteL(void) - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/eabi/omxildummybaseilif.def --- a/omxil/mmilapi/unittest/eabi/omxildummybaseilif.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -EXPORTS - _ZN19COmxILDummyBaseILIF10InitializeEv @ 1 NONAME - _ZN19COmxILDummyBaseILIF11SendCommandERK10TILCommand @ 2 NONAME - _ZN19COmxILDummyBaseILIF12EventHandlerE13OMX_EVENTTYPEmmPv @ 3 NONAME - _ZN19COmxILDummyBaseILIF12OmxSetConfigE13OMX_INDEXTYPEPv @ 4 NONAME - _ZN19COmxILDummyBaseILIF12SetExtConfigERK6TDesC8RK9TILStructPK18MILComponentPortIf @ 5 NONAME - _ZN19COmxILDummyBaseILIF12UnInitializeEv @ 6 NONAME - _ZN19COmxILDummyBaseILIF13FlushAllPortsEv @ 7 NONAME - _ZN19COmxILDummyBaseILIF14FillBufferDoneEP10CMMFBufferi @ 8 NONAME - _ZN19COmxILDummyBaseILIF15CustomInterfaceE4TUid @ 9 NONAME - _ZN19COmxILDummyBaseILIF15EmptyBufferDoneEPK10CMMFBufferi @ 10 NONAME - _ZN19COmxILDummyBaseILIF15OmxSetParameterE13OMX_INDEXTYPEPv @ 11 NONAME - _ZN19COmxILDummyBaseILIF16CreateComponentLERK4TUidR13MILIfObserver @ 12 NONAME - _ZN19COmxILDummyBaseILIF16CreateComponentLERK6TDesC8R13MILIfObserver @ 13 NONAME - _ZN19COmxILDummyBaseILIF16ReleaseComponentEv @ 14 NONAME - _ZN19COmxILDummyBaseILIF18SetComponentIfRoleERK4TUid @ 15 NONAME - _ZN19COmxILDummyBaseILIF18SetComponentIfRoleERK6TDesC8 @ 16 NONAME - _ZN19COmxILDummyBaseILIF4StopEv @ 17 NONAME - _ZN19COmxILDummyBaseILIF5PauseEv @ 18 NONAME - _ZN19COmxILDummyBaseILIF7ExecuteEv @ 19 NONAME - _ZN19COmxILDummyBaseILIF9SetConfigERK9TILStructPK18MILComponentPortIf @ 20 NONAME - _ZN19COmxILDummyBaseILIFC1Ev @ 21 NONAME - _ZN19COmxILDummyBaseILIFC2Ev @ 22 NONAME - _ZN19COmxILDummyBaseILIFD0Ev @ 23 NONAME - _ZN19COmxILDummyBaseILIFD1Ev @ 24 NONAME - _ZN19COmxILDummyBaseILIFD2Ev @ 25 NONAME - _ZNK19COmxILDummyBaseILIF12GetExtConfigERK6TDesC8R9TILStructPK18MILComponentPortIf @ 26 NONAME - _ZNK19COmxILDummyBaseILIF12OmxGetConfigE13OMX_INDEXTYPEPv @ 27 NONAME - _ZNK19COmxILDummyBaseILIF15OmxGetParameterE13OMX_INDEXTYPEPv @ 28 NONAME - _ZNK19COmxILDummyBaseILIF17ComponentRoleEnumER5TPtr8m @ 29 NONAME - _ZNK19COmxILDummyBaseILIF18GetComponentIfRoleER4TUid @ 30 NONAME - _ZNK19COmxILDummyBaseILIF18GetComponentIfRoleER5TDes8 @ 31 NONAME - _ZNK19COmxILDummyBaseILIF19GetComponentVersionER19TILComponentVersion @ 32 NONAME - _ZNK19COmxILDummyBaseILIF20OmxGetExtensionIndexERK6TDesC8P13OMX_INDEXTYPE @ 33 NONAME - _ZNK19COmxILDummyBaseILIF22GetComponentInputPortsER13RPointerArrayI18MILComponentPortIfE @ 34 NONAME - _ZNK19COmxILDummyBaseILIF23GetComponentOutputPortsER13RPointerArrayI18MILComponentPortIfE @ 35 NONAME - _ZNK19COmxILDummyBaseILIF8GetStateER17TILComponentState @ 36 NONAME - _ZNK19COmxILDummyBaseILIF9GetConfigER9TILStructPK18MILComponentPortIf @ 37 NONAME - _ZTI13COmxCallbacks @ 38 NONAME - _ZTI17COmxBufferManager @ 39 NONAME - _ZTI19COmxILDummyBaseILIF @ 40 NONAME - _ZTI23COmxILDummyBasePortILIF @ 41 NONAME - _ZTIN17COmxBufferManager10COmxBufferE @ 42 NONAME - _ZTIN19COmxILDummyBaseILIF5CBodyE @ 43 NONAME - _ZTV13COmxCallbacks @ 44 NONAME - _ZTV17COmxBufferManager @ 45 NONAME - _ZTV19COmxILDummyBaseILIF @ 46 NONAME - _ZTV23COmxILDummyBasePortILIF @ 47 NONAME - _ZTVN17COmxBufferManager10COmxBufferE @ 48 NONAME - _ZTVN19COmxILDummyBaseILIF5CBodyE @ 49 NONAME - _ZThn12_N19COmxILDummyBaseILIF12EventHandlerE13OMX_EVENTTYPEmmPv @ 50 NONAME - _ZThn12_N19COmxILDummyBaseILIF14FillBufferDoneEP10CMMFBufferi @ 51 NONAME - _ZThn12_N19COmxILDummyBaseILIF15EmptyBufferDoneEPK10CMMFBufferi @ 52 NONAME - _ZThn4_N19COmxILDummyBaseILIF10InitializeEv @ 53 NONAME - _ZThn4_N19COmxILDummyBaseILIF11SendCommandERK10TILCommand @ 54 NONAME - _ZThn4_N19COmxILDummyBaseILIF12SetExtConfigERK6TDesC8RK9TILStructPK18MILComponentPortIf @ 55 NONAME - _ZThn4_N19COmxILDummyBaseILIF12UnInitializeEv @ 56 NONAME - _ZThn4_N19COmxILDummyBaseILIF13FlushAllPortsEv @ 57 NONAME - _ZThn4_N19COmxILDummyBaseILIF15CustomInterfaceE4TUid @ 58 NONAME - _ZThn4_N19COmxILDummyBaseILIF16CreateComponentLERK4TUidR13MILIfObserver @ 59 NONAME - _ZThn4_N19COmxILDummyBaseILIF16CreateComponentLERK6TDesC8R13MILIfObserver @ 60 NONAME - _ZThn4_N19COmxILDummyBaseILIF16ReleaseComponentEv @ 61 NONAME - _ZThn4_N19COmxILDummyBaseILIF18SetComponentIfRoleERK4TUid @ 62 NONAME - _ZThn4_N19COmxILDummyBaseILIF18SetComponentIfRoleERK6TDesC8 @ 63 NONAME - _ZThn4_N19COmxILDummyBaseILIF4StopEv @ 64 NONAME - _ZThn4_N19COmxILDummyBaseILIF5PauseEv @ 65 NONAME - _ZThn4_N19COmxILDummyBaseILIF7ExecuteEv @ 66 NONAME - _ZThn4_N19COmxILDummyBaseILIF9SetConfigERK9TILStructPK18MILComponentPortIf @ 67 NONAME - _ZThn4_NK19COmxILDummyBaseILIF12GetExtConfigERK6TDesC8R9TILStructPK18MILComponentPortIf @ 68 NONAME - _ZThn4_NK19COmxILDummyBaseILIF17ComponentRoleEnumER5TPtr8m @ 69 NONAME - _ZThn4_NK19COmxILDummyBaseILIF18GetComponentIfRoleER4TUid @ 70 NONAME - _ZThn4_NK19COmxILDummyBaseILIF18GetComponentIfRoleER5TDes8 @ 71 NONAME - _ZThn4_NK19COmxILDummyBaseILIF19GetComponentVersionER19TILComponentVersion @ 72 NONAME - _ZThn4_NK19COmxILDummyBaseILIF22GetComponentInputPortsER13RPointerArrayI18MILComponentPortIfE @ 73 NONAME - _ZThn4_NK19COmxILDummyBaseILIF23GetComponentOutputPortsER13RPointerArrayI18MILComponentPortIfE @ 74 NONAME - _ZThn4_NK19COmxILDummyBaseILIF8GetStateER17TILComponentState @ 75 NONAME - _ZThn4_NK19COmxILDummyBaseILIF9GetConfigER9TILStructPK18MILComponentPortIf @ 76 NONAME - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/eabi/tsu_milif_omxilif.def --- a/omxil/mmilapi/unittest/eabi/tsu_milif_omxilif.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -EXPORTS - _ZN15CTestSuiteMILIF13NewTestSuiteLEv @ 1 NONAME - _ZTI15CTestSuiteMILIF @ 2 NONAME - _ZTI18RTestStepMILIFBase @ 3 NONAME - _ZTI19RTestStepMILIFPorts @ 4 NONAME - _ZTI20RTestStepMILIFConfig @ 5 NONAME - _ZTI20RTestStepMILIFStates @ 6 NONAME - _ZTI21RTestStepMILIFVersion @ 7 NONAME ABSENT - _ZTI22RTestStepMILIFCommands @ 8 NONAME - _ZTI24RTestStepMILIFExtensions @ 9 NONAME - _ZTI24RTestStepMILIFTunnelling @ 10 NONAME ABSENT - _ZTI27RTestStepMILIFComponentRole @ 11 NONAME - _ZTV15CTestSuiteMILIF @ 12 NONAME - _ZTV18RTestStepMILIFBase @ 13 NONAME - _ZTV19RTestStepMILIFPorts @ 14 NONAME - _ZTV20RTestStepMILIFConfig @ 15 NONAME - _ZTV20RTestStepMILIFStates @ 16 NONAME - _ZTV21RTestStepMILIFVersion @ 17 NONAME ABSENT - _ZTV22RTestStepMILIFCommands @ 18 NONAME - _ZTV24RTestStepMILIFExtensions @ 19 NONAME - _ZTV24RTestStepMILIFTunnelling @ 20 NONAME ABSENT - _ZTV27RTestStepMILIFComponentRole @ 21 NONAME - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/group/bld.inf --- a/omxil/mmilapi/unittest/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND - -PRJ_TESTMMPFILES -../mmpfiles/omxildummybaseilif.mmp -../mmpfiles/omxildummyaudiodecilif.mmp -../mmpfiles/omxildummyaudiodec.mmp -../mmpfiles/dummypcmrenderer.mmp - -../mmpfiles/omxilvorbdechwdevice.mmp - -../mmpfiles/tsu_milif_omxilif.mmp - -PRJ_TESTEXPORTS -../scripts/tsu_milif_omxilif.script c:/omxil/tsu_milif_omxilif.script - -// DEF FILES - -// IBY FILE -milifunittests.iby /epoc32/rom/include/milifunittests.iby - -#endif // SYMBIAN_MULTIMEDIA_A3FDEVSOUND - -// End of file diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/group/component_test.pkg --- a/omxil/mmilapi/unittest/group/component_test.pkg Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -"\sf\mm\omxil\mmilapi\unittest\scripts\tsu_milif_omxilif.script"-"c:\omxil\tsu_milif_omxilif.script" diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/group/milifunittests.iby --- a/omxil/mmilapi/unittest/group/milifunittests.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef MILIFUNITTESTS_IBY -#define MILIFUNITTESTS_IBY - -#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND - -// Dummy Pcm Renderer -ECOM_PLUGIN(dummypcmrenderer.dll, dummypcmrenderer.rsc) - -// OMX IL Dummy Audio Decoder -ECOM_PLUGIN(omxildummyaudiodec.dll, omxildummyaudiodec.rsc) - -// OMX IL Dummy Audio Decoder IL Interface -ECOM_PLUGIN(omxildummyaudiodecilif.dll, omxildummyaudiodecilif.rsc) - -// OMX IL Dummy Base IL Interface -file=ABI_DIR\BUILD_DIR\omxildummybaseilif.dll System\Libs\omxildummybaseilif.dll - -// OMX IL Vorbis Decoder HwDevice -ECOM_PLUGIN(omxilvorbdechwdevice.dll, omxilvorbdechwdevice.rsc) - -// OMX IL MILIF Unit tests -file=ABI_DIR\BUILD_DIR\tsu_milif_omxilif.dll System\Libs\tsu_milif_omxilif.dll - -// scripts -data=EPOCROOT##epoc32\data\c\omxil\tsu_milif_omxilif.script \omxil\tsu_milif_omxilif.script - -#endif // SYMBIAN_MULTIMEDIA_A3FDEVSOUND - -#endif // MILIFUNITTESTS_IBY \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/inc/ilcomponentif.h --- a/omxil/mmilapi/unittest/inc/ilcomponentif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef ILCOMPONENTIF_H -#define ILCOMPONENTIF_H - -#include -#include - -#include "milcomponentif.h" - -/** - Generic ECom plugin class for creating MILComponentIf instances. - @see MILComponentIf -*/ -class CILComponentIf : public CBase, - public MILComponentIf - { -public: - inline static CILComponentIf* CreateImplementationL(TUid aImplementationUid); - - inline virtual ~CILComponentIf(); - -private: - TUid iDtor_ID_Key; - }; - -#include "ilcomponentif.inl" - -#endif // ILCOMPONENTIF_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/inc/ilcomponentif.inl --- a/omxil/mmilapi/unittest/inc/ilcomponentif.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef ILCOMPONENTIF_INL -#define ILCOMPONENTIF_INL - -#include - -#include "ilcomponentif.h" - -/** - Create a CILComponentIf object with a known implementation Uid. - Asks ECOM plugin framework to instantiate this concret plugin implementation. - Will leave if it is not found (KErrNotFound). - @param aUid - The Uid of a plugin implementation - @return An instantiated CILComponentIf derived object from ECom. - */ -inline CILComponentIf* CILComponentIf::CreateImplementationL(TUid aImplementationUid) - { - TAny* ptr = REComSession::CreateImplementationL(aImplementationUid , _FOFF(CILComponentIf, iDtor_ID_Key)); - return static_cast(ptr); - } - -/** - Interface base class destructor -*/ -inline CILComponentIf::~CILComponentIf() - { - // Destroy any instance variables and then inform ecom that this specific - // instance of the interface has been destroyed. - REComSession::DestroyedImplementation(iDtor_ID_Key); - } - -#endif // ILCOMPONENTIF_INL diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/inc/iltestuids.hrh --- a/omxil/mmilapi/unittest/inc/iltestuids.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef ILTESTUIDS_HRH -#define ILTESTUIDS_HRH - -#define KSharedLibraryUidDefine 0x1000008D //standard UID for dlls -#define KECOMPluginUidDefine 0x10009D8D //standard UID for ECOM plugins - -#define KUidOmxILVorbDecHwDeviceDll 0x10285C12 -#define KUidOmxILVorbDecHwDevice 0x10285C13 - -#define KUidDummyPcmRendererMILIFPluginDll 0x10285C16 -#define KUidDummyPcmRendererMILIFPlugin 0x10285C17 - -#define KUidOmxILDummyBaseMILIFPluginDll 0x10285C18 -#define KUidOmxILDummyAudioDecMILIFPluginDll 0x10285C19 -#define KUidOmxILDummyAudioDecMILIFPlugin 0x10285C1A - -#define KUidOmxILDummyAudioDecDll 0x10285C1B -#define KUidOmxILDummyAudioDec 0x10285C1C - -#define KUidMILIFTestSuite 0x10285C1D -#define KUidMILIFAacTestSuite 0x10287048 - -#endif // ILTESTUIDS_HRH - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/inc/omxildummybaseilif.h --- a/omxil/mmilapi/unittest/inc/omxildummybaseilif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYBASEILIF_H -#define OMXILDUMMYBASEILIF_H - -#include -#include - -#include "ilcomponentif.h" -#include "momxilcomponentifobserver.h" - -/** -Test component. -Implementation of the generic parts of the MILIF API specific to OpenMAX IL specification when implemented as a plugin. -*/ -class COmxILDummyBaseILIF : public CILComponentIf, - public MOmxILComponentIfObserver - { -friend class COmxILDummyBasePortILIF; - -public: - class CBody; - -public: - - // from MILComponentIf - IMPORT_C void CreateComponentL(const TDesC8& aComponentName, MILIfObserver& aComponentIfObserver); - IMPORT_C void CreateComponentL(const TUid& aUid, MILIfObserver& aComponentIfObserver); - IMPORT_C void ReleaseComponent(); - IMPORT_C TInt GetComponentInputPorts(RPointerArray& aComponentPorts) const; - IMPORT_C TInt GetComponentOutputPorts(RPointerArray& aComponentPorts) const; - IMPORT_C TInt SetConfig(const TILStruct& aConfig, const MILComponentPortIf* aComponentPort); - IMPORT_C TInt GetConfig(TILStruct& aConfig, const MILComponentPortIf* aComponentPort) const; - IMPORT_C TInt Initialize(); - IMPORT_C TInt Execute(); - IMPORT_C TInt Pause(); - IMPORT_C TInt Stop(); - IMPORT_C TInt UnInitialize(); - IMPORT_C TInt GetState(TILComponentState& aState) const; - IMPORT_C TInt SendCommand(const TILCommand& aCommand); - IMPORT_C TInt FlushAllPorts(); - IMPORT_C TInt ComponentRoleEnum(TPtr8& aComponentRole, TUint32 aIndex) const; - IMPORT_C TInt GetComponentVersion(TILComponentVersion& aVersion) const; - IMPORT_C TInt SetComponentIfRole(const TUid& aComponentRole); - IMPORT_C TInt SetComponentIfRole(const TDesC8& aComponentRole); - IMPORT_C TInt GetComponentIfRole(TUid& aComponentRole) const; - IMPORT_C TInt GetComponentIfRole(TDes8& aComponentRole) const; - IMPORT_C TInt SetExtConfig(const TDesC8& aParameterName, const TILStruct& aConfig, const MILComponentPortIf* aComponentPort); - IMPORT_C TInt GetExtConfig(const TDesC8& aParameterName, TILStruct& aConfig, const MILComponentPortIf* aComponentPort) const; - IMPORT_C TAny* CustomInterface(TUid aUid); - - // from MOmxILComponentIfObserver - IMPORT_C TInt FillBufferDone(CMMFBuffer* aBuffer,TInt aPortIndex); - IMPORT_C TInt EmptyBufferDone(const CMMFBuffer* aBuffer,TInt aPortIndex); - IMPORT_C TInt EventHandler(OMX_EVENTTYPE aEvent, TUint32 aData1, TUint32 aData2, TAny* aExtraInfo); - - IMPORT_C ~COmxILDummyBaseILIF(); - -protected: - IMPORT_C COmxILDummyBaseILIF(); - - IMPORT_C TInt OmxGetParameter(OMX_INDEXTYPE aParamIndex, TAny* aComponentParameterStructure) const; - IMPORT_C TInt OmxSetParameter(OMX_INDEXTYPE aParamIndex, TAny* aComponentParameterStructure); - IMPORT_C TInt OmxGetConfig(OMX_INDEXTYPE aConfigIndex, TAny* aValue) const; - IMPORT_C TInt OmxSetConfig(OMX_INDEXTYPE aConfigIndex, TAny* aValue); - IMPORT_C TInt OmxGetExtensionIndex(const TDesC8& aParameterName, OMX_INDEXTYPE* aIndexType) const; - -private: - // Internal implementation. Only meant to be used by the component's port interface. - TInt OmxSendCommand(OMX_COMMANDTYPE aCmd, TUint32 aParam1, TAny* aCmdData); - TInt OmxComponentTunnelRequest(TUint32 aPortInput, OMX_HANDLETYPE aOutput, TUint32 aPortOutput); - TInt OmxComponentDisconnectTunnel(TUint32 aPortInput, OMX_HANDLETYPE aOutput, TUint32 aPortOutput); - TInt OmxUseBuffer(CMMFBuffer* aBuffer, TUint32 aPortIndex); - CMMFBuffer* OmxAllocateBufferL(TUint32 aPortIndex, TUint32 aSizeBytes); - TInt OmxFreeBuffer(CMMFBuffer* aBuffer); - TInt OmxEmptyThisBuffer(const CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - TInt OmxFillThisBuffer(CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - OMX_COMPONENTTYPE* OmxHandle() const; - -private: - CBody* iBody; - }; - -#endif // OMXILDUMMYBASEILIF_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/mmpfiles/dummypcmrenderer.mmp --- a/omxil/mmilapi/unittest/mmpfiles/dummypcmrenderer.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../inc/iltestuids.hrh" - -TARGET dummypcmrenderer.dll -TARGETTYPE plugin - -CAPABILITY ALL -TCB - -UID KECOMPluginUidDefine KUidDummyPcmRendererMILIFPluginDll -VENDORID 0x70000001 - -#ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER -USERINCLUDE ../../../../mmdevicefw/mdf/src/audio/mdasoundadapter -#endif - -SOURCEPATH ../test_plugins/dummypcmrenderer -SOURCE dummypcmrenderer.cpp - -USERINCLUDE ../test_plugins/dummypcmrenderer -USERINCLUDE ../inc -USERINCLUDE ../../ilif/inc - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -RESOURCE dummypcmrenderer.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY mmfserverbaseclasses.lib - - -#ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER -LIBRARY mdasoundadapter.lib -#endif - - - - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/mmpfiles/omxildummyaudiodec.mmp --- a/omxil/mmilapi/unittest/mmpfiles/omxildummyaudiodec.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../inc/iltestuids.hrh" - -TARGET omxildummyaudiodec.dll -TARGETTYPE PLUGIN - -CAPABILITY ALL -TCB - -UID KECOMPluginUidDefine KUidOmxILDummyAudioDecDll -VENDORID 0x70000001 - -SOURCEPATH ../test_plugins/omxildummyaudiodec -SOURCE omximpl.cpp -SOURCE omxildummyaudiodec.cpp - -USERINCLUDE ../inc -USERINCLUDE ../test_plugins/omxildummyaudiodec - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -RESOURCE omxildummyaudiodec.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY mmfserverbaseclasses.lib - -STATICLIBRARY omxilcomponentif.lib - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/mmpfiles/omxildummyaudiodecilif.mmp --- a/omxil/mmilapi/unittest/mmpfiles/omxildummyaudiodecilif.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../inc/iltestuids.hrh" - -TARGET omxildummyaudiodecilif.dll -TARGETTYPE plugin - -CAPABILITY All -TCB - -UID KECOMPluginUidDefine KUidOmxILDummyAudioDecMILIFPluginDll -VENDORID 0x70000001 - - -SOURCEPATH ../test_plugins/omxildummyaudiodecilif -SOURCE omxildummyaudiodecilif.cpp - -USERINCLUDE ../test_plugins/omxildummyaudiodecilif -USERINCLUDE ../inc // CILComponentIf -USERINCLUDE ../../refomxil/inc // omxilcomponent headers -USERINCLUDE ../../ilif/inc - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -RESOURCE omxildummyaudiodecilif.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY omxildummybaseilif.lib - - - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/mmpfiles/omxildummybaseilif.mmp --- a/omxil/mmilapi/unittest/mmpfiles/omxildummybaseilif.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../inc/iltestuids.hrh" - -TARGET omxildummybaseilif.dll -TARGETTYPE dll - -CAPABILITY All -TCB - -UID KSharedLibraryUidDefine KUidOmxILDummyBaseMILIFPluginDll -VENDORID 0x70000001 - - -SOURCEPATH ../../refomxil/src/omxilgenericilif -SOURCE omxilgenericilifbodyimpl.cpp -SOURCE omxilcoreutils.cpp -SOURCEPATH ../test_plugins/omxildummybaseilif -SOURCE omxildummybaseilif.cpp -SOURCE omxildummybaseilifbody.cpp -SOURCE omxildummybaseportilif.cpp - -USERINCLUDE ../test_plugins/omxildummybaseilif -USERINCLUDE ../inc -USERINCLUDE ../../refomxil/inc -USERINCLUDE ../../ilif/inc - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY mmfserverbaseclasses.lib -LIBRARY omxilcoreclient.lib - - -NOSTRICTDEF - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/mmpfiles/omxilvorbdechwdevice.mmp --- a/omxil/mmilapi/unittest/mmpfiles/omxilvorbdechwdevice.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../inc/iltestuids.hrh" - -TARGET omxilvorbdechwdevice.dll -TARGETTYPE plugin - -CAPABILITY All -TCB - -UID KECOMPluginUidDefine KUidOmxILVorbDecHwDeviceDll -VENDORID 0x70000001 - -SOURCEPATH ../test_plugins/audioilhwdevice_mvs_test/omxilvorbdechwdevice -SOURCE omxilvorbdechwdevice.cpp - -USERINCLUDE ../test_plugins/audioilhwdevice_mvs_test/omxilvorbdechwdevice -USERINCLUDE ../test_plugins/omxildummybaseilif // Generic implementation of milif API for OMX as a plugin -USERINCLUDE ../test_plugins/dummypcmrenderer // CDummyPcmRenderer plugin -USERINCLUDE ../inc // CILComponentIf -USERINCLUDE ../../refomxil/inc // omxilcomponent headers -USERINCLUDE ../../ilif/inc - - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -RESOURCE omxilvorbdechwdevice.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY mmcommonutils.lib -LIBRARY mmfserverbaseclasses.lib -LIBRARY omxilcoreclient.lib - - - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/mmpfiles/tsu_milif_omxilif.mmp --- a/omxil/mmilapi/unittest/mmpfiles/tsu_milif_omxilif.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../inc/iltestuids.hrh" - -TARGET tsu_milif_omxilif.dll -TARGETTYPE dll - -CAPABILITY All -TCB - -UID 0x1000008d KUidMILIFTestSuite -VENDORID 0x70000001 - -SOURCEPATH ../src -SOURCE tsu_milif_omxiliftests.cpp -SOURCE tsu_milif_testsuite.cpp - -USERINCLUDE ../src -USERINCLUDE ../inc // CILComponentIf -USERINCLUDE ../../refomxil/inc -USERINCLUDE ../../ilif/inc - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY testframeworkclient.lib -LIBRARY omxilcoreclient.lib - -NOSTRICTDEF - - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/scripts/tsu_milif_omxilif.script --- a/omxil/mmilapi/unittest/scripts/tsu_milif_omxilif.script Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -// -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -LOAD_SUITE TSU_MILIF_OMXILIF.dll - -//------------------------------------------------------------------------------------------// -// Test Suite for the Generic Multimedia Integration Layer Interface // -// -// This test suite is based on the generic DLL implementation of the MILIF interface that has -// been specialized to make use of a generic plugin implementation of the MILIF interface for -// OMX audio decoders -// -// Test Cases: MM-MILIF-DUMMYOMXILIF-U-0001 to MM-MILIF-DUMMYOMXILIF-U-0006 -// -//------------------------------------------------------------------------------------------// - - -//------------------------------------------------------------------------------------------// -// TEST STEP: TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0001 -// RTestStepMILIFPorts: To test access to IL component ports through MILIF. -// 1. Create an instance of the KUidOmxILAudioDecGenericIf test ECOM plugin interface. -// 2. Use the interface to instanciate a dummy omx component. -// 3. Set the role of the interface to "aac decoder". -// 4. Get Component Input ports through interface. -// 5. Get Component Output ports through interface. -//------------------------------------------------------------------------------------------// -//! @SYMTestCaseID MM-MILIF-DUMMYOMXILIF-U-0001 - -RUN_TEST_STEP -1 TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0001 -TEST_COMPLETE - -//------------------------------------------------------------------------------------------// -// TEST STEP: TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0002 -// RTestStepMILIFConfig: To test configuration of IL component through MILIF. -// 1. Create an instance of the KUidOmxILAudioDecGenericIf test ECOM plugin interface. -// 2. Use the interface to instanciate a dummy omx component. -// 3. Set the role of the interface to "aac decoder". -// 4. Get Component Input ports through interface. -// 5a. Set a (partial) config port parameter through the interface. -// 5b. Now Get the TPortDefinitionType config parameter through the interface. -// 6a. Configure component through the interface. -// 6b. Now Get the TOMXILStructParam config parameter through the interface. -//------------------------------------------------------------------------------------------// -//! @SYMTestCaseID MM-MILIF-DUMMYOMXILIF-U-0002 - -RUN_TEST_STEP -1 TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0002 -TEST_COMPLETE - -//------------------------------------------------------------------------------------------// -// TEST STEP: TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0003 -// RTestStepMILIFStates: To test driving the IL component state machine through MILIF. -// 1. Create an instance of the KUidOmxILAudioDecGenericIf test ECOM plugin interface. -// 2. Use the interface to instanciate a dummy omx component. -// 3. Set the role of the interface to "aac decoder". -// 4. Trigger transition from Load to Idle in component by calling Initialize() -// 5a. Check the component was left in the correct state after EEventInitComplete event -// 5b. Trigger transition from Idle to Execute in component by calling Execute() -// 6a. Check the component was left in the correct state after EEventExecuteComplete event -// 6b. Trigger transition from Executing to Pause in component by calling Pause() -// 7a. Check the component was left in the correct state after EEventPauseComplete event -// 7b. Trigger transition from Pause to Idle in component by calling Stop() -// 8. Check the component was left in the correct state after EEventStopComplete event -//------------------------------------------------------------------------------------------// -//! @SYMTestCaseID MM-MILIF-DUMMYOMXILIF-U-0003 - -RUN_TEST_STEP -1 TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0003 -TEST_COMPLETE - -//------------------------------------------------------------------------------------------// -// TEST STEP: TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0004 -// RTestStepMILIFCommands: To test sending commands to the IL component through MILIF. -// 1. Create an instance of the KUidOmxILAudioDecGenericIf test ECOM plugin interface. -// 2. Use the interface to instanciate a dummy omx component. -// 3. Set the role of the interface to "aac decoder". -// 4. Trigger FlushAllPorts -// 5. Trigger SendCommand() with ECommandPortDisable -//------------------------------------------------------------------------------------------// -//! @SYMTestCaseID MM-MILIF-DUMMYOMXILIF-U-0004 - -RUN_TEST_STEP -1 TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0004 -TEST_COMPLETE - -//------------------------------------------------------------------------------------------// -// TEST STEP: TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0005 -// RTestStepMILIFExtensions: To test configuration of the IL component with extended params through MILIF. -// 1. Create an instance of the KUidOmxILAudioDecGenericIf test ECOM plugin interface. -// 2. Use the interface to instanciate a dummy omx component. -// 3. Set the role of the interface to "aac decoder". -// 4. Get Component Input ports through interface. -// 5a. Set a (partial) config port parameter through the interface's extension mechanism. -// 5b. Get the parameter set in 5a through the interface's extension mechanism. -//------------------------------------------------------------------------------------------// -//! @SYMTestCaseID MM-MILIF-DUMMYOMXILIF-U-0005 - -RUN_TEST_STEP -1 TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0005 -TEST_COMPLETE - -//------------------------------------------------------------------------------------------// -// TEST STEP: TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0006 -// RTestStepMILIFComponentRole: To test access to the IL component role through MILIF. -// 1. Create an instance of the KUidOmxILAudioDecGenericIf test ECOM plugin interface. -// 2. Use the interface to instanciate a dummy omx component. -// 3. Set the role of the interface to "aac decoder". -// 4. Get component role through interface. -// 5. Check the component's role returned is the expected role -//------------------------------------------------------------------------------------------// -//! @SYMTestCaseID MM-MILIF-DUMMYOMXILIF-U-0006 - -RUN_TEST_STEP -1 TSU_MILIF_OMXILIF MM-MILIF-DUMMYOMXILIF-U-0006 -TEST_COMPLETE - - -// End of Test Script diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/src/tsu_milif_omxiliftests.cpp --- a/omxil/mmilapi/unittest/src/tsu_milif_omxiliftests.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1093 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// Implementation of Unit test step classes for MILIF testing. -// -// - -#include "tsu_milif_omxiliftests.h" -#include "iltestuids.hrh" -#include "ilcomponentif.h" -#include "tilstructtypes.h" -#include "tomxilstruct.h" -#include - -_LIT8(KDummyDecoderILComponentName,"OMX.SYMBIAN.AUDIO.DECODER.DUMMY"); -_LIT8(KExtensionPortDefinitionName,"OMX.CompanyXYZ.index.param.PortDefinition"); -_LIT8(KFakeRole,"audio_decoder.vrb"); - -const TUid KUidFormatAAC = {0x1028347C}; - -const TInt KMaxComponentRoleLength = 128; - -const TInt KZerothPort = 0; - - -// -// RTestStepMILIFBase: Base class for all RTestStepMILIF* tests -// - -/* - * - * RTestStepMILIFBase - Test step constructor - * - */ -RTestStepMILIFBase::RTestStepMILIFBase(const TDesC& aTestName) -:RAsyncTestStep() - { - iTestStepName = aTestName; - } - -/* - * - * KickoffTestL - Starts the test - * - */ -void RTestStepMILIFBase::KickoffTestL() - { - __MM_HEAP_MARK; - - DoKickoffTestL(); - DoTestBody(); - } - -/* - * - * DoKickoffTestL - * - */ -void RTestStepMILIFBase::DoKickoffTestL() - { - OMX_Init(); - - if ((iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0001"))|| - (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0002"))|| - (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0003"))|| - (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0004"))|| - (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0005"))|| - (iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0006"))) - { - INFO_PRINTF1(_L("1. Create an instance of the KUidOmxILAudioDecGenericIf test ECOM plugin interface.")); - TRAPD(error, iDummyComponent = CILComponentIf::CreateImplementationL(TUid::Uid(KUidOmxILDummyAudioDecMILIFPlugin))); - if(error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - Could not instantiate the generic audio decoder OMX IL test ECOM plugin interface: error = %d"), error); - StopTest(error, EFail); - return; - } - - INFO_PRINTF1(_L("2. Use the interface to instanciate a dummy omx component.")); - TRAP(error, iDummyComponent->CreateComponentL(KDummyDecoderILComponentName, *this)); - if(error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - Could not create omx component: error = %d"), error); - StopTest(error, EFail); - return; - } - - INFO_PRINTF1(_L("3. Set the role of the interface.")); - error = iDummyComponent->SetComponentIfRole(KUidFormatAAC); - if(error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - Could not set the role of the interface: error = %d"), error); - StopTest(error, EFail); - } - } - else - { - StopTest(KErrGeneral, EFail); - } - } - -/* - * - * DoTestBodyL - * - */ -void RTestStepMILIFBase::DoTestBody() - { - // Nothing to do in the base class - } - -/* - * - * CloseTest - * - */ -void RTestStepMILIFBase::CloseTest() - { - if (iDummyComponent) - { - iDummyComponent->ReleaseComponent(); - iDummyComponent = NULL; - } - - iComponentInPortIf = NULL; - iComponentOutPortIf = NULL; - - OMX_Deinit(); - - __MM_HEAP_MARKEND; - } - -/* - * - * MsgFromILComponent - Callback from component for component events - * - */ -TInt RTestStepMILIFBase::MsgFromILComponent(const MILComponentIf* /*aComponent*/, const TILEvent& /*aEvent*/) - { - // Nothing to do in the base class - return KErrNotSupported; - } - -/* - * - * BufferDelivered - Callback from component for buffer delivered events - * - */ -TInt RTestStepMILIFBase::BufferDelivered(const MILComponentPortIf* /*aPort*/, const CMMFBuffer* /*aBuffer*/) - { - // Nothing to do in the base class - return KErrNotSupported; - } - - -// -// RTestStepMILIFPorts: To test access to IL component ports through MILIF. -// - -/* - * - * RTestStepMILIFPorts - Test step constructor - * - */ -RTestStepMILIFPorts::RTestStepMILIFPorts(const TDesC& aTestName) - :RTestStepMILIFBase(aTestName) - { - } - -/* - * - * NewL - * - */ -RTestStepMILIFPorts* RTestStepMILIFPorts::NewL(const TDesC& aTestName) - { - return (new (ELeave) RTestStepMILIFPorts(aTestName)); - } - -/* - * - * DoKickoffTestL - * - */ -void RTestStepMILIFPorts::DoKickoffTestL() - { - INFO_PRINTF1(_L("RTestStepMILIFPorts: To test access to IL component ports through MILIF interface.")); - - RTestStepMILIFBase::DoKickoffTestL(); - } - -/* - * - * DoTestBodyL - * - */ -void RTestStepMILIFPorts::DoTestBody() - { - RPointerArray ifPorts; - - INFO_PRINTF1(_L("4. Get Component Input ports through MILIF interface.")); - TInt error = iDummyComponent->GetComponentInputPorts(ifPorts); - if (error == KErrNone && ifPorts.Count() == 1) - { - iComponentInPortIf = ifPorts[KZerothPort]; - ifPorts.Close(); - } - else - { - if (ifPorts.Count() != 1) - { - error = KErrNotFound; - } - ifPorts.Close(); - ERR_PRINTF2(_L(" ERROR! - Fail to grab input ports: error = %d"), error); - StopTest(error, EFail); - return; - } - - - INFO_PRINTF1(_L("5. Get Component Output ports through MILIF interface.")); - error = iDummyComponent->GetComponentOutputPorts(ifPorts); - if (error == KErrNone && ifPorts.Count() > 0) - { - iComponentOutPortIf = ifPorts[KZerothPort]; - ifPorts.Close(); - } - else - { - if (ifPorts.Count() != 1) - { - error = KErrNotFound; - } - ifPorts.Close(); - ERR_PRINTF2(_L(" ERROR! - Fail to grab output ports: error = %d"), error); - StopTest(error, EFail); - return; - } - StopTest(KErrNone); - } - - -// -// RTestStepMILIFConfig: To test configuration of IL component through MILIF. -// - -/* - * - * RTestStepMILIFConfig - Test step constructor - * - */ -RTestStepMILIFConfig::RTestStepMILIFConfig(const TDesC& aTestName) -:RTestStepMILIFBase(aTestName) - { - } - -/* - * - * NewL - * - */ -RTestStepMILIFConfig* RTestStepMILIFConfig::NewL(const TDesC& aTestName) - { - RTestStepMILIFConfig* self = new (ELeave) RTestStepMILIFConfig(aTestName); - return self; - } - -/* - * - * DoKickoffTestL - * - */ -void RTestStepMILIFConfig::DoKickoffTestL() - { - INFO_PRINTF1(_L("RTestStepMILIFConfig: To test configuration of the IL component through MILIF interface.")); - - RTestStepMILIFBase::DoKickoffTestL(); - } - -/* - * - * DoTestBodyL - - * - */ -void RTestStepMILIFConfig::DoTestBody() - { - TInt error = KErrNone; - - INFO_PRINTF1(_L("4. Get Component Input ports through MILIF interface.")); - RPointerArray ifPorts; - error = iDummyComponent->GetComponentInputPorts(ifPorts); - if (error == KErrNone && ifPorts.Count() == 1) - { - iComponentInPortIf = ifPorts[KZerothPort]; - ifPorts.Close(); - } - else - { - if (ifPorts.Count() != 1) - { - error = KErrNotFound; - } - ifPorts.Close(); - ERR_PRINTF2(_L(" ERROR! - Fail to grab input ports: error = %d"), error); - StopTest(error, EFail); - return; - } - - INFO_PRINTF1(_L("5a. Set a (partial) config port parameter through the interface.")); - INFO_PRINTF1(_L(" Using TPortDefinitionType and TILPortDefinition.")); - TPortDefinitionType partialConfig_s; - partialConfig_s.nBufferCountActual = 1; - TILPortDefinition paramStruct_s(partialConfig_s); - error = iDummyComponent->SetConfig(paramStruct_s, iComponentInPortIf); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - Fail to set TILPortDefinition: error = %d"), error); - StopTest(error, EFail); - return; - } - - INFO_PRINTF1(_L("5b. Now Get the TPortDefinitionType config parameter through the interface.")); - TILPortDefinition paramStruct_g; - TPortDefinitionType* partialConfig_g = NULL; - error = iDummyComponent->GetConfig(paramStruct_g, iComponentInPortIf); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - Fail to get TILPortDefinition: error = %d"), error); - StopTest(error, EFail); - return; - } - partialConfig_g = TILPortDefinition::GetStructure(paramStruct_g); - if(partialConfig_g->nBufferCountActual != 1) - { - ERR_PRINTF1(_L(" ERROR! - Unexpected value. The get value does not match the value set.")); - StopTest(KErrCorrupt, EFail); - return; - } - - if ((iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0002"))) - { - INFO_PRINTF1(_L("6a. Configure component through the interface.")); - INFO_PRINTF1(_L(" Using TOMXILStructParam and TILPortDefinition.")); - OMX_PARAM_PORTDEFINITIONTYPE omxconfig_s; - omxconfig_s.nBufferCountActual = 3; - TOMXILStructParam omxParamStruct_s(&omxconfig_s, OMX_IndexParamPortDefinition); - error = iDummyComponent->SetConfig(omxParamStruct_s, iComponentInPortIf); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - Fail to set TOMXILStructParam: error = %d"), error); - StopTest(error, EFail); - return; - } - - INFO_PRINTF1(_L("6b. Now Get the TOMXILStructParam config parameter through the interface.")); - OMX_PARAM_PORTDEFINITIONTYPE omxconfig_g; - TOMXILStructParam omxParamStruct_g(&omxconfig_g, OMX_IndexParamPortDefinition); - error = iDummyComponent->GetConfig(omxParamStruct_g, iComponentInPortIf); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - Fail to get TOMXILStructParam: error = %d"), error); - StopTest(error, EFail); - return; - } - if(omxconfig_g.nBufferCountActual != 3) - { - ERR_PRINTF1(_L(" ERROR! - Unexpected value. The get value does not match the value set.")); - StopTest(KErrCorrupt, EFail); - return; - } - } - - StopTest(KErrNone); - } - - -// -// RTestStepMILIFStates: To test driving the IL component state machine through MILIF. -// - -/* - * - * RTestStepMILIFStates - Test step constructor - * - */ -RTestStepMILIFStates::RTestStepMILIFStates(const TDesC& aTestName) -:RTestStepMILIFBase(aTestName) - { - } - -/* - * - * NewL - * - */ -RTestStepMILIFStates* RTestStepMILIFStates::NewL(const TDesC& aTestName) - { - RTestStepMILIFStates* self = new (ELeave) RTestStepMILIFStates(aTestName); - return self; - } - -/* - * - * DoKickoffTestL - * - */ -void RTestStepMILIFStates::DoKickoffTestL() - { - INFO_PRINTF1(_L("RTestStepMILIFStates: To test driving the IL component state machine through MILIF interface.")); - - RTestStepMILIFBase::DoKickoffTestL(); - } - -/* - * - * DoTestBodyL - - * - */ -void RTestStepMILIFStates::DoTestBody() - { - Fsm(EEventInit, KErrNone); - } - -/* - * - * Fsm - Executes this test events in sequence - * - * - */ -void RTestStepMILIFStates::Fsm(TTestEvents aEvent, TInt aError) - { - TInt error = KErrNone; - - switch (iTestState) - { - case ETestStateStart: - { - if (aEvent == EEventInit) - { - INFO_PRINTF1(_L("4. Trigger transition from Load to Idle in component by calling Initialize()")); - error = iDummyComponent->Initialize(); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - MILComponentIf::Initialize() error = %d"), error); - StopTest(error, EFail); - break; - } - INFO_PRINTF1(_L(" -> Test State: EStatePlayInitializing")); - iTestState = ETestStateInitializing; - } - else - { - ERR_PRINTF2(_L(" ERROR! - ETestStateStart did not received expected event. Received event: %d"), aEvent); - StopTest(aError, EFail); - } - break; - } - - case ETestStateInitializing: - { - if (aEvent == EEventInitComplete) - { - INFO_PRINTF1(_L("5a. Check the component was left in the correct state after EEventInitComplete event")); - TILComponentState aState; - error = iDummyComponent->GetState(aState); - if ((error != KErrNone) || (aState != EComponentIdle)) - { - ERR_PRINTF3(_L(" ERROR! - MILComponentIf::GetState Incorrect state = %d, error = %d."), error, aState); - if (aState != EComponentIdle) - { - error = KErrGeneral; - } - StopTest(error, EFail); - break; - } - - INFO_PRINTF1(_L("5b. Trigger transition from Idle to Execute in component by calling Execute()")); - error = iDummyComponent->Execute(); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - MILComponentIf::Execute() error = %d"), error); - StopTest(error, EFail); - break; - } - INFO_PRINTF1(_L(" -> Test State: EStatePlayInitialized")); - iTestState = ETestStateInitialized; - } - else - { - ERR_PRINTF2(_L(" ERROR! - ETestStateInitializing did not received expected event. Received event: %d"), aEvent); - StopTest(aError, EFail); - } - break; - } - - case ETestStateInitialized: - { - if (aEvent == EEventExecuteComplete) - { - INFO_PRINTF1(_L("6a. Check the component was left in the correct state after EEventExecuteComplete event")); - TILComponentState aState; - error = iDummyComponent->GetState(aState); - if ((error != KErrNone) || (aState != EComponentExecuting)) - { - ERR_PRINTF3(_L(" ERROR! - MILComponentIf::GetState Incorrect state = %d, error = %d."), error, aState); - if (aState != EComponentExecuting) - { - error = KErrGeneral; - } - StopTest(error, EFail); - break; - } - - INFO_PRINTF1(_L("6b. Trigger transition from Executing to Pause in component by calling Pause()")); - error = iDummyComponent->Pause(); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - MILComponentIf::Pause() error = %d"), error); - StopTest(error, EFail); - break; - } - INFO_PRINTF1(_L(" -> Test State: EStatePlayPausing")); - iTestState = ETestStatePausing; - } - else - { - ERR_PRINTF2(_L(" ERROR! - ETestStateInitialized did not received expected event. Received event: %d"), aEvent); - StopTest(aError, EFail); - } - break; - } - - case ETestStatePausing: - { - if (aEvent == EEventPauseComplete) - { - INFO_PRINTF1(_L("7a. Check the component was left in the correct state after EEventPauseComplete event")); - TILComponentState aState; - error = iDummyComponent->GetState(aState); - if ((error != KErrNone) || (aState != EComponentPaused)) - { - ERR_PRINTF3(_L(" ERROR! - MILComponentIf::GetState error = %d, state = %d"), error, aState); - if (aState != EComponentPaused) - { - error = KErrGeneral; - } - StopTest(error, EFail); - break; - } - - INFO_PRINTF1(_L("7b. Trigger transition from Pause to Idle in component by calling Stop()")); - error = iDummyComponent->Stop(); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - MILComponentIf::Stop() error = %d"), error); - StopTest(error, EFail); - break; - } - INFO_PRINTF1(_L(" -> Test State: ETestStateStopping")); - iTestState = ETestStateStopping; - } - else - { - ERR_PRINTF2(_L(" ERROR! - ETestStatePausing did not received expected event. Received event: %d"), aEvent); - StopTest(aError, EFail); - } - break; - } - - case ETestStateStopping: - { - if (aEvent == EEventStopComplete) - { - INFO_PRINTF1(_L("8. Check the component was left in the correct state after EEventStopComplete event")); - TILComponentState aState; - error = iDummyComponent->GetState(aState); - if ((error != KErrNone) || (aState != EComponentIdle)) - { - ERR_PRINTF3(_L(" ERROR! - MILComponentIf::GetState error = %d, state = %d"), error, aState); - if (aState != EComponentIdle) - { - error = KErrGeneral; - } - StopTest(error, EFail); - break; - } - StopTest(KErrNone); - } - else - { - ERR_PRINTF2(_L(" ERROR! - ETestStateStopping did not received expected event. Received event: %d"), aEvent); - StopTest(aError, EFail); - } - break; - } - - default: - { - ERR_PRINTF2(_L(" ERROR! - Invalid state received: %d"), iTestState); - StopTest(KErrGeneral, EFail); - } - } - - } - -/* - * - * MsgFromILComponent - - * - */ -TInt RTestStepMILIFStates::MsgFromILComponent(const MILComponentIf* aComponent, const TILEvent& aEvent) - { - TInt error = KErrNone; - - if (aComponent != iDummyComponent) - { - ERR_PRINTF1(_L(" ERROR! - Invalid callback received")); - StopTest(KErrGeneral, EFail); - return KErrGeneral; - } - - switch (aEvent.iEvent) - { - case EEventCmdComplete: - { - if (aEvent.iData1 == ECommandStateSet) - { - if (aEvent.iData2 == EComponentIdle) - { - INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> EComponentIdle received")); - if (iTestState == ETestStateInitializing) - { - Fsm(EEventInitComplete, KErrNone); - } - else if (iTestState == ETestStateStopping) - { - Fsm(EEventStopComplete, KErrNone); - } - else - { - ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); - error = KErrGeneral; - } - } - else if(aEvent.iData2 == EComponentExecuting) - { - INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> EComponentExecuting received")); - if (iTestState == ETestStateInitialized) - { - Fsm(EEventExecuteComplete, KErrNone); - } - else - { - ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); - error = KErrGeneral; - } - } - else if(aEvent.iData2 == EComponentPaused) - { - INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> EComponentPaused received")); - if (iTestState == ETestStatePausing) - { - Fsm(EEventPauseComplete, KErrNone); - } - else - { - ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); - error = KErrGeneral; - } - } - else - { - ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); - error = KErrGeneral; - } - break; - } - } - default: - { - ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); - error = KErrNotSupported; - } - } - - if (error != KErrNone) - { - StopTest(error, EFail); - } - return error; - } - - -// -// RTestStepMILIFCommands: To test sending commands to the IL component through MILIF. -// - -/* - * - * RTestStepMILIFCommands - Test step constructor - * - */ -RTestStepMILIFCommands::RTestStepMILIFCommands(const TDesC& aTestName) -:RTestStepMILIFBase(aTestName) - { - } - -/* - * - * NewL - * - */ -RTestStepMILIFCommands* RTestStepMILIFCommands::NewL(const TDesC& aTestName) - { - RTestStepMILIFCommands* self = new (ELeave) RTestStepMILIFCommands(aTestName); - return self; - } - -/* - * - * DoKickoffTestL - * - */ -void RTestStepMILIFCommands::DoKickoffTestL() - { - INFO_PRINTF1(_L("RTestStepMILIFCommands: To test sending commands to the IL component through MILIF interface.")); - - RTestStepMILIFBase::DoKickoffTestL(); - } - -/* - * - * DoTestBodyL - - * - */ -void RTestStepMILIFCommands::DoTestBody() - { - Fsm(EEventInit, KErrNone); - } - -/* - * - * Fsm - Executes this test events in sequence - * - */ -void RTestStepMILIFCommands::Fsm(TTestEvents aEvent, TInt aError) - { - TInt error = KErrNone; - - switch (iTestState) - { - case ETestStateStart: - { - if (aEvent == EEventInit) - { - INFO_PRINTF1(_L("4. Trigger FlushAllPorts")); - error = iDummyComponent->FlushAllPorts(); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - MILComponentIf::FlushAllPorts error = %d"), error); - StopTest(error, EFail); - break; - } - INFO_PRINTF1(_L(" -> Test State: ETestStateFlushing")); - iTestState = ETestStateFlushing; - } - else - { - ERR_PRINTF2(_L(" ERROR! - ETestStateFlushing did not received expected event. Received event: %d"), aEvent); - StopTest(aError, EFail); - } - break; - } - - case ETestStateFlushing: - { - if (aEvent == EEventFlushComplete) - { - INFO_PRINTF1(_L(" Flush Command partially completed.")); - INFO_PRINTF1(_L(" -> Test State: ETestStateFirstPortFlushed")); - iTestState = ETestStateFirstPortFlushed; - } - else - { - ERR_PRINTF2(_L(" ERROR! - ETestStateFlushing did not received expected event. Received event: %d"), aEvent); - StopTest(aError, EFail); - } - break; - } - - case ETestStateFirstPortFlushed: - { - if (aEvent == EEventFlushComplete) - { - INFO_PRINTF1(_L(" Flush Command completed.")); - INFO_PRINTF1(_L("5. Trigger SendCommand() with ECommandPortDisable")); - TILCommand aCommand; - aCommand.iCmd = ECommandPortDisable; - aCommand.iData1 = 0; - aCommand.iExtraData = NULL; - error = iDummyComponent->SendCommand(aCommand); - - INFO_PRINTF1(_L(" -> Test State: ETestStateDisablingPort")); - iTestState = ETestStateDisablingPort; - } - else - { - ERR_PRINTF2(_L(" ERROR! - ETestStateFirstPortFlushed did not received expected event. Received event: %d"), aEvent); - StopTest(aError, EFail); - } - break; - } - - case ETestStateDisablingPort: - { - if (aEvent == EEventPortDisableComplete) - { - INFO_PRINTF1(_L(" -> Test State: Port Disabled. Fisnished Test")); - StopTest(KErrNone); - } - else - { - ERR_PRINTF2(_L(" ERROR! - ETestStateInitialized did not received expected event. Received event: %d"), aEvent); - StopTest(aError, EFail); - } - break; - } - - default: - { - ERR_PRINTF2(_L(" ERROR! - Invalid state received: %d"), iTestState); - StopTest(KErrGeneral, EFail); - } - } - } - -/* - * - * MsgFromILComponent - - * - */ -TInt RTestStepMILIFCommands::MsgFromILComponent(const MILComponentIf* aComponent, const TILEvent& aEvent) - { - TInt error = KErrNone; - - if (aComponent != iDummyComponent) - { - ERR_PRINTF1(_L(" ERROR! - Invalid callback received")); - StopTest(KErrGeneral, EFail); - return KErrGeneral; - } - - switch (aEvent.iEvent) - { - case EEventCmdComplete: - { - if (aEvent.iData1 == ECommandFlush) - { - INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> ECommandFlush received")); - Fsm(EEventFlushComplete, KErrNone); - } - else if (aEvent.iData1 == ECommandPortDisable) - { - INFO_PRINTF1(_L(" MsgFromILComponent:EEventCmdComplete -> ECommandPortDisable received")); - Fsm(EEventPortDisableComplete, KErrNone); - } - else - { - ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); - error = KErrGeneral; - } - break; - } - default: - { - ERR_PRINTF1(_L(" ERROR! - Unexpected callback received")); - error = KErrNotSupported; - } - } - - if (error != KErrNone) - { - StopTest(error, EFail); - } - return error; - } - - -// -// RTestStepMILIFExtensions: To test configuration of the IL component with extended params through MILIF. -// - -/* - * - * RTestStepMILIFExtensions - Test step constructor - * - */ -RTestStepMILIFExtensions::RTestStepMILIFExtensions(const TDesC& aTestName) -:RTestStepMILIFBase(aTestName) - { - } - -/* - * - * NewL - * - */ -RTestStepMILIFExtensions* RTestStepMILIFExtensions::NewL(const TDesC& aTestName) - { - RTestStepMILIFExtensions* self = new (ELeave) RTestStepMILIFExtensions(aTestName); - return self; - } - -/* - * - * DoKickoffTestL - * - */ -void RTestStepMILIFExtensions::DoKickoffTestL() - { - INFO_PRINTF1(_L("RTestStepMILIFExtensions: To test configuration of the IL component with extended params through MILIF interface.")); - - RTestStepMILIFBase::DoKickoffTestL(); - } - -/* - * - * DoTestBodyL - - * - */ -void RTestStepMILIFExtensions::DoTestBody() - { - - TInt error = KErrNone; - - INFO_PRINTF1(_L("4. Get Component Input ports through MILIF interface.")); - RPointerArray ifPorts; - error = iDummyComponent->GetComponentInputPorts(ifPorts); - if (error == KErrNone && ifPorts.Count() == 1) - { - iComponentInPortIf = ifPorts[KZerothPort]; - ifPorts.Close(); - } - else - { - if (ifPorts.Count() != 1) - { - error = KErrNotFound; - } - ifPorts.Close(); - StopTest(error, EFail); - return; - } - - INFO_PRINTF1(_L("5a. Set a (partial) config port parameter through the interface's extension mechanism.")); - TPortDefinitionType partialConfig_s; - partialConfig_s.nBufferCountActual = 1; - TILPortDefinition paramStruct_s(partialConfig_s); - error = iDummyComponent->SetExtConfig(KExtensionPortDefinitionName, paramStruct_s, iComponentInPortIf); - if ((iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0005"))) - { - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - Fail to set extension: error = %d"), error); - StopTest(error, EFail); - return; - } - } - else - { - StopTest(KErrGeneral, EFail); - } - - INFO_PRINTF1(_L("5b. Get the parameter set in 5a through the interface's extension mechanism.")); - TILPortDefinition paramStruct_g; - TPortDefinitionType* partialConfig_g = NULL; - error = iDummyComponent->GetExtConfig(KExtensionPortDefinitionName, paramStruct_g, iComponentInPortIf); - if ((iTestStepName == _L("MM-MILIF-DUMMYOMXILIF-U-0005"))) - { - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - Fail to get TILPortDefinition: error = %d"), error); - StopTest(error, EFail); - return; - } - partialConfig_g = TILPortDefinition::GetStructure(paramStruct_g); - if(partialConfig_g->nBufferCountActual != 1) - { - ERR_PRINTF1(_L(" ERROR! - Unexpected value. The get value does not match the value set.")); - StopTest(KErrCorrupt, EFail); - return; - } - } - else - { - StopTest(KErrGeneral, EFail); - return; - } - - StopTest(KErrNone); - } - - -// -// RTestStepMILIFComponentRole: To test access to the IL component role through MILIF. -// - -/* - * - * RTestStepMILIFComponentRole - Test step constructor - * - */ -RTestStepMILIFComponentRole::RTestStepMILIFComponentRole(const TDesC& aTestName) -:RTestStepMILIFBase(aTestName) - { - } - -/* - * - * NewL - * - */ -RTestStepMILIFComponentRole* RTestStepMILIFComponentRole::NewL(const TDesC& aTestName) - { - RTestStepMILIFComponentRole* self = new (ELeave) RTestStepMILIFComponentRole(aTestName); - return self; - } - -/* - * - * DoKickoffTestL - * - */ -void RTestStepMILIFComponentRole::DoKickoffTestL() - { - INFO_PRINTF1(_L("RTestStepMILIFComponentRole: To test access to the IL component role through MILIF interface.")); - - RTestStepMILIFBase::DoKickoffTestL(); - } - -/* - * - * DoTestBodyL - - * - */ -void RTestStepMILIFComponentRole::DoTestBody() - { - TInt error = KErrNone; - TInt index = 0; - - HBufC8* buf = HBufC8::New(KMaxComponentRoleLength); - if (buf == NULL) - { - StopTest(KErrNoMemory, EFail); - } - else - { - TPtr8 componentRole = buf->Des(); - - INFO_PRINTF1(_L("4. Get component role through MILIF interface.")); - error = iDummyComponent->ComponentRoleEnum(componentRole, index); - - INFO_PRINTF1(_L("5. Check the component's role returned is the expected role.")); - if (error != KErrNone) - { - ERR_PRINTF2(_L(" ERROR! - MILComponentIf::ComponentRoleEnum failed. Error returned = %d"), error); - StopTest(error, EFail); - delete buf; - return; - } - else if (buf->Compare(KFakeRole) != 0 ) - { - ERR_PRINTF1(_L(" ERROR! - MILComponentIf::ComponentRoleEnum failed. Unexpected role.")); - StopTest(error, EFail); - delete buf; - return; - } - StopTest(KErrNone); - - delete buf; - } - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/src/tsu_milif_omxiliftests.h --- a/omxil/mmilapi/unittest/src/tsu_milif_omxiliftests.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,189 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// Declarations of Unit test step classes for MILIF testing. -// -// - -#ifndef TSI_MILIF_OMXILIFTESTS_H -#define TSI_MILIF_OMXILIFTESTS_H - -#include -#include - -#include "milcomponentportif.h" -#include "milifobserver.h" - -enum TTestEvents - { - EEventInit = 0, - EEventInitComplete, - EEventExecuteComplete, - EEventPauseComplete, - EEventStopComplete, - EEventFlushComplete, - EEventPortDisableComplete - }; - -enum TTestState - { - ETestStateStart = 0, - ETestStateInitializing, - ETestStateInitialized, - ETestStatePausing, - ETestStateStopping, - ETestStateFlushing, - ETestStateFirstPortFlushed, - ETestStateDisablingPort - }; - - -/* - * - * RTestStepMILIFBase - * - */ -class RTestStepMILIFBase : public RAsyncTestStep, - public MILIfObserver - { -public: - // From RAsyncTestStep - virtual void KickoffTestL(); - virtual void CloseTest(); - - // from MILIfObserver - virtual TInt MsgFromILComponent(const MILComponentIf* aComponent, const TILEvent& aEvent); - virtual TInt BufferDelivered(const MILComponentPortIf* aPort, const CMMFBuffer* aBuffer); - -protected: - RTestStepMILIFBase(const TDesC& aTestName); - - virtual void DoTestBody(); - virtual void DoKickoffTestL(); - -protected: - MILComponentIf* iDummyComponent; - MILComponentPortIf* iComponentInPortIf; // Not owned - MILComponentPortIf* iComponentOutPortIf;// Not owned - TTestState iTestState; - }; - -/* - * - * RTestStepMILIFPorts - * - */ -class RTestStepMILIFPorts : public RTestStepMILIFBase - { -public: - static RTestStepMILIFPorts* NewL(const TDesC& aTestName); - -private: - RTestStepMILIFPorts(const TDesC& aTestName); - - virtual void DoKickoffTestL(); - virtual void DoTestBody(); - }; - -/* - * - * RTestStepMILIFConfig - * - */ -class RTestStepMILIFConfig : public RTestStepMILIFBase - { -public: - static RTestStepMILIFConfig* NewL(const TDesC& aTestName); - -private: - RTestStepMILIFConfig(const TDesC& aTestName); - - virtual void DoTestBody(); - virtual void DoKickoffTestL(); - }; - -/* - * - * RTestStepMILIFStates - * - */ -class RTestStepMILIFStates : public RTestStepMILIFBase - { -public: - static RTestStepMILIFStates* NewL(const TDesC& aTestName); - -private: - RTestStepMILIFStates(const TDesC& aTestName); - - virtual void DoKickoffTestL(); - virtual void DoTestBody(); - - virtual TInt MsgFromILComponent(const MILComponentIf* aComponent, const TILEvent& aEvent); - virtual void Fsm(TTestEvents aEvent, TInt aError); - }; - -/* - * - * RTestStepMILIFCommands - * - */ -class RTestStepMILIFCommands : public RTestStepMILIFBase - { -public: - static RTestStepMILIFCommands* NewL(const TDesC& aTestName); - -private: - RTestStepMILIFCommands(const TDesC& aTestName); - - virtual void DoKickoffTestL(); - virtual void DoTestBody(); - - virtual TInt MsgFromILComponent(const MILComponentIf* aComponent, const TILEvent& aEvent); - virtual void Fsm(TTestEvents aEvent, TInt aError); - }; - -/* - * - * RTestStepMILIFExtensions - * - */ -class RTestStepMILIFExtensions : public RTestStepMILIFBase - { -public: - static RTestStepMILIFExtensions* NewL(const TDesC& aTestName); - -private: - RTestStepMILIFExtensions(const TDesC& aTestName); - - virtual void DoKickoffTestL(); - virtual void DoTestBody(); - }; - -/* - * - * RTestStepMILIFComponentRole - * - */ -class RTestStepMILIFComponentRole : public RTestStepMILIFBase - { -public: - static RTestStepMILIFComponentRole* NewL(const TDesC& aTestName); - -private: - RTestStepMILIFComponentRole(const TDesC& aTestName); - - virtual void DoKickoffTestL(); - virtual void DoTestBody(); - }; - -#endif // TSI_MILIF_OMXILIFTESTS_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/src/tsu_milif_testsuite.cpp --- a/omxil/mmilapi/unittest/src/tsu_milif_testsuite.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// This file contains the test suite class implementation for MILIF unit tests. -// -// - -#include "tsu_milif_testsuite.h" -#include "tsu_milif_omxiliftests.h" - -// Entry function - create a test suite object -EXPORT_C CTestSuiteMILIF* CTestSuiteMILIF::NewTestSuiteL() - { - CTestSuiteMILIF* result = new (ELeave) CTestSuiteMILIF(); - CleanupStack::PushL(result); - result->ConstructL(); - CleanupStack::Pop(result); - return result; - } - -/* - * - * CTestSuiteMILIF - Constructor - * - */ -CTestSuiteMILIF::CTestSuiteMILIF() - { - iSuiteName = _L("TSU_MILIF_OMXILIF"); - } - -/* - * - * ~CTestSuiteMILIF - Destructor - * - */ -CTestSuiteMILIF::~CTestSuiteMILIF() - { - } - -/* - * GetVersion - Get test suite version - * - */ -TPtrC CTestSuiteMILIF::GetVersion() const - { - _LIT(KTxtVersion, "1.0"); - return KTxtVersion(); - } - -/* - * - * InitialiseL - Creates all the test steps and stores them inside CTestSuiteMILIF - * - */ -void CTestSuiteMILIF::InitialiseL() - { - AddTestStepL(RTestStepMILIFPorts::NewL(_L("MM-MILIF-DUMMYOMXILIF-U-0001"))); - AddTestStepL(RTestStepMILIFConfig::NewL(_L("MM-MILIF-DUMMYOMXILIF-U-0002"))); - AddTestStepL(RTestStepMILIFStates::NewL(_L("MM-MILIF-DUMMYOMXILIF-U-0003"))); - AddTestStepL(RTestStepMILIFCommands::NewL(_L("MM-MILIF-DUMMYOMXILIF-U-0004"))); - AddTestStepL(RTestStepMILIFExtensions::NewL(_L("MM-MILIF-DUMMYOMXILIF-U-0005"))); - AddTestStepL(RTestStepMILIFComponentRole::NewL(_L("MM-MILIF-DUMMYOMXILIF-U-0006"))); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/src/tsu_milif_testsuite.h --- a/omxil/mmilapi/unittest/src/tsu_milif_testsuite.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// This file contains the test suite class declaration for MILIF unit tests. -// -// - -#ifndef TSU_MILIF_TESTSUITE_H -#define TSU_MILIF_TESTSUITE_H - -#include -#include - -/* - * - * CTestSuiteMILIF - * - Test suite class - * - */ -class CTestSuiteMILIF : public CTestSuite - { -public: - virtual ~CTestSuiteMILIF(); - - // From CTestSuite - void InitialiseL(); - TPtrC GetVersion() const; - - IMPORT_C static CTestSuiteMILIF* NewTestSuiteL(); - -private: - CTestSuiteMILIF(); - }; - -#endif // TSU_MILIF_TESTSUITE_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/audioilhwdevice_mvs_test/omxilvorbdechwdevice/omxilvorbdechwdevice.cpp --- a/omxil/mmilapi/unittest/test_plugins/audioilhwdevice_mvs_test/omxilvorbdechwdevice/omxilvorbdechwdevice.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,677 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// vorbisdecilhwdevice.cpp -// -// - -#include "omxilvorbdechwdevice.h" - -#include -#include -#include -#include - -#include "tilstructtypes.h" -#include "ilcomponentif.h" -#include "iltestuids.hrh" - - - -_LIT8(KNULLName,""); -_LIT8(KVorbisDecoderILComponentName,"OMX.SYMBIAN.AUDIO.DECODER.VORBIS"); - -const TInt KZerothPort = 0; -const TInt KInputPortIndex = 0; -const TInt KMaxNumberPort = 1; - -// _________________________________________________________________________________ -// Map the interface implementation KUidAudioDecILHwDevice UID to the implementation - -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(KUidOmxILVorbDecHwDevice , COmxILVorbDecHwDevice::NewL) - }; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - - return ImplementationTable; - } -// _________________________________________________________________________________ - - -/* -The destructor. Releases the components and frees any owned buffers. -@see CMMFHwDevice::~CMMFHwDevice() -*/ -COmxILVorbDecHwDevice::~COmxILVorbDecHwDevice() - { - Stop(); - - if (iCodecIf) - { - iCodecIf->ReleaseComponent(); - iCodecIf = NULL; - } - if (iRendererIf) - { - iRendererIf->ReleaseComponent(); - iRendererIf = NULL; - } - - iCodecInPortIf = NULL; - iCodecOutPortIf = NULL; - iRendererInPortIf = NULL; - - delete iInBuffer; - iInBuffer = NULL; - delete iOutBuffer; - iOutBuffer = NULL; - - delete iActiveWait; - - OMX_Deinit(); - } - -/** -Creates a new COmxILVorbDecHwDevice object. -The COmxILVorbDecHwDevice state is set to EILHwDeviceLoaderLoaded. -@see TILHwDevState -*/ -COmxILVorbDecHwDevice* COmxILVorbDecHwDevice::NewL() - { - COmxILVorbDecHwDevice* self = new (ELeave) COmxILVorbDecHwDevice; - CleanupStack::PushL (self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -/* -Default constructor. -*/ -COmxILVorbDecHwDevice::COmxILVorbDecHwDevice() - { - } - -/* -Second phase constructor -*/ -void COmxILVorbDecHwDevice::ConstructL() - { - iActiveWait = new (ELeave) CActiveSchedulerWait; - iState = EILHwDeviceCreated; - OMX_Init(); - - iCodecIf = CILComponentIf::CreateImplementationL(TUid::Uid(KUidOmxILDummyAudioDecMILIFPlugin)); - iCodecIf->CreateComponentL(KVorbisDecoderILComponentName, *this); - User::LeaveIfError(iCodecIf->SetComponentIfRole(KUidFormatOGG)); - - iRendererIf = CILComponentIf::CreateImplementationL(TUid::Uid(KUidDummyPcmRendererMILIFPlugin)); - iRendererIf->CreateComponentL(KNULLName, *this); // - - } - -/* -@see CMMFHwDevice::Start() -@see TDeviceFunc -*/ -TInt COmxILVorbDecHwDevice::Start(TDeviceFunc aFuncCmd, TDeviceFlow /*aFlowCmd*/) - { - if (!((aFuncCmd == EDevDecode)|(aFuncCmd == EDevNullFunc))) - { - return KErrArgument; - } - - TInt err = KErrNone; - switch(aFuncCmd) - { - case EDevDecode: - { - err = StartDecode(); - break; - } - default: - { - err = KErrNotSupported; - } - } - - return err; - } - - -/* -Starts the execution of the decode operation, and sets the state -of the COmxILVorbDecHwDevice to EILHwDeviceExecuting. -@return An error code indicating if the function call was successful. -KErrNone on success, otherwise another of the system-wide error codes. -*/ -TInt COmxILVorbDecHwDevice::StartExecuting() - { - TInt err = KErrNone; - iCodecOutPortIf->FillThisBuffer(*iOutBuffer); - err = iHwDeviceObserver->FillThisHwBuffer(*iInBuffer); - if(err != KErrNone) - { - return err; - } - - iState = EILHwDeviceExecuting; - - iCodecIf->Execute(); - iRendererIf->Execute(); - - return err; - } - -/* -Initialises the decode operation, and set the state of the COmxILVorbDecHwDevice -to EILHwDeviceInitializing. -@return An error code indicating if the function call was successful. -KErrNone on success, otherwise another of the system-wide error codes. -*/ -TInt COmxILVorbDecHwDevice::InitializeDecode() - { - ASSERT(iCodecOutPortIf && iRendererInPortIf); - - //GetConfig from codec input port; - TILPortDefinition paramStruct; - TPortDefinitionType* config = NULL; - TInt err =iCodecIf->GetConfig(paramStruct, iCodecInPortIf); - if (err != KErrNone) - { - return err; - } - config = TILPortDefinition::GetStructure(paramStruct); - TRAP(err, iInBuffer = CMMFDescriptorBuffer::NewL(config->nBufferSize)); - if(err != KErrNone) - { - return err; - } - iCodecInPortIf->UseBuffer(*iInBuffer); - - //GetConfig from codec output port; - err =iCodecIf->GetConfig(paramStruct, iCodecOutPortIf); - if (err != KErrNone) - { - return err; - } - config = TILPortDefinition::GetStructure(paramStruct); - TRAP(err, iOutBuffer = CMMFDescriptorBuffer::NewL(config->nBufferSize)); - if(err != KErrNone) - { - return err; - } - iCodecOutPortIf->UseBuffer(*iOutBuffer); - - iState = EILHwDeviceInitializing; - - iCodecIf->Initialize(); - iRendererIf->Initialize(); - - iActiveWait->Start(); - return KErrNone; - } - -/* -Starts the decode operation, providing that the intial state of the -COmxILVorbDecHwDevice is EILHwDeviceLoaded. -@return An error code indicating if the function call was successful. -KErrNone on success, otherwise another of the system-wide error codes. -*/ -TInt COmxILVorbDecHwDevice::StartDecode() - { - TInt err = KErrNone; - if (iState == EILHwDeviceLoaded) - { - err = InitializeDecode(); - } - if (err != KErrNone) - { - return err; - } - if (iState == EILHwDeviceIdle) - { - // Ensure that the LastBuffer flags are reset. - iInBuffer->SetLastBuffer(EFalse); - iOutBuffer->SetLastBuffer(EFalse); - } - return StartExecuting(); - } - -/* -@see CMMFHwDevice::Stop() -*/ -TInt COmxILVorbDecHwDevice::Stop() - { - if(iState == EILHwDeviceExecuting || iState == EILHwDevicePaused) - { - iStopping = ETrue; - - // reset the flags - iCodecCallbackComplete = EFalse; - iRendererCallbackComplete = EFalse; - - if(iRendererIf) - { - iRendererIf->Stop(); - } - if(iCodecIf) - { - iCodecIf->Stop(); - } - - iState = EILHwDeviceIdle; - } - return KErrNone; - } - -/* -@see CMMFHwDevice::Pause() -*/ -TInt COmxILVorbDecHwDevice::Pause() - { - TInt err = KErrNone; - if(iState != EILHwDevicePaused) - { - if(iRendererIf) - { - err = iRendererIf->Pause(); - } - iState = EILHwDevicePaused; - } - return err; - } - -/* -@see CMMFHwDevice::Init() -*/ -TInt COmxILVorbDecHwDevice::Init(THwDeviceInitParams& aDevInfo) - { - RPointerArray ifPorts; - - if(!aDevInfo.iHwDeviceObserver) - { - return KErrArgument; - } - iHwDeviceObserver = aDevInfo.iHwDeviceObserver; - - if(!iCodecIf) - { - return KErrNotSupported; - } - - // Get decoder input port. For this particular scenario expects one single port. - TInt err = iCodecIf->GetComponentInputPorts(ifPorts); - if (err == KErrNone && ifPorts.Count() == KMaxNumberPort) - { - iCodecInPortIf = ifPorts[KZerothPort]; - ifPorts.Close(); - } - else - { - if (!ifPorts.Count() != KMaxNumberPort) - { - err = KErrNotFound; - } - ifPorts.Close(); - return err; - } - - // Get decoder ouput port. For this particular scenario expects one single port. - err = iCodecIf->GetComponentOutputPorts(ifPorts); - if (err == KErrNone && ifPorts.Count() == KMaxNumberPort) - { - iCodecOutPortIf = ifPorts[KZerothPort]; - ifPorts.Close(); - } - else - { - if (!ifPorts.Count() != KMaxNumberPort) - { - err = KErrNotFound; - } - ifPorts.Close(); - return err; - } - - if(!iRendererIf) - { - return KErrNotSupported; - } - - // Get renderer inport port. For this particular scenario expects one single port. - err = iRendererIf->GetComponentInputPorts(ifPorts); - if (err == KErrNone && ifPorts.Count() == KMaxNumberPort) - { - iRendererInPortIf = ifPorts[KZerothPort]; - ifPorts.Close(); - } - else - { - if (!ifPorts.Count() != KMaxNumberPort) - { - err = KErrNotFound; - } - ifPorts.Close(); - return err; - } - - iState = EILHwDeviceLoaded; - return KErrNone; - } - -/* -@see CMMFHwDevice::CustomInterface() -*/ -TAny* COmxILVorbDecHwDevice::CustomInterface(TUid aInterfaceId) - { - if (aInterfaceId.iUid == KMmfPlaySettingsCustomInterface) - { - return iRendererIf->CustomInterface(aInterfaceId); - } - else - { - return NULL; - } - } - -/* -@see CMMFHwDevice::ThisHwBufferFilled() -*/ -TInt COmxILVorbDecHwDevice::ThisHwBufferFilled(CMMFBuffer& aFillBufferPtr) - { - aFillBufferPtr.SetStatus(EFull); - iCodecInPortIf->EmptyThisBuffer(aFillBufferPtr); - return KErrNone; - } - -/* -@see CMMFHwDevice::ThisHwBufferEmptied() -*/ -TInt COmxILVorbDecHwDevice::ThisHwBufferEmptied(CMMFBuffer& /*aEmptyBufferPtr*/) - { - // Not used while decoding - return KErrNotSupported; - } - -/* -@see CMMFHwDevice::SetConfig() -*/ -TInt COmxILVorbDecHwDevice::SetConfig(TTaskConfig& aConfig) - { - TInt err = KErrNone; - - // Configure the Codec component - TILTaskConfig configStruct(aConfig); - err = iCodecIf->SetConfig(configStruct, iCodecInPortIf); - if(err != KErrNone) - { - return err; - } - err = iCodecIf->SetConfig(configStruct, iCodecOutPortIf); - if(err != KErrNone) - { - return err; - } - err = iRendererIf->SetConfig(configStruct, iCodecInPortIf); - if(err != KErrNone) - { - return err; - } - - return KErrNone; - } - -/* -@see CMMFHwDevice::StopAndDeleteCodec() -*/ -TInt COmxILVorbDecHwDevice::StopAndDeleteCodec() - { - TInt stopError = Stop(); - TInt deleteError = DeleteCodec(); - - if (stopError != KErrNone) - { - return stopError; - } - else - { - return deleteError; - } - } - -/* -Unloads all components, and deletes any locally owned buffers. -State is set to EILHwDeviceLoaderLoaded. - -@see CMMFHwDevice::DeleteCodec() -*/ -TInt COmxILVorbDecHwDevice::DeleteCodec() - { - Stop(); - if (iCodecIf) - { - iCodecIf->ReleaseComponent(); - iCodecIf = NULL; - } - if (iRendererIf) - { - iRendererIf->ReleaseComponent(); - iRendererIf = NULL; - } - - iCodecInPortIf = NULL; - iCodecOutPortIf = NULL; - iRendererInPortIf = NULL; - - delete iInBuffer; - iInBuffer = NULL; - delete iOutBuffer; - iOutBuffer = NULL; - - iState = EILHwDeviceCreated; - - return KErrNone; - } - -/* -Called to indicate that the Hardware Device has been stopped, leading -to callbacks to the observer. -@see MMMFHwDeviceObserver::Stopped() -@see MMMFHwDeviceObserver::Error() -*/ -void COmxILVorbDecHwDevice::StopHwDevice(TInt error) - { - iHwDeviceObserver->Stopped(); - iHwDeviceObserver->Error(error); - } - -/* -Called to process messages from the IL components -*/ -TInt COmxILVorbDecHwDevice::MsgFromILComponent(const MILComponentIf* aComponent, const TILEvent& aEvent) - { - TInt err = KErrNone; - switch (aEvent.iEvent) - { - case EEventCmdComplete: - { - if (aEvent.iData1 == ECommandStateSet) - { - if (aEvent.iData2 == EComponentIdle) - { - if (iState == EILHwDeviceInitializing) - { - InitializeComplete(aComponent, KErrNone); - } - else - { - ExecuteComplete(aComponent, KErrNone); - } - } - else if(aEvent.iData2 == EComponentExecuting) - { - ExecuteComplete(aComponent, KErrNone); - } - else - { - StopHwDevice(KErrNotSupported); - } - break; - } - else if (aEvent.iData1 == ECommandFlush) - { - //Command Flush completed - err = KErrNotSupported; // check what a3f should do here if anything - break; - } - } - case EEventBufferFlag: - { - if (aEvent.iData1 == KInputPortIndex) - { - if (iState == EILHwDeviceExecuting) - { - StopHwDevice(aEvent.iData2); - iState = EILHwDeviceIdle; - } - } - else - { - err = KErrNotSupported; - } - break; - } - default: - { - err = KErrNotSupported; - StopHwDevice(err); - } - } - return err; - } - -/* -Called to indicate that the buffer has been delivered. -*/ -TInt COmxILVorbDecHwDevice::BufferDelivered(const MILComponentPortIf* aPort, const CMMFBuffer* aBuffer) - { - TInt err = KErrNone; - - if(aPort == iCodecInPortIf) - { - if (!aBuffer->LastBuffer()) - { - // if the device is idle (having been Stopped) then - // FillThisHwBuffer will cause a kern-exec, - // as the DevSoundSession no longer has a buffer - if(iState == EILHwDeviceExecuting) - { - err = iHwDeviceObserver->FillThisHwBuffer(const_cast(*aBuffer)); - if(err != KErrNone) - { - StopHwDevice(err); - } - } - } - } - else if (aPort == iRendererInPortIf) - { - if (!aBuffer->LastBuffer()) - { - err = iCodecOutPortIf->FillThisBuffer(*iOutBuffer); - } - } - else if(aPort == iCodecOutPortIf) - { - err = iRendererInPortIf->EmptyThisBuffer(*aBuffer); - } - else - { - err = KErrNotSupported; - } - return err; - } - -void COmxILVorbDecHwDevice::InitializeComplete(const MILComponentIf* aComponent, TInt aErrorCode) - { - if(aErrorCode != KErrNone) - { - // stop waiting on the active scheduler if we were doing so - if (iState == EILHwDeviceInitializing) - { - // change state back to loaded - iState = EILHwDeviceLoaded; - iActiveWait->AsyncStop(); - } - return; - } - - if(aComponent == iCodecIf) - { - iCodecCallbackComplete = ETrue; - } - else if(aComponent == iRendererIf) - { - iRendererCallbackComplete = ETrue; - } - - if(iCodecCallbackComplete && iRendererCallbackComplete) - { - // reset the flags - iCodecCallbackComplete = EFalse; - iRendererCallbackComplete = EFalse; - - // Both components initialised OK - if (iState == EILHwDeviceInitializing) - { - iActiveWait->AsyncStop(); - } - iState = EILHwDeviceIdle; - } - } - -void COmxILVorbDecHwDevice::ExecuteComplete(const MILComponentIf* aComponent, TInt aErrorCode) - { - - if(aComponent == iCodecIf) - { - iCodecCallbackComplete = ETrue; - } - else if(aComponent == iRendererIf) - { - iRendererCallbackComplete = ETrue; - } - - if (iCodecCallbackComplete && iRendererCallbackComplete) - { - if (iStopping) - { - StopHwDevice(aErrorCode); - iState = EILHwDeviceIdle; - iStopping = EFalse; - } - else if((aErrorCode != KErrNone ) && (iState == EILHwDeviceExecuting)) - { - // stop the hardware device if we are still executing - StopHwDevice(aErrorCode); - - iCodecCallbackComplete = EFalse; - iRendererCallbackComplete = EFalse; - } - } - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/audioilhwdevice_mvs_test/omxilvorbdechwdevice/omxilvorbdechwdevice.h --- a/omxil/mmilapi/unittest/test_plugins/audioilhwdevice_mvs_test/omxilvorbdechwdevice/omxilvorbdechwdevice.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#ifndef OMXILVORBDECHWDEVICE_H -#define OMXILVORBDECHWDEVICE_H - -#include -#include -#include - -#include "milcomponentportif.h" -#include "milifobserver.h" - -class CMMFBuffer; - -/** -Audio Decoder IL Hardware Device class that uses IL Components in order to decode audio data. -@see CMMFHwDevice -@see MMdfHwDeviceSetup -@see MILIfObserver -*/ -class COmxILVorbDecHwDevice : public CMMFHwDevice, - public MILIfObserver - { -public: - /* - The current state of the IL Hardware Device. - */ - enum TILHwDevState - { - /* - The HwDevice has just been created. - */ - EILHwDeviceCreated, - /* - The components have been loaded. - */ - EILHwDeviceLoaded, - /* - The components are currently being initialised. - */ - EILHwDeviceInitializing, - /* - The components are currently in the idle state. - */ - EILHwDeviceIdle, - /* - The components are currently in the executing state. - */ - EILHwDeviceExecuting, - /* - The components are currently in the paused state. - */ - EILHwDevicePaused - }; - -public: - static COmxILVorbDecHwDevice* NewL(); - - // from CMMFHwDevice - TInt Start(TDeviceFunc aFuncCmd, TDeviceFlow aFlowCmd); - TInt Stop(); - TInt Pause(); - TInt Init(THwDeviceInitParams& aDevInfo); - TAny* CustomInterface(TUid aInterfaceId); - TInt ThisHwBufferFilled(CMMFBuffer& aFillBufferPtr); - TInt ThisHwBufferEmptied(CMMFBuffer& aEmptyBufferPtr); - TInt SetConfig(TTaskConfig& aConfig); - TInt StopAndDeleteCodec(); - TInt DeleteCodec(); - ~COmxILVorbDecHwDevice(); - - // from MILIfObserver - TInt MsgFromILComponent(const MILComponentIf* aComponent,const TILEvent& aEvent); - TInt BufferDelivered(const MILComponentPortIf* aPort, const CMMFBuffer* aBuffer); - - -private: - COmxILVorbDecHwDevice(); - void ConstructL(); - TInt CreateBuffers(); - TInt StartDecode(); - TInt InitializeDecode(); - TInt StartExecuting(); - void StopHwDevice(TInt error); - - void InitializeComplete(const MILComponentIf* aComponent, TInt aErrorCode); - void ExecuteComplete(const MILComponentIf* aComponent, TInt aErrorCode); - -private: - MILComponentIf* iCodecIf; - MILComponentIf* iRendererIf; - MILComponentPortIf* iCodecInPortIf; - MILComponentPortIf* iCodecOutPortIf; - MILComponentPortIf* iRendererInPortIf; - CMMFBuffer* iInBuffer; - CMMFBuffer* iOutBuffer; - TBool iCodecCallbackComplete; - TBool iRendererCallbackComplete; - - TILHwDevState iState; - TBool iStopping; - - CActiveSchedulerWait* iActiveWait; - }; - -#endif // OMXILVORBDECHWDEVICE_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/audioilhwdevice_mvs_test/omxilvorbdechwdevice/omxilvorbdechwdevice.rss --- a/omxil/mmilapi/unittest/test_plugins/audioilhwdevice_mvs_test/omxilvorbdechwdevice/omxilvorbdechwdevice.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include // for Mmf Plugin Interface HwDevice UID -#include "iltestuids.hrh" - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidOmxILVorbDecHwDeviceDll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KMmfUidPluginInterfaceHwDevice; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidOmxILVorbDecHwDevice; - version_no = 1; - display_name = "OMX IL Vorbis Decoder Hw Device"; - default_data = "VRBT, P16" ; // four CC code is a dummy VRBT = Vorb Test - opaque_data = ""; - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/dummypcmrenderer/dummypcmrenderer.cpp --- a/omxil/mmilapi/unittest/test_plugins/dummypcmrenderer/dummypcmrenderer.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,532 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "dummypcmrenderer.h" -#include "iltestuids.hrh" -#include "tilstructtypes.h" -#include -#include - - -#define KDummyPCM16FormatUid 0x10111126 //dummy - -const TInt KBufferSize = 16384; // we need 16k to hold a pcm packet - -const TInt KDefaultSampleRate = 8000; -const TInt KDefaultNumberChannels = 1; - -const TInt KInputPortIndex = 0; - - -// ------------------------------------------------------------------------------------------ -// CDummyPcmRenderer::CInputPort Implementation - -CDummyPcmRenderer::CInputPort::CInputPort(CDummyPcmRenderer& aParent) - : CActive(EPriorityNormal), - iParent(aParent), - iSampleRate(KDefaultSampleRate), - iChannels(KDefaultNumberChannels), - iBufferSize(KBufferSize) - { - CActiveScheduler::Add(this); - } - -CDummyPcmRenderer::CInputPort::~CInputPort() - { - Cancel(); - iBuffers.Close(); - } - -CDummyPcmRenderer::CInputPort* CDummyPcmRenderer::CInputPort::NewL(CDummyPcmRenderer& aParent) - { - CInputPort* self = new (ELeave) CInputPort(aParent); - return self; - } - -TInt CDummyPcmRenderer::CInputPort::FillThisBuffer(CMMFBuffer& /*aInputBuffer*/) - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::CInputPort::EmptyThisBuffer(const CMMFBuffer& aInputBuffer) - { - TInt err = iBuffers.Append(&aInputBuffer); - if (err == KErrNone) - { - TILComponentState state; - if (iParent.GetState(state) != KErrNone) - { - return EComponentInvalid; - } - if (state == EComponentExecuting && !IsActive()) - { - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - } - } - return err; - } - -TInt CDummyPcmRenderer::CInputPort::TunnelRequest(MILComponentPortIf* aPort) - { - TILComponentState state; - if (iParent.GetState(state) != KErrNone) - { - return EComponentInvalid; - } - if (( state != EComponentLoaded) && (!iStopped)) - { - return EComponentInvalid; - } - - if (iPortConnectedTo) - { - // the port is already connected, return an error - return EPortAlreadyTunnelled; - } - iPortConnectedTo = const_cast(aPort); - return KErrNone; - } - -TInt CDummyPcmRenderer::CInputPort::DisconnectTunnel(MILComponentPortIf* /*aPort*/) - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::CInputPort::PortIndex() const - { - return KInputPortIndex; - } - -TPortDirection CDummyPcmRenderer::CInputPort::PortDirection() const - { - return EDirInput; - } - - -CMMFBuffer* CDummyPcmRenderer::CInputPort::CreateBufferL(TInt /*aBufferSize*/) - { - User::Leave(KErrNotSupported); - return NULL; - } - -TInt CDummyPcmRenderer::CInputPort::UseBuffer(CMMFBuffer& /*aBuffer*/) - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::CInputPort::FreeBuffer(CMMFBuffer* /*aBuffer*/) - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::CInputPort::FlushPort() - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::CInputPort::EnablePort() - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::CInputPort::DisablePort() - { - return KErrNotSupported; - } - -MILComponentIf* CDummyPcmRenderer::CInputPort::PortComponent() const - { - return &iParent; - } - -void CDummyPcmRenderer::CInputPort::SetVolume(TUint aVolume) - { - iVolume = aVolume; - } - -TUint CDummyPcmRenderer::CInputPort::Volume() - { - return iVolume; - } - -TUint CDummyPcmRenderer::CInputPort::BytesPlayed() - { - return iBytesPlayed; - } - -void CDummyPcmRenderer::CInputPort::SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration) - { - iRampDuration = aRampDuration; - } - -TTimeIntervalMicroSeconds& CDummyPcmRenderer::CInputPort::VolumeRamp() - { - return iRampDuration; - } - -TInt CDummyPcmRenderer::CInputPort::SampleRate() - { - return iSampleRate; - } - -TInt CDummyPcmRenderer::CInputPort::Channels() - { - return iChannels; - } - -TUint32 CDummyPcmRenderer::CInputPort::BufferSize() const - { - return iBufferSize; - } - -void CDummyPcmRenderer::CInputPort::Execute() - { - if (!IsActive() && iBuffers.Count()>0) - { - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - } - } - -void CDummyPcmRenderer::CInputPort::Pause() - { - if (iParent.SoundDevice().Handle()) - { - iParent.SoundDevice().PausePlayBuffer(); - } - } - -void CDummyPcmRenderer::CInputPort::Stop() - { - Cancel(); - } - -void CDummyPcmRenderer::CInputPort::RunL() - { - - if (iCurrentBuffer != NULL) - { - // If we've been signalled with a buffer, callback that we've completed the writing of the - // buffer - if (iParent.Observer()) - { - iParent.Observer()->BufferDelivered(this, iCurrentBuffer); - if (iCurrentBuffer->LastBuffer()) - { - TILEvent thisEvent; - thisEvent.iEvent = EEventBufferFlag; - thisEvent.iData1 = PortIndex(); - thisEvent.iData2 = static_cast(KErrUnderflow); - iParent.Observer()->MsgFromILComponent(&iParent, thisEvent); - iParent.SoundDevice().Close(); - } - } - iCurrentBuffer = NULL; - } - - // only process the next buffer if there is no error - // error callbacks were handled in the previous block - if (iStatus == KErrNone) - { - if (iBuffers.Count()>0) - { - iCurrentBuffer = iBuffers[0]; - iBuffers.Remove(0); - - if (CMMFBuffer::IsSupportedDataBuffer(iCurrentBuffer->Type())) - { - TDes8& aBufferDes = (static_cast(iCurrentBuffer))->Data(); - iStatus = KRequestPending; - iParent.SoundDevice().PlayData(iStatus, aBufferDes); - SetActive(); - } - } - } - else - { - // In the real implementation here should be sending an error event back to the client - } - } - -void CDummyPcmRenderer::CInputPort::DoCancel() - { - if (iParent.SoundDevice().Handle()) - { - iParent.SoundDevice().CancelPlayData(); - iParent.SoundDevice().FlushPlayBuffer(); - } - } - -// ------------------------------------------------------------------------------------------ -// CDummyPcmRenderer Implementation - -CDummyPcmRenderer::CDummyPcmRenderer() - { - } - -CDummyPcmRenderer::~CDummyPcmRenderer() - { - delete iInputPort; - iSoundDevice.Close(); - } - -CDummyPcmRenderer* CDummyPcmRenderer::NewL() - { - CDummyPcmRenderer* self = new (ELeave) CDummyPcmRenderer; - return self; - } - -void CDummyPcmRenderer::CreateComponentL(const TDesC8& /*aComponentName*/, MILIfObserver& aComponentIfObserver) - { - iObserver = &aComponentIfObserver; - iInputPort = CInputPort::NewL(*this); - iState = EComponentLoaded; - } - -void CDummyPcmRenderer::CreateComponentL(const TUid& /*aUid*/, MILIfObserver& /*aComponentIfObserver*/) - { - User::LeaveIfError(KErrNotSupported); - }; - -void CDummyPcmRenderer::ReleaseComponent() - { - delete this; - } - -TInt CDummyPcmRenderer::GetComponentInputPorts(RPointerArray& aComponentPorts) const - { - return aComponentPorts.Append(iInputPort); - } - -TInt CDummyPcmRenderer::GetComponentOutputPorts(RPointerArray& /*aComponentPorts*/) const - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::SetConfig(const TILStruct& aConfig, const MILComponentPortIf* /*aComponentPort*/) - { - if (aConfig.Uid() == TUid::Uid(KUidMMFTTaskConfig)) - { - const TTaskConfig* config = TILTaskConfig::GetStructure(aConfig); - ASSERT(config); - iInputPort->iSampleRate = config->iRate; - iInputPort->iChannels = (config->iStereoMode & ETaskMono)? 1 : 2; - iInputPort->iInterleaved = (config->iStereoMode & ETaskInterleaved)?ETrue : EFalse; - return KErrNone; - } - - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::GetConfig(TILStruct& /*aConfig*/, const MILComponentPortIf* /*aComponentPort*/) const - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::Initialize() - { - ASSERT(iObserver); - - TILEvent thisEvent; - thisEvent.iEvent = EEventCmdComplete; - thisEvent.iData1 = ECommandStateSet; - thisEvent.iData2 = EComponentIdle; - iObserver->MsgFromILComponent(this, thisEvent); - - iState = EComponentIdle; - return KErrNone; - } - -TInt CDummyPcmRenderer::UnInitialize() - { - ASSERT(iObserver); - - TILEvent thisEvent; - thisEvent.iEvent = EEventCmdComplete; - thisEvent.iData1 = ECommandStateSet; - thisEvent.iData2 = EComponentLoaded; - iObserver->MsgFromILComponent(this, thisEvent); - - iState = EComponentLoaded; - return KErrNone; - } - -TInt CDummyPcmRenderer::Execute() - { - ASSERT(iObserver); - TInt err = KErrNone; - if(!iSoundDevice.Handle()) - { - err = iSoundDevice.Open(); - } - - RMdaDevSound::TCurrentSoundFormatBuf buf; - if (err == KErrNone) - { - if(iState == EComponentPaused) - { - iSoundDevice.ResumePlaying(); - } - else - { - // Set play format (for input port) - iSoundDevice.GetPlayFormat(buf); - buf().iRate = iInputPort->SampleRate(); - buf().iChannels = iInputPort->Channels(); - buf().iBufferSize = KBufferSize; - buf().iEncoding = RMdaDevSound::EMdaSoundEncoding16BitPCM; - err = iSoundDevice.SetPlayFormat(buf); - } - } - iState = EComponentExecuting; - - TILEvent thisEvent; - thisEvent.iEvent = EEventCmdComplete; - thisEvent.iData1 = ECommandStateSet; - thisEvent.iData2 = EComponentExecuting; - iObserver->MsgFromILComponent(this, thisEvent); - - return err; - } - -TInt CDummyPcmRenderer::Pause() - { - iState = EComponentPaused; - iInputPort->Pause(); - return KErrNone; - } - -TInt CDummyPcmRenderer::Stop() - { - if(iState == EComponentExecuting || iState == EComponentPaused) - { - // Cancel and flush the device driver - iInputPort->Stop(); - - TILEvent thisEvent; - thisEvent.iEvent = EEventCmdComplete; - thisEvent.iData1 = ECommandStateSet; - thisEvent.iData2 = EComponentIdle; - iObserver->MsgFromILComponent(this, thisEvent); - - iState = EComponentIdle; - - // Close the sound device - iSoundDevice.Close(); - - return KErrNone; - } - else - { - // invalid state - return EComponentInvalid; - } - } - -TInt CDummyPcmRenderer::GetState(TILComponentState& aState) const - { - aState = iState; - return KErrNone; - } - -TInt CDummyPcmRenderer::SendCommand(const TILCommand& /*aCommand*/) - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::FlushAllPorts() - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::ComponentRoleEnum(TPtr8& /*aComponentRole*/, TUint32 /*aIndex*/) const - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::GetComponentVersion(TILComponentVersion& /*aVersion*/) const - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::SetComponentIfRole(const TDesC8& /*aComponentRole*/) - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::GetComponentIfRole(TDes8& /*aComponentRole*/) const - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::SetComponentIfRole(const TUid& /*aFormat*/) - { - // This interface is specific writen to support only this PCM renderer role - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::GetComponentIfRole(TUid& aFormat) const - { - aFormat = TUid::Uid(KDummyPCM16FormatUid); - return KErrNone; - } - -TAny* CDummyPcmRenderer::CustomInterface(TUid aUid) - { - if (aUid.iUid == KMmfPlaySettingsCustomInterface) - { - return static_cast(iInputPort); - } - return NULL; - } - -TInt CDummyPcmRenderer::SetExtConfig(const TDesC8& /*aParameterName*/, const TILStruct& /*aConfig*/, const MILComponentPortIf* /*aComponentPort*/) - { - return KErrNotSupported; - } - -TInt CDummyPcmRenderer::GetExtConfig(const TDesC8& /*aParameterName*/, TILStruct& /*aConfig*/, const MILComponentPortIf* /*aComponentPort*/) const - { - return KErrNotSupported; - } - - -MILIfObserver* CDummyPcmRenderer::Observer() const - { - return iObserver; - } - -RMdaDevSound& CDummyPcmRenderer::SoundDevice() - { - return iSoundDevice; - } - - -// ------------------------------------------------------------------------------------------ -// ECOM Implementation table entry - -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(KUidDummyPcmRendererMILIFPlugin, CDummyPcmRenderer::NewL), - }; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - return ImplementationTable; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/dummypcmrenderer/dummypcmrenderer.h --- a/omxil/mmilapi/unittest/test_plugins/dummypcmrenderer/dummypcmrenderer.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,159 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#ifndef DUMMYPCMRENDERER_H -#define DUMMYPCMRENDERER_H - -#include -#include -#include - -#include "milcomponentportif.h" -#include "milifobserver.h" -#include "ilcomponentif.h" - -#ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER - #include "mdasoundadapter.h" -#else - #include -#endif - -class CMMFBuffer; - -/* -PCM sink renderer component (this is just a simple non-omx component for testing) -This component is used together with the omxilvorbdechwdevice and the OMXVorbisDecoder -for testing when requesting a HwDevice supporting VRB2 fourCC. -*/ -class CDummyPcmRenderer : public CILComponentIf - { -public: - /* - PCM sink input port - */ - class CInputPort: public CActive, - public MILComponentPortIf, - public MPlayCustomInterface - { - friend class CDummyPcmRenderer; - - public: - static CInputPort* NewL(CDummyPcmRenderer& aParent); - - // MILComponentPortIf - TInt FillThisBuffer(CMMFBuffer& aBuffer); - TInt EmptyThisBuffer(const CMMFBuffer& aBuffer); - TInt TunnelRequest(MILComponentPortIf* aPort); - TInt DisconnectTunnel(MILComponentPortIf* aPort); - TInt PortIndex() const; - TPortDirection PortDirection() const; - CMMFBuffer* CreateBufferL(TInt aBufferSize); - TInt UseBuffer(CMMFBuffer& aBuffer); - TInt FreeBuffer(CMMFBuffer* aBuffer); - TInt FlushPort(); - TInt EnablePort(); - TInt DisablePort(); - MILComponentIf* PortComponent() const; - - // from MPlayCustomInterface - void SetVolume(TUint aVolume); - TUint Volume(); - TUint BytesPlayed(); - void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration); - TTimeIntervalMicroSeconds& VolumeRamp(); - TInt SampleRate(); - TInt Channels(); - - // from CActive - void RunL(); - void DoCancel(); - - // Internal - TUint32 BufferSize() const; - void Execute(); - void Pause(); - void Stop(); - ~CInputPort(); - - private: - explicit CInputPort(CDummyPcmRenderer& aParent); - - private: - CDummyPcmRenderer& iParent; - MILComponentPortIf* iPortConnectedTo; - CMMFBuffer* iCurrentBuffer; - RPointerArray iBuffers; - TInt iSampleRate; - TInt iChannels; - TBool iInterleaved; - TUint iVolume; - TTimeIntervalMicroSeconds iRampDuration; - TUint iBytesPlayed; - TBool iPaused; - TBool iStopped; - TUint iBufferSize; - }; -public: - static CDummyPcmRenderer* NewL(); - - // from MILComponentIf - void CreateComponentL(const TDesC8& aComponentName, MILIfObserver& aComponentIfObserver); - void CreateComponentL(const TUid& aUid, MILIfObserver& aComponentIfObserver); - void ReleaseComponent(); - TInt GetComponentInputPorts(RPointerArray& aComponentPorts) const; - TInt GetComponentOutputPorts(RPointerArray& aComponentPorts) const; - TInt SetConfig(const TILStruct& aConfig, const MILComponentPortIf* aComponentPort); - TInt GetConfig(TILStruct& aConfig, const MILComponentPortIf* aComponentPort) const; - TInt Initialize(); - TInt Execute(); - TInt Pause(); - TInt Stop(); - TInt UnInitialize(); - TInt GetState(TILComponentState& aState) const; - TInt SendCommand(const TILCommand& aCommand); - TInt FlushAllPorts(); - TInt ComponentRoleEnum(TPtr8& aComponentRole, TUint32 aIndex) const; - TInt GetComponentVersion(TILComponentVersion& aVersion) const; - TInt SetComponentIfRole(const TUid& aFormat); - TInt SetComponentIfRole(const TDesC8& aComponentRole); - TInt GetComponentIfRole(TUid& aFormat) const; - TInt GetComponentIfRole(TDes8& aComponentRole) const; - TInt SetExtConfig(const TDesC8& aParameterName, const TILStruct& aConfig, const MILComponentPortIf* aComponentPort); - TInt GetExtConfig(const TDesC8& aParameterName, TILStruct& aConfig, const MILComponentPortIf* aComponentPort) const; - TAny* CustomInterface(TUid aUid); - - - ~CDummyPcmRenderer(); - -private: - CDummyPcmRenderer(); - - RMdaDevSound& SoundDevice(); - MILIfObserver* Observer() const; - -private: - RMdaDevSound iSoundDevice; - TILComponentState iState; - - CInputPort* iInputPort; - MILIfObserver* iObserver; // Not owned - }; - -#endif // DUMMYPCMRENDERER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/dummypcmrenderer/dummypcmrenderer.rss --- a/omxil/mmilapi/unittest/test_plugins/dummypcmrenderer/dummypcmrenderer.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include "ilifuids.hrh" -#include "iltestuids.hrh" - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidDummyPcmRendererMILIFPluginDll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KILComponentIfUid; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidDummyPcmRendererMILIFPlugin; - version_no = 1; - display_name = "PCM Renderer"; - default_data = "" ; - opaque_data = ""; - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omxildummyaudiodec.cpp --- a/omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omxildummyaudiodec.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,544 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -#include "omxildummyaudiodec.h" -#include "iltestuids.hrh" -#include -#include - -_LIT8(KDummyDecoderILComponentName,"OMX.SYMBIAN.AUDIO.DECODER.DUMMY"); -const TInt KMaxComponentNameLength = 128; - -OMXIL_COMPONENT_ECOM_ENTRYPOINT(KUidOmxILDummyAudioDec); - -const TUint32 KOMXALL = 0xFFFFFFFF; - -const TInt KMaxComponentRoleLength = 128; - -const TInt KIndexInputPort = 0; -const TInt KIndexOutputPort = 1; - -// Set some dummy input and output buffer sizes -const TInt KDummyDecoderInputBufferSize = 0x2000; -const TInt KDummyDecoderOutputBufferSize = 0x4000; - -//_LIT(KDummyDecoder, "DummyDecoder"); - - - -TInt COmxIlDummyAudioDec::CreateComponent(OMX_HANDLETYPE hComponent) - { - COmxIlDummyAudioDec* self = new COmxIlDummyAudioDec(hComponent); - if (self==NULL) - { - return KErrNoMemory; - - } - else - { - return KErrNone; - } - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::GetComponentVersion( - OMX_STRING pComponentName, - OMX_VERSIONTYPE* pComponentVersion, - OMX_VERSIONTYPE* pSpecVersion, - OMX_UUIDTYPE* pComponentUUID) - { - TPtr8 name(reinterpret_cast(pComponentName), - KMaxComponentNameLength); - name.Copy(KDummyDecoderILComponentName); - name.PtrZ(); - - OMX_VERSIONTYPE compVer = { 1,0,0,0 }; - OMX_VERSIONTYPE specVer = { 1,1,1,0 }; - - (*pComponentVersion) = compVer; - (*pSpecVersion) = specVer; - - TPtr8 thisUid(reinterpret_cast(*pComponentUUID), 128); //Maxsize fixed by Khronos; - thisUid = TPtr8(reinterpret_cast(this), sizeof(TUint32)); - - return OMX_ErrorNone; - } - - -COmxIlDummyAudioDec::COmxIlDummyAudioDec(OMX_HANDLETYPE hComponent) - :COmxComponentImpl(hComponent) - { - iState = OMX_StateLoaded; - } - -COmxIlDummyAudioDec::~COmxIlDummyAudioDec() - { - if (iState == OMX_StateExecuting) - { - iState = OMX_StateIdle; - } - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::SendCommand( - OMX_COMMANDTYPE Cmd, - TUint32 nParam1, - TAny* /*pCmdData*/) - { - OMX_ERRORTYPE error = OMX_ErrorNone; - switch (Cmd) - { - case OMX_CommandStateSet: - { - OMX_STATETYPE state = (OMX_STATETYPE)nParam1; - if (state == iState) - { - error = OMX_ErrorSameState; - } - else - { - // notify client of the state change - switch (state) - { - case OMX_StateIdle: - case OMX_StatePause: - case OMX_StateExecuting: - break; - }; - iState = state; - - EventHandlerCallback( - OMX_EventCmdComplete, - OMX_CommandStateSet, - iState, - NULL); - } - break; - } - - case OMX_CommandFlush: - { - if(nParam1 == KOMXALL) - { - EventHandlerCallback( - OMX_EventCmdComplete, - OMX_CommandFlush, - 0, - NULL); - - EventHandlerCallback( - OMX_EventCmdComplete, - OMX_CommandFlush, - 1, - NULL); - } - else - { - EventHandlerCallback( - OMX_EventCmdComplete, - OMX_CommandFlush, - nParam1, - NULL); - } - - break; - } - case OMX_CommandPortDisable: - { - if(nParam1 == KOMXALL) - { - EventHandlerCallback( - OMX_EventCmdComplete, - OMX_CommandPortDisable, - 0, - NULL); - - EventHandlerCallback( - OMX_EventCmdComplete, - OMX_CommandPortDisable, - 1, - NULL); - } - else - { - EventHandlerCallback( - OMX_EventCmdComplete, - OMX_CommandPortDisable, - nParam1, - NULL); - } - break; - } - } - return error; - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::GetParameter( - OMX_INDEXTYPE nParamIndex, - TAny* ComponentParameterStructure) - { - switch (nParamIndex) - { - case OMX_IndexParamAudioInit : - { - OMX_PORT_PARAM_TYPE* param = static_cast(ComponentParameterStructure); - param->nPorts = 2; - } - break; - case OMX_IndexParamPortDefinition: - { - OMX_PARAM_PORTDEFINITIONTYPE* portDef = static_cast(ComponentParameterStructure); - if (portDef->nPortIndex==0) - { - portDef->eDir = OMX_DirInput; - portDef->nBufferSize = KDummyDecoderInputBufferSize; - portDef->nBufferCountActual = iBufferCountActual0; - } - else - { - portDef->eDir = OMX_DirOutput; - portDef->nBufferSize = KDummyDecoderOutputBufferSize; - portDef->nBufferCountActual = iBufferCountActual1; - } - } - break; - default: - return OMX_ErrorUnsupportedIndex; - } - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::SetParameter( - OMX_INDEXTYPE nIndex, - TAny* ComponentParameterStructure) - { - ASSERT(iState == OMX_StateLoaded); - switch (nIndex) - { - case OMX_IndexParamAudioVorbis: - { - // Fake this is Audio Vorbis decoder for the purpose of testing - OMX_AUDIO_PARAM_VORBISTYPE* param = static_cast(ComponentParameterStructure); - switch(param->nPortIndex) - { - case 0: // Input port - { - // nothing to set - return OMX_ErrorNone; - } - case 1: // Output port - default: - { - return OMX_ErrorUnsupportedIndex; - } - }; - } - case OMX_IndexParamAudioPcm: - { - OMX_AUDIO_PARAM_PCMMODETYPE* param = static_cast(ComponentParameterStructure); - switch(param->nPortIndex) - { - case 1: // Output port = PCM - { - return OMX_ErrorNone; - } - case 0: // Input port - default: - { - return OMX_ErrorUnsupportedIndex; - } - }; - } - case OMX_IndexParamPortDefinition: - { - OMX_PARAM_PORTDEFINITIONTYPE* portDef = static_cast(ComponentParameterStructure); - if (portDef->nPortIndex==0) - { - iBufferCountActual0 = portDef->nBufferCountActual; - } - else - { - iBufferCountActual1 = portDef->nBufferCountActual; - } - return OMX_ErrorNone; - } - default: - { - return OMX_ErrorUnsupportedIndex; - } - }; - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::GetConfig( - OMX_INDEXTYPE /*nIndex*/, - TAny* /*value*/) - { - return OMX_ErrorUnsupportedIndex; - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::SetConfig( - OMX_INDEXTYPE /*nIndex*/, - TAny* /*value*/) - { - return OMX_ErrorUnsupportedIndex; - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::GetExtensionIndex( - OMX_STRING /*parameterName*/, - OMX_INDEXTYPE* pIndexType) - { - // This test component returns always OMX_IndexParamPortDefinition - *pIndexType = OMX_IndexParamPortDefinition; - - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::GetState( - OMX_STATETYPE* pState) - { - *pState = iState; - return OMX_ErrorNone; - } - -// To be implemented for DM4 -OMX_ERRORTYPE COmxIlDummyAudioDec::ComponentTunnelRequest( - OMX_HANDLETYPE /*hInput*/, - TUint32 /*nInputPort*/, - OMX_HANDLETYPE /*hOutput*/, - TUint32 /*nOutputPort*/, - OMX_TUNNELSETUPTYPE* /*pTunnelSetup*/) - { - - // Fake everything as if it went fine - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::UseBuffer( - OMX_BUFFERHEADERTYPE** ppBufferHeader, - TUint32 nPortIndex, - TAny* pAppPrivate, - TUint32 nSizeBytes, - TUint8* pBuffer) - { - ASSERT(iState == OMX_StateLoaded); - *ppBufferHeader = new OMX_BUFFERHEADERTYPE; - if (*ppBufferHeader != NULL) - { - (*ppBufferHeader)->pBuffer = pBuffer; - (*ppBufferHeader)->pAppPrivate = pAppPrivate; - (*ppBufferHeader)->nAllocLen = nSizeBytes; - (*ppBufferHeader)->nFilledLen = 0; - (*ppBufferHeader)->nFlags = 0; - (*ppBufferHeader)->pInputPortPrivate = NULL; - (*ppBufferHeader)->pOutputPortPrivate = NULL; - } - - - - if (*ppBufferHeader) - { - TPtr8 ptr(pBuffer,nSizeBytes,nSizeBytes); - CMMFBuffer* buffer = NULL; - TRAPD(err, buffer = CMMFPtrBuffer::NewL(ptr)); - if (err != KErrNone) - { - return OMX_ErrorInsufficientResources; - } - switch (nPortIndex) - { - case KIndexInputPort: - { - (*ppBufferHeader)->pInputPortPrivate = buffer; - (*ppBufferHeader)->nInputPortIndex = nPortIndex; - } - break; - case KIndexOutputPort: - { - (*ppBufferHeader)->pOutputPortPrivate = buffer; - (*ppBufferHeader)->nOutputPortIndex = nPortIndex; - } - break; - - } - return OMX_ErrorNone; - } - else - { - return OMX_ErrorInsufficientResources; - } - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::AllocateBuffer( - OMX_BUFFERHEADERTYPE** pBuffer, - TUint32 nPortIndex, - TAny* pAppData, - TUint32 nSizeBytes) - { - ASSERT(iState == OMX_StateLoaded); - - *pBuffer = new OMX_BUFFERHEADERTYPE; - if (*pBuffer != NULL) - { - CMMFDescriptorBuffer* buffer = NULL; - TRAPD(err, buffer = CMMFDescriptorBuffer::NewL(nSizeBytes)); - if (err != KErrNone) - { - return OMX_ErrorInsufficientResources; - } - (*pBuffer)->pBuffer = const_cast(buffer->Data().Ptr()); - // store our allocated memory in component's private store - switch (nPortIndex) - { - case KIndexInputPort: - (*pBuffer)->pInputPortPrivate = buffer; - (*pBuffer)->pOutputPortPrivate = NULL; - break; - case KIndexOutputPort: - (*pBuffer)->pOutputPortPrivate = buffer; - (*pBuffer)->pInputPortPrivate = NULL; - break; - }; - - - (*pBuffer)->nAllocLen = nSizeBytes; - (*pBuffer)->nFilledLen = 0; - (*pBuffer)->pAppPrivate = pAppData; - } - - if (*pBuffer && (*pBuffer)->pBuffer) - { - return OMX_ErrorNone; - } - else - { - return OMX_ErrorInsufficientResources; - } - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::FreeBuffer( - TUint32 nPortIndex, - OMX_BUFFERHEADERTYPE* pBuffer) - { - switch (nPortIndex) - { - case KIndexInputPort: - { - delete (static_cast(pBuffer->pInputPortPrivate)); - pBuffer->pInputPortPrivate = NULL; - break; - } - case KIndexOutputPort: - delete (static_cast(pBuffer->pOutputPortPrivate)); - pBuffer->pOutputPortPrivate = NULL; - break; - - } - delete pBuffer; - return OMX_ErrorNone; - } -OMX_ERRORTYPE COmxIlDummyAudioDec::EmptyThisBuffer( - OMX_BUFFERHEADERTYPE* pBuffer) - { - ASSERT(iState == OMX_StateExecuting || - iState == OMX_StateIdle || - iState == OMX_StatePause); - EmptyBufferDoneCallback(pBuffer); - return OMX_ErrorNone; - } -OMX_ERRORTYPE COmxIlDummyAudioDec::FillThisBuffer( - OMX_BUFFERHEADERTYPE* pBuffer) - { - ASSERT(iState == OMX_StateExecuting || - iState == OMX_StateIdle || - iState == OMX_StatePause); - - FillBufferDoneCallback(pBuffer); - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::SetCallbacks( - OMX_CALLBACKTYPE* pCallbacks, - TAny* pAppData) - { - iCallback = pCallbacks; - iAppData = pAppData; - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxIlDummyAudioDec::ComponentRoleEnum( - OMX_OUT OMX_U8 *aRole, - OMX_IN OMX_U32 aIndex) - { - _LIT8(KFakeRole,"audio_decoder.vrb"); - - if (aIndex == 0) - { - TPtr8 ptr((TUint8*)aRole, 0, KMaxComponentRoleLength); - ptr.Copy(KFakeRole); - ptr.PtrZ(); - - return OMX_ErrorNone; - } - else - { - return OMX_ErrorBadParameter; - } - } - -// Callbacks for the Dummy Audio Decoder -void COmxIlDummyAudioDec::EventHandlerCallback( - OMX_OUT OMX_EVENTTYPE eEvent, - OMX_OUT TUint32 nData1, - OMX_OUT TUint32 nData2, - OMX_OUT OMX_STRING cExtraInfo) - { - iCallback->EventHandler( - this, - iAppData, - eEvent, - nData1, - nData2, - cExtraInfo); - } - -void COmxIlDummyAudioDec::FillBufferDoneCallback(OMX_BUFFERHEADERTYPE* aBuffer) - { - iCallback->FillBufferDone( - *this, - iAppData, - aBuffer); - } - -void COmxIlDummyAudioDec::EmptyBufferDoneCallback(OMX_BUFFERHEADERTYPE* aBuffer) - { - iCallback->EmptyBufferDone( - *this, - iAppData, - aBuffer); - } - -// Component Entry Point -OMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE hComponent) - { - TInt err = COmxIlDummyAudioDec::CreateComponent(hComponent); - if (err == KErrNone) - return OMX_ErrorNone; - else - { - // return some problem - return OMX_ErrorInsufficientResources; - - } - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omxildummyaudiodec.h --- a/omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omxildummyaudiodec.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYAUDIODEC_H -#define OMXILDUMMYAUDIODEC_H - -#include "omximpl.h" - -// Test component. Dummy omx il decoder used by the MILIF test suite. -class COmxIlDummyAudioDec : public COmxComponentImpl - { -public: - friend class CCodecDummyProcessor; - friend class CCodecCallbacks; - - static TInt CreateComponent(OMX_HANDLETYPE hComponent); - ~COmxIlDummyAudioDec(); - - OMX_ERRORTYPE GetComponentVersion( - OMX_STRING pComponentName, - OMX_VERSIONTYPE* pComponentVersion, - OMX_VERSIONTYPE* pSpecVersion, - OMX_UUIDTYPE* pComponentUUID); - OMX_ERRORTYPE SendCommand( - OMX_COMMANDTYPE Cmd, - TUint32 nParam1, - TAny* pCmdData); - OMX_ERRORTYPE GetParameter( - OMX_INDEXTYPE nParamIndex, - TAny* ComponentParameterStructure); - OMX_ERRORTYPE SetParameter( - OMX_INDEXTYPE nIndex, - TAny* ComponentParameterStructure); - OMX_ERRORTYPE GetConfig( - OMX_INDEXTYPE nIndex, - TAny* value); - OMX_ERRORTYPE SetConfig( - OMX_INDEXTYPE nIndex, - TAny* value); - OMX_ERRORTYPE GetExtensionIndex( - OMX_STRING ParameterName, - OMX_INDEXTYPE* pIndexType); - OMX_ERRORTYPE GetState( - OMX_STATETYPE* pState); - OMX_ERRORTYPE ComponentTunnelRequest( - OMX_HANDLETYPE hInput, - TUint32 nInputPort, - OMX_HANDLETYPE hOutput, - TUint32 nOutputPort, - OMX_TUNNELSETUPTYPE* pTunnelSetup); - virtual OMX_ERRORTYPE UseBuffer( - OMX_BUFFERHEADERTYPE** pBufferHdr, - TUint32 nPortIndex, - TAny* pAppPrivate, - TUint32 nSizeBytes, - TUint8* pBuffer); - virtual OMX_ERRORTYPE AllocateBuffer( - OMX_BUFFERHEADERTYPE** pBuffer, - TUint32 nPortIndex, - TAny* pAppData, - TUint32 nSizeBytes); - OMX_ERRORTYPE FreeBuffer( - TUint32 nPortIndex, - OMX_BUFFERHEADERTYPE* pBuffer); - OMX_ERRORTYPE EmptyThisBuffer( - OMX_BUFFERHEADERTYPE* pBuffer); - OMX_ERRORTYPE FillThisBuffer( - OMX_BUFFERHEADERTYPE* pBuffer); - OMX_ERRORTYPE SetCallbacks( - OMX_CALLBACKTYPE* pCallbacks, - TAny* pAppData); - OMX_ERRORTYPE ComponentRoleEnum( - OMX_OUT OMX_U8 *cRole, - OMX_IN OMX_U32 nIndex); - - - void EventHandlerCallback( - OMX_EVENTTYPE eEvent, - TUint32 nData1, - TUint32 nData2, - OMX_STRING cExtraInfo); - void FillBufferDoneCallback(OMX_BUFFERHEADERTYPE* pBuffer); - void EmptyBufferDoneCallback(OMX_BUFFERHEADERTYPE* pBuffer); - -private: - COmxIlDummyAudioDec(OMX_HANDLETYPE hComponent); - -private: - OMX_CALLBACKTYPE* iCallback; - TAny* iAppData; - OMX_STATETYPE iState; - - TInt iBufferCountActual0; - TInt iBufferCountActual1; - }; - -#endif // OMXILDUMMYAUDIODEC_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omxildummyaudiodec.rss --- a/omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omxildummyaudiodec.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include -#include "iltestuids.hrh" - - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidOmxILDummyAudioDecDll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUidOmxILSymbianComponentIf; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidOmxILDummyAudioDec; - version_no = 1; - display_name = "OMX.SYMBIAN.AUDIO.DECODER.DUMMY" ; // Dummy Component name - default_data = "Symbian IL Dummy OMX component"; - opaque_data = ""; - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omximpl.cpp --- a/omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omximpl.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,279 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -//#include -#include "omximpl.h" - -OMX_ERRORTYPE OMXComponentGetComponentVersion( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_STRING pComponentName, - OMX_OUT OMX_VERSIONTYPE* pComponentVersion, - OMX_OUT OMX_VERSIONTYPE* pSpecVersion, - OMX_OUT OMX_UUIDTYPE* pComponentUUID); -OMX_ERRORTYPE OMXComponentSendCommand( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_COMMANDTYPE Cmd, - OMX_IN OMX_U32 nParam1, - OMX_IN OMX_PTR pCmdData); -OMX_ERRORTYPE OMXComponentGetParameter( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nParamIndex, - OMX_INOUT OMX_PTR ComponentParameterStructure); -OMX_ERRORTYPE OMXComponentSetParameter( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_IN OMX_PTR ComponentParameterStructure); -OMX_ERRORTYPE OMXComponentGetConfig( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_INOUT OMX_PTR value); -OMX_ERRORTYPE OMXComponentSetConfig( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_IN OMX_PTR value); -OMX_ERRORTYPE OMXComponentGetExtensionIndex( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_STRING ParameterName, - OMX_OUT OMX_INDEXTYPE* pIndexType); -OMX_ERRORTYPE OMXComponentGetState( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_STATETYPE* pState); -OMX_ERRORTYPE OMXComponentComponentTunnelRequest( - OMX_IN OMX_HANDLETYPE hInput, - OMX_IN OMX_U32 nPortInput, - OMX_IN OMX_HANDLETYPE hOutput, - OMX_IN OMX_U32 nPortOutput, - OMX_IN OMX_TUNNELSETUPTYPE* pTunnelSetup); -OMX_ERRORTYPE OMXComponentUseBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppPrivate, - OMX_IN OMX_U32 nSizeBytes, - OMX_IN OMX_U8* pBuffer); -OMX_ERRORTYPE OMXComponentAllocateBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_U32 nSizeBytes); -OMX_ERRORTYPE OMXComponentFreeBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); -OMX_ERRORTYPE OMXComponentEmptyThisBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); -OMX_ERRORTYPE OMXComponentFillThisBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); -OMX_ERRORTYPE OMXComponentSetCallbacks( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_CALLBACKTYPE* pCallbacks, - OMX_IN OMX_PTR pAppData); -OMX_ERRORTYPE OMXComponentDeInit(OMX_IN OMX_HANDLETYPE hComponent); - -OMX_ERRORTYPE OMXComponentRoleEnum( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_U8 *cRole, - OMX_IN OMX_U32 nIndex); - - -void EventHandler(OMX_OUT OMX_HANDLETYPE hComponent, - OMX_OUT OMX_PTR pAppData, - OMX_OUT OMX_EVENTTYPE eEvent, - OMX_OUT OMX_U32 Data, - OMX_OUT OMX_STRING cExtraInfo); - -void InputBufferCallback( - OMX_OUT OMX_HANDLETYPE hComponent, - OMX_OUT OMX_PTR pAppData, - OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer); - -void OutputBufferCallback( - OMX_OUT OMX_HANDLETYPE hComponent, - OMX_OUT OMX_PTR pAppData, - OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer); - - - COmxComponentImpl::COmxComponentImpl(OMX_HANDLETYPE hComponent) - { - iHandle = static_cast(hComponent); - OMX_VERSIONTYPE ver = { 1,0,0,0 }; - - // fill in handle structure - - iHandle->nVersion = ver; - iHandle->pComponentPrivate = this; - iHandle->GetComponentVersion = &::OMXComponentGetComponentVersion; - iHandle->SendCommand = &::OMXComponentSendCommand; - iHandle->GetParameter = &::OMXComponentGetParameter; - iHandle->SetParameter = &::OMXComponentSetParameter; - iHandle->GetConfig = &::OMXComponentGetConfig; - iHandle->SetConfig = &::OMXComponentSetConfig; - iHandle->GetExtensionIndex = &::OMXComponentGetExtensionIndex; - iHandle->GetState = &::OMXComponentGetState; - iHandle->ComponentTunnelRequest = &::OMXComponentComponentTunnelRequest; - iHandle->UseBuffer = &::OMXComponentUseBuffer; - iHandle->AllocateBuffer = &::OMXComponentAllocateBuffer; - iHandle->FreeBuffer = &::OMXComponentFreeBuffer; - iHandle->EmptyThisBuffer = &::OMXComponentEmptyThisBuffer; - iHandle->FillThisBuffer = &::OMXComponentFillThisBuffer; - iHandle->SetCallbacks = &::OMXComponentSetCallbacks; - iHandle->ComponentRoleEnum = &::OMXComponentRoleEnum; - iHandle->ComponentDeInit = &::OMXComponentDeInit; - } - - COmxComponentImpl::~COmxComponentImpl() - { - - } - COmxComponentImpl::operator OMX_HANDLETYPE() - { - return (OMX_HANDLETYPE)&iHandle; - } - - -OMX_ERRORTYPE OMXComponentGetComponentVersion( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_STRING pComponentName, - OMX_OUT OMX_VERSIONTYPE* pComponentVersion, - OMX_OUT OMX_VERSIONTYPE* pSpecVersion, - OMX_OUT OMX_UUIDTYPE* pComponentUUID) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetComponentVersion(pComponentName,pComponentVersion,pSpecVersion, pComponentUUID); - } - - -OMX_ERRORTYPE OMXComponentSendCommand( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_COMMANDTYPE Cmd, - OMX_IN OMX_U32 nParam1, - OMX_IN OMX_PTR pCmdData) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->SendCommand(Cmd ,nParam1, pCmdData); - - } -OMX_ERRORTYPE OMXComponentGetParameter( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nParamIndex, - OMX_INOUT OMX_PTR ComponentParameterStructure) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetParameter(nParamIndex, ComponentParameterStructure); - } -OMX_ERRORTYPE OMXComponentSetParameter( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_IN OMX_PTR ComponentParameterStructure) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->SetParameter(nIndex, ComponentParameterStructure); - } -OMX_ERRORTYPE OMXComponentGetConfig( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_INOUT OMX_PTR value) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetConfig(nIndex, value); - } -OMX_ERRORTYPE OMXComponentSetConfig( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_IN OMX_PTR value) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->SetConfig(nIndex, value); - } -OMX_ERRORTYPE OMXComponentGetExtensionIndex( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_STRING ParameterName, - OMX_OUT OMX_INDEXTYPE* pIndexType) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetExtensionIndex(ParameterName, pIndexType); - } -OMX_ERRORTYPE OMXComponentGetState( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_STATETYPE* pState) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->GetState(pState); - } -OMX_ERRORTYPE OMXComponentComponentTunnelRequest( - OMX_IN OMX_HANDLETYPE hInput, - OMX_IN OMX_U32 nInputPort, - OMX_IN OMX_HANDLETYPE hOutput, - OMX_IN OMX_U32 nOutputPort, - OMX_IN OMX_TUNNELSETUPTYPE* pTunnelSetup) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hInput)->pComponentPrivate)->ComponentTunnelRequest(hInput, nInputPort, hOutput, nOutputPort, pTunnelSetup); - } -OMX_ERRORTYPE OMXComponentUseBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppPrivate, - OMX_IN OMX_U32 nSizeBytes, - OMX_IN OMX_U8* pBuffer) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->UseBuffer(ppBufferHdr, nPortIndex, pAppPrivate, nSizeBytes, pBuffer); - } - -OMX_ERRORTYPE OMXComponentAllocateBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** pBuffer, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_U32 nSizeBytes) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->AllocateBuffer(pBuffer, nPortIndex, pAppData, nSizeBytes); - } - -OMX_ERRORTYPE OMXComponentFreeBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->FreeBuffer(nPortIndex, pBuffer); - } -OMX_ERRORTYPE OMXComponentEmptyThisBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->EmptyThisBuffer(pBuffer); - } -OMX_ERRORTYPE OMXComponentFillThisBuffer( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->FillThisBuffer(pBuffer); - } -OMX_ERRORTYPE OMXComponentSetCallbacks( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_CALLBACKTYPE* pCallbacks, - OMX_IN OMX_PTR pAppData) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->SetCallbacks(pCallbacks, pAppData); - } - -OMX_ERRORTYPE OMXComponentDeInit(OMX_IN OMX_HANDLETYPE hComponent) - { - delete ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate); - return OMX_ErrorNone; - } - -OMX_ERRORTYPE OMXComponentRoleEnum( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_U8 *cRole, - OMX_IN OMX_U32 nIndex) - { - return ((COmxComponentImpl*)((OMX_COMPONENTTYPE*)hComponent)->pComponentPrivate)->ComponentRoleEnum(cRole, nIndex); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omximpl.h --- a/omxil/mmilapi/unittest/test_plugins/omxildummyaudiodec/omximpl.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXIMPL_H -#define OMXIMPL_H - -#include -#include - - -class COmxComponentImpl : public CBase - { -public: - COmxComponentImpl(OMX_HANDLETYPE hComponent); - virtual ~COmxComponentImpl(); - - virtual OMX_ERRORTYPE GetComponentVersion( - OMX_STRING pComponentName, - OMX_VERSIONTYPE* pComponentVersion, - OMX_VERSIONTYPE* pSpecVersion, - OMX_UUIDTYPE* pComponentUUID)=0; - - virtual OMX_ERRORTYPE SendCommand( - OMX_COMMANDTYPE Cmd, - TUint32 nParam1, - TAny* pCmdData)=0; - virtual OMX_ERRORTYPE GetParameter( - OMX_INDEXTYPE nParamIndex, - TAny* ComponentParameterStructure)=0; - virtual OMX_ERRORTYPE SetParameter( - OMX_INDEXTYPE nIndex, - TAny* ComponentParameterStructure)=0; - virtual OMX_ERRORTYPE GetConfig( - OMX_INDEXTYPE nIndex, - TAny* value)=0; - virtual OMX_ERRORTYPE SetConfig( - OMX_INDEXTYPE nIndex, - TAny* value)=0; - virtual OMX_ERRORTYPE GetExtensionIndex( - OMX_STRING ParameterName, - OMX_INDEXTYPE* pIndexType)=0; - virtual OMX_ERRORTYPE GetState( - OMX_STATETYPE* pState)=0; - virtual OMX_ERRORTYPE ComponentTunnelRequest( - OMX_HANDLETYPE hInput, - TUint32 nPortInput, - OMX_HANDLETYPE hOutput, - TUint32 nPortOutput, - OMX_TUNNELSETUPTYPE* pTunnelSetup) = 0; - virtual OMX_ERRORTYPE UseBuffer( - OMX_BUFFERHEADERTYPE** ppBufferHdr, - TUint32 nPortIndex, - TAny* pAppPrivate, - TUint32 nSizeBytes, - TUint8* pBuffer)=0; - virtual OMX_ERRORTYPE AllocateBuffer( - OMX_BUFFERHEADERTYPE** pBuffer, - TUint32 nPortIndex, - TAny* pAppData, - TUint32 nSizeBytes)=0; - virtual OMX_ERRORTYPE FreeBuffer( - TUint32 nPortIndex, - OMX_BUFFERHEADERTYPE* pBuffer)=0; - virtual OMX_ERRORTYPE EmptyThisBuffer( - OMX_BUFFERHEADERTYPE* pBuffer)=0; - virtual OMX_ERRORTYPE FillThisBuffer( - OMX_BUFFERHEADERTYPE* pBuffer)=0; - virtual OMX_ERRORTYPE SetCallbacks( - OMX_CALLBACKTYPE* pCallbacks, - TAny* pAppData)=0; - virtual OMX_ERRORTYPE ComponentRoleEnum( - OMX_OUT OMX_U8 *cRole, - OMX_IN OMX_U32 nIndex)=0; - - operator OMX_HANDLETYPE(); - -private: - OMX_COMPONENTTYPE* iHandle; - }; - - -#endif // OMXIMPL_H diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummyaudiodecilif/omxildummyaudiodecilif.cpp --- a/omxil/mmilapi/unittest/test_plugins/omxildummyaudiodecilif/omxildummyaudiodecilif.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,512 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "omxildummyaudiodecilif.h" -#include "iltestuids.hrh" -#include "omxilspecversion.h" -#include "tilstructtypes.h" -#include "tomxilstruct.h" -#include "milcomponentportif.h" -#include -#include - - -// _________________________________________________________________________________ - -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(KUidOmxILDummyAudioDecMILIFPlugin , COmxILDummyAudioDecILIF::NewL) - }; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - - return ImplementationTable; - }; -// _________________________________________________________________________________ - - -const TUint KMonoChannel = 1; -const TUint KStereoChannel = 2; -const TInt KPcm16BitsPerSample = 16; - - -COmxILDummyAudioDecILIF* COmxILDummyAudioDecILIF::NewL() - { - COmxILDummyAudioDecILIF* self = new (ELeave) COmxILDummyAudioDecILIF; - return self; - } - -COmxILDummyAudioDecILIF::COmxILDummyAudioDecILIF() - { - } - -COmxILDummyAudioDecILIF::~COmxILDummyAudioDecILIF() - { - } - - - -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - -Mandatory params across all standard components -=============================================== - OMX_IndexParamPortDefinition OMX_PARAM_PORTDEFINITIONTYPE (KUidTPortDefinitionType, TPortDefinitionType) - OMX_IndexParamAudioInit - OMX_IndexParamCompBufferSupplier - -Mandatory params across all audio standard components -===================================================== - OMX_IndexParamAudioPortFormat OMX_AUDIO_PARAM_PORTFORMATTYPE (KUidTAudioPortFormatType, TAudioPortFormatType) - -Component role: audio_decoder.aac -================================= -- APB+0: Accepts encoded audio - OMX_IndexParamAudioAac OMX_AUDIO_PARAM_AACPROFILETYPE (KUidTPortAACProfileType, TPortAACProfileType) -- APB+1: Emits decoded audio - OMX_IndexParamAudioPcm OMX_AUDIO_PARAM_PCMMODETYPE (KUidTPortPCMType, TPortPCMType) - -Component role: audio_renderer.pcm -================================== -- APB+0: Accepts audio for rendering: - (OMX_IndexParamAudioPcm, OMX_AUDIO_PARAM_PCMMODETYPE) (KUidTPortPCMType, TPortPCMType) - (OMX_IndexConfigAudioVolume, OMX_AUDIO_CONFIG_VOLUMETYPE) (KUidTPortVolumeType, TPortVolumeType) - (OMX_IndexConfigAudioMute, OMX_AUDIO_CONFIG_MUTETYPE) (KUidTPortMuteType, TPortMuteType) - -* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ - -TInt COmxILDummyAudioDecILIF::SetConfig(const TILStruct& aConfig, - const MILComponentPortIf* aComponentPort) - { - - TInt portIndex = 0xFF; // Initialize to invalid port index - if (aComponentPort) - { - portIndex = aComponentPort->PortIndex(); - } - else - { - // All parameters and configs are targetted to the port. - return KErrArgument; - } - - TInt error = KErrNone; - - switch (aConfig.Uid().iUid) - { - case KUidOMXILStructType: - { - const TOMXILStructParam* omxILStructParam = static_cast (&aConfig); - switch (omxILStructParam->Index()) - { - case OMX_IndexParamPortDefinition: - { - OMX_PARAM_PORTDEFINITIONTYPE* config = reinterpret_cast( - const_cast(omxILStructParam)->Param()); - ASSERT(config); - config->nPortIndex = portIndex; - config->nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - error = OmxSetParameter(OMX_IndexParamPortDefinition, config); - break; - } - default: - { - error = KErrNotSupported; - } - } - break; - } - - case KUidMMFTTaskConfig: - { - const TTaskConfig* config = TILTaskConfig::GetStructure(aConfig); - ASSERT(config); - - TInt sampleRate = config->iRate; - TInt channels = (config->iStereoMode & ETaskMono)? KMonoChannel : KStereoChannel; - TBool interleaved = (config->iStereoMode & ETaskInterleaved)?ETrue : EFalse; - - TUid format; - error = GetComponentIfRole(format); - if (error != KErrNone) - { - break; - } - - if (format == KUidFormatOGG) - { - if (aComponentPort->PortDirection()== EDirOutput) - { - // Set Output Port (PCM16) - OMX_AUDIO_PARAM_PCMMODETYPE pcm; - pcm.nVersion = KOMXILSpecVersion; - pcm.nSize = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE); - pcm.nPortIndex = portIndex; - pcm.nSamplingRate = sampleRate; - pcm.ePCMMode = OMX_AUDIO_PCMModeLinear; - pcm.eNumData = OMX_NumericalDataSigned; - pcm.nBitPerSample = KPcm16BitsPerSample; - pcm.nChannels = channels; - pcm.bInterleaved = (OMX_BOOL)interleaved; - - error = OmxSetParameter(OMX_IndexParamAudioPcm, &pcm); - } - else if (aComponentPort->PortDirection() == EDirInput) - { - // Set Input Port (Vorbis) - OMX_AUDIO_PARAM_VORBISTYPE vorbis; - vorbis.nVersion = KOMXILSpecVersion; - vorbis.nSize = sizeof(OMX_AUDIO_PARAM_VORBISTYPE); - vorbis.nPortIndex = portIndex; - - error = OmxSetParameter(OMX_IndexParamAudioVorbis, &vorbis); - } - } - else if (format == KUidFormatPCM16) - { - if (aComponentPort->PortDirection()== EDirInput) - { - // Set Input Port (PCM16) - OMX_AUDIO_PARAM_PCMMODETYPE pcm; - pcm.nVersion = KOMXILSpecVersion; - pcm.nSize = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE); - pcm.nPortIndex = portIndex; - pcm.nSamplingRate = sampleRate; - pcm.ePCMMode = OMX_AUDIO_PCMModeLinear; - pcm.eNumData = OMX_NumericalDataSigned; - pcm.nBitPerSample = KPcm16BitsPerSample; - pcm.nChannels = channels; - pcm.bInterleaved = (OMX_BOOL)interleaved; - - error = OmxSetParameter(OMX_IndexParamAudioPcm, &pcm); - } - else - { - error = KErrNotSupported; - } - } - else - { - error = KErrNotSupported; - } - break; - } - case KUidTPortDefinitionType: - { - OMX_PARAM_PORTDEFINITIONTYPE* config = const_cast( - TILPortDefinition::GetStructure(aConfig)); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE); - config->nPortIndex = portIndex; - error = OmxSetParameter(OMX_IndexParamPortDefinition, config); - break; - } - case KUidTAudioPortFormatType: - { - OMX_AUDIO_PARAM_PORTFORMATTYPE* config = const_cast( - TILAudioPortFormat::GetStructure(aConfig)); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE); - config->nPortIndex = portIndex; - error = OmxSetParameter(OMX_IndexParamAudioPortFormat, config); - break; - } - case KUidTPortPCMModeType: - { - OMX_AUDIO_PARAM_PCMMODETYPE* config = const_cast( - TILPortPCMMode::GetStructure(aConfig)); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE); - config->nPortIndex = portIndex; - error = OmxSetParameter(OMX_IndexParamAudioPcm, config); - break; - } - case KUidTPortAACProfileType: - { - OMX_AUDIO_PARAM_AACPROFILETYPE* config = const_cast( - TILPortAACProfile::GetStructure(aConfig)); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_PARAM_AACPROFILETYPE); - config->nPortIndex = portIndex; - error = OmxSetParameter(OMX_IndexParamAudioAac, config); - break; - } - case KUidTPortVorbisType: - { - OMX_AUDIO_PARAM_VORBISTYPE* config = const_cast( - TILPortVorbis::GetStructure(aConfig)); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_PARAM_VORBISTYPE); - config->nPortIndex = portIndex; - error = OmxSetParameter(OMX_IndexParamAudioVorbis, config); - break; - } - case KUidTPortVolumeType: - { - OMX_AUDIO_CONFIG_VOLUMETYPE* config = const_cast( - TILPortVolume::GetStructure(aConfig)); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE); - config->nPortIndex = portIndex; - error = OmxSetConfig(OMX_IndexConfigAudioVolume, config); - break; - } - case KUidTPortMuteType: - { - OMX_AUDIO_CONFIG_MUTETYPE* config = const_cast( - TILPortMute::GetStructure(aConfig)); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_CONFIG_MUTETYPE); - config->nPortIndex = portIndex; - error = OmxSetConfig(OMX_IndexConfigAudioMute, config); - break; - } - default: - { - error = KErrNotSupported; - } - } - return error; - } - - -TInt COmxILDummyAudioDecILIF::GetConfig(TILStruct& aConfig, - const MILComponentPortIf* aComponentPort) const - { - TInt portIndex = 0xFF; // Initialize to invalid port index - if (aComponentPort) - { - portIndex = aComponentPort->PortIndex(); - } - else - { - // All parameters and configs are targetted to the port. - return KErrArgument; - } - - TInt error = KErrNone; - - switch (aConfig.Uid().iUid) - { - case KUidOMXILStructType: - { - TOMXILStructParam* omxILStructParam = static_cast (&aConfig); - switch (omxILStructParam->Index()) - { - case OMX_IndexParamPortDefinition: - { - OMX_PARAM_PORTDEFINITIONTYPE* config = reinterpret_cast(omxILStructParam->Param()); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - config->nPortIndex = portIndex; - error = OmxGetParameter(OMX_IndexParamPortDefinition, config); - break; - } - default: - { - error = KErrNotSupported; - } - } - break; - } - - case KUidTPortDefinitionType: - { - OMX_PARAM_PORTDEFINITIONTYPE* config = TILPortDefinition::GetStructure(aConfig); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - config->nPortIndex = portIndex; - error = OmxGetParameter(OMX_IndexParamPortDefinition, config); - break; - } - case KUidTAudioPortFormatType: - { - OMX_AUDIO_PARAM_PORTFORMATTYPE* config = TILAudioPortFormat::GetStructure(aConfig); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE); - config->nPortIndex = portIndex; - error = OmxGetParameter(OMX_IndexParamAudioPortFormat, config); - break; - } - case KUidTPortPCMModeType: - { - OMX_AUDIO_PARAM_PCMMODETYPE* config = TILPortPCMMode::GetStructure(aConfig); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE); - config->nPortIndex = portIndex; - error = OmxGetParameter(OMX_IndexParamAudioPcm, config); - break; - } - case KUidTPortAACProfileType: - { - OMX_AUDIO_PARAM_AACPROFILETYPE* config = TILPortAACProfile::GetStructure(aConfig); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_PARAM_AACPROFILETYPE); - config->nPortIndex = portIndex; - error = OmxGetParameter(OMX_IndexParamAudioAac, config); - break; - } - case KUidTPortVorbisType: - { - OMX_AUDIO_PARAM_VORBISTYPE* config = TILPortVorbis::GetStructure(aConfig); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_PARAM_VORBISTYPE); - config->nPortIndex = portIndex; - error = OmxGetParameter(OMX_IndexParamAudioVorbis, config); - break; - } - case KUidTPortVolumeType: - { - OMX_AUDIO_CONFIG_VOLUMETYPE* config = TILPortVolume::GetStructure(aConfig); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE); - config->nPortIndex = portIndex; - error = OmxGetConfig(OMX_IndexConfigAudioVolume, config); - break; - } - case KUidTPortMuteType: - { - OMX_AUDIO_CONFIG_MUTETYPE* config = TILPortMute::GetStructure(aConfig); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_AUDIO_CONFIG_MUTETYPE); - config->nPortIndex = portIndex; - error = OmxGetConfig(OMX_IndexConfigAudioMute, config); - break; - } - default: - { - error = KErrNotSupported; - } - } - - return error; - } - -TInt COmxILDummyAudioDecILIF::SetExtConfig(const TDesC8& aParameterName, - const TILStruct& aConfig, - const MILComponentPortIf* aComponentPort) - { - TInt portIndex = 0xFF; // Initialize to invalid port index - if (aComponentPort) - { - portIndex = aComponentPort->PortIndex(); - } - else - { - // All parameters and configs are targetted to the port. - return KErrArgument; - } - - OMX_INDEXTYPE indexType; - TInt error = KErrNone; - error = OmxGetExtensionIndex(aParameterName, &indexType); - - if (error == KErrNone) - { - switch (aConfig.Uid().iUid) - { - case KUidTPortDefinitionType: - { - OMX_PARAM_PORTDEFINITIONTYPE* config = const_cast(TILPortDefinition::GetStructure(aConfig)); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - config->nPortIndex = portIndex; - error = OmxSetParameter(OMX_IndexParamPortDefinition, config); - break; - } - default: - { - error = KErrNotSupported; - } - } - } - - - return error; - } - -TInt COmxILDummyAudioDecILIF::GetExtConfig(const TDesC8& aParameterName, - TILStruct& aConfig, - const MILComponentPortIf* aComponentPort) const - { - TInt portIndex = 0xFF; // Initialize to invalid port index - if (aComponentPort) - { - portIndex = aComponentPort->PortIndex(); - } - else - { - // All parameters and configs are targetted to the port. - return KErrArgument; - } - - OMX_INDEXTYPE indexType; - - TInt error = KErrNone; - error = OmxGetExtensionIndex(aParameterName, &indexType); - - if (error == KErrNone) - { - switch (aConfig.Uid().iUid) - { - case KUidTPortDefinitionType: - { - OMX_PARAM_PORTDEFINITIONTYPE* config = TILPortDefinition::GetStructure(aConfig); - ASSERT(config); - config->nVersion = KOMXILSpecVersion; - config->nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - config->nPortIndex = portIndex; - error = OmxGetParameter(indexType, config); - break; - } - default: - { - error = KErrNotSupported; - } - } - } - return error; - } - -TInt COmxILDummyAudioDecILIF::SetComponentIfRole(const TUid& aComponentRole) - { - if ((aComponentRole == KUidFormatAAC) || - (aComponentRole == KUidFormatOGG) || - (aComponentRole == KUidFormatPCM16)) - { - return (COmxILDummyBaseILIF::SetComponentIfRole(aComponentRole)); - } - else - { - return KErrNotSupported; - } - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummyaudiodecilif/omxildummyaudiodecilif.h --- a/omxil/mmilapi/unittest/test_plugins/omxildummyaudiodecilif/omxildummyaudiodecilif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYAUDIODECILIF_H -#define OMXILDUMMYAUDIODECILIF_H - -#include "omxildummybaseilif.h" - -/** -Test component. -Concrete implementation of the MILIF API when implemented as a plugin -and specific to the AAC and Vorbis decoder and the PCM renderer OMX IL component specifications. - -*/ -class COmxILDummyAudioDecILIF : public COmxILDummyBaseILIF - { -public: - static COmxILDummyAudioDecILIF* NewL(); - - // from COmxILDummyBaseILIF - TInt SetConfig(const TILStruct& aConfig, const MILComponentPortIf* aComponentPort); - TInt GetConfig(TILStruct& aConfig, const MILComponentPortIf* aComponentPort) const; - TInt SetExtConfig(const TDesC8& aParameterName, const TILStruct& aConfig, const MILComponentPortIf* aComponentPort); - TInt GetExtConfig(const TDesC8& aParameterName, TILStruct& aConfig, const MILComponentPortIf* aComponentPort) const; - TInt SetComponentIfRole(const TUid& aComponentRole); - -private: - COmxILDummyAudioDecILIF(); - ~COmxILDummyAudioDecILIF(); - }; - -#endif // OMXILDUMMYAUDIODECILIF_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummyaudiodecilif/omxildummyaudiodecilif.rss --- a/omxil/mmilapi/unittest/test_plugins/omxildummyaudiodecilif/omxildummyaudiodecilif.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// comxilaudiodecgenericif.rss -// -// - -#include -#include "ilifuids.hrh" -#include "iltestuids.hrh" - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidOmxILDummyAudioDecMILIFPluginDll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KILComponentIfUid; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidOmxILDummyAudioDecMILIFPlugin; - version_no = 1; - display_name = "Symbian OMX IL v1.1 AudioDec I/F"; - default_data = "audio_decoder.vorbis, audio_decoder.aac, audio_renderer.pcm"; - opaque_data = ""; - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseilif.cpp --- a/omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseilif.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,298 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -#include "omxildummybaseilif.h" -#include "omxildummybaseilifbody.h" -#include "omxilcoreutils.h" -#include "iltestuids.hrh" -#include "milcomponentportif.h" -#include "ilifuids.h" -#include - -const TUint32 KOMXALL = 0xFFFFFFFF; - - -EXPORT_C COmxILDummyBaseILIF::COmxILDummyBaseILIF() - { - } - -EXPORT_C COmxILDummyBaseILIF::~COmxILDummyBaseILIF() - { - if (iBody) - { - delete iBody; - } - } - -EXPORT_C void COmxILDummyBaseILIF::CreateComponentL(const TDesC8& aComponentName, - MILIfObserver& aComponentIfObserver) - { - iBody = CBody::NewL(*this, aComponentIfObserver, aComponentName); - - User::LeaveIfError(iBody->SetPortsL()); - } - -EXPORT_C void COmxILDummyBaseILIF::CreateComponentL(const TUid& /*aUid*/, - MILIfObserver& /*ComponentIfObserver*/) - { - // OMX Versions do not use this method of creation - User::Leave(KErrNotSupported); - } - -EXPORT_C void COmxILDummyBaseILIF::ReleaseComponent() - { - delete iBody; - iBody = NULL; - - delete this; - } - -EXPORT_C TInt COmxILDummyBaseILIF::GetComponentInputPorts(RPointerArray& aComponentPorts) const - { - return (iBody->GetComponentPorts(aComponentPorts, OMX_DirInput)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::GetComponentOutputPorts(RPointerArray& aComponentPorts) const - { - return (iBody->GetComponentPorts(aComponentPorts, OMX_DirOutput)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::SetConfig(const TILStruct& /*aConfig*/, - const MILComponentPortIf* /*aComponentPort*/) - { - // It should be implemented in the derived class - return KErrNotSupported; - } - -EXPORT_C TInt COmxILDummyBaseILIF::GetConfig(TILStruct& /*aConfig*/, - const MILComponentPortIf* /*aComponentPort*/) const - { - // It should be implemented in the derived class - return (KErrNotSupported); - } - -EXPORT_C TInt COmxILDummyBaseILIF::Initialize() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StateIdle, NULL)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::Execute() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StateExecuting, NULL)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::Pause() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StatePause, NULL)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::Stop() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StateIdle, NULL)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::UnInitialize() - { - return (iBody->OmxSendCommand(OMX_CommandStateSet, OMX_StateLoaded, NULL)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::GetState(TILComponentState& aState) const - { - TInt error; - OMX_STATETYPE state; - error = iBody->OmxGetState(&state); - aState = ConvertOmxState(state); - return error; - } - -EXPORT_C TInt COmxILDummyBaseILIF::SendCommand(const TILCommand& aCommand) - { - OMX_COMMANDTYPE command = ConvertSymbianCommandType(aCommand.iCmd); - return (iBody->OmxSendCommand(command, aCommand.iData1, aCommand.iExtraData)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::FlushAllPorts() - { - return (iBody->OmxSendCommand(OMX_CommandFlush, KOMXALL, NULL)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::ComponentRoleEnum(TPtr8& aComponentRole, - TUint32 aIndex) const - { - return (iBody->OmxComponentRoleEnum(aComponentRole, aIndex)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::GetComponentVersion(TILComponentVersion& aVersion) const - { - return (iBody->OmxGetComponentVersion(aVersion.iComponentName, - (OMX_VERSIONTYPE*)&aVersion.iComponentVersion, - (OMX_VERSIONTYPE*)&aVersion.iSpecVersion, - (OMX_UUIDTYPE*)&aVersion.iComponentUniqueID)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::SetComponentIfRole(const TUid& aComponentRole) - { - return (iBody->SetIfToRole(aComponentRole)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::SetComponentIfRole(const TDesC8& /*aComponentRole*/) - { - return (KErrNotSupported); - } - -EXPORT_C TInt COmxILDummyBaseILIF::GetComponentIfRole(TUid& aComponentRole) const - { - return (iBody->GetIfRole(aComponentRole)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::GetComponentIfRole(TDes8& /*aComponentRole*/) const - { - return (KErrNotSupported); - } - -EXPORT_C TInt COmxILDummyBaseILIF::SetExtConfig(const TDesC8& /*aParameterName*/, - const TILStruct& /*aConfig*/, - const MILComponentPortIf* /*aComponentPort*/) - { - // It should be implemented in the derived class - return (KErrNotSupported); - } - -EXPORT_C TInt COmxILDummyBaseILIF::GetExtConfig(const TDesC8& /*aParameterName*/, - TILStruct& /*aConfig*/, - const MILComponentPortIf* /*aComponentPort*/) const - { - // It should be implemented in the derived class - return (KErrNotSupported); - } -EXPORT_C TAny* COmxILDummyBaseILIF::CustomInterface(TUid aUid) - { - if (aUid == KUidILComponentIf) - { - MILComponentIf* componentIf = this; - return componentIf; - } - else - { - return NULL; - } - } - - -EXPORT_C TInt COmxILDummyBaseILIF::FillBufferDone(CMMFBuffer* aBuffer, - TInt aPortIndex) - { - return (iBody->FillBufferDone(aBuffer, aPortIndex)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::EmptyBufferDone(const CMMFBuffer* aBuffer, - TInt aPortIndex) - { - return (iBody->EmptyBufferDone(aBuffer, aPortIndex)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::EventHandler(OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - TAny* aExtraInfo) - { - return (iBody->EventHandler(aEvent, aData1, aData2, aExtraInfo)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::OmxGetParameter(OMX_INDEXTYPE aParamIndex, - TAny* aComponentParameterStructure) const - { - return (iBody->OmxGetParameter(aParamIndex, aComponentParameterStructure)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::OmxSetParameter(OMX_INDEXTYPE aParamIndex, - TAny* aComponentParameterStructure) - { - return (iBody->OmxSetParameter(aParamIndex, aComponentParameterStructure)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::OmxGetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* aValue) const - { - return (iBody->OmxGetConfig(aConfigIndex, aValue)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::OmxSetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* aValue) - { - return (iBody->OmxSetConfig(aConfigIndex, aValue)); - } - -EXPORT_C TInt COmxILDummyBaseILIF::OmxGetExtensionIndex(const TDesC8& aParameterName, - OMX_INDEXTYPE* aIndexType) const - { - return (iBody->OmxGetExtensionIndex(aParameterName, aIndexType)); - } - -TInt COmxILDummyBaseILIF::OmxSendCommand(OMX_COMMANDTYPE aCmd, - TUint32 aParam1, - TAny* aCmdData) - { - return (iBody->OmxSendCommand(aCmd, aParam1, aCmdData)); - } - -TInt COmxILDummyBaseILIF::OmxComponentTunnelRequest(TUint32 aPortInput, - OMX_HANDLETYPE aOutput, - TUint32 aPortOutput) - { - return (iBody->OmxComponentTunnelRequest(aPortInput, aOutput, aPortOutput)); - } - -TInt COmxILDummyBaseILIF::OmxComponentDisconnectTunnel(TUint32 aPortInput, - OMX_HANDLETYPE aOutput, - TUint32 aPortOutput) - { - return (iBody->OmxComponentDisconnectTunnel(aPortInput, aOutput, aPortOutput)); - } - -TInt COmxILDummyBaseILIF::OmxUseBuffer(CMMFBuffer* aBuffer, - TUint32 aPortIndex) - { - return (iBody->OmxUseBuffer(aBuffer, aPortIndex)); - } - -CMMFBuffer* COmxILDummyBaseILIF::OmxAllocateBufferL(TUint32 aPortIndex, - TUint32 aSizeBytes) - { - return (iBody->OmxAllocateBufferL(aPortIndex, aSizeBytes)); - } - -TInt COmxILDummyBaseILIF::OmxFreeBuffer(CMMFBuffer* aBuffer) - { - return (iBody->OmxFreeBuffer(aBuffer)); - } - -TInt COmxILDummyBaseILIF::OmxEmptyThisBuffer(const CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - return (iBody->OmxEmptyThisBuffer(aBuffer, aObserver)); - } - -TInt COmxILDummyBaseILIF::OmxFillThisBuffer(CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - return (iBody->OmxFillThisBuffer(aBuffer, aObserver)); - } - -OMX_COMPONENTTYPE* COmxILDummyBaseILIF::OmxHandle() const - { - return (iBody->Handle()); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseilifbody.cpp --- a/omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseilifbody.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,415 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "omxildummybaseilifbody.h" -#include "omxilcoreutils.h" -#include "omxilspecversion.h" -#include "milifobserver.h" -#include "tilstructtypes.h" - - -const TInt KMaxComponentNameLength = 128; - - -COmxILDummyBaseILIF::CBody::CBody(COmxILDummyBaseILIF& aParent, - MILIfObserver& aComponentIfObserver) - : - iParent(aParent), - iIfObserver(aComponentIfObserver) - { - } - -COmxILDummyBaseILIF::CBody::~CBody() - { - iInputPorts.ResetAndDestroy(); - iInputPorts.Close(); - iOutputPorts.ResetAndDestroy(); - iOutputPorts.Close(); - delete iBufferManager; - delete iCallbacks; - - ::OMX_FreeHandle(reinterpret_cast(iHandle)); - } - -COmxILDummyBaseILIF::CBody* COmxILDummyBaseILIF::CBody::NewL(COmxILDummyBaseILIF& aParent, - MILIfObserver& aComponentIfObserver, - const TDesC8& aComponentName) - { - CBody* self = new (ELeave) CBody(aParent, aComponentIfObserver); - CleanupStack::PushL(self); - self->ConstructL(aComponentName); - CleanupStack::Pop(self); - return self; - } - -void COmxILDummyBaseILIF::CBody::ConstructL(const TDesC8& aComponentName) - { - iCallbacks = COmxCallbacks::NewL(iParent); - - RBuf8 buf; - buf.CleanupClosePushL(); - buf.CreateL(aComponentName, KMaxComponentNameLength); - TUint8* name = const_cast(buf.PtrZ()); - - OMX_ERRORTYPE errorType = ::OMX_GetHandle(reinterpret_cast(&iHandle), - reinterpret_cast(name), - iCallbacks, - *iCallbacks); - CleanupStack::PopAndDestroy(&buf); - - User::LeaveIfError(ConvertOmxErrorType(errorType)); - - iBufferManager = new (ELeave) COmxBufferManager(iHandle); - } - -OMX_COMPONENTTYPE* COmxILDummyBaseILIF::CBody::Handle() const - { - return iHandle; - } - -TInt COmxILDummyBaseILIF::CBody::OmxGetComponentVersion(TPtr8 aComponentName, - OMX_VERSIONTYPE* aComponentVersion, - OMX_VERSIONTYPE* aSpecVersion, - OMX_UUIDTYPE* aComponentUUID) - { - ASSERT(aComponentVersion); - ASSERT(aSpecVersion); - ASSERT(aComponentUUID); - TUint8* cname = const_cast(aComponentName.PtrZ()); - OMX_ERRORTYPE error = iHandle->GetComponentVersion(reinterpret_cast(iHandle), - reinterpret_cast(cname), aComponentVersion, aSpecVersion, aComponentUUID); - - TLex8 lex(cname); - TInt length; - for( length = 0; !lex.Eos(); ++length ) - { - lex.Inc(); - } - aComponentName.SetLength(length); - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::OmxSendCommand(OMX_COMMANDTYPE aCmd, - TUint32 aParam, - TAny* aCmdData) - { - OMX_ERRORTYPE error = iHandle->SendCommand(reinterpret_cast(iHandle), aCmd, aParam, aCmdData); - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::OmxGetParameter(OMX_INDEXTYPE aParamIndex, - TAny* aValue) - { - ASSERT(aValue); - OMX_ERRORTYPE error = iHandle->GetParameter(reinterpret_cast(iHandle), aParamIndex, aValue); - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::OmxSetParameter(OMX_INDEXTYPE aIndex, - TAny* aValue) - { - ASSERT(aValue); - OMX_ERRORTYPE error = iHandle->SetParameter(reinterpret_cast(iHandle), aIndex, aValue); - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::OmxGetConfig(OMX_INDEXTYPE aIndex, - TAny* aValue) - { - ASSERT(aValue); - OMX_ERRORTYPE error = iHandle->GetConfig(reinterpret_cast(iHandle), aIndex, aValue); - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::OmxSetConfig(OMX_INDEXTYPE aIndex, - TAny* aValue) - { - ASSERT(aValue); - OMX_ERRORTYPE error = iHandle->SetConfig(reinterpret_cast(iHandle), aIndex, aValue); - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::OmxGetExtensionIndex(const TDesC8& aParameterName, - OMX_INDEXTYPE* aIndexType) -{ - HBufC8* buf = HBufC8::New(aParameterName.Length()+1); - if (buf == NULL) - { - return KErrNoMemory; - } - else - { - *buf = aParameterName; - TUint8* cstring = const_cast(buf->Des().PtrZ()); - OMX_ERRORTYPE error = iHandle->GetExtensionIndex(reinterpret_cast(iHandle), reinterpret_cast(cstring), aIndexType); - delete buf; - return ConvertOmxErrorType(error); - } - } - -TInt COmxILDummyBaseILIF::CBody::OmxGetState(OMX_STATETYPE* aState) - { - OMX_ERRORTYPE error = iHandle->GetState(reinterpret_cast(iHandle), aState); - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::OmxComponentTunnelRequest(TUint32 aPortInput, - OMX_HANDLETYPE aOutput, - TUint32 aPortOutput) - { - OMX_ERRORTYPE error = ::OMX_SetupTunnel(aOutput, aPortOutput, reinterpret_cast(iHandle), aPortInput); - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::OmxComponentDisconnectTunnel(TUint32 aPortInput, - OMX_HANDLETYPE aOutput, - TUint32 aPortOutput) - { - OMX_ERRORTYPE error = ::OMX_SetupTunnel(aOutput, aPortOutput, 0, 0); - if (error == OMX_ErrorNone) - { - error = ::OMX_SetupTunnel(0, 0, reinterpret_cast(iHandle), aPortInput); - } - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::OmxUseBuffer(CMMFBuffer* aBuffer, - TUint32 aPortIndex) - { - ASSERT(aBuffer); - return (iBufferManager->UseBuffer(*aBuffer, aPortIndex)); - } - -CMMFBuffer* COmxILDummyBaseILIF::CBody::OmxAllocateBufferL(TUint32 aPortIndex, - TUint32 aSizeBytes) - { - return (iBufferManager->AllocateBufferL(aPortIndex, aSizeBytes)); - } - -TInt COmxILDummyBaseILIF::CBody::OmxFreeBuffer(CMMFBuffer* aBuffer) - { - ASSERT(aBuffer); - return (iBufferManager->FreeBuffer(aBuffer)); - } - -TInt COmxILDummyBaseILIF::CBody::OmxEmptyThisBuffer(const CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - ASSERT(aBuffer); - return (iBufferManager->EmptyThisBuffer(aBuffer, aObserver)); - } - -TInt COmxILDummyBaseILIF::CBody::OmxFillThisBuffer(CMMFBuffer* aBuffer, - MOmxILComponentIfObserver* aObserver) - { - ASSERT(aBuffer); - return (iBufferManager->FillThisBuffer(aBuffer, aObserver)); - } - -TInt COmxILDummyBaseILIF::CBody::OmxComponentRoleEnum(TPtr8& aComponentRole, - TUint32 aIndex) - { - TUint8* role = const_cast (aComponentRole.PtrZ()); - OMX_ERRORTYPE error = iHandle->ComponentRoleEnum(reinterpret_cast(iHandle), reinterpret_cast(role), aIndex); - - TLex8 lex(role); - TInt length; - for( length = 0; !lex.Eos(); ++length ) - { - lex.Inc(); - } - aComponentRole.SetLength(length); - - return ConvertOmxErrorType(error); - } - -TInt COmxILDummyBaseILIF::CBody::SetIfToRole(const TUid& aComponentRole) - { - iFormat = aComponentRole; - return KErrNone; - } - -TInt COmxILDummyBaseILIF::CBody::GetIfRole(TUid& aComponentRole) const - { - aComponentRole = iFormat; - return KErrNone; - } - -TInt COmxILDummyBaseILIF::CBody::SetPortsL() - { - OMX_PORT_PARAM_TYPE param; - param.nVersion = KOMXILSpecVersion; - param.nSize = sizeof(OMX_PORT_PARAM_TYPE); - TInt err = OmxGetParameter(OMX_IndexParamAudioInit, ¶m); - - if (err == KErrNone) - { - for (TInt i=0; i < param.nPorts && err == KErrNone; i++ ) - { - OMX_PARAM_PORTDEFINITIONTYPE portInfo; - portInfo.nPortIndex = i; - portInfo.nVersion = KOMXILSpecVersion; - portInfo.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - err = OmxGetParameter(OMX_IndexParamPortDefinition, &portInfo); - if (err == KErrNone) - { - if (portInfo.eDir == OMX_DirInput) - { - COmxILDummyBasePortILIF* inputPort = COmxILDummyBasePortILIF::NewL(iParent, EDirInput, portInfo.nPortIndex); - err = iInputPorts.Append(inputPort); - } - else - { - COmxILDummyBasePortILIF* outputPort = COmxILDummyBasePortILIF::NewL(iParent, EDirOutput, portInfo.nPortIndex); - err = iOutputPorts.Append(outputPort); - } - } - } - } - return err; - } - -TInt COmxILDummyBaseILIF::CBody::GetComponentPorts(RPointerArray& aComponentPorts, - OMX_DIRTYPE aDirection) - { - TInt err = KErrNone; - if (aDirection == OMX_DirInput) - { - const TInt counter = iInputPorts.Count(); - for (TInt i=0; i < counter && err == KErrNone; i++ ) - { - err = aComponentPorts.Append(iInputPorts[i]); - } - } - else if (aDirection == OMX_DirOutput) - { - const TInt counter = iOutputPorts.Count(); - for (TInt i=0; i < counter && err == KErrNone; i++ ) - { - err = aComponentPorts.Append(iOutputPorts[i]); - } - } - else - { - err = KErrNotSupported; - } - return err; - } - -TInt COmxILDummyBaseILIF::CBody::FillBufferDone(CMMFBuffer* aBuffer, - TInt aPortIndex) - { - ASSERT(aBuffer); - // Loop through all output ports to search for the interface associated to this port index - const TInt counter = iOutputPorts.Count(); - for (TInt i=0; i < counter; i++ ) - { - if (iOutputPorts[i]->PortIndex() == aPortIndex) - { - return (iIfObserver.BufferDelivered(iOutputPorts[i], aBuffer)); - } - } - - return KErrNotFound; - } - -TInt COmxILDummyBaseILIF::CBody::EmptyBufferDone(const CMMFBuffer* aBuffer, - TInt aPortIndex) - { - ASSERT(aBuffer); - // Loop through all input ports to search for the interface associated to this port index - const TInt counter = iInputPorts.Count(); - for (TInt i=0; i < counter; i++ ) - { - if (iInputPorts[i]->PortIndex() == aPortIndex) - { - return (iIfObserver.BufferDelivered(iInputPorts[i], aBuffer)); - } - } - - return KErrNotFound; - } - -TInt COmxILDummyBaseILIF::CBody::EventHandler(OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - TAny* /*aExtraInfo*/) - { - TInt err = KErrNone; - TILEvent thisEvent; - - switch (aEvent) - { - case OMX_EventCmdComplete: - { - thisEvent.iEvent = EEventCmdComplete; - if (aData1 == OMX_CommandStateSet) - { - thisEvent.iData1 = ECommandStateSet; - OMX_STATETYPE state = static_cast(aData2); - thisEvent.iData2 = ConvertOmxState(state); - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - break; - } - else if (aData1 == OMX_CommandFlush) - { - thisEvent.iData1 = ECommandFlush; - thisEvent.iData2 = aData2; // Port index - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - } - else if (aData1 == OMX_CommandPortDisable) - { - thisEvent.iData1 = ECommandPortDisable; - thisEvent.iData2 = aData2; // Port index - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - } - else if (aData1 == OMX_CommandPortEnable) - { - thisEvent.iData1 = ECommandPortEnable; - thisEvent.iData2 = aData2; // Port index - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - } - else - { - err = KErrNotSupported; - } - - break; - } - case OMX_EventBufferFlag: - { - // Propagate the EOF up to client as KErrUnderflow - thisEvent.iEvent = EEventBufferFlag; - thisEvent.iData1 = aData1; - thisEvent.iData2 = static_cast(KErrUnderflow); - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - break; - } - case OMX_EventError: - { - // Propagate the error up to client - thisEvent.iEvent = EEventError; - OMX_ERRORTYPE errorx = static_cast(aData1); - thisEvent.iData1 = ConvertOmxErrorType(errorx); - err = iIfObserver.MsgFromILComponent(&iParent, thisEvent); - break; - } - default: - { - err = KErrNotSupported; - } - } - return err; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseilifbody.h --- a/omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseilifbody.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// omxildummybaseifilbody.h -// -// - -#ifndef OMXILDUMMYBASEIFILBODY_H -#define OMXILDUMMYBASEIFILBODY_H - - -#include "omxildummybaseilif.h" -#include "omxildummybaseportilif.h" -#include "omxilgenericilifbodyimpl.h" -#include -#include - - -/** -Body implementation of the COmxILDummyBaseILIF specific to OpenMAX specification. -*/ -class COmxILDummyBaseILIF::CBody : public CBase - { -public: - static CBody* NewL(COmxILDummyBaseILIF& aParent, - MILIfObserver& aComponentIfObserver, - const TDesC8& aComponentName); - ~CBody(); - - OMX_COMPONENTTYPE* Handle() const; - - TInt OmxGetComponentVersion(TPtr8 aComponentName, OMX_VERSIONTYPE* aComponentVersion, OMX_VERSIONTYPE* aSpecVersion, OMX_UUIDTYPE* aComponentUUID); - TInt OmxSendCommand(OMX_COMMANDTYPE aCmd, TUint32 aParam1, TAny* aCmdData); - TInt OmxGetParameter(OMX_INDEXTYPE aParamIndex, TAny* aComponentParameterStructure); - TInt OmxSetParameter(OMX_INDEXTYPE aIndex, TAny* aComponentParameterStructure); - TInt OmxGetConfig(OMX_INDEXTYPE aIndex, TAny* aValue); - TInt OmxSetConfig(OMX_INDEXTYPE aIndex, TAny* aValue); - TInt OmxGetExtensionIndex(const TDesC8& aParameterName, OMX_INDEXTYPE* aIndexType); - TInt OmxGetState(OMX_STATETYPE* aState); - TInt OmxComponentTunnelRequest(TUint32 aPortInput, OMX_HANDLETYPE aOutput, TUint32 aPortOutput); - TInt OmxComponentDisconnectTunnel(TUint32 aPortInput, OMX_HANDLETYPE aOutput, TUint32 aPortOutput); - TInt OmxUseBuffer(CMMFBuffer* aBuffer, TUint32 aPortIndex); - CMMFBuffer* OmxAllocateBufferL(TUint32 aPortIndex, TUint32 aSizeBytes); - TInt OmxFreeBuffer(CMMFBuffer* aBuffer); - TInt OmxEmptyThisBuffer(const CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - TInt OmxFillThisBuffer(CMMFBuffer* aBuffer, MOmxILComponentIfObserver* aObserver); - TInt OmxComponentRoleEnum(TPtr8& aComponentRole, TUint32 aIndex); - - TInt SetIfToRole(const TUid& aComponentRole); - TInt GetIfRole(TUid& aComponentRole) const; - - TInt GetComponentPorts(RPointerArray& aComponentPorts, OMX_DIRTYPE); - TInt SetPortsL(); - - TInt FillBufferDone(CMMFBuffer* aBuffer, TInt aPortIndex); - TInt EmptyBufferDone(const CMMFBuffer* aBuffer, TInt aPortIndex); - TInt EventHandler(OMX_EVENTTYPE aEvent, TUint32 aData1, TUint32 aData2, TAny* aExtraInfo); - -private: - CBody(COmxILDummyBaseILIF& aParent, MILIfObserver& aComponentIfObserver); - void ConstructL(const TDesC8& aComponentName); - -private: - - OMX_COMPONENTTYPE* iHandle; - - RPointerArray iInputPorts; - RPointerArray iOutputPorts; - - COmxBufferManager* iBufferManager; - COmxCallbacks* iCallbacks; - - COmxILDummyBaseILIF& iParent; - MILIfObserver& iIfObserver; - - TUid iFormat; - }; - -#endif // OMXILDUMMYBASEIFILBODY_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseportilif.cpp --- a/omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseportilif.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "omxildummybaseportilif.h" - -/** -class COmxILDummyBasePortILIF -Concrete implementation of the MILComponentPortIf that encapsulates the -component's port specific behaviour according to OpenMAX specification. -*/ -COmxILDummyBasePortILIF::COmxILDummyBasePortILIF(COmxILDummyBaseILIF& aParent, - TPortDirection aPortDirection, - TInt aIndex) - : - iPortDirection (aPortDirection), - iPortIndex (aIndex), - iPortComponent(aParent), - iTunneledPort(NULL) - { - } - -COmxILDummyBasePortILIF* COmxILDummyBasePortILIF::NewL(COmxILDummyBaseILIF& aParent, - TPortDirection aPortDirection, - TInt aIndex) - { - COmxILDummyBasePortILIF* self = new (ELeave) COmxILDummyBasePortILIF(aParent, aPortDirection, aIndex); - return self; - } -TInt COmxILDummyBasePortILIF::FillThisBuffer(CMMFBuffer& aBuffer) - { - if (iPortDirection == EDirOutput) - { - return iPortComponent.OmxFillThisBuffer(&aBuffer, &iPortComponent); - } - else - { - return KErrCorrupt; - } - } - -TInt COmxILDummyBasePortILIF::EmptyThisBuffer(const CMMFBuffer& aBuffer) - { - if (iPortDirection == EDirInput) - { - return iPortComponent.OmxEmptyThisBuffer(&aBuffer, &iPortComponent); - } - else - { - return KErrCorrupt; - } - } - -TInt COmxILDummyBasePortILIF::TunnelRequest(MILComponentPortIf* aPort) - { - TInt error = KErrNotSupported; - - if (aPort) - // This is the connet tunnel request - { - TPortDirection otherPortDir = aPort->PortDirection(); - COmxILDummyBaseILIF* otherPortComponent = static_cast (aPort->PortComponent()); - - if (iPortDirection != otherPortDir) - { - if (iPortDirection == EDirInput) - { - error = iPortComponent.OmxComponentTunnelRequest(iPortIndex, - otherPortComponent->OmxHandle(), - aPort->PortIndex()); - } - else - { - error = otherPortComponent->OmxComponentTunnelRequest(aPort->PortIndex(), - iPortComponent.OmxHandle(), - iPortIndex); - } - - if (error == KErrNone) - { - iTunneledPort = static_cast(aPort); - iTunneledPort->SetPortConnectedTo(this); - } - } - } - else - // This is the disconnet tunnel request - { - - TPortDirection otherPortDir = iTunneledPort->PortDirection(); - COmxILDummyBaseILIF* otherPortComponent = static_cast (iTunneledPort->PortComponent()); - - if (iPortDirection != otherPortDir) - { - if (iPortDirection == EDirInput) - { - error = iPortComponent.OmxComponentDisconnectTunnel(iPortIndex, - otherPortComponent->OmxHandle(), - iTunneledPort->PortIndex()); - } - else - { - error = otherPortComponent->OmxComponentDisconnectTunnel(iTunneledPort->PortIndex(), - iPortComponent.OmxHandle(), - iPortIndex); - } - - if (error == KErrNone) - { - iTunneledPort->SetPortConnectedTo(NULL); - iTunneledPort = NULL; - } - } - } - return error; - } - -TInt COmxILDummyBasePortILIF::PortIndex() const - { - return iPortIndex; - } - -TPortDirection COmxILDummyBasePortILIF::PortDirection() const - { - return iPortDirection; - } - -CMMFBuffer* COmxILDummyBasePortILIF::CreateBufferL(TInt aBufferSize) - { - return iPortComponent.OmxAllocateBufferL(iPortIndex, aBufferSize); - } - -TInt COmxILDummyBasePortILIF::UseBuffer(CMMFBuffer& aBuffer) - { - return iPortComponent.OmxUseBuffer(&aBuffer, iPortIndex); - } - -TInt COmxILDummyBasePortILIF::FreeBuffer(CMMFBuffer* aBuffer) - { - return iPortComponent.OmxFreeBuffer(aBuffer); - } - -TInt COmxILDummyBasePortILIF::FlushPort() - { - return iPortComponent.OmxSendCommand(OMX_CommandFlush, iPortIndex, NULL); - } - -TInt COmxILDummyBasePortILIF::EnablePort() - { - return iPortComponent.OmxSendCommand(OMX_CommandPortEnable, iPortIndex, NULL); - } - -TInt COmxILDummyBasePortILIF::DisablePort() - { - return iPortComponent.OmxSendCommand(OMX_CommandPortDisable, iPortIndex, NULL); - } - -MILComponentIf* COmxILDummyBasePortILIF::PortComponent() const - { - return &iPortComponent; - } - - -void COmxILDummyBasePortILIF::SetPortConnectedTo(COmxILDummyBasePortILIF* aPort) - { - iTunneledPort = aPort; - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseportilif.h --- a/omxil/mmilapi/unittest/test_plugins/omxildummybaseilif/omxildummybaseportilif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYBASEPORTILIF_H -#define OMXILDUMMYBASEPORTILIF_H - -#include "milcomponentportif.h" -#include "omxildummybaseilif.h" - - -/** -Concrete implementation of the MILComponentPortIf that encapsulates the -component's port specific behaviour according to OpenMAX specification. -*/ -class COmxILDummyBasePortILIF : public CBase, - public MILComponentPortIf - { -public: - static COmxILDummyBasePortILIF* NewL(COmxILDummyBaseILIF& aParent, TPortDirection aPortDirection, TInt aIndex); - - // MILComponentPortIf - TInt FillThisBuffer(CMMFBuffer& aBuffer); - TInt EmptyThisBuffer(const CMMFBuffer& aBuffer); - TInt TunnelRequest(MILComponentPortIf* aPort); - TInt PortIndex() const; - TPortDirection PortDirection() const; - CMMFBuffer* CreateBufferL(TInt aBufferSize); - TInt UseBuffer(CMMFBuffer& aBuffer); - TInt FreeBuffer(CMMFBuffer* aBuffer); - TInt FlushPort(); - TInt EnablePort(); - TInt DisablePort(); - MILComponentIf* PortComponent() const; - - void SetPortConnectedTo(COmxILDummyBasePortILIF* aPort); -private: - COmxILDummyBasePortILIF(COmxILDummyBaseILIF& aParent, TPortDirection aPortDirection, TInt aIndex); - -private: - TPortDirection iPortDirection; - TInt iPortIndex; - - COmxILDummyBaseILIF& iPortComponent; - COmxILDummyBasePortILIF* iTunneledPort; - }; - -#endif // OMXILDUMMYBASEPORTILIF_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/group/bld.inf --- a/omxil/omxilapi/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -PRJ_EXPORTS -// Khronos OpenMAX IL API -../v1_x/OMX_Core.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_Core.h) -../v1_x/OMX_Component.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_Component.h) -../v1_x/OMX_Index.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_Index.h) -../v1_x/OMX_Audio.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_Audio.h) -../v1_x/OMX_Video.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_Video.h) -../v1_x/OMX_IVCommon.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_IVCommon.h) -../v1_x/OMX_Image.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_Image.h) -../v1_x/OMX_Types.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_Types.h) -../v1_x/OMX_Other.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_Other.h) -../v1_x/OMX_ContentPipe.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/khronos/v1_x/OMX_ContentPipe.h) - -// -// Files above are listed in \epoc32\tools\filenamepolicyexclusions.txt. -// They are exported in CamelCase instead of lower case. -// If a new header is added to the export, e.g. OMX_ContentPipe.h, the name -// should be added to filenamepolicyexclusions.txt ahead of time. Otherwise -// checksource will flag it as error. -// filenamepolicyexclusions.txt is in \src\cedar\generic\tools\e32toolp\platform diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/group/multimedia_omx_il_api.mrp --- a/omxil/omxilapi/group/multimedia_omx_il_api.mrp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -# multimedia_omx_il_api.mrp -# -# Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "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: -# -# Description: -# - -component multimedia_omx_il_api - -source \sf\os\mm\omxil\omxilapi - -# no binaries - -exports \sf\os\mm\omxil\omxilapi\group - -notes_source \component_defs\release.src - - -ipr E diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/v1_x/OMX_Audio.h --- a/omxil/omxilapi/v1_x/OMX_Audio.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1312 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** @file - * OpenMax IL version 1.1.2 - * The structures needed by Audio components to exchange - * parameters and configuration data with the componenmilts. - */ - -#ifndef OMX_Audio_h -#define OMX_Audio_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/* Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include - -/** @defgroup midi MIDI - * @ingroup audio - */ - -/** @defgroup effects Audio effects - * @ingroup audio - */ - -/** @defgroup audio OpenMAX IL Audio Domain - * Structures for OpenMAX IL Audio domain - * @{ - */ - -/** Enumeration used to define the possible audio codings. - * If "OMX_AUDIO_CodingUnused" is selected, the coding selection must - * be done in a vendor specific way. Since this is for an audio - * processing element this enum is relevant. However, for another - * type of component other enums would be in this area. - */ -typedef enum OMX_AUDIO_CODINGTYPE { - OMX_AUDIO_CodingUnused = 0, /**< Placeholder value when coding is N/A */ - OMX_AUDIO_CodingAutoDetect, /**< auto detection of audio format */ - OMX_AUDIO_CodingPCM, /**< Any variant of PCM coding */ - OMX_AUDIO_CodingADPCM, /**< Any variant of ADPCM encoded data */ - OMX_AUDIO_CodingAMR, /**< Any variant of AMR encoded data */ - OMX_AUDIO_CodingGSMFR, /**< Any variant of GSM fullrate (i.e. GSM610) */ - OMX_AUDIO_CodingGSMEFR, /**< Any variant of GSM Enhanced Fullrate encoded data*/ - OMX_AUDIO_CodingGSMHR, /**< Any variant of GSM Halfrate encoded data */ - OMX_AUDIO_CodingPDCFR, /**< Any variant of PDC Fullrate encoded data */ - OMX_AUDIO_CodingPDCEFR, /**< Any variant of PDC Enhanced Fullrate encoded data */ - OMX_AUDIO_CodingPDCHR, /**< Any variant of PDC Halfrate encoded data */ - OMX_AUDIO_CodingTDMAFR, /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */ - OMX_AUDIO_CodingTDMAEFR, /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */ - OMX_AUDIO_CodingQCELP8, /**< Any variant of QCELP 8kbps encoded data */ - OMX_AUDIO_CodingQCELP13, /**< Any variant of QCELP 13kbps encoded data */ - OMX_AUDIO_CodingEVRC, /**< Any variant of EVRC encoded data */ - OMX_AUDIO_CodingSMV, /**< Any variant of SMV encoded data */ - OMX_AUDIO_CodingG711, /**< Any variant of G.711 encoded data */ - OMX_AUDIO_CodingG723, /**< Any variant of G.723 dot 1 encoded data */ - OMX_AUDIO_CodingG726, /**< Any variant of G.726 encoded data */ - OMX_AUDIO_CodingG729, /**< Any variant of G.729 encoded data */ - OMX_AUDIO_CodingAAC, /**< Any variant of AAC encoded data */ - OMX_AUDIO_CodingMP3, /**< Any variant of MP3 encoded data */ - OMX_AUDIO_CodingSBC, /**< Any variant of SBC encoded data */ - OMX_AUDIO_CodingVORBIS, /**< Any variant of VORBIS encoded data */ - OMX_AUDIO_CodingWMA, /**< Any variant of WMA encoded data */ - OMX_AUDIO_CodingRA, /**< Any variant of RA encoded data */ - OMX_AUDIO_CodingMIDI, /**< Any variant of MIDI encoded data */ - OMX_AUDIO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_CodingMax = 0x7FFFFFFF -} OMX_AUDIO_CODINGTYPE; - - -/** The PortDefinition structure is used to define all of the parameters - * necessary for the compliant component to setup an input or an output audio - * path. If additional information is needed to define the parameters of the - * port (such as frequency), additional structures must be sent such as the - * OMX_AUDIO_PARAM_PCMMODETYPE structure to supply the extra parameters for the port. - */ -typedef struct OMX_AUDIO_PORTDEFINITIONTYPE { - OMX_STRING cMIMEType; /**< MIME type of data for the port */ - OMX_NATIVE_DEVICETYPE pNativeRender; /** < platform specific reference - for an output device, - otherwise this field is 0 */ - OMX_BOOL bFlagErrorConcealment; /**< Turns on error concealment if it is - supported by the OMX component */ - OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this - port (e.g. PCM, AMR, MP3, etc) */ -} OMX_AUDIO_PORTDEFINITIONTYPE; - - -/** Port format parameter. This structure is used to enumerate - * the various data input/output format supported by the port. - */ -typedef struct OMX_AUDIO_PARAM_PORTFORMATTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Indicates which port to set */ - OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */ - OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this port (e.g. PCM, AMR, MP3, etc) */ -} OMX_AUDIO_PARAM_PORTFORMATTYPE; - - -/** PCM mode type */ -typedef enum OMX_AUDIO_PCMMODETYPE { - OMX_AUDIO_PCMModeLinear = 0, /**< Linear PCM encoded data */ - OMX_AUDIO_PCMModeALaw, /**< A law PCM encoded data (G.711) */ - OMX_AUDIO_PCMModeMULaw, /**< Mu law PCM encoded data (G.711) */ - OMX_AUDIO_PCMModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_PCMModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_PCMModeMax = 0x7FFFFFFF -} OMX_AUDIO_PCMMODETYPE; - - -typedef enum OMX_AUDIO_CHANNELTYPE { - OMX_AUDIO_ChannelNone = 0x0, /**< Unused or empty */ - OMX_AUDIO_ChannelLF = 0x1, /**< Left front */ - OMX_AUDIO_ChannelRF = 0x2, /**< Right front */ - OMX_AUDIO_ChannelCF = 0x3, /**< Center front */ - OMX_AUDIO_ChannelLS = 0x4, /**< Left surround */ - OMX_AUDIO_ChannelRS = 0x5, /**< Right surround */ - OMX_AUDIO_ChannelLFE = 0x6, /**< Low frequency effects */ - OMX_AUDIO_ChannelCS = 0x7, /**< Back surround */ - OMX_AUDIO_ChannelLR = 0x8, /**< Left rear. */ - OMX_AUDIO_ChannelRR = 0x9, /**< Right rear. */ - OMX_AUDIO_ChannelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_ChannelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_ChannelMax = 0x7FFFFFFF -} OMX_AUDIO_CHANNELTYPE; - -#define OMX_AUDIO_MAXCHANNELS 16 /**< maximum number distinct audio channels that a buffer may contain */ -#define OMX_MIN_PCMPAYLOAD_MSEC 5 /**< Minimum audio buffer payload size for uncompressed (PCM) audio */ - -/** PCM format description */ -typedef struct OMX_AUDIO_PARAM_PCMMODETYPE { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels (e.g. 2 for stereo) */ - OMX_NUMERICALDATATYPE eNumData; /**< indicates PCM data as signed or unsigned */ - OMX_ENDIANTYPE eEndian; /**< indicates PCM data as little or big endian */ - OMX_BOOL bInterleaved; /**< True for normal interleaved data; false for - non-interleaved data (e.g. block data) */ - OMX_U32 nBitPerSample; /**< Bit per sample */ - OMX_U32 nSamplingRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_AUDIO_PCMMODETYPE ePCMMode; /**< PCM mode enumeration */ - OMX_AUDIO_CHANNELTYPE eChannelMapping[OMX_AUDIO_MAXCHANNELS]; /**< Slot i contains channel defined by eChannelMap[i] */ - -} OMX_AUDIO_PARAM_PCMMODETYPE; - - -/** Audio channel mode. This is used by both AAC and MP3, although the names are more appropriate - * for the MP3. For example, JointStereo for MP3 is CouplingChannels for AAC. - */ -typedef enum OMX_AUDIO_CHANNELMODETYPE { - OMX_AUDIO_ChannelModeStereo = 0, /**< 2 channels, the bitrate allocation between those - two channels changes accordingly to each channel information */ - OMX_AUDIO_ChannelModeJointStereo, /**< mode that takes advantage of what is common between - 2 channels for higher compression gain */ - OMX_AUDIO_ChannelModeDual, /**< 2 mono-channels, each channel is encoded with half - the bitrate of the overall bitrate */ - OMX_AUDIO_ChannelModeMono, /**< Mono channel mode */ - OMX_AUDIO_ChannelModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_ChannelModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_ChannelModeMax = 0x7FFFFFFF -} OMX_AUDIO_CHANNELMODETYPE; - - -typedef enum OMX_AUDIO_MP3STREAMFORMATTYPE { - OMX_AUDIO_MP3StreamFormatMP1Layer3 = 0, /**< MP3 Audio MPEG 1 Layer 3 Stream format */ - OMX_AUDIO_MP3StreamFormatMP2Layer3, /**< MP3 Audio MPEG 2 Layer 3 Stream format */ - OMX_AUDIO_MP3StreamFormatMP2_5Layer3, /**< MP3 Audio MPEG2.5 Layer 3 Stream format */ - OMX_AUDIO_MP3StreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MP3StreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MP3StreamFormatMax = 0x7FFFFFFF -} OMX_AUDIO_MP3STREAMFORMATTYPE; - -/** MP3 params */ -typedef struct OMX_AUDIO_PARAM_MP3TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should - limit the audio signal. Use 0 to let encoder decide */ - OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ - OMX_AUDIO_MP3STREAMFORMATTYPE eFormat; /**< MP3 stream format */ -} OMX_AUDIO_PARAM_MP3TYPE; - - -typedef enum OMX_AUDIO_AACSTREAMFORMATTYPE { - OMX_AUDIO_AACStreamFormatMP2ADTS = 0, /**< AAC Audio Data Transport Stream 2 format */ - OMX_AUDIO_AACStreamFormatMP4ADTS, /**< AAC Audio Data Transport Stream 4 format */ - OMX_AUDIO_AACStreamFormatMP4LOAS, /**< AAC Low Overhead Audio Stream format */ - OMX_AUDIO_AACStreamFormatMP4LATM, /**< AAC Low overhead Audio Transport Multiplex */ - OMX_AUDIO_AACStreamFormatADIF, /**< AAC Audio Data Interchange Format */ - OMX_AUDIO_AACStreamFormatMP4FF, /**< AAC inside MPEG-4/ISO File Format */ - OMX_AUDIO_AACStreamFormatRAW, /**< AAC Raw Format */ - OMX_AUDIO_AACStreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AACStreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AACStreamFormatMax = 0x7FFFFFFF -} OMX_AUDIO_AACSTREAMFORMATTYPE; - - -/** AAC mode type. Note that the term profile is used with the MPEG-2 - * standard and the term object type and profile is used with MPEG-4 */ -typedef enum OMX_AUDIO_AACPROFILETYPE{ - OMX_AUDIO_AACObjectNull = 0, /**< Null, not used */ - OMX_AUDIO_AACObjectMain = 1, /**< AAC Main object */ - OMX_AUDIO_AACObjectLC, /**< AAC Low Complexity object (AAC profile) */ - OMX_AUDIO_AACObjectSSR, /**< AAC Scalable Sample Rate object */ - OMX_AUDIO_AACObjectLTP, /**< AAC Long Term Prediction object */ - OMX_AUDIO_AACObjectHE, /**< AAC High Efficiency (object type SBR, HE-AAC profile) */ - OMX_AUDIO_AACObjectScalable, /**< AAC Scalable object */ - OMX_AUDIO_AACObjectERLC = 17, /**< ER AAC Low Complexity object (Error Resilient AAC-LC) */ - OMX_AUDIO_AACObjectLD = 23, /**< AAC Low Delay object (Error Resilient) */ - OMX_AUDIO_AACObjectHE_PS = 29, /**< AAC High Efficiency with Parametric Stereo coding (HE-AAC v2, object type PS) */ - OMX_AUDIO_AACObjectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AACObjectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AACObjectMax = 0x7FFFFFFF -} OMX_AUDIO_AACPROFILETYPE; - - -/** AAC tool usage (for nAACtools in OMX_AUDIO_PARAM_AACPROFILETYPE). - * Required for encoder configuration and optional as decoder info output. - * For MP3, OMX_AUDIO_CHANNELMODETYPE is sufficient. */ -#define OMX_AUDIO_AACToolNone 0x00000000 /**< no AAC tools allowed (encoder config) or active (decoder info output) */ -#define OMX_AUDIO_AACToolMS 0x00000001 /**< MS: Mid/side joint coding tool allowed or active */ -#define OMX_AUDIO_AACToolIS 0x00000002 /**< IS: Intensity stereo tool allowed or active */ -#define OMX_AUDIO_AACToolTNS 0x00000004 /**< TNS: Temporal Noise Shaping tool allowed or active */ -#define OMX_AUDIO_AACToolPNS 0x00000008 /**< PNS: MPEG-4 Perceptual Noise substitution tool allowed or active */ -#define OMX_AUDIO_AACToolLTP 0x00000010 /**< LTP: MPEG-4 Long Term Prediction tool allowed or active */ -#define OMX_AUDIO_AACToolAll 0x7FFFFFFF /**< all AAC tools allowed or active (*/ - -/** MPEG-4 AAC error resilience (ER) tool usage (for nAACERtools in OMX_AUDIO_PARAM_AACPROFILETYPE). - * Required for ER encoder configuration and optional as decoder info output */ -#define OMX_AUDIO_AACERNone 0x00000000 /**< no AAC ER tools allowed/used */ -#define OMX_AUDIO_AACERVCB11 0x00000001 /**< VCB11: Virtual Code Books for AAC section data */ -#define OMX_AUDIO_AACERRVLC 0x00000002 /**< RVLC: Reversible Variable Length Coding */ -#define OMX_AUDIO_AACERHCR 0x00000004 /**< HCR: Huffman Codeword Reordering */ -#define OMX_AUDIO_AACERAll 0x7FFFFFFF /**< all AAC ER tools allowed/used */ - - -/** AAC params */ -typedef struct OMX_AUDIO_PARAM_AACPROFILETYPE { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should - limit the audio signal. Use 0 to let encoder decide */ - OMX_U32 nFrameLength; /**< Frame length (in audio samples per channel) of the codec. - Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD). - Use 0 to let encoder decide */ - OMX_U32 nAACtools; /**< AAC tool usage */ - OMX_U32 nAACERtools; /**< MPEG-4 AAC error resilience tool usage */ - OMX_AUDIO_AACPROFILETYPE eAACProfile; /**< AAC profile enumeration */ - OMX_AUDIO_AACSTREAMFORMATTYPE eAACStreamFormat; /**< AAC stream format enumeration */ - OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ -} OMX_AUDIO_PARAM_AACPROFILETYPE; - - -/** VORBIS params */ -typedef struct OMX_AUDIO_PARAM_VORBISTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate of the encoded data data. Use 0 for variable - rate or unknown bit rates. Encoding is set to the - bitrate closest to specified value (in bps) */ - OMX_U32 nMinBitRate; /**< Sets minimum bitrate (in bps). */ - OMX_U32 nMaxBitRate; /**< Sets maximum bitrate (in bps). */ - - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should - limit the audio signal. Use 0 to let encoder decide */ - OMX_S32 nQuality; /**< Sets encoding quality to n, between -1 (low) and 10 (high). - In the default mode of operation, teh quality level is 3. - Normal quality range is 0 - 10. */ - OMX_BOOL bManaged; /**< Set bitrate management mode. This turns off the - normal VBR encoding, but allows hard or soft bitrate - constraints to be enforced by the encoder. This mode can - be slower, and may also be lower quality. It is - primarily useful for streaming. */ - OMX_BOOL bDownmix; /**< Downmix input from stereo to mono (has no effect on - non-stereo streams). Useful for lower-bitrate encoding. */ -} OMX_AUDIO_PARAM_VORBISTYPE; - - -/** WMA Version */ -typedef enum OMX_AUDIO_WMAFORMATTYPE { - OMX_AUDIO_WMAFormatUnused = 0, /**< format unused or unknown */ - OMX_AUDIO_WMAFormat7, /**< Windows Media Audio format 7 */ - OMX_AUDIO_WMAFormat8, /**< Windows Media Audio format 8 */ - OMX_AUDIO_WMAFormat9, /**< Windows Media Audio format 9 */ - OMX_AUDIO_WMAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_WMAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_WMAFormatMax = 0x7FFFFFFF -} OMX_AUDIO_WMAFORMATTYPE; - - -/** WMA Profile */ -typedef enum OMX_AUDIO_WMAPROFILETYPE { - OMX_AUDIO_WMAProfileUnused = 0, /**< profile unused or unknown */ - OMX_AUDIO_WMAProfileL1, /**< Windows Media audio version 9 profile L1 */ - OMX_AUDIO_WMAProfileL2, /**< Windows Media audio version 9 profile L2 */ - OMX_AUDIO_WMAProfileL3, /**< Windows Media audio version 9 profile L3 */ - OMX_AUDIO_WMAProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_WMAProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_WMAProfileMax = 0x7FFFFFFF -} OMX_AUDIO_WMAPROFILETYPE; - - -/** WMA params */ -typedef struct OMX_AUDIO_PARAM_WMATYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U16 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_AUDIO_WMAFORMATTYPE eFormat; /**< Version of WMA stream / data */ - OMX_AUDIO_WMAPROFILETYPE eProfile; /**< Profile of WMA stream / data */ - OMX_U32 nSamplingRate; /**< Sampling rate of the source data */ - OMX_U16 nBlockAlign; /**< is the block alignment, or block size, in bytes of the audio codec */ - OMX_U16 nEncodeOptions; /**< WMA Type-specific data */ - OMX_U32 nSuperBlockAlign; /**< WMA Type-specific data */ -} OMX_AUDIO_PARAM_WMATYPE; - -/** - * RealAudio format - */ -typedef enum OMX_AUDIO_RAFORMATTYPE { - OMX_AUDIO_RAFormatUnused = 0, /**< Format unused or unknown */ - OMX_AUDIO_RA8, /**< RealAudio 8 codec */ - OMX_AUDIO_RA9, /**< RealAudio 9 codec */ - OMX_AUDIO_RA10_AAC, /**< MPEG-4 AAC codec for bitrates of more than 128kbps */ - OMX_AUDIO_RA10_CODEC, /**< RealAudio codec for bitrates less than 128 kbps */ - OMX_AUDIO_RA10_LOSSLESS, /**< RealAudio Lossless */ - OMX_AUDIO_RA10_MULTICHANNEL, /**< RealAudio Multichannel */ - OMX_AUDIO_RA10_VOICE, /**< RealAudio Voice for bitrates below 15 kbps */ - OMX_AUDIO_RAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_RAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_RAFormatMax = 0x7FFFFFFF -} OMX_AUDIO_RAFORMATTYPE; - -/** RA (Real Audio) params */ -typedef struct OMX_AUDIO_PARAM_RATYPE { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nSamplingRate; /**< is the sampling rate of the source data */ - OMX_U32 nBitsPerFrame; /**< is the value for bits per frame */ - OMX_U32 nSamplePerFrame; /**< is the value for samples per frame */ - OMX_U32 nCouplingQuantBits; /**< is the number of coupling quantization bits in the stream */ - OMX_U32 nCouplingStartRegion; /**< is the coupling start region in the stream */ - OMX_U32 nNumRegions; /**< is the number of regions value */ - OMX_AUDIO_RAFORMATTYPE eFormat; /**< is the RealAudio audio format */ -} OMX_AUDIO_PARAM_RATYPE; - - -/** SBC Allocation Method Type */ -typedef enum OMX_AUDIO_SBCALLOCMETHODTYPE { - OMX_AUDIO_SBCAllocMethodLoudness, /**< Loudness allocation method */ - OMX_AUDIO_SBCAllocMethodSNR, /**< SNR allocation method */ - OMX_AUDIO_SBCAllocMethodKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_SBCAllocMethodVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_SBCAllocMethodMax = 0x7FFFFFFF -} OMX_AUDIO_SBCALLOCMETHODTYPE; - - -/** SBC params */ -typedef struct OMX_AUDIO_PARAM_SBCTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ - OMX_U32 nBlocks; /**< Number of blocks */ - OMX_U32 nSubbands; /**< Number of subbands */ - OMX_U32 nBitPool; /**< Bitpool value */ - OMX_BOOL bEnableBitrate; /**< Use bitrate value instead of bitpool */ - OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */ - OMX_AUDIO_SBCALLOCMETHODTYPE eSBCAllocType; /**< SBC Allocation method type */ -} OMX_AUDIO_PARAM_SBCTYPE; - - -/** ADPCM stream format parameters */ -typedef struct OMX_AUDIO_PARAM_ADPCMTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_U32 nBitsPerSample; /**< Number of bits in each sample */ - OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for - variable or unknown sampling rate. */ -} OMX_AUDIO_PARAM_ADPCMTYPE; - - -/** G723 rate */ -typedef enum OMX_AUDIO_G723RATE { - OMX_AUDIO_G723ModeUnused = 0, /**< AMRNB Mode unused / unknown */ - OMX_AUDIO_G723ModeLow, /**< 5300 bps */ - OMX_AUDIO_G723ModeHigh, /**< 6300 bps */ - OMX_AUDIO_G723ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_G723ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_G723ModeMax = 0x7FFFFFFF -} OMX_AUDIO_G723RATE; - - -/** G723 - Sample rate must be 8 KHz */ -typedef struct OMX_AUDIO_PARAM_G723TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_AUDIO_G723RATE eBitRate; /**< todo: Should this be moved to a config? */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ - OMX_BOOL bPostFilter; /**< Enable Post Filter */ -} OMX_AUDIO_PARAM_G723TYPE; - - -/** ITU G726 (ADPCM) rate */ -typedef enum OMX_AUDIO_G726MODE { - OMX_AUDIO_G726ModeUnused = 0, /**< G726 Mode unused / unknown */ - OMX_AUDIO_G726Mode16, /**< 16 kbps */ - OMX_AUDIO_G726Mode24, /**< 24 kbps */ - OMX_AUDIO_G726Mode32, /**< 32 kbps, most common rate, also G721 */ - OMX_AUDIO_G726Mode40, /**< 40 kbps */ - OMX_AUDIO_G726ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_G726ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_G726ModeMax = 0x7FFFFFFF -} OMX_AUDIO_G726MODE; - - -/** G.726 stream format parameters - must be at 8KHz */ -typedef struct OMX_AUDIO_PARAM_G726TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_AUDIO_G726MODE eG726Mode; -} OMX_AUDIO_PARAM_G726TYPE; - - -/** G729 coder type */ -typedef enum OMX_AUDIO_G729TYPE { - OMX_AUDIO_G729 = 0, /**< ITU G.729 encoded data */ - OMX_AUDIO_G729A, /**< ITU G.729 annex A encoded data */ - OMX_AUDIO_G729B, /**< ITU G.729 with annex B encoded data */ - OMX_AUDIO_G729AB, /**< ITU G.729 annexes A and B encoded data */ - OMX_AUDIO_G729KhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_G729VendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_G729Max = 0x7FFFFFFF -} OMX_AUDIO_G729TYPE; - - -/** G729 stream format parameters - fixed 6KHz sample rate */ -typedef struct OMX_AUDIO_PARAM_G729TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_AUDIO_G729TYPE eBitType; -} OMX_AUDIO_PARAM_G729TYPE; - - -/** AMR Frame format */ -typedef enum OMX_AUDIO_AMRFRAMEFORMATTYPE { - OMX_AUDIO_AMRFrameFormatConformance = 0, /**< Frame Format is AMR Conformance - (Standard) Format */ - OMX_AUDIO_AMRFrameFormatIF1, /**< Frame Format is AMR Interface - Format 1 */ - OMX_AUDIO_AMRFrameFormatIF2, /**< Frame Format is AMR Interface - Format 2*/ - OMX_AUDIO_AMRFrameFormatFSF, /**< Frame Format is AMR File Storage - Format */ - OMX_AUDIO_AMRFrameFormatRTPPayload, /**< Frame Format is AMR Real-Time - Transport Protocol Payload Format */ - OMX_AUDIO_AMRFrameFormatITU, /**< Frame Format is ITU Format (added at Motorola request) */ - OMX_AUDIO_AMRFrameFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AMRFrameFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AMRFrameFormatMax = 0x7FFFFFFF -} OMX_AUDIO_AMRFRAMEFORMATTYPE; - - -/** AMR band mode */ -typedef enum OMX_AUDIO_AMRBANDMODETYPE { - OMX_AUDIO_AMRBandModeUnused = 0, /**< AMRNB Mode unused / unknown */ - OMX_AUDIO_AMRBandModeNB0, /**< AMRNB Mode 0 = 4750 bps */ - OMX_AUDIO_AMRBandModeNB1, /**< AMRNB Mode 1 = 5150 bps */ - OMX_AUDIO_AMRBandModeNB2, /**< AMRNB Mode 2 = 5900 bps */ - OMX_AUDIO_AMRBandModeNB3, /**< AMRNB Mode 3 = 6700 bps */ - OMX_AUDIO_AMRBandModeNB4, /**< AMRNB Mode 4 = 7400 bps */ - OMX_AUDIO_AMRBandModeNB5, /**< AMRNB Mode 5 = 7950 bps */ - OMX_AUDIO_AMRBandModeNB6, /**< AMRNB Mode 6 = 10200 bps */ - OMX_AUDIO_AMRBandModeNB7, /**< AMRNB Mode 7 = 12200 bps */ - OMX_AUDIO_AMRBandModeWB0, /**< AMRWB Mode 0 = 6600 bps */ - OMX_AUDIO_AMRBandModeWB1, /**< AMRWB Mode 1 = 8850 bps */ - OMX_AUDIO_AMRBandModeWB2, /**< AMRWB Mode 2 = 12650 bps */ - OMX_AUDIO_AMRBandModeWB3, /**< AMRWB Mode 3 = 14250 bps */ - OMX_AUDIO_AMRBandModeWB4, /**< AMRWB Mode 4 = 15850 bps */ - OMX_AUDIO_AMRBandModeWB5, /**< AMRWB Mode 5 = 18250 bps */ - OMX_AUDIO_AMRBandModeWB6, /**< AMRWB Mode 6 = 19850 bps */ - OMX_AUDIO_AMRBandModeWB7, /**< AMRWB Mode 7 = 23050 bps */ - OMX_AUDIO_AMRBandModeWB8, /**< AMRWB Mode 8 = 23850 bps */ - OMX_AUDIO_AMRBandModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AMRBandModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AMRBandModeMax = 0x7FFFFFFF -} OMX_AUDIO_AMRBANDMODETYPE; - - -/** AMR Discontinuous Transmission mode */ -typedef enum OMX_AUDIO_AMRDTXMODETYPE { - OMX_AUDIO_AMRDTXModeOff = 0, /**< AMR Discontinuous Transmission Mode is disabled */ - OMX_AUDIO_AMRDTXModeOnVAD1, /**< AMR Discontinuous Transmission Mode using - Voice Activity Detector 1 (VAD1) is enabled */ - OMX_AUDIO_AMRDTXModeOnVAD2, /**< AMR Discontinuous Transmission Mode using - Voice Activity Detector 2 (VAD2) is enabled */ - OMX_AUDIO_AMRDTXModeOnAuto, /**< The codec will automatically select between - Off, VAD1 or VAD2 modes */ - - OMX_AUDIO_AMRDTXasEFR, /**< DTX as EFR instead of AMR standard (3GPP 26.101, frame type =8,9,10) */ - - OMX_AUDIO_AMRDTXModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_AMRDTXModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_AMRDTXModeMax = 0x7FFFFFFF -} OMX_AUDIO_AMRDTXMODETYPE; - - -/** AMR params */ -typedef struct OMX_AUDIO_PARAM_AMRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels */ - OMX_U32 nBitRate; /**< Bit rate read only field */ - OMX_AUDIO_AMRBANDMODETYPE eAMRBandMode; /**< AMR Band Mode enumeration */ - OMX_AUDIO_AMRDTXMODETYPE eAMRDTXMode; /**< AMR DTX Mode enumeration */ - OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat; /**< AMR frame format enumeration */ -} OMX_AUDIO_PARAM_AMRTYPE; - - -/** GSM_FR (ETSI 06.10, 3GPP 46.010) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_GSMFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_GSMFRTYPE; - - -/** GSM-HR (ETSI 06.20, 3GPP 46.020) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_GSMHRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_GSMHRTYPE; - - -/** GSM-EFR (ETSI 06.60, 3GPP 46.060) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_GSMEFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_GSMEFRTYPE; - - -/** TDMA FR (TIA/EIA-136-420, VSELP 7.95kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_TDMAFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_TDMAFRTYPE; - - -/** TDMA EFR (TIA/EIA-136-410, ACELP 7.4kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_TDMAEFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_TDMAEFRTYPE; - - -/** PDC FR ( RCR-27, VSELP 6.7kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_PDCFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_PDCFRTYPE; - - -/** PDC EFR ( RCR-27, ACELP 6.7kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_PDCEFRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_PDCEFRTYPE; - -/** PDC HR ( RCR-27, PSI-CELP 3.45kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_PDCHRTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */ - OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */ -} OMX_AUDIO_PARAM_PDCHRTYPE; - - -/** CDMA Rate types */ -typedef enum OMX_AUDIO_CDMARATETYPE { - OMX_AUDIO_CDMARateBlank = 0, /**< CDMA encoded frame is blank */ - OMX_AUDIO_CDMARateFull, /**< CDMA encoded frame in full rate */ - OMX_AUDIO_CDMARateHalf, /**< CDMA encoded frame in half rate */ - OMX_AUDIO_CDMARateQuarter, /**< CDMA encoded frame in quarter rate */ - OMX_AUDIO_CDMARateEighth, /**< CDMA encoded frame in eighth rate (DTX)*/ - OMX_AUDIO_CDMARateErasure, /**< CDMA erasure frame */ - OMX_AUDIO_CDMARateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_CDMARateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_CDMARateMax = 0x7FFFFFFF -} OMX_AUDIO_CDMARATETYPE; - - -/** QCELP8 (TIA/EIA-96, up to 8kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_QCELP8TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable - rate or unknown bit rates */ - OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ - OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ - OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ -} OMX_AUDIO_PARAM_QCELP8TYPE; - - -/** QCELP13 ( CDMA, EIA/TIA-733, 13.3kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_QCELP13TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ - OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ - OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ -} OMX_AUDIO_PARAM_QCELP13TYPE; - - -/** EVRC ( CDMA, EIA/TIA-127, RCELP up to 8.55kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_EVRCTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_AUDIO_CDMARATETYPE eCDMARate; /**< actual Frame rate */ - OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */ - OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */ - OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */ - OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter */ - OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */ - OMX_BOOL bPostFilter; /**< Enable decoder's post Filter */ -} OMX_AUDIO_PARAM_EVRCTYPE; - - -/** SMV ( up to 8.55kbps coder) stream format parameters */ -typedef struct OMX_AUDIO_PARAM_SMVTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannels; /**< Number of channels in the data stream (not - necessarily the same as the number of channels - to be rendered. */ - OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */ - OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */ - OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 ??*/ - OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 ??*/ - OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter ??*/ - OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */ - OMX_BOOL bPostFilter; /**< Enable decoder's post Filter ??*/ -} OMX_AUDIO_PARAM_SMVTYPE; - - -/** MIDI Format - * @ingroup midi - */ -typedef enum OMX_AUDIO_MIDIFORMATTYPE -{ - OMX_AUDIO_MIDIFormatUnknown = 0, /**< MIDI Format unknown or don't care */ - OMX_AUDIO_MIDIFormatSMF0, /**< Standard MIDI File Type 0 */ - OMX_AUDIO_MIDIFormatSMF1, /**< Standard MIDI File Type 1 */ - OMX_AUDIO_MIDIFormatSMF2, /**< Standard MIDI File Type 2 */ - OMX_AUDIO_MIDIFormatSPMIDI, /**< SP-MIDI */ - OMX_AUDIO_MIDIFormatXMF0, /**< eXtensible Music Format type 0 */ - OMX_AUDIO_MIDIFormatXMF1, /**< eXtensible Music Format type 1 */ - OMX_AUDIO_MIDIFormatMobileXMF, /**< Mobile XMF (eXtensible Music Format type 2) */ - OMX_AUDIO_MIDIFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MIDIFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MIDIFormatMax = 0x7FFFFFFF -} OMX_AUDIO_MIDIFORMATTYPE; - - -/** MIDI params - * @ingroup midi - */ -typedef struct OMX_AUDIO_PARAM_MIDITYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nFileSize; /**< size of the MIDI file in bytes, where the entire - MIDI file passed in, otherwise if 0x0, the MIDI data - is merged and streamed (instead of passed as an - entire MIDI file) */ - OMX_BU32 sMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic - voices. A value of zero indicates that the default - polyphony of the device is used */ - OMX_BOOL bLoadDefaultSound; /**< Whether to load default sound - bank at initialization */ - OMX_AUDIO_MIDIFORMATTYPE eMidiFormat; /**< Version of the MIDI file */ -} OMX_AUDIO_PARAM_MIDITYPE; - - -/** Type of the MIDI sound bank - * @ingroup midi - */ -typedef enum OMX_AUDIO_MIDISOUNDBANKTYPE { - OMX_AUDIO_MIDISoundBankUnused = 0, /**< unused/unknown soundbank type */ - OMX_AUDIO_MIDISoundBankDLS1, /**< DLS version 1 */ - OMX_AUDIO_MIDISoundBankDLS2, /**< DLS version 2 */ - OMX_AUDIO_MIDISoundBankMobileDLSBase, /**< Mobile DLS, using the base functionality */ - OMX_AUDIO_MIDISoundBankMobileDLSPlusOptions, /**< Mobile DLS, using the specification-defined optional feature set */ - OMX_AUDIO_MIDISoundBankKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MIDISoundBankVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MIDISoundBankMax = 0x7FFFFFFF -} OMX_AUDIO_MIDISOUNDBANKTYPE; - - -/** Bank Layout describes how bank MSB & LSB are used in the DLS instrument definitions sound bank - * @ingroup midi - */ -typedef enum OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE { - OMX_AUDIO_MIDISoundBankLayoutUnused = 0, /**< unused/unknown soundbank type */ - OMX_AUDIO_MIDISoundBankLayoutGM, /**< GS layout (based on bank MSB 0x00) */ - OMX_AUDIO_MIDISoundBankLayoutGM2, /**< General MIDI 2 layout (using MSB 0x78/0x79, LSB 0x00) */ - OMX_AUDIO_MIDISoundBankLayoutUser, /**< Does not conform to any bank numbering standards */ - OMX_AUDIO_MIDISoundBankLayoutKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MIDISoundBankLayoutVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MIDISoundBankLayoutMax = 0x7FFFFFFF -} OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE; - - -/** MIDI params to load/unload user soundbank - * @ingroup midi - */ -typedef struct OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nDLSIndex; /**< DLS file index to be loaded */ - OMX_U32 nDLSSize; /**< Size in bytes */ - OMX_PTR pDLSData; /**< Pointer to DLS file data */ - OMX_AUDIO_MIDISOUNDBANKTYPE eMidiSoundBank; /**< Midi sound bank type enumeration */ - OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE eMidiSoundBankLayout; /**< Midi sound bank layout enumeration */ -} OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE; - - -/** Structure for Live MIDI events and MIP messages. - * (MIP = Maximum Instantaneous Polyphony; part of the SP-MIDI standard.) - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U32 nMidiEventSize; /**< Size of immediate MIDI events or MIP message in bytes */ - OMX_U8 nMidiEvents[1]; /**< MIDI event array to be rendered immediately, or an - array for the MIP message buffer, where the size is - indicated by nMidiEventSize */ -} OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE; - - -/** MIDI sound bank/ program pair in a given channel - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U32 nChannel; /**< Valid channel values range from 1 to 16 */ - OMX_U16 nIDProgram; /**< Valid program ID range is 1 to 128 */ - OMX_U16 nIDSoundBank; /**< Sound bank ID */ - OMX_U32 nUserSoundBankIndex;/**< User soundbank index, easier to access soundbanks - by index if multiple banks are present */ -} OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE; - - -/** MIDI control - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDICONTROLTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BS32 sPitchTransposition; /**< Pitch transposition in semitones, stored as Q22.10 - format based on JAVA MMAPI (JSR-135) requirement */ - OMX_BU32 sPlayBackRate; /**< Relative playback rate, stored as Q14.17 fixed-point - number based on JSR-135 requirement */ - OMX_BU32 sTempo ; /**< Tempo in beats per minute (BPM), stored as Q22.10 - fixed-point number based on JSR-135 requirement */ - OMX_U32 nMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic - voices. A value of zero indicates that the default - polyphony of the device is used */ - OMX_U32 nNumRepeat; /**< Number of times to repeat playback */ - OMX_U32 nStopTime; /**< Time in milliseconds to indicate when playback - will stop automatically. Set to zero if not used */ - OMX_U16 nChannelMuteMask; /**< 16 bit mask for channel mute status */ - OMX_U16 nChannelSoloMask; /**< 16 bit mask for channel solo status */ - OMX_U32 nTrack0031MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 0-31 */ - OMX_U32 nTrack3263MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 32-63 */ - OMX_U32 nTrack0031SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 0-31 */ - OMX_U32 nTrack3263SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 32-63 */ - -} OMX_AUDIO_CONFIG_MIDICONTROLTYPE; - - -/** MIDI Playback States - * @ingroup midi - */ -typedef enum OMX_AUDIO_MIDIPLAYBACKSTATETYPE { - OMX_AUDIO_MIDIPlayBackStateUnknown = 0, /**< Unknown state or state does not map to - other defined states */ - OMX_AUDIO_MIDIPlayBackStateClosedEngaged, /**< No MIDI resource is currently open. - The MIDI engine is currently processing - MIDI events. */ - OMX_AUDIO_MIDIPlayBackStateParsing, /**< A MIDI resource is open and is being - primed. The MIDI engine is currently - processing MIDI events. */ - OMX_AUDIO_MIDIPlayBackStateOpenEngaged, /**< A MIDI resource is open and primed but - not playing. The MIDI engine is currently - processing MIDI events. The transition to - this state is only possible from the - OMX_AUDIO_MIDIPlayBackStatePlaying state, - when the 'playback head' reaches the end - of media data or the playback stops due - to stop time set.*/ - OMX_AUDIO_MIDIPlayBackStatePlaying, /**< A MIDI resource is open and currently - playing. The MIDI engine is currently - processing MIDI events.*/ - OMX_AUDIO_MIDIPlayBackStatePlayingPartially, /**< Best-effort playback due to SP-MIDI/DLS - resource constraints */ - OMX_AUDIO_MIDIPlayBackStatePlayingSilently, /**< Due to system resource constraints and - SP-MIDI content constraints, there is - no audible MIDI content during playback - currently. The situation may change if - resources are freed later.*/ - OMX_AUDIO_MIDIPlayBackStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_MIDIPlayBackStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_MIDIPlayBackStateMax = 0x7FFFFFFF -} OMX_AUDIO_MIDIPLAYBACKSTATETYPE; - - -/** MIDI status - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDISTATUSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U16 nNumTracks; /**< Number of MIDI tracks in the file, read only field. - NOTE: May not return a meaningful value until the entire - file is parsed and buffered. */ - OMX_U32 nDuration; /**< The length of the currently open MIDI resource - in milliseconds. NOTE: May not return a meaningful value - until the entire file is parsed and buffered. */ - OMX_U32 nPosition; /**< Current Position of the MIDI resource being played - in milliseconds */ - OMX_BOOL bVibra; /**< Does Vibra track exist? NOTE: May not return a meaningful - value until the entire file is parsed and buffered. */ - OMX_U32 nNumMetaEvents; /**< Total number of MIDI Meta Events in the currently - open MIDI resource. NOTE: May not return a meaningful value - until the entire file is parsed and buffered. */ - OMX_U32 nNumActiveVoices; /**< Number of active voices in the currently playing - MIDI resource. NOTE: May not return a meaningful value until - the entire file is parsed and buffered. */ - OMX_AUDIO_MIDIPLAYBACKSTATETYPE eMIDIPlayBackState; /**< MIDI playback state enumeration, read only field */ -} OMX_AUDIO_CONFIG_MIDISTATUSTYPE; - - -/** MIDI Meta Event structure one per Meta Event. - * MIDI Meta Events are like audio metadata, except that they are interspersed - * with the MIDI content throughout the file and are not localized in the header. - * As such, it is necessary to retrieve information about these Meta Events from - * the engine, as it encounters these Meta Events within the MIDI content. - * For example, SMF files can have up to 14 types of MIDI Meta Events (copyright, - * author, default tempo, etc.) scattered throughout the file. - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE{ - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nIndex; /**< Index of Meta Event */ - OMX_U8 nMetaEventType; /**< Meta Event Type, 7bits (i.e. 0 - 127) */ - OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */ - OMX_U32 nTrack; /**< track number for the meta event */ - OMX_U32 nPosition; /**< Position of the meta-event in milliseconds */ -} OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE; - - -/** MIDI Meta Event Data structure - one per Meta Event. - * @ingroup midi - */ -typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE{ - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nIndex; /**< Index of Meta Event */ - OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */ - OMX_U8 nData[1]; /**< array of one or more bytes of meta data - as indicated by the nMetaEventSize field */ -} OMX_AUDIO_CONFIG__MIDIMETAEVENTDATATYPE; - - -/** Audio Volume adjustment for a port */ -typedef struct OMX_AUDIO_CONFIG_VOLUMETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port index indicating which port to - set. Select the input port to set - just that port's volume. Select the - output port to adjust the master - volume. */ - OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) - or logarithmic scale (mB) */ - OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR - Volume logarithmic setting for this port. The values - for volume are in mB (millibels = 1/100 dB) relative - to a gain of 1 (e.g. the output is the same as the - input level). Values are in mB from nMax - (maximum volume) to nMin mB (typically negative). - Since the volume is "voltage" - and not a "power", it takes a setting of - -600 mB to decrease the volume by 1/2. If - a component cannot accurately set the - volume to the requested value, it must - set the volume to the closest value BELOW - the requested value. When getting the - volume setting, the current actual volume - must be returned. */ -} OMX_AUDIO_CONFIG_VOLUMETYPE; - - -/** Audio Volume adjustment for a channel */ -typedef struct OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port index indicating which port to - set. Select the input port to set - just that port's volume. Select the - output port to adjust the master - volume. */ - OMX_U32 nChannel; /**< channel to select from 0 to N-1, - using OMX_ALL to apply volume settings - to all channels */ - OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) or - logarithmic scale (mB) */ - OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR - Volume logarithmic setting for this port. - The values for volume are in mB - (millibels = 1/100 dB) relative to a gain - of 1 (e.g. the output is the same as the - input level). Values are in mB from nMax - (maximum volume) to nMin mB (typically negative). - Since the volume is "voltage" - and not a "power", it takes a setting of - -600 mB to decrease the volume by 1/2. If - a component cannot accurately set the - volume to the requested value, it must - set the volume to the closest value BELOW - the requested value. When getting the - volume setting, the current actual volume - must be returned. */ - OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel, - FALSE otherwise */ -} OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE; - - -/** Audio balance setting */ -typedef struct OMX_AUDIO_CONFIG_BALANCETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port index indicating which port to - set. Select the input port to set - just that port's balance. Select the - output port to adjust the master - balance. */ - OMX_S32 nBalance; /**< balance setting for this port - (-100 to 100, where -100 indicates - all left, and no right */ -} OMX_AUDIO_CONFIG_BALANCETYPE; - - -/** Audio Port mute */ -typedef struct OMX_AUDIO_CONFIG_MUTETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port index indicating which port to - set. Select the input port to set - just that port's mute. Select the - output port to adjust the master - mute. */ - OMX_BOOL bMute; /**< Mute setting for this port */ -} OMX_AUDIO_CONFIG_MUTETYPE; - - -/** Audio Channel mute */ -typedef struct OMX_AUDIO_CONFIG_CHANNELMUTETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nChannel; /**< channel to select from 0 to N-1, - using OMX_ALL to apply mute settings - to all channels */ - OMX_BOOL bMute; /**< Mute setting for this channel */ - OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel, - FALSE otherwise */ -} OMX_AUDIO_CONFIG_CHANNELMUTETYPE; - - - -/** Enable / Disable for loudness control, which boosts bass and to a - * smaller extent high end frequencies to compensate for hearing - * ability at the extreme ends of the audio spectrum - */ -typedef struct OMX_AUDIO_CONFIG_LOUDNESSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bLoudness; /**< Enable/disable for loudness */ -} OMX_AUDIO_CONFIG_LOUDNESSTYPE; - - -/** Enable / Disable for bass, which controls low frequencies - */ -typedef struct OMX_AUDIO_CONFIG_BASSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for bass control */ - OMX_S32 nBass; /**< bass setting for the port, as a - continuous value from -100 to 100 - (0 means no change in bass level)*/ -} OMX_AUDIO_CONFIG_BASSTYPE; - - -/** Enable / Disable for treble, which controls high frequencies tones - */ -typedef struct OMX_AUDIO_CONFIG_TREBLETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for treble control */ - OMX_S32 nTreble; /**< treble setting for the port, as a - continuous value from -100 to 100 - (0 means no change in treble level) */ -} OMX_AUDIO_CONFIG_TREBLETYPE; - - -/** An equalizer is typically used for two reasons: to compensate for an - * sub-optimal frequency response of a system to make it sound more natural - * or to create intentionally some unnatural coloring to the sound to create - * an effect. - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_EQUALIZERTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for equalizer */ - OMX_BU32 sBandIndex; /**< Band number to be set. Upper Limit is - N-1, where N is the number of bands, lower limit is 0 */ - OMX_BU32 sCenterFreq; /**< Center frequecies in Hz. This is a - read only element and is used to determine - the lower, center and upper frequency of - this band. */ - OMX_BS32 sBandLevel; /**< band level in millibels */ -} OMX_AUDIO_CONFIG_EQUALIZERTYPE; - - -/** Stereo widening mode type - * @ingroup effects - */ -typedef enum OMX_AUDIO_STEREOWIDENINGTYPE { - OMX_AUDIO_StereoWideningHeadphones, /**< Stereo widening for loudspeakers */ - OMX_AUDIO_StereoWideningLoudspeakers, /**< Stereo widening for closely spaced loudspeakers */ - OMX_AUDIO_StereoWideningKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_StereoWideningVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_StereoWideningMax = 0x7FFFFFFF -} OMX_AUDIO_STEREOWIDENINGTYPE; - - -/** Control for stereo widening, which is a special 2-channel - * case of the audio virtualizer effect. For example, for 5.1-channel - * output, it translates to virtual surround sound. - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for stereo widening control */ - OMX_AUDIO_STEREOWIDENINGTYPE eWideningType; /**< Stereo widening algorithm type */ - OMX_U32 nStereoWidening; /**< stereo widening setting for the port, - as a continuous value from 0 to 100 */ -} OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE; - - -/** The chorus effect (or ``choralizer'') is any signal processor which makes - * one sound source (such as a voice) sound like many such sources singing - * (or playing) in unison. Since performance in unison is never exact, chorus - * effects simulate this by making independently modified copies of the input - * signal. Modifications may include (1) delay, (2) frequency shift, and - * (3) amplitude modulation. - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_CHORUSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for chorus */ - OMX_BU32 sDelay; /**< average delay in milliseconds */ - OMX_BU32 sModulationRate; /**< rate of modulation in millihertz */ - OMX_U32 nModulationDepth; /**< depth of modulation as a percentage of - delay (i.e. 0 to 100) */ - OMX_BU32 nFeedback; /**< Feedback from chorus output to input in percentage */ -} OMX_AUDIO_CONFIG_CHORUSTYPE; - - -/** Reverberation is part of the reflected sound that follows the early - * reflections. In a typical room, this consists of a dense succession of - * echoes whose energy decays exponentially. The reverberation effect structure - * as defined here includes both (early) reflections as well as (late) reverberations. - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_REVERBERATIONTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bEnable; /**< Enable/disable for reverberation control */ - OMX_BS32 sRoomLevel; /**< Intensity level for the whole room effect - (i.e. both early reflections and late - reverberation) in millibels */ - OMX_BS32 sRoomHighFreqLevel; /**< Attenuation at high frequencies - relative to the intensity at low - frequencies in millibels */ - OMX_BS32 sReflectionsLevel; /**< Intensity level of early reflections - (relative to room value), in millibels */ - OMX_BU32 sReflectionsDelay; /**< Delay time of the first reflection relative - to the direct path, in milliseconds */ - OMX_BS32 sReverbLevel; /**< Intensity level of late reverberation - relative to room level, in millibels */ - OMX_BU32 sReverbDelay; /**< Time delay from the first early reflection - to the beginning of the late reverberation - section, in milliseconds */ - OMX_BU32 sDecayTime; /**< Late reverberation decay time at low - frequencies, in milliseconds */ - OMX_BU32 nDecayHighFreqRatio; /**< Ratio of high frequency decay time relative - to low frequency decay time in percent */ - OMX_U32 nDensity; /**< Modal density in the late reverberation decay, - in percent (i.e. 0 - 100) */ - OMX_U32 nDiffusion; /**< Echo density in the late reverberation decay, - in percent (i.e. 0 - 100) */ - OMX_BU32 sReferenceHighFreq; /**< Reference high frequency in Hertz. This is - the frequency used as the reference for all - the high-frequency settings above */ - -} OMX_AUDIO_CONFIG_REVERBERATIONTYPE; - - -/** Possible settings for the Echo Cancelation structure to use - * @ingroup effects - */ -typedef enum OMX_AUDIO_ECHOCANTYPE { - OMX_AUDIO_EchoCanOff = 0, /**< Echo Cancellation is disabled */ - OMX_AUDIO_EchoCanNormal, /**< Echo Cancellation normal operation - - echo from plastics and face */ - OMX_AUDIO_EchoCanHFree, /**< Echo Cancellation optimized for - Hands Free operation */ - OMX_AUDIO_EchoCanCarKit, /**< Echo Cancellation optimized for - Car Kit (longer echo) */ - OMX_AUDIO_EchoCanKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_AUDIO_EchoCanVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_AUDIO_EchoCanMax = 0x7FFFFFFF -} OMX_AUDIO_ECHOCANTYPE; - - -/** Enable / Disable for echo cancelation, which removes undesired echo's - * from the audio - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_AUDIO_ECHOCANTYPE eEchoCancelation; /**< Echo cancelation settings */ -} OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE; - - -/** Enable / Disable for noise reduction, which undesired noise from - * the audio - * @ingroup effects - */ -typedef struct OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BOOL bNoiseReduction; /**< Enable/disable for noise reduction */ -} OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE; - -/** @} */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/v1_x/OMX_Component.h --- a/omxil/omxilapi/v1_x/OMX_Component.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,579 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_Component.h - OpenMax IL version 1.1.2 - * The OMX_Component header file contains the definitions used to define - * the public interface of a component. This header file is intended to - * be used by both the application and the component. - */ - -#ifndef OMX_Component_h -#define OMX_Component_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - - -/* Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include -#include -#include -#include - -/** @ingroup comp */ -typedef enum OMX_PORTDOMAINTYPE { - OMX_PortDomainAudio, - OMX_PortDomainVideo, - OMX_PortDomainImage, - OMX_PortDomainOther, - OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_PortDomainMax = 0x7ffffff -} OMX_PORTDOMAINTYPE; - -/** @ingroup comp */ -typedef struct OMX_PARAM_PORTDEFINITIONTYPE { - OMX_U32 nSize; /**< Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port number the structure applies to */ - OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */ - OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */ - OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */ - OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */ - OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by - OMX_CommandPortEnable/OMX_CommandPortDisable. - When disabled a port is unpopulated. A disabled port - is not populated with buffers on a transition to IDLE. */ - OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by - nBufferCountActual. A disabled port is always unpopulated. - An enabled port is populated on a transition to OMX_StateIdle - and unpopulated on a transition to loaded. */ - OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */ - union { - OMX_AUDIO_PORTDEFINITIONTYPE audio; - OMX_VIDEO_PORTDEFINITIONTYPE video; - OMX_IMAGE_PORTDEFINITIONTYPE image; - OMX_OTHER_PORTDEFINITIONTYPE other; - } format; - OMX_BOOL bBuffersContiguous; - OMX_U32 nBufferAlignment; -} OMX_PARAM_PORTDEFINITIONTYPE; - -/** @ingroup comp */ -typedef struct OMX_PARAM_U32TYPE { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_U32 nU32; /**< U32 value */ -} OMX_PARAM_U32TYPE; - -/** @ingroup rpm */ -typedef enum OMX_SUSPENSIONPOLICYTYPE { - OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */ - OMX_SuspensionEnabled, /**< Suspension allowed */ - OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_SuspensionPolicyMax = 0x7fffffff -} OMX_SUSPENSIONPOLICYTYPE; - -/** @ingroup rpm */ -typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_SUSPENSIONPOLICYTYPE ePolicy; -} OMX_PARAM_SUSPENSIONPOLICYTYPE; - -/** @ingroup rpm */ -typedef enum OMX_SUSPENSIONTYPE { - OMX_NotSuspended, /**< component is not suspended */ - OMX_Suspended, /**< component is suspended */ - OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_SuspendMax = 0x7FFFFFFF -} OMX_SUSPENSIONTYPE; - -/** @ingroup rpm */ -typedef struct OMX_PARAM_SUSPENSIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_SUSPENSIONTYPE eType; -} OMX_PARAM_SUSPENSIONTYPE ; - -typedef struct OMX_CONFIG_BOOLEANTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bEnabled; -} OMX_CONFIG_BOOLEANTYPE; - -/* Parameter specifying the content uri to use. */ -/** @ingroup cp */ -typedef struct OMX_PARAM_CONTENTURITYPE -{ - OMX_U32 nSize; /**< size of the structure in bytes, including - actual URI name */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U8 contentURI[1]; /**< The URI name */ -} OMX_PARAM_CONTENTURITYPE; - -/* Parameter specifying the pipe to use. */ -/** @ingroup cp */ -typedef struct OMX_PARAM_CONTENTPIPETYPE -{ - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_HANDLETYPE hPipe; /**< The pipe handle*/ -} OMX_PARAM_CONTENTPIPETYPE; - -/** @ingroup rpm */ -typedef struct OMX_RESOURCECONCEALMENTTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment - methods (like degrading algorithm quality to - lower resource consumption or functional bypass) - on a component as a resolution to resource conflicts. */ -} OMX_RESOURCECONCEALMENTTYPE; - - -/** @ingroup metadata */ -typedef enum OMX_METADATACHARSETTYPE { - OMX_MetadataCharsetUnknown = 0, - OMX_MetadataCharsetASCII, - OMX_MetadataCharsetBinary, - OMX_MetadataCharsetCodePage1252, - OMX_MetadataCharsetUTF8, - OMX_MetadataCharsetJavaConformantUTF8, - OMX_MetadataCharsetUTF7, - OMX_MetadataCharsetImapUTF7, - OMX_MetadataCharsetUTF16LE, - OMX_MetadataCharsetUTF16BE, - OMX_MetadataCharsetGB12345, - OMX_MetadataCharsetHZGB2312, - OMX_MetadataCharsetGB2312, - OMX_MetadataCharsetGB18030, - OMX_MetadataCharsetGBK, - OMX_MetadataCharsetBig5, - OMX_MetadataCharsetISO88591, - OMX_MetadataCharsetISO88592, - OMX_MetadataCharsetISO88593, - OMX_MetadataCharsetISO88594, - OMX_MetadataCharsetISO88595, - OMX_MetadataCharsetISO88596, - OMX_MetadataCharsetISO88597, - OMX_MetadataCharsetISO88598, - OMX_MetadataCharsetISO88599, - OMX_MetadataCharsetISO885910, - OMX_MetadataCharsetISO885913, - OMX_MetadataCharsetISO885914, - OMX_MetadataCharsetISO885915, - OMX_MetadataCharsetShiftJIS, - OMX_MetadataCharsetISO2022JP, - OMX_MetadataCharsetISO2022JP1, - OMX_MetadataCharsetISOEUCJP, - OMX_MetadataCharsetSMS7Bit, - OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_MetadataCharsetTypeMax= 0x7FFFFFFF -} OMX_METADATACHARSETTYPE; - -/** @ingroup metadata */ -typedef enum OMX_METADATASCOPETYPE -{ - OMX_MetadataScopeAllLevels, - OMX_MetadataScopeTopLevel, - OMX_MetadataScopePortLevel, - OMX_MetadataScopeNodeLevel, - OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_MetadataScopeTypeMax = 0x7fffffff -} OMX_METADATASCOPETYPE; - -/** @ingroup metadata */ -typedef enum OMX_METADATASEARCHMODETYPE -{ - OMX_MetadataSearchValueSizeByIndex, - OMX_MetadataSearchItemByIndex, - OMX_MetadataSearchNextItemByKey, - OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_MetadataSearchTypeMax = 0x7fffffff -} OMX_METADATASEARCHMODETYPE; -/** @ingroup metadata */ -typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_METADATASCOPETYPE eScopeMode; - OMX_U32 nScopeSpecifier; - OMX_U32 nMetadataItemCount; -} OMX_CONFIG_METADATAITEMCOUNTTYPE; - -/** @ingroup metadata */ -typedef struct OMX_CONFIG_METADATAITEMTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_METADATASCOPETYPE eScopeMode; - OMX_U32 nScopeSpecifier; - OMX_U32 nMetadataItemIndex; - OMX_METADATASEARCHMODETYPE eSearchMode; - OMX_METADATACHARSETTYPE eKeyCharset; - OMX_U8 nKeySizeUsed; - OMX_U8 nKey[128]; - OMX_METADATACHARSETTYPE eValueCharset; - OMX_STRING sLanguageCountry; - OMX_U32 nValueMaxSize; - OMX_U32 nValueSizeUsed; - OMX_U8 nValue[1]; -} OMX_CONFIG_METADATAITEMTYPE; - -/* @ingroup metadata */ -typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bAllKeys; - OMX_U32 nParentNodeID; - OMX_U32 nNumNodes; -} OMX_CONFIG_CONTAINERNODECOUNTTYPE; - -/** @ingroup metadata */ -typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bAllKeys; - OMX_U32 nParentNodeID; - OMX_U32 nNodeIndex; - OMX_U32 nNodeID; - OMX_STRING cNodeName; - OMX_BOOL bIsLeafType; -} OMX_CONFIG_CONTAINERNODEIDTYPE; - -/** @ingroup metadata */ -typedef struct OMX_PARAM_METADATAFILTERTYPE -{ - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and - * the three key fields below are ignored */ - OMX_METADATACHARSETTYPE eKeyCharset; - OMX_U32 nKeySizeUsed; - OMX_U8 nKey [128]; - OMX_U32 nLanguageCountrySizeUsed; - OMX_U8 nLanguageCountry[128]; - OMX_BOOL bEnabled; /* if true then key is part of filter (e.g. - * retained for query later). If false then - * key is not part of filter */ -} OMX_PARAM_METADATAFILTERTYPE; - -/** The OMX_HANDLETYPE structure defines the component handle. The component - * handle is used to access all of the component's public methods and also - * contains pointers to the component's private data area. The component - * handle is initialized by the OMX core (with help from the component) - * during the process of loading the component. After the component is - * successfully loaded, the application can safely access any of the - * component's public functions (although some may return an error because - * the state is inappropriate for the access). - * - * @ingroup comp - */ -typedef struct OMX_COMPONENTTYPE -{ - /** The size of this structure, in bytes. It is the responsibility - of the allocator of this structure to fill in this value. Since - this structure is allocated by the GetHandle function, this - function will fill in this value. */ - OMX_U32 nSize; - - /** nVersion is the version of the OMX specification that the structure - is built against. It is the responsibility of the creator of this - structure to initialize this value and every user of this structure - should verify that it knows how to use the exact version of - this structure found herein. */ - OMX_VERSIONTYPE nVersion; - - /** pComponentPrivate is a pointer to the component private data area. - This member is allocated and initialized by the component when the - component is first loaded. The application should not access this - data area. */ - OMX_PTR pComponentPrivate; - - /** pApplicationPrivate is a pointer that is a parameter to the - OMX_GetHandle method, and contains an application private value - provided by the IL client. This application private data is - returned to the IL Client by OMX in all callbacks */ - OMX_PTR pApplicationPrivate; - - /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL - specification for details on the GetComponentVersion method. - */ - OMX_ERRORTYPE (*GetComponentVersion)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_STRING pComponentName, - OMX_OUT OMX_VERSIONTYPE* pComponentVersion, - OMX_OUT OMX_VERSIONTYPE* pSpecVersion, - OMX_OUT OMX_UUIDTYPE* pComponentUUID); - - /** refer to OMX_SendCommand in OMX_core.h or the OMX IL - specification for details on the SendCommand method. - */ - OMX_ERRORTYPE (*SendCommand)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_COMMANDTYPE Cmd, - OMX_IN OMX_U32 nParam1, - OMX_IN OMX_PTR pCmdData); - - /** refer to OMX_GetParameter in OMX_core.h or the OMX IL - specification for details on the GetParameter method. - */ - OMX_ERRORTYPE (*GetParameter)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nParamIndex, - OMX_INOUT OMX_PTR pComponentParameterStructure); - - - /** refer to OMX_SetParameter in OMX_core.h or the OMX IL - specification for details on the SetParameter method. - */ - OMX_ERRORTYPE (*SetParameter)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_IN OMX_PTR pComponentParameterStructure); - - - /** refer to OMX_GetConfig in OMX_core.h or the OMX IL - specification for details on the GetConfig method. - */ - OMX_ERRORTYPE (*GetConfig)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_INOUT OMX_PTR pComponentConfigStructure); - - - /** refer to OMX_SetConfig in OMX_core.h or the OMX IL - specification for details on the SetConfig method. - */ - OMX_ERRORTYPE (*SetConfig)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_INDEXTYPE nIndex, - OMX_IN OMX_PTR pComponentConfigStructure); - - - /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL - specification for details on the GetExtensionIndex method. - */ - OMX_ERRORTYPE (*GetExtensionIndex)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_STRING cParameterName, - OMX_OUT OMX_INDEXTYPE* pIndexType); - - - /** refer to OMX_GetState in OMX_core.h or the OMX IL - specification for details on the GetState method. - */ - OMX_ERRORTYPE (*GetState)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_STATETYPE* pState); - - - /** The ComponentTunnelRequest method will interact with another OMX - component to determine if tunneling is possible and to setup the - tunneling. The return codes for this method can be used to - determine if tunneling is not possible, or if tunneling is not - supported. - - Base profile components (i.e. non-interop) do not support this - method and should return OMX_ErrorNotImplemented - - The interop profile component MUST support tunneling to another - interop profile component with a compatible port parameters. - A component may also support proprietary communication. - - If proprietary communication is supported the negotiation of - proprietary communication is done outside of OMX in a vendor - specific way. It is only required that the proper result be - returned and the details of how the setup is done is left - to the component implementation. - - When this method is invoked when nPort in an output port, the - component will: - 1. Populate the pTunnelSetup structure with the output port's - requirements and constraints for the tunnel. - - When this method is invoked when nPort in an input port, the - component will: - 1. Query the necessary parameters from the output port to - determine if the ports are compatible for tunneling - 2. If the ports are compatible, the component should store - the tunnel step provided by the output port - 3. Determine which port (either input or output) is the buffer - supplier, and call OMX_SetParameter on the output port to - indicate this selection. - - The component will return from this call within 5 msec. - - @param [in] hComp - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle method. - @param [in] nPort - nPort is used to select the port on the component to be used - for tunneling. - @param [in] hTunneledComp - Handle of the component to tunnel with. This is the component - handle returned by the call to the OMX_GetHandle method. When - this parameter is 0x0 the component should setup the port for - communication with the application / IL Client. - @param [in] nPortOutput - nPortOutput is used indicate the port the component should - tunnel with. - @param [in] pTunnelSetup - Pointer to the tunnel setup structure. When nPort is an output port - the component should populate the fields of this structure. When - When nPort is an input port the component should review the setup - provided by the component with the output port. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup tun - */ - - OMX_ERRORTYPE (*ComponentTunnelRequest)( - OMX_IN OMX_HANDLETYPE hComp, - OMX_IN OMX_U32 nPort, - OMX_IN OMX_HANDLETYPE hTunneledComp, - OMX_IN OMX_U32 nTunneledPort, - OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup); - - /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL - specification for details on the UseBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*UseBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppPrivate, - OMX_IN OMX_U32 nSizeBytes, - OMX_IN OMX_U8* pBuffer); - - /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL - specification for details on the AllocateBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*AllocateBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppPrivate, - OMX_IN OMX_U32 nSizeBytes); - - /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL - specification for details on the FreeBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*FreeBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); - - /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL - specification for details on the EmptyThisBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*EmptyThisBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); - - /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL - specification for details on the FillThisBuffer method. - @ingroup buf - */ - OMX_ERRORTYPE (*FillThisBuffer)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); - - /** The SetCallbacks method is used by the core to specify the callback - structure from the application to the component. This is a blocking - call. The component will return from this call within 5 msec. - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the GetHandle function. - @param [in] pCallbacks - pointer to an OMX_CALLBACKTYPE structure used to provide the - callback information to the component - @param [in] pAppData - pointer to an application defined value. It is anticipated that - the application will pass a pointer to a data structure or a "this - pointer" in this area to allow the callback (in the application) - to determine the context of the call - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - */ - OMX_ERRORTYPE (*SetCallbacks)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_CALLBACKTYPE* pCallbacks, - OMX_IN OMX_PTR pAppData); - - /** ComponentDeInit method is used to deinitialize the component - providing a means to free any resources allocated at component - initialization. NOTE: After this call the component handle is - not valid for further use. - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the GetHandle function. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - */ - OMX_ERRORTYPE (*ComponentDeInit)( - OMX_IN OMX_HANDLETYPE hComponent); - - /** @ingroup buf */ - OMX_ERRORTYPE (*UseEGLImage)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr, - OMX_IN OMX_U32 nPortIndex, - OMX_IN OMX_PTR pAppPrivate, - OMX_IN void* eglImage); - - OMX_ERRORTYPE (*ComponentRoleEnum)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_OUT OMX_U8 *cRole, - OMX_IN OMX_U32 nIndex); - -} OMX_COMPONENTTYPE; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/v1_x/OMX_ContentPipe.h --- a/omxil/omxilapi/v1_x/OMX_ContentPipe.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,195 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_ContentPipe.h - OpenMax IL version 1.1.2 - * The OMX_ContentPipe header file contains the definitions used to define - * the public interface for content piples. This header file is intended to - * be used by the component. - */ - -#ifndef OMX_CONTENTPIPE_H -#define OMX_CONTENTPIPE_H - -#ifndef KD_EACCES -/* OpenKODE error codes. CPResult values may be zero (indicating success - or one of the following values) */ -#define KD_EACCES (1) -#define KD_EADDRINUSE (2) -#define KD_EAGAIN (5) -#define KD_EBADF (7) -#define KD_EBUSY (8) -#define KD_ECONNREFUSED (9) -#define KD_ECONNRESET (10) -#define KD_EDEADLK (11) -#define KD_EDESTADDRREQ (12) -#define KD_ERANGE (35) -#define KD_EEXIST (13) -#define KD_EFBIG (14) -#define KD_EHOSTUNREACH (15) -#define KD_EINVAL (17) -#define KD_EIO (18) -#define KD_EISCONN (20) -#define KD_EISDIR (21) -#define KD_EMFILE (22) -#define KD_ENAMETOOLONG (23) -#define KD_ENOENT (24) -#define KD_ENOMEM (25) -#define KD_ENOSPC (26) -#define KD_ENOSYS (27) -#define KD_ENOTCONN (28) -#define KD_EPERM (33) -#define KD_ETIMEDOUT (36) -#define KD_EILSEQ (19) -#endif - -/** Map types from OMX standard types only here so interface is as generic as possible. */ -typedef OMX_U32 CPresult; -typedef char * CPstring; -typedef void * CPhandle; -typedef OMX_U32 CPuint; -typedef OMX_S32 CPint; -typedef char CPbyte; -typedef OMX_BOOL CPbool; - -/** enumeration of origin types used in the CP_PIPETYPE's Seek function - * @ingroup cp - */ -typedef enum CP_ORIGINTYPE { - CP_OriginBegin, - CP_OriginCur, - CP_OriginEnd, - CP_OriginKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - CP_OriginVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - CP_OriginMax = 0X7FFFFFFF -} CP_ORIGINTYPE; - -/** enumeration of contact access types used in the CP_PIPETYPE's Open function - * @ingroup cp - */ -typedef enum CP_ACCESSTYPE { - CP_AccessRead, - CP_AccessWrite, - CP_AccessReadWrite , - CP_AccessKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - CP_AccessVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - CP_AccessMax = 0X7FFFFFFF -} CP_ACCESSTYPE; - -/** enumeration of results returned by the CP_PIPETYPE's CheckAvailableBytes function - * @ingroup cp - */ -typedef enum CP_CHECKBYTESRESULTTYPE -{ - CP_CheckBytesOk, /**< There are at least the request number - of bytes available */ - CP_CheckBytesNotReady, /**< The pipe is still retrieving bytes - and presently lacks sufficient bytes. - Client will be called when they are - sufficient bytes are available. */ - CP_CheckBytesInsufficientBytes , /**< The pipe has retrieved all bytes - but those available are less than those - requested */ - CP_CheckBytesAtEndOfStream, /**< The pipe has reached the end of stream - and no more bytes are available. */ - CP_CheckBytesOutOfBuffers, /**< All read/write buffers are currently in use. */ - CP_CheckBytesKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - CP_CheckBytesVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - CP_CheckBytesMax = 0X7FFFFFFF -} CP_CHECKBYTESRESULTTYPE; - -/** enumeration of content pipe events sent to the client callback. - * @ingroup cp - */ -typedef enum CP_EVENTTYPE{ - CP_BytesAvailable, /** bytes requested in a CheckAvailableBytes call are now available*/ - CP_Overflow, /** enumeration of content pipe events sent to the client callback*/ - CP_PipeDisconnected , /** enumeration of content pipe events sent to the client callback*/ - CP_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - CP_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - CP_EventMax = 0X7FFFFFFF -} CP_EVENTTYPE; - -/** content pipe definition - * @ingroup cp - */ -typedef struct CP_PIPETYPE -{ - /** Open a content stream for reading or writing. */ - CPresult (*Open)( CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess ); - - /** Close a content stream. */ - CPresult (*Close)( CPhandle hContent ); - - /** Create a content source and open it for writing. */ - CPresult (*Create)( CPhandle *hContent, CPstring szURI ); - - /** Check the that specified number of bytes are available for reading or writing (depending on access type).*/ - CPresult (*CheckAvailableBytes)( CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE *eResult ); - - /** Seek to certain position in the content relative to the specified origin. */ - CPresult (*SetPosition)( CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin); - - /** Retrieve the current position relative to the start of the content. */ - CPresult (*GetPosition)( CPhandle hContent, CPuint *pPosition); - - /** Retrieve data of the specified size from the content stream (advance content pointer by size of data). - Note: pipe client provides pointer. This function is appropriate for small high frequency reads. */ - CPresult (*Read)( CPhandle hContent, CPbyte *pData, CPuint nSize); - - /** Retrieve a buffer allocated by the pipe that contains the requested number of bytes. - Buffer contains the next block of bytes, as specified by nSize, of the content. nSize also - returns the size of the block actually read. Content pointer advances the by the returned size. - Note: pipe provides pointer. This function is appropriate for large reads. The client must call - ReleaseReadBuffer when done with buffer. - - In some cases the requested block may not reside in contiguous memory within the - pipe implementation. For instance if the pipe leverages a circular buffer then the requested - block may straddle the boundary of the circular buffer. By default a pipe implementation - performs a copy in this case to provide the block to the pipe client in one contiguous buffer. - If, however, the client sets bForbidCopy, then the pipe returns only those bytes preceding the memory - boundary. Here the client may retrieve the data in segments over successive calls. */ - CPresult (*ReadBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint *nSize, CPbool bForbidCopy); - - /** Release a buffer obtained by ReadBuffer back to the pipe. */ - CPresult (*ReleaseReadBuffer)(CPhandle hContent, CPbyte *pBuffer); - - /** Write data of the specified size to the content (advance content pointer by size of data). - Note: pipe client provides pointer. This function is appropriate for small high frequency writes. */ - CPresult (*Write)( CPhandle hContent, CPbyte *data, CPuint nSize); - - /** Retrieve a buffer allocated by the pipe used to write data to the content. - Client will fill buffer with output data. Note: pipe provides pointer. This function is appropriate - for large writes. The client must call WriteBuffer when done it has filled the buffer with data.*/ - CPresult (*GetWriteBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint nSize); - - /** Deliver a buffer obtained via GetWriteBuffer to the pipe. Pipe will write the - the contents of the buffer to content and advance content pointer by the size of the buffer */ - CPresult (*WriteBuffer)( CPhandle hContent, CPbyte *pBuffer, CPuint nFilledSize); - - /** Register a per-handle client callback with the content pipe. */ - CPresult (*RegisterCallback)( CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam)); - -} CP_PIPETYPE; - -#endif - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/v1_x/OMX_Core.h --- a/omxil/omxilapi/v1_x/OMX_Core.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1431 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_Core.h - OpenMax IL version 1.1.2 - * The OMX_Core header file contains the definitions used by both the - * application and the component to access common items. - */ - -#ifndef OMX_Core_h -#define OMX_Core_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/* Each OMX header shall include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include - - -/** The OMX_COMMANDTYPE enumeration is used to specify the action in the - * OMX_SendCommand macro. - * @ingroup core - */ -typedef enum OMX_COMMANDTYPE -{ - OMX_CommandStateSet, /**< Change the component state */ - OMX_CommandFlush, /**< Flush the data queue(s) of a component */ - OMX_CommandPortDisable, /**< Disable a port on a component. */ - OMX_CommandPortEnable, /**< Enable a port on a component. */ - OMX_CommandMarkBuffer, /**< Mark a component/buffer for observation */ - OMX_CommandKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_CommandVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_CommandMax = 0X7FFFFFFF -} OMX_COMMANDTYPE; - - - -/** The OMX_STATETYPE enumeration is used to indicate or change the component - * state. This enumeration reflects the current state of the component when - * used with the OMX_GetState macro or becomes the parameter in a state change - * command when used with the OMX_SendCommand macro. - * - * The component will be in the Loaded state after the component is initially - * loaded into memory. In the Loaded state, the component is not allowed to - * allocate or hold resources other than to build it's internal parameter - * and configuration tables. The application will send one or more - * SetParameters/GetParameters and SetConfig/GetConfig commands to the - * component and the component will record each of these parameter and - * configuration changes for use later. When the application sends the - * Idle command, the component will acquire the resources needed for the - * specified configuration and will transition to the idle state if the - * allocation is successful. If the component cannot successfully - * transition to the idle state for any reason, the state of the component - * shall be fully rolled back to the Loaded state (e.g. all allocated - * resources shall be released). When the component receives the command - * to go to the Executing state, it shall begin processing buffers by - * sending all input buffers it holds to the application. While - * the component is in the Idle state, the application may also send the - * Pause command. If the component receives the pause command while in the - * Idle state, the component shall send all input buffers it holds to the - * application, but shall not begin processing buffers. This will allow the - * application to prefill buffers. - * - * @ingroup comp - */ - -typedef enum OMX_STATETYPE -{ - OMX_StateInvalid, /**< component has detected that it's internal data - structures are corrupted to the point that - it cannot determine it's state properly */ - OMX_StateLoaded, /**< component has been loaded but has not completed - initialization. The OMX_SetParameter macro - and the OMX_GetParameter macro are the only - valid macros allowed to be sent to the - component in this state. */ - OMX_StateIdle, /**< component initialization has been completed - successfully and the component is ready to - to start. */ - OMX_StateExecuting, /**< component has accepted the start command and - is processing data (if data is available) */ - OMX_StatePause, /**< component has received pause command */ - OMX_StateWaitForResources, /**< component is waiting for resources, either after - preemption or before it gets the resources requested. - See specification for complete details. */ - OMX_StateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_StateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_StateMax = 0X7FFFFFFF -} OMX_STATETYPE; - -/** The OMX_ERRORTYPE enumeration defines the standard OMX Errors. These - * errors should cover most of the common failure cases. However, - * vendors are free to add additional error messages of their own as - * long as they follow these rules: - * 1. Vendor error messages shall be in the range of 0x90000000 to - * 0x9000FFFF. - * 2. Vendor error messages shall be defined in a header file provided - * with the component. No error messages are allowed that are - * not defined. - */ -typedef enum OMX_ERRORTYPE -{ - OMX_ErrorNone = 0, - - /** There were insufficient resources to perform the requested operation */ - OMX_ErrorInsufficientResources = (OMX_S32) 0x80001000, - - /** There was an error, but the cause of the error could not be determined */ - OMX_ErrorUndefined = (OMX_S32) 0x80001001, - - /** The component name string was not valid */ - OMX_ErrorInvalidComponentName = (OMX_S32) 0x80001002, - - /** No component with the specified name string was found */ - OMX_ErrorComponentNotFound = (OMX_S32) 0x80001003, - - /** The component specified did not have a "OMX_ComponentInit" or - "OMX_ComponentDeInit entry point */ - OMX_ErrorInvalidComponent = (OMX_S32) 0x80001004, - - /** One or more parameters were not valid */ - OMX_ErrorBadParameter = (OMX_S32) 0x80001005, - - /** The requested function is not implemented */ - OMX_ErrorNotImplemented = (OMX_S32) 0x80001006, - - /** The buffer was emptied before the next buffer was ready */ - OMX_ErrorUnderflow = (OMX_S32) 0x80001007, - - /** The buffer was not available when it was needed */ - OMX_ErrorOverflow = (OMX_S32) 0x80001008, - - /** The hardware failed to respond as expected */ - OMX_ErrorHardware = (OMX_S32) 0x80001009, - - /** The component is in the state OMX_StateInvalid */ - OMX_ErrorInvalidState = (OMX_S32) 0x8000100A, - - /** Stream is found to be corrupt */ - OMX_ErrorStreamCorrupt = (OMX_S32) 0x8000100B, - - /** Ports being connected are not compatible */ - OMX_ErrorPortsNotCompatible = (OMX_S32) 0x8000100C, - - /** Resources allocated to an idle component have been - lost resulting in the component returning to the loaded state */ - OMX_ErrorResourcesLost = (OMX_S32) 0x8000100D, - - /** No more indicies can be enumerated */ - OMX_ErrorNoMore = (OMX_S32) 0x8000100E, - - /** The component detected a version mismatch */ - OMX_ErrorVersionMismatch = (OMX_S32) 0x8000100F, - - /** The component is not ready to return data at this time */ - OMX_ErrorNotReady = (OMX_S32) 0x80001010, - - /** There was a timeout that occurred */ - OMX_ErrorTimeout = (OMX_S32) 0x80001011, - - /** This error occurs when trying to transition into the state you are already in */ - OMX_ErrorSameState = (OMX_S32) 0x80001012, - - /** Resources allocated to an executing or paused component have been - preempted, causing the component to return to the idle state */ - OMX_ErrorResourcesPreempted = (OMX_S32) 0x80001013, - - /** A non-supplier port sends this error to the IL client (via the EventHandler callback) - during the allocation of buffers (on a transition from the LOADED to the IDLE state or - on a port restart) when it deems that it has waited an unusually long time for the supplier - to send it an allocated buffer via a UseBuffer call. */ - OMX_ErrorPortUnresponsiveDuringAllocation = (OMX_S32) 0x80001014, - - /** A non-supplier port sends this error to the IL client (via the EventHandler callback) - during the deallocation of buffers (on a transition from the IDLE to LOADED state or - on a port stop) when it deems that it has waited an unusually long time for the supplier - to request the deallocation of a buffer header via a FreeBuffer call. */ - OMX_ErrorPortUnresponsiveDuringDeallocation = (OMX_S32) 0x80001015, - - /** A supplier port sends this error to the IL client (via the EventHandler callback) - during the stopping of a port (either on a transition from the IDLE to LOADED - state or a port stop) when it deems that it has waited an unusually long time for - the non-supplier to return a buffer via an EmptyThisBuffer or FillThisBuffer call. */ - OMX_ErrorPortUnresponsiveDuringStop = (OMX_S32) 0x80001016, - - /** Attempting a state transtion that is not allowed */ - OMX_ErrorIncorrectStateTransition = (OMX_S32) 0x80001017, - - /* Attempting a command that is not allowed during the present state. */ - OMX_ErrorIncorrectStateOperation = (OMX_S32) 0x80001018, - - /** The values encapsulated in the parameter or config structure are not supported. */ - OMX_ErrorUnsupportedSetting = (OMX_S32) 0x80001019, - - /** The parameter or config indicated by the given index is not supported. */ - OMX_ErrorUnsupportedIndex = (OMX_S32) 0x8000101A, - - /** The port index supplied is incorrect. */ - OMX_ErrorBadPortIndex = (OMX_S32) 0x8000101B, - - /** The port has lost one or more of its buffers and it thus unpopulated. */ - OMX_ErrorPortUnpopulated = (OMX_S32) 0x8000101C, - - /** Component suspended due to temporary loss of resources */ - OMX_ErrorComponentSuspended = (OMX_S32) 0x8000101D, - - /** Component suspended due to an inability to acquire dynamic resources */ - OMX_ErrorDynamicResourcesUnavailable = (OMX_S32) 0x8000101E, - - /** When the macroblock error reporting is enabled the component returns new error - for every frame that has errors */ - OMX_ErrorMbErrorsInFrame = (OMX_S32) 0x8000101F, - - /** A component reports this error when it cannot parse or determine the format of an input stream. */ - OMX_ErrorFormatNotDetected = (OMX_S32) 0x80001020, - - /** The content open operation failed. */ - OMX_ErrorContentPipeOpenFailed = (OMX_S32) 0x80001021, - - /** The content creation operation failed. */ - OMX_ErrorContentPipeCreationFailed = (OMX_S32) 0x80001022, - - /** Separate table information is being used */ - OMX_ErrorSeperateTablesUsed = (OMX_S32) 0x80001023, - - /** Tunneling is unsupported by the component*/ - OMX_ErrorTunnelingUnsupported = (OMX_S32) 0x80001024, - - OMX_ErrorKhronosExtensions = (OMX_S32)0x8F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_ErrorVendorStartUnused = (OMX_S32)0x90000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_ErrorMax = 0x7FFFFFFF -} OMX_ERRORTYPE; - -/** @ingroup core */ -typedef OMX_ERRORTYPE (* OMX_COMPONENTINITTYPE)(OMX_IN OMX_HANDLETYPE hComponent); - -/** @ingroup core */ -typedef struct OMX_COMPONENTREGISTERTYPE -{ - const char * pName; /* Component name, 128 byte limit (including '\0') applies */ - OMX_COMPONENTINITTYPE pInitialize; /* Component instance initialization function */ -} OMX_COMPONENTREGISTERTYPE; - -/** @ingroup core */ -extern OMX_COMPONENTREGISTERTYPE OMX_ComponentRegistered[]; - -/** @ingroup rpm */ -typedef struct OMX_PRIORITYMGMTTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nGroupPriority; /**< Priority of the component group */ - OMX_U32 nGroupID; /**< ID of the component group */ -} OMX_PRIORITYMGMTTYPE; - -/* Component name and Role names are limited to 128 characters including the terminating '\0'. */ -#define OMX_MAX_STRINGNAME_SIZE 128 - -/** @ingroup comp */ -typedef struct OMX_PARAM_COMPONENTROLETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U8 cRole[OMX_MAX_STRINGNAME_SIZE]; /**< name of standard component which defines component role */ -} OMX_PARAM_COMPONENTROLETYPE; - -/** End of Stream Buffer Flag: - * - * A component sets EOS when it has no more data to emit on a particular - * output port. Thus an output port shall set EOS on the last buffer it - * emits. A component's determination of when an output port should - * cease sending data is implemenation specific. - * @ingroup buf - */ - -#define OMX_BUFFERFLAG_EOS 0x00000001 - -/** Start Time Buffer Flag: - * - * The source of a stream (e.g. a demux component) sets the STARTTIME - * flag on the buffer that contains the starting timestamp for the - * stream. The starting timestamp corresponds to the first data that - * should be displayed at startup or after a seek. - * The first timestamp of the stream is not necessarily the start time. - * For instance, in the case of a seek to a particular video frame, - * the target frame may be an interframe. Thus the first buffer of - * the stream will be the intra-frame preceding the target frame and - * the starttime will occur with the target frame (with any other - * required frames required to reconstruct the target intervening). - * - * The STARTTIME flag is directly associated with the buffer's - * timestamp ' thus its association to buffer data and its - * propagation is identical to the timestamp's. - * - * When a Sync Component client receives a buffer with the - * STARTTIME flag it shall perform a SetConfig on its sync port - * using OMX_ConfigTimeClientStartTime and passing the buffer's - * timestamp. - * - * @ingroup buf - */ - -#define OMX_BUFFERFLAG_STARTTIME 0x00000002 - - - -/** Decode Only Buffer Flag: - * - * The source of a stream (e.g. a demux component) sets the DECODEONLY - * flag on any buffer that should shall be decoded but should not be - * displayed. This flag is used, for instance, when a source seeks to - * a target interframe that requires the decode of frames preceding the - * target to facilitate the target's reconstruction. In this case the - * source would emit the frames preceding the target downstream - * but mark them as decode only. - * - * The DECODEONLY is associated with buffer data and propagated in a - * manner identical to the buffer timestamp. - * - * A component that renders data should ignore all buffers with - * the DECODEONLY flag set. - * - * @ingroup buf - */ - -#define OMX_BUFFERFLAG_DECODEONLY 0x00000004 - - -/* Data Corrupt Flag: This flag is set when the IL client believes the data in the associated buffer is corrupt - * @ingroup buf - */ - -#define OMX_BUFFERFLAG_DATACORRUPT 0x00000008 - -/* End of Frame: The buffer contains exactly one end of frame and no data - * occurs after the end of frame. This flag is an optional hint. The absence - * of this flag does not imply the absence of an end of frame within the buffer. - * @ingroup buf -*/ -#define OMX_BUFFERFLAG_ENDOFFRAME 0x00000010 - -/* Sync Frame Flag: This flag is set when the buffer content contains a coded sync frame ' - * a frame that has no dependency on any other frame information - * @ingroup buf - */ -#define OMX_BUFFERFLAG_SYNCFRAME 0x00000020 - -/* Extra data present flag: there is extra data appended to the data stream - * residing in the buffer - * @ingroup buf - */ -#define OMX_BUFFERFLAG_EXTRADATA 0x00000040 - -/** Codec Config Buffer Flag: -* OMX_BUFFERFLAG_CODECCONFIG is an optional flag that is set by an -* output port when all bytes in the buffer form part or all of a set of -* codec specific configuration data. Examples include SPS/PPS nal units -* for OMX_VIDEO_CodingAVC or AudioSpecificConfig data for -* OMX_AUDIO_CodingAAC. Any component that for a given stream sets -* OMX_BUFFERFLAG_CODECCONFIG shall not mix codec configuration bytes -* with frame data in the same buffer, and shall send all buffers -* containing codec configuration bytes before any buffers containing -* frame data that those configurations bytes describe. -* If the stream format for a particular codec has a frame specific -* header at the start of each frame, for example OMX_AUDIO_CodingMP3 or -* OMX_AUDIO_CodingAAC in ADTS mode, then these shall be presented as -* normal without setting OMX_BUFFERFLAG_CODECCONFIG. - * @ingroup buf - */ -#define OMX_BUFFERFLAG_CODECCONFIG 0x00000080 - - - -/** @ingroup buf */ -typedef struct OMX_BUFFERHEADERTYPE -{ - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U8* pBuffer; /**< Pointer to actual block of memory - that is acting as the buffer */ - OMX_U32 nAllocLen; /**< size of the buffer allocated, in bytes */ - OMX_U32 nFilledLen; /**< number of bytes currently in the - buffer */ - OMX_U32 nOffset; /**< start offset of valid data in bytes from - the start of the buffer */ - OMX_PTR pAppPrivate; /**< pointer to any data the application - wants to associate with this buffer */ - OMX_PTR pPlatformPrivate; /**< pointer to any data the platform - wants to associate with this buffer */ - OMX_PTR pInputPortPrivate; /**< pointer to any data the input port - wants to associate with this buffer */ - OMX_PTR pOutputPortPrivate; /**< pointer to any data the output port - wants to associate with this buffer */ - OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will generate a - mark event upon processing this buffer. */ - OMX_PTR pMarkData; /**< Application specific data associated with - the mark sent on a mark event to disambiguate - this mark from others. */ - OMX_U32 nTickCount; /**< Optional entry that the component and - application can update with a tick count - when they access the component. This - value should be in microseconds. Since - this is a value relative to an arbitrary - starting point, this value cannot be used - to determine absolute time. This is an - optional entry and not all components - will update it.*/ - OMX_TICKS nTimeStamp; /**< Timestamp corresponding to the sample - starting at the first logical sample - boundary in the buffer. Timestamps of - successive samples within the buffer may - be inferred by adding the duration of the - of the preceding buffer to the timestamp - of the preceding buffer.*/ - OMX_U32 nFlags; /**< buffer specific flags */ - OMX_U32 nOutputPortIndex; /**< The index of the output port (if any) using - this buffer */ - OMX_U32 nInputPortIndex; /**< The index of the input port (if any) using - this buffer */ -} OMX_BUFFERHEADERTYPE; - -/** The OMX_EXTRADATATYPE enumeration is used to define the - * possible extra data payload types. - * NB: this enum is binary backwards compatible with the previous - * OMX_EXTRADATA_QUANT define. This should be replaced with - * OMX_ExtraDataQuantization. - */ -typedef enum OMX_EXTRADATATYPE -{ - OMX_ExtraDataNone = 0, /**< Indicates that no more extra data sections follow */ - OMX_ExtraDataQuantization, /**< The data payload contains quantization data */ - OMX_ExtraDataKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_ExtraDataVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_ExtraDataMax = 0x7FFFFFFF -} OMX_EXTRADATATYPE; - - -typedef struct OMX_OTHER_EXTRADATATYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_EXTRADATATYPE eType; /* Extra Data type */ - OMX_U32 nDataSize; /* Size of the supporting data to follow */ - OMX_U8 data[1]; /* Supporting data hint */ -} OMX_OTHER_EXTRADATATYPE; - -/** @ingroup comp */ -typedef struct OMX_PORT_PARAM_TYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPorts; /**< The number of ports for this component */ - OMX_U32 nStartPortNumber; /** first port number for this type of port */ -} OMX_PORT_PARAM_TYPE; - -/** @ingroup comp */ -typedef enum OMX_EVENTTYPE -{ - OMX_EventCmdComplete, /**< component has sucessfully completed a command */ - OMX_EventError, /**< component has detected an error condition */ - OMX_EventMark, /**< component has detected a buffer mark */ - OMX_EventPortSettingsChanged, /**< component is reported a port settings change */ - OMX_EventBufferFlag, /**< component has detected an EOS */ - OMX_EventResourcesAcquired, /**< component has been granted resources and is - automatically starting the state change from - OMX_StateWaitForResources to OMX_StateIdle. */ - OMX_EventComponentResumed, /**< Component resumed due to reacquisition of resources */ - OMX_EventDynamicResourcesAvailable, /**< Component has acquired previously unavailable dynamic resources */ - OMX_EventPortFormatDetected, /**< Component has detected a supported format. */ - OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_EventMax = 0x7FFFFFFF -} OMX_EVENTTYPE; - -typedef struct OMX_CALLBACKTYPE -{ - /** The EventHandler method is used to notify the application when an - event of interest occurs. Events are defined in the OMX_EVENTTYPE - enumeration. Please see that enumeration for details of what will - be returned for each type of event. Callbacks should not return - an error to the component, so if an error occurs, the application - shall handle it internally. This is a blocking call. - - The application should return from this call within 5 msec to avoid - blocking the component for an excessively long period of time. - - @param hComponent - handle of the component to access. This is the component - handle returned by the call to the GetHandle function. - @param pAppData - pointer to an application defined value that was provided in the - pAppData parameter to the OMX_GetHandle method for the component. - This application defined value is provided so that the application - can have a component specific context when receiving the callback. - @param eEvent - Event that the component wants to notify the application about. - @param nData1 - nData will be the OMX_ERRORTYPE for an error event and will be - an OMX_COMMANDTYPE for a command complete event and OMX_INDEXTYPE for a OMX_PortSettingsChanged event. - @param nData2 - nData2 will hold further information related to the event. Can be OMX_STATETYPE for - a OMX_CommandStateSet command or port index for a OMX_PortSettingsChanged event. - Default value is 0 if not used. ) - @param pEventData - Pointer to additional event-specific data (see spec for meaning). - */ - - OMX_ERRORTYPE (*EventHandler)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_EVENTTYPE eEvent, - OMX_IN OMX_U32 nData1, - OMX_IN OMX_U32 nData2, - OMX_IN OMX_PTR pEventData); - - /** The EmptyBufferDone method is used to return emptied buffers from an - input port back to the application for reuse. This is a blocking call - so the application should not attempt to refill the buffers during this - call, but should queue them and refill them in another thread. There - is no error return, so the application shall handle any errors generated - internally. - - The application should return from this call within 5 msec. - - @param hComponent - handle of the component to access. This is the component - handle returned by the call to the GetHandle function. - @param pAppData - pointer to an application defined value that was provided in the - pAppData parameter to the OMX_GetHandle method for the component. - This application defined value is provided so that the application - can have a component specific context when receiving the callback. - @param pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer indicating the buffer that was emptied. - @ingroup buf - */ - OMX_ERRORTYPE (*EmptyBufferDone)( - OMX_IN OMX_HANDLETYPE hComponent, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_BUFFERHEADERTYPE* pBuffer); - - /** The FillBufferDone method is used to return filled buffers from an - output port back to the application for emptying and then reuse. - This is a blocking call so the application should not attempt to - empty the buffers during this call, but should queue the buffers - and empty them in another thread. There is no error return, so - the application shall handle any errors generated internally. The - application shall also update the buffer header to indicate the - number of bytes placed into the buffer. - - The application should return from this call within 5 msec. - - @param hComponent - handle of the component to access. This is the component - handle returned by the call to the GetHandle function. - @param pAppData - pointer to an application defined value that was provided in the - pAppData parameter to the OMX_GetHandle method for the component. - This application defined value is provided so that the application - can have a component specific context when receiving the callback. - @param pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer indicating the buffer that was filled. - @ingroup buf - */ - OMX_ERRORTYPE (*FillBufferDone)( - OMX_OUT OMX_HANDLETYPE hComponent, - OMX_OUT OMX_PTR pAppData, - OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer); - -} OMX_CALLBACKTYPE; - -/** The OMX_BUFFERSUPPLIERTYPE enumeration is used to dictate port supplier - preference when tunneling between two ports. - @ingroup tun buf -*/ -typedef enum OMX_BUFFERSUPPLIERTYPE -{ - OMX_BufferSupplyUnspecified = 0x0, /**< port supplying the buffers is unspecified, - or don't care */ - OMX_BufferSupplyInput, /**< input port supplies the buffers */ - OMX_BufferSupplyOutput, /**< output port supplies the buffers */ - OMX_BufferSupplyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_BufferSupplyVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_BufferSupplyMax = 0x7FFFFFFF -} OMX_BUFFERSUPPLIERTYPE; - - -/** buffer supplier parameter - * @ingroup tun - */ -typedef struct OMX_PARAM_BUFFERSUPPLIERTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_BUFFERSUPPLIERTYPE eBufferSupplier; /**< buffer supplier */ -} OMX_PARAM_BUFFERSUPPLIERTYPE; - - -/**< indicates that buffers received by an input port of a tunnel - may not modify the data in the buffers - @ingroup tun - */ -#define OMX_PORTTUNNELFLAG_READONLY 0x00000001 - - -/** The OMX_TUNNELSETUPTYPE structure is used to pass data from an output - port to an input port as part the two ComponentTunnelRequest calls - resulting from a OMX_SetupTunnel call from the IL Client. - @ingroup tun - */ -typedef struct OMX_TUNNELSETUPTYPE -{ - OMX_U32 nTunnelFlags; /**< bit flags for tunneling */ - OMX_BUFFERSUPPLIERTYPE eSupplier; /**< supplier preference */ -} OMX_TUNNELSETUPTYPE; - -/* OMX Component headers is included to enable the core to use - macros for functions into the component for OMX release 1.0. - Developers should not access any structures or data from within - the component header directly */ -/* TO BE REMOVED - #include */ - -/** GetComponentVersion will return information about the component. - This is a blocking call. This macro will go directly from the - application to the component (via a core macro). The - component will return from this call within 5 msec. - @param [in] hComponent - handle of component to execute the command - @param [out] pComponentName - pointer to an empty string of length 128 bytes. The component - will write its name into this string. The name will be - terminated by a single zero byte. The name of a component will - be 127 bytes or less to leave room for the trailing zero byte. - An example of a valid component name is "OMX.ABC.ChannelMixer\0". - @param [out] pComponentVersion - pointer to an OMX Version structure that the component will fill - in. The component will fill in a value that indicates the - component version. NOTE: the component version is NOT the same - as the OMX Specification version (found in all structures). The - component version is defined by the vendor of the component and - its value is entirely up to the component vendor. - @param [out] pSpecVersion - pointer to an OMX Version structure that the component will fill - in. The SpecVersion is the version of the specification that the - component was built against. Please note that this value may or - may not match the structure's version. For example, if the - component was built against the 2.0 specification, but the - application (which creates the structure is built against the - 1.0 specification the versions would be different. - @param [out] pComponentUUID - pointer to the UUID of the component which will be filled in by - the component. The UUID is a unique identifier that is set at - RUN time for the component and is unique to each instantion of - the component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_GetComponentVersion( \ - hComponent, \ - pComponentName, \ - pComponentVersion, \ - pSpecVersion, \ - pComponentUUID) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetComponentVersion( \ - hComponent, \ - pComponentName, \ - pComponentVersion, \ - pSpecVersion, \ - pComponentUUID) /* Macro End */ - - -/** Send a command to the component. This call is a non-blocking call. - The component should check the parameters and then queue the command - to the component thread to be executed. The component thread shall - send the EventHandler() callback at the conclusion of the command. - This macro will go directly from the application to the component (via - a core macro). The component will return from this call within 5 msec. - - When the command is "OMX_CommandStateSet" the component will queue a - state transition to the new state idenfied in nParam. - - When the command is "OMX_CommandFlush", to flush a port's buffer queues, - the command will force the component to return all buffers NOT CURRENTLY - BEING PROCESSED to the application, in the order in which the buffers - were received. - - When the command is "OMX_CommandPortDisable" or - "OMX_CommandPortEnable", the component's port (given by the value of - nParam) will be stopped or restarted. - - When the command "OMX_CommandMarkBuffer" is used to mark a buffer, the - pCmdData will point to a OMX_MARKTYPE structure containing the component - handle of the component to examine the buffer chain for the mark. nParam1 - contains the index of the port on which the buffer mark is applied. - - Specification text for more details. - - @param [in] hComponent - handle of component to execute the command - @param [in] Cmd - Command for the component to execute - @param [in] nParam - Parameter for the command to be executed. When Cmd has the value - OMX_CommandStateSet, value is a member of OMX_STATETYPE. When Cmd has - the value OMX_CommandFlush, value of nParam indicates which port(s) - to flush. -1 is used to flush all ports a single port index will - only flush that port. When Cmd has the value "OMX_CommandPortDisable" - or "OMX_CommandPortEnable", the component's port is given by - the value of nParam. When Cmd has the value "OMX_CommandMarkBuffer" - the components pot is given by the value of nParam. - @param [in] pCmdData - Parameter pointing to the OMX_MARKTYPE structure when Cmd has the value - "OMX_CommandMarkBuffer". - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_SendCommand( \ - hComponent, \ - Cmd, \ - nParam, \ - pCmdData) \ - ((OMX_COMPONENTTYPE*)hComponent)->SendCommand( \ - hComponent, \ - Cmd, \ - nParam, \ - pCmdData) /* Macro End */ - - -/** The OMX_GetParameter macro will get one of the current parameter - settings from the component. This macro cannot only be invoked when - the component is in the OMX_StateInvalid state. The nParamIndex - parameter is used to indicate which structure is being requested from - the component. The application shall allocate the correct structure - and shall fill in the structure size and version information before - invoking this macro. When the parameter applies to a port, the - caller shall fill in the appropriate nPortIndex value indicating the - port on which the parameter applies. If the component has not had - any settings changed, then the component should return a set of - valid DEFAULT parameters for the component. This is a blocking - call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nParamIndex - Index of the structure to be filled. This value is from the - OMX_INDEXTYPE enumeration. - @param [in,out] pComponentParameterStructure - Pointer to application allocated structure to be filled by the - component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_GetParameter( \ - hComponent, \ - nParamIndex, \ - pComponentParameterStructure) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetParameter( \ - hComponent, \ - nParamIndex, \ - pComponentParameterStructure) /* Macro End */ - - -/** The OMX_SetParameter macro will send an initialization parameter - structure to a component. Each structure shall be sent one at a time, - in a separate invocation of the macro. This macro can only be - invoked when the component is in the OMX_StateLoaded state, or the - port is disabled (when the parameter applies to a port). The - nParamIndex parameter is used to indicate which structure is being - passed to the component. The application shall allocate the - correct structure and shall fill in the structure size and version - information (as well as the actual data) before invoking this macro. - The application is free to dispose of this structure after the call - as the component is required to copy any data it shall retain. This - is a blocking call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nIndex - Index of the structure to be sent. This value is from the - OMX_INDEXTYPE enumeration. - @param [in] pComponentParameterStructure - pointer to application allocated structure to be used for - initialization by the component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_SetParameter( \ - hComponent, \ - nParamIndex, \ - pComponentParameterStructure) \ - ((OMX_COMPONENTTYPE*)hComponent)->SetParameter( \ - hComponent, \ - nParamIndex, \ - pComponentParameterStructure) /* Macro End */ - - -/** The OMX_GetConfig macro will get one of the configuration structures - from a component. This macro can be invoked anytime after the - component has been loaded. The nParamIndex call parameter is used to - indicate which structure is being requested from the component. The - application shall allocate the correct structure and shall fill in the - structure size and version information before invoking this macro. - If the component has not had this configuration parameter sent before, - then the component should return a set of valid DEFAULT values for the - component. This is a blocking call. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nIndex - Index of the structure to be filled. This value is from the - OMX_INDEXTYPE enumeration. - @param [in,out] pComponentConfigStructure - pointer to application allocated structure to be filled by the - component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp -*/ -#define OMX_GetConfig( \ - hComponent, \ - nConfigIndex, \ - pComponentConfigStructure) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetConfig( \ - hComponent, \ - nConfigIndex, \ - pComponentConfigStructure) /* Macro End */ - - -/** The OMX_SetConfig macro will send one of the configuration - structures to a component. Each structure shall be sent one at a time, - each in a separate invocation of the macro. This macro can be invoked - anytime after the component has been loaded. The application shall - allocate the correct structure and shall fill in the structure size - and version information (as well as the actual data) before invoking - this macro. The application is free to dispose of this structure after - the call as the component is required to copy any data it shall retain. - This is a blocking call. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nConfigIndex - Index of the structure to be sent. This value is from the - OMX_INDEXTYPE enumeration above. - @param [in] pComponentConfigStructure - pointer to application allocated structure to be used for - initialization by the component. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_SetConfig( \ - hComponent, \ - nConfigIndex, \ - pComponentConfigStructure) \ - ((OMX_COMPONENTTYPE*)hComponent)->SetConfig( \ - hComponent, \ - nConfigIndex, \ - pComponentConfigStructure) /* Macro End */ - - -/** The OMX_GetExtensionIndex macro will invoke a component to translate - a vendor specific configuration or parameter string into an OMX - structure index. There is no requirement for the vendor to support - this command for the indexes already found in the OMX_INDEXTYPE - enumeration (this is done to save space in small components). The - component shall support all vendor supplied extension indexes not found - in the master OMX_INDEXTYPE enumeration. This is a blocking call. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the GetHandle function. - @param [in] cParameterName - OMX_STRING that shall be less than 128 characters long including - the trailing null byte. This is the string that will get - translated by the component into a configuration index. - @param [out] pIndexType - a pointer to a OMX_INDEXTYPE to receive the index value. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_GetExtensionIndex( \ - hComponent, \ - cParameterName, \ - pIndexType) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetExtensionIndex( \ - hComponent, \ - cParameterName, \ - pIndexType) /* Macro End */ - - -/** The OMX_GetState macro will invoke the component to get the current - state of the component and place the state value into the location - pointed to by pState. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [out] pState - pointer to the location to receive the state. The value returned - is one of the OMX_STATETYPE members - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp - */ -#define OMX_GetState( \ - hComponent, \ - pState) \ - ((OMX_COMPONENTTYPE*)hComponent)->GetState( \ - hComponent, \ - pState) /* Macro End */ - - -/** The OMX_UseBuffer macro will request that the component use - a buffer (and allocate its own buffer header) already allocated - by another component, or by the IL Client. This is a blocking - call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [out] ppBuffer - pointer to an OMX_BUFFERHEADERTYPE structure used to receive the - pointer to the buffer header - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ - -#define OMX_UseBuffer( \ - hComponent, \ - ppBufferHdr, \ - nPortIndex, \ - pAppPrivate, \ - nSizeBytes, \ - pBuffer) \ - ((OMX_COMPONENTTYPE*)hComponent)->UseBuffer( \ - hComponent, \ - ppBufferHdr, \ - nPortIndex, \ - pAppPrivate, \ - nSizeBytes, \ - pBuffer) - - -/** The OMX_AllocateBuffer macro will request that the component allocate - a new buffer and buffer header. The component will allocate the - buffer and the buffer header and return a pointer to the buffer - header. This is a blocking call. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [out] ppBuffer - pointer to an OMX_BUFFERHEADERTYPE structure used to receive - the pointer to the buffer header - @param [in] nPortIndex - nPortIndex is used to select the port on the component the buffer will - be used with. The port can be found by using the nPortIndex - value as an index into the Port Definition array of the component. - @param [in] pAppPrivate - pAppPrivate is used to initialize the pAppPrivate member of the - buffer header structure. - @param [in] nSizeBytes - size of the buffer to allocate. Used when bAllocateNew is true. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_AllocateBuffer( \ - hComponent, \ - ppBuffer, \ - nPortIndex, \ - pAppPrivate, \ - nSizeBytes) \ - ((OMX_COMPONENTTYPE*)hComponent)->AllocateBuffer( \ - hComponent, \ - ppBuffer, \ - nPortIndex, \ - pAppPrivate, \ - nSizeBytes) /* Macro End */ - - -/** The OMX_FreeBuffer macro will release a buffer header from the component - which was allocated using either OMX_AllocateBuffer or OMX_UseBuffer. If - the component allocated the buffer (see the OMX_UseBuffer macro) then - the component shall free the buffer and buffer header. This is a - blocking call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] nPortIndex - nPortIndex is used to select the port on the component the buffer will - be used with. - @param [in] pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_FreeBuffer( \ - hComponent, \ - nPortIndex, \ - pBuffer) \ - ((OMX_COMPONENTTYPE*)hComponent)->FreeBuffer( \ - hComponent, \ - nPortIndex, \ - pBuffer) /* Macro End */ - - -/** The OMX_EmptyThisBuffer macro will send a buffer full of data to an - input port of a component. The buffer will be emptied by the component - and returned to the application via the EmptyBufferDone call back. - This is a non-blocking call in that the component will record the buffer - and return immediately and then empty the buffer, later, at the proper - time. As expected, this macro may be invoked only while the component - is in the OMX_StateExecuting. If nPortIndex does not specify an input - port, the component shall return an error. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_EmptyThisBuffer( \ - hComponent, \ - pBuffer) \ - ((OMX_COMPONENTTYPE*)hComponent)->EmptyThisBuffer( \ - hComponent, \ - pBuffer) /* Macro End */ - - -/** The OMX_FillThisBuffer macro will send an empty buffer to an - output port of a component. The buffer will be filled by the component - and returned to the application via the FillBufferDone call back. - This is a non-blocking call in that the component will record the buffer - and return immediately and then fill the buffer, later, at the proper - time. As expected, this macro may be invoked only while the component - is in the OMX_ExecutingState. If nPortIndex does not specify an output - port, the component shall return an error. - - The component should return from this call within 5 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [in] pBuffer - pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer - or AllocateBuffer. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_FillThisBuffer( \ - hComponent, \ - pBuffer) \ - ((OMX_COMPONENTTYPE*)hComponent)->FillThisBuffer( \ - hComponent, \ - pBuffer) /* Macro End */ - - - -/** The OMX_UseEGLImage macro will request that the component use - a EGLImage provided by EGL (and allocate its own buffer header) - This is a blocking call. - - The component should return from this call within 20 msec. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the OMX_GetHandle function. - @param [out] ppBuffer - pointer to an OMX_BUFFERHEADERTYPE structure used to receive the - pointer to the buffer header. Note that the memory location used - for this buffer is NOT visible to the IL Client. - @param [in] nPortIndex - nPortIndex is used to select the port on the component the buffer will - be used with. The port can be found by using the nPortIndex - value as an index into the Port Definition array of the component. - @param [in] pAppPrivate - pAppPrivate is used to initialize the pAppPrivate member of the - buffer header structure. - @param [in] eglImage - eglImage contains the handle of the EGLImage to use as a buffer on the - specified port. The component is expected to validate properties of - the EGLImage against the configuration of the port to ensure the component - can use the EGLImage as a buffer. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup comp buf - */ -#define OMX_UseEGLImage( \ - hComponent, \ - ppBufferHdr, \ - nPortIndex, \ - pAppPrivate, \ - eglImage) \ - ((OMX_COMPONENTTYPE*)hComponent)->UseEGLImage( \ - hComponent, \ - ppBufferHdr, \ - nPortIndex, \ - pAppPrivate, \ - eglImage) - -/** The OMX_Init method is used to initialize the OMX core. It shall be the - first call made into OMX and it should only be executed one time without - an interviening OMX_Deinit call. - - The core should return from this call within 20 msec. - - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Init(void); - - -/** The OMX_Deinit method is used to deinitialize the OMX core. It shall be - the last call made into OMX. In the event that the core determines that - thare are components loaded when this call is made, the core may return - with an error rather than try to unload the components. - - The core should return from this call within 20 msec. - - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Deinit(void); - - -/** The OMX_ComponentNameEnum method will enumerate through all the names of - recognised valid components in the system. This function is provided - as a means to detect all the components in the system run-time. There is - no strict ordering to the enumeration order of component names, although - each name will only be enumerated once. If the OMX core supports run-time - installation of new components, it is only requried to detect newly - installed components when the first call to enumerate component names - is made (i.e. when nIndex is 0x0). - - The core should return from this call in 20 msec. - - @param [out] cComponentName - pointer to a null terminated string with the component name. The - names of the components are strings less than 127 bytes in length - plus the trailing null for a maximum size of 128 bytes. An example - of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are - assigned by the vendor, but shall start with "OMX." and then have - the Vendor designation next. - @param [in] nNameLength - number of characters in the cComponentName string. With all - component name strings restricted to less than 128 characters - (including the trailing null) it is recomended that the caller - provide a input string for the cComponentName of 128 characters. - @param [in] nIndex - number containing the enumeration index for the component. - Multiple calls to OMX_ComponentNameEnum with increasing values - of nIndex will enumerate through the component names in the - system until OMX_ErrorNoMore is returned. The value of nIndex - is 0 to (N-1), where N is the number of valid installed components - in the system. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. When the value of nIndex exceeds the number of - components in the system minus 1, OMX_ErrorNoMore will be - returned. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_ComponentNameEnum( - OMX_OUT OMX_STRING cComponentName, - OMX_IN OMX_U32 nNameLength, - OMX_IN OMX_U32 nIndex); - - -/** The OMX_GetHandle method will locate the component specified by the - component name given, load that component into memory and then invoke - the component's methods to create an instance of the component. - - The core should return from this call within 20 msec. - - @param [out] pHandle - pointer to an OMX_HANDLETYPE pointer to be filled in by this method. - @param [in] cComponentName - pointer to a null terminated string with the component name. The - names of the components are strings less than 127 bytes in length - plus the trailing null for a maximum size of 128 bytes. An example - of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are - assigned by the vendor, but shall start with "OMX." and then have - the Vendor designation next. - @param [in] pAppData - pointer to an application defined value that will be returned - during callbacks so that the application can identify the source - of the callback. - @param [in] pCallBacks - pointer to a OMX_CALLBACKTYPE structure that will be passed to the - component to initialize it with. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_GetHandle( - OMX_OUT OMX_HANDLETYPE* pHandle, - OMX_IN OMX_STRING cComponentName, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_CALLBACKTYPE* pCallBacks); - - -/** The OMX_FreeHandle method will free a handle allocated by the OMX_GetHandle - method. If the component reference count goes to zero, the component will - be unloaded from memory. - - The core should return from this call within 20 msec when the component is - in the OMX_StateLoaded state. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the GetHandle function. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_FreeHandle( - OMX_IN OMX_HANDLETYPE hComponent); - - - -/** The OMX_SetupTunnel method will handle the necessary calls to the components - to setup the specified tunnel the two components. NOTE: This is - an actual method (not a #define macro). This method will make calls into - the component ComponentTunnelRequest method to do the actual tunnel - connection. - - The ComponentTunnelRequest method on both components will be called. - This method shall not be called unless the component is in the - OMX_StateLoaded state except when the ports used for the tunnel are - disabled. In this case, the component may be in the OMX_StateExecuting, - OMX_StatePause, or OMX_StateIdle states. - - The core should return from this call within 20 msec. - - @param [in] hOutput - Handle of the component to be accessed. Also this is the handle - of the component whose port, specified in the nPortOutput parameter - will be used the source for the tunnel. This is the component handle - returned by the call to the OMX_GetHandle function. There is a - requirement that hOutput be the source for the data when - tunelling (i.e. nPortOutput is an output port). If 0x0, the component - specified in hInput will have it's port specified in nPortInput - setup for communication with the application / IL client. - @param [in] nPortOutput - nPortOutput is used to select the source port on component to be - used in the tunnel. - @param [in] hInput - This is the component to setup the tunnel with. This is the handle - of the component whose port, specified in the nPortInput parameter - will be used the destination for the tunnel. This is the component handle - returned by the call to the OMX_GetHandle function. There is a - requirement that hInput be the destination for the data when - tunelling (i.e. nPortInut is an input port). If 0x0, the component - specified in hOutput will have it's port specified in nPortPOutput - setup for communication with the application / IL client. - @param [in] nPortInput - nPortInput is used to select the destination port on component to be - used in the tunnel. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. Otherwise the appropriate OMX error will be returned. - When OMX_ErrorNotImplemented is returned, one or both components is - a non-interop component and does not support tunneling. - - On failure, the ports of both components are setup for communication - with the application / IL Client. - @ingroup core tun - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_SetupTunnel( - OMX_IN OMX_HANDLETYPE hOutput, - OMX_IN OMX_U32 nPortOutput, - OMX_IN OMX_HANDLETYPE hInput, - OMX_IN OMX_U32 nPortInput); - -/** @ingroup cp */ -OMX_API OMX_ERRORTYPE OMX_GetContentPipe( - OMX_OUT OMX_HANDLETYPE *hPipe, - OMX_IN OMX_STRING szURI); - -/** The OMX_GetComponentsOfRole method will return the number of components that support the given - role and (if the compNames field is non-NULL) the names of those components. The call will fail if - an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the - client should: - * first call this function with the compNames field NULL to determine the number of component names - * second call this function with the compNames field pointing to an array of names allocated - according to the number returned by the first call. - - The core should return from this call within 5 msec. - - @param [in] role - This is generic standard component name consisting only of component class - name and the type within that class (e.g. 'audio_decoder.aac'). - @param [inout] pNumComps - This is used both as input and output. - - If compNames is NULL, the input is ignored and the output specifies how many components support - the given role. - - If compNames is not NULL, on input it bounds the size of the input structure and - on output, it specifies the number of components string names listed within the compNames parameter. - @param [inout] compNames - If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings which accepts - a list of the names of all physical components that implement the specified standard component name. - Each name is NULL terminated. numComps indicates the number of names. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_GetComponentsOfRole ( - OMX_IN OMX_STRING role, - OMX_INOUT OMX_U32 *pNumComps, - OMX_INOUT OMX_U8 **compNames); - -/** The OMX_GetRolesOfComponent method will return the number of roles supported by the given - component and (if the roles field is non-NULL) the names of those roles. The call will fail if - an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the - client should: - * first call this function with the roles field NULL to determine the number of role names - * second call this function with the roles field pointing to an array of names allocated - according to the number returned by the first call. - - The core should return from this call within 5 msec. - - @param [in] compName - This is the name of the component being queried about. - @param [inout] pNumRoles - This is used both as input and output. - - If roles is NULL, the input is ignored and the output specifies how many roles the component supports. - - If compNames is not NULL, on input it bounds the size of the input structure and - on output, it specifies the number of roles string names listed within the roles parameter. - @param [out] roles - If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings - which accepts a list of the names of all standard components roles implemented on the - specified component name. numComps indicates the number of names. - @ingroup core - */ -OMX_API OMX_ERRORTYPE OMX_GetRolesOfComponent ( - OMX_IN OMX_STRING compName, - OMX_INOUT OMX_U32 *pNumRoles, - OMX_OUT OMX_U8 **roles); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/v1_x/OMX_IVCommon.h --- a/omxil/omxilapi/v1_x/OMX_IVCommon.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,921 +0,0 @@ -/** - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** - * @file - * OpenMax IL version 1.1.2 - * The structures needed by Video and Image components to exchange - * parameters and configuration data with the components. - */ -#ifndef OMX_IVCommon_h -#define OMX_IVCommon_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * Each OMX header must include all required header files to allow the header - * to compile without errors. The includes below are required for this header - * file to compile successfully - */ - -#include - -/** @defgroup iv OpenMAX IL Imaging and Video Domain - * Common structures for OpenMAX IL Imaging and Video domains - * @{ - */ - - -/** - * Enumeration defining possible uncompressed image/video formats. - * - * ENUMS: - * Unused : Placeholder value when format is N/A - * Monochrome : black and white - * 8bitRGB332 : Red 7:5, Green 4:2, Blue 1:0 - * 12bitRGB444 : Red 11:8, Green 7:4, Blue 3:0 - * 16bitARGB4444 : Alpha 15:12, Red 11:8, Green 7:4, Blue 3:0 - * 16bitARGB1555 : Alpha 15, Red 14:10, Green 9:5, Blue 4:0 - * 16bitRGB565 : Red 15:11, Green 10:5, Blue 4:0 - * 16bitBGR565 : Blue 15:11, Green 10:5, Red 4:0 - * 18bitRGB666 : Red 17:12, Green 11:6, Blue 5:0 - * 18bitARGB1665 : Alpha 17, Red 16:11, Green 10:5, Blue 4:0 - * 19bitARGB1666 : Alpha 18, Red 17:12, Green 11:6, Blue 5:0 - * 24bitRGB888 : Red 24:16, Green 15:8, Blue 7:0 - * 24bitBGR888 : Blue 24:16, Green 15:8, Red 7:0 - * 24bitARGB1887 : Alpha 23, Red 22:15, Green 14:7, Blue 6:0 - * 25bitARGB1888 : Alpha 24, Red 23:16, Green 15:8, Blue 7:0 - * 32bitBGRA8888 : Blue 31:24, Green 23:16, Red 15:8, Alpha 7:0 - * 32bitARGB8888 : Alpha 31:24, Red 23:16, Green 15:8, Blue 7:0 - * YUV411Planar : U,Y are subsampled by a factor of 4 horizontally - * YUV411PackedPlanar : packed per payload in planar slices - * YUV420Planar : Three arrays Y,U,V. - * YUV420PackedPlanar : packed per payload in planar slices - * YUV420SemiPlanar : Two arrays, one is all Y, the other is U and V - * YUV422Planar : Three arrays Y,U,V. - * YUV422PackedPlanar : packed per payload in planar slices - * YUV422SemiPlanar : Two arrays, one is all Y, the other is U and V - * YCbYCr : Organized as 16bit YUYV (i.e. YCbYCr) - * YCrYCb : Organized as 16bit YVYU (i.e. YCrYCb) - * CbYCrY : Organized as 16bit UYVY (i.e. CbYCrY) - * CrYCbY : Organized as 16bit VYUY (i.e. CrYCbY) - * YUV444Interleaved : Each pixel contains equal parts YUV - * RawBayer8bit : SMIA camera output format - * RawBayer10bit : SMIA camera output format - * RawBayer8bitcompressed : SMIA camera output format - */ -typedef enum OMX_COLOR_FORMATTYPE { - OMX_COLOR_FormatUnused, - OMX_COLOR_FormatMonochrome, - OMX_COLOR_Format8bitRGB332, - OMX_COLOR_Format12bitRGB444, - OMX_COLOR_Format16bitARGB4444, - OMX_COLOR_Format16bitARGB1555, - OMX_COLOR_Format16bitRGB565, - OMX_COLOR_Format16bitBGR565, - OMX_COLOR_Format18bitRGB666, - OMX_COLOR_Format18bitARGB1665, - OMX_COLOR_Format19bitARGB1666, - OMX_COLOR_Format24bitRGB888, - OMX_COLOR_Format24bitBGR888, - OMX_COLOR_Format24bitARGB1887, - OMX_COLOR_Format25bitARGB1888, - OMX_COLOR_Format32bitBGRA8888, - OMX_COLOR_Format32bitARGB8888, - OMX_COLOR_FormatYUV411Planar, - OMX_COLOR_FormatYUV411PackedPlanar, - OMX_COLOR_FormatYUV420Planar, - OMX_COLOR_FormatYUV420PackedPlanar, - OMX_COLOR_FormatYUV420SemiPlanar, - OMX_COLOR_FormatYUV422Planar, - OMX_COLOR_FormatYUV422PackedPlanar, - OMX_COLOR_FormatYUV422SemiPlanar, - OMX_COLOR_FormatYCbYCr, - OMX_COLOR_FormatYCrYCb, - OMX_COLOR_FormatCbYCrY, - OMX_COLOR_FormatCrYCbY, - OMX_COLOR_FormatYUV444Interleaved, - OMX_COLOR_FormatRawBayer8bit, - OMX_COLOR_FormatRawBayer10bit, - OMX_COLOR_FormatRawBayer8bitcompressed, - OMX_COLOR_FormatL2, - OMX_COLOR_FormatL4, - OMX_COLOR_FormatL8, - OMX_COLOR_FormatL16, - OMX_COLOR_FormatL24, - OMX_COLOR_FormatL32, - OMX_COLOR_FormatYUV420PackedSemiPlanar, - OMX_COLOR_FormatYUV422PackedSemiPlanar, - OMX_COLOR_Format18BitBGR666, - OMX_COLOR_Format24BitARGB6666, - OMX_COLOR_Format24BitABGR6666, - OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_COLOR_FormatMax = 0x7FFFFFFF -} OMX_COLOR_FORMATTYPE; - - -/** - * Defines the matrix for conversion from RGB to YUV or vice versa. - * iColorMatrix should be initialized with the fixed point values - * used in converting between formats. - */ -typedef struct OMX_CONFIG_COLORCONVERSIONTYPE { - OMX_U32 nSize; /**< Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version info */ - OMX_U32 nPortIndex; /**< Port that this struct applies to */ - OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */ - OMX_S32 xColorOffset[4]; /**< Stored in signed Q16 format */ -}OMX_CONFIG_COLORCONVERSIONTYPE; - - -/** - * Structure defining percent to scale each frame dimension. For example: - * To make the width 50% larger, use fWidth = 1.5 and to make the width - * 1/2 the original size, use fWidth = 0.5 - */ -typedef struct OMX_CONFIG_SCALEFACTORTYPE { - OMX_U32 nSize; /**< Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version info */ - OMX_U32 nPortIndex; /**< Port that this struct applies to */ - OMX_S32 xWidth; /**< Fixed point value stored as Q16 */ - OMX_S32 xHeight; /**< Fixed point value stored as Q16 */ -}OMX_CONFIG_SCALEFACTORTYPE; - - -/** - * Enumeration of possible image filter types - */ -typedef enum OMX_IMAGEFILTERTYPE { - OMX_ImageFilterNone, - OMX_ImageFilterNoise, - OMX_ImageFilterEmboss, - OMX_ImageFilterNegative, - OMX_ImageFilterSketch, - OMX_ImageFilterOilPaint, - OMX_ImageFilterHatch, - OMX_ImageFilterGpen, - OMX_ImageFilterAntialias, - OMX_ImageFilterDeRing, - OMX_ImageFilterSolarize, - OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_ImageFilterMax = 0x7FFFFFFF -} OMX_IMAGEFILTERTYPE; - - -/** - * Image filter configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eImageFilter : Image filter type enumeration - */ -typedef struct OMX_CONFIG_IMAGEFILTERTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_IMAGEFILTERTYPE eImageFilter; -} OMX_CONFIG_IMAGEFILTERTYPE; - - -/** - * Customized U and V for color enhancement - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * bColorEnhancement : Enable/disable color enhancement - * nCustomizedU : Practical values: 16-240, range: 0-255, value set for - * U component - * nCustomizedV : Practical values: 16-240, range: 0-255, value set for - * V component - */ -typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bColorEnhancement; - OMX_U8 nCustomizedU; - OMX_U8 nCustomizedV; -} OMX_CONFIG_COLORENHANCEMENTTYPE; - - -/** - * Define color key and color key mask - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nARGBColor : 32bit Alpha, Red, Green, Blue Color - * nARGBMask : 32bit Mask for Alpha, Red, Green, Blue channels - */ -typedef struct OMX_CONFIG_COLORKEYTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nARGBColor; - OMX_U32 nARGBMask; -} OMX_CONFIG_COLORKEYTYPE; - - -/** - * List of color blend types for pre/post processing - * - * ENUMS: - * None : No color blending present - * AlphaConstant : Function is (alpha_constant * src) + - * (1 - alpha_constant) * dst) - * AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst) - * Alternate : Function is alternating pixels from src and dst - * And : Function is (src & dst) - * Or : Function is (src | dst) - * Invert : Function is ~src - */ -typedef enum OMX_COLORBLENDTYPE { - OMX_ColorBlendNone, - OMX_ColorBlendAlphaConstant, - OMX_ColorBlendAlphaPerPixel, - OMX_ColorBlendAlternate, - OMX_ColorBlendAnd, - OMX_ColorBlendOr, - OMX_ColorBlendInvert, - OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_ColorBlendMax = 0x7FFFFFFF -} OMX_COLORBLENDTYPE; - - -/** - * Color blend configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nRGBAlphaConstant : Constant global alpha values when global alpha is used - * eColorBlend : Color blend type enumeration - */ -typedef struct OMX_CONFIG_COLORBLENDTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nRGBAlphaConstant; - OMX_COLORBLENDTYPE eColorBlend; -} OMX_CONFIG_COLORBLENDTYPE; - - -/** - * Hold frame dimension - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nWidth : Frame width in pixels - * nHeight : Frame height in pixels - */ -typedef struct OMX_FRAMESIZETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nWidth; - OMX_U32 nHeight; -} OMX_FRAMESIZETYPE; - - -/** - * Rotation configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nRotation : +/- integer rotation value - */ -typedef struct OMX_CONFIG_ROTATIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_S32 nRotation; -} OMX_CONFIG_ROTATIONTYPE; - - -/** - * Possible mirroring directions for pre/post processing - * - * ENUMS: - * None : No mirroring - * Vertical : Vertical mirroring, flip on X axis - * Horizontal : Horizontal mirroring, flip on Y axis - * Both : Both vertical and horizontal mirroring - */ -typedef enum OMX_MIRRORTYPE { - OMX_MirrorNone = 0, - OMX_MirrorVertical, - OMX_MirrorHorizontal, - OMX_MirrorBoth, - OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_MirrorMax = 0x7FFFFFFF -} OMX_MIRRORTYPE; - - -/** - * Mirroring configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eMirror : Mirror type enumeration - */ -typedef struct OMX_CONFIG_MIRRORTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_MIRRORTYPE eMirror; -} OMX_CONFIG_MIRRORTYPE; - - -/** - * Position information only - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nX : X coordinate for the point - * nY : Y coordinate for the point - */ -typedef struct OMX_CONFIG_POINTTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_S32 nX; - OMX_S32 nY; -} OMX_CONFIG_POINTTYPE; - - -/** - * Frame size plus position - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nLeft : X Coordinate of the top left corner of the rectangle - * nTop : Y Coordinate of the top left corner of the rectangle - * nWidth : Width of the rectangle - * nHeight : Height of the rectangle - */ -typedef struct OMX_CONFIG_RECTTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_S32 nLeft; - OMX_S32 nTop; - OMX_U32 nWidth; - OMX_U32 nHeight; -} OMX_CONFIG_RECTTYPE; - - -/** - * Deblocking state; it is required to be set up before starting the codec - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * bDeblocking : Enable/disable deblocking mode - */ -typedef struct OMX_PARAM_DEBLOCKINGTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bDeblocking; -} OMX_PARAM_DEBLOCKINGTYPE; - - -/** - * Stabilization state - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * bStab : Enable/disable frame stabilization state - */ -typedef struct OMX_CONFIG_FRAMESTABTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bStab; -} OMX_CONFIG_FRAMESTABTYPE; - - -/** - * White Balance control type - * - * STRUCT MEMBERS: - * SunLight : Referenced in JSR-234 - * Flash : Optimal for device's integrated flash - */ -typedef enum OMX_WHITEBALCONTROLTYPE { - OMX_WhiteBalControlOff = 0, - OMX_WhiteBalControlAuto, - OMX_WhiteBalControlSunLight, - OMX_WhiteBalControlCloudy, - OMX_WhiteBalControlShade, - OMX_WhiteBalControlTungsten, - OMX_WhiteBalControlFluorescent, - OMX_WhiteBalControlIncandescent, - OMX_WhiteBalControlFlash, - OMX_WhiteBalControlHorizon, - OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_WhiteBalControlMax = 0x7FFFFFFF -} OMX_WHITEBALCONTROLTYPE; - - -/** - * White Balance control configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eWhiteBalControl : White balance enumeration - */ -typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_WHITEBALCONTROLTYPE eWhiteBalControl; -} OMX_CONFIG_WHITEBALCONTROLTYPE; - - -/** - * Exposure control type - */ -typedef enum OMX_EXPOSURECONTROLTYPE { - OMX_ExposureControlOff = 0, - OMX_ExposureControlAuto, - OMX_ExposureControlNight, - OMX_ExposureControlBackLight, - OMX_ExposureControlSpotLight, - OMX_ExposureControlSports, - OMX_ExposureControlSnow, - OMX_ExposureControlBeach, - OMX_ExposureControlLargeAperture, - OMX_ExposureControlSmallApperture, - OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_ExposureControlMax = 0x7FFFFFFF -} OMX_EXPOSURECONTROLTYPE; - - -/** - * White Balance control configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eExposureControl : Exposure control enumeration - */ -typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_EXPOSURECONTROLTYPE eExposureControl; -} OMX_CONFIG_EXPOSURECONTROLTYPE; - - -/** - * Defines sensor supported mode. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nFrameRate : Single shot mode is indicated by a 0 - * bOneShot : Enable for single shot, disable for streaming - * sFrameSize : Framesize - */ -typedef struct OMX_PARAM_SENSORMODETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nFrameRate; - OMX_BOOL bOneShot; - OMX_FRAMESIZETYPE sFrameSize; -} OMX_PARAM_SENSORMODETYPE; - - -/** - * Defines contrast level - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nContrast : Values allowed for contrast -100 to 100, zero means no change - */ -typedef struct OMX_CONFIG_CONTRASTTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_S32 nContrast; -} OMX_CONFIG_CONTRASTTYPE; - - -/** - * Defines brightness level - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nBrightness : 0-100% - */ -typedef struct OMX_CONFIG_BRIGHTNESSTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nBrightness; -} OMX_CONFIG_BRIGHTNESSTYPE; - - -/** - * Defines backlight level configuration for a video sink, e.g. LCD panel - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nBacklight : Values allowed for backlight 0-100% - * nTimeout : Number of milliseconds before backlight automatically turns - * off. A value of 0x0 disables backight timeout - */ -typedef struct OMX_CONFIG_BACKLIGHTTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nBacklight; - OMX_U32 nTimeout; -} OMX_CONFIG_BACKLIGHTTYPE; - - -/** - * Defines setting for Gamma - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nGamma : Values allowed for gamma -100 to 100, zero means no change - */ -typedef struct OMX_CONFIG_GAMMATYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_S32 nGamma; -} OMX_CONFIG_GAMMATYPE; - - -/** - * Define for setting saturation - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nSaturation : Values allowed for saturation -100 to 100, zero means - * no change - */ -typedef struct OMX_CONFIG_SATURATIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_S32 nSaturation; -} OMX_CONFIG_SATURATIONTYPE; - - -/** - * Define for setting Lightness - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nLightness : Values allowed for lightness -100 to 100, zero means no - * change - */ -typedef struct OMX_CONFIG_LIGHTNESSTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_S32 nLightness; -} OMX_CONFIG_LIGHTNESSTYPE; - - -/** - * Plane blend configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Index of input port associated with the plane. - * nDepth : Depth of the plane in relation to the screen. Higher - * numbered depths are "behind" lower number depths. - * This number defaults to the Port Index number. - * nAlpha : Transparency blending component for the entire plane. - * See blending modes for more detail. - */ -typedef struct OMX_CONFIG_PLANEBLENDTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nDepth; - OMX_U32 nAlpha; -} OMX_CONFIG_PLANEBLENDTYPE; - - -/** - * Define interlace type - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * bEnable : Enable control variable for this functionality - * (see below) - * nInterleavePortIndex : Index of input or output port associated with - * the interleaved plane. - * pPlanarPortIndexes[4] : Index of input or output planar ports. - */ -typedef struct OMX_PARAM_INTERLEAVETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnable; - OMX_U32 nInterleavePortIndex; -} OMX_PARAM_INTERLEAVETYPE; - - -/** - * Defines the picture effect used for an input picture - */ -typedef enum OMX_TRANSITIONEFFECTTYPE { - OMX_EffectNone, - OMX_EffectFadeFromBlack, - OMX_EffectFadeToBlack, - OMX_EffectUnspecifiedThroughConstantColor, - OMX_EffectDissolve, - OMX_EffectWipe, - OMX_EffectUnspecifiedMixOfTwoScenes, - OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_EffectMax = 0x7FFFFFFF -} OMX_TRANSITIONEFFECTTYPE; - - -/** - * Structure used to configure current transition effect - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eEffect : Effect to enable - */ -typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_TRANSITIONEFFECTTYPE eEffect; -} OMX_CONFIG_TRANSITIONEFFECTTYPE; - - -/** - * Defines possible data unit types for encoded video data. The data unit - * types are used both for encoded video input for playback as well as - * encoded video output from recording. - */ -typedef enum OMX_DATAUNITTYPE { - OMX_DataUnitCodedPicture, - OMX_DataUnitVideoSegment, - OMX_DataUnitSeveralSegments, - OMX_DataUnitArbitraryStreamSection, - OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_DataUnitMax = 0x7FFFFFFF -} OMX_DATAUNITTYPE; - - -/** - * Defines possible encapsulation types for coded video data unit. The - * encapsulation information is used both for encoded video input for - * playback as well as encoded video output from recording. - */ -typedef enum OMX_DATAUNITENCAPSULATIONTYPE { - OMX_DataEncapsulationElementaryStream, - OMX_DataEncapsulationGenericPayload, - OMX_DataEncapsulationRtpPayload, - OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_DataEncapsulationMax = 0x7FFFFFFF -} OMX_DATAUNITENCAPSULATIONTYPE; - - -/** - * Structure used to configure the type of being decoded/encoded - */ -typedef struct OMX_PARAM_DATAUNITTYPE { - OMX_U32 nSize; /**< Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_DATAUNITTYPE eUnitType; - OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType; -} OMX_PARAM_DATAUNITTYPE; - - -/** - * Defines dither types - */ -typedef enum OMX_DITHERTYPE { - OMX_DitherNone, - OMX_DitherOrdered, - OMX_DitherErrorDiffusion, - OMX_DitherOther, - OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_DitherMax = 0x7FFFFFFF -} OMX_DITHERTYPE; - - -/** - * Structure used to configure current type of dithering - */ -typedef struct OMX_CONFIG_DITHERTYPE { - OMX_U32 nSize; /**< Size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_DITHERTYPE eDither; /**< Type of dithering to use */ -} OMX_CONFIG_DITHERTYPE; - -typedef struct OMX_CONFIG_CAPTUREMODETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_BOOL bContinuous; /**< If true then ignore frame rate and emit capture - * data as fast as possible (otherwise obey port's frame rate). */ - OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the - * specified number of frames (otherwise the port does not - * terminate the capture until instructed to do so by the client). - * Even if set, the client may manually terminate the capture prior - * to reaching the limit. */ - OMX_U32 nFrameLimit; /**< Limit on number of frames emitted during a capture (only - * valid if bFrameLimited is set). */ -} OMX_CONFIG_CAPTUREMODETYPE; - -typedef enum OMX_METERINGTYPE { - - OMX_MeteringModeAverage, /**< Center-weighted average metering. */ - OMX_MeteringModeSpot, /**< Spot (partial) metering. */ - OMX_MeteringModeMatrix, /**< Matrix or evaluative metering. */ - - OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_EVModeMax = 0x7fffffff -} OMX_METERINGTYPE; - -typedef struct OMX_CONFIG_EXPOSUREVALUETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_METERINGTYPE eMetering; - OMX_S32 xEVCompensation; /**< Fixed point value stored as Q16 */ - OMX_U32 nApertureFNumber; /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */ - OMX_BOOL bAutoAperture; /**< Whether aperture number is defined automatically */ - OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */ - OMX_BOOL bAutoShutterSpeed; /**< Whether shutter speed is defined automatically */ - OMX_U32 nSensitivity; /**< e.g. nSensitivity = 100 implies "ISO 100" */ - OMX_BOOL bAutoSensitivity; /**< Whether sensitivity is defined automatically */ -} OMX_CONFIG_EXPOSUREVALUETYPE; - -/** - * Focus region configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * bCenter : Use center region as focus region of interest - * bLeft : Use left region as focus region of interest - * bRight : Use right region as focus region of interest - * bTop : Use top region as focus region of interest - * bBottom : Use bottom region as focus region of interest - * bTopLeft : Use top left region as focus region of interest - * bTopRight : Use top right region as focus region of interest - * bBottomLeft : Use bottom left region as focus region of interest - * bBottomRight : Use bottom right region as focus region of interest - */ -typedef struct OMX_CONFIG_FOCUSREGIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bCenter; - OMX_BOOL bLeft; - OMX_BOOL bRight; - OMX_BOOL bTop; - OMX_BOOL bBottom; - OMX_BOOL bTopLeft; - OMX_BOOL bTopRight; - OMX_BOOL bBottomLeft; - OMX_BOOL bBottomRight; -} OMX_CONFIG_FOCUSREGIONTYPE; - -/** - * Focus Status type - */ -typedef enum OMX_FOCUSSTATUSTYPE { - OMX_FocusStatusOff = 0, - OMX_FocusStatusRequest, - OMX_FocusStatusReached, - OMX_FocusStatusUnableToReach, - OMX_FocusStatusLost, - OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_FocusStatusMax = 0x7FFFFFFF -} OMX_FOCUSSTATUSTYPE; - -/** - * Focus status configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFocusStatus : Specifies the focus status - * bCenterStatus : Use center region as focus region of interest - * bLeftStatus : Use left region as focus region of interest - * bRightStatus : Use right region as focus region of interest - * bTopStatus : Use top region as focus region of interest - * bBottomStatus : Use bottom region as focus region of interest - * bTopLeftStatus : Use top left region as focus region of interest - * bTopRightStatus : Use top right region as focus region of interest - * bBottomLeftStatus : Use bottom left region as focus region of interest - * bBottomRightStatus : Use bottom right region as focus region of interest - */ -typedef struct OMX_PARAM_FOCUSSTATUSTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_FOCUSSTATUSTYPE eFocusStatus; - OMX_BOOL bCenterStatus; - OMX_BOOL bLeftStatus; - OMX_BOOL bRightStatus; - OMX_BOOL bTopStatus; - OMX_BOOL bBottomStatus; - OMX_BOOL bTopLeftStatus; - OMX_BOOL bTopRightStatus; - OMX_BOOL bBottomLeftStatus; - OMX_BOOL bBottomRightStatus; -} OMX_PARAM_FOCUSSTATUSTYPE; - -/** @} */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/v1_x/OMX_Image.h --- a/omxil/omxilapi/v1_x/OMX_Image.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,329 +0,0 @@ -/** - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * @file - * OpenMax IL version 1.1.2 - * The structures needed by Image components to exchange parameters and - * configuration data with the components. - */ -#ifndef OMX_Image_h -#define OMX_Image_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/** - * Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include - -/** @defgroup imaging OpenMAX IL Imaging Domain - * @ingroup iv - * Structures for OpenMAX IL Imaging domain - * @{ - */ - -/** - * Enumeration used to define the possible image compression coding. - */ -typedef enum OMX_IMAGE_CODINGTYPE { - OMX_IMAGE_CodingUnused, /**< Value when format is N/A */ - OMX_IMAGE_CodingAutoDetect, /**< Auto detection of image format */ - OMX_IMAGE_CodingJPEG, /**< JPEG/JFIF image format */ - OMX_IMAGE_CodingJPEG2K, /**< JPEG 2000 image format */ - OMX_IMAGE_CodingEXIF, /**< EXIF image format */ - OMX_IMAGE_CodingTIFF, /**< TIFF image format */ - OMX_IMAGE_CodingGIF, /**< Graphics image format */ - OMX_IMAGE_CodingPNG, /**< PNG image format */ - OMX_IMAGE_CodingLZW, /**< LZW image format */ - OMX_IMAGE_CodingBMP, /**< Windows Bitmap format */ - OMX_IMAGE_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_CodingMax = 0x7FFFFFFF -} OMX_IMAGE_CODINGTYPE; - - -/** - * Data structure used to define an image path. The number of image paths - * for input and output will vary by type of the image component. - * - * Input (aka Source) : Zero Inputs, one Output, - * Splitter : One Input, 2 or more Outputs, - * Processing Element : One Input, one output, - * Mixer : 2 or more inputs, one output, - * Output (aka Sink) : One Input, zero outputs. - * - * The PortDefinition structure is used to define all of the parameters - * necessary for the compliant component to setup an input or an output - * image path. If additional vendor specific data is required, it should - * be transmitted to the component using the CustomCommand function. - * Compliant components will prepopulate this structure with optimal - * values during the OMX_GetParameter() command. - * - * STRUCT MEMBERS: - * cMIMEType : MIME type of data for the port - * pNativeRender : Platform specific reference for a display if a - * sync, otherwise this field is 0 - * nFrameWidth : Width of frame to be used on port if - * uncompressed format is used. Use 0 for - * unknown, don't care or variable - * nFrameHeight : Height of frame to be used on port if - * uncompressed format is used. Use 0 for - * unknown, don't care or variable - * nStride : Number of bytes per span of an image (i.e. - * indicates the number of bytes to get from - * span N to span N+1, where negative stride - * indicates the image is bottom up - * nSliceHeight : Height used when encoding in slices - * bFlagErrorConcealment : Turns on error concealment if it is supported by - * the OMX component - * eCompressionFormat : Compression format used in this instance of - * the component. When OMX_IMAGE_CodingUnused is - * specified, eColorFormat is valid - * eColorFormat : Decompressed format used by this component - * pNativeWindow : Platform specific reference for a window object if a - * display sink , otherwise this field is 0x0. - */ -typedef struct OMX_IMAGE_PORTDEFINITIONTYPE { - OMX_STRING cMIMEType; - OMX_NATIVE_DEVICETYPE pNativeRender; - OMX_U32 nFrameWidth; - OMX_U32 nFrameHeight; - OMX_S32 nStride; - OMX_U32 nSliceHeight; - OMX_BOOL bFlagErrorConcealment; - OMX_IMAGE_CODINGTYPE eCompressionFormat; - OMX_COLOR_FORMATTYPE eColorFormat; - OMX_NATIVE_WINDOWTYPE pNativeWindow; -} OMX_IMAGE_PORTDEFINITIONTYPE; - - -/** - * Port format parameter. This structure is used to enumerate the various - * data input/output format supported by the port. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Indicates which port to set - * nIndex : Indicates the enumeration index for the format from - * 0x0 to N-1 - * eCompressionFormat : Compression format used in this instance of the - * component. When OMX_IMAGE_CodingUnused is specified, - * eColorFormat is valid - * eColorFormat : Decompressed format used by this component - */ -typedef struct OMX_IMAGE_PARAM_PORTFORMATTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nIndex; - OMX_IMAGE_CODINGTYPE eCompressionFormat; - OMX_COLOR_FORMATTYPE eColorFormat; -} OMX_IMAGE_PARAM_PORTFORMATTYPE; - - -/** - * Flash control type - * - * ENUMS - * Torch : Flash forced constantly on - */ -typedef enum OMX_IMAGE_FLASHCONTROLTYPE { - OMX_IMAGE_FlashControlOn = 0, - OMX_IMAGE_FlashControlOff, - OMX_IMAGE_FlashControlAuto, - OMX_IMAGE_FlashControlRedEyeReduction, - OMX_IMAGE_FlashControlFillin, - OMX_IMAGE_FlashControlTorch, - OMX_IMAGE_FlashControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_FlashControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_FlashControlMax = 0x7FFFFFFF -} OMX_IMAGE_FLASHCONTROLTYPE; - - -/** - * Flash control configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFlashControl : Flash control type - */ -typedef struct OMX_IMAGE_PARAM_FLASHCONTROLTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_IMAGE_FLASHCONTROLTYPE eFlashControl; -} OMX_IMAGE_PARAM_FLASHCONTROLTYPE; - - -/** - * Focus control type - */ -typedef enum OMX_IMAGE_FOCUSCONTROLTYPE { - OMX_IMAGE_FocusControlOn = 0, - OMX_IMAGE_FocusControlOff, - OMX_IMAGE_FocusControlAuto, - OMX_IMAGE_FocusControlAutoLock, - OMX_IMAGE_FocusControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_FocusControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_FocusControlMax = 0x7FFFFFFF -} OMX_IMAGE_FOCUSCONTROLTYPE; - - -/** - * Focus control configuration - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFocusControl : Focus control - * nFocusSteps : Focus can take on values from 0 mm to infinity. - * Interest is only in number of steps over this range. - * nFocusStepIndex : Current focus step index - */ -typedef struct OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_IMAGE_FOCUSCONTROLTYPE eFocusControl; - OMX_U32 nFocusSteps; - OMX_U32 nFocusStepIndex; -} OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE; - - -/** - * Q Factor for JPEG compression, which controls the tradeoff between image - * quality and size. Q Factor provides a more simple means of controlling - * JPEG compression quality, without directly programming Quantization - * tables for chroma and luma - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nQFactor : JPEG Q factor value in the range of 1-100. A factor of 1 - * produces the smallest, worst quality images, and a factor - * of 100 produces the largest, best quality images. A - * typical default is 75 for small good quality images - */ -typedef struct OMX_IMAGE_PARAM_QFACTORTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nQFactor; -} OMX_IMAGE_PARAM_QFACTORTYPE; - -/** - * Quantization table type - */ - -typedef enum OMX_IMAGE_QUANTIZATIONTABLETYPE { - OMX_IMAGE_QuantizationTableLuma = 0, - OMX_IMAGE_QuantizationTableChroma, - OMX_IMAGE_QuantizationTableChromaCb, - OMX_IMAGE_QuantizationTableChromaCr, - OMX_IMAGE_QuantizationTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_QuantizationTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_QuantizationTableMax = 0x7FFFFFFF -} OMX_IMAGE_QUANTIZATIONTABLETYPE; - -/** - * JPEG quantization tables are used to determine DCT compression for - * YUV data, as an alternative to specifying Q factor, providing exact - * control of compression - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eQuantizationTable : Quantization table type - * nQuantizationMatrix[64] : JPEG quantization table of coefficients stored - * in increasing columns then by rows of data (i.e. - * row 1, ... row 8). Quantization values are in - * the range 0-255 and stored in linear order - * (i.e. the component will zig-zag the - * quantization table data if required internally) - */ -typedef struct OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_IMAGE_QUANTIZATIONTABLETYPE eQuantizationTable; - OMX_U8 nQuantizationMatrix[64]; -} OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE; - - -/** - * Huffman table type, the same Huffman table is applied for chroma and - * luma component - */ -typedef enum OMX_IMAGE_HUFFMANTABLETYPE { - OMX_IMAGE_HuffmanTableAC = 0, - OMX_IMAGE_HuffmanTableDC, - OMX_IMAGE_HuffmanTableACLuma, - OMX_IMAGE_HuffmanTableACChroma, - OMX_IMAGE_HuffmanTableDCLuma, - OMX_IMAGE_HuffmanTableDCChroma, - OMX_IMAGE_HuffmanTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_IMAGE_HuffmanTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_IMAGE_HuffmanTableMax = 0x7FFFFFFF -} OMX_IMAGE_HUFFMANTABLETYPE; - -/** - * JPEG Huffman table - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eHuffmanTable : Huffman table type - * nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each - * possible length - * nHuffmanTable[256] : 0-255, the size used for AC and DC - * HuffmanTable are 16 and 162 - */ -typedef struct OMX_IMAGE_PARAM_HUFFMANTTABLETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_IMAGE_HUFFMANTABLETYPE eHuffmanTable; - OMX_U8 nNumberOfHuffmanCodeOfLength[16]; - OMX_U8 nHuffmanTable[256]; -}OMX_IMAGE_PARAM_HUFFMANTTABLETYPE; - -/** @} */ -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/v1_x/OMX_Index.h --- a/omxil/omxilapi/v1_x/OMX_Index.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,259 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** @file - * OpenMax IL version 1.1.2 - * The OMX_Index header file contains the definitions for both applications - * and components . - */ - - -#ifndef OMX_Index_h -#define OMX_Index_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/* Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ -#include - - -/** The OMX_INDEXTYPE enumeration is used to select a structure when either - * getting or setting parameters and/or configuration data. Each entry in - * this enumeration maps to an OMX specified structure. When the - * OMX_GetParameter, OMX_SetParameter, OMX_GetConfig or OMX_SetConfig methods - * are used, the second parameter will always be an entry from this enumeration - * and the third entry will be the structure shown in the comments for the entry. - * For example, if the application is initializing a cropping function, the - * OMX_SetConfig command would have OMX_IndexConfigCommonInputCrop as the second parameter - * and would send a pointer to an initialized OMX_RECTTYPE structure as the - * third parameter. - * - * The enumeration entries named with the OMX_Config prefix are sent using - * the OMX_SetConfig command and the enumeration entries named with the - * OMX_PARAM_ prefix are sent using the OMX_SetParameter command. - */ -typedef enum OMX_INDEXTYPE { - - OMX_IndexComponentStartUnused = 0x01000000, - OMX_IndexParamPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */ - OMX_IndexParamAudioInit, /**< reference: OMX_PORT_PARAM_TYPE */ - OMX_IndexParamImageInit, /**< reference: OMX_PORT_PARAM_TYPE */ - OMX_IndexParamVideoInit, /**< reference: OMX_PORT_PARAM_TYPE */ - OMX_IndexParamOtherInit, /**< reference: OMX_PORT_PARAM_TYPE */ - OMX_IndexParamNumAvailableStreams, /**< reference: OMX_PARAM_U32TYPE */ - OMX_IndexParamActiveStream, /**< reference: OMX_PARAM_U32TYPE */ - OMX_IndexParamSuspensionPolicy, /**< reference: OMX_PARAM_SUSPENSIONPOLICYTYPE */ - OMX_IndexParamComponentSuspended, /**< reference: OMX_PARAM_SUSPENSIONTYPE */ - OMX_IndexConfigCapturing, /**< reference: OMX_CONFIG_BOOLEANTYPE */ - OMX_IndexConfigCaptureMode, /**< reference: OMX_CONFIG_CAPTUREMODETYPE */ - OMX_IndexAutoPauseAfterCapture, /**< reference: OMX_CONFIG_BOOLEANTYPE */ - OMX_IndexParamContentURI, /**< reference: OMX_PARAM_CONTENTURITYPE */ - OMX_IndexParamCustomContentPipe, /**< reference: OMX_PARAM_CONTENTPIPETYPE */ - OMX_IndexParamDisableResourceConcealment, /**< reference: OMX_RESOURCECONCEALMENTTYPE */ - OMX_IndexConfigMetadataItemCount, /**< reference: OMX_CONFIG_METADATAITEMCOUNTTYPE */ - OMX_IndexConfigContainerNodeCount, /**< reference: OMX_CONFIG_CONTAINERNODECOUNTTYPE */ - OMX_IndexConfigMetadataItem, /**< reference: OMX_CONFIG_METADATAITEMTYPE */ - OMX_IndexConfigCounterNodeID, /**< reference: OMX_CONFIG_CONTAINERNODEIDTYPE */ - OMX_IndexParamMetadataFilterType, /**< reference: OMX_PARAM_METADATAFILTERTYPE */ - OMX_IndexParamMetadataKeyFilter, /**< reference: OMX_PARAM_METADATAFILTERTYPE */ - OMX_IndexConfigPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */ - OMX_IndexParamStandardComponentRole, /**< reference: OMX_PARAM_COMPONENTROLETYPE */ - - OMX_IndexPortStartUnused = 0x02000000, - OMX_IndexParamPortDefinition, /**< reference: OMX_PARAM_PORTDEFINITIONTYPE */ - OMX_IndexParamCompBufferSupplier, /**< reference: OMX_PARAM_BUFFERSUPPLIERTYPE */ - OMX_IndexReservedStartUnused = 0x03000000, - - /* Audio parameters and configurations */ - OMX_IndexAudioStartUnused = 0x04000000, - OMX_IndexParamAudioPortFormat, /**< reference: OMX_AUDIO_PARAM_PORTFORMATTYPE */ - OMX_IndexParamAudioPcm, /**< reference: OMX_AUDIO_PARAM_PCMMODETYPE */ - OMX_IndexParamAudioAac, /**< reference: OMX_AUDIO_PARAM_AACPROFILETYPE */ - OMX_IndexParamAudioRa, /**< reference: OMX_AUDIO_PARAM_RATYPE */ - OMX_IndexParamAudioMp3, /**< reference: OMX_AUDIO_PARAM_MP3TYPE */ - OMX_IndexParamAudioAdpcm, /**< reference: OMX_AUDIO_PARAM_ADPCMTYPE */ - OMX_IndexParamAudioG723, /**< reference: OMX_AUDIO_PARAM_G723TYPE */ - OMX_IndexParamAudioG729, /**< reference: OMX_AUDIO_PARAM_G729TYPE */ - OMX_IndexParamAudioAmr, /**< reference: OMX_AUDIO_PARAM_AMRTYPE */ - OMX_IndexParamAudioWma, /**< reference: OMX_AUDIO_PARAM_WMATYPE */ - OMX_IndexParamAudioSbc, /**< reference: OMX_AUDIO_PARAM_SBCTYPE */ - OMX_IndexParamAudioMidi, /**< reference: OMX_AUDIO_PARAM_MIDITYPE */ - OMX_IndexParamAudioGsm_FR, /**< reference: OMX_AUDIO_PARAM_GSMFRTYPE */ - OMX_IndexParamAudioMidiLoadUserSound, /**< reference: OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE */ - OMX_IndexParamAudioG726, /**< reference: OMX_AUDIO_PARAM_G726TYPE */ - OMX_IndexParamAudioGsm_EFR, /**< reference: OMX_AUDIO_PARAM_GSMEFRTYPE */ - OMX_IndexParamAudioGsm_HR, /**< reference: OMX_AUDIO_PARAM_GSMHRTYPE */ - OMX_IndexParamAudioPdc_FR, /**< reference: OMX_AUDIO_PARAM_PDCFRTYPE */ - OMX_IndexParamAudioPdc_EFR, /**< reference: OMX_AUDIO_PARAM_PDCEFRTYPE */ - OMX_IndexParamAudioPdc_HR, /**< reference: OMX_AUDIO_PARAM_PDCHRTYPE */ - OMX_IndexParamAudioTdma_FR, /**< reference: OMX_AUDIO_PARAM_TDMAFRTYPE */ - OMX_IndexParamAudioTdma_EFR, /**< reference: OMX_AUDIO_PARAM_TDMAEFRTYPE */ - OMX_IndexParamAudioQcelp8, /**< reference: OMX_AUDIO_PARAM_QCELP8TYPE */ - OMX_IndexParamAudioQcelp13, /**< reference: OMX_AUDIO_PARAM_QCELP13TYPE */ - OMX_IndexParamAudioEvrc, /**< reference: OMX_AUDIO_PARAM_EVRCTYPE */ - OMX_IndexParamAudioSmv, /**< reference: OMX_AUDIO_PARAM_SMVTYPE */ - OMX_IndexParamAudioVorbis, /**< reference: OMX_AUDIO_PARAM_VORBISTYPE */ - - OMX_IndexConfigAudioMidiImmediateEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE */ - OMX_IndexConfigAudioMidiControl, /**< reference: OMX_AUDIO_CONFIG_MIDICONTROLTYPE */ - OMX_IndexConfigAudioMidiSoundBankProgram, /**< reference: OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE */ - OMX_IndexConfigAudioMidiStatus, /**< reference: OMX_AUDIO_CONFIG_MIDISTATUSTYPE */ - OMX_IndexConfigAudioMidiMetaEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE */ - OMX_IndexConfigAudioMidiMetaEventData, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE */ - OMX_IndexConfigAudioVolume, /**< reference: OMX_AUDIO_CONFIG_VOLUMETYPE */ - OMX_IndexConfigAudioBalance, /**< reference: OMX_AUDIO_CONFIG_BALANCETYPE */ - OMX_IndexConfigAudioChannelMute, /**< reference: OMX_AUDIO_CONFIG_CHANNELMUTETYPE */ - OMX_IndexConfigAudioMute, /**< reference: OMX_AUDIO_CONFIG_MUTETYPE */ - OMX_IndexConfigAudioLoudness, /**< reference: OMX_AUDIO_CONFIG_LOUDNESSTYPE */ - OMX_IndexConfigAudioEchoCancelation, /**< reference: OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE */ - OMX_IndexConfigAudioNoiseReduction, /**< reference: OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE */ - OMX_IndexConfigAudioBass, /**< reference: OMX_AUDIO_CONFIG_BASSTYPE */ - OMX_IndexConfigAudioTreble, /**< reference: OMX_AUDIO_CONFIG_TREBLETYPE */ - OMX_IndexConfigAudioStereoWidening, /**< reference: OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE */ - OMX_IndexConfigAudioChorus, /**< reference: OMX_AUDIO_CONFIG_CHORUSTYPE */ - OMX_IndexConfigAudioEqualizer, /**< reference: OMX_AUDIO_CONFIG_EQUALIZERTYPE */ - OMX_IndexConfigAudioReverberation, /**< reference: OMX_AUDIO_CONFIG_REVERBERATIONTYPE */ - OMX_IndexConfigAudioChannelVolume, /**< reference: OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE */ - - /* Image specific parameters and configurations */ - OMX_IndexImageStartUnused = 0x05000000, - OMX_IndexParamImagePortFormat, /**< reference: OMX_IMAGE_PARAM_PORTFORMATTYPE */ - OMX_IndexParamFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */ - OMX_IndexConfigFocusControl, /**< reference: OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE */ - OMX_IndexParamQFactor, /**< reference: OMX_IMAGE_PARAM_QFACTORTYPE */ - OMX_IndexParamQuantizationTable, /**< reference: OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE */ - OMX_IndexParamHuffmanTable, /**< reference: OMX_IMAGE_PARAM_HUFFMANTTABLETYPE */ - OMX_IndexConfigFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */ - - /* Video specific parameters and configurations */ - OMX_IndexVideoStartUnused = 0x06000000, - OMX_IndexParamVideoPortFormat, /**< reference: OMX_VIDEO_PARAM_PORTFORMATTYPE */ - OMX_IndexParamVideoQuantization, /**< reference: OMX_VIDEO_PARAM_QUANTIZATIONTYPE */ - OMX_IndexParamVideoFastUpdate, /**< reference: OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE */ - OMX_IndexParamVideoBitrate, /**< reference: OMX_VIDEO_PARAM_BITRATETYPE */ - OMX_IndexParamVideoMotionVector, /**< reference: OMX_VIDEO_PARAM_MOTIONVECTORTYPE */ - OMX_IndexParamVideoIntraRefresh, /**< reference: OMX_VIDEO_PARAM_INTRAREFRESHTYPE */ - OMX_IndexParamVideoErrorCorrection, /**< reference: OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE */ - OMX_IndexParamVideoVBSMC, /**< reference: OMX_VIDEO_PARAM_VBSMCTYPE */ - OMX_IndexParamVideoMpeg2, /**< reference: OMX_VIDEO_PARAM_MPEG2TYPE */ - OMX_IndexParamVideoMpeg4, /**< reference: OMX_VIDEO_PARAM_MPEG4TYPE */ - OMX_IndexParamVideoWmv, /**< reference: OMX_VIDEO_PARAM_WMVTYPE */ - OMX_IndexParamVideoRv, /**< reference: OMX_VIDEO_PARAM_RVTYPE */ - OMX_IndexParamVideoAvc, /**< reference: OMX_VIDEO_PARAM_AVCTYPE */ - OMX_IndexParamVideoH263, /**< reference: OMX_VIDEO_PARAM_H263TYPE */ - OMX_IndexParamVideoProfileLevelQuerySupported, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */ - OMX_IndexParamVideoProfileLevelCurrent, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */ - OMX_IndexConfigVideoBitrate, /**< reference: OMX_VIDEO_CONFIG_BITRATETYPE */ - OMX_IndexConfigVideoFramerate, /**< reference: OMX_CONFIG_FRAMERATETYPE */ - OMX_IndexConfigVideoIntraVOPRefresh, /**< reference: OMX_CONFIG_INTRAREFRESHVOPTYPE */ - OMX_IndexConfigVideoIntraMBRefresh, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */ - OMX_IndexConfigVideoMBErrorReporting, /**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */ - OMX_IndexParamVideoMacroblocksPerFrame, /**< reference: OMX_PARAM_MACROBLOCKSTYPE */ - OMX_IndexConfigVideoMacroBlockErrorMap, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */ - OMX_IndexParamVideoSliceFMO, /**< reference: OMX_VIDEO_PARAM_AVCSLICEFMO */ - OMX_IndexConfigVideoAVCIntraPeriod, /**< reference: OMX_VIDEO_CONFIG_AVCINTRAPERIOD */ - OMX_IndexConfigVideoNalSize, /**< reference: OMX_VIDEO_CONFIG_NALSIZE */ - - /* Image & Video common Configurations */ - OMX_IndexCommonStartUnused = 0x07000000, - OMX_IndexParamCommonDeblocking, /**< reference: OMX_PARAM_DEBLOCKINGTYPE */ - OMX_IndexParamCommonSensorMode, /**< reference: OMX_PARAM_SENSORMODETYPE */ - OMX_IndexParamCommonInterleave, /**< reference: OMX_PARAM_INTERLEAVETYPE */ - OMX_IndexConfigCommonColorFormatConversion, /**< reference: OMX_CONFIG_COLORCONVERSIONTYPE */ - OMX_IndexConfigCommonScale, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */ - OMX_IndexConfigCommonImageFilter, /**< reference: OMX_CONFIG_IMAGEFILTERTYPE */ - OMX_IndexConfigCommonColorEnhancement, /**< reference: OMX_CONFIG_COLORENHANCEMENTTYPE */ - OMX_IndexConfigCommonColorKey, /**< reference: OMX_CONFIG_COLORKEYTYPE */ - OMX_IndexConfigCommonColorBlend, /**< reference: OMX_CONFIG_COLORBLENDTYPE */ - OMX_IndexConfigCommonFrameStabilisation,/**< reference: OMX_CONFIG_FRAMESTABTYPE */ - OMX_IndexConfigCommonRotate, /**< reference: OMX_CONFIG_ROTATIONTYPE */ - OMX_IndexConfigCommonMirror, /**< reference: OMX_CONFIG_MIRRORTYPE */ - OMX_IndexConfigCommonOutputPosition, /**< reference: OMX_CONFIG_POINTTYPE */ - OMX_IndexConfigCommonInputCrop, /**< reference: OMX_CONFIG_RECTTYPE */ - OMX_IndexConfigCommonOutputCrop, /**< reference: OMX_CONFIG_RECTTYPE */ - OMX_IndexConfigCommonDigitalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */ - OMX_IndexConfigCommonOpticalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE*/ - OMX_IndexConfigCommonWhiteBalance, /**< reference: OMX_CONFIG_WHITEBALCONTROLTYPE */ - OMX_IndexConfigCommonExposure, /**< reference: OMX_CONFIG_EXPOSURECONTROLTYPE */ - OMX_IndexConfigCommonContrast, /**< reference: OMX_CONFIG_CONTRASTTYPE */ - OMX_IndexConfigCommonBrightness, /**< reference: OMX_CONFIG_BRIGHTNESSTYPE */ - OMX_IndexConfigCommonBacklight, /**< reference: OMX_CONFIG_BACKLIGHTTYPE */ - OMX_IndexConfigCommonGamma, /**< reference: OMX_CONFIG_GAMMATYPE */ - OMX_IndexConfigCommonSaturation, /**< reference: OMX_CONFIG_SATURATIONTYPE */ - OMX_IndexConfigCommonLightness, /**< reference: OMX_CONFIG_LIGHTNESSTYPE */ - OMX_IndexConfigCommonExclusionRect, /**< reference: OMX_CONFIG_RECTTYPE */ - OMX_IndexConfigCommonDithering, /**< reference: OMX_CONFIG_DITHERTYPE */ - OMX_IndexConfigCommonPlaneBlend, /**< reference: OMX_CONFIG_PLANEBLENDTYPE */ - OMX_IndexConfigCommonExposureValue, /**< reference: OMX_CONFIG_EXPOSUREVALUETYPE */ - OMX_IndexConfigCommonOutputSize, /**< reference: OMX_FRAMESIZETYPE */ - OMX_IndexParamCommonExtraQuantData, /**< reference: OMX_OTHER_EXTRADATATYPE */ - OMX_IndexConfigCommonFocusRegion, /**< reference: OMX_CONFIG_FOCUSREGIONTYPE */ - OMX_IndexConfigCommonFocusStatus, /**< reference: OMX_PARAM_FOCUSSTATUSTYPE */ - OMX_IndexConfigCommonTransitionEffect, /**< reference: OMX_CONFIG_TRANSITIONEFFECTTYPE */ - - /* Reserved Configuration range */ - OMX_IndexOtherStartUnused = 0x08000000, - OMX_IndexParamOtherPortFormat, /**< reference: OMX_OTHER_PARAM_PORTFORMATTYPE */ - OMX_IndexConfigOtherPower, /**< reference: OMX_OTHER_CONFIG_POWERTYPE */ - OMX_IndexConfigOtherStats, /**< reference: OMX_OTHER_CONFIG_STATSTYPE */ - - - /* Reserved Time range */ - OMX_IndexTimeStartUnused = 0x09000000, - OMX_IndexConfigTimeScale, /**< reference: OMX_TIME_CONFIG_SCALETYPE */ - OMX_IndexConfigTimeClockState, /**< reference: OMX_TIME_CONFIG_CLOCKSTATETYPE */ - OMX_IndexConfigTimeActiveRefClock, /**< reference: OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE */ - OMX_IndexConfigTimeCurrentMediaTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */ - OMX_IndexConfigTimeCurrentWallTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */ - OMX_IndexConfigTimeCurrentAudioReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ - OMX_IndexConfigTimeCurrentVideoReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */ - OMX_IndexConfigTimeMediaTimeRequest, /**< reference: OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE (write only) */ - OMX_IndexConfigTimeClientStartTime, /** - - -/** - * Enumeration of possible data types which match to multiple domains or no - * domain at all. For types which are vendor specific, a value above - * OMX_OTHER_VENDORTSTART should be used. - */ -typedef enum OMX_OTHER_FORMATTYPE { - OMX_OTHER_FormatTime = 0, /**< Transmission of various timestamps, elapsed time, - time deltas, etc */ - OMX_OTHER_FormatPower, /**< Perhaps used for enabling/disabling power - management, setting clocks? */ - OMX_OTHER_FormatStats, /**< Could be things such as frame rate, frames - dropped, etc */ - OMX_OTHER_FormatBinary, /**< Arbitrary binary data */ - OMX_OTHER_FormatVendorReserved = 1000, /**< Starting value for vendor specific - formats */ - - OMX_OTHER_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_OTHER_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_OTHER_FormatMax = 0x7FFFFFFF -} OMX_OTHER_FORMATTYPE; - -/** - * Enumeration of seek modes. - */ -typedef enum OMX_TIME_SEEKMODETYPE { - OMX_TIME_SeekModeFast = 0, /**< Prefer seeking to an approximation - * of the requested seek position over - * the actual seek position if it - * results in a faster seek. */ - OMX_TIME_SeekModeAccurate, /**< Prefer seeking to the actual seek - * position over an approximation - * of the requested seek position even - * if it results in a slower seek. */ - OMX_TIME_SeekModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_TIME_SeekModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_TIME_SeekModeMax = 0x7FFFFFFF -} OMX_TIME_SEEKMODETYPE; - -/* Structure representing the seekmode of the component */ -typedef struct OMX_TIME_CONFIG_SEEKMODETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_TIME_SEEKMODETYPE eType; /**< The seek mode */ -} OMX_TIME_CONFIG_SEEKMODETYPE; - -/** Structure representing a time stamp used with the following configs - * on the Clock Component (CC): - * - * OMX_IndexConfigTimeCurrentWallTime: query of the CC’s current wall - * time - * OMX_IndexConfigTimeCurrentMediaTime: query of the CC’s current media - * time - * OMX_IndexConfigTimeCurrentAudioReference and - * OMX_IndexConfigTimeCurrentVideoReference: audio/video reference - * clock sending SC its reference time - * OMX_IndexConfigTimeClientStartTime: a Clock Component client sends - * this structure to the Clock Component via a SetConfig on its - * client port when it receives a buffer with - * OMX_BUFFERFLAG_STARTTIME set. It must use the timestamp - * specified by that buffer for nStartTimestamp. - * - * It’s also used with the following config on components in general: - * - * OMX_IndexConfigTimePosition: IL client querying component position - * (GetConfig) or commanding a component to seek to the given location - * (SetConfig) - */ -typedef struct OMX_TIME_CONFIG_TIMESTAMPTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version - * information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_TICKS nTimestamp; /**< timestamp .*/ -} OMX_TIME_CONFIG_TIMESTAMPTYPE; - -/** Enumeration of possible reference clocks to the media time. */ -typedef enum OMX_TIME_UPDATETYPE { - OMX_TIME_UpdateRequestFulfillment, /**< Update is the fulfillment of a media time request. */ - OMX_TIME_UpdateScaleChanged, /**< Update was generated because the scale chagned. */ - OMX_TIME_UpdateClockStateChanged, /**< Update was generated because the clock state changed. */ - OMX_TIME_UpdateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_TIME_UpdateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_TIME_UpdateMax = 0x7FFFFFFF -} OMX_TIME_UPDATETYPE; - -/** Enumeration of possible reference clocks to the media time. */ -typedef enum OMX_TIME_REFCLOCKTYPE { - OMX_TIME_RefClockNone, /**< Use no references. */ - OMX_TIME_RefClockAudio, /**< Use references sent through OMX_IndexConfigTimeCurrentAudioReference */ - OMX_TIME_RefClockVideo, /**< Use references sent through OMX_IndexConfigTimeCurrentVideoReference */ - OMX_TIME_RefClockKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_TIME_RefClockVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_TIME_RefClockMax = 0x7FFFFFFF -} OMX_TIME_REFCLOCKTYPE; - -/** Enumeration of clock states. */ -typedef enum OMX_TIME_CLOCKSTATE { - OMX_TIME_ClockStateRunning, /**< Clock running. */ - OMX_TIME_ClockStateWaitingForStartTime, /**< Clock waiting until the - * prescribed clients emit their - * start time. */ - OMX_TIME_ClockStateStopped, /**< Clock stopped. */ - OMX_TIME_ClockStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_TIME_ClockStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_TIME_ClockStateMax = 0x7FFFFFFF -} OMX_TIME_CLOCKSTATE; - -/** Structure representing a media time request to the clock component. - * - * A client component sends this structure to the Clock Component via a SetConfig - * on its client port to specify a media timestamp the Clock Component - * should emit. The Clock Component should fulfill the request by sending a - * OMX_TIME_MEDIATIMETYPE when its media clock matches the requested - * timestamp. - * - * The client may require a media time request be fulfilled slightly - * earlier than the media time specified. In this case the client specifies - * an offset which is equal to the difference between wall time corresponding - * to the requested media time and the wall time when it will be - * fulfilled. - * - * A client component may uses these requests and the OMX_TIME_MEDIATIMETYPE to - * time events according to timestamps. If a client must perform an operation O at - * a time T (e.g. deliver a video frame at its corresponding timestamp), it makes a - * media time request at T (perhaps specifying an offset to ensure the request fulfillment - * is a little early). When the clock component passes the resulting OMX_TIME_MEDIATIMETYPE - * structure back to the client component, the client may perform operation O (perhaps having - * to wait a slight amount more time itself as specified by the return values). - */ - -typedef struct OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< port that this structure applies to */ - OMX_PTR pClientPrivate; /**< Client private data to disabiguate this media time - * from others (e.g. the number of the frame to deliver). - * Duplicated in the media time structure that fulfills - * this request. A value of zero is reserved for time scale - * updates. */ - OMX_TICKS nMediaTimestamp; /**< Media timestamp requested.*/ - OMX_TICKS nOffset; /**< Amount of wall clock time by which this - * request should be fulfilled early */ -} OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE; - -/**< Structure sent from the clock component client either when fulfilling - * a media time request or when the time scale has changed. - * - * In the former case the Clock Component fills this structure and times its emission - * to a client component (via the client port) according to the corresponding media - * time request sent by the client. The Clock Component should time the emission to occur - * when the requested timestamp matches the Clock Component's media time but also the - * prescribed offset early. - * - * Upon scale changes the clock component clears the nClientPrivate data, sends the current - * media time and sets the nScale to the new scale via the client port. It emits a - * OMX_TIME_MEDIATIMETYPE to all clients independent of any requests. This allows clients to - * alter processing to accomodate scaling. For instance a video component might skip inter-frames - * in the case of extreme fastforward. Likewise an audio component might add or remove samples - * from an audio frame to scale audio data. - * - * It is expected that some clock components may not be able to fulfill requests - * at exactly the prescribed time. This is acceptable so long as the request is - * fulfilled at least as early as described and not later. This structure provides - * fields the client may use to wait for the remaining time. - * - * The client may use either the nOffset or nWallTimeAtMedia fields to determine the - * wall time until the nMediaTimestamp actually occurs. In the latter case the - * client can get a more accurate value for offset by getting the current wall - * from the cloc component and subtracting it from nWallTimeAtMedia. - */ - -typedef struct OMX_TIME_MEDIATIMETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nClientPrivate; /**< Client private data to disabiguate this media time - * from others. Copied from the media time request. - * A value of zero is reserved for time scale updates. */ - OMX_TIME_UPDATETYPE eUpdateType; /**< Reason for the update */ - OMX_TICKS nMediaTimestamp; /**< Media time requested. If no media time was - * requested then this is the current media time. */ - OMX_TICKS nOffset; /**< Amount of wall clock time by which this - * request was actually fulfilled early */ - - OMX_TICKS nWallTimeAtMediaTime; /**< Wall time corresponding to nMediaTimeStamp. - * A client may compare this value to current - * media time obtained from the Clock Component to determine - * the wall time until the media timestamp is really - * current. */ - OMX_S32 xScale; /**< Current media time scale in Q16 format. */ - OMX_TIME_CLOCKSTATE eState; /* Seeking Change. Added 7/12.*/ - /**< State of the media time. */ -} OMX_TIME_MEDIATIMETYPE; - -/** Structure representing the current media time scale factor. Applicable only to clock - * component, other components see scale changes via OMX_TIME_MEDIATIMETYPE buffers sent via - * the clock component client ports. Upon recieving this config the clock component changes - * the rate by which the media time increases or decreases effectively implementing trick modes. - */ -typedef struct OMX_TIME_CONFIG_SCALETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_S32 xScale; /**< This is a value in Q16 format which is used for - * scaling the media time */ -} OMX_TIME_CONFIG_SCALETYPE; - -/** Bits used to identify a clock port. Used in OMX_TIME_CONFIG_CLOCKSTATETYPE’s nWaitMask field */ -#define OMX_CLOCKPORT0 0x00000001 -#define OMX_CLOCKPORT1 0x00000002 -#define OMX_CLOCKPORT2 0x00000004 -#define OMX_CLOCKPORT3 0x00000008 -#define OMX_CLOCKPORT4 0x00000010 -#define OMX_CLOCKPORT5 0x00000020 -#define OMX_CLOCKPORT6 0x00000040 -#define OMX_CLOCKPORT7 0x00000080 - -/** Structure representing the current mode of the media clock. - * IL Client uses this config to change or query the mode of the - * media clock of the clock component. Applicable only to clock - * component. - * - * On a SetConfig if eState is OMX_TIME_ClockStateRunning media time - * starts immediately at the prescribed start time. If - * OMX_TIME_ClockStateWaitingForStartTime the Clock Component ignores - * the given nStartTime and waits for all clients specified in the - * nWaitMask to send starttimes (via - * OMX_IndexConfigTimeClientStartTime). The Clock Component then starts - * the media clock using the earliest start time supplied. */ -typedef struct OMX_TIME_CONFIG_CLOCKSTATETYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version - * information */ - OMX_TIME_CLOCKSTATE eState; /**< State of the media time. */ - OMX_TICKS nStartTime; /**< Start time of the media time. */ - OMX_TICKS nOffset; /**< Time to offset the media time by - * (e.g. preroll). Media time will be - * reported to be nOffset ticks earlier. - */ - OMX_U32 nWaitMask; /**< Mask of OMX_CLOCKPORT values. */ -} OMX_TIME_CONFIG_CLOCKSTATETYPE; - -/** Structure representing the reference clock currently being used to - * compute media time. IL client uses this config to change or query the - * clock component's active reference clock */ -typedef struct OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_TIME_REFCLOCKTYPE eClock; /**< Reference clock used to compute media time */ -} OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE; - -/** Descriptor for setting specifics of power type. - * Note: this structure is listed for backwards compatibility. */ -typedef struct OMX_OTHER_CONFIG_POWERTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_BOOL bEnablePM; /**< Flag to enable Power Management */ -} OMX_OTHER_CONFIG_POWERTYPE; - - -/** Descriptor for setting specifics of stats type. - * Note: this structure is listed for backwards compatibility. */ -typedef struct OMX_OTHER_CONFIG_STATSTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - /* what goes here */ -} OMX_OTHER_CONFIG_STATSTYPE; - - -/** - * The PortDefinition structure is used to define all of the parameters - * necessary for the compliant component to setup an input or an output other - * path. - */ -typedef struct OMX_OTHER_PORTDEFINITIONTYPE { - OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */ -} OMX_OTHER_PORTDEFINITIONTYPE; - -/** Port format parameter. This structure is used to enumerate - * the various data input/output format supported by the port. - */ -typedef struct OMX_OTHER_PARAM_PORTFORMATTYPE { - OMX_U32 nSize; /**< size of the structure in bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Indicates which port to set */ - OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */ - OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */ -} OMX_OTHER_PARAM_PORTFORMATTYPE; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/v1_x/OMX_Types.h --- a/omxil/omxilapi/v1_x/OMX_Types.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,359 +0,0 @@ -/* - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** OMX_Types.h - OpenMax IL version 1.1.2 - * The OMX_Types header file contains the primitive type definitions used by - * the core, the application and the component. This file may need to be - * modified to be used on systems that do not have "char" set to 8 bits, - * "short" set to 16 bits and "long" set to 32 bits. - */ - -#ifndef OMX_Types_h -#define OMX_Types_h - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** The OMX_API and OMX_APIENTRY are platform specific definitions used - * to declare OMX function prototypes. They are modified to meet the - * requirements for a particular platform */ -#ifdef __SYMBIAN32__ -# ifdef __OMX_EXPORTS -# define OMX_API __declspec(dllexport) -# else -# ifdef _WIN32 -# define OMX_API __declspec(dllexport) -# else -# define OMX_API __declspec(dllimport) -# endif -# endif -#else -# ifdef _WIN32 -# ifdef __OMX_EXPORTS -# define OMX_API __declspec(dllexport) -# else -# define OMX_API __declspec(dllimport) -# endif -# else -# ifdef __OMX_EXPORTS -# define OMX_API -# else -# define OMX_API extern -# endif -# endif -#endif - -#ifndef OMX_APIENTRY -#define OMX_APIENTRY -#endif - -/** OMX_IN is used to identify inputs to an OMX function. This designation - will also be used in the case of a pointer that points to a parameter - that is used as an output. */ -#ifndef OMX_IN -#define OMX_IN -#endif - -/** OMX_OUT is used to identify outputs from an OMX function. This - designation will also be used in the case of a pointer that points - to a parameter that is used as an input. */ -#ifndef OMX_OUT -#define OMX_OUT -#endif - - -/** OMX_INOUT is used to identify parameters that may be either inputs or - outputs from an OMX function at the same time. This designation will - also be used in the case of a pointer that points to a parameter that - is used both as an input and an output. */ -#ifndef OMX_INOUT -#define OMX_INOUT -#endif - -/** OMX_ALL is used to as a wildcard to select all entities of the same type - * when specifying the index, or referring to a object by an index. (i.e. - * use OMX_ALL to indicate all N channels). When used as a port index - * for a config or parameter this OMX_ALL denotes that the config or - * parameter applies to the entire component not just one port. */ -#define OMX_ALL 0xFFFFFFFF - -/** In the following we define groups that help building doxygen documentation */ - -/** @defgroup core OpenMAX IL core - * Functions and structure related to the OMX IL core - */ - - /** @defgroup comp OpenMAX IL component - * Functions and structure related to the OMX IL component - */ - -/** @defgroup rpm Resource and Policy Management - * Structures for resource and policy management of components - */ - -/** @defgroup buf Buffer Management - * Buffer handling functions and structures - */ - -/** @defgroup tun Tunneling - * @ingroup core comp - * Structures and functions to manage tunnels among component ports - */ - -/** @defgroup cp Content Pipes - * @ingroup core - */ - - /** @defgroup metadata Metadata handling - * - */ - -/** OMX_U8 is an 8 bit unsigned quantity that is byte aligned */ -typedef unsigned char OMX_U8; - -/** OMX_S8 is an 8 bit signed quantity that is byte aligned */ -typedef signed char OMX_S8; - -/** OMX_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */ -typedef unsigned short OMX_U16; - -/** OMX_S16 is a 16 bit signed quantity that is 16 bit word aligned */ -typedef signed short OMX_S16; - -/** OMX_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */ -typedef unsigned long OMX_U32; - -/** OMX_S32 is a 32 bit signed quantity that is 32 bit word aligned */ -typedef signed long OMX_S32; - - -/* Users with compilers that cannot accept the "long long" designation should - define the OMX_SKIP64BIT macro. It should be noted that this may cause - some components to fail to compile if the component was written to require - 64 bit integral types. However, these components would NOT compile anyway - since the compiler does not support the way the component was written. -*/ -#ifndef OMX_SKIP64BIT -#ifdef __SYMBIAN32__ -/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ -typedef unsigned long long OMX_U64; - -/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ -typedef signed long long OMX_S64; - -#elif defined(WIN32) - -/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ -typedef unsigned __int64 OMX_U64; - -/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ -typedef signed __int64 OMX_S64; - -#else /* WIN32 */ - -/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */ -typedef unsigned long long OMX_U64; - -/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */ -typedef signed long long OMX_S64; - -#endif /* WIN32 */ -#endif - - -/** The OMX_BOOL type is intended to be used to represent a true or a false - value when passing parameters to and from the OMX core and components. The - OMX_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary. - */ -typedef enum OMX_BOOL { - OMX_FALSE = 0, - OMX_TRUE = !OMX_FALSE, - OMX_BOOL_MAX = 0x7FFFFFFF -} OMX_BOOL; - -/** The OMX_PTR type is intended to be used to pass pointers between the OMX - applications and the OMX Core and components. This is a 32 bit pointer and - is aligned on a 32 bit boundary. - */ -typedef void* OMX_PTR; - -/** The OMX_STRING type is intended to be used to pass "C" type strings between - the application and the core and component. The OMX_STRING type is a 32 - bit pointer to a zero terminated string. The pointer is word aligned and - the string is byte aligned. - */ -typedef char* OMX_STRING; - -/** The OMX_BYTE type is intended to be used to pass arrays of bytes such as - buffers between the application and the component and core. The OMX_BYTE - type is a 32 bit pointer to a zero terminated string. The pointer is word - aligned and the string is byte aligned. - */ -typedef unsigned char* OMX_BYTE; - -/** OMX_UUIDTYPE is a very long unique identifier to uniquely identify - at runtime. This identifier should be generated by a component in a way - that guarantees that every instance of the identifier running on the system - is unique. */ -typedef unsigned char OMX_UUIDTYPE[128]; - -/** The OMX_DIRTYPE enumeration is used to indicate if a port is an input or - an output port. This enumeration is common across all component types. - */ -typedef enum OMX_DIRTYPE -{ - OMX_DirInput, /**< Port is an input port */ - OMX_DirOutput, /**< Port is an output port */ - OMX_DirMax = 0x7FFFFFFF -} OMX_DIRTYPE; - -/** The OMX_ENDIANTYPE enumeration is used to indicate the bit ordering - for numerical data (i.e. big endian, or little endian). - */ -typedef enum OMX_ENDIANTYPE -{ - OMX_EndianBig, /**< big endian */ - OMX_EndianLittle, /**< little endian */ - OMX_EndianMax = 0x7FFFFFFF -} OMX_ENDIANTYPE; - - -/** The OMX_NUMERICALDATATYPE enumeration is used to indicate if data - is signed or unsigned - */ -typedef enum OMX_NUMERICALDATATYPE -{ - OMX_NumericalDataSigned, /**< signed data */ - OMX_NumericalDataUnsigned, /**< unsigned data */ - OMX_NumercialDataMax = 0x7FFFFFFF -} OMX_NUMERICALDATATYPE; - - -/** Unsigned bounded value type */ -typedef struct OMX_BU32 { - OMX_U32 nValue; /**< actual value */ - OMX_U32 nMin; /**< minimum for value (i.e. nValue >= nMin) */ - OMX_U32 nMax; /**< maximum for value (i.e. nValue <= nMax) */ -} OMX_BU32; - - -/** Signed bounded value type */ -typedef struct OMX_BS32 { - OMX_S32 nValue; /**< actual value */ - OMX_S32 nMin; /**< minimum for value (i.e. nValue >= nMin) */ - OMX_S32 nMax; /**< maximum for value (i.e. nValue <= nMax) */ -} OMX_BS32; - - -/** Structure representing some time or duration in microseconds. This structure - * must be interpreted as a signed 64 bit value. The quantity is signed to accommodate - * negative deltas and preroll scenarios. The quantity is represented in microseconds - * to accomodate high resolution timestamps (e.g. DVD presentation timestamps based - * on a 90kHz clock) and to allow more accurate and synchronized delivery (e.g. - * individual audio samples delivered at 192 kHz). The quantity is 64 bit to - * accommodate a large dynamic range (signed 32 bit values would allow only for plus - * or minus 35 minutes). - * - * Implementations with limited precision may convert the signed 64 bit value to - * a signed 32 bit value internally but risk loss of precision. - */ -#ifndef OMX_SKIP64BIT -typedef OMX_S64 OMX_TICKS; -#else -typedef struct OMX_TICKS -{ - OMX_U32 nLowPart; /** low bits of the signed 64 bit tick value */ - OMX_U32 nHighPart; /** high bits of the signed 64 bit tick value */ -} OMX_TICKS; -#endif -#define OMX_TICKS_PER_SECOND 1000000 - -/** Define the public interface for the OMX Handle. The core will not use - this value internally, but the application should only use this value. - */ -typedef void* OMX_HANDLETYPE; - -typedef struct OMX_MARKTYPE -{ - OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will - generate a mark event upon - processing the mark. */ - OMX_PTR pMarkData; /**< Application specific data associated with - the mark sent on a mark event to disambiguate - this mark from others. */ -} OMX_MARKTYPE; - - -/** OMX_NATIVE_DEVICETYPE is used to map a OMX video port to the - * platform & operating specific object used to reference the display - * or can be used by a audio port for native audio rendering */ -typedef void* OMX_NATIVE_DEVICETYPE; - -/** OMX_NATIVE_WINDOWTYPE is used to map a OMX video port to the - * platform & operating specific object used to reference the window */ -typedef void* OMX_NATIVE_WINDOWTYPE; - - -/** Define the OMX IL version that corresponds to this set of header files. - * We also define a combined version that can be used to write or compare - * values of the 32bit nVersion field, assuming a little endian architecture */ -#define OMX_VERSION_MAJOR 1 -#define OMX_VERSION_MINOR 1 -#define OMX_VERSION_REVISION 2 -#define OMX_VERSION_STEP 0 - -#define OMX_VERSION ((OMX_VERSION_STEP<<24) | (OMX_VERSION_REVISION<<16) | (OMX_VERSION_MINOR<<8) | OMX_VERSION_MAJOR) - - -/** The OMX_VERSIONTYPE union is used to specify the version for - a structure or component. For a component, the version is entirely - specified by the component vendor. Components doing the same function - from different vendors may or may not have the same version. For - structures, the version shall be set by the entity that allocates the - structure. For structures specified in the OMX 1.1 specification, the - value of the version shall be set to 1.1.0.0 in all cases. Access to the - OMX_VERSIONTYPE can be by a single 32 bit access (e.g. by nVersion) or - by accessing one of the structure elements to, for example, check only - the Major revision. - */ -typedef union OMX_VERSIONTYPE -{ - struct - { - OMX_U8 nVersionMajor; /**< Major version accessor element */ - OMX_U8 nVersionMinor; /**< Minor version accessor element */ - OMX_U8 nRevision; /**< Revision version accessor element */ - OMX_U8 nStep; /**< Step version accessor element */ - } s; - OMX_U32 nVersion; /**< 32 bit value to make accessing the - version easily done in a single word - size copy/compare operation */ -} OMX_VERSIONTYPE; - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilapi/v1_x/OMX_Video.h --- a/omxil/omxilapi/v1_x/OMX_Video.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1060 +0,0 @@ -/** - * Copyright (c) 2008 The Khronos Group Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -/** - * @file OMX_Video.h - OpenMax IL version 1.1.2 - * The structures is needed by Video components to exchange parameters - * and configuration data with OMX components. - */ -#ifndef OMX_Video_h -#define OMX_Video_h - -/** @defgroup video OpenMAX IL Video Domain - * @ingroup iv - * Structures for OpenMAX IL Video domain - * @{ - */ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - - -/** - * Each OMX header must include all required header files to allow the - * header to compile without errors. The includes below are required - * for this header file to compile successfully - */ - -#include - - -/** - * Enumeration used to define the possible video compression codings. - * NOTE: This essentially refers to file extensions. If the coding is - * being used to specify the ENCODE type, then additional work - * must be done to configure the exact flavor of the compression - * to be used. For decode cases where the user application can - * not differentiate between MPEG-4 and H.264 bit streams, it is - * up to the codec to handle this. - */ -typedef enum OMX_VIDEO_CODINGTYPE { - OMX_VIDEO_CodingUnused, /**< Value when coding is N/A */ - OMX_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */ - OMX_VIDEO_CodingMPEG2, /**< AKA: H.262 */ - OMX_VIDEO_CodingH263, /**< H.263 */ - OMX_VIDEO_CodingMPEG4, /**< MPEG-4 */ - OMX_VIDEO_CodingWMV, /**< all versions of Windows Media Video */ - OMX_VIDEO_CodingRV, /**< all versions of Real Video */ - OMX_VIDEO_CodingAVC, /**< H.264/AVC */ - OMX_VIDEO_CodingMJPEG, /**< Motion JPEG */ - OMX_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_CodingMax = 0x7FFFFFFF -} OMX_VIDEO_CODINGTYPE; - - -/** - * Data structure used to define a video path. The number of Video paths for - * input and output will vary by type of the Video component. - * - * Input (aka Source) : zero Inputs, one Output, - * Splitter : one Input, 2 or more Outputs, - * Processing Element : one Input, one output, - * Mixer : 2 or more inputs, one output, - * Output (aka Sink) : one Input, zero outputs. - * - * The PortDefinition structure is used to define all of the parameters - * necessary for the compliant component to setup an input or an output video - * path. If additional vendor specific data is required, it should be - * transmitted to the component using the CustomCommand function. Compliant - * components will prepopulate this structure with optimal values during the - * GetDefaultInitParams command. - * - * STRUCT MEMBERS: - * cMIMEType : MIME type of data for the port - * pNativeRender : Platform specific reference for a display if a - * sync, otherwise this field is 0 - * nFrameWidth : Width of frame to be used on channel if - * uncompressed format is used. Use 0 for unknown, - * don't care or variable - * nFrameHeight : Height of frame to be used on channel if - * uncompressed format is used. Use 0 for unknown, - * don't care or variable - * nStride : Number of bytes per span of an image - * (i.e. indicates the number of bytes to get - * from span N to span N+1, where negative stride - * indicates the image is bottom up - * nSliceHeight : Height used when encoding in slices - * nBitrate : Bit rate of frame to be used on channel if - * compressed format is used. Use 0 for unknown, - * don't care or variable - * xFramerate : Frame rate to be used on channel if uncompressed - * format is used. Use 0 for unknown, don't care or - * variable. Units are Q16 frames per second. - * bFlagErrorConcealment : Turns on error concealment if it is supported by - * the OMX component - * eCompressionFormat : Compression format used in this instance of the - * component. When OMX_VIDEO_CodingUnused is - * specified, eColorFormat is used - * eColorFormat : Decompressed format used by this component - * pNativeWindow : Platform specific reference for a window object if a - * display sink , otherwise this field is 0x0. - */ -typedef struct OMX_VIDEO_PORTDEFINITIONTYPE { - OMX_STRING cMIMEType; - OMX_NATIVE_DEVICETYPE pNativeRender; - OMX_U32 nFrameWidth; - OMX_U32 nFrameHeight; - OMX_S32 nStride; - OMX_U32 nSliceHeight; - OMX_U32 nBitrate; - OMX_U32 xFramerate; - OMX_BOOL bFlagErrorConcealment; - OMX_VIDEO_CODINGTYPE eCompressionFormat; - OMX_COLOR_FORMATTYPE eColorFormat; - OMX_NATIVE_WINDOWTYPE pNativeWindow; -} OMX_VIDEO_PORTDEFINITIONTYPE; - -/** - * Port format parameter. This structure is used to enumerate the various - * data input/output format supported by the port. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Indicates which port to set - * nIndex : Indicates the enumeration index for the format from - * 0x0 to N-1 - * eCompressionFormat : Compression format used in this instance of the - * component. When OMX_VIDEO_CodingUnused is specified, - * eColorFormat is used - * eColorFormat : Decompressed format used by this component - * xFrameRate : Indicates the video frame rate in Q16 format - */ -typedef struct OMX_VIDEO_PARAM_PORTFORMATTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nIndex; - OMX_VIDEO_CODINGTYPE eCompressionFormat; - OMX_COLOR_FORMATTYPE eColorFormat; - OMX_U32 xFramerate; -} OMX_VIDEO_PARAM_PORTFORMATTYPE; - - -/** - * This is a structure for configuring video compression quantization - * parameter values. Codecs may support different QP values for different - * frame types. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version info - * nPortIndex : Port that this structure applies to - * nQpI : QP value to use for index frames - * nQpP : QP value to use for P frames - * nQpB : QP values to use for bidirectional frames - */ -typedef struct OMX_VIDEO_PARAM_QUANTIZATIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nQpI; - OMX_U32 nQpP; - OMX_U32 nQpB; -} OMX_VIDEO_PARAM_QUANTIZATIONTYPE; - - -/** - * Structure for configuration of video fast update parameters. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version info - * nPortIndex : Port that this structure applies to - * bEnableVFU : Enable/Disable video fast update - * nFirstGOB : Specifies the number of the first macroblock row - * nFirstMB : specifies the first MB relative to the specified first GOB - * nNumMBs : Specifies the number of MBs to be refreshed from nFirstGOB - * and nFirstMB - */ -typedef struct OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnableVFU; - OMX_U32 nFirstGOB; - OMX_U32 nFirstMB; - OMX_U32 nNumMBs; -} OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE; - - -/** - * Enumeration of possible bitrate control types - */ -typedef enum OMX_VIDEO_CONTROLRATETYPE { - OMX_Video_ControlRateDisable, - OMX_Video_ControlRateVariable, - OMX_Video_ControlRateConstant, - OMX_Video_ControlRateVariableSkipFrames, - OMX_Video_ControlRateConstantSkipFrames, - OMX_Video_ControlRateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_Video_ControlRateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_Video_ControlRateMax = 0x7FFFFFFF -} OMX_VIDEO_CONTROLRATETYPE; - - -/** - * Structure for configuring bitrate mode of a codec. - * - * STRUCT MEMBERS: - * nSize : Size of the struct in bytes - * nVersion : OMX spec version info - * nPortIndex : Port that this struct applies to - * eControlRate : Control rate type enum - * nTargetBitrate : Target bitrate to encode with - */ -typedef struct OMX_VIDEO_PARAM_BITRATETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_CONTROLRATETYPE eControlRate; - OMX_U32 nTargetBitrate; -} OMX_VIDEO_PARAM_BITRATETYPE; - - -/** - * Enumeration of possible motion vector (MV) types - */ -typedef enum OMX_VIDEO_MOTIONVECTORTYPE { - OMX_Video_MotionVectorPixel, - OMX_Video_MotionVectorHalfPel, - OMX_Video_MotionVectorQuarterPel, - OMX_Video_MotionVectorEighthPel, - OMX_Video_MotionVectorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_Video_MotionVectorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_Video_MotionVectorMax = 0x7FFFFFFF -} OMX_VIDEO_MOTIONVECTORTYPE; - - -/** - * Structure for configuring the number of motion vectors used as well - * as their accuracy. - * - * STRUCT MEMBERS: - * nSize : Size of the struct in bytes - * nVersion : OMX spec version info - * nPortIndex : port that this structure applies to - * eAccuracy : Enumerated MV accuracy - * bUnrestrictedMVs : Allow unrestricted MVs - * bFourMV : Allow use of 4 MVs - * sXSearchRange : Search range in horizontal direction for MVs - * sYSearchRange : Search range in vertical direction for MVs - */ -typedef struct OMX_VIDEO_PARAM_MOTIONVECTORTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_MOTIONVECTORTYPE eAccuracy; - OMX_BOOL bUnrestrictedMVs; - OMX_BOOL bFourMV; - OMX_S32 sXSearchRange; - OMX_S32 sYSearchRange; -} OMX_VIDEO_PARAM_MOTIONVECTORTYPE; - - -/** - * Enumeration of possible methods to use for Intra Refresh - */ -typedef enum OMX_VIDEO_INTRAREFRESHTYPE { - OMX_VIDEO_IntraRefreshCyclic, - OMX_VIDEO_IntraRefreshAdaptive, - OMX_VIDEO_IntraRefreshBoth, - OMX_VIDEO_IntraRefreshKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_IntraRefreshVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_IntraRefreshMax = 0x7FFFFFFF -} OMX_VIDEO_INTRAREFRESHTYPE; - - -/** - * Structure for configuring intra refresh mode - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eRefreshMode : Cyclic, Adaptive, or Both - * nAirMBs : Number of intra macroblocks to refresh in a frame when - * AIR is enabled - * nAirRef : Number of times a motion marked macroblock has to be - * intra coded - * nCirMBs : Number of consecutive macroblocks to be coded as "intra" - * when CIR is enabled - */ -typedef struct OMX_VIDEO_PARAM_INTRAREFRESHTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_INTRAREFRESHTYPE eRefreshMode; - OMX_U32 nAirMBs; - OMX_U32 nAirRef; - OMX_U32 nCirMBs; -} OMX_VIDEO_PARAM_INTRAREFRESHTYPE; - - -/** - * Structure for enabling various error correction methods for video - * compression. - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * bEnableHEC : Enable/disable header extension codes (HEC) - * bEnableResync : Enable/disable resynchronization markers - * nResynchMarkerSpacing : Resynch markers interval (in bits) to be - * applied in the stream - * bEnableDataPartitioning : Enable/disable data partitioning - * bEnableRVLC : Enable/disable reversible variable length - * coding - */ -typedef struct OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnableHEC; - OMX_BOOL bEnableResync; - OMX_U32 nResynchMarkerSpacing; - OMX_BOOL bEnableDataPartitioning; - OMX_BOOL bEnableRVLC; -} OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE; - - -/** - * Configuration of variable block-size motion compensation (VBSMC) - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * b16x16 : Enable inter block search 16x16 - * b16x8 : Enable inter block search 16x8 - * b8x16 : Enable inter block search 8x16 - * b8x8 : Enable inter block search 8x8 - * b8x4 : Enable inter block search 8x4 - * b4x8 : Enable inter block search 4x8 - * b4x4 : Enable inter block search 4x4 - */ -typedef struct OMX_VIDEO_PARAM_VBSMCTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL b16x16; - OMX_BOOL b16x8; - OMX_BOOL b8x16; - OMX_BOOL b8x8; - OMX_BOOL b8x4; - OMX_BOOL b4x8; - OMX_BOOL b4x4; -} OMX_VIDEO_PARAM_VBSMCTYPE; - - -/** - * H.263 profile types, each profile indicates support for various - * performance bounds and different annexes. - * - * ENUMS: - * Baseline : Baseline Profile: H.263 (V1), no optional modes - * H320 Coding : H.320 Coding Efficiency Backward Compatibility - * Profile: H.263+ (V2), includes annexes I, J, L.4 - * and T - * BackwardCompatible : Backward Compatibility Profile: H.263 (V1), - * includes annex F - * ISWV2 : Interactive Streaming Wireless Profile: H.263+ - * (V2), includes annexes I, J, K and T - * ISWV3 : Interactive Streaming Wireless Profile: H.263++ - * (V3), includes profile 3 and annexes V and W.6.3.8 - * HighCompression : Conversational High Compression Profile: H.263++ - * (V3), includes profiles 1 & 2 and annexes D and U - * Internet : Conversational Internet Profile: H.263++ (V3), - * includes profile 5 and annex K - * Interlace : Conversational Interlace Profile: H.263++ (V3), - * includes profile 5 and annex W.6.3.11 - * HighLatency : High Latency Profile: H.263++ (V3), includes - * profile 6 and annexes O.1 and P.5 - */ -typedef enum OMX_VIDEO_H263PROFILETYPE { - OMX_VIDEO_H263ProfileBaseline = 0x01, - OMX_VIDEO_H263ProfileH320Coding = 0x02, - OMX_VIDEO_H263ProfileBackwardCompatible = 0x04, - OMX_VIDEO_H263ProfileISWV2 = 0x08, - OMX_VIDEO_H263ProfileISWV3 = 0x10, - OMX_VIDEO_H263ProfileHighCompression = 0x20, - OMX_VIDEO_H263ProfileInternet = 0x40, - OMX_VIDEO_H263ProfileInterlace = 0x80, - OMX_VIDEO_H263ProfileHighLatency = 0x100, - OMX_VIDEO_H263ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_H263ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_H263ProfileMax = 0x7FFFFFFF -} OMX_VIDEO_H263PROFILETYPE; - - -/** - * H.263 level types, each level indicates support for various frame sizes, - * bit rates, decoder frame rates. - */ -typedef enum OMX_VIDEO_H263LEVELTYPE { - OMX_VIDEO_H263Level10 = 0x01, - OMX_VIDEO_H263Level20 = 0x02, - OMX_VIDEO_H263Level30 = 0x04, - OMX_VIDEO_H263Level40 = 0x08, - OMX_VIDEO_H263Level45 = 0x10, - OMX_VIDEO_H263Level50 = 0x20, - OMX_VIDEO_H263Level60 = 0x40, - OMX_VIDEO_H263Level70 = 0x80, - OMX_VIDEO_H263LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_H263LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_H263LevelMax = 0x7FFFFFFF -} OMX_VIDEO_H263LEVELTYPE; - - -/** - * Specifies the picture type. These values should be OR'd to signal all - * pictures types which are allowed. - * - * ENUMS: - * Generic Picture Types: I, P and B - * H.263 Specific Picture Types: SI and SP - * H.264 Specific Picture Types: EI and EP - * MPEG-4 Specific Picture Types: S - */ -typedef enum OMX_VIDEO_PICTURETYPE { - OMX_VIDEO_PictureTypeI = 0x01, - OMX_VIDEO_PictureTypeP = 0x02, - OMX_VIDEO_PictureTypeB = 0x04, - OMX_VIDEO_PictureTypeSI = 0x08, - OMX_VIDEO_PictureTypeSP = 0x10, - OMX_VIDEO_PictureTypeEI = 0x11, - OMX_VIDEO_PictureTypeEP = 0x12, - OMX_VIDEO_PictureTypeS = 0x14, - OMX_VIDEO_PictureTypeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_PictureTypeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_PictureTypeMax = 0x7FFFFFFF -} OMX_VIDEO_PICTURETYPE; - - -/** - * H.263 Params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nPFrames : Number of P frames between each I frame - * nBFrames : Number of B frames between each I frame - * eProfile : H.263 profile(s) to use - * eLevel : H.263 level(s) to use - * bPLUSPTYPEAllowed : Indicating that it is allowed to use PLUSPTYPE - * (specified in the 1998 version of H.263) to - * indicate custom picture sizes or clock - * frequencies - * nAllowedPictureTypes : Specifies the picture types allowed in the - * bitstream - * bForceRoundingTypeToZero : value of the RTYPE bit (bit 6 of MPPTYPE) is - * not constrained. It is recommended to change - * the value of the RTYPE bit for each reference - * picture in error-free communication - * nPictureHeaderRepetition : Specifies the frequency of picture header - * repetition - * nGOBHeaderInterval : Specifies the interval of non-empty GOB - * headers in units of GOBs - */ -typedef struct OMX_VIDEO_PARAM_H263TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nPFrames; - OMX_U32 nBFrames; - OMX_VIDEO_H263PROFILETYPE eProfile; - OMX_VIDEO_H263LEVELTYPE eLevel; - OMX_BOOL bPLUSPTYPEAllowed; - OMX_U32 nAllowedPictureTypes; - OMX_BOOL bForceRoundingTypeToZero; - OMX_U32 nPictureHeaderRepetition; - OMX_U32 nGOBHeaderInterval; -} OMX_VIDEO_PARAM_H263TYPE; - - -/** - * MPEG-2 profile types, each profile indicates support for various - * performance bounds and different annexes. - */ -typedef enum OMX_VIDEO_MPEG2PROFILETYPE { - OMX_VIDEO_MPEG2ProfileSimple = 0, /**< Simple Profile */ - OMX_VIDEO_MPEG2ProfileMain, /**< Main Profile */ - OMX_VIDEO_MPEG2Profile422, /**< 4:2:2 Profile */ - OMX_VIDEO_MPEG2ProfileSNR, /**< SNR Profile */ - OMX_VIDEO_MPEG2ProfileSpatial, /**< Spatial Profile */ - OMX_VIDEO_MPEG2ProfileHigh, /**< High Profile */ - OMX_VIDEO_MPEG2ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_MPEG2ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_MPEG2ProfileMax = 0x7FFFFFFF -} OMX_VIDEO_MPEG2PROFILETYPE; - - -/** - * MPEG-2 level types, each level indicates support for various frame - * sizes, bit rates, decoder frame rates. No need - */ -typedef enum OMX_VIDEO_MPEG2LEVELTYPE { - OMX_VIDEO_MPEG2LevelLL = 0, /**< Low Level */ - OMX_VIDEO_MPEG2LevelML, /**< Main Level */ - OMX_VIDEO_MPEG2LevelH14, /**< High 1440 */ - OMX_VIDEO_MPEG2LevelHL, /**< High Level */ - OMX_VIDEO_MPEG2LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_MPEG2LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_MPEG2LevelMax = 0x7FFFFFFF -} OMX_VIDEO_MPEG2LEVELTYPE; - - -/** - * MPEG-2 params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nPFrames : Number of P frames between each I frame - * nBFrames : Number of B frames between each I frame - * eProfile : MPEG-2 profile(s) to use - * eLevel : MPEG-2 levels(s) to use - */ -typedef struct OMX_VIDEO_PARAM_MPEG2TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nPFrames; - OMX_U32 nBFrames; - OMX_VIDEO_MPEG2PROFILETYPE eProfile; - OMX_VIDEO_MPEG2LEVELTYPE eLevel; -} OMX_VIDEO_PARAM_MPEG2TYPE; - - -/** - * MPEG-4 profile types, each profile indicates support for various - * performance bounds and different annexes. - * - * ENUMS: - * - Simple Profile, Levels 1-3 - * - Simple Scalable Profile, Levels 1-2 - * - Core Profile, Levels 1-2 - * - Main Profile, Levels 2-4 - * - N-bit Profile, Level 2 - * - Scalable Texture Profile, Level 1 - * - Simple Face Animation Profile, Levels 1-2 - * - Simple Face and Body Animation (FBA) Profile, Levels 1-2 - * - Basic Animated Texture Profile, Levels 1-2 - * - Hybrid Profile, Levels 1-2 - * - Advanced Real Time Simple Profiles, Levels 1-4 - * - Core Scalable Profile, Levels 1-3 - * - Advanced Coding Efficiency Profile, Levels 1-4 - * - Advanced Core Profile, Levels 1-2 - * - Advanced Scalable Texture, Levels 2-3 - */ -typedef enum OMX_VIDEO_MPEG4PROFILETYPE { - OMX_VIDEO_MPEG4ProfileSimple = 0x01, - OMX_VIDEO_MPEG4ProfileSimpleScalable = 0x02, - OMX_VIDEO_MPEG4ProfileCore = 0x04, - OMX_VIDEO_MPEG4ProfileMain = 0x08, - OMX_VIDEO_MPEG4ProfileNbit = 0x10, - OMX_VIDEO_MPEG4ProfileScalableTexture = 0x20, - OMX_VIDEO_MPEG4ProfileSimpleFace = 0x40, - OMX_VIDEO_MPEG4ProfileSimpleFBA = 0x80, - OMX_VIDEO_MPEG4ProfileBasicAnimated = 0x100, - OMX_VIDEO_MPEG4ProfileHybrid = 0x200, - OMX_VIDEO_MPEG4ProfileAdvancedRealTime = 0x400, - OMX_VIDEO_MPEG4ProfileCoreScalable = 0x800, - OMX_VIDEO_MPEG4ProfileAdvancedCoding = 0x1000, - OMX_VIDEO_MPEG4ProfileAdvancedCore = 0x2000, - OMX_VIDEO_MPEG4ProfileAdvancedScalable = 0x4000, - OMX_VIDEO_MPEG4ProfileAdvancedSimple = 0x8000, - OMX_VIDEO_MPEG4ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_MPEG4ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_MPEG4ProfileMax = 0x7FFFFFFF -} OMX_VIDEO_MPEG4PROFILETYPE; - - -/** - * MPEG-4 level types, each level indicates support for various frame - * sizes, bit rates, decoder frame rates. No need - */ -typedef enum OMX_VIDEO_MPEG4LEVELTYPE { - OMX_VIDEO_MPEG4Level0 = 0x01, /**< Level 0 */ - OMX_VIDEO_MPEG4Level0b = 0x02, /**< Level 0b */ - OMX_VIDEO_MPEG4Level1 = 0x04, /**< Level 1 */ - OMX_VIDEO_MPEG4Level2 = 0x08, /**< Level 2 */ - OMX_VIDEO_MPEG4Level3 = 0x10, /**< Level 3 */ - OMX_VIDEO_MPEG4Level4 = 0x20, /**< Level 4 */ - OMX_VIDEO_MPEG4Level4a = 0x40, /**< Level 4a */ - OMX_VIDEO_MPEG4Level5 = 0x80, /**< Level 5 */ - OMX_VIDEO_MPEG4LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_MPEG4LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_MPEG4LevelMax = 0x7FFFFFFF -} OMX_VIDEO_MPEG4LEVELTYPE; - - -/** - * MPEG-4 configuration. This structure handles configuration options - * which are specific to MPEG4 algorithms - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nSliceHeaderSpacing : Number of macroblocks between slice header (H263+ - * Annex K). Put zero if not used - * bSVH : Enable Short Video Header mode - * bGov : Flag to enable GOV - * nPFrames : Number of P frames between each I frame (also called - * GOV period) - * nBFrames : Number of B frames between each I frame - * nIDCVLCThreshold : Value of intra DC VLC threshold - * bACPred : Flag to use ac prediction - * nMaxPacketSize : Maximum size of packet in bytes. - * nTimeIncRes : Used to pass VOP time increment resolution for MPEG4. - * Interpreted as described in MPEG4 standard. - * eProfile : MPEG-4 profile(s) to use. - * eLevel : MPEG-4 level(s) to use. - * nAllowedPictureTypes : Specifies the picture types allowed in the bitstream - * nHeaderExtension : Specifies the number of consecutive video packet - * headers within a VOP - * bReversibleVLC : Specifies whether reversible variable length coding - * is in use - */ -typedef struct OMX_VIDEO_PARAM_MPEG4TYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nSliceHeaderSpacing; - OMX_BOOL bSVH; - OMX_BOOL bGov; - OMX_U32 nPFrames; - OMX_U32 nBFrames; - OMX_U32 nIDCVLCThreshold; - OMX_BOOL bACPred; - OMX_U32 nMaxPacketSize; - OMX_U32 nTimeIncRes; - OMX_VIDEO_MPEG4PROFILETYPE eProfile; - OMX_VIDEO_MPEG4LEVELTYPE eLevel; - OMX_U32 nAllowedPictureTypes; - OMX_U32 nHeaderExtension; - OMX_BOOL bReversibleVLC; -} OMX_VIDEO_PARAM_MPEG4TYPE; - - -/** - * WMV Versions - */ -typedef enum OMX_VIDEO_WMVFORMATTYPE { - OMX_VIDEO_WMVFormatUnused = 0x01, /**< Format unused or unknown */ - OMX_VIDEO_WMVFormat7 = 0x02, /**< Windows Media Video format 7 */ - OMX_VIDEO_WMVFormat8 = 0x04, /**< Windows Media Video format 8 */ - OMX_VIDEO_WMVFormat9 = 0x08, /**< Windows Media Video format 9 */ - OMX_VIDEO_WMFFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_WMFFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_WMVFormatMax = 0x7FFFFFFF -} OMX_VIDEO_WMVFORMATTYPE; - - -/** - * WMV Params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFormat : Version of WMV stream / data - */ -typedef struct OMX_VIDEO_PARAM_WMVTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_WMVFORMATTYPE eFormat; -} OMX_VIDEO_PARAM_WMVTYPE; - - -/** - * Real Video Version - */ -typedef enum OMX_VIDEO_RVFORMATTYPE { - OMX_VIDEO_RVFormatUnused = 0, /**< Format unused or unknown */ - OMX_VIDEO_RVFormat8, /**< Real Video format 8 */ - OMX_VIDEO_RVFormat9, /**< Real Video format 9 */ - OMX_VIDEO_RVFormatG2, /**< Real Video Format G2 */ - OMX_VIDEO_RVFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_RVFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_RVFormatMax = 0x7FFFFFFF -} OMX_VIDEO_RVFORMATTYPE; - - -/** - * Real Video Params - * - * STUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * eFormat : Version of RV stream / data - * nBitsPerPixel : Bits per pixel coded in the frame - * nPaddedWidth : Padded width in pixel of a video frame - * nPaddedHeight : Padded Height in pixels of a video frame - * nFrameRate : Rate of video in frames per second - * nBitstreamFlags : Flags which internal information about the bitstream - * nBitstreamVersion : Bitstream version - * nMaxEncodeFrameSize: Max encoded frame size - * bEnablePostFilter : Turn on/off post filter - * bEnableTemporalInterpolation : Turn on/off temporal interpolation - * bEnableLatencyMode : When enabled, the decoder does not display a decoded - * frame until it has detected that no enhancement layer - * frames or dependent B frames will be coming. This - * detection usually occurs when a subsequent non-B - * frame is encountered - */ -typedef struct OMX_VIDEO_PARAM_RVTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_VIDEO_RVFORMATTYPE eFormat; - OMX_U16 nBitsPerPixel; - OMX_U16 nPaddedWidth; - OMX_U16 nPaddedHeight; - OMX_U32 nFrameRate; - OMX_U32 nBitstreamFlags; - OMX_U32 nBitstreamVersion; - OMX_U32 nMaxEncodeFrameSize; - OMX_BOOL bEnablePostFilter; - OMX_BOOL bEnableTemporalInterpolation; - OMX_BOOL bEnableLatencyMode; -} OMX_VIDEO_PARAM_RVTYPE; - - -/** - * AVC profile types, each profile indicates support for various - * performance bounds and different annexes. - */ -typedef enum OMX_VIDEO_AVCPROFILETYPE { - OMX_VIDEO_AVCProfileBaseline = 0x01, /**< Baseline profile */ - OMX_VIDEO_AVCProfileMain = 0x02, /**< Main profile */ - OMX_VIDEO_AVCProfileExtended = 0x04, /**< Extended profile */ - OMX_VIDEO_AVCProfileHigh = 0x08, /**< High profile */ - OMX_VIDEO_AVCProfileHigh10 = 0x10, /**< High 10 profile */ - OMX_VIDEO_AVCProfileHigh422 = 0x20, /**< High 4:2:2 profile */ - OMX_VIDEO_AVCProfileHigh444 = 0x40, /**< High 4:4:4 profile */ - OMX_VIDEO_AVCProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_AVCProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_AVCProfileMax = 0x7FFFFFFF -} OMX_VIDEO_AVCPROFILETYPE; - - -/** - * AVC level types, each level indicates support for various frame sizes, - * bit rates, decoder frame rates. No need - */ -typedef enum OMX_VIDEO_AVCLEVELTYPE { - OMX_VIDEO_AVCLevel1 = 0x01, /**< Level 1 */ - OMX_VIDEO_AVCLevel1b = 0x02, /**< Level 1b */ - OMX_VIDEO_AVCLevel11 = 0x04, /**< Level 1.1 */ - OMX_VIDEO_AVCLevel12 = 0x08, /**< Level 1.2 */ - OMX_VIDEO_AVCLevel13 = 0x10, /**< Level 1.3 */ - OMX_VIDEO_AVCLevel2 = 0x20, /**< Level 2 */ - OMX_VIDEO_AVCLevel21 = 0x40, /**< Level 2.1 */ - OMX_VIDEO_AVCLevel22 = 0x80, /**< Level 2.2 */ - OMX_VIDEO_AVCLevel3 = 0x100, /**< Level 3 */ - OMX_VIDEO_AVCLevel31 = 0x200, /**< Level 3.1 */ - OMX_VIDEO_AVCLevel32 = 0x400, /**< Level 3.2 */ - OMX_VIDEO_AVCLevel4 = 0x800, /**< Level 4 */ - OMX_VIDEO_AVCLevel41 = 0x1000, /**< Level 4.1 */ - OMX_VIDEO_AVCLevel42 = 0x2000, /**< Level 4.2 */ - OMX_VIDEO_AVCLevel5 = 0x4000, /**< Level 5 */ - OMX_VIDEO_AVCLevel51 = 0x8000, /**< Level 5.1 */ - OMX_VIDEO_AVCLevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_AVCLevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_AVCLevelMax = 0x7FFFFFFF -} OMX_VIDEO_AVCLEVELTYPE; - - -/** - * AVC loop filter modes - * - * OMX_VIDEO_AVCLoopFilterEnable : Enable - * OMX_VIDEO_AVCLoopFilterDisable : Disable - * OMX_VIDEO_AVCLoopFilterDisableSliceBoundary : Disabled on slice boundaries - */ -typedef enum OMX_VIDEO_AVCLOOPFILTERTYPE { - OMX_VIDEO_AVCLoopFilterEnable = 0, - OMX_VIDEO_AVCLoopFilterDisable, - OMX_VIDEO_AVCLoopFilterDisableSliceBoundary, - OMX_VIDEO_AVCLoopFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_AVCLoopFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_AVCLoopFilterMax = 0x7FFFFFFF -} OMX_VIDEO_AVCLOOPFILTERTYPE; - - -/** - * AVC params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nSliceHeaderSpacing : Number of macroblocks between slice header, put - * zero if not used - * nPFrames : Number of P frames between each I frame - * nBFrames : Number of B frames between each I frame - * bUseHadamard : Enable/disable Hadamard transform - * nRefFrames : Max number of reference frames to use for inter - * motion search (1-16) - * nRefIdxTrailing : Pic param set ref frame index (index into ref - * frame buffer of trailing frames list), B frame - * support - * nRefIdxForward : Pic param set ref frame index (index into ref - * frame buffer of forward frames list), B frame - * support - * bEnableUEP : Enable/disable unequal error protection. This - * is only valid of data partitioning is enabled. - * bEnableFMO : Enable/disable flexible macroblock ordering - * bEnableASO : Enable/disable arbitrary slice ordering - * bEnableRS : Enable/disable sending of redundant slices - * eProfile : AVC profile(s) to use - * eLevel : AVC level(s) to use - * nAllowedPictureTypes : Specifies the picture types allowed in the - * bitstream - * bFrameMBsOnly : specifies that every coded picture of the - * coded video sequence is a coded frame - * containing only frame macroblocks - * bMBAFF : Enable/disable switching between frame and - * field macroblocks within a picture - * bEntropyCodingCABAC : Entropy decoding method to be applied for the - * syntax elements for which two descriptors appear - * in the syntax tables - * bWeightedPPrediction : Enable/disable weighted prediction shall not - * be applied to P and SP slices - * nWeightedBipredicitonMode : Default weighted prediction is applied to B - * slices - * bconstIpred : Enable/disable intra prediction - * bDirect8x8Inference : Specifies the method used in the derivation - * process for luma motion vectors for B_Skip, - * B_Direct_16x16 and B_Direct_8x8 as specified - * in subclause 8.4.1.2 of the AVC spec - * bDirectSpatialTemporal : Flag indicating spatial or temporal direct - * mode used in B slice coding (related to - * bDirect8x8Inference) . Spatial direct mode is - * more common and should be the default. - * nCabacInitIdx : Index used to init CABAC contexts - * eLoopFilterMode : Enable/disable loop filter - */ -typedef struct OMX_VIDEO_PARAM_AVCTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nSliceHeaderSpacing; - OMX_U32 nPFrames; - OMX_U32 nBFrames; - OMX_BOOL bUseHadamard; - OMX_U32 nRefFrames; - OMX_U32 nRefIdx10ActiveMinus1; - OMX_U32 nRefIdx11ActiveMinus1; - OMX_BOOL bEnableUEP; - OMX_BOOL bEnableFMO; - OMX_BOOL bEnableASO; - OMX_BOOL bEnableRS; - OMX_VIDEO_AVCPROFILETYPE eProfile; - OMX_VIDEO_AVCLEVELTYPE eLevel; - OMX_U32 nAllowedPictureTypes; - OMX_BOOL bFrameMBsOnly; - OMX_BOOL bMBAFF; - OMX_BOOL bEntropyCodingCABAC; - OMX_BOOL bWeightedPPrediction; - OMX_U32 nWeightedBipredicitonMode; - OMX_BOOL bconstIpred ; - OMX_BOOL bDirect8x8Inference; - OMX_BOOL bDirectSpatialTemporal; - OMX_U32 nCabacInitIdc; - OMX_VIDEO_AVCLOOPFILTERTYPE eLoopFilterMode; -} OMX_VIDEO_PARAM_AVCTYPE; - -typedef struct OMX_VIDEO_PARAM_PROFILELEVELTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 eProfile; /**< type is OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE, - or OMX_VIDEO_MPEG4PROFILETYPE depending on context */ - OMX_U32 eLevel; /**< type is OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE, - or OMX_VIDEO_MPEG4PROFILETYPE depending on context */ - OMX_U32 nProfileIndex; /**< Used to query for individual profile support information, - This parameter is valid only for - OMX_IndexParamVideoProfileLevelQuerySupported index, - For all other indices this parameter is to be ignored. */ -} OMX_VIDEO_PARAM_PROFILELEVELTYPE; - -/** - * Structure for dynamically configuring bitrate mode of a codec. - * - * STRUCT MEMBERS: - * nSize : Size of the struct in bytes - * nVersion : OMX spec version info - * nPortIndex : Port that this struct applies to - * nEncodeBitrate : Target average bitrate to be generated in bps - */ -typedef struct OMX_VIDEO_CONFIG_BITRATETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nEncodeBitrate; -} OMX_VIDEO_CONFIG_BITRATETYPE; - -/** - * Defines Encoder Frame Rate setting - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * xEncodeFramerate : Encoding framerate represented in Q16 format - */ -typedef struct OMX_CONFIG_FRAMERATETYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 xEncodeFramerate; /* Q16 format */ -} OMX_CONFIG_FRAMERATETYPE; - -typedef struct OMX_CONFIG_INTRAREFRESHVOPTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL IntraRefreshVOP; -} OMX_CONFIG_INTRAREFRESHVOPTYPE; - -typedef struct OMX_CONFIG_MACROBLOCKERRORMAPTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nErrMapSize; /* Size of the Error Map in bytes */ - OMX_U8 ErrMap[1]; /* Error map hint */ -} OMX_CONFIG_MACROBLOCKERRORMAPTYPE; - -typedef struct OMX_CONFIG_MBERRORREPORTINGTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_BOOL bEnabled; -} OMX_CONFIG_MBERRORREPORTINGTYPE; - -typedef struct OMX_PARAM_MACROBLOCKSTYPE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nMacroblocks; -} OMX_PARAM_MACROBLOCKSTYPE; - -/** - * AVC Slice Mode modes - * - * OMX_VIDEO_SLICEMODE_AVCDefault : Normal frame encoding, one slice per frame - * OMX_VIDEO_SLICEMODE_AVCMBSlice : NAL mode, number of MBs per frame - * OMX_VIDEO_SLICEMODE_AVCByteSlice : NAL mode, number of bytes per frame - */ -typedef enum OMX_VIDEO_AVCSLICEMODETYPE { - OMX_VIDEO_SLICEMODE_AVCDefault = 0, - OMX_VIDEO_SLICEMODE_AVCMBSlice, - OMX_VIDEO_SLICEMODE_AVCByteSlice, - OMX_VIDEO_SLICEMODE_AVCKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ - OMX_VIDEO_SLICEMODE_AVCVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ - OMX_VIDEO_SLICEMODE_AVCLevelMax = 0x7FFFFFFF -} OMX_VIDEO_AVCSLICEMODETYPE; - -/** - * AVC FMO Slice Mode Params - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nNumSliceGroups : Specifies the number of slice groups - * nSliceGroupMapType : Specifies the type of slice groups - * eSliceMode : Specifies the type of slice - */ -typedef struct OMX_VIDEO_PARAM_AVCSLICEFMO { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U8 nNumSliceGroups; - OMX_U8 nSliceGroupMapType; - OMX_VIDEO_AVCSLICEMODETYPE eSliceMode; -} OMX_VIDEO_PARAM_AVCSLICEFMO; - -/** - * AVC IDR Period Configs - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nIDRPeriod : Specifies periodicity of IDR frames - * nPFrames : Specifies internal of coding Intra frames - */ -typedef struct OMX_VIDEO_CONFIG_AVCINTRAPERIOD { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nIDRPeriod; - OMX_U32 nPFrames; -} OMX_VIDEO_CONFIG_AVCINTRAPERIOD; - -/** - * AVC NAL Size Configs - * - * STRUCT MEMBERS: - * nSize : Size of the structure in bytes - * nVersion : OMX specification version information - * nPortIndex : Port that this structure applies to - * nNaluBytes : Specifies the NAL unit size - */ -typedef struct OMX_VIDEO_CONFIG_NALSIZE { - OMX_U32 nSize; - OMX_VERSIONTYPE nVersion; - OMX_U32 nPortIndex; - OMX_U32 nNaluBytes; -} OMX_VIDEO_CONFIG_NALSIZE; - -/** @} */ - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif -/* File EOF */ - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/bwins/omxilcomponentcommon.def --- a/omxil/omxilcomponentcommon/bwins/omxilcomponentcommon.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -EXPORTS - ?DoSetFsm@XOmxILCallbackManagerIfImpl@@MAEXAAVCOmxILFsm@@@Z @ 1 NONAME ; void XOmxILCallbackManagerIfImpl::DoSetFsm(class COmxILFsm &) - ?SetPortManager@COmxILCallbackManager@@UAEXAAVCOmxILPortManager@@@Z @ 2 NONAME ; void COmxILCallbackManager::SetPortManager(class COmxILPortManager &) - ?DoRegisterTunnelCallback@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@KW4OMX_DIRTYPE@@PAXK@Z @ 3 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoRegisterTunnelCallback(unsigned long, enum OMX_DIRTYPE, void *, unsigned long) - ?SetConfig@COmxILConfigManager@@UAE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PBX@Z @ 4 NONAME ; enum OMX_ERRORTYPE COmxILConfigManager::SetConfig(enum OMX_INDEXTYPE, void const *) - ?NewL@COmxILFsm@@SAPAV1@AAVCOmxILComponent@@AAVCOmxILProcessingFunction@@AAVCOmxILPortManager@@AAVCOmxILConfigManager@@AAVMOmxILCallbackManagerIf@@@Z @ 5 NONAME ; class COmxILFsm * COmxILFsm::NewL(class COmxILComponent &, class COmxILProcessingFunction &, class COmxILPortManager &, class COmxILConfigManager &, class MOmxILCallbackManagerIf &) - ?SetTransitionToDisabledCompleted@COmxILPort@@UAEXXZ @ 6 NONAME ; void COmxILPort::SetTransitionToDisabledCompleted(void) - ??0COmxILConfigManager@@IAE@AAVCOmxILPortManager@@@Z @ 7 NONAME ; COmxILConfigManager::COmxILConfigManager(class COmxILPortManager &) - ?GetParameter@COmxILOtherPort@@UBE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PAX@Z @ 8 NONAME ; enum OMX_ERRORTYPE COmxILOtherPort::GetParameter(enum OMX_INDEXTYPE, void *) const - ??1COmxILImagePort@@UAE@XZ @ 9 NONAME ; COmxILImagePort::~COmxILImagePort(void) - ?StoreBufferMark@COmxILPort@@IAE?AW4OMX_ERRORTYPE@@AAPAX0@Z @ 10 NONAME ; enum OMX_ERRORTYPE COmxILPort::StoreBufferMark(void * &, void * &) - ??1COmxILCallbackManager@@UAE@XZ @ 11 NONAME ; COmxILCallbackManager::~COmxILCallbackManager(void) - ?ClockBufferDoneNotification@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@PAUOMX_BUFFERHEADERTYPE@@KW4OMX_DIRTYPE@@@Z @ 12 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::ClockBufferDoneNotification(struct OMX_BUFFERHEADERTYPE *, unsigned long, enum OMX_DIRTYPE) - ?RegisterILClientCallbacks@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@PBUOMX_CALLBACKTYPE@@PAX@Z @ 13 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::RegisterILClientCallbacks(struct OMX_CALLBACKTYPE const *, void *) - ?DoCommandCompleteNotification@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@W4OMX_COMMANDTYPE@@K@Z @ 14 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoCommandCompleteNotification(enum OMX_COMMANDTYPE, unsigned long) - ?DoTransitionCompleteNotification@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@W4OMX_STATETYPE@@@Z @ 15 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoTransitionCompleteNotification(enum OMX_STATETYPE) - ?SetTransitionToDisabled@COmxILPort@@UAEXXZ @ 16 NONAME ; void COmxILPort::SetTransitionToDisabled(void) - ?IsClockComponentAvailable@COmxILClientClockPort@@UBE?AW4OMX_BOOL@@XZ @ 17 NONAME ; enum OMX_BOOL COmxILClientClockPort::IsClockComponentAvailable(void) const - ?SymbianErrorToGetHandleError@COmxILComponent@@SA?AW4OMX_ERRORTYPE@@H@Z @ 18 NONAME ; enum OMX_ERRORTYPE COmxILComponent::SymbianErrorToGetHandleError(int) - ?SetConfig@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PBXAAH@Z @ 19 NONAME ; enum OMX_ERRORTYPE COmxILPort::SetConfig(enum OMX_INDEXTYPE, void const *, int &) - ?GetParameter@COmxILPort@@UBE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PAX@Z @ 20 NONAME ; enum OMX_ERRORTYPE COmxILPort::GetParameter(enum OMX_INDEXTYPE, void *) const - ?SetPortManager@COmxILInContextCallbackManager@@UAEXAAVCOmxILPortManager@@@Z @ 21 NONAME ; void COmxILInContextCallbackManager::SetPortManager(class COmxILPortManager &) - ?GetLocalOmxConfigIndexes@COmxILPort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 22 NONAME ; enum OMX_ERRORTYPE COmxILPort::GetLocalOmxConfigIndexes(class RArray &) const - ?GetWallTime@COmxILClientClockPort@@UBE?AW4OMX_ERRORTYPE@@AA_J@Z @ 23 NONAME ; enum OMX_ERRORTYPE COmxILClientClockPort::GetWallTime(long long &) const - ?SetBufferSent@COmxILPort@@UAEHPAUOMX_BUFFERHEADERTYPE@@AAH@Z @ 24 NONAME ; int COmxILPort::SetBufferSent(struct OMX_BUFFERHEADERTYPE *, int &) - ?ComponentRoleIndication@COmxILProcessingFunction@@UAE?AW4OMX_ERRORTYPE@@I@Z @ 25 NONAME ; enum OMX_ERRORTYPE COmxILProcessingFunction::ComponentRoleIndication(unsigned int) - ??0TOmxILCommonPortData@@QAE@TOMX_VERSIONTYPE@@KW4OMX_DIRTYPE@@KKW4OMX_PORTDOMAINTYPE@@W4OMX_BOOL@@KW4OMX_BUFFERSUPPLIERTYPE@@K@Z @ 26 NONAME ; TOmxILCommonPortData::TOmxILCommonPortData(union OMX_VERSIONTYPE, unsigned long, enum OMX_DIRTYPE, unsigned long, unsigned long, enum OMX_PORTDOMAINTYPE, enum OMX_BOOL, unsigned long, enum OMX_BUFFERSUPPLIERTYPE, unsigned long) - ?DoOmxUseBuffer@COmxILPort@@MAE?AW4OMX_ERRORTYPE@@PAXPAPAUOMX_BUFFERHEADERTYPE@@K00KPAE@Z @ 27 NONAME ; enum OMX_ERRORTYPE COmxILPort::DoOmxUseBuffer(void *, struct OMX_BUFFERHEADERTYPE * *, unsigned long, void *, void *, unsigned long, unsigned char *) - ?EventNotification@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@W4OMX_EVENTTYPE@@KKPAD@Z @ 28 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::EventNotification(enum OMX_EVENTTYPE, unsigned long, unsigned long, char *) - ?SetTransitionToEnabledCompleted@COmxILPort@@UAEXXZ @ 29 NONAME ; void COmxILPort::SetTransitionToEnabledCompleted(void) - ?GetConfig@COmxILConfigManager@@UBE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PAX@Z @ 30 NONAME ; enum OMX_ERRORTYPE COmxILConfigManager::GetConfig(enum OMX_INDEXTYPE, void *) const - ?SetParameter@COmxILConfigManager@@UAE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PBXW4OMX_BOOL@@@Z @ 31 NONAME ; enum OMX_ERRORTYPE COmxILConfigManager::SetParameter(enum OMX_INDEXTYPE, void const *, enum OMX_BOOL) - ?RegisterTunnelCallback@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@KW4OMX_DIRTYPE@@PAXK@Z @ 32 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::RegisterTunnelCallback(unsigned long, enum OMX_DIRTYPE, void *, unsigned long) - ?InitComponentL@COmxILComponent@@IAEXXZ @ 33 NONAME ; void COmxILComponent::InitComponentL(void) - ?RegisterComponentHandle@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@PAX@Z @ 34 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::RegisterComponentHandle(void *) - ?HandleInsufficientResources@XOmxILCallbackManagerIfImpl@@MAEXXZ @ 35 NONAME ; void XOmxILCallbackManagerIfImpl::HandleInsufficientResources(void) - ?DoRegisterILClientCallbacks@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@PBUOMX_CALLBACKTYPE@@PAX@Z @ 36 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoRegisterILClientCallbacks(struct OMX_CALLBACKTYPE const *, void *) - ?Compare@TBufferInfo@COmxILPort@@SAHABV12@0@Z @ 37 NONAME ; int COmxILPort::TBufferInfo::Compare(class COmxILPort::TBufferInfo const &, class COmxILPort::TBufferInfo const &) - ?RunL@COmxILCallbackManager@@UAEXXZ @ 38 NONAME ABSENT ; void COmxILCallbackManager::RunL(void) - ?SetParameter@COmxILVideoPort@@UAE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PBXAAH@Z @ 39 NONAME ; enum OMX_ERRORTYPE COmxILVideoPort::SetParameter(enum OMX_INDEXTYPE, void const *, int &) - ?RegisterBufferMarkPropagationPort@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@KK@Z @ 40 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::RegisterBufferMarkPropagationPort(unsigned long, unsigned long) - ?MediaTimeIndication@COmxILProcessingFunction@@UAE?AW4OMX_ERRORTYPE@@ABUOMX_TIME_MEDIATIMETYPE@@@Z @ 41 NONAME ; enum OMX_ERRORTYPE COmxILProcessingFunction::MediaTimeIndication(struct OMX_TIME_MEDIATIMETYPE const &) - ?StoreBufferMark@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@PBUOMX_MARKTYPE@@@Z @ 42 NONAME ; enum OMX_ERRORTYPE COmxILPort::StoreBufferMark(struct OMX_MARKTYPE const *) - ?GetLocalOmxParamIndexes@COmxILAudioPort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 43 NONAME ; enum OMX_ERRORTYPE COmxILAudioPort::GetLocalOmxParamIndexes(class RArray &) const - ??0COmxILPort@@IAE@ABVTOmxILCommonPortData@@@Z @ 44 NONAME ; COmxILPort::COmxILPort(class TOmxILCommonPortData const &) - ??1XOmxILCallbackManagerIfImpl@@MAE@XZ @ 45 NONAME ; XOmxILCallbackManagerIfImpl::~XOmxILCallbackManagerIfImpl(void) - ?RegisterBufferMarkPropagationPort@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@KK@Z @ 46 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::RegisterBufferMarkPropagationPort(unsigned long, unsigned long) - ??0COmxILImagePort@@IAE@ABVTOmxILCommonPortData@@ABV?$RArray@W4OMX_IMAGE_CODINGTYPE@@@@ABV?$RArray@W4OMX_COLOR_FORMATTYPE@@@@@Z @ 47 NONAME ; COmxILImagePort::COmxILImagePort(class TOmxILCommonPortData const &, class RArray const &, class RArray const &) - ?GetExtensionIndex@COmxILPort@@UBE?AW4OMX_ERRORTYPE@@PADPAW4OMX_INDEXTYPE@@@Z @ 48 NONAME ; enum OMX_ERRORTYPE COmxILPort::GetExtensionIndex(char *, enum OMX_INDEXTYPE *) const - ?NewL@COmxILCallbackManager@@SAPAV1@PAX0PAUOMX_CALLBACKTYPE@@@Z @ 49 NONAME ; class COmxILCallbackManager * COmxILCallbackManager::NewL(void *, void *, struct OMX_CALLBACKTYPE *) - ??1COmxILPort@@UAE@XZ @ 50 NONAME ; COmxILPort::~COmxILPort(void) - ?PortSettingsChangeNotification@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@KIABVTDesC8@@@Z @ 51 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::PortSettingsChangeNotification(unsigned long, unsigned int, class TDesC8 const &) - ??1COmxILVideoPort@@UAE@XZ @ 52 NONAME ; COmxILVideoPort::~COmxILVideoPort(void) - ?SetFsm@COmxILCallbackManager@@UAEXAAVCOmxILFsm@@@Z @ 53 NONAME ; void COmxILCallbackManager::SetFsm(class COmxILFsm &) - ?ErrorEventNotification@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@W42@@Z @ 54 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::ErrorEventNotification(enum OMX_ERRORTYPE) - ?SetStartTime@COmxILClientClockPort@@UBE?AW4OMX_ERRORTYPE@@_J@Z @ 55 NONAME ; enum OMX_ERRORTYPE COmxILClientClockPort::SetStartTime(long long) const - ?GetParameter@COmxILVideoPort@@UBE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PAX@Z @ 56 NONAME ; enum OMX_ERRORTYPE COmxILVideoPort::GetParameter(enum OMX_INDEXTYPE, void *) const - ?BufferDoneNotification@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@PAUOMX_BUFFERHEADERTYPE@@KW4OMX_DIRTYPE@@@Z @ 57 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::BufferDoneNotification(struct OMX_BUFFERHEADERTYPE *, unsigned long, enum OMX_DIRTYPE) - ?GetComponentVersion@COmxILConfigManager@@UBE?AW4OMX_ERRORTYPE@@PADPATOMX_VERSIONTYPE@@1PAY0IA@E@Z @ 58 NONAME ; enum OMX_ERRORTYPE COmxILConfigManager::GetComponentVersion(char *, union OMX_VERSIONTYPE *, union OMX_VERSIONTYPE *, unsigned char [128] *) const - ?DoEventNotification@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@W4OMX_EVENTTYPE@@KKPAD@Z @ 59 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoEventNotification(enum OMX_EVENTTYPE, unsigned long, unsigned long, char *) - ?DoCancel@COmxILCallbackManager@@UAEXXZ @ 60 NONAME ABSENT ; void COmxILCallbackManager::DoCancel(void) - ?SetParameter@COmxILOtherPort@@UAE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PBXAAH@Z @ 61 NONAME ; enum OMX_ERRORTYPE COmxILOtherPort::SetParameter(enum OMX_INDEXTYPE, void const *, int &) - ??1COmxILAudioPort@@UAE@XZ @ 62 NONAME ; COmxILAudioPort::~COmxILAudioPort(void) - ?RegisterComponentHandle@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@PAX@Z @ 63 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::RegisterComponentHandle(void *) - ?SetParameter@COmxILAudioPort@@UAE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PBXAAH@Z @ 64 NONAME ; enum OMX_ERRORTYPE COmxILAudioPort::SetParameter(enum OMX_INDEXTYPE, void const *, int &) - ?DoRegisterComponentHandle@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@PAX@Z @ 65 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoRegisterComponentHandle(void *) - ?PortSettingsChangeNotification@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@KIABVTDesC8@@@Z @ 66 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::PortSettingsChangeNotification(unsigned long, unsigned int, class TDesC8 const &) - ?SetVideoReference@COmxILClientClockPort@@UBE?AW4OMX_ERRORTYPE@@_J@Z @ 67 NONAME ; enum OMX_ERRORTYPE COmxILClientClockPort::SetVideoReference(long long) const - ?GetLocalOmxConfigIndexes@COmxILAudioPort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 68 NONAME ; enum OMX_ERRORTYPE COmxILAudioPort::GetLocalOmxConfigIndexes(class RArray &) const - ??1COmxILConfigManager@@UAE@XZ @ 69 NONAME ; COmxILConfigManager::~COmxILConfigManager(void) - ?ConstructL@COmxILConfigManager@@IAEXABVTDesC8@@ABTOMX_VERSIONTYPE@@ABV?$RPointerArray@VTDesC8@@@@@Z @ 70 NONAME ; void COmxILConfigManager::ConstructL(class TDesC8 const &, union OMX_VERSIONTYPE const &, class RPointerArray const &) - ?RegisterILClientCallbacks@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@PBUOMX_CALLBACKTYPE@@PAX@Z @ 71 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::RegisterILClientCallbacks(struct OMX_CALLBACKTYPE const *, void *) - ?NewL@COmxILClientClockPort@@SAPAV1@ABVTOmxILCommonPortData@@ABV?$RArray@W4OMX_OTHER_FORMATTYPE@@@@@Z @ 72 NONAME ; class COmxILClientClockPort * COmxILClientClockPort::NewL(class TOmxILCommonPortData const &, class RArray const &) - ?GetExtensionIndex@COmxILConfigManager@@UBE?AW4OMX_ERRORTYPE@@PADPAW4OMX_INDEXTYPE@@@Z @ 73 NONAME ; enum OMX_ERRORTYPE COmxILConfigManager::GetExtensionIndex(char *, enum OMX_INDEXTYPE *) const - ?GetLocalOmxParamIndexes@COmxILVideoPort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 74 NONAME ; enum OMX_ERRORTYPE COmxILVideoPort::GetLocalOmxParamIndexes(class RArray &) const - ?DoBufferAllocation@COmxILPort@@MAE?AW4OMX_ERRORTYPE@@KAAPAEAAPAX1PAX@Z @ 75 NONAME ; enum OMX_ERRORTYPE COmxILPort::DoBufferAllocation(unsigned long, unsigned char * &, void * &, void * &, void *) - ?EventNotification@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@W4OMX_EVENTTYPE@@KKPAD@Z @ 76 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::EventNotification(enum OMX_EVENTTYPE, unsigned long, unsigned long, char *) - ?GetClockState@COmxILClientClockPort@@UBE?AW4OMX_ERRORTYPE@@AAUOMX_TIME_CONFIG_CLOCKSTATETYPE@@@Z @ 77 NONAME ; enum OMX_ERRORTYPE COmxILClientClockPort::GetClockState(struct OMX_TIME_CONFIG_CLOCKSTATETYPE &) const - ??0COmxILComponent@@IAE@XZ @ 78 NONAME ; COmxILComponent::COmxILComponent(void) - ?DoSetPortManager@XOmxILCallbackManagerIfImpl@@MAEXAAVCOmxILPortManager@@@Z @ 79 NONAME ; void XOmxILCallbackManagerIfImpl::DoSetPortManager(class COmxILPortManager &) - ?FreeTunnel@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@AAH@Z @ 80 NONAME ; enum OMX_ERRORTYPE COmxILPort::FreeTunnel(int &) - ?RegisterTunnelCallback@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@KW4OMX_DIRTYPE@@PAXK@Z @ 81 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::RegisterTunnelCallback(unsigned long, enum OMX_DIRTYPE, void *, unsigned long) - ?HasAllBuffersAtHome@COmxILPort@@UBEHXZ @ 82 NONAME ; int COmxILPort::HasAllBuffersAtHome(void) const - ?SetComponentRoleDefaults@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@I@Z @ 83 NONAME ; enum OMX_ERRORTYPE COmxILPort::SetComponentRoleDefaults(unsigned int) - ?BufferDoneNotification@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@PAUOMX_BUFFERHEADERTYPE@@KW4OMX_DIRTYPE@@@Z @ 84 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::BufferDoneNotification(struct OMX_BUFFERHEADERTYPE *, unsigned long, enum OMX_DIRTYPE) - ?GetParameter@COmxILAudioPort@@UBE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PAX@Z @ 85 NONAME ; enum OMX_ERRORTYPE COmxILAudioPort::GetParameter(enum OMX_INDEXTYPE, void *) const - ?GetParameter@COmxILImagePort@@UBE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PAX@Z @ 86 NONAME ; enum OMX_ERRORTYPE COmxILImagePort::GetParameter(enum OMX_INDEXTYPE, void *) const - ?NewL@COmxILPortManager@@SAPAV1@AAVCOmxILProcessingFunction@@AAVMOmxILCallbackManagerIf@@ABTOMX_VERSIONTYPE@@KKKKKKKKW4OMX_BOOL@@@Z @ 87 NONAME ; class COmxILPortManager * COmxILPortManager::NewL(class COmxILProcessingFunction &, class MOmxILCallbackManagerIf &, union OMX_VERSIONTYPE const &, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, unsigned long, enum OMX_BOOL) - ?GetMediaTime@COmxILClientClockPort@@UBE?AW4OMX_ERRORTYPE@@AA_J@Z @ 88 NONAME ; enum OMX_ERRORTYPE COmxILClientClockPort::GetMediaTime(long long &) const - ?PopulateTunnel@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@AAH@Z @ 89 NONAME ; enum OMX_ERRORTYPE COmxILPort::PopulateTunnel(int &) - ?AddPort@COmxILPortManager@@QAEHPBVCOmxILPort@@W4OMX_DIRTYPE@@@Z @ 90 NONAME ; int COmxILPortManager::AddPort(class COmxILPort const *, enum OMX_DIRTYPE) - ?GetLocalOmxParamIndexes@COmxILImagePort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 91 NONAME ; enum OMX_ERRORTYPE COmxILImagePort::GetLocalOmxParamIndexes(class RArray &) const - ?SetAudioReference@COmxILClientClockPort@@UBE?AW4OMX_ERRORTYPE@@_J@Z @ 92 NONAME ; enum OMX_ERRORTYPE COmxILClientClockPort::SetAudioReference(long long) const - ?TransitionCompleteNotification@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@W4OMX_STATETYPE@@@Z @ 93 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::TransitionCompleteNotification(enum OMX_STATETYPE) - ?CommandCompleteNotification@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@W4OMX_COMMANDTYPE@@K@Z @ 94 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::CommandCompleteNotification(enum OMX_COMMANDTYPE, unsigned long) - ?CommandCompleteNotification@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@W4OMX_COMMANDTYPE@@K@Z @ 95 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::CommandCompleteNotification(enum OMX_COMMANDTYPE, unsigned long) - ?CheckOmxStructSizeAndVersion@TOmxILUtil@@SA?AW4OMX_ERRORTYPE@@PAXK@Z @ 96 NONAME ; enum OMX_ERRORTYPE TOmxILUtil::CheckOmxStructSizeAndVersion(void *, unsigned long) - ?IsBufferAtHome@COmxILPort@@UBEHPAUOMX_BUFFERHEADERTYPE@@@Z @ 97 NONAME ; int COmxILPort::IsBufferAtHome(struct OMX_BUFFERHEADERTYPE *) const - ?ConstructL@COmxILAudioPort@@MAEXABV?$RArray@W4OMX_AUDIO_CODINGTYPE@@@@@Z @ 98 NONAME ; void COmxILAudioPort::ConstructL(class RArray const &) - ?GetLocalOmxConfigIndexes@COmxILVideoPort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 99 NONAME ; enum OMX_ERRORTYPE COmxILVideoPort::GetLocalOmxConfigIndexes(class RArray &) const - ?ClockBufferDoneNotification@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@PAUOMX_BUFFERHEADERTYPE@@KW4OMX_DIRTYPE@@@Z @ 100 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::ClockBufferDoneNotification(struct OMX_BUFFERHEADERTYPE *, unsigned long, enum OMX_DIRTYPE) - ??0COmxILProcessingFunction@@IAE@AAVMOmxILCallbackNotificationIf@@@Z @ 101 NONAME ; COmxILProcessingFunction::COmxILProcessingFunction(class MOmxILCallbackNotificationIf &) - ?DoPortReconfiguration@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@IABVTDesC8@@AAW4OMX_EVENTTYPE@@@Z @ 102 NONAME ; enum OMX_ERRORTYPE COmxILPort::DoPortReconfiguration(unsigned int, class TDesC8 const &, enum OMX_EVENTTYPE &) - ?DoPortSettingsChangeNotification@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@KIABVTDesC8@@@Z @ 103 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoPortSettingsChangeNotification(unsigned long, unsigned int, class TDesC8 const &) - ?PopulateBuffer@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@PAPAUOMX_BUFFERHEADERTYPE@@PAXKPAEAAH@Z @ 104 NONAME ; enum OMX_ERRORTYPE COmxILPort::PopulateBuffer(struct OMX_BUFFERHEADERTYPE * *, void *, unsigned long, unsigned char *, int &) - ??0COmxILVideoPort@@IAE@ABVTOmxILCommonPortData@@ABV?$RArray@W4OMX_VIDEO_CODINGTYPE@@@@ABV?$RArray@W4OMX_COLOR_FORMATTYPE@@@@@Z @ 105 NONAME ; COmxILVideoPort::COmxILVideoPort(class TOmxILCommonPortData const &, class RArray const &, class RArray const &) - ??1COmxILOtherPort@@UAE@XZ @ 106 NONAME ; COmxILOtherPort::~COmxILOtherPort(void) - ??1COmxILInContextCallbackManager@@UAE@XZ @ 107 NONAME ; COmxILInContextCallbackManager::~COmxILInContextCallbackManager(void) - ?GetLocalOmxParamIndexes@COmxILPort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 108 NONAME ; enum OMX_ERRORTYPE COmxILPort::GetLocalOmxParamIndexes(class RArray &) const - ?CleanUpPort@COmxILPort@@IAEXXZ @ 109 NONAME ; void COmxILPort::CleanUpPort(void) - ?FreeBuffer@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@PAUOMX_BUFFERHEADERTYPE@@AAH@Z @ 110 NONAME ; enum OMX_ERRORTYPE COmxILPort::FreeBuffer(struct OMX_BUFFERHEADERTYPE *, int &) - ?TunnelRequest@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@PAXKPAUOMX_TUNNELSETUPTYPE@@@Z @ 111 NONAME ; enum OMX_ERRORTYPE COmxILPort::TunnelRequest(void *, unsigned long, struct OMX_TUNNELSETUPTYPE *) - ?GetParameter@COmxILConfigManager@@UBE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PAX@Z @ 112 NONAME ; enum OMX_ERRORTYPE COmxILConfigManager::GetParameter(enum OMX_INDEXTYPE, void *) const - ?SetFsm@COmxILInContextCallbackManager@@UAEXAAVCOmxILFsm@@@Z @ 113 NONAME ; void COmxILInContextCallbackManager::SetFsm(class COmxILFsm &) - ?ConstructL@COmxILOtherPort@@MAEXABV?$RArray@W4OMX_OTHER_FORMATTYPE@@@@@Z @ 114 NONAME ; void COmxILOtherPort::ConstructL(class RArray const &) - ?GetLocalOmxConfigIndexes@COmxILImagePort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 115 NONAME ; enum OMX_ERRORTYPE COmxILImagePort::GetLocalOmxConfigIndexes(class RArray &) const - ?ClearBufferContents@TOmxILUtil@@SAXPAUOMX_BUFFERHEADERTYPE@@@Z @ 116 NONAME ; void TOmxILUtil::ClearBufferContents(struct OMX_BUFFERHEADERTYPE *) - ?SetParameter@COmxILImagePort@@UAE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PBXAAH@Z @ 117 NONAME ; enum OMX_ERRORTYPE COmxILImagePort::SetParameter(enum OMX_INDEXTYPE, void const *, int &) - ?DoBufferDoneNotification@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@PAUOMX_BUFFERHEADERTYPE@@KW4OMX_DIRTYPE@@@Z @ 118 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoBufferDoneNotification(struct OMX_BUFFERHEADERTYPE *, unsigned long, enum OMX_DIRTYPE) - ?GetLocalOmxParamIndexes@COmxILOtherPort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 119 NONAME ; enum OMX_ERRORTYPE COmxILOtherPort::GetLocalOmxParamIndexes(class RArray &) const - ?TransitionCompleteNotification@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@W4OMX_STATETYPE@@@Z @ 120 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::TransitionCompleteNotification(enum OMX_STATETYPE) - ?BufferRemovalIndication@COmxILInContextCallbackManager@@UAEHPAUOMX_BUFFERHEADERTYPE@@W4OMX_DIRTYPE@@@Z @ 121 NONAME ; int COmxILInContextCallbackManager::BufferRemovalIndication(struct OMX_BUFFERHEADERTYPE *, enum OMX_DIRTYPE) - ?SignalOrPropagateBufferMarks@XOmxILCallbackManagerIfImpl@@MAEXPAUOMX_BUFFERHEADERTYPE@@K@Z @ 122 NONAME ; void XOmxILCallbackManagerIfImpl::SignalOrPropagateBufferMarks(struct OMX_BUFFERHEADERTYPE *, unsigned long) - ?DeregisterTunnelCallback@COmxILInContextCallbackManager@@UAE?AW4OMX_ERRORTYPE@@K@Z @ 123 NONAME ; enum OMX_ERRORTYPE COmxILInContextCallbackManager::DeregisterTunnelCallback(unsigned long) - ?DoBufferUnwrapping@COmxILPort@@MAEXPAX000@Z @ 124 NONAME ; void COmxILPort::DoBufferUnwrapping(void *, void *, void *, void *) - ?ComponentRoleEnum@COmxILConfigManager@@QBE?AW4OMX_ERRORTYPE@@PAEK@Z @ 125 NONAME ; enum OMX_ERRORTYPE COmxILConfigManager::ComponentRoleEnum(unsigned char *, unsigned long) const - ?DoRegisterBufferMarkPropagationPort@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@KK@Z @ 126 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoRegisterBufferMarkPropagationPort(unsigned long, unsigned long) - ??0COmxILOtherPort@@IAE@ABVTOmxILCommonPortData@@@Z @ 127 NONAME ; COmxILOtherPort::COmxILOtherPort(class TOmxILCommonPortData const &) - ?MediaTimeRequest@COmxILClientClockPort@@UBE?AW4OMX_ERRORTYPE@@PAX_J1@Z @ 128 NONAME ; enum OMX_ERRORTYPE COmxILClientClockPort::MediaTimeRequest(void *, long long, long long) const - ?GetConfig@COmxILPort@@UBE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PAX@Z @ 129 NONAME ; enum OMX_ERRORTYPE COmxILPort::GetConfig(enum OMX_INDEXTYPE, void *) const - ??0XOmxILCallbackManagerIfImpl@@IAE@PAX0PAUOMX_CALLBACKTYPE@@@Z @ 130 NONAME ; XOmxILCallbackManagerIfImpl::XOmxILCallbackManagerIfImpl(void *, void *, struct OMX_CALLBACKTYPE *) - ??0COmxILAudioPort@@IAE@ABVTOmxILCommonPortData@@@Z @ 131 NONAME ; COmxILAudioPort::COmxILAudioPort(class TOmxILCommonPortData const &) - ?DoErrorEventNotification@XOmxILCallbackManagerIfImpl@@MAE?AW4OMX_ERRORTYPE@@W42@@Z @ 132 NONAME ; enum OMX_ERRORTYPE XOmxILCallbackManagerIfImpl::DoErrorEventNotification(enum OMX_ERRORTYPE) - ?DeregisterTunnelCallback@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@K@Z @ 133 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::DeregisterTunnelCallback(unsigned long) - ??1COmxILProcessingFunction@@UAE@XZ @ 134 NONAME ; COmxILProcessingFunction::~COmxILProcessingFunction(void) - ?NewL@COmxILConfigManager@@SAPAV1@AAVCOmxILPortManager@@ABVTDesC8@@ABTOMX_VERSIONTYPE@@ABV?$RPointerArray@VTDesC8@@@@@Z @ 135 NONAME ; class COmxILConfigManager * COmxILConfigManager::NewL(class COmxILPortManager &, class TDesC8 const &, union OMX_VERSIONTYPE const &, class RPointerArray const &) - ?NewL@COmxILInContextCallbackManager@@SAPAV1@PAX0PAUOMX_CALLBACKTYPE@@@Z @ 136 NONAME ; class COmxILInContextCallbackManager * COmxILInContextCallbackManager::NewL(void *, void *, struct OMX_CALLBACKTYPE *) - ?SetParameter@COmxILPort@@UAE?AW4OMX_ERRORTYPE@@W4OMX_INDEXTYPE@@PBXAAH@Z @ 137 NONAME ; enum OMX_ERRORTYPE COmxILPort::SetParameter(enum OMX_INDEXTYPE, void const *, int &) - ?SetTransitionToEnabled@COmxILPort@@UAEXXZ @ 138 NONAME ; void COmxILPort::SetTransitionToEnabled(void) - ??1COmxILComponent@@UAE@XZ @ 139 NONAME ; COmxILComponent::~COmxILComponent(void) - ?DoBufferWrapping@COmxILPort@@MAE?AW4OMX_ERRORTYPE@@KPAEAAPAX1PAX@Z @ 140 NONAME ; enum OMX_ERRORTYPE COmxILPort::DoBufferWrapping(unsigned long, unsigned char *, void * &, void * &, void *) - ?BufferRemovalIndication@COmxILCallbackManager@@UAEHPAUOMX_BUFFERHEADERTYPE@@W4OMX_DIRTYPE@@@Z @ 141 NONAME ; int COmxILCallbackManager::BufferRemovalIndication(struct OMX_BUFFERHEADERTYPE *, enum OMX_DIRTYPE) - ?ErrorEventNotification@COmxILCallbackManager@@UAE?AW4OMX_ERRORTYPE@@W42@@Z @ 142 NONAME ; enum OMX_ERRORTYPE COmxILCallbackManager::ErrorEventNotification(enum OMX_ERRORTYPE) - ?SetBufferReturned@COmxILPort@@UAEHPAUOMX_BUFFERHEADERTYPE@@@Z @ 143 NONAME ; int COmxILPort::SetBufferReturned(struct OMX_BUFFERHEADERTYPE *) - ?DoBufferDeallocation@COmxILPort@@MAEXPAX000@Z @ 144 NONAME ; void COmxILPort::DoBufferDeallocation(void *, void *, void *, void *) - ?GetLocalOmxConfigIndexes@COmxILOtherPort@@UBE?AW4OMX_ERRORTYPE@@AAV?$RArray@I@@@Z @ 145 NONAME ; enum OMX_ERRORTYPE COmxILOtherPort::GetLocalOmxConfigIndexes(class RArray &) const - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/eabi/omxilcomponentcommon.def --- a/omxil/omxilcomponentcommon/eabi/omxilcomponentcommon.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,274 +0,0 @@ -EXPORTS - _ZN10COmxILPort10FreeBufferEP20OMX_BUFFERHEADERTYPERi @ 1 NONAME - _ZN10COmxILPort10FreeTunnelERi @ 2 NONAME - _ZN10COmxILPort11CleanUpPortEv @ 3 NONAME - _ZN10COmxILPort11TBufferInfo7CompareERKS0_S2_ @ 4 NONAME - _ZN10COmxILPort12SetParameterE13OMX_INDEXTYPEPKvRi @ 5 NONAME - _ZN10COmxILPort13SetBufferSentEP20OMX_BUFFERHEADERTYPERi @ 6 NONAME - _ZN10COmxILPort13TunnelRequestEPvmP19OMX_TUNNELSETUPTYPE @ 7 NONAME - _ZN10COmxILPort14DoOmxUseBufferEPvPP20OMX_BUFFERHEADERTYPEmS0_S0_mPh @ 8 NONAME - _ZN10COmxILPort14PopulateBufferEPP20OMX_BUFFERHEADERTYPEPvmPhRi @ 9 NONAME - _ZN10COmxILPort14PopulateTunnelERi @ 10 NONAME - _ZN10COmxILPort15StoreBufferMarkEPK12OMX_MARKTYPE @ 11 NONAME - _ZN10COmxILPort15StoreBufferMarkERPvS1_ @ 12 NONAME - _ZN10COmxILPort16DoBufferWrappingEmPhRPvS2_S1_ @ 13 NONAME - _ZN10COmxILPort17SetBufferReturnedEP20OMX_BUFFERHEADERTYPE @ 14 NONAME - _ZN10COmxILPort18DoBufferAllocationEmRPhRPvS3_S2_ @ 15 NONAME - _ZN10COmxILPort18DoBufferUnwrappingEPvS0_S0_S0_ @ 16 NONAME - _ZN10COmxILPort20DoBufferDeallocationEPvS0_S0_S0_ @ 17 NONAME - _ZN10COmxILPort21DoPortReconfigurationEjRK6TDesC8R13OMX_EVENTTYPE @ 18 NONAME - _ZN10COmxILPort22SetTransitionToEnabledEv @ 19 NONAME - _ZN10COmxILPort23SetTransitionToDisabledEv @ 20 NONAME - _ZN10COmxILPort24SetComponentRoleDefaultsEj @ 21 NONAME - _ZN10COmxILPort31SetTransitionToEnabledCompletedEv @ 22 NONAME - _ZN10COmxILPort32SetTransitionToDisabledCompletedEv @ 23 NONAME - _ZN10COmxILPort9SetConfigE13OMX_INDEXTYPEPKvRi @ 24 NONAME - _ZN10COmxILPortC2ERK20TOmxILCommonPortData @ 25 NONAME - _ZN10COmxILPortD0Ev @ 26 NONAME - _ZN10COmxILPortD1Ev @ 27 NONAME - _ZN10COmxILPortD2Ev @ 28 NONAME - _ZN10TOmxILUtil19ClearBufferContentsEP20OMX_BUFFERHEADERTYPE @ 29 NONAME - _ZN10TOmxILUtil28CheckOmxStructSizeAndVersionEPvm @ 30 NONAME - _ZN15COmxILAudioPort10ConstructLERK6RArrayI20OMX_AUDIO_CODINGTYPEE @ 31 NONAME - _ZN15COmxILAudioPort12SetParameterE13OMX_INDEXTYPEPKvRi @ 32 NONAME - _ZN15COmxILAudioPortC2ERK20TOmxILCommonPortData @ 33 NONAME - _ZN15COmxILAudioPortD0Ev @ 34 NONAME - _ZN15COmxILAudioPortD1Ev @ 35 NONAME - _ZN15COmxILAudioPortD2Ev @ 36 NONAME - _ZN15COmxILComponent14InitComponentLEv @ 37 NONAME - _ZN15COmxILComponent28SymbianErrorToGetHandleErrorEi @ 38 NONAME - _ZN15COmxILComponentC1Ev @ 39 NONAME - _ZN15COmxILComponentC2Ev @ 40 NONAME - _ZN15COmxILComponentD0Ev @ 41 NONAME - _ZN15COmxILComponentD1Ev @ 42 NONAME - _ZN15COmxILComponentD2Ev @ 43 NONAME - _ZN15COmxILImagePort12SetParameterE13OMX_INDEXTYPEPKvRi @ 44 NONAME - _ZN15COmxILImagePortC2ERK20TOmxILCommonPortDataRK6RArrayI20OMX_IMAGE_CODINGTYPEERKS3_I20OMX_COLOR_FORMATTYPEE @ 45 NONAME - _ZN15COmxILImagePortD0Ev @ 46 NONAME - _ZN15COmxILImagePortD1Ev @ 47 NONAME - _ZN15COmxILImagePortD2Ev @ 48 NONAME - _ZN15COmxILOtherPort10ConstructLERK6RArrayI20OMX_OTHER_FORMATTYPEE @ 49 NONAME - _ZN15COmxILOtherPort12SetParameterE13OMX_INDEXTYPEPKvRi @ 50 NONAME - _ZN15COmxILOtherPortC2ERK20TOmxILCommonPortData @ 51 NONAME - _ZN15COmxILOtherPortD0Ev @ 52 NONAME - _ZN15COmxILOtherPortD1Ev @ 53 NONAME - _ZN15COmxILOtherPortD2Ev @ 54 NONAME - _ZN15COmxILVideoPort12SetParameterE13OMX_INDEXTYPEPKvRi @ 55 NONAME - _ZN15COmxILVideoPortC2ERK20TOmxILCommonPortDataRK6RArrayI20OMX_VIDEO_CODINGTYPEERKS3_I20OMX_COLOR_FORMATTYPEE @ 56 NONAME - _ZN15COmxILVideoPortD0Ev @ 57 NONAME - _ZN15COmxILVideoPortD1Ev @ 58 NONAME - _ZN15COmxILVideoPortD2Ev @ 59 NONAME - _ZN17COmxILPortManager4NewLER24COmxILProcessingFunctionR23MOmxILCallbackManagerIfRK15OMX_VERSIONTYPEmmmmmmmm8OMX_BOOL @ 60 NONAME - _ZN17COmxILPortManager7AddPortEPK10COmxILPort11OMX_DIRTYPE @ 61 NONAME - _ZN19COmxILConfigManager10ConstructLERK6TDesC8RK15OMX_VERSIONTYPERK13RPointerArrayIS0_E @ 62 NONAME - _ZN19COmxILConfigManager12SetParameterE13OMX_INDEXTYPEPKv8OMX_BOOL @ 63 NONAME - _ZN19COmxILConfigManager4NewLER17COmxILPortManagerRK6TDesC8RK15OMX_VERSIONTYPERK13RPointerArrayIS2_E @ 64 NONAME - _ZN19COmxILConfigManager9SetConfigE13OMX_INDEXTYPEPKv @ 65 NONAME - _ZN19COmxILConfigManagerC1ER17COmxILPortManager @ 66 NONAME - _ZN19COmxILConfigManagerC2ER17COmxILPortManager @ 67 NONAME - _ZN19COmxILConfigManagerD0Ev @ 68 NONAME - _ZN19COmxILConfigManagerD1Ev @ 69 NONAME - _ZN19COmxILConfigManagerD2Ev @ 70 NONAME - _ZN20TOmxILCommonPortDataC1E15OMX_VERSIONTYPEm11OMX_DIRTYPEmm18OMX_PORTDOMAINTYPE8OMX_BOOLm22OMX_BUFFERSUPPLIERTYPEm @ 71 NONAME - _ZN20TOmxILCommonPortDataC2E15OMX_VERSIONTYPEm11OMX_DIRTYPEmm18OMX_PORTDOMAINTYPE8OMX_BOOLm22OMX_BUFFERSUPPLIERTYPEm @ 72 NONAME - _ZN21COmxILCallbackManager14SetPortManagerER17COmxILPortManager @ 73 NONAME - _ZN21COmxILCallbackManager17EventNotificationE13OMX_EVENTTYPEmmPc @ 74 NONAME - _ZN21COmxILCallbackManager22BufferDoneNotificationEP20OMX_BUFFERHEADERTYPEm11OMX_DIRTYPE @ 75 NONAME - _ZN21COmxILCallbackManager22ErrorEventNotificationE13OMX_ERRORTYPE @ 76 NONAME - _ZN21COmxILCallbackManager22RegisterTunnelCallbackEm11OMX_DIRTYPEPvm @ 77 NONAME - _ZN21COmxILCallbackManager23BufferRemovalIndicationEP20OMX_BUFFERHEADERTYPE11OMX_DIRTYPE @ 78 NONAME - _ZN21COmxILCallbackManager23RegisterComponentHandleEPv @ 79 NONAME - _ZN21COmxILCallbackManager24DeregisterTunnelCallbackEm @ 80 NONAME - _ZN21COmxILCallbackManager25RegisterILClientCallbacksEPK16OMX_CALLBACKTYPEPv @ 81 NONAME - _ZN21COmxILCallbackManager27ClockBufferDoneNotificationEP20OMX_BUFFERHEADERTYPEm11OMX_DIRTYPE @ 82 NONAME - _ZN21COmxILCallbackManager27CommandCompleteNotificationE15OMX_COMMANDTYPEm @ 83 NONAME - _ZN21COmxILCallbackManager30PortSettingsChangeNotificationEmjRK6TDesC8 @ 84 NONAME - _ZN21COmxILCallbackManager30TransitionCompleteNotificationE13OMX_STATETYPE @ 85 NONAME - _ZN21COmxILCallbackManager33RegisterBufferMarkPropagationPortEmm @ 86 NONAME - _ZN21COmxILCallbackManager4NewLEPvS0_P16OMX_CALLBACKTYPE @ 87 NONAME - _ZN21COmxILCallbackManager6SetFsmER9COmxILFsm @ 88 NONAME - _ZN21COmxILCallbackManagerD0Ev @ 89 NONAME - _ZN21COmxILCallbackManagerD1Ev @ 90 NONAME - _ZN21COmxILCallbackManagerD2Ev @ 91 NONAME - _ZN21COmxILClientClockPort4NewLERK20TOmxILCommonPortDataRK6RArrayI20OMX_OTHER_FORMATTYPEE @ 92 NONAME - _ZN24COmxILProcessingFunction19MediaTimeIndicationERK22OMX_TIME_MEDIATIMETYPE @ 93 NONAME - _ZN24COmxILProcessingFunction23ComponentRoleIndicationEj @ 94 NONAME - _ZN24COmxILProcessingFunctionC2ER28MOmxILCallbackNotificationIf @ 95 NONAME - _ZN24COmxILProcessingFunctionD0Ev @ 96 NONAME - _ZN24COmxILProcessingFunctionD1Ev @ 97 NONAME - _ZN24COmxILProcessingFunctionD2Ev @ 98 NONAME - _ZN27XOmxILCallbackManagerIfImpl16DoSetPortManagerER17COmxILPortManager @ 99 NONAME - _ZN27XOmxILCallbackManagerIfImpl19DoEventNotificationE13OMX_EVENTTYPEmmPc @ 100 NONAME - _ZN27XOmxILCallbackManagerIfImpl24DoBufferDoneNotificationEP20OMX_BUFFERHEADERTYPEm11OMX_DIRTYPE @ 101 NONAME - _ZN27XOmxILCallbackManagerIfImpl24DoErrorEventNotificationE13OMX_ERRORTYPE @ 102 NONAME - _ZN27XOmxILCallbackManagerIfImpl24DoRegisterTunnelCallbackEm11OMX_DIRTYPEPvm @ 103 NONAME - _ZN27XOmxILCallbackManagerIfImpl25DoRegisterComponentHandleEPv @ 104 NONAME - _ZN27XOmxILCallbackManagerIfImpl27DoRegisterILClientCallbacksEPK16OMX_CALLBACKTYPEPv @ 105 NONAME - _ZN27XOmxILCallbackManagerIfImpl27HandleInsufficientResourcesEv @ 106 NONAME - _ZN27XOmxILCallbackManagerIfImpl28SignalOrPropagateBufferMarksEP20OMX_BUFFERHEADERTYPEm @ 107 NONAME - _ZN27XOmxILCallbackManagerIfImpl29DoCommandCompleteNotificationE15OMX_COMMANDTYPEm @ 108 NONAME - _ZN27XOmxILCallbackManagerIfImpl32DoPortSettingsChangeNotificationEmjRK6TDesC8 @ 109 NONAME - _ZN27XOmxILCallbackManagerIfImpl32DoTransitionCompleteNotificationE13OMX_STATETYPE @ 110 NONAME - _ZN27XOmxILCallbackManagerIfImpl35DoRegisterBufferMarkPropagationPortEmm @ 111 NONAME - _ZN27XOmxILCallbackManagerIfImpl8DoSetFsmER9COmxILFsm @ 112 NONAME - _ZN27XOmxILCallbackManagerIfImplC1EPvS0_P16OMX_CALLBACKTYPE @ 113 NONAME - _ZN27XOmxILCallbackManagerIfImplC2EPvS0_P16OMX_CALLBACKTYPE @ 114 NONAME - _ZN27XOmxILCallbackManagerIfImplD0Ev @ 115 NONAME - _ZN27XOmxILCallbackManagerIfImplD1Ev @ 116 NONAME - _ZN27XOmxILCallbackManagerIfImplD2Ev @ 117 NONAME - _ZN30COmxILInContextCallbackManager14SetPortManagerER17COmxILPortManager @ 118 NONAME - _ZN30COmxILInContextCallbackManager17EventNotificationE13OMX_EVENTTYPEmmPc @ 119 NONAME - _ZN30COmxILInContextCallbackManager22BufferDoneNotificationEP20OMX_BUFFERHEADERTYPEm11OMX_DIRTYPE @ 120 NONAME - _ZN30COmxILInContextCallbackManager22ErrorEventNotificationE13OMX_ERRORTYPE @ 121 NONAME - _ZN30COmxILInContextCallbackManager22RegisterTunnelCallbackEm11OMX_DIRTYPEPvm @ 122 NONAME - _ZN30COmxILInContextCallbackManager23BufferRemovalIndicationEP20OMX_BUFFERHEADERTYPE11OMX_DIRTYPE @ 123 NONAME - _ZN30COmxILInContextCallbackManager23RegisterComponentHandleEPv @ 124 NONAME - _ZN30COmxILInContextCallbackManager24DeregisterTunnelCallbackEm @ 125 NONAME - _ZN30COmxILInContextCallbackManager25RegisterILClientCallbacksEPK16OMX_CALLBACKTYPEPv @ 126 NONAME - _ZN30COmxILInContextCallbackManager27ClockBufferDoneNotificationEP20OMX_BUFFERHEADERTYPEm11OMX_DIRTYPE @ 127 NONAME - _ZN30COmxILInContextCallbackManager27CommandCompleteNotificationE15OMX_COMMANDTYPEm @ 128 NONAME - _ZN30COmxILInContextCallbackManager30PortSettingsChangeNotificationEmjRK6TDesC8 @ 129 NONAME - _ZN30COmxILInContextCallbackManager30TransitionCompleteNotificationE13OMX_STATETYPE @ 130 NONAME - _ZN30COmxILInContextCallbackManager33RegisterBufferMarkPropagationPortEmm @ 131 NONAME - _ZN30COmxILInContextCallbackManager4NewLEPvS0_P16OMX_CALLBACKTYPE @ 132 NONAME - _ZN30COmxILInContextCallbackManager6SetFsmER9COmxILFsm @ 133 NONAME - _ZN30COmxILInContextCallbackManagerD0Ev @ 134 NONAME - _ZN30COmxILInContextCallbackManagerD1Ev @ 135 NONAME - _ZN30COmxILInContextCallbackManagerD2Ev @ 136 NONAME - _ZN9COmxILFsm4NewLER15COmxILComponentR24COmxILProcessingFunctionR17COmxILPortManagerR19COmxILConfigManagerR23MOmxILCallbackManagerIf @ 137 NONAME - _ZNK10COmxILPort12GetParameterE13OMX_INDEXTYPEPv @ 138 NONAME - _ZNK10COmxILPort14IsBufferAtHomeEP20OMX_BUFFERHEADERTYPE @ 139 NONAME - _ZNK10COmxILPort17GetExtensionIndexEPcP13OMX_INDEXTYPE @ 140 NONAME - _ZNK10COmxILPort19HasAllBuffersAtHomeEv @ 141 NONAME - _ZNK10COmxILPort23GetLocalOmxParamIndexesER6RArrayIjE @ 142 NONAME - _ZNK10COmxILPort24GetLocalOmxConfigIndexesER6RArrayIjE @ 143 NONAME - _ZNK10COmxILPort9GetConfigE13OMX_INDEXTYPEPv @ 144 NONAME - _ZNK15COmxILAudioPort12GetParameterE13OMX_INDEXTYPEPv @ 145 NONAME - _ZNK15COmxILAudioPort23GetLocalOmxParamIndexesER6RArrayIjE @ 146 NONAME - _ZNK15COmxILAudioPort24GetLocalOmxConfigIndexesER6RArrayIjE @ 147 NONAME - _ZNK15COmxILImagePort12GetParameterE13OMX_INDEXTYPEPv @ 148 NONAME - _ZNK15COmxILImagePort23GetLocalOmxParamIndexesER6RArrayIjE @ 149 NONAME - _ZNK15COmxILImagePort24GetLocalOmxConfigIndexesER6RArrayIjE @ 150 NONAME - _ZNK15COmxILOtherPort12GetParameterE13OMX_INDEXTYPEPv @ 151 NONAME - _ZNK15COmxILOtherPort23GetLocalOmxParamIndexesER6RArrayIjE @ 152 NONAME - _ZNK15COmxILOtherPort24GetLocalOmxConfigIndexesER6RArrayIjE @ 153 NONAME - _ZNK15COmxILVideoPort12GetParameterE13OMX_INDEXTYPEPv @ 154 NONAME - _ZNK15COmxILVideoPort23GetLocalOmxParamIndexesER6RArrayIjE @ 155 NONAME - _ZNK15COmxILVideoPort24GetLocalOmxConfigIndexesER6RArrayIjE @ 156 NONAME - _ZNK19COmxILConfigManager12GetParameterE13OMX_INDEXTYPEPv @ 157 NONAME - _ZNK19COmxILConfigManager17ComponentRoleEnumEPhm @ 158 NONAME - _ZNK19COmxILConfigManager17GetExtensionIndexEPcP13OMX_INDEXTYPE @ 159 NONAME - _ZNK19COmxILConfigManager19GetComponentVersionEPcP15OMX_VERSIONTYPES2_PA128_h @ 160 NONAME - _ZNK19COmxILConfigManager9GetConfigE13OMX_INDEXTYPEPv @ 161 NONAME - _ZNK21COmxILClientClockPort11GetWallTimeERx @ 162 NONAME - _ZNK21COmxILClientClockPort12GetMediaTimeERx @ 163 NONAME - _ZNK21COmxILClientClockPort12SetStartTimeEx @ 164 NONAME - _ZNK21COmxILClientClockPort13GetClockStateER30OMX_TIME_CONFIG_CLOCKSTATETYPE @ 165 NONAME - _ZNK21COmxILClientClockPort16MediaTimeRequestEPvxx @ 166 NONAME - _ZNK21COmxILClientClockPort17SetAudioReferenceEx @ 167 NONAME - _ZNK21COmxILClientClockPort17SetVideoReferenceEx @ 168 NONAME - _ZNK21COmxILClientClockPort25IsClockComponentAvailableEv @ 169 NONAME - _ZTI10COmxILPort @ 170 NONAME - _ZTI15COmxILAudioPort @ 171 NONAME - _ZTI15COmxILComponent @ 172 NONAME - _ZTI15COmxILImagePort @ 173 NONAME - _ZTI15COmxILOtherPort @ 174 NONAME - _ZTI15COmxILVideoPort @ 175 NONAME - _ZTI19COmxILConfigManager @ 176 NONAME - _ZTI24COmxILProcessingFunction @ 177 NONAME - _ZTI27XOmxILCallbackManagerIfImpl @ 178 NONAME - _ZTIN21COmxILCallbackManager16CCallbackCommandE @ 179 NONAME - _ZTIN21COmxILCallbackManager21CBufferRemovalCommandE @ 180 NONAME - _ZTIN21COmxILCallbackManager21CEventCallbackCommandE @ 181 NONAME - _ZTIN21COmxILCallbackManager26CBufferDoneCallbackCommandE @ 182 NONAME - _ZTIN21COmxILCallbackManager26CPortSettingsChangeCommandE @ 183 NONAME - _ZTIN21COmxILCallbackManager30CCompHandleRegistrationCommandE @ 184 NONAME - _ZTIN21COmxILCallbackManager34CTunnelCallbackRegistrationCommandE @ 185 NONAME - _ZTIN21COmxILCallbackManager35CClientCallbacksRegistrationCommandE @ 186 NONAME - _ZTIN21COmxILCallbackManager41CBufferMarkPropagationRegistrationCommandE @ 187 NONAME - _ZTIN9COmxILFsm11COmxILStateE @ 188 NONAME - _ZTIN9COmxILFsm15COmxILStateIdleE @ 189 NONAME - _ZTIN9COmxILFsm16COmxILStatePauseE @ 190 NONAME - _ZTIN9COmxILFsm17COmxILStateLoadedE @ 191 NONAME - _ZTIN9COmxILFsm18COmxILStateInvalidE @ 192 NONAME - _ZTIN9COmxILFsm20COmxILStateExecutingE @ 193 NONAME - _ZTIN9COmxILFsm22COmxILStatePauseToIdleE @ 194 NONAME - _ZTIN9COmxILFsm23COmxILStateIdleToLoadedE @ 195 NONAME - _ZTIN9COmxILFsm23COmxILStateLoadedToIdleE @ 196 NONAME - _ZTIN9COmxILFsm26COmxILStateExecutingToIdleE @ 197 NONAME - _ZTIN9COmxILFsm27COmxILStateWaitForResourcesE @ 198 NONAME - _ZTV10COmxILPort @ 199 NONAME - _ZTV15COmxILAudioPort @ 200 NONAME - _ZTV15COmxILComponent @ 201 NONAME - _ZTV15COmxILImagePort @ 202 NONAME - _ZTV15COmxILOtherPort @ 203 NONAME - _ZTV15COmxILVideoPort @ 204 NONAME - _ZTV19COmxILConfigManager @ 205 NONAME - _ZTV24COmxILProcessingFunction @ 206 NONAME - _ZTV27XOmxILCallbackManagerIfImpl @ 207 NONAME - _ZTVN21COmxILCallbackManager16CCallbackCommandE @ 208 NONAME - _ZTVN21COmxILCallbackManager21CBufferRemovalCommandE @ 209 NONAME - _ZTVN21COmxILCallbackManager21CEventCallbackCommandE @ 210 NONAME - _ZTVN21COmxILCallbackManager26CBufferDoneCallbackCommandE @ 211 NONAME - _ZTVN21COmxILCallbackManager26CPortSettingsChangeCommandE @ 212 NONAME - _ZTVN21COmxILCallbackManager30CCompHandleRegistrationCommandE @ 213 NONAME - _ZTVN21COmxILCallbackManager34CTunnelCallbackRegistrationCommandE @ 214 NONAME - _ZTVN21COmxILCallbackManager35CClientCallbacksRegistrationCommandE @ 215 NONAME - _ZTVN21COmxILCallbackManager41CBufferMarkPropagationRegistrationCommandE @ 216 NONAME - _ZTVN9COmxILFsm11COmxILStateE @ 217 NONAME - _ZTVN9COmxILFsm15COmxILStateIdleE @ 218 NONAME - _ZTVN9COmxILFsm16COmxILStatePauseE @ 219 NONAME - _ZTVN9COmxILFsm17COmxILStateLoadedE @ 220 NONAME - _ZTVN9COmxILFsm18COmxILStateInvalidE @ 221 NONAME - _ZTVN9COmxILFsm20COmxILStateExecutingE @ 222 NONAME - _ZTVN9COmxILFsm22COmxILStatePauseToIdleE @ 223 NONAME - _ZTVN9COmxILFsm23COmxILStateIdleToLoadedE @ 224 NONAME - _ZTVN9COmxILFsm23COmxILStateLoadedToIdleE @ 225 NONAME - _ZTVN9COmxILFsm26COmxILStateExecutingToIdleE @ 226 NONAME - _ZTVN9COmxILFsm27COmxILStateWaitForResourcesE @ 227 NONAME - _ZThn232_NK21COmxILClientClockPort11GetWallTimeERx @ 228 NONAME - _ZThn232_NK21COmxILClientClockPort12GetMediaTimeERx @ 229 NONAME - _ZThn232_NK21COmxILClientClockPort12SetStartTimeEx @ 230 NONAME - _ZThn232_NK21COmxILClientClockPort13GetClockStateER30OMX_TIME_CONFIG_CLOCKSTATETYPE @ 231 NONAME - _ZThn232_NK21COmxILClientClockPort16MediaTimeRequestEPvxx @ 232 NONAME - _ZThn232_NK21COmxILClientClockPort17SetAudioReferenceEx @ 233 NONAME - _ZThn232_NK21COmxILClientClockPort17SetVideoReferenceEx @ 234 NONAME - _ZThn232_NK21COmxILClientClockPort25IsClockComponentAvailableEv @ 235 NONAME - _ZThn28_N21COmxILCallbackManager14SetPortManagerER17COmxILPortManager @ 236 NONAME - _ZThn28_N21COmxILCallbackManager17EventNotificationE13OMX_EVENTTYPEmmPc @ 237 NONAME - _ZThn28_N21COmxILCallbackManager22BufferDoneNotificationEP20OMX_BUFFERHEADERTYPEm11OMX_DIRTYPE @ 238 NONAME - _ZThn28_N21COmxILCallbackManager22ErrorEventNotificationE13OMX_ERRORTYPE @ 239 NONAME - _ZThn28_N21COmxILCallbackManager22RegisterTunnelCallbackEm11OMX_DIRTYPEPvm @ 240 NONAME - _ZThn28_N21COmxILCallbackManager23BufferRemovalIndicationEP20OMX_BUFFERHEADERTYPE11OMX_DIRTYPE @ 241 NONAME - _ZThn28_N21COmxILCallbackManager23RegisterComponentHandleEPv @ 242 NONAME - _ZThn28_N21COmxILCallbackManager24DeregisterTunnelCallbackEm @ 243 NONAME - _ZThn28_N21COmxILCallbackManager25RegisterILClientCallbacksEPK16OMX_CALLBACKTYPEPv @ 244 NONAME - _ZThn28_N21COmxILCallbackManager27ClockBufferDoneNotificationEP20OMX_BUFFERHEADERTYPEm11OMX_DIRTYPE @ 245 NONAME - _ZThn28_N21COmxILCallbackManager27CommandCompleteNotificationE15OMX_COMMANDTYPEm @ 246 NONAME - _ZThn28_N21COmxILCallbackManager30PortSettingsChangeNotificationEmjRK6TDesC8 @ 247 NONAME - _ZThn28_N21COmxILCallbackManager30TransitionCompleteNotificationE13OMX_STATETYPE @ 248 NONAME - _ZThn28_N21COmxILCallbackManager33RegisterBufferMarkPropagationPortEmm @ 249 NONAME - _ZThn28_N21COmxILCallbackManager6SetFsmER9COmxILFsm @ 250 NONAME - _ZThn28_N21COmxILCallbackManagerD0Ev @ 251 NONAME - _ZThn28_N21COmxILCallbackManagerD1Ev @ 252 NONAME - _ZThn32_N21COmxILCallbackManagerD0Ev @ 253 NONAME - _ZThn32_N21COmxILCallbackManagerD1Ev @ 254 NONAME - _ZThn4_N30COmxILInContextCallbackManager14SetPortManagerER17COmxILPortManager @ 255 NONAME - _ZThn4_N30COmxILInContextCallbackManager17EventNotificationE13OMX_EVENTTYPEmmPc @ 256 NONAME - _ZThn4_N30COmxILInContextCallbackManager22BufferDoneNotificationEP20OMX_BUFFERHEADERTYPEm11OMX_DIRTYPE @ 257 NONAME - _ZThn4_N30COmxILInContextCallbackManager22ErrorEventNotificationE13OMX_ERRORTYPE @ 258 NONAME - _ZThn4_N30COmxILInContextCallbackManager22RegisterTunnelCallbackEm11OMX_DIRTYPEPvm @ 259 NONAME - _ZThn4_N30COmxILInContextCallbackManager23BufferRemovalIndicationEP20OMX_BUFFERHEADERTYPE11OMX_DIRTYPE @ 260 NONAME - _ZThn4_N30COmxILInContextCallbackManager23RegisterComponentHandleEPv @ 261 NONAME - _ZThn4_N30COmxILInContextCallbackManager24DeregisterTunnelCallbackEm @ 262 NONAME - _ZThn4_N30COmxILInContextCallbackManager25RegisterILClientCallbacksEPK16OMX_CALLBACKTYPEPv @ 263 NONAME - _ZThn4_N30COmxILInContextCallbackManager27ClockBufferDoneNotificationEP20OMX_BUFFERHEADERTYPEm11OMX_DIRTYPE @ 264 NONAME - _ZThn4_N30COmxILInContextCallbackManager27CommandCompleteNotificationE15OMX_COMMANDTYPEm @ 265 NONAME - _ZThn4_N30COmxILInContextCallbackManager30PortSettingsChangeNotificationEmjRK6TDesC8 @ 266 NONAME - _ZThn4_N30COmxILInContextCallbackManager30TransitionCompleteNotificationE13OMX_STATETYPE @ 267 NONAME - _ZThn4_N30COmxILInContextCallbackManager33RegisterBufferMarkPropagationPortEmm @ 268 NONAME - _ZThn4_N30COmxILInContextCallbackManager6SetFsmER9COmxILFsm @ 269 NONAME - _ZThn4_N30COmxILInContextCallbackManagerD0Ev @ 270 NONAME - _ZThn4_N30COmxILInContextCallbackManagerD1Ev @ 271 NONAME - _ZThn8_N30COmxILInContextCallbackManagerD0Ev @ 272 NONAME - _ZThn8_N30COmxILInContextCallbackManagerD1Ev @ 273 NONAME \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/group/bld.inf --- a/omxil/omxilcomponentcommon/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -PRJ_EXPORTS -// OMX IL Component Extensions -omxilcomp.iby /epoc32/rom/include/omxilcomp.iby - -PRJ_MMPFILES -// Component common framework -../mmpfiles/omxilcomponentcommon.mmp - - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/group/multimedia_omx_il_comp.mrp --- a/omxil/omxilcomponentcommon/group/multimedia_omx_il_comp.mrp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "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: -# -# Description: -# - - -component multimedia_omx_il_comp - -source \sf\os\mm\omxil\omxilcomponentcommon - -binary \sf\os\mm\omxil\omxilcomponentcommon\group all - -exports \sf\os\mm\omxil\omxilcomponentcommon\group - -notes_source \component_defs\release.src - -ipr E diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/group/omxilcomp.iby --- a/omxil/omxilcomponentcommon/group/omxilcomp.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalTechnology -*/ - -#ifndef OMXILCOMP_IBY -#define OMXILCOMP_IBY - -// OMX IL component common -file=ABI_DIR\BUILD_DIR\omxilcomponentcommon.dll System\Libs\omxilcomponentcommon.dll - -#endif // OMXILCOMP_IBY diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/mmpfiles/omxilcomponentcommon.mmp --- a/omxil/omxilcomponentcommon/mmpfiles/omxilcomponentcommon.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// -#include -#include "../src/common/omxilcomponent.hrh" // get UIDs - -TARGET omxilcomponentcommon.dll -CAPABILITY ALL -TCB -TARGETTYPE dll -UID KSharedLibraryUidDefine KUidSymbianOmxILComponentCommonDll -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -USERINCLUDE ../src/common/ - -SOURCEPATH ../src/common/ -SOURCE omxilcomponent.cpp -SOURCE omxilcallbackmanagerifimpl.cpp -SOURCE omxilcallbackmanager.cpp -SOURCE omxilconfigmanager.cpp -SOURCE omxilincontextcallbackmanager.cpp -SOURCE omxilfsm.cpp -SOURCE omxilport.cpp -SOURCE omxilaudioport.cpp -SOURCE omxilportmanager.cpp -SOURCE omxilprocessingfunction.cpp -SOURCE omxilstate.cpp -SOURCE omxilspecversion.cpp -SOURCE omxilutil.cpp -SOURCE omxilimageport.cpp -SOURCE omxilvideoport.cpp -SOURCE omxilotherport.cpp -SOURCE omxilclientclockport.cpp - -LIBRARY euser.lib -LIBRARY mmfserverbaseclasses.lib - -// Uncomment to activate debug tracing in this module -//MACRO _OMXIL_COMMON_DEBUG_TRACING_ON - - -// Uncomment to activate tracing of FillThisBuffer and EmptyThisBuffer -// This produces a *lot* of output -//MACRO _OMXIL_COMMON_BUFFER_TRACING_ON - -// Uncomment to activate spec version checks in OMX IL structs -//MACRO _OMXIL_COMMON_SPEC_VERSION_CHECKS_ON - -NOSTRICTDEF - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/log.h --- a/omxil/omxilcomponentcommon/src/common/log.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,149 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -#ifndef __SWI_LOG_H__ -#define __SWI_LOG_H__ - -#include -namespace DSD -{ - -#ifdef _DEBUG - -//#define _OMXIL_COMMON_DEBUG_TRACING_ON -#ifdef _OMXIL_COMMON_DEBUG_TRACING_ON - - - -class TTruncateOverflowHandler16 : public TDes16Overflow - { - public: - virtual void Overflow( TDes16& aDes ); - }; - -inline void TTruncateOverflowHandler16::Overflow( TDes16& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -class TTruncateOverflowHandler8 : public TDes8Overflow - { - public: - virtual void Overflow( TDes8& aDes ); - }; - -inline void TTruncateOverflowHandler8::Overflow( TDes8& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -#define DEBUG_PRINTF(a) {DSD::DebugPrintf(__LINE__, __FILE__, a);} -#define DEBUG_PRINTF2(a, b) {DSD::DebugPrintf(__LINE__, __FILE__, a, b);} -#define DEBUG_PRINTF3(a, b, c) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c);} -#define DEBUG_PRINTF4(a, b, c, d) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d);} -#define DEBUG_PRINTF5(a, b, c, d, e) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d, e);} - -#define DEBUG_CODE_SECTION(a) TRAP_IGNORE({ a; }) - -// UTF-8 overload of the DebufPrintf method. Should be used by default, -// since it's cheaper both in CPU cycles and stack space. - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler8 overflowHandler8; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<1024> buffer; - _LIT8(KSwiLogPrefix, "[ccommon] "); - _LIT8(KSwiLineFileFormat, "TID[%d] : [%s:%d] -- "); - buffer.Append(KSwiLogPrefix); - RThread thread; - TUint threadId = thread.Id(); - thread.Close(); - RProcess proc; - TFileName fName = proc.FileName(); - proc.Close(); - buffer.AppendFormat(KSwiLineFileFormat, threadId, aFile, aLine); - buffer.AppendFormatList(aFormat, list ,&overflowHandler8 ); - buffer.Append(_L8("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } - -// Unicode DebufPrintf overload - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler16 overflowHandler16; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<256> header; - _LIT8(KSwiLogPrefix, "[common] "); - _LIT8(KSwiLineFileFormat, "%Ld Line: % 5d, File: %s -- "); - header.Append(KSwiLogPrefix); - header.AppendFormat(KSwiLineFileFormat, now.Int64(), aLine, aFile); - - TBuf<1024> buffer; - buffer.Copy(header); - buffer.AppendFormatList(aFormat, list ,&overflowHandler16); - buffer.Append(_L("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - - -} // namespace DSD - -#endif // __SWI_LOG_H__ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilaudioport.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilaudioport.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,205 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "log.h" -#include "omxilaudioport.h" -#include "omxilutil.h" - -EXPORT_C -COmxILAudioPort::~COmxILAudioPort() - { - DEBUG_PRINTF(_L8("COmxILAudioPort::~COmxILAudioPort")); - - iSupportedAudioFormats.Close(); - } - - -EXPORT_C -COmxILAudioPort::COmxILAudioPort(const TOmxILCommonPortData& aCommonPortData) -: COmxILPort(aCommonPortData) - { - DEBUG_PRINTF(_L8("COmxILAudioPort::COmxILAudioPort")); - iParamAudioPortFormat.nSize = sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE); - iParamAudioPortFormat.nVersion = aCommonPortData.iOmxVersion; - iParamAudioPortFormat.nPortIndex = aCommonPortData.iPortIndex; - iParamAudioPortFormat.nIndex = 0; - } - - -// [YYC]: proposal for deep copy, virtual & called from derived CostructL -EXPORT_C void COmxILAudioPort::ConstructL(const RArray& aSupportedAudioFormats) - { - TUint count = aSupportedAudioFormats.Count(); - for (TInt i = 0; i < count; i++) - { - iSupportedAudioFormats.AppendL(aSupportedAudioFormats[i]); - } - iParamAudioPortFormat.eEncoding = count ? iSupportedAudioFormats[0] : OMX_AUDIO_CodingUnused; - } - -EXPORT_C OMX_ERRORTYPE -COmxILAudioPort::GetLocalOmxParamIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILAudioPort::GetLocalOmxParamIndexes")); - - // Always collect local indexes from parent - OMX_ERRORTYPE omxRetValue = - COmxILPort::GetLocalOmxParamIndexes(aIndexArray); - - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - TInt err = aIndexArray.InsertInOrder(OMX_IndexParamAudioPortFormat); - - // Note that index duplication is OK. - if (KErrNone != err && KErrAlreadyExists != err) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILAudioPort::GetLocalOmxConfigIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILAudioPort::GetLocalOmxConfigIndexes")); - - // Always collect local indexes from parent - return COmxILPort::GetLocalOmxConfigIndexes(aIndexArray); - - } - -EXPORT_C OMX_ERRORTYPE -COmxILAudioPort::GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILAudioPort::GetParameter")); - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamAudioPortFormat: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentParameterStructure, - sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)))) - { - return omxRetValue; - } - - OMX_AUDIO_PARAM_PORTFORMATTYPE* pParamAudioPortFormat - = static_cast(apComponentParameterStructure); - - if (pParamAudioPortFormat->nIndex >= - iSupportedAudioFormats.Count()) - { - return OMX_ErrorNoMore; - } - - pParamAudioPortFormat->eEncoding = - iSupportedAudioFormats[pParamAudioPortFormat->nIndex]; - } - break; - - default: - { - // Try the parent's indexes - return COmxILPort::GetParameter(aParamIndex, apComponentParameterStructure); - } - }; - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILAudioPort::SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILAudioPort::SetParameter")); - - aUpdateProcessingFunction = EFalse; - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamAudioPortFormat: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_AUDIO_PARAM_PORTFORMATTYPE)))) - { - return omxRetValue; - } - - const OMX_AUDIO_PARAM_PORTFORMATTYPE* pParamAudioPortFormat - = static_cast( - apComponentParameterStructure); - - // Check in case the specified format is not actually supported by this - // port - OMX_AUDIO_CODINGTYPE newDefaultCodingType = - pParamAudioPortFormat->eEncoding; - - // OMX_AUDIO_CodingMIDI is the last of the supported values as of - // v1.1.1 - if (newDefaultCodingType > OMX_AUDIO_CodingMIDI) - { - return OMX_ErrorBadParameter; - } - - if (KErrNotFound == iSupportedAudioFormats.Find(newDefaultCodingType)) - { - return OMX_ErrorUnsupportedSetting; - } - - // Set the new default format, but check first that we are actually - // changing something... - if (iParamAudioPortFormat.eEncoding != newDefaultCodingType) - { - iParamAudioPortFormat.eEncoding = newDefaultCodingType; - // This is an indication to the PortManager that the processing - // function needs to get updated - // - aUpdateProcessingFunction = ETrue; - } - } - break; - - default: - { - // Try the parent's indexes - return COmxILPort::SetParameter(aParamIndex, - apComponentParameterStructure, - aUpdateProcessingFunction); - } - }; - - return OMX_ErrorNone; - - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilaudioport.h --- a/omxil/omxilcomponentcommon/src/common/omxilaudioport.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILAUDIOPORT_H -#define OMXILAUDIOPORT_H - -#include - -#include -#include -#include - -#include "omxilport.h" - -class COmxILAudioPort : public COmxILPort - { - -public: - - IMPORT_C ~COmxILAudioPort(); - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetLocalOmxParamIndexes(RArray& aIndexArray) const = 0; - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetLocalOmxConfigIndexes(RArray& aIndexArray) const = 0; - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const = 0; - // From COmxILPort - IMPORT_C OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) = 0; - -protected: - - IMPORT_C COmxILAudioPort(const TOmxILCommonPortData& aCommonPortData); - IMPORT_C virtual void ConstructL(const RArray& aSupportedAudioFormats); - - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE SetFormatInPortDefinition( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, - TBool& aUpdateProcessingFunction) = 0; - - // From COmxILPort - IMPORT_C TBool IsTunnelledPortCompatible( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const = 0; - -protected: - - RArray iSupportedAudioFormats; - OMX_AUDIO_PARAM_PORTFORMATTYPE iParamAudioPortFormat; - - }; - -#endif // OMXILAUDIOPORT_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcallbackmanager.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilcallbackmanager.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1046 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "log.h" -#include "omxilcallbackmanager.h" -#include "omxilportmanager.h" -#include "omxilfsm.h" -#include "omxilutil.h" - -const TInt COmxILCallbackManager::KMaxMsgQueueEntries; - - -EXPORT_C COmxILCallbackManager* -COmxILCallbackManager::NewL( - OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::NewL")); - COmxILCallbackManager* self = new (ELeave)COmxILCallbackManager( - apComponentHandle, - apAppData, - apCallbacks); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -void -COmxILCallbackManager::ConstructL() - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::ConstructL")); - - CActiveScheduler::Add(this); - User::LeaveIfError(iCommandQueue.CreateLocal(KMaxMsgQueueEntries)); - iCommandQueue.NotifyDataAvailable(iStatus); - - User::LeaveIfError(iPendingQueue.CreateLocal(KMaxMsgQueueEntries)); - - SetActive(); - - } - -COmxILCallbackManager::COmxILCallbackManager(OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks) - : - CActive(CActive::EPriorityStandard), - XOmxILCallbackManagerIfImpl( - static_cast(apComponentHandle), - apAppData, - apCallbacks), - iCommandQueue(), - iPendingQueue(), - iFlushPendingQueue(EFalse), - iCurrentState(OMX_StateLoaded), - iPreviousState(OMX_StateLoaded) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::COmxILCallbackManager")); - } - -EXPORT_C -COmxILCallbackManager::~COmxILCallbackManager() - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::~COmxILCallbackManager")); - - Cancel(); - - CleanUpQueue(iPendingQueue); - - CleanUpQueue(iCommandQueue); - - } - - -void -COmxILCallbackManager::CleanUpQueue(RCallbackManagerQueue& aQueue) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::CleanUpQueue")); - - if (aQueue.Handle() != 0) - { - CCallbackCommand* pCommand = 0; - TInt err = KErrNone; - while ((err = aQueue.Receive(pCommand)) == KErrNone) - { - DEBUG_PRINTF2(_L8("COmxILCallbackManager::CleanUpQueue : aQueue.Receive [%X]"), pCommand); - delete pCommand; - pCommand = 0; - } - - if (KErrNone != err) - { - DEBUG_PRINTF2(_L8("COmxILCallbackManager::CleanUpQueue : aQueue.Receive returned error [%d]"), err); - if (KErrNoMemory == err) - { - HandleInsufficientResources(); - } - } - - } - - aQueue.Close(); - - } - - -EXPORT_C void -COmxILCallbackManager::SetPortManager(COmxILPortManager& apPortManager) - { - DoSetPortManager(apPortManager); - } - -EXPORT_C void -COmxILCallbackManager::SetFsm(COmxILFsm& apFsm) - { - DoSetFsm(apFsm); - } - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::RegisterComponentHandle(OMX_HANDLETYPE aComponentHandle) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::RegisterComponentHandle")); - - __ASSERT_DEBUG(aComponentHandle, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - - CCompHandleRegistrationCommand* pHandleReg = - new CCompHandleRegistrationCommand(aComponentHandle); - if (!pHandleReg || (iCommandQueue.Send(pHandleReg) != KErrNone)) - { - delete pHandleReg; - DoRegisterComponentHandle(aComponentHandle); - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - -/** - The IL Client callback registration is handled in this implementation - asynchronously. Note that this implementation assumes that the IL Client - will update the callbacks information once all expected callbacks from this - component have already been received and therefore, the callback change will - be safe leading to no race condition at the IL Client side. - - @param apCallbacks The IL Client callback structure. - - @param apAppData Pointer to an application provided value so that the - application can have a component specific context when receiving - the callback. - - @return OMX_ERRORTYPE - */ -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::RegisterILClientCallbacks( - const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::RegisterILClientCallbacks")); - - CClientCallbacksRegistrationCommand* pClientCBacksReg = - new CClientCallbacksRegistrationCommand( - apCallbacks, - apAppData); - if (!pClientCBacksReg || (iCommandQueue.Send(pClientCBacksReg) != KErrNone)) - { - delete pClientCBacksReg; - DoRegisterILClientCallbacks(apCallbacks, apAppData); - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::RegisterTunnelCallback( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex) - { - DEBUG_PRINTF2(_L8("COmxILCallbackManager::RegisterTunnelCallback : aTunnelledComponentHandle [%x]"), aTunnelledComponentHandle); - - CTunnelCallbackRegistrationCommand* pTunnelCBacksReg = - new CTunnelCallbackRegistrationCommand(aLocalPortIndex, - aLocalPortDirection, - aTunnelledComponentHandle, - aTunnelledPortIndex); - - if (!pTunnelCBacksReg || (iCommandQueue.Send(pTunnelCBacksReg) != KErrNone)) - { - delete pTunnelCBacksReg; - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::DeregisterTunnelCallback( - OMX_U32 aLocalPortIndex) - { - - DEBUG_PRINTF(_L8("COmxILCallbackManager::DeregisterTunnelCallback")); - - return RegisterTunnelCallback(aLocalPortIndex, - OMX_DirMax, - 0, - 0); - - } - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::RegisterBufferMarkPropagationPort( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::RegisterBufferMarkPropagationPort")); - - CBufferMarkPropagationRegistrationCommand* pBufferMarkPropReg = - new CBufferMarkPropagationRegistrationCommand(aPortIndex, - aPropagationPortIndex); - if (!pBufferMarkPropReg || (iCommandQueue.Send(pBufferMarkPropReg) != KErrNone)) - { - delete pBufferMarkPropReg; - HandleInsufficientResources(); - } - - return OMX_ErrorNone; - - } - -EXPORT_C TBool -COmxILCallbackManager::BufferRemovalIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::BufferRemovalIndication")); - - CBufferRemovalCommand* pBufferRemovalCmd = - new CBufferRemovalCommand(apBufferHeader, aDirection); - - if (!pBufferRemovalCmd || - (iCommandQueue.Send(pBufferRemovalCmd) != KErrNone)) - { - delete pBufferRemovalCmd; - HandleInsufficientResources(); - } - - // Always return false now as the buffer would be removed asynchronously - return EFalse; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::TransitionCompleteNotification(OMX_STATETYPE aOmxState) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::TransitionCompleteNotification")); - - return EventNotificationImpl(OMX_EventCmdComplete, - OMX_CommandStateSet, - aOmxState, - 0); - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::CommandCompleteNotification(OMX_COMMANDTYPE aOmxCommand, - OMX_U32 aOmxPortIndex) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::CommandCompleteNotification")); - - return EventNotification(OMX_EventCmdComplete, - aOmxCommand, - aOmxPortIndex, - 0); - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::ErrorEventNotification(OMX_ERRORTYPE aOmxError) - { - DEBUG_PRINTF2(_L8("COmxILCallbackManager::ErrorEventNotification : aOmxError[%X] "), aOmxError); - - return EventNotification(OMX_EventError, - aOmxError, - 0, - 0); - - } - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::EventNotification(OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo) - { - // The error code is ignored intentionally, as errors from this function cannot be handled by clients, since they don't have - // another mechanism for reporting an error - (void)EventNotificationImpl(aEvent, aData1, aData2, aExtraInfo); - return OMX_ErrorNone; - } - - -OMX_ERRORTYPE COmxILCallbackManager::EventNotificationImpl(OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo) - { - DEBUG_PRINTF4(_L8("COmxILCallbackManager::EventNotificationImpl : aEvent[%X] aData1[%X] aData2[%u]"), aEvent, aData1, aData2); - - CEventCallbackCommand* pEventCBack = - new CEventCallbackCommand(aEvent, - aData1, - aData2, - aExtraInfo); - if (!pEventCBack || (iCommandQueue.Send(pEventCBack) != KErrNone)) - { - delete pEventCBack; - HandleInsufficientResources(); - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::BufferDoneNotification(OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::BufferDoneNotificaton")); - - return SendBufferDoneNotification(apBufferHeader, - aLocalPortIndex, - aLocalPortDirection, - CCallbackCommand::EPriorityNormal); - - } - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::ClockBufferDoneNotification(OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::ClockBufferDoneNotification")); - - return SendBufferDoneNotification(apBufferHeader, - aLocalPortIndex, - aLocalPortDirection, - CCallbackCommand::EPriorityHigh); - - } - -EXPORT_C OMX_ERRORTYPE -COmxILCallbackManager::PortSettingsChangeNotification( - OMX_U32 aLocalPortIndex, - TUint aPortSettingsIndex, - const TDesC8& aPortSettings) - { - DEBUG_PRINTF2(_L8("COmxILCallbackManager::PortSettingsChangeNotification : aLocalPortIndex[%d]"), aLocalPortIndex); - - HBufC8* pPortSettings = aPortSettings.Alloc(); - if (!pPortSettings) - { - HandleInsufficientResources(); - return OMX_ErrorNone; - } - - CPortSettingsChangeCommand* pPortSettingsCmd = - new CPortSettingsChangeCommand(aLocalPortIndex, - aPortSettingsIndex, - pPortSettings); - if (!pPortSettingsCmd) - { - delete pPortSettings; - HandleInsufficientResources(); - return OMX_ErrorNone; - } - - if (iCommandQueue.Send(pPortSettingsCmd) != KErrNone) - { - delete pPortSettingsCmd; // Destructor will delete pPortSettings - HandleInsufficientResources(); - } - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILCallbackManager::SendBufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - TInt aPriority) - { - DEBUG_PRINTF(_L8("COmxILCallbackManager::SendBufferDoneNotification")); - - __ASSERT_ALWAYS(apBufferHeader && - (OMX_DirInput == aLocalPortDirection || - OMX_DirOutput == aLocalPortDirection), - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - - __ASSERT_ALWAYS(apBufferHeader->nOffset + apBufferHeader->nFilledLen - <= apBufferHeader->nAllocLen, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - - CBufferDoneCallbackCommand* pEventCBack = - new CBufferDoneCallbackCommand(apBufferHeader, - aLocalPortIndex, - aLocalPortDirection, - aPriority); - - if (!pEventCBack || (iCommandQueue.Send(pEventCBack) != KErrNone)) - { - delete pEventCBack; - HandleInsufficientResources(); - } - - return OMX_ErrorNone; - - } - - -void -COmxILCallbackManager::RunL() - { - DEBUG_PRINTF2(_L8("COmxILCallbackManager::RunL : Handle[%X]"), ipHandle); - - ProcessQueue(iCommandQueue); - - // Setup for next callbacks - iCommandQueue.NotifyDataAvailable(iStatus); - SetActive(); - - } - - -void -COmxILCallbackManager::ProcessQueue(RCallbackManagerQueue& aQueue) - { - DEBUG_PRINTF2(_L8("COmxILCallbackManager::ProcessQueue : Handle[%X]"), ipHandle); - - CCallbackCommand* pCommand = 0; - - TInt receiveRes = 0; - TBool hasBeenDeferred = EFalse; - while ((receiveRes = aQueue.Receive(pCommand)) == KErrNone) - { - if (pCommand) - { - DEBUG_PRINTF2(_L8("COmxILCallbackManager::ProcessQueue : aQueue.Receive [%X]"), - pCommand); - hasBeenDeferred = EFalse; - (*pCommand)(*this, hasBeenDeferred); - if (hasBeenDeferred) - { - // Move the current command to the pending queue - if (iPendingQueue.Send(pCommand) != KErrNone) - { - delete pCommand; - pCommand = 0; - HandleInsufficientResources(); - } - } - else - { - delete pCommand; - pCommand = 0; - } - } - - } - - if (KErrNoMemory == receiveRes) - { - HandleInsufficientResources(); - } - - } - -void -COmxILCallbackManager::DoCancel() - { - DEBUG_PRINTF2(_L8("COmxILCallbackManager::DoCancel : Handle[%X]"), ipHandle); - - iCommandQueue.CancelDataAvailable(); - - } - - -// -// COmxILCallbackManager::RCallbackManagerQueue -// -TBool -COmxILCallbackManager::RCallbackManagerQueue::RemoveBufferDoneCbCommandsByBufferHeader( - COmxILCallbackManager& aCbMgr, - const OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection) - { - DEBUG_PRINTF2(_L8("RCallbackManagerQueue::RemoveBufferDoneCbCommandsByBufferHeader : Handle[%X]"), aCbMgr.ipHandle); - - if (KErrNone != DrainBackQueue()) - { - aCbMgr.HandleInsufficientResources(); - return EFalse; - } - - if(!iFrontQueue.IsEmpty()) - { - TBool removed = EFalse; - TDblQueIter frontQueueIter(iFrontQueue); - TFrontQueueElement* pLastElement = iFrontQueue.Last(); - TFrontQueueElement* pCurrentElement = 0; - - do - { - pCurrentElement = frontQueueIter++; - __ASSERT_DEBUG(pCurrentElement && pCurrentElement->ipInfo, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - removed = reinterpret_cast( - const_cast(pCurrentElement->ipInfo))-> - DoRemoveBufferDoneCbCommandByBufferHeader(aCbMgr, - apBufferHeader, - aDirection); - if (removed) - { - pCurrentElement->iLink.Deque(); - delete reinterpret_cast( - const_cast(pCurrentElement->ipInfo)); - delete pCurrentElement; - DEBUG_PRINTF2(_L8("RCallbackManagerQueue::RemoveBufferDoneCbCommandsByBufferHeader : Removed Buffer Done @ Header [%X]"), apBufferHeader); - return ETrue; - } - } - while (pCurrentElement != pLastElement); - } - - return EFalse; - - } - -TBool -COmxILCallbackManager::RCallbackManagerQueue::RemoveBufferDoneCbCommandsByPortIndex( - COmxILCallbackManager& aCbMgr, - OMX_U32 aLocalPortIndex) - { - DEBUG_PRINTF2(_L8("RCallbackManagerQueue::RemoveBufferDoneCbCommandsByPortIndex : Handle[%X]"), aCbMgr.ipHandle); - - TBool somethingRemoved = EFalse; - - if (KErrNone != DrainBackQueue()) - { - aCbMgr.HandleInsufficientResources(); - return EFalse; - } - - if(!iFrontQueue.IsEmpty()) - { - TBool removed = EFalse; - TDblQueIter frontQueueIter(iFrontQueue); - TFrontQueueElement* pLastElement = iFrontQueue.Last(); - TFrontQueueElement* pCurrentElement = 0; - - do - { - pCurrentElement = frontQueueIter++; - __ASSERT_DEBUG(pCurrentElement && pCurrentElement->ipInfo, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - removed = reinterpret_cast( - const_cast(pCurrentElement->ipInfo))-> - DoRemoveBufferDoneCbCommandByPortIndex(aCbMgr, - aLocalPortIndex); - if (removed) - { - somethingRemoved = ETrue; - pCurrentElement->iLink.Deque(); - delete reinterpret_cast( - const_cast(pCurrentElement->ipInfo)); - delete pCurrentElement; - DEBUG_PRINTF2(_L8("RCallbackManagerQueue::RemoveBufferDoneCbCommandsByPortIndex : Removed Buffer Done @ Port Index [%d]"), aLocalPortIndex); - } - } - while (pCurrentElement != pLastElement); - } - - return somethingRemoved; - - } - - -TBool -COmxILCallbackManager::RCallbackManagerQueue::ExecuteBufferDoneCbCommandsByPortIndex( - COmxILCallbackManager& aCbMgr, - OMX_U32 aLocalPortIndex) - { - DEBUG_PRINTF2(_L8("RCallbackManagerQueue::ExecuteBufferDoneCbCommandsByPortIndex : Handle[%X]"), aCbMgr.ipHandle); - - TBool somethingExecuted = EFalse; - - if (KErrNone != DrainBackQueue()) - { - aCbMgr.HandleInsufficientResources(); - return EFalse; - } - - if(!iFrontQueue.IsEmpty()) - { - TBool executed = EFalse; - TDblQueIter frontQueueIter(iFrontQueue); - TFrontQueueElement* pLastElement = iFrontQueue.Last(); - TFrontQueueElement* pCurrentElement = 0; - - do - { - pCurrentElement = frontQueueIter++; - __ASSERT_DEBUG(pCurrentElement && pCurrentElement->ipInfo, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - executed = reinterpret_cast( - const_cast(pCurrentElement->ipInfo))-> - DoExecuteBufferDoneCbCommandByPortIndex(aCbMgr, - aLocalPortIndex); - if (executed) - { - somethingExecuted = ETrue; - pCurrentElement->iLink.Deque(); - delete reinterpret_cast( - const_cast(pCurrentElement->ipInfo)); - delete pCurrentElement; - DEBUG_PRINTF2(_L8("RCallbackManagerQueue::ExecuteBufferDoneCbCommandsByPortIndex : Executed Buffer Done @ Port Index [%d]"), aLocalPortIndex); - } - } - while (pCurrentElement != pLastElement); - } - - return somethingExecuted; - - } - - -// -// COmxILCallbackManager commands -// - -TBool -COmxILCallbackManager::CCallbackCommand::DoRemoveBufferDoneCbCommandByBufferHeader( - COmxILCallbackManager& /*aCbMgr*/, - const OMX_BUFFERHEADERTYPE* /*apBufferHeader*/, - OMX_DIRTYPE /*aDirection*/) - { - return EFalse; - } - -TBool -COmxILCallbackManager::CCallbackCommand::DoRemoveBufferDoneCbCommandByPortIndex( - COmxILCallbackManager& /*aCbMgr*/, - OMX_U32 /* aLocalPortIndex */) - { - return EFalse; - } - -TBool -COmxILCallbackManager::CCallbackCommand::DoExecuteBufferDoneCbCommandByPortIndex( - COmxILCallbackManager& /*aCbMgr*/, - OMX_U32 /* aLocalPortIndex */) - { - return EFalse; - } - -void -COmxILCallbackManager::CCompHandleRegistrationCommand::operator()( - COmxILCallbackManager& aCbMgr, TBool& /* aHasBeenDeferred */) - { - DEBUG_PRINTF2(_L8("CCompHandleRegistrationCommand::operator() : Handle[%X]"), aCbMgr.ipHandle); - aCbMgr.DoRegisterComponentHandle(ipHandle); - } - -void -COmxILCallbackManager::CClientCallbacksRegistrationCommand::operator()( - COmxILCallbackManager& aCbMgr, TBool& /* aHasBeenDeferred */) - { - DEBUG_PRINTF2(_L8("CClientCallbacksRegistrationCommand::operator() : Handle[%X]"), aCbMgr.ipHandle); - aCbMgr.DoRegisterILClientCallbacks(ipCallbacks, ipAppData); - } - -void -COmxILCallbackManager::CBufferMarkPropagationRegistrationCommand::operator()( - COmxILCallbackManager& aCbMgr, TBool& /* aHasBeenDeferred */) - { - DEBUG_PRINTF2(_L8("CBufferMarkPropagationRegistrationCommand::operator() : Handle[%X]"), aCbMgr.ipHandle); - - OMX_ERRORTYPE omxError = - aCbMgr.DoRegisterBufferMarkPropagationPort( - iMarkPropagationInfo.iPortIndex, - iMarkPropagationInfo.iPropagationPortIndex); - - if (OMX_ErrorInsufficientResources == omxError) - { - aCbMgr.HandleInsufficientResources(); - } - } - -void -COmxILCallbackManager::CBufferRemovalCommand::operator()( - COmxILCallbackManager& aCbMgr, TBool& /* aHasBeenDeferred */) - { - DEBUG_PRINTF2(_L8("CBufferRemovalCommand::operator() : Handle[%X]"), aCbMgr.ipHandle); - - // Returned value not relevant - aCbMgr.iPendingQueue.RemoveBufferDoneCbCommandsByBufferHeader( - aCbMgr, - ipBufferHeader, - iDirection); - - // Returned value not relevant - aCbMgr.iCommandQueue.RemoveBufferDoneCbCommandsByBufferHeader( - aCbMgr, - ipBufferHeader, - iDirection); - - - } - -void -COmxILCallbackManager::CTunnelCallbackRegistrationCommand::operator()( - COmxILCallbackManager& aCbMgr, TBool& /* aHasBeenDeferred */) - { - DEBUG_PRINTF2(_L8("CTunnelCallbackRegistrationCommand::operator() : Handle[%X]"), aCbMgr.ipHandle); - - if (!iTunnelInfo.iTunnelledComponentHandle) - { - // This is a tunnel deregistration command, then remove any pending - // callbacks on that tunnel... - aCbMgr.iCommandQueue.RemoveBufferDoneCbCommandsByPortIndex( - aCbMgr, - iTunnelInfo.iLocalPortIndex); - } - - OMX_ERRORTYPE omxError = - aCbMgr.DoRegisterTunnelCallback(iTunnelInfo.iLocalPortIndex, - iTunnelInfo.iLocalPortDirection, - iTunnelInfo.iTunnelledComponentHandle, - iTunnelInfo.iTunnelledPortIndex); - - if (OMX_ErrorInsufficientResources == omxError) - { - aCbMgr.HandleInsufficientResources(); - } - - } - - -void -COmxILCallbackManager::CEventCallbackCommand::operator()( - COmxILCallbackManager& aCbMgr, TBool& /* aHasBeenDeferred */) - { - DEBUG_PRINTF2(_L8("CEventCallbackCommand::operator() : Handle[%X]"), aCbMgr.ipHandle); - - OMX_ERRORTYPE omxError = OMX_ErrorNone; - switch(iData1) - { - case OMX_CommandStateSet: - { - aCbMgr.iPreviousState = aCbMgr.iCurrentState; - aCbMgr.iCurrentState = static_cast(iData2); - - DEBUG_PRINTF4(_L8("CEventCallbackCommand::operator() : Handle[%X] iPreviousState[%d] -> iCurrentState[%d]"), aCbMgr.ipHandle, aCbMgr.iPreviousState, aCbMgr.iCurrentState); - - if (OMX_StatePause == aCbMgr.iPreviousState && - OMX_StateIdle == aCbMgr.iCurrentState) - { - // Flush pending queue first... - aCbMgr.ProcessQueue(aCbMgr.iPendingQueue); - - // ... and now signal command completion... - omxError = - aCbMgr.DoEventNotification(iEvent, - iData1, - iData2, - iExtraInfo); - - } - else if (OMX_StatePause == aCbMgr.iPreviousState && - OMX_StateExecuting == aCbMgr.iCurrentState) - { - // Signal command completion first... - omxError = - aCbMgr.DoEventNotification(iEvent, - iData1, - iData2, - iExtraInfo); - - // ... and now flush... - aCbMgr.ProcessQueue(aCbMgr.iPendingQueue); - - } - else - { - // Signal command completion... - omxError = - aCbMgr.DoEventNotification(iEvent, - iData1, - iData2, - iExtraInfo); - - } - - } - break; - - case OMX_CommandPortDisable: - case OMX_CommandFlush: - { - // Process pending queue unconditionally... - aCbMgr.iFlushPendingQueue = ETrue; - - // Flush first... - if (OMX_ALL == iData2) - { - aCbMgr.ProcessQueue(aCbMgr.iPendingQueue); - } - else - { - aCbMgr.iPendingQueue. - ExecuteBufferDoneCbCommandsByPortIndex(aCbMgr, - iData2); - - } - - aCbMgr.iFlushPendingQueue = EFalse; - - // ... and now signal command completion... - omxError = - aCbMgr.DoEventNotification(iEvent, - iData1, - iData2, - iExtraInfo); - - } - break; - - default: - { - // Signal command completion... - omxError = - aCbMgr.DoEventNotification(iEvent, - iData1, - iData2, - iExtraInfo); - - } - - }; - - if (OMX_ErrorInsufficientResources == omxError) - { - aCbMgr.HandleInsufficientResources(); - } - - } - - -void -COmxILCallbackManager::CBufferDoneCallbackCommand::operator()( - COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred) - { - DEBUG_PRINTF2(_L8("CBufferDoneCallbackCommand::operator() : Handle[%X]"), aCbMgr.ipHandle); - - // Only send the buffer done callback if is not in Pause stae or if there - // is a buffer flushing situation... - - if ((OMX_StatePause == aCbMgr.iCurrentState) && - (!aCbMgr.iFlushPendingQueue)) - { - aHasBeenDeferred = ETrue; - return; - } - - OMX_ERRORTYPE omxError = - aCbMgr.DoBufferDoneNotification(ipBufferHeader, - iLocalPortIndex, - iLocalPortDirection); - - if (OMX_ErrorInsufficientResources == omxError) - { - aCbMgr.HandleInsufficientResources(); - } - - } - -TBool -COmxILCallbackManager::CBufferDoneCallbackCommand::DoRemoveBufferDoneCbCommandByBufferHeader( - COmxILCallbackManager& aCbMgr, - const OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection) - { - - if (apBufferHeader == ipBufferHeader) - { - __ASSERT_DEBUG(aCbMgr.ipFsm, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - __ASSERT_DEBUG(aDirection == OMX_DirInput || - aDirection == OMX_DirOutput, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - - DEBUG_PRINTF4(_L8("DoRemoveBufferDoneCbCommandByBufferHeader() : Nofiying FSM : Handle[%X] aDirection[%X] apBufferHeader[%X]"), aCbMgr.ipHandle, aDirection, apBufferHeader); - - // Make sure the buffer contents are cleared... - TOmxILUtil::ClearBufferContents( - const_cast(apBufferHeader)); - - if (aDirection == OMX_DirInput) - { - aCbMgr.ipFsm->EmptyThisBuffer( - const_cast(apBufferHeader)); - } - else - { - aCbMgr.ipFsm->FillThisBuffer( - const_cast(apBufferHeader)); - } - return ETrue; - } - - return EFalse; - - } - -// -// This method only prints some logging information for debugging purposes. For -// now, there's no other action to be performed as the deletion is done by the caller. -// -TBool -COmxILCallbackManager::CBufferDoneCallbackCommand::DoRemoveBufferDoneCbCommandByPortIndex( - COmxILCallbackManager& /* aCbMgr */, - OMX_U32 aLocalPortIndex) - { - - if (iLocalPortIndex == aLocalPortIndex) - { - DEBUG_PRINTF2(_L8("CBufferDoneCallbackCommand::DoRemoveBufferDoneCbCommandByPortIndex() : FOUND -> PortIndex[%d]"), aLocalPortIndex); - return ETrue; - } - - DEBUG_PRINTF2(_L8("CBufferDoneCallbackCommand::DoRemoveBufferDoneCbCommandByPortIndex() : NOT FOUND -> PortIndex[%d]"), aLocalPortIndex); - - return EFalse; - } - - -TBool -COmxILCallbackManager::CBufferDoneCallbackCommand::DoExecuteBufferDoneCbCommandByPortIndex( - COmxILCallbackManager& aCbMgr, - OMX_U32 aLocalPortIndex) - { - - TBool executed = EFalse; - - if (iLocalPortIndex == aLocalPortIndex) - { - TBool hasBeenDeferred = EFalse; - // The only use case for this method is during unconditional flushing - // of the pending queue... - __ASSERT_DEBUG(aCbMgr.iFlushPendingQueue, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - this->operator()(aCbMgr, hasBeenDeferred); - __ASSERT_DEBUG(!hasBeenDeferred, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - executed = ETrue; - } - - DEBUG_PRINTF3(_L8("CBufferDoneCallbackCommand::DoExecuteBufferDoneCbCommandByPortIndex() : %s FOUND -> PortIndex[%d]"), - (executed ? "" : "NOT"), aLocalPortIndex); - - return executed; - - } - - -TBool -XOmxILCallbackManagerIfImpl::TBufferMarkPropagationInfo::Compare( - const TBufferMarkPropagationInfo& aBmpi1, - const TBufferMarkPropagationInfo& aBmpi2) - { - return (aBmpi1.iPortIndex == aBmpi2.iPortIndex ? ETrue : EFalse); - } - -TBool -XOmxILCallbackManagerIfImpl::TOutputPortBufferMarkInfo::Compare( - const TOutputPortBufferMarkInfo& aOpbmi1, - const TOutputPortBufferMarkInfo& aOpbmi2) - { - return (aOpbmi1.iPortIndex == aOpbmi2.iPortIndex ? ETrue : EFalse); - } - -COmxILCallbackManager::CPortSettingsChangeCommand::~CPortSettingsChangeCommand() - { - delete ipPortSettings; - } - -void -COmxILCallbackManager::CPortSettingsChangeCommand::operator()( - COmxILCallbackManager& aCbMgr, TBool& /* aHasBeenDeferred */) - { - DEBUG_PRINTF3(_L8("CPortSettingsChangeCommand::operator() : Handle[%X], iLocalPortIndex=[%d]"), - aCbMgr.ipHandle, iLocalPortIndex); - - OMX_ERRORTYPE omxError = - aCbMgr.DoPortSettingsChangeNotification(iLocalPortIndex, - iPortSettingsIndex, - *ipPortSettings); - - if (OMX_ErrorInsufficientResources == omxError) - { - aCbMgr.HandleInsufficientResources(); - } - - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcallbackmanager.h --- a/omxil/omxilcomponentcommon/src/common/omxilcallbackmanager.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,495 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILCALLBACKMANAGER_H -#define OMXILCALLBACKMANAGER_H - -#include - -#include "omxilcallbackmanagerif.h" -#include "omxilcallbackmanagerifimpl.h" -#include "primsgqueue.h" - - -/** - Call Back Manager Panic category -*/ -_LIT(KOmxILCallbackManagerPanicCategory, "OmxILCallbackManager"); - - -/** - OpenMAX IL call backs and buffer marks manager. This is an asynchronous - implementation of MOmxILCallbackManagerIf. It keeps and manages the IL - Client callback information as well as the buffer mark propagation info. - - */ -NONSHARABLE_CLASS(COmxILCallbackManager) : - public CActive, - public MOmxILCallbackManagerIf, - private XOmxILCallbackManagerIfImpl - { - - // Declaration of nested private command classes - class CCallbackCommand; - class CCompHandleRegistrationCommand; - class CClientCallbacksRegistrationCommand; - class CTunnelCallbackRegistrationCommand; - class CBufferMarkPropagationRegistrationCommand; - class CBufferRemovalCommand; - class CEventCallbackCommand; - class CBufferDoneCallbackCommand; - class CPortSettingsChangeCommand; - - // Note that the following friends don't break COmxILCallbackManager's - // interface as all friends below are COmxILCallbackManager's private - // nested classes and therefore they are logically part of - // COmxILCallbackManager implementation - friend class CCompHandleRegistrationCommand; - friend class CClientCallbacksRegistrationCommand; - friend class CTunnelCallbackRegistrationCommand; - friend class CBufferMarkPropagationRegistrationCommand; - friend class CBufferRemovalCommand; - friend class CEventCallbackCommand; - friend class CBufferDoneCallbackCommand; - friend class CPortSettingsChangeCommand; - -public: - - IMPORT_C static COmxILCallbackManager* NewL( - OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks); - - IMPORT_C ~COmxILCallbackManager(); - - IMPORT_C void SetPortManager(COmxILPortManager& apPortManager); - - IMPORT_C void SetFsm(COmxILFsm& apFsm); - - - // - // Methods for Callback Registration (from MOmxILCallbackManagerIf) - // - - IMPORT_C OMX_ERRORTYPE RegisterComponentHandle( - OMX_HANDLETYPE aComponentHandle); - - IMPORT_C OMX_ERRORTYPE RegisterILClientCallbacks( - const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData); - - IMPORT_C OMX_ERRORTYPE RegisterTunnelCallback( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex - ); - - IMPORT_C OMX_ERRORTYPE DeregisterTunnelCallback( - OMX_U32 aLocalPortIndex); - - IMPORT_C OMX_ERRORTYPE RegisterBufferMarkPropagationPort( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex); - - IMPORT_C TBool BufferRemovalIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection); - - - // - // Methods for Callback Notification (from MOmxILCallbackManagerIf) - // - - IMPORT_C OMX_ERRORTYPE TransitionCompleteNotification( - OMX_STATETYPE aOmxState); - - IMPORT_C OMX_ERRORTYPE CommandCompleteNotification( - OMX_COMMANDTYPE aOmxCommand, - OMX_U32 aOmxPortIndex); - - // - // Methods for Callback Notification (from MOmxILCallbackManagerIf) - // - - IMPORT_C OMX_ERRORTYPE ErrorEventNotification( - OMX_ERRORTYPE aOmxError); - - IMPORT_C OMX_ERRORTYPE EventNotification( - OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo); - - IMPORT_C OMX_ERRORTYPE BufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection); - - IMPORT_C OMX_ERRORTYPE ClockBufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection); - - IMPORT_C OMX_ERRORTYPE PortSettingsChangeNotification( - OMX_U32 aLocalPortIndex, - TUint aPortSettingsIndex, - const TDesC8& aPortSettings); - - // - // From CActive - // -private: - void RunL(); - void DoCancel(); - -private: - - // Convenience typedef - typedef RPriMsgQueue RCbCmdPriQue; - - /** - COmxILCallbackManager's priority-based command queue. - - This queue is based on RPriMsgQueue but it is specialized to support the - search and deletion of Buffer Done Callback Commands using some specific - search criteria like buffer headers or port indexes. - */ - class RCallbackManagerQueue : public RCbCmdPriQue - { - - public: - - TBool RemoveBufferDoneCbCommandsByBufferHeader( - COmxILCallbackManager& aCbMgr, - const OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection); - - TBool RemoveBufferDoneCbCommandsByPortIndex( - COmxILCallbackManager& aCbMgr, - OMX_U32 aLocalPortIndex); - - TBool ExecuteBufferDoneCbCommandsByPortIndex( - COmxILCallbackManager& aCbMgr, - OMX_U32 aLocalPortIndex); - - - }; - -private: - - static const TInt KMaxMsgQueueEntries = 30; - -private: - - COmxILCallbackManager(OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks); - void ConstructL(); - - - OMX_ERRORTYPE SendBufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - TInt aPriority); - - void ProcessQueue(RCallbackManagerQueue& aQueue); - - void CleanUpQueue(RCallbackManagerQueue& aQueue); - - OMX_ERRORTYPE EventNotificationImpl( - OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo); - -private: - - // COmxILCallbackManager priority queue. - RCallbackManagerQueue iCommandQueue; - - // Queue of buffer done notifications that need to be queued during - // OMX_StatePaused state - RCallbackManagerQueue iPendingQueue; - - // Flag to enable unconditional flushing of buffer done notifications - TBool iFlushPendingQueue; - - OMX_STATETYPE iCurrentState; - OMX_STATETYPE iPreviousState; - - }; - - -// -// COmxILCallbackManager nested classes -// - -/** - Abstract Callback Manager's command class. - */ -class COmxILCallbackManager::CCallbackCommand : public CBase - { - -public: - - enum TCommandPriority - { - EPriorityLow, - EPriorityNormal, - EPriorityHigh, - EPriorityVeryHigh - }; - -public: - - inline CCallbackCommand(TInt aPriority); - - /** - Operator() method that must be implemented to perform the specific - command logic. - - @param [in] aCbMgr The Callback Manager object used as context to the - command operation - */ - virtual void operator()(COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred) = 0; - - virtual TBool DoRemoveBufferDoneCbCommandByBufferHeader( - COmxILCallbackManager& aCbMgr, - const OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection); - - virtual TBool DoRemoveBufferDoneCbCommandByPortIndex( - COmxILCallbackManager& aCbMgr, - OMX_U32 aLocalPortIndex); - - virtual TBool DoExecuteBufferDoneCbCommandByPortIndex( - COmxILCallbackManager& aCbMgr, - OMX_U32 aLocalPortIndex); - - inline TInt Priority(); - -public: - - TInt iPriority; - - }; - -/** - Callback Manager's command class for registering component handles. - */ -class COmxILCallbackManager::CCompHandleRegistrationCommand : - public COmxILCallbackManager::CCallbackCommand - { - -public: - - inline CCompHandleRegistrationCommand(OMX_HANDLETYPE aComponentHandle); - - void operator()(COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred); - -private: - - OMX_COMPONENTTYPE* ipHandle; // Not owned - - }; - -/** - Callback Manager's command class for registering IL Client callbacks . - */ -class COmxILCallbackManager::CClientCallbacksRegistrationCommand : - public COmxILCallbackManager::CCallbackCommand - { - -public: - - inline CClientCallbacksRegistrationCommand( - const OMX_CALLBACKTYPE*& apCallbacks, - const OMX_PTR& apAppData); - - void operator()(COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred); - -private: - - const OMX_CALLBACKTYPE* ipCallbacks; // not owned - const OMX_PTR ipAppData; // not owned - - }; - -/** - Callback Manager's command class for registering tunnel callbacks. - */ -class COmxILCallbackManager::CTunnelCallbackRegistrationCommand : - public COmxILCallbackManager::CCallbackCommand - { - -public: - - inline CTunnelCallbackRegistrationCommand( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex); - - void operator()(COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred); - - -public: - - TTunnelRegistrationInfo iTunnelInfo; - - }; - -/** - Callback Manager's command class for registering buffer marks info . - */ -class COmxILCallbackManager::CBufferMarkPropagationRegistrationCommand : - public COmxILCallbackManager::CCallbackCommand - { - -public: - - inline CBufferMarkPropagationRegistrationCommand( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex); - - void operator()(COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred); - -public: - - TBufferMarkPropagationInfo iMarkPropagationInfo; - - }; - -/** - Callback Manager's command class for buffer header removal. - */ -class COmxILCallbackManager::CBufferRemovalCommand : - public COmxILCallbackManager::CCallbackCommand - { - -public: - - inline CBufferRemovalCommand( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection); - - void operator()(COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred); - -public: - - OMX_BUFFERHEADERTYPE* ipBufferHeader; - OMX_DIRTYPE iDirection; - - }; - -/** - Callback Manager's command class for notification of OpenMAX IL events . - */ -class COmxILCallbackManager::CEventCallbackCommand : - public COmxILCallbackManager::CCallbackCommand - { - -public: - - inline CEventCallbackCommand(OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo); - - void operator()(COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred); - -private: - - OMX_EVENTTYPE iEvent; - TUint32 iData1; - TUint32 iData2; - OMX_STRING iExtraInfo; - - }; - -/** - Callback Manager's command class for notification of buffer done events . - */ -class COmxILCallbackManager::CBufferDoneCallbackCommand : - public COmxILCallbackManager::CCallbackCommand - { - -public: - - inline CBufferDoneCallbackCommand(OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - TInt aPriority = CCallbackCommand::EPriorityNormal); - - void operator()(COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred); - - TBool DoRemoveBufferDoneCbCommandByBufferHeader( - COmxILCallbackManager& aCbMgr, - const OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection); - - TBool DoRemoveBufferDoneCbCommandByPortIndex( - COmxILCallbackManager& aCbMgr, - OMX_U32 aLocalPortIndex); - - TBool DoExecuteBufferDoneCbCommandByPortIndex( - COmxILCallbackManager& aCbMgr, - OMX_U32 aLocalPortIndex); - -private: - - OMX_BUFFERHEADERTYPE* ipBufferHeader; // not owned - OMX_U32 iLocalPortIndex; - OMX_DIRTYPE iLocalPortDirection; - - }; - -/** - Callback Manager's command class for notification of port settings change - events . - */ -class COmxILCallbackManager::CPortSettingsChangeCommand : - public COmxILCallbackManager::CCallbackCommand - { - -public: - - inline CPortSettingsChangeCommand(OMX_U32 aLocalPortIndex, - TUint aPortSettingsIndex, - HBufC8*& apPortSettings); - - ~CPortSettingsChangeCommand(); - - void operator()(COmxILCallbackManager& aCbMgr, TBool& aHasBeenDeferred); - -private: - - OMX_U32 iLocalPortIndex; - TUint iPortSettingsIndex; - HBufC8* ipPortSettings; // This is owned by this class - - }; - -#include "omxilcallbackmanager.inl" - -#endif // OMXILCALLBACKMANAGER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcallbackmanager.inl --- a/omxil/omxilcomponentcommon/src/common/omxilcallbackmanager.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -inline -COmxILCallbackManager::CCallbackCommand::CCallbackCommand( - TInt aPriority) - : - iPriority(aPriority) - { - } - -inline TInt -COmxILCallbackManager::CCallbackCommand::Priority() - { - return iPriority; - } - -inline -COmxILCallbackManager::CCompHandleRegistrationCommand::CCompHandleRegistrationCommand( - OMX_HANDLETYPE aComponentHandle) - : - CCallbackCommand(CCallbackCommand::EPriorityVeryHigh), - ipHandle(static_cast(aComponentHandle)) - { - } - -inline -COmxILCallbackManager::CClientCallbacksRegistrationCommand::CClientCallbacksRegistrationCommand( - const OMX_CALLBACKTYPE*& apCallbacks, - const OMX_PTR& apAppData) - : - CCallbackCommand(CCallbackCommand::EPriorityVeryHigh), - ipCallbacks(apCallbacks), - ipAppData(apAppData) - { - } - -inline -COmxILCallbackManager::CTunnelCallbackRegistrationCommand::CTunnelCallbackRegistrationCommand( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex) - : - CCallbackCommand(CCallbackCommand::EPriorityVeryHigh), - iTunnelInfo(aLocalPortIndex, - aLocalPortDirection, - aTunnelledComponentHandle, - aTunnelledPortIndex) - { - } - -inline -COmxILCallbackManager::CBufferMarkPropagationRegistrationCommand:: -CBufferMarkPropagationRegistrationCommand( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex) - : - CCallbackCommand(CCallbackCommand::EPriorityVeryHigh), - iMarkPropagationInfo(aPortIndex, - aPropagationPortIndex) - { - } - -inline -COmxILCallbackManager::CBufferRemovalCommand::CBufferRemovalCommand( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection) - : - CCallbackCommand(CCallbackCommand::EPriorityVeryHigh), - ipBufferHeader(apBufferHeader), - iDirection(aDirection) - { - } - -inline -COmxILCallbackManager::CEventCallbackCommand::CEventCallbackCommand( - OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo) - : - CCallbackCommand(CCallbackCommand::EPriorityNormal), - iEvent(aEvent), - iData1(aData1), - iData2(aData2), - iExtraInfo(aExtraInfo) - { - } - -inline -COmxILCallbackManager::CBufferDoneCallbackCommand:: -CBufferDoneCallbackCommand(OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - TInt aPriority) - : - CCallbackCommand(aPriority), - ipBufferHeader(apBufferHeader), - iLocalPortIndex(aLocalPortIndex), - iLocalPortDirection(aLocalPortDirection) - { - } - -inline -COmxILCallbackManager::CPortSettingsChangeCommand:: -CPortSettingsChangeCommand(OMX_U32 aLocalPortIndex, - TUint aPortSettingsIndex, - HBufC8*& apPortSettings) - : - CCallbackCommand(CCallbackCommand::EPriorityNormal), - iLocalPortIndex(aLocalPortIndex), - iPortSettingsIndex(aPortSettingsIndex), - ipPortSettings(apPortSettings) - { - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerif.h --- a/omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,181 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** -@file -@internalComponent -*/ - -#ifndef OMXILCALLBACKMANAGERIF_H -#define OMXILCALLBACKMANAGERIF_H - -#include - -#include "omxilcallbacknotificationif.h" - -// Forward declarations -class COmxILPortManager; -class COmxILFsm; - -/** - CallBack Manager Interface used by Callback Manager implementations. - */ -class MOmxILCallbackManagerIf : public MOmxILCallbackNotificationIf - { - -public: - - virtual ~MOmxILCallbackManagerIf(); - - /** - Method to update the Port Manager reference - - @param [in] aPortManager The Port Manager - - @return OMX_ERRORTYPE - */ - virtual void SetPortManager(COmxILPortManager& aPortManager) = 0; - - /** - Method to update the FSM reference - - @param [in] aFsm The FSM - - @return OMX_ERRORTYPE - */ - virtual void SetFsm(COmxILFsm& aFsm) = 0; - - - // - // Methods for Callback Registration/Un-registration - // - - /** - Method to register the component handle - - @param [in] aComponentHandle The component handle - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE RegisterComponentHandle( - OMX_HANDLETYPE aComponentHandle) = 0; - - /** - Method to register the IL Client callbacks - - @param [in] apCallbacks The IL Client callback pointers - - @param [in] apAppData The IL Client data used to provide - component-specific context - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE RegisterILClientCallbacks( - const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData) = 0; - - /** - Method to register a tunnel callback - - @param [in] aLocalPortIndex The tunnel's local port index - - @param [in] aLocalPortDirection The direction of the tunnel's local port - - @param [in] aTunnelledComponentHandle Tunnelled component handle - - @param [in] aTunnelledPortIndex Index of the tunnelled port - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE RegisterTunnelCallback( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex) = 0; - - /** - Method to un-register a tunnel callback - - @param [in] aLocalPortIndex The tunnel's local port index - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE DeregisterTunnelCallback( - OMX_U32 aLocalPortIndex) = 0; - - /** - Method to register buffer mark propagation ports - - @param [in] aPortIndex The index of the input port that receives buffer - marks - - @param [in] aPropagationPortIndex An index of the ouput port where buffer marks - will be propagated - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE RegisterBufferMarkPropagationPort( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex) = 0; - - /** - Method to remove a buffer done commands from the Callback Manager - internal queues, if queueing is in use - - @param [in] apBufferHeader The buffer header contained in the buffer indication - - @param [in] aDirection The direction of the port that handles the buffer - - @return TBool - */ - virtual TBool BufferRemovalIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection) = 0; - - // - // Methods for Callback Notification - // - - /** - Method to notify the IL Client of the completion of an OpenMAX IL state - transition - - @param [in] aOmxState The new state - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE TransitionCompleteNotification( - OMX_STATETYPE aOmxState) = 0; - - /** - Method to notify the IL Client of the completion of a OpenMAX IL command - - @param [in] aOmxCommand The command that has been completed - - @param [in] aOmxPortIndex The index of the port where the command - applies, if any - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE CommandCompleteNotification( - OMX_COMMANDTYPE aOmxCommand, - OMX_U32 aOmxPortIndex) = 0; - - }; - -#include "omxilcallbackmanagerif.inl" - -#endif // OMXILCALLBACKMANAGERIF_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerif.inl --- a/omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerif.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** -@file -@internalComponent -*/ - -inline MOmxILCallbackManagerIf::~MOmxILCallbackManagerIf() - { - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerifimpl.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerifimpl.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,502 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** -@file -@internalComponent -*/ - -#include "log.h" -#include "omxilcallbackmanagerifimpl.h" -#include "omxilportmanager.h" -#include "omxilfsm.h" - - -EXPORT_C -XOmxILCallbackManagerIfImpl::XOmxILCallbackManagerIfImpl(OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks) - : - ipHandle(static_cast(apComponentHandle)), - ipAppData(apAppData), - ipCallbacks(apCallbacks), - iRegisteredTunnels(), - iBufferMarkPropagationPorts(), - iBufferMarks(), - ipPortManager(0), - ipFsm(0) - { - DEBUG_PRINTF(_L8("XOmxILCallbackManagerIfImpl::XOmxILCallbackManagerIfImpl")); - } - -EXPORT_C -XOmxILCallbackManagerIfImpl::~XOmxILCallbackManagerIfImpl() - { - DEBUG_PRINTF(_L8("XOmxILCallbackManagerIfImpl::~XOmxILCallbackManagerIfImpl")); - // These pointers are cleared to make sure that any further calls on this - // object will fail (e.g., from a threaded PF) - ipHandle = 0; - ipAppData = 0; - ipCallbacks = 0; - - iRegisteredTunnels.Close(); - iBufferMarkPropagationPorts.Close(); - iBufferMarks.Close(); - - ipPortManager = 0; - - ipFsm = 0; - - } - -EXPORT_C void -XOmxILCallbackManagerIfImpl::DoSetPortManager(COmxILPortManager& apPortManager) - { - ipPortManager = &apPortManager; - } - -EXPORT_C void -XOmxILCallbackManagerIfImpl::DoSetFsm(COmxILFsm& apFsm) - { - ipFsm = &apFsm; - } - -EXPORT_C OMX_ERRORTYPE -XOmxILCallbackManagerIfImpl::DoRegisterComponentHandle(OMX_HANDLETYPE aComponentHandle) - { - DEBUG_PRINTF(_L8("XOmxILCallbackManagerIfImpl::DoRegisterComponentHandle")); - - __ASSERT_DEBUG(aComponentHandle, - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - ipHandle = static_cast(aComponentHandle); - - return OMX_ErrorNone; - - } - - -EXPORT_C OMX_ERRORTYPE -XOmxILCallbackManagerIfImpl::DoRegisterILClientCallbacks(const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData) - { - DEBUG_PRINTF(_L8("XOmxILCallbackManagerIfImpl::DoRegisterILClientCallbacks")); - - ipAppData = const_cast(apAppData); - ipCallbacks = const_cast(apCallbacks); - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -XOmxILCallbackManagerIfImpl::DoRegisterTunnelCallback( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex) - { - DEBUG_PRINTF(_L8("XOmxILCallbackManagerIfImpl::DoRegisterTunnelCallback")); - - OMX_ERRORTYPE omxError = OMX_ErrorNone; - - if (aTunnelledComponentHandle) - { - // Register tunnelled port - TInt err = iRegisteredTunnels.Append( - TTunnelRegistrationInfo(aLocalPortIndex, - aLocalPortDirection, - aTunnelledComponentHandle, - aTunnelledPortIndex)); - if (KErrNone != err) - { - switch (err) - { - case KErrNoMemory: - { - omxError = OMX_ErrorInsufficientResources; - } - break; - default: - { - omxError = OMX_ErrorUndefined; - } - }; - } - - } - else - { - // Deregister tunnelled port - const TUint tunnelCount = iRegisteredTunnels.Count(); - for (TUint i=0; iEventHandler(ipHandle, - ipAppData, - aEvent, - aData1, - aData2, - aExtraInfo); - return OMX_ErrorNone; - - } - - -EXPORT_C OMX_ERRORTYPE -XOmxILCallbackManagerIfImpl::DoBufferDoneNotification(OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection) - { - DEBUG_PRINTF5(_L8("XOmxILCallbackManagerIfImpl::DoBufferDoneNotification : HANDLE [%X] BUFFER [%X] PORT[%d] DIR[%d]"), ipHandle, apBufferHeader, aLocalPortIndex, aLocalPortDirection); - - __ASSERT_ALWAYS(apBufferHeader && - (OMX_DirInput == aLocalPortDirection || - OMX_DirOutput == aLocalPortDirection), - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - __ASSERT_ALWAYS(apBufferHeader->nOffset + apBufferHeader->nFilledLen - <= apBufferHeader->nAllocLen, - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - __ASSERT_DEBUG(ipHandle && ipCallbacks, User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - // Look for buffer marks to be signalled or propagated - SignalOrPropagateBufferMarks(apBufferHeader, - aLocalPortDirection); - - // find out whether the port is tunnelled or not - TBool tunnelled = EFalse; - TUint tunnelInfoArrayIndex = 0; - const TUint tunnelCount = iRegisteredTunnels.Count(); - for (TUint i=0; i( - iRegisteredTunnels[tunnelInfoArrayIndex]. - iTunnelledComponentHandle); - - __ASSERT_DEBUG(ipTunnelledComponent, - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - // From OMX_Core.h "Callbacks should not return an error to the - // component, so if an error occurs, the application shall handle it - // internally". Callback return error ignored here. - if (OMX_DirInput == aLocalPortDirection) - { - OMX_FillThisBuffer(ipTunnelledComponent, apBufferHeader); - } - else - { - OMX_EmptyThisBuffer(ipTunnelledComponent, apBufferHeader); - } - - } - else - { - OMX_ERRORTYPE (*fp2CBackHandler) - (OMX_HANDLETYPE, OMX_PTR, OMX_BUFFERHEADERTYPE*) = - (aLocalPortDirection == OMX_DirInput ? - ipCallbacks->EmptyBufferDone : - ipCallbacks->FillBufferDone); - - // From OMX_Core.h "Callbacks should not return an error to the - // component, so if an error occurs, the application shall handle it - // internally". Callback return error ignored here. - fp2CBackHandler(ipHandle, - ipAppData, - apBufferHeader); - } - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -XOmxILCallbackManagerIfImpl::DoPortSettingsChangeNotification( - OMX_U32 aLocalPortIndex, - TUint aPortSettingsIndex, - const TDesC8& aPortSettings) - { - DEBUG_PRINTF2(_L8("XOmxILCallbackManagerIfImpl::DoPortSettingsChangeNotification : aLocalPortIndex[%d]"), aLocalPortIndex); - - __ASSERT_DEBUG(ipHandle && - ipCallbacks && - ipPortManager, - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - HBufC8* pPortSettings = HBufC8::New(aPortSettings.Length()); - if (!pPortSettings) - { - return OMX_ErrorInsufficientResources; - } - *pPortSettings = aPortSettings; - - // This is an event that the port may want to convey to the IL Client... - OMX_EVENTTYPE eventForILClient = OMX_EventMax; - OMX_ERRORTYPE omxRetError = - ipPortManager->PortSettingsChangeIndication(aLocalPortIndex, - aPortSettingsIndex, - *pPortSettings, - eventForILClient); - - delete pPortSettings; - pPortSettings = NULL; - - // Inform the IL Client that some value in one of the ports' configuration - // structures has changed... - if (OMX_EventMax != eventForILClient) - { - // Only allow these two port events... - __ASSERT_ALWAYS(eventForILClient == OMX_EventPortSettingsChanged || - eventForILClient == OMX_EventPortFormatDetected, - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - // From OMX_Core.h "Callbacks should not return an error to the component, - // so if an error occurs, the application shall handle it - // internally". Callback return error ignored here. - ipCallbacks->EventHandler(ipHandle, - ipAppData, - eventForILClient, - aLocalPortIndex, - 0, - 0); - } - - return OMX_ErrorNone; - - } - -EXPORT_C void -XOmxILCallbackManagerIfImpl::SignalOrPropagateBufferMarks( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex) - { - DEBUG_PRINTF(_L8("XOmxILCallbackManagerIfImpl::SignalOrPropagateBufferMarks()")); - - // Look for buffer marks to be signalled or propagated - if (apBufferHeader->hMarkTargetComponent) - { - // See if this component is the buffer mark target component... - if (apBufferHeader->hMarkTargetComponent == ipHandle) - { - // Inform the IL Client that a marked buffer has been processed... - ipCallbacks->EventHandler(ipHandle, - ipAppData, - OMX_EventMark, - 0, - 0, - apBufferHeader->pMarkData); - - // At this point, the mark has been delivered to the IL - // Client...Remove the mark from the processed header... - apBufferHeader->hMarkTargetComponent = 0; - apBufferHeader->pMarkData = 0; - - } - else - { - // Propagate the mark... - - // First find the buffer mark propagation port... - const TInt index = iBufferMarkPropagationPorts.Find( - TBufferMarkPropagationInfo(aLocalPortIndex), - TIdentityRelation( - &TBufferMarkPropagationInfo::Compare)); - - // Note that sink components don't propagate marks... - if (index != KErrNotFound) - { - const TBufferMarkPropagationInfo& propInfo = - iBufferMarkPropagationPorts[index]; - - // Let's check for the special case: The case for a source - // component where the output port is both the port that marks - // the headers and the port that propagates them ... Therefore - // no need to store the mark for later propagation... - if (propInfo.iPropagationPortIndex != aLocalPortIndex) - { - // Now, store temporarily the mark so the next time we send - // a buffer done callback in that propagation port, we mark - // that header accordingly... - // Unsuccessful insertion is ignored. - iBufferMarks.Append( - TOutputPortBufferMarkInfo( - propInfo.iPropagationPortIndex, - apBufferHeader->hMarkTargetComponent, - apBufferHeader->pMarkData)); - - // At this point the mark has been set for propagation to - // an output port. Remove the mark from the processed - // header... - apBufferHeader->hMarkTargetComponent = 0; - apBufferHeader->pMarkData = 0; - } - } - } - } - else - { - if(iBufferMarks.Count() != 0) - { - // Let's see if we have a mark waiting to go out...This will find the - // first mark in the local list of marks ... - const TInt index = iBufferMarks.Find( - TOutputPortBufferMarkInfo(aLocalPortIndex), - TIdentityRelation( - &TOutputPortBufferMarkInfo::Compare)); - if (index != KErrNotFound) - { - const TOutputPortBufferMarkInfo& markInfo = - iBufferMarks[index]; - - // Mark the header... - apBufferHeader->hMarkTargetComponent = markInfo.ipMarkTargetComponent; - apBufferHeader->pMarkData = markInfo.ipMarkData; - - // Remove the mark info from the local store - iBufferMarks.Remove(index); - } - } - - } - - - } - -EXPORT_C void -XOmxILCallbackManagerIfImpl::HandleInsufficientResources() - { - DEBUG_PRINTF3(_L8("XOmxILCallbackManagerIfImpl::HandleInsufficientResources : ipCallbacks[%X] ipHandle[%X]"), ipCallbacks, ipHandle); - - if (ipCallbacks && ipHandle) - { - // This is a best-effort action, let's try to inform the IL Client of - // the lack of resources... - ipCallbacks->EventHandler(ipHandle, - ipAppData, - OMX_EventError, - (OMX_U32)OMX_ErrorInsufficientResources, - 0, - 0); - } - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerifimpl.h --- a/omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerifimpl.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** -@file -@internalComponent -*/ - -#ifndef OMXILCALLBACKMANAGERIFIMPL_H -#define OMXILCALLBACKMANAGERIFIMPL_H - -#include - -/** - Call Back ManagerIf Impl Panic category -*/ -_LIT(KOmxILCallbackManagerIfImplPanicCategory, "OmxILCallbackManagerIfImpl"); - -// Forward declarations -class COmxILPortManager; -class COmxILFsm; - -/** - This is a generic implementation of the Callback Manager functionality. - - This implementation is meant to be reused totally or partially by specilized - implementations of a Callback Manager object. - */ -class XOmxILCallbackManagerIfImpl - { - -protected: - - IMPORT_C XOmxILCallbackManagerIfImpl(OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks); - - IMPORT_C virtual ~XOmxILCallbackManagerIfImpl(); - - IMPORT_C virtual void DoSetPortManager(COmxILPortManager& apPortManager); - - IMPORT_C virtual void DoSetFsm(COmxILFsm& apFsm); - - // - // Methods for Callback Registration - // - IMPORT_C virtual OMX_ERRORTYPE DoRegisterComponentHandle( - OMX_HANDLETYPE aComponentHandle); - - IMPORT_C virtual OMX_ERRORTYPE DoRegisterILClientCallbacks( - const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData); - - IMPORT_C virtual OMX_ERRORTYPE DoRegisterTunnelCallback( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex); - - IMPORT_C virtual OMX_ERRORTYPE DoRegisterBufferMarkPropagationPort( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex); - - // - // Methods for Callback Notification - // - - IMPORT_C virtual OMX_ERRORTYPE DoTransitionCompleteNotification( - OMX_STATETYPE aOmxState); - - IMPORT_C virtual OMX_ERRORTYPE DoCommandCompleteNotification( - OMX_COMMANDTYPE aOmxCommand, - OMX_U32 aOmxPortIndex); - - // - // Methods for Callback Notification - // - - IMPORT_C virtual OMX_ERRORTYPE DoErrorEventNotification( - OMX_ERRORTYPE aOmxError); - - IMPORT_C virtual OMX_ERRORTYPE DoEventNotification( - OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo); - - IMPORT_C virtual OMX_ERRORTYPE DoBufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection); - - IMPORT_C virtual OMX_ERRORTYPE DoPortSettingsChangeNotification( - OMX_U32 aLocalPortIndex, - TUint aPortSettingsIndex, - const TDesC8& aPortSettings); - - IMPORT_C virtual void SignalOrPropagateBufferMarks(OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex); - - IMPORT_C virtual void HandleInsufficientResources(); - -protected: - - // Declaration of nested protected classes - class TTunnelRegistrationInfo; - class TBufferMarkPropagationInfo; - class TOutputPortBufferMarkInfo; - -protected: - - // \defgroup IL Client callbacks data - //@{ - OMX_COMPONENTTYPE* ipHandle; // not owned - OMX_PTR ipAppData; // not owned - OMX_CALLBACKTYPE* ipCallbacks; // not owned - //@} - - // Tunnelled ports callback data - RArray iRegisteredTunnels; - - // Associations between input and output ports to be used in buffer marks - // propagation - RArray iBufferMarkPropagationPorts; - - // Temporary store of buffer marks waiting to go out in the next output - // buffer - RArray iBufferMarks; - - // Port manager - COmxILPortManager* ipPortManager; - - // FSM - COmxILFsm* ipFsm; - - }; - -/** - Structure used to hold the tunnel information needed for callback handling - in tunnelled communication. - */ -class XOmxILCallbackManagerIfImpl::TTunnelRegistrationInfo - { - -public: - - inline TTunnelRegistrationInfo( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex); - -public: - - OMX_U32 iLocalPortIndex; - OMX_DIRTYPE iLocalPortDirection; - OMX_HANDLETYPE iTunnelledComponentHandle; - OMX_U32 iTunnelledPortIndex; - - }; - - -/** - Structure used to hold the association of marked port and propagation port. - */ -class XOmxILCallbackManagerIfImpl::TBufferMarkPropagationInfo - { - -public: - - inline TBufferMarkPropagationInfo( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex); - - // This constructor should only be used for array look-ups - inline explicit TBufferMarkPropagationInfo(OMX_U32 aPortIndex); - - static TBool Compare(const TBufferMarkPropagationInfo& aBmpi1, - const TBufferMarkPropagationInfo& aBmpi2); - -public: - - OMX_U32 iPortIndex; - OMX_U32 iPropagationPortIndex; - - }; - -/** - Structure used to hold the buffer marking info needed to propagate buffer - marks on output ports. - */ -class XOmxILCallbackManagerIfImpl::TOutputPortBufferMarkInfo - { - -public: - - inline TOutputPortBufferMarkInfo( - OMX_U32 aPortIndex, - OMX_HANDLETYPE apMarkTargetComponent, - OMX_PTR apMarkData); - - // This constructor should only be used for array look-ups - inline explicit TOutputPortBufferMarkInfo(OMX_U32 aPortIndex); - - static TBool Compare(const TOutputPortBufferMarkInfo& aOpbmi1, - const TOutputPortBufferMarkInfo& aOpbmi2); - -public: - - OMX_U32 iPortIndex; - OMX_HANDLETYPE ipMarkTargetComponent; - OMX_PTR ipMarkData; - - }; - -#include "omxilcallbackmanagerifimpl.inl" - -#endif // OMXILCALLBACKMANAGERIFIMPL_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerifimpl.inl --- a/omxil/omxilcomponentcommon/src/common/omxilcallbackmanagerifimpl.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** -@file -@internalComponent -*/ - - -inline -XOmxILCallbackManagerIfImpl::TTunnelRegistrationInfo::TTunnelRegistrationInfo( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex) - : - iLocalPortIndex(aLocalPortIndex), - iLocalPortDirection(aLocalPortDirection), - iTunnelledComponentHandle(aTunnelledComponentHandle), - iTunnelledPortIndex(aTunnelledPortIndex) - { - } - -inline -XOmxILCallbackManagerIfImpl::TBufferMarkPropagationInfo::TBufferMarkPropagationInfo( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex) - : - iPortIndex(aPortIndex), - iPropagationPortIndex(aPropagationPortIndex) - { - } - -// This constructor should only be used for array look-ups -inline -XOmxILCallbackManagerIfImpl::TBufferMarkPropagationInfo::TBufferMarkPropagationInfo( - OMX_U32 aPortIndex) - : - iPortIndex(aPortIndex), - iPropagationPortIndex(0) - { - } - -inline -XOmxILCallbackManagerIfImpl::TOutputPortBufferMarkInfo::TOutputPortBufferMarkInfo( - OMX_U32 aPortIndex, - OMX_HANDLETYPE apMarkTargetComponent, - OMX_PTR apMarkData) - : - iPortIndex(aPortIndex), - ipMarkTargetComponent(apMarkTargetComponent), - ipMarkData(apMarkData) - { - } - -// This constructor should only be used for array look-ups -inline -XOmxILCallbackManagerIfImpl::TOutputPortBufferMarkInfo::TOutputPortBufferMarkInfo( - OMX_U32 aPortIndex) - : - iPortIndex(aPortIndex), - ipMarkTargetComponent(0), - ipMarkData(0) - { - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcallbacknotificationif.h --- a/omxil/omxilcomponentcommon/src/common/omxilcallbacknotificationif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,130 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#ifndef OMXILCALLBACKNOTIFICATIONIF_H -#define OMXILCALLBACKNOTIFICATIONIF_H - -#include - -#include - - -/** - Portion of CallBack Manager Interface used by Processing Function objects - */ -class MOmxILCallbackNotificationIf - { - -public: - - /** - OpenMAX IL Error notification method that must be implemented by the - Callback manager object. - - @param [in] aOmxError The error event. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE ErrorEventNotification( - OMX_ERRORTYPE aOmxError) = 0; - - /** - OpenMAX IL Buffer Done notification method that must be implemented by - the Callback manager object. - - @param [in] apBufferHeader The header of the buffer processed. - - @param [in] aLocalPortIndex Index of the port that processed the buffer. - - @param [in] aLocalPortDirection The direction of the port. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE BufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection) = 0; - - /** - OpenMAX IL Clock Buffer Done notification method that must be - implemented by the Callback manager object. If queueing is implemented, - clock buffers will be returned with higher priority than normal buffers. - - @param [in] apBufferHeader The header of the clock buffer processed. - - @param [in] aLocalPortIndex Index of the port that processed the buffer. - - @param [in] aLocalPortDirection The direction of the port. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE ClockBufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection) = 0; - - /** - Generic OpenMAX IL Event method notification method that must be - implemented by the Callback manager object. - - @param [in] aEvent The event to be notified. - - @param [in] aData1 An integer with additional event information. - - @param [in] aData2 An integer with additional event information. - - @param [in] aExtraInfo An optional text. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE EventNotification( - OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo) = 0; - - /** - Notification method that must be implemented by the Callback manager - object. It is used by Processing Function objects to notify that some - port setting has changed during the processing of a buffer. - - @param [in] aLocalPortIndex The index of the local port that needs to be - notified of the change. - - @param [in] aPortSettingsIndex An implementation-specific identifier - that the implementation associates to the setting(s) that need(s) - updating in the port. - - @param [in] aPortSettings A buffer descriptor that contains an - implementation-specific structure with the new setting(s) that need to - be updated in the port. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE PortSettingsChangeNotification( - OMX_U32 aLocalPortIndex, - TUint aPortSettingsIndex, - const TDesC8& aPortSettings) = 0; - - }; - -#endif // OMXILCALLBACKNOTIFICATIONIF_H - - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilclientclockport.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilclientclockport.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,225 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "omxilclientclockport.h" -#include "log.h" - - -EXPORT_C COmxILClientClockPort* COmxILClientClockPort::NewL(const TOmxILCommonPortData& aCommonPortData, - const RArray& aSupportedOtherFormats) - { - COmxILClientClockPort* self = new(ELeave) COmxILClientClockPort(aCommonPortData); - CleanupStack::PushL(self); - self->COmxILOtherPort::ConstructL(aSupportedOtherFormats); - CleanupStack::Pop(); - return self; - } - -COmxILClientClockPort::COmxILClientClockPort(const TOmxILCommonPortData& aCommonPortData) - : COmxILOtherPort(aCommonPortData), - iSpecVersion(TOmxILSpecVersion()) - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::COmxILClientClockPort")); - } - -OMX_ERRORTYPE COmxILClientClockPort::GetLocalOmxParamIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::GetLocalOmxParamIndexes")); - return COmxILOtherPort::GetLocalOmxParamIndexes(aIndexArray); - } - - -OMX_ERRORTYPE COmxILClientClockPort::GetLocalOmxConfigIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::GetLocalOmxParamIndexes")); - return COmxILOtherPort::GetLocalOmxConfigIndexes(aIndexArray); - } - - -OMX_ERRORTYPE COmxILClientClockPort::GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::GetParameter")); - return COmxILOtherPort::GetParameter(aParamIndex, apComponentParameterStructure); - } - - -OMX_ERRORTYPE COmxILClientClockPort::SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::SetParameter")); - return COmxILOtherPort::SetParameter(aParamIndex, apComponentParameterStructure, aUpdateProcessingFunction); - } - - -OMX_ERRORTYPE COmxILClientClockPort::SetFormatInPortDefinition(const OMX_PARAM_PORTDEFINITIONTYPE& /*aPortDefinition*/, - TBool& /*aUpdateProcessingFunction*/) - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::SetFormatInPortDefinition")); - return OMX_ErrorNone; - } - - -TBool COmxILClientClockPort::IsTunnelledPortCompatible(const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::IsTunnelledPortCompatible")); - // Domain check - if(aPortDefinition.eDomain != iParamPortDefinition.eDomain) - { - return EFalse; - } - - // Format check - if (aPortDefinition.format.other.eFormat != iParamPortDefinition.format.other.eFormat) - { - return EFalse; - } - - return ETrue; - } - - -EXPORT_C OMX_ERRORTYPE COmxILClientClockPort::GetMediaTime(OMX_TICKS& aMediaTime) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::GetMediaTime")); - return GetTime(aMediaTime, OMX_IndexConfigTimeCurrentMediaTime); - } - - -EXPORT_C OMX_ERRORTYPE COmxILClientClockPort::GetWallTime(OMX_TICKS& aWallTime) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::GetWallTime")); - return GetTime(aWallTime, OMX_IndexConfigTimeCurrentWallTime); - } - - -EXPORT_C OMX_ERRORTYPE COmxILClientClockPort::GetClockState(OMX_TIME_CONFIG_CLOCKSTATETYPE& aClockState) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::GetClockState")); - - if (IsClockComponentAvailable()) - { - aClockState.nSize = sizeof(OMX_TIME_CONFIG_CLOCKSTATETYPE); - aClockState.nVersion = iSpecVersion; - aClockState.eState = OMX_TIME_ClockStateMax; - aClockState.nStartTime = 0; - aClockState.nOffset = 0; - aClockState.nWaitMask = 0; - return OMX_GetConfig(iTunnelledComponent, OMX_IndexConfigTimeClockState, &aClockState); - } - - return OMX_ErrorIncorrectStateOperation; - - } - -EXPORT_C OMX_ERRORTYPE COmxILClientClockPort::MediaTimeRequest(const OMX_PTR apPrivate, - const OMX_TICKS aMediaTime, - const OMX_TICKS aOffset) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::MediaTimeRequest")); - OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE timeInfo; - timeInfo.nSize = sizeof(timeInfo); - timeInfo.nVersion = iSpecVersion; - timeInfo.nPortIndex = iTunnelledPort; - timeInfo.pClientPrivate = apPrivate; - timeInfo.nMediaTimestamp = aMediaTime; - timeInfo.nOffset = aOffset; - - if (IsClockComponentAvailable()) - { - return OMX_SetConfig(iTunnelledComponent, OMX_IndexConfigTimeMediaTimeRequest, &timeInfo); - } - - return OMX_ErrorIncorrectStateOperation; - } - - -EXPORT_C OMX_ERRORTYPE COmxILClientClockPort::SetStartTime(const OMX_TICKS aStartTime) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::SetStartTime")); - return SetTime(aStartTime, OMX_IndexConfigTimeClientStartTime); - } - - -EXPORT_C OMX_ERRORTYPE COmxILClientClockPort::SetVideoReference(const OMX_TICKS aVideoRef) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::SetVideoReference")); - return SetTime(aVideoRef, OMX_IndexConfigTimeCurrentVideoReference); - } - - -EXPORT_C OMX_ERRORTYPE COmxILClientClockPort::SetAudioReference(const OMX_TICKS aAudioRef) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::SetAudioReference")); - return SetTime(aAudioRef, OMX_IndexConfigTimeCurrentAudioReference); - } - -EXPORT_C OMX_BOOL COmxILClientClockPort::IsClockComponentAvailable() const -{ - if (iTunnelledComponent != NULL && iParamPortDefinition.bEnabled) - { - return OMX_TRUE; - } - - return OMX_FALSE; -} - -OMX_ERRORTYPE COmxILClientClockPort::GetTime(OMX_TICKS& aWallTime, const OMX_INDEXTYPE aTimeIndex) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::GetTime")); - OMX_TIME_CONFIG_TIMESTAMPTYPE timeInfo; - timeInfo.nSize = sizeof(timeInfo); - timeInfo.nVersion = iSpecVersion; - timeInfo.nPortIndex = iTunnelledPort; - - if (!IsClockComponentAvailable()) - { - return OMX_ErrorIncorrectStateOperation; - } - - OMX_ERRORTYPE error = OMX_GetConfig(iTunnelledComponent, aTimeIndex, &timeInfo); - - if (error == OMX_ErrorNone) - { - aWallTime = timeInfo.nTimestamp; - } - - return error; - } - - -OMX_ERRORTYPE COmxILClientClockPort::SetTime(const OMX_TICKS aStartTime, const OMX_INDEXTYPE aTimeIndex) const - { - DEBUG_PRINTF(_L8("COmxILClientClockPort::SetTime")); - OMX_TIME_CONFIG_TIMESTAMPTYPE timeInfo; - timeInfo.nSize = sizeof(timeInfo); - timeInfo.nVersion = iSpecVersion; - timeInfo.nPortIndex = iTunnelledPort; - timeInfo.nTimestamp = aStartTime; - - if (IsClockComponentAvailable()) - { - return OMX_SetConfig(iTunnelledComponent, aTimeIndex, &timeInfo); - } - - return OMX_ErrorIncorrectStateOperation; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilclientclockport.h --- a/omxil/omxilcomponentcommon/src/common/omxilclientclockport.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILCLIENTCLOCKPORT_H -#define OMXILCLIENTCLOCKPORT_H - -#include "omxilotherport.h" -#include "omxilclockcomponentcmdsif.h" - -NONSHARABLE_CLASS(COmxILClientClockPort) : public COmxILOtherPort, public MOmxILClockComponentCmdsIf - { -public: - IMPORT_C static COmxILClientClockPort* NewL(const TOmxILCommonPortData& aCommonPortData, - const RArray& aSupportedOtherFormats); - - // From MOmxILClockComponentCmdsIf - IMPORT_C OMX_ERRORTYPE GetMediaTime(OMX_TICKS& aMediaTime) const; - - // From MOmxILClockComponentCmdsIf - IMPORT_C OMX_ERRORTYPE GetWallTime(OMX_TICKS& aWallTime) const; - - // From MOmxILClockComponentCmdsIf - IMPORT_C OMX_ERRORTYPE GetClockState(OMX_TIME_CONFIG_CLOCKSTATETYPE& aClockState) const; - - // From MOmxILClockComponentCmdsIf - IMPORT_C OMX_ERRORTYPE MediaTimeRequest(const OMX_PTR apPrivate, const OMX_TICKS aMediaTime, const OMX_TICKS aOffset) const; - - // From MOmxILClockComponentCmdsIf - IMPORT_C OMX_ERRORTYPE SetStartTime(const OMX_TICKS aStartTime) const; - - // From MOmxILClockComponentCmdsIf - IMPORT_C OMX_ERRORTYPE SetVideoReference(const OMX_TICKS aVideRef) const; - - // From MOmxILClockComponentCmdsIf - IMPORT_C OMX_ERRORTYPE SetAudioReference(const OMX_TICKS aAudioRef) const; - - // From MOmxILClockComponentCmdsIf - IMPORT_C OMX_BOOL IsClockComponentAvailable() const; - - // From COmxILPort - OMX_ERRORTYPE GetLocalOmxParamIndexes(RArray& aIndexArray) const; - - // From COmxILPort - OMX_ERRORTYPE GetLocalOmxConfigIndexes(RArray& aIndexArray) const; - - // From COmxILPort - OMX_ERRORTYPE GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const; - - // From COmxILPort - OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction); - -protected: - // From COmxILPort - OMX_ERRORTYPE SetFormatInPortDefinition(const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, - TBool& aUpdateProcessingFunction); - - // From COmxILPort - TBool IsTunnelledPortCompatible(const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const; - -private: - - COmxILClientClockPort(const TOmxILCommonPortData& aCommonPortData); - - OMX_ERRORTYPE GetTime(OMX_TICKS& aTime, const OMX_INDEXTYPE aTimeIndex) const; - - OMX_ERRORTYPE SetTime(const OMX_TICKS aTime, const OMX_INDEXTYPE aTimeIndex) const; - - const OMX_VERSIONTYPE iSpecVersion; - }; - -#endif // COMXILCLIENTCLOCKPORT_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilclockcomponentcmdsif.h --- a/omxil/omxilcomponentcommon/src/common/omxilclockcomponentcmdsif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILCLOCKCOMPONENTCMDSIF_H -#define OMXILCLOCKCOMPONENTCMDSIF_H - -#include - -class MOmxILClockComponentCmdsIf - { -public: - /** - This method is used to query for the current media clock time of the - clock component. - - @param aMediaTime The clock component media time in OMX_TICKS. - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE GetMediaTime(OMX_TICKS& aMediaTime) const = 0; - - /** - This method is used to query for the current wall clock of the clock - component. - - @param aWallTime The clock component wall clock in OMX_TICKS. - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE GetWallTime(OMX_TICKS& aWallTime) const = 0; - - - /** - This method is used to query for the current state of the clock - component. - - @param aClockState A OMX_TIME_CONFIG_CLOCKSTATETYPE structure. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE GetClockState(OMX_TIME_CONFIG_CLOCKSTATETYPE& aClockState) const = 0; - - /** - This method allows a client to request a particular timestamp - - @param apPrivate A pointer to any private data that the client wants to - associate with the request. - @param aMediaTime A timestamp, which is associated with some - operation (e.g., the presentation of a frame) that - the client shall execute at the time requested. - @param aOffset Specifies the desired difference between the wall time - when the timestamp actually occurs and the wall time - when the request is to be fulfilled. - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE MediaTimeRequest(const OMX_PTR apPrivate, const OMX_TICKS aMediaTime, const OMX_TICKS aOffset) const = 0; - - /** - This method sends the start time to the clock component - - @param aStartTime The starting timestamp of the stream - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE SetStartTime(const OMX_TICKS aStartTime) const = 0; - - /** - This method updates the clock component's video reference clock. - - @param aVideoRef The media time of the video component. - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE SetVideoReference(const OMX_TICKS aVideoRef) const = 0; - - /** - This method updates the clock component's audio reference clock. - - @param aAudioRef The media time of the audio component. - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE SetAudioReference(const OMX_TICKS aAudioRef) const = 0; - - /** - This method checks the clock component availability - - @return TBool - */ - virtual OMX_BOOL IsClockComponentAvailable() const = 0; - }; - -#endif // OMXILCLOCKCOMPONENTCMDSIF_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcommand.h --- a/omxil/omxilcomponentcommon/src/common/omxilcommand.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -#ifndef OMXILCOMMAND_H -#define OMXILCOMMAND_H - - -#include - -class TOmxILCommand - { - -public: - - OMX_COMMANDTYPE iCommandType; - OMX_U32 iParam1; - OMX_PTR ipCommandData; - - // Constructor - inline TOmxILCommand( - OMX_COMMANDTYPE aCommandType, - OMX_U32 aParam1, - OMX_PTR apCommandData); - - }; - - -inline -TOmxILCommand::TOmxILCommand( - OMX_COMMANDTYPE aCommandType, - OMX_U32 aParam1, - OMX_PTR apCommandData - ) - : - iCommandType(aCommandType), - iParam1(aParam1), - ipCommandData(apCommandData) - { - } - -#endif // OMXILCOMMAND_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcomponent.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilcomponent.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,395 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#include "log.h" -#include "omxilcomponent.h" -#include "omxilfsm.h" -#include "omxilcallbackmanager.h" -#include "omxilconfigmanager.h" - - -EXPORT_C -COmxILComponent::COmxILComponent() - { - DEBUG_PRINTF(_L8("COmxILComponent::COmxILComponent")); - - } - - -EXPORT_C -COmxILComponent::~COmxILComponent() - { - DEBUG_PRINTF2(_L8("COmxILComponent::~COmxILComponent : Handle[%X]"), ipHandle); - iComponentName.Close(); - } - - -EXPORT_C void -COmxILComponent::InitComponentL() - { - DEBUG_PRINTF2(_L8("COmxILComponent::InitComponent : Handle[%X]"), ipHandle); - - __ASSERT_ALWAYS(ipHandle && ipFsm && ipConfigManager, User::Invariant()); - - char componentNamebuffer[OMX_MAX_STRINGNAME_SIZE]; - OMX_VERSIONTYPE componentVersion; - OMX_VERSIONTYPE specVersion; - OMX_UUIDTYPE componentUid; - - ipConfigManager->GetComponentVersion(componentNamebuffer, - &componentVersion, - &specVersion, - &componentUid); - TBuf8<128> componentNameBuf8; - componentNameBuf8 = const_cast(reinterpret_cast(componentNamebuffer)); - iComponentName.CreateL(componentNameBuf8, componentNameBuf8.Length() + 1); - iComponentName.PtrZ(); - DEBUG_PRINTF2(_L8("COmxILComponent::InitComponent : [%S]"), &iComponentName); - - // Fill in the component handle - ipHandle->nVersion = componentVersion; - // The FSM will take care of all the API calls - ipHandle->pComponentPrivate = ipFsm; - ipHandle->GetComponentVersion = COmxILComponent::GetComponentVersion; - ipHandle->SendCommand = COmxILComponent::SendCommand; - ipHandle->GetParameter = COmxILComponent::GetParameter; - ipHandle->SetParameter = COmxILComponent::SetParameter; - ipHandle->GetConfig = COmxILComponent::GetConfig; - ipHandle->SetConfig = COmxILComponent::SetConfig; - ipHandle->GetExtensionIndex = COmxILComponent::GetExtensionIndex; - ipHandle->GetState = COmxILComponent::GetState; - ipHandle->ComponentTunnelRequest = COmxILComponent::ComponentTunnelRequest; - ipHandle->UseBuffer = COmxILComponent::UseBuffer; - ipHandle->AllocateBuffer = COmxILComponent::AllocateBuffer; - ipHandle->FreeBuffer = COmxILComponent::FreeBuffer; - ipHandle->EmptyThisBuffer = COmxILComponent::EmptyThisBuffer; - ipHandle->FillThisBuffer = COmxILComponent::FillThisBuffer; - ipHandle->SetCallbacks = COmxILComponent::SetCallbacks; - ipHandle->ComponentDeInit = COmxILComponent::ComponentDeInit; - ipHandle->UseEGLImage = COmxILComponent::UseEGLImage; - ipHandle->ComponentRoleEnum = COmxILComponent::ComponentRoleEnum; - - OMX_ERRORTYPE omxRetValue = - ipCallbackManager->RegisterComponentHandle(ipHandle); - if (OMX_ErrorNone != omxRetValue) - { - if (OMX_ErrorInsufficientResources == omxRetValue) - { - User::Leave(KErrNoMemory); - } - User::Leave(KErrGeneral); - } - - // Let's init the FSM... - ipFsm->InitFsm(); - - } - -OMX_ERRORTYPE -COmxILComponent::GetComponentVersion( - OMX_HANDLETYPE aComponent, - OMX_STRING aComponentName, - OMX_VERSIONTYPE* apComponentVersion, - OMX_VERSIONTYPE* apSpecVersion, - OMX_UUIDTYPE* apComponentUUID) - { - DEBUG_PRINTF2(_L8("COmxILComponent::GetComponentVersion : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - GetComponentVersion(aComponentName, apComponentVersion, - apSpecVersion, apComponentUUID); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::SendCommand( - OMX_HANDLETYPE aComponent, - OMX_COMMANDTYPE aCmd, - OMX_U32 aParam1, - OMX_PTR aCmdData) - { - DEBUG_PRINTF2(_L8("COmxILComponent::SendCommand : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - SendCommand(aCmd ,aParam1, aCmdData); - - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::GetParameter( - OMX_HANDLETYPE aComponent, - OMX_INDEXTYPE aParamIndex, - OMX_PTR aComponentParameterStructure) - { - DEBUG_PRINTF3(_L8("COmxILComponent::GetParameter : Handle[%X]; ParamIndex[0x%X]"), aComponent, aParamIndex); - - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - GetParameter(aParamIndex, aComponentParameterStructure); - - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::SetParameter( - OMX_HANDLETYPE aComponent, - OMX_INDEXTYPE aIndex, - OMX_PTR aComponentParameterStructure) - { - DEBUG_PRINTF3(_L8("COmxILComponent::SetParameter : Handle[%X]; ParamIndex[0x%X]"), aComponent, aIndex); - - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - SetParameter(aIndex, - const_cast(aComponentParameterStructure)); - - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::GetConfig( - OMX_HANDLETYPE aComponent, - OMX_INDEXTYPE aIndex, - OMX_PTR aComponentParameterStructure) - { - DEBUG_PRINTF3(_L8("COmxILComponent::GetConfig : Handle[%X]; ConfigIndex[0x%X]"), aComponent, aIndex); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - GetConfig(aIndex, aComponentParameterStructure); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::SetConfig( - OMX_HANDLETYPE aComponent, - OMX_INDEXTYPE aIndex, - OMX_PTR aComponentConfigStructure) - { - DEBUG_PRINTF3(_L8("COmxILComponent::SetConfig : Handle[%X]; ConfigIndex[0x%X]"), aComponent, aIndex); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - SetConfig(aIndex, const_cast(aComponentConfigStructure)); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::GetExtensionIndex( - OMX_HANDLETYPE aComponent, - OMX_STRING aParameterName, - OMX_INDEXTYPE* aIndexType) - { - DEBUG_PRINTF2(_L8("COmxILComponent::GetExtensionIndex : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - GetExtensionIndex(aParameterName, aIndexType); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::GetState( - OMX_HANDLETYPE aComponent, - OMX_STATETYPE* aState) - { - DEBUG_PRINTF2(_L8("COmxILComponent::GetState : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - GetState(aState); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::ComponentTunnelRequest( - OMX_HANDLETYPE aComponent, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* aTunnelSetup) - { - DEBUG_PRINTF2(_L8("COmxILComponent::ComponentTunnelRequest : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - ComponentTunnelRequest(aPort, aTunneledComp, - aTunneledPort, aTunnelSetup); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::UseBuffer( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* aBuffer) - { - DEBUG_PRINTF2(_L8("COmxILComponent::UseBuffer : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - UseBuffer(appBufferHdr, aPortIndex, apAppPrivate, aSizeBytes, aBuffer); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::AllocateBuffer( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE** apBuffer, - OMX_U32 aPortIndex, - OMX_PTR aAppData, - OMX_U32 aSizeBytes) - { - DEBUG_PRINTF2(_L8("COmxILComponent::AllocateBuffer : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - AllocateBuffer(apBuffer, aPortIndex, aAppData, aSizeBytes); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::FreeBuffer( - OMX_HANDLETYPE aComponent, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* aBuffer) - { - DEBUG_PRINTF2(_L8("COmxILComponent::FreeBuffer : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - FreeBuffer(aPortIndex, aBuffer); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::EmptyThisBuffer( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer) - { - DEBUG_PRINTF2(_L8("COmxILComponent::EmptyThisBuffer : Handle[%X]"), aComponent); -#ifdef _OMXIL_COMMON_BUFFER_TRACING_ON - RDebug::Print(_L("COmxILComponent::EmptyThisBuffer component=0x%08X header=0x%08X port=%d flags=0x%X filledLen=%d timeStamp=%Ld"), - aComponent, aBuffer, aBuffer->nInputPortIndex, aBuffer->nFlags, aBuffer->nFilledLen, aBuffer->nTimeStamp); -#endif - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - EmptyThisBuffer(aBuffer); - - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::FillThisBuffer( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer) - { - DEBUG_PRINTF2(_L8("COmxILComponent::FillThisBuffer : Handle[%X]"), aComponent); -#ifdef _OMXIL_COMMON_BUFFER_TRACING_ON - RDebug::Print(_L("COmxILComponent::FillThisBuffer component=0x%08X header=0x%08X port=%d"), aComponent, aBuffer, aBuffer->nOutputPortIndex); -#endif - - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - FillThisBuffer(aBuffer); - - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::SetCallbacks( - OMX_HANDLETYPE aComponent, - OMX_CALLBACKTYPE* aCallbacks, - OMX_PTR aAppData) - { - DEBUG_PRINTF2(_L8("COmxILComponent::SetCallbacks : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - SetCallbacks(const_cast(aCallbacks), aAppData); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::ComponentDeInit( - OMX_HANDLETYPE aComponent) - { - DEBUG_PRINTF2(_L8("COmxILComponent::ComponentDeInit : Handle[%X]"), aComponent); - delete (static_cast( - (static_cast( - (static_cast(aComponent))-> - pComponentPrivate))->GetComponent())); - return OMX_ErrorNone; - } - -OMX_ERRORTYPE -COmxILComponent::UseEGLImage( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR aAppPrivate, - void* eglImage) - { - DEBUG_PRINTF2(_L8("COmxILComponent::UseEGLImage : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - UseEGLImage(appBufferHdr, aPortIndex, aAppPrivate, eglImage); - return omxError; - } - -OMX_ERRORTYPE -COmxILComponent::ComponentRoleEnum( - OMX_HANDLETYPE aComponent, - OMX_U8* aRole, - OMX_U32 aIndex) - { - DEBUG_PRINTF2(_L8("COmxILComponent::ComponentRoleEnum : Handle[%X]"), aComponent); - OMX_ERRORTYPE omxError; - omxError = (static_cast - ((static_cast(aComponent))->pComponentPrivate))-> - ComponentRoleEnum(aRole, aIndex); - return omxError; - } - -/*static*/ EXPORT_C OMX_ERRORTYPE COmxILComponent::SymbianErrorToGetHandleError(TInt aSymbianError) - { - switch(aSymbianError) - { - case KErrNone: - return OMX_ErrorNone; - case KErrNoMemory: - return OMX_ErrorInsufficientResources; - case KErrArgument: - return OMX_ErrorBadParameter; - }; - - return OMX_ErrorUndefined; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcomponent.h --- a/omxil/omxilcomponentcommon/src/common/omxilcomponent.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILCOMPONENT_H -#define OMXILCOMPONENT_H - -#include -#include - - -// forward declarations -class COmxILFsm; -class COmxILConfigManager; -class MOmxILCallbackManagerIf; -class COmxILPortManager; -class COmxILProcessingFunction; - - -class COmxILComponent : public CBase - { - -public: - - IMPORT_C virtual ~COmxILComponent(); - - static OMX_ERRORTYPE GetComponentVersion( - OMX_HANDLETYPE aComponent, - OMX_STRING aComponentName, - OMX_VERSIONTYPE* apComponentVersion, - OMX_VERSIONTYPE* apSpecVersion, - OMX_UUIDTYPE* apComponentUUID); - - static OMX_ERRORTYPE SendCommand( - OMX_HANDLETYPE aComponent, - OMX_COMMANDTYPE aCmd, - OMX_U32 aParam1, - OMX_PTR aCmdData); - - static OMX_ERRORTYPE GetParameter( - OMX_HANDLETYPE aComponent, - OMX_INDEXTYPE aParamIndex, - OMX_PTR aComponentParameterStructure); - - static OMX_ERRORTYPE SetParameter( - OMX_HANDLETYPE aComponent, - OMX_INDEXTYPE aIndex, - OMX_PTR aComponentParameterStructure); - - static OMX_ERRORTYPE GetConfig( - OMX_HANDLETYPE aComponent, - OMX_INDEXTYPE aIndex, - OMX_PTR aComponentConfigStructure); - - static OMX_ERRORTYPE SetConfig( - OMX_HANDLETYPE aComponent, - OMX_INDEXTYPE aIndex, - OMX_PTR aComponentConfigStructure); - - static OMX_ERRORTYPE GetExtensionIndex( - OMX_HANDLETYPE aComponent, - OMX_STRING aParameterName, - OMX_INDEXTYPE* aIndexType); - - static OMX_ERRORTYPE GetState( - OMX_HANDLETYPE aComponent, - OMX_STATETYPE* aState); - - static OMX_ERRORTYPE ComponentTunnelRequest( - OMX_HANDLETYPE aComp, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* aTunnelSetup); - - static OMX_ERRORTYPE UseBuffer( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* aBuffer); - - static OMX_ERRORTYPE AllocateBuffer( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE** apBuffer, - OMX_U32 aPortIndex, - OMX_PTR aAppData, - OMX_U32 aSizeBytes); - - static OMX_ERRORTYPE FreeBuffer( - OMX_HANDLETYPE aComponent, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* aBuffer); - - static OMX_ERRORTYPE EmptyThisBuffer( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - - static OMX_ERRORTYPE FillThisBuffer( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - - static OMX_ERRORTYPE SetCallbacks( - OMX_HANDLETYPE aComponent, - OMX_CALLBACKTYPE* aCallbacks, - OMX_PTR aAppData); - - static OMX_ERRORTYPE ComponentDeInit( - OMX_HANDLETYPE aComponent); - - static OMX_ERRORTYPE UseEGLImage( - OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR aAppPrivate, - void* eglImage); - - static OMX_ERRORTYPE ComponentRoleEnum( - OMX_HANDLETYPE aComponent, - OMX_U8* aRole, - OMX_U32 aIndex); - - IMPORT_C static OMX_ERRORTYPE SymbianErrorToGetHandleError(TInt aSymbianError); - -protected: - - IMPORT_C COmxILComponent(); - - IMPORT_C void InitComponentL(); - -protected: - - RBuf8 iComponentName; - - OMX_COMPONENTTYPE* ipHandle; - OMX_PTR ipAppData; - OMX_CALLBACKTYPE* ipCallbacks; - - COmxILFsm* ipFsm; - COmxILConfigManager* ipConfigManager; - MOmxILCallbackManagerIf* ipCallbackManager; - COmxILPortManager* ipPortManager; - COmxILProcessingFunction* ipProcessingFunction; - - }; - -#endif // OMXILCOMPONENT_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilcomponent.hrh --- a/omxil/omxilcomponentcommon/src/common/omxilcomponent.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -#ifndef OMXILCOMPONENT_HRH -#define OMXILCOMPONENT_HRH - -#define KUidSymbianOmxILComponentCommonDll 0x10283498 - -#endif // OMXILCOMPONENT_HRH - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilconfigmanager.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilconfigmanager.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,553 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include -#include - -#include "log.h" -#include "omxilconfigmanager.h" -#include "omxilportmanager.h" -#include "omxilspecversion.h" -#include "omxilutil.h" - - -// NOTE: OMX_UUIDTYPE[128] is defined in OMX_Types.h -#define KMAX_UUIDTYPE_SIZE 128 - -EXPORT_C COmxILConfigManager* -COmxILConfigManager::NewL( - COmxILPortManager& aPortManager, - const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList) - { - DEBUG_PRINTF(_L8("COmxILConfigManager::NewL")); - __ASSERT_DEBUG(aComponentName.Length() && aComponentRoleList.Count(), - User::Panic(KOmxILConfigManagerPanicCategory, 1)); - - COmxILConfigManager* self = new (ELeave)COmxILConfigManager(aPortManager); - CleanupStack::PushL(self); - self->ConstructL(aComponentName, - aComponentVersion, - aComponentRoleList); - CleanupStack::Pop(self); - return self; - - } - -EXPORT_C void -COmxILConfigManager::ConstructL(const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList) - { - DEBUG_PRINTF(_L8("COmxILConfigManager::ConstructL")); - - iComponentName.CreateL(aComponentName, OMX_MAX_STRINGNAME_SIZE); - iComponentName.PtrZ(); - iComponentVersion.s = aComponentVersion.s; - - // Note that the first role in the list of roles becomes the default role - // assumed by the component - - const TUint rolesCount = aComponentRoleList.Count(); - for (TUint i=0; iAllocLC()); - CleanupStack::Pop(); - } - - - InsertParamIndexL(OMX_IndexParamDisableResourceConcealment); - InsertParamIndexL(OMX_IndexParamSuspensionPolicy); - InsertParamIndexL(OMX_IndexParamStandardComponentRole); - InsertParamIndexL(OMX_IndexParamPriorityMgmt); - InsertConfigIndexL(OMX_IndexConfigPriorityMgmt); - - } - -EXPORT_C -COmxILConfigManager::COmxILConfigManager(COmxILPortManager& aPortManager) - : - iPortManager(aPortManager), - iComponentName(), - iComponentRoleList(), - iCurrentRoleIndex(0) - - { - DEBUG_PRINTF(_L8("COmxILConfigManager::COmxILConfigManager")); - - iParamDisableResourceConcealment.nSize = sizeof(OMX_RESOURCECONCEALMENTTYPE); - iParamDisableResourceConcealment.nVersion = TOmxILSpecVersion(); - iParamDisableResourceConcealment.bResourceConcealmentForbidden = OMX_TRUE; - - iParamSuspensionPolicy.nSize = sizeof(OMX_PARAM_SUSPENSIONPOLICYTYPE); - iParamSuspensionPolicy.nVersion = TOmxILSpecVersion(); - iParamSuspensionPolicy.ePolicy = OMX_SuspensionDisabled; - - iConfigPriorityMgmt.nSize = sizeof(OMX_PRIORITYMGMTTYPE); - iConfigPriorityMgmt.nVersion = TOmxILSpecVersion(); - iConfigPriorityMgmt.nGroupPriority = 0; - iConfigPriorityMgmt.nGroupID = 0; - - } - -EXPORT_C -COmxILConfigManager::~COmxILConfigManager() - { - DEBUG_PRINTF(_L8("COmxILConfigManager::~COmxILConfigManager")); - - iComponentName.Close(); - iComponentRoleList.ResetAndDestroy(); - - } - -EXPORT_C OMX_ERRORTYPE -COmxILConfigManager::GetComponentVersion(OMX_STRING aComponentName, - OMX_VERSIONTYPE* apComponentVersion, - OMX_VERSIONTYPE* apSpecVersion, - OMX_UUIDTYPE* apComponentUUID) const - { - DEBUG_PRINTF(_L8("COmxILConfigManager::GetComponentVersion")); - - TPtr8 name(reinterpret_cast(aComponentName), - OMX_MAX_STRINGNAME_SIZE); - name.Copy(iComponentName); - name.PtrZ(); - - (*apComponentVersion) = iComponentVersion; - (*apSpecVersion) = TOmxILSpecVersion(); - - // Generate a component uuid - TUint32 uid = reinterpret_cast(this); - TPtr8 uidPtr(reinterpret_cast(*apComponentUUID), - KMAX_UUIDTYPE_SIZE); - uidPtr = TPtr8(reinterpret_cast(uid), sizeof(uid)); - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILConfigManager::GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILConfigManager::GetParameter")); - - TInt index = FindParamIndex(aParamIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamStandardComponentRole: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentParameterStructure, - sizeof(OMX_PARAM_COMPONENTROLETYPE)))) - { - return omxRetValue; - } - - OMX_PARAM_COMPONENTROLETYPE* pComponentRole - = static_cast( - apComponentParameterStructure); - - // Here, the role returned must be the role that this component is - // currently assuming - TPtr8 role(reinterpret_cast(pComponentRole->cRole), - OMX_MAX_STRINGNAME_SIZE); - - role = *(iComponentRoleList[iCurrentRoleIndex]); - role.PtrZ(); - - } - break; - - case OMX_IndexParamDisableResourceConcealment: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentParameterStructure, - sizeof(OMX_RESOURCECONCEALMENTTYPE)))) - { - return omxRetValue; - } - - OMX_RESOURCECONCEALMENTTYPE* pResConceal - = static_cast( - apComponentParameterStructure); - - *pResConceal = iParamDisableResourceConcealment; - - } - break; - case OMX_IndexParamSuspensionPolicy: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentParameterStructure, - sizeof(OMX_PARAM_SUSPENSIONPOLICYTYPE)))) - { - return omxRetValue; - } - - OMX_PARAM_SUSPENSIONPOLICYTYPE* pSuspensionPolicy - = static_cast( - apComponentParameterStructure); - - *pSuspensionPolicy = iParamSuspensionPolicy; - - } - break; - - case OMX_IndexParamPriorityMgmt: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentParameterStructure, - sizeof(OMX_PRIORITYMGMTTYPE)))) - { - return omxRetValue; - } - - OMX_PRIORITYMGMTTYPE* pPriorityMgmt - = static_cast( - apComponentParameterStructure); - - *pPriorityMgmt = iConfigPriorityMgmt; - - } - break; - - default: - { - __ASSERT_ALWAYS(EFalse, - User::Panic(KOmxILConfigManagerPanicCategory, 1)); - } - }; - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILConfigManager::SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - OMX_BOOL aInitTime /* = OMX_TRUE */) - { - DEBUG_PRINTF(_L8("COmxILConfigManager::SetParameter")); - - TInt index = FindParamIndex(aParamIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamStandardComponentRole: - { - if (!aInitTime) - { - return OMX_ErrorIncorrectStateOperation; - } - - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_PARAM_COMPONENTROLETYPE)))) - { - return omxRetValue; - } - - const OMX_PARAM_COMPONENTROLETYPE* pComponentRole - = static_cast( - apComponentParameterStructure); - - TPtrC8 roleToFindPtr( - static_cast(pComponentRole->cRole)); - - HBufC8* pRoleToFind = HBufC8::New(OMX_MAX_STRINGNAME_SIZE); - if (!pRoleToFind) - { - return OMX_ErrorInsufficientResources; - } - *pRoleToFind = roleToFindPtr; - - TInt newRoleIndex = 0; - if (KErrNotFound == - (newRoleIndex = - iComponentRoleList.Find(pRoleToFind, - TIdentityRelation( - &COmxILConfigManager::CompareRoles)))) - { - delete pRoleToFind; - return OMX_ErrorBadParameter; - } - - if (*pRoleToFind != *(iComponentRoleList[iCurrentRoleIndex])) - { - // At this point, it is mandated that the component populates all - // defaults according to the new role that has just been set by the - // IL Client - if (OMX_ErrorNone != - (omxRetValue = - iPortManager.ComponentRoleIndication(newRoleIndex))) - { - delete pRoleToFind; - return omxRetValue; - } - - iCurrentRoleIndex = newRoleIndex; - - } - - delete pRoleToFind; - - } - break; - - case OMX_IndexParamDisableResourceConcealment: - { - if (!aInitTime) - { - return OMX_ErrorIncorrectStateOperation; - } - - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_RESOURCECONCEALMENTTYPE)))) - { - return omxRetValue; - } - - const OMX_RESOURCECONCEALMENTTYPE* pResConceal - = static_cast( - apComponentParameterStructure); - - iParamDisableResourceConcealment = *pResConceal; - - } - break; - - case OMX_IndexParamSuspensionPolicy: - { - if (!aInitTime) - { - return OMX_ErrorIncorrectStateOperation; - } - - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_PARAM_SUSPENSIONPOLICYTYPE)))) - { - return omxRetValue; - } - - const OMX_PARAM_SUSPENSIONPOLICYTYPE* pSuspensionPolicy - = static_cast( - apComponentParameterStructure); - - // OMX_SuspensionEnabled is the last of the supported values as of - // v1.1.1 - if (pSuspensionPolicy->ePolicy > OMX_SuspensionEnabled) - { - return OMX_ErrorBadParameter; - } - - iParamSuspensionPolicy = *pSuspensionPolicy; - - } - break; - - case OMX_IndexParamPriorityMgmt: - { - if (!aInitTime) - { - return OMX_ErrorIncorrectStateOperation; - } - - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_PRIORITYMGMTTYPE)))) - { - return omxRetValue; - } - - - const OMX_PRIORITYMGMTTYPE* pPriorityMgmt - = static_cast( - apComponentParameterStructure); - - iConfigPriorityMgmt = *pPriorityMgmt; - - } - break; - - default: - { - __ASSERT_ALWAYS(EFalse, - User::Panic(KOmxILConfigManagerPanicCategory, 1)); - } - }; - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILConfigManager::GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const - { - DEBUG_PRINTF(_L8("COmxILConfigManager::GetConfig")); - - TInt index = FindConfigIndex(aConfigIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aConfigIndex) - { - case OMX_IndexConfigPriorityMgmt: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentConfigStructure, - sizeof(OMX_PRIORITYMGMTTYPE)))) - { - return omxRetValue; - } - - OMX_PRIORITYMGMTTYPE* pPriorityMgmt - = static_cast( - apComponentConfigStructure); - - *pPriorityMgmt = iConfigPriorityMgmt; - - } - break; - default: - { - __ASSERT_ALWAYS(EFalse, - User::Panic(KOmxILConfigManagerPanicCategory, 1)); - } - }; - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILConfigManager::SetConfig(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure) - - { - DEBUG_PRINTF(_L8("COmxILConfigManager::SetConfig")); - - TInt index = FindConfigIndex(aConfigIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aConfigIndex) - { - case OMX_IndexConfigPriorityMgmt: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentConfigStructure), - sizeof(OMX_PRIORITYMGMTTYPE)))) - { - return omxRetValue; - } - - const OMX_PRIORITYMGMTTYPE* pPriorityMgmt - = static_cast( - apComponentConfigStructure); - - iConfigPriorityMgmt = *pPriorityMgmt; - - } - break; - default: - { - __ASSERT_ALWAYS(EFalse, - User::Panic(KOmxILConfigManagerPanicCategory, 1)); - } - }; - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILConfigManager::GetExtensionIndex( - OMX_STRING /*aParameterName*/, - OMX_INDEXTYPE* /*apIndexType*/) const - { - DEBUG_PRINTF(_L8("COmxILConfigManager::GetExtensionIndex")); - - // No custom index here for now... - return OMX_ErrorUnsupportedIndex; - } - -EXPORT_C OMX_ERRORTYPE -COmxILConfigManager::ComponentRoleEnum(OMX_U8* aRole, - OMX_U32 aIndex) const - { - DEBUG_PRINTF(_L8("COmxILConfigManager::ComponentRoleEnum")); - - // TWC:OpenmaxIL requires error code OMX_ErrorNoMore to be returned when no more roles - if (aIndex >= iComponentRoleList.Count()) - { - return OMX_ErrorNoMore; - } - - HBufC8* pRole = iComponentRoleList[aIndex]; - - TPtr8 role(reinterpret_cast(aRole), - OMX_MAX_STRINGNAME_SIZE); - role = *pRole; - role.PtrZ(); - - return OMX_ErrorNone; - - } - -TBool -COmxILConfigManager::CompareRoles( - const HBufC8& aRole1, const HBufC8& aRole2) - { - return (aRole1 == aRole2); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilconfigmanager.h --- a/omxil/omxilcomponentcommon/src/common/omxilconfigmanager.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILCONFIGMANAGER_H -#define OMXILCONFIGMANAGER_H - -#include -#include -#include -#include - -#include "omxilindexmanager.h" - -/** - Config Manager Panic category -*/ -_LIT(KOmxILConfigManagerPanicCategory, "OmxILConfigManager"); - - -// Forward declarations -class COmxILPortManager; - - -/** - This class is a placeholder for those OpenMAX IL parameters and configs that - apply to the component as a whole and not to an specific port in the - component. The design of this class should be revisited as the OpenMAX IL - resource management logic is added. For now resource management-related - params/configs values can only be set or queried but the associated - functionality is missing. - */ -class COmxILConfigManager : public COmxILIndexManager - { - -public: - - IMPORT_C static COmxILConfigManager* NewL( - COmxILPortManager& aPortManager, - const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList); - - IMPORT_C ~COmxILConfigManager(); - - IMPORT_C virtual OMX_ERRORTYPE GetComponentVersion( - OMX_STRING aComponentName, - OMX_VERSIONTYPE* apComponentVersion, - OMX_VERSIONTYPE* apSpecVersion, - OMX_UUIDTYPE* apComponentUUID) const; - - IMPORT_C virtual OMX_ERRORTYPE GetParameter( - OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const; - - IMPORT_C virtual OMX_ERRORTYPE SetParameter( - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - OMX_BOOL aInitTime = OMX_TRUE); - - IMPORT_C virtual OMX_ERRORTYPE GetConfig( - OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - IMPORT_C virtual OMX_ERRORTYPE SetConfig( - OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure); - - IMPORT_C virtual OMX_ERRORTYPE GetExtensionIndex( - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - - IMPORT_C OMX_ERRORTYPE ComponentRoleEnum( - OMX_U8* aRole, - OMX_U32 aIndex) const; - -protected: - - IMPORT_C explicit COmxILConfigManager(COmxILPortManager& aPortManager); - - IMPORT_C void ConstructL(const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList); - - - static TBool CompareRoles(const HBufC8& aRole1, const HBufC8& aRole2); - - -protected: - - // Reference to the component's port manager - COmxILPortManager& iPortManager; - - // Reference to the component's port manager - RBuf8 iComponentName; - - // The list of OpenMAX IL roles supported by the component - RPointerArray iComponentRoleList; - - // The current OpenMAX IL role - TUint iCurrentRoleIndex; - - // The current version of this component (this is different to the spec - // version) - OMX_VERSIONTYPE iComponentVersion; - - // OpenMAX IL resource concealment structure (only set/get, resource - // concealment logic not implemented) - OMX_RESOURCECONCEALMENTTYPE iParamDisableResourceConcealment; - - // OpenMAX IL component suspension policy structure (only set/get, - // component suspension logic not implemented) - OMX_PARAM_SUSPENSIONPOLICYTYPE iParamSuspensionPolicy; - - // OpenMAX IL component priority structure (only set/get, component - // priority logic not implemented) - OMX_PRIORITYMGMTTYPE iConfigPriorityMgmt; - - }; - -#endif // OMXILCONFIGMANAGER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilfsm.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilfsm.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,783 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "log.h" -#include "omxilfsm.h" -#include "omxilstate.h" -#include "omxilportmanager.h" -#include "omxilconfigmanager.h" -#include "omxilcallbackmanager.h" -#include "omxilprocessingfunction.h" - -#define RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED(_a) \ - { \ - const OMX_ERRORTYPE _err = _a; \ - if (OMX_ErrorNone == _err) return _err; \ - else return SendOmxErrorEventIfNeeded(_err); \ - } - - -const TInt COmxILFsm::KMaxMsgQueueEntries; - -EXPORT_C COmxILFsm* -COmxILFsm::NewL(COmxILComponent& aComponent, - COmxILProcessingFunction& aProcFunction, - COmxILPortManager& aPortManager, - COmxILConfigManager& aConfigManager, - MOmxILCallbackManagerIf& aCallbacks) - { - DEBUG_PRINTF(_L8("COmxILFsm::NewLC")); - - COmxILFsm* self = new (ELeave) COmxILFsm(aComponent, - aProcFunction, - aPortManager, - aConfigManager, - aCallbacks); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return (self); - } - -void -COmxILFsm::ConstructL() - { - DEBUG_PRINTF(_L8("COmxILFsm::ConstructL")); - - // Create the FSM states - - // Init the array - for (TUint i=0; i < EStateMax; ++i) - { - iStates.AppendL(NULL); - } - - // Add the standard states... - iStates[EStateInvalid] = new (ELeave)COmxILStateInvalid; - iStates[EStateLoaded] = new (ELeave)COmxILStateLoaded; - iStates[EStateIdle] = new (ELeave)COmxILStateIdle; - iStates[EStateExecuting] = new (ELeave)COmxILStateExecuting; - iStates[EStatePause] = new (ELeave)COmxILStatePause; - iStates[EStateWaitForResources] = new (ELeave)COmxILStateWaitForResources; - - // Now add the substates - iStates[ESubStateLoadedToIdle] = new (ELeave)COmxILStateLoadedToIdle; - iStates[ESubStateIdleToLoaded] = new (ELeave)COmxILStateIdleToLoaded; - iStates[ESubStateExecutingToIdle] = new (ELeave)COmxILStateExecutingToIdle; - iStates[ESubStatePauseToIdle] = new (ELeave)COmxILStatePauseToIdle; - - iCallbacks.SetPortManager(iPortManager); - iCallbacks.SetFsm(*this); - - } - -COmxILFsm::COmxILFsm(COmxILComponent& aComponent, - COmxILProcessingFunction& aProcFunction, - COmxILPortManager& aPortManager, - COmxILConfigManager& aConfigManager, - MOmxILCallbackManagerIf& aCallbacks) - : - iComponent(aComponent), - iProcFunction(aProcFunction), - iPortManager(aPortManager), - iConfigManager(aConfigManager), - iCallbacks(aCallbacks), - iStates(), - iCurrentStateIndex(EStateMax), - ipCurrentState(0) - { - DEBUG_PRINTF(_L8("COmxILFsm::COmxILFsm")); - } - -COmxILFsm::~COmxILFsm() - { - DEBUG_PRINTF(_L8("COmxILFsm::~COmxILFsm")); - - iCurrentStateIndex = EStateMax; - ipCurrentState = 0; - iStates.ResetAndDestroy(); - - } - -OMX_ERRORTYPE -COmxILFsm::InitFsm() - { - DEBUG_PRINTF(_L8("COmxILFsm::InitFsm")); - - // Let's get ready to handle API calls... - iCurrentStateIndex = EStateLoaded; - ipCurrentState = iStates[iCurrentStateIndex]; - return OMX_ErrorNone; - - } - -COmxILComponent* -COmxILFsm::GetComponent() const - { - return &iComponent; - } - -OMX_ERRORTYPE -COmxILFsm::PopulateBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILFsm::PopulateBuffer")); - - TBool portPopulationCompleted = EFalse; - OMX_ERRORTYPE omxRetValue = - ipCurrentState->PopulateBuffer(*this, - appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted); - - if (OMX_ErrorNone == omxRetValue) - { - if (portPopulationCompleted && - ESubStateLoadedToIdle == iCurrentStateIndex && - iPortManager.AllPortsPopulated()) - { - // Complete here the transition to OMX_StateIdle - omxRetValue = FsmTransition(EStateIdle); - if (OMX_ErrorNone == omxRetValue) - { - // Notify the IL client that port population has - // completed sucessfully - omxRetValue = iCallbacks.TransitionCompleteNotification( - OMX_StateIdle); - - } - } - } - - if (OMX_ErrorNone == omxRetValue || - OMX_ErrorInsufficientResources == omxRetValue) - { - // OMX_ErrorInsufficientResources is allowed in OMX_EmptyThisBuffer and - // OMX_FillThisBuffer - return omxRetValue; - } - else - { - return SendOmxErrorEventIfNeeded(omxRetValue); - } - - } - -OMX_ERRORTYPE -COmxILFsm::FsmTransition(TStateIndex aNewState) - { - DEBUG_PRINTF2(_L8("COmxILFsm::FsmTransition : %d"), aNewState); - - __ASSERT_ALWAYS(aNewState < EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (aNewState != iCurrentStateIndex) - { - // We notify the processing function of all the state transitions, even - // if they are not to a final OpenMAX IL state. - OMX_ERRORTYPE omxRetValue; - if (OMX_ErrorNone != - (omxRetValue = - iProcFunction.StateTransitionIndication(aNewState))) - { - // No need of propagating further error codes if the component is - // transitioning to OMX_StateInvalid or if the PF itself is - // invalidating the component... - if (EStateInvalid != aNewState && - OMX_ErrorInvalidState != omxRetValue) - { - return omxRetValue; - } - } - - iCurrentStateIndex = aNewState; - ipCurrentState = iStates[iCurrentStateIndex]; - - } - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILFsm::FsmTransition(TUint32 aNewState) - { - - return FsmTransition(static_cast(aNewState)); - - } - - -OMX_ERRORTYPE -COmxILFsm::GetComponentVersion(OMX_STRING aComponentName, - OMX_VERSIONTYPE* apComponentVersion, - OMX_VERSIONTYPE* apSpecVersion, - OMX_UUIDTYPE* apComponentUUID) const - { - DEBUG_PRINTF(_L8("COmxILFsm::GetComponentVersion")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // This api should not be allowed in OMX_StateInvalid - if (EStateInvalid == iCurrentStateIndex) - { - return SendOmxErrorEventIfNeeded(OMX_ErrorInvalidState); - } - - if (!aComponentName || - !apComponentVersion || - !apSpecVersion || - !apComponentUUID) - { - return OMX_ErrorBadParameter; - } - - // This API call is independent of the current state. Its handled by the - // the config manager - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - iConfigManager.GetComponentVersion( - aComponentName, - apComponentVersion, - apSpecVersion, - apComponentUUID)); - } - - -OMX_ERRORTYPE -COmxILFsm::SendCommand(OMX_COMMANDTYPE aCommand, - TUint32 anParam1, - TAny* apCmdData) - { - DEBUG_PRINTF3(_L8("COmxILFsm::SendCommand : command [%d] Param1 [%d]"), aCommand, anParam1); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // Do some very minor error checking here to try to save some time... - if (OMX_CommandStateSet == aCommand && - anParam1 > OMX_StateWaitForResources) - { - return OMX_ErrorBadParameter; - } - - TOmxILCommand command(aCommand, anParam1, apCmdData); - OMX_ERRORTYPE sendCommandError; - switch (aCommand) - { - case OMX_CommandStateSet: - { - sendCommandError = ipCurrentState->CommandStateSet(*this, command); - } - break; - case OMX_CommandFlush: - { - sendCommandError = ipCurrentState->CommandFlush(*this, command); - } - break; - case OMX_CommandPortDisable: - { - sendCommandError = ipCurrentState->CommandPortDisable(*this, command); - } - break; - case OMX_CommandPortEnable: - { - sendCommandError = ipCurrentState->CommandPortEnable(*this, command); - } - break; - case OMX_CommandMarkBuffer: - { - sendCommandError = ipCurrentState->CommandMarkBuffer(*this, command); - } - break; - default: - { - // This is an invalid command type - return OMX_ErrorBadParameter; - } - }; - - if (OMX_ErrorNone == sendCommandError || - OMX_ErrorInsufficientResources == sendCommandError) - { - // OMX_ErrorInsufficientResources is allowed in OMX_SendCommand - return sendCommandError; - } - else - { - return SendOmxErrorEventIfNeeded(sendCommandError); - } - - } - - -OMX_ERRORTYPE -COmxILFsm::GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILFsm::GetParameter")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apComponentParameterStructure) - { - return OMX_ErrorBadParameter; - } - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - ipCurrentState->GetParameter(*this, aParamIndex, - apComponentParameterStructure)); - } - - -OMX_ERRORTYPE -COmxILFsm::SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - DEBUG_PRINTF(_L8("COmxILFsm::SetParameter")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apComponentParameterStructure) - { - return OMX_ErrorBadParameter; - } - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - ipCurrentState->SetParameter(*this, aParamIndex, - apComponentParameterStructure)); - } - - -OMX_ERRORTYPE -COmxILFsm::GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const - { - DEBUG_PRINTF(_L8("COmxILFsm::GetConfig")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apComponentConfigStructure) - { - return OMX_ErrorBadParameter; - } - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - ipCurrentState->GetConfig(*this, - aConfigIndex, - apComponentConfigStructure)); - - } - - -OMX_ERRORTYPE -COmxILFsm::SetConfig(OMX_INDEXTYPE aIndex, - const TAny* apComponentConfigStructure) - { - DEBUG_PRINTF(_L8("COmxILFsm::SetConfig")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apComponentConfigStructure) - { - return OMX_ErrorBadParameter; - } - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - ipCurrentState->SetConfig(*this, aIndex, apComponentConfigStructure)); - - } - - -OMX_ERRORTYPE -COmxILFsm::GetExtensionIndex( - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const - { - DEBUG_PRINTF(_L8("COmxILFsm::GetExtensionIndex")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apIndexType || !aParameterName) - { - return OMX_ErrorBadParameter; - } - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - ipCurrentState->GetExtensionIndex(*this, - aParameterName, - apIndexType)); - } - - -OMX_ERRORTYPE -COmxILFsm::GetState(OMX_STATETYPE* apState) const - { - DEBUG_PRINTF(_L8("COmxILFsm::GetState")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apState) - { - return OMX_ErrorBadParameter; - } - - *apState = ipCurrentState->GetState(); - - return OMX_ErrorNone; - - } - - -OMX_ERRORTYPE -COmxILFsm::ComponentTunnelRequest(OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) - { - DEBUG_PRINTF(_L8("COmxILFsm::ComponentTunnelRequest")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // Here, since NULL is a valid parameter for aTunneledComp, checking of - // input parameters is completely done by the ports. - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - ipCurrentState->ComponentTunnelRequest(*this, - aPort, - aTunneledComp, - aTunneledPort, - apTunnelSetup)); - - } - - -OMX_ERRORTYPE -COmxILFsm::UseBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILFsm::UseBuffer")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!appBufferHdr || !aSizeBytes || !apBuffer) - { - return OMX_ErrorBadParameter; - } - - return PopulateBuffer(appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer); - - } - - -OMX_ERRORTYPE -COmxILFsm::AllocateBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes) - { - DEBUG_PRINTF(_L8("COmxILFsm::AllocateBuffer")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!appBufferHdr || !aSizeBytes) - { - return OMX_ErrorBadParameter; - } - - - return PopulateBuffer(appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - 0); - - } - - -OMX_ERRORTYPE -COmxILFsm::FreeBuffer(OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILFsm::FreeBuffer")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apBuffer) - { - return OMX_ErrorBadParameter; - } - - TBool portDepopulationCompleted = EFalse; - OMX_ERRORTYPE omxRetValue = - ipCurrentState->FreeBuffer(*this, - aPortIndex, - apBuffer, - portDepopulationCompleted); - - if (OMX_ErrorNone == omxRetValue) - { - if (portDepopulationCompleted) - { - if (ESubStateIdleToLoaded == iCurrentStateIndex) - { - if (iPortManager.AllPortsDePopulated()) - { - // Complete here the transition to OMX_StateLoaded - omxRetValue = FsmTransition(EStateLoaded); - if (OMX_ErrorNone == omxRetValue) - { - // Notify the IL client that port depopulation has - // completed sucessfully - omxRetValue = - iCallbacks.TransitionCompleteNotification( - OMX_StateLoaded); - } - } - } - } - } - - if (OMX_ErrorNone == omxRetValue) - { - return OMX_ErrorNone; - } - else - { - return SendOmxErrorEventIfNeeded(omxRetValue); - } - - } - - -OMX_ERRORTYPE -COmxILFsm::EmptyThisBuffer(OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF2(_L8("COmxILFsm::EmptyThisBuffer : BUFFER [%X]"), apBuffer); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apBuffer) - { - return OMX_ErrorBadParameter; - } - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - ipCurrentState->EmptyThisBuffer(*this, apBuffer)); - - } - - -OMX_ERRORTYPE -COmxILFsm::FillThisBuffer(OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF2(_L8("COmxILFsm::FillThisBuffer : BUFFER [%X]"), apBuffer); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apBuffer) - { - return OMX_ErrorBadParameter; - } - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - ipCurrentState->FillThisBuffer(*this, apBuffer)); - - } - - -OMX_ERRORTYPE -COmxILFsm::SetCallbacks(const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData) - { - DEBUG_PRINTF(_L8("COmxILFsm::SetCallbacks")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!apCallbacks) - { - return OMX_ErrorBadParameter; - } - - // This api should only be allowed in OMX_StateLoaded - if (EStateLoaded != iCurrentStateIndex) - { - return OMX_ErrorIncorrectStateOperation; - } - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - iCallbacks.RegisterILClientCallbacks(apCallbacks, apAppData)); - - } - - -OMX_ERRORTYPE -COmxILFsm::UseEGLImage(OMX_BUFFERHEADERTYPE** /*appBufferHdr*/, - OMX_U32 /*aPortIndex*/, - OMX_PTR /*aAppPrivate*/, - void* /*eglImage*/) - { - DEBUG_PRINTF(_L8("COmxILFsm::UseEGLImage")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - return OMX_ErrorNotImplemented; - } - -OMX_ERRORTYPE -COmxILFsm::ComponentRoleEnum(OMX_U8* aRole, - OMX_U32 aIndex) const - { - DEBUG_PRINTF(_L8("COmxILFsm::ComponentRoleEnum")); - - __ASSERT_DEBUG(iCurrentStateIndex != EStateMax, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // This api should not be allowed in OMX_StateInvalid - if (EStateInvalid == iCurrentStateIndex) - { - return SendOmxErrorEventIfNeeded(OMX_ErrorInvalidState); - } - - if (!aRole) - { - return OMX_ErrorBadParameter; - } - - RETURN_OMX_ERROR_AND_EVENT_IF_NEEDED( - iConfigManager.ComponentRoleEnum(aRole, - aIndex)); - - } - -/** - This method is here to fullfill the following functionalities: - - -# It is used to make sure that the component error codes are returned to - the IL Client in a way that conforms with Table 3-9 of the OpenMAX IL - 1.1.1 spec. This table specifies which error codes must be sent with - EventHandler. If an error code is to be sent via EventHandler, the API - return code must be OMX_ErrorNone. - - -# This method is also used to invalidate the component whenever an internal - component action returns OMX_ErrorInvalidState. For example, this is - useful when code executed by a port or by the processing function cannot - recover from an internal error. Returning OMX_ErrorInvalidState in that - kind of situation will invalidate the component in - SendOmxErrorEventIfNeeded and the event will be conveyed to the IL Client - as mandated by the spec. - - @param aError An OpenMAX IL error code. - */ -OMX_ERRORTYPE -COmxILFsm::SendOmxErrorEventIfNeeded(OMX_ERRORTYPE aError) - { - DEBUG_PRINTF2(_L8("COmxILFsm::SendOmxErrorEventIfNeeded - aError = 0x%X"), aError); - - OMX_ERRORTYPE returnError = aError; - switch(aError) - { - case OMX_ErrorInsufficientResources: - { - DEBUG_PRINTF(_L8("COmxILFsm::SendOmxErrorEventIfNeeded aError[OMX_ErrorInsufficientResources]")); - iCallbacks.ErrorEventNotification(aError); - } - break; - case OMX_ErrorInvalidState: - { - DEBUG_PRINTF(_L8("COmxILFsm::SendOmxErrorEventIfNeeded aError[OMX_ErrorInvalidState]")); - iCallbacks.ErrorEventNotification(aError); - if (EStateInvalid != iCurrentStateIndex) - { - returnError = OMX_ErrorNone; - } - } - break; - case OMX_ErrorUnderflow: - case OMX_ErrorOverflow: - case OMX_ErrorHardware: - case OMX_ErrorStreamCorrupt: - case OMX_ErrorResourcesLost: - case OMX_ErrorSameState: - case OMX_ErrorResourcesPreempted: - case OMX_ErrorPortUnresponsiveDuringAllocation: - case OMX_ErrorPortUnresponsiveDuringDeallocation: - case OMX_ErrorPortUnresponsiveDuringStop: - case OMX_ErrorIncorrectStateTransition: - case OMX_ErrorPortUnpopulated: - case OMX_ErrorDynamicResourcesUnavailable: - case OMX_ErrorMbErrorsInFrame: - case OMX_ErrorFormatNotDetected: - { - DEBUG_PRINTF2(_L8("COmxILFsm::SendOmxErrorEventIfNeeded aError[%X]"), aError); - iCallbacks.ErrorEventNotification(aError); - returnError = OMX_ErrorNone; - } - break; - }; - - if(OMX_ErrorInvalidState == aError && - EStateInvalid != iCurrentStateIndex) - { - // Invalidate this component. This instance of the component should be - // destroyed by the IL Client after this. No need to check error code. - FsmTransition(EStateInvalid); - } - - return returnError; - - } - -OMX_ERRORTYPE -COmxILFsm::SendOmxErrorEventIfNeeded(OMX_ERRORTYPE aError) const - { - DEBUG_PRINTF(_L8("COmxILFsm::SendOmxErrorEventIfNeeded")); - - return const_cast(this)->SendOmxErrorEventIfNeeded(aError); - - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilfsm.h --- a/omxil/omxilcomponentcommon/src/common/omxilfsm.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,221 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILFSM_H -#define OMXILFSM_H - - -#include -#include -#include - -#include "omxilcommand.h" - -// forward declarations -class COmxILPortManager; -class COmxILConfigManager; -class MOmxILCallbackManagerIf; -class COmxILComponent; -class COmxILProcessingFunction; - -/** - FSM Panic category -*/ -_LIT(KOmxILFsmPanicCategory, "OmxILFsm"); - -/** - FSM class that represents the main FSM context object of the State - pattern. It delegates most events for processing to the current state - object. - */ -NONSHARABLE_CLASS(COmxILFsm) : public CBase - { - -public: - - static const TInt KMaxMsgQueueEntries = 10; - - enum TStateIndex - { - EStateInvalid = OMX_StateInvalid, - EStateLoaded = OMX_StateLoaded, - EStateIdle = OMX_StateIdle, - EStateExecuting = OMX_StateExecuting, - EStatePause = OMX_StatePause, - EStateWaitForResources = OMX_StateWaitForResources, - ESubStateLoadedToIdle, - ESubStateIdleToLoaded, - ESubStateExecutingToIdle, - ESubStatePauseToIdle, - EStateMax - }; - - -public: - - IMPORT_C static COmxILFsm* NewL(COmxILComponent& aComponent, - COmxILProcessingFunction& aProcFunction, - COmxILPortManager& aPortManager, - COmxILConfigManager& aConfigManager, - MOmxILCallbackManagerIf& aCallbacks); - - ~COmxILFsm(); - - OMX_ERRORTYPE InitFsm(); - - COmxILComponent* GetComponent() const; - - // - // OpenMAX IL API calls - // - - OMX_ERRORTYPE GetComponentVersion(OMX_STRING aComponentName, - OMX_VERSIONTYPE* pComponentVersion, - OMX_VERSIONTYPE* pSpecVersion, - OMX_UUIDTYPE* pComponentUUID) const; - - OMX_ERRORTYPE SendCommand(OMX_COMMANDTYPE Cmd, - TUint32 nParam1, - TAny* apCmdData); - - OMX_ERRORTYPE GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const; - - OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - OMX_ERRORTYPE SetConfig(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure); - - OMX_ERRORTYPE GetExtensionIndex(OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - - OMX_ERRORTYPE GetState(OMX_STATETYPE* apState) const; - - OMX_ERRORTYPE ComponentTunnelRequest(OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - OMX_ERRORTYPE UseBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer); - - OMX_ERRORTYPE AllocateBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes); - - OMX_ERRORTYPE FreeBuffer(OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE EmptyThisBuffer(OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE SetCallbacks(const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData); - - OMX_ERRORTYPE UseEGLImage(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR aAppPrivate, - void* eglImage); - - OMX_ERRORTYPE ComponentRoleEnum(OMX_U8* aRole, - OMX_U32 aIndex) const; - -private: - - // Declaration of nested private state classes - class COmxILState; - class COmxILStateInvalid; - class COmxILStateLoaded; - class COmxILStateLoadedToIdle; - class COmxILStateWaitForResources; - class COmxILStateIdle; - class COmxILStateIdleToLoaded; - class COmxILStateExecuting; - class COmxILStateExecutingToIdle; - class COmxILStatePause; - class COmxILStatePauseToIdle; - class MOmxILPauseOrExecutingToIdle; - - // Note that the following friends don't break COmxILFsm's interface as all - // friends below are COmxILFsm's private nested classes and therefore they - // are logically part of COmxILFsm implementation - friend class COmxILState; - friend class COmxILStateInvalid; - friend class COmxILStateLoaded; - friend class COmxILStateLoadedToIdle; - friend class COmxILStateWaitForResources; - friend class COmxILStateIdle; - friend class COmxILStateIdleToLoaded; - friend class COmxILStateExecuting; - friend class COmxILStateExecutingToIdle; - friend class COmxILStatePause; - friend class COmxILStatePauseToIdle; - friend class MOmxILPauseOrExecutingToIdle; - -private: - - COmxILFsm(COmxILComponent& aComponent, - COmxILProcessingFunction& aProcFunction, - COmxILPortManager& aPortManager, - COmxILConfigManager& aConfigManager, - MOmxILCallbackManagerIf& aCallbacks); - - void ConstructL(); - - OMX_ERRORTYPE PopulateBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer); - - OMX_ERRORTYPE FsmTransition(TStateIndex aNewState); - - OMX_ERRORTYPE FsmTransition(TUint32 aNewState); - - OMX_ERRORTYPE SendOmxErrorEventIfNeeded(OMX_ERRORTYPE aError) const; - - OMX_ERRORTYPE SendOmxErrorEventIfNeeded(OMX_ERRORTYPE aError); - -private: - - COmxILComponent& iComponent; - COmxILProcessingFunction& iProcFunction; - COmxILPortManager& iPortManager; - COmxILConfigManager& iConfigManager; - MOmxILCallbackManagerIf& iCallbacks; - - RPointerArray iStates; - TStateIndex iCurrentStateIndex; - COmxILState* ipCurrentState; - - }; - - -#endif // OMXILFSM_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilimageport.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilimageport.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent - */ - -#include "omxilimageport.h" -#include "omxilutil.h" -#include "log.h" - -EXPORT_C -COmxILImagePort::COmxILImagePort( - const TOmxILCommonPortData& aCommonPortData, - const RArray& aSupportedImageFormats, - const RArray& aSupportedColorFormats) -:COmxILPort(aCommonPortData), -//[YYC]: bitwise copy is unsafe, there should be a protected ConstructL or alike for array deep copy -iSupportedImageFormats(aSupportedImageFormats), -iSupportedColorFormats(aSupportedColorFormats) - { - DEBUG_PRINTF(_L8("COmxILImagePort::COmxILImagePort")); - - TInt numImageFormats = iSupportedImageFormats.Count(); - TInt numColorFormats = iSupportedColorFormats.Count(); - iParamImagePortFormat.nSize = sizeof(OMX_IMAGE_PARAM_PORTFORMATTYPE); - iParamImagePortFormat.nVersion = aCommonPortData.iOmxVersion; - iParamImagePortFormat.nPortIndex = aCommonPortData.iPortIndex; - iParamImagePortFormat.nIndex = numImageFormats ? numImageFormats - 1 : 0; - iParamImagePortFormat.eCompressionFormat = numImageFormats ? iSupportedImageFormats[0] : OMX_IMAGE_CodingUnused; - iParamImagePortFormat.eColorFormat = numColorFormats ? iSupportedColorFormats[0] : OMX_COLOR_FormatUnused; - } - -EXPORT_C -COmxILImagePort::~COmxILImagePort() - { - DEBUG_PRINTF(_L8("COmxILImagePort::~COmxILImagePort")); - iSupportedImageFormats.Close(); - iSupportedColorFormats.Close(); - } - -EXPORT_C OMX_ERRORTYPE -COmxILImagePort::GetLocalOmxParamIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILImagePort::GetLocalOmxParamIndexes")); - - // Always collect local indexes from parent - OMX_ERRORTYPE omxRetValue = COmxILPort::GetLocalOmxParamIndexes(aIndexArray); - - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - TInt err = aIndexArray.InsertInOrder(OMX_IndexParamImagePortFormat); - - // Note that index duplication is OK. - if (KErrNone != err && KErrAlreadyExists != err) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILImagePort::GetLocalOmxConfigIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILImagePort::GetLocalOmxConfigIndexes")); - - // Always collect local indexes from parent - return COmxILPort::GetLocalOmxConfigIndexes(aIndexArray); - - } - -EXPORT_C OMX_ERRORTYPE COmxILImagePort::GetParameter(OMX_INDEXTYPE aParamIndex, TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILImagePort::GetParameter")); - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - - switch(aParamIndex) - { - case OMX_IndexParamImagePortFormat: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_IMAGE_PARAM_PORTFORMATTYPE)))) - { - return omxRetValue; - } - - OMX_IMAGE_PARAM_PORTFORMATTYPE* imagePortDefinition = static_cast(apComponentParameterStructure); - - if(OMX_IMAGE_CodingUnused == iParamImagePortFormat.eCompressionFormat) - { - if (imagePortDefinition->nIndex >= iSupportedColorFormats.Count()) - { - return OMX_ErrorNoMore; - } - imagePortDefinition->eCompressionFormat = OMX_IMAGE_CodingUnused; - imagePortDefinition->eColorFormat = iSupportedColorFormats[imagePortDefinition->nIndex]; - } - else - { - if (imagePortDefinition->nIndex >= iSupportedImageFormats.Count()) - { - return OMX_ErrorNoMore; - } - imagePortDefinition->eCompressionFormat = iSupportedImageFormats[imagePortDefinition->nIndex]; - } - break; - } - default: - { - // Try the parent's indexes - return COmxILPort::GetParameter(aParamIndex, apComponentParameterStructure); - } - }; - - return OMX_ErrorNone; - } - -EXPORT_C OMX_ERRORTYPE COmxILImagePort::SetParameter(OMX_INDEXTYPE aParamIndex, const TAny* apComponentParameterStructure, TBool& aUpdateProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILImagePort::SetParameter")); - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - - switch(aParamIndex) - { - case OMX_IndexParamImagePortFormat: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_IMAGE_PARAM_PORTFORMATTYPE)))) - { - return omxRetValue; - } - - const OMX_IMAGE_PARAM_PORTFORMATTYPE *componentParameterStructure = static_cast(apComponentParameterStructure); - - if(OMX_IMAGE_CodingUnused == componentParameterStructure->eCompressionFormat) - { - if(OMX_COLOR_FormatUnused == componentParameterStructure->eColorFormat) - { - // Both Compression Format and Color can not be Unused at the same time. - return OMX_ErrorBadParameter; - } - - if(iParamImagePortFormat.eColorFormat != componentParameterStructure->eColorFormat) - { - if(KErrNotFound == iSupportedColorFormats.Find(componentParameterStructure->eColorFormat)) - { - return OMX_ErrorUnsupportedSetting; - } - else - { - iParamImagePortFormat.eColorFormat = componentParameterStructure->eColorFormat; - } - aUpdateProcessingFunction = ETrue; - } - } - else - { - // Data is compressed. Change relevant variables. - if (OMX_COLOR_FormatUnused != componentParameterStructure->eColorFormat) - { - // Both Compression Format and Color can not be Unused at the same time. - return OMX_ErrorBadParameter; - } - - if (iParamImagePortFormat.eCompressionFormat != componentParameterStructure->eCompressionFormat) - { - if(KErrNotFound == iSupportedImageFormats.Find(componentParameterStructure->eCompressionFormat)) - { - return OMX_ErrorUnsupportedSetting; - } - else - { - iParamImagePortFormat.eCompressionFormat = componentParameterStructure->eCompressionFormat; - aUpdateProcessingFunction = ETrue; - } - } - } - break; - } - default: - { - // Try the parent's indexes - return COmxILPort::SetParameter(aParamIndex, apComponentParameterStructure, aUpdateProcessingFunction); - } - }; - return OMX_ErrorNone; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilimageport.h --- a/omxil/omxilcomponentcommon/src/common/omxilimageport.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - * @file - * @internalTechnology - */ - -#ifndef OMXILIMAGEPORT_H -#define OMXILIMAGEPORT_H - -#include - -#include -#include -#include - -#include "omxilport.h" - -class COmxILImagePort : public COmxILPort - { - -public: - - IMPORT_C ~COmxILImagePort(); - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetLocalOmxParamIndexes(RArray& aIndexArray) const = 0; - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetLocalOmxConfigIndexes(RArray& aIndexArray) const = 0; - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const = 0; - // From COmxILPort - IMPORT_C OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) = 0; - -protected: - - IMPORT_C COmxILImagePort(const TOmxILCommonPortData& aCommonPortData, - const RArray& aSupportedImageFormats, - const RArray& aSupportedColorFormats); - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE SetFormatInPortDefinition( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, - TBool& aUpdateProcessingFunction) = 0; - - // From COmxILPort - IMPORT_C TBool IsTunnelledPortCompatible( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const = 0; - -protected: - - RArray iSupportedImageFormats; - RArray iSupportedColorFormats; - OMX_IMAGE_PARAM_PORTFORMATTYPE iParamImagePortFormat; - }; - -#endif // OMXILIMAGEPORT_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilincontextcallbackmanager.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilincontextcallbackmanager.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,768 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "log.h" -#include "omxilincontextcallbackmanager.h" -#include "omxilfsm.h" -#include "omxilutil.h" - -EXPORT_C COmxILInContextCallbackManager* -COmxILInContextCallbackManager::NewL( - OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks) - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::NewL")); - COmxILInContextCallbackManager* self = new (ELeave)COmxILInContextCallbackManager( - apComponentHandle, - apAppData, - apCallbacks); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -void -COmxILInContextCallbackManager::ConstructL() - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::ConstructL")); - - User::LeaveIfError(iLock.CreateLocal()); - - } - -COmxILInContextCallbackManager::COmxILInContextCallbackManager(OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks) - : - CBase(), - XOmxILCallbackManagerIfImpl( - static_cast(apComponentHandle), - apAppData, - apCallbacks), - iLock(), - iPendingQueue(), - iFlushPendingQueue(EFalse), - iCurrentState(OMX_StateLoaded), - iPreviousState(OMX_StateLoaded) - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::COmxILInContextCallbackManager")); - } - -EXPORT_C -COmxILInContextCallbackManager::~COmxILInContextCallbackManager() - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::~COmxILInContextCallbackManager Pending Queue count [%d]"), - iPendingQueue.Count()); - - iLock.Close(); - - iPendingQueue.Close(); - - } - -void -COmxILInContextCallbackManager::LockCallbackManager() - { - iLock.Wait(); - } - -void -COmxILInContextCallbackManager::UnlockCallbackManager() - { - iLock.Signal(); - } - -EXPORT_C void -COmxILInContextCallbackManager::SetPortManager(COmxILPortManager& apPortManager) - { - LockCallbackManager(); - DoSetPortManager(apPortManager); - UnlockCallbackManager(); - } - -EXPORT_C void -COmxILInContextCallbackManager::SetFsm(COmxILFsm& apFsm) - { - LockCallbackManager(); - DoSetFsm(apFsm); - UnlockCallbackManager(); - } - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::RegisterComponentHandle(OMX_HANDLETYPE aComponentHandle) - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::RegisterComponentHandle")); - LockCallbackManager(); - OMX_ERRORTYPE omxError = DoRegisterComponentHandle(aComponentHandle); - UnlockCallbackManager(); - return omxError; - } - -/** - The IL Client callback registration is handled in this implementation - asynchronously. Note that this implementation assumes that the IL Client - will update the callbacks information once all expected callbacks from this - component have already been received and therefore, the callback change will - be safe leading to no race condition at the IL Client side. - - @param apCallbacks The IL Client callback structure. - - @param apAppData Pointer to an application provided value so that the - application can have a component specific context when receiving - the callback. - - @return OMX_ERRORTYPE - */ -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::RegisterILClientCallbacks(const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData) - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::RegisterILClientCallbacks")); - - LockCallbackManager(); - OMX_ERRORTYPE omxError = DoRegisterILClientCallbacks(apCallbacks, apAppData); - UnlockCallbackManager(); - return omxError; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::RegisterTunnelCallback( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex) - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::RegisterTunnelCallback : aTunnelledComponentHandle [%x]"), aTunnelledComponentHandle); - - LockCallbackManager(); - OMX_ERRORTYPE omxError = DoRegisterTunnelCallback(aLocalPortIndex, - aLocalPortDirection, - aTunnelledComponentHandle, - aTunnelledPortIndex); - UnlockCallbackManager(); - return omxError; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::DeregisterTunnelCallback( - OMX_U32 aLocalPortIndex) - { - - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::DeregisterTunnelCallback")); - - LockCallbackManager(); - OMX_ERRORTYPE omxError = DoRegisterTunnelCallback(aLocalPortIndex, - OMX_DirMax, - 0, - 0); - UnlockCallbackManager(); - return omxError; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::RegisterBufferMarkPropagationPort( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex) - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::RegisterBufferMarkPropagationPort")); - - LockCallbackManager(); - OMX_ERRORTYPE omxError = DoRegisterBufferMarkPropagationPort( - aPortIndex, - aPropagationPortIndex); - UnlockCallbackManager(); - return omxError; - - } - -EXPORT_C TBool -COmxILInContextCallbackManager::BufferRemovalIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection) - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::BufferRemovalIndication")); - - return RemoveBuffersByBufferHeader( - iPendingQueue, apBufferHeader, aDirection); - - } - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::TransitionCompleteNotification(OMX_STATETYPE aOmxState) - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::TransitionCompleteNotification")); - - // No need to lock callback manager. Anyway, we should not have it locked - // when calling an IL Client callback method - OMX_ERRORTYPE omxError = EventNotification(OMX_EventCmdComplete, - OMX_CommandStateSet, - aOmxState, - 0); - - return omxError; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::CommandCompleteNotification(OMX_COMMANDTYPE aOmxCommand, - OMX_U32 aOmxPortIndex) - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::CommandCompleteNotification")); - - // No need to lock callback manager. Anyway, we should not have it locked - // when calling an IL Client callback method - - OMX_ERRORTYPE omxError = EventNotification(OMX_EventCmdComplete, - aOmxCommand, - aOmxPortIndex, - 0); - - return omxError; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::ErrorEventNotification(OMX_ERRORTYPE aOmxError) - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::ErrorEventNotification : aOmxError[%X] "), aOmxError); - - // No need to lock callback manager. Anyway, we should not have it locked - // when calling an IL Client callback method - OMX_ERRORTYPE omxError = EventNotification(OMX_EventError, - aOmxError, - 0, - 0); - - return omxError; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::EventNotification(OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo) - { - DEBUG_PRINTF4(_L8("COmxILInContextCallbackManager::EventNotification : aEvent[%u] aData1[%u] aData2[%u]"), - aEvent, aData1, aData2); - - OMX_ERRORTYPE omxError = OMX_ErrorNone; - switch(aData1) - { - case OMX_CommandStateSet: - { - LockCallbackManager(); - iPreviousState = iCurrentState; - iCurrentState = static_cast(aData2); - - DEBUG_PRINTF4(_L8("COmxILInContextCallbackManager::EventNotification() : Handle[%X] iPreviousState[%d] -> iCurrentState[%d]"), ipHandle, iPreviousState, iCurrentState); - - if (OMX_StatePause == iPreviousState && - OMX_StateIdle == iCurrentState) - { - // Release lock before any callback gets called... - UnlockCallbackManager(); - - // Flush pending queue first... - FlushQueue(iPendingQueue); - - // ... and now signal command completion... - omxError = - DoEventNotification(aEvent, - aData1, - aData2, - aExtraInfo); - - } - else if (OMX_StatePause == iPreviousState && - OMX_StateExecuting == iCurrentState) - { - // Release lock before any callback... - UnlockCallbackManager(); - - // Signal command completion first... - omxError = - DoEventNotification(aEvent, - aData1, - aData2, - aExtraInfo); - - // ... and now flush... - FlushQueue(iPendingQueue); - - } - else - { - // Release lock before any callback... - UnlockCallbackManager(); - - // Signal command completion... - omxError = - DoEventNotification(aEvent, - aData1, - aData2, - aExtraInfo); - - } - - } - break; - - case OMX_CommandPortDisable: - case OMX_CommandFlush: - { - // Flush first... - if (OMX_ALL == aData2) - { - FlushQueue(iPendingQueue); - } - else - { - FlushBuffersByPortIndex(iPendingQueue, - aData2); - } - - // ... and now signal command completion... - omxError = - DoEventNotification(aEvent, - aData1, - aData2, - aExtraInfo); - - } - break; - - default: - { - // Signal command completion... - omxError = - DoEventNotification(aEvent, - aData1, - aData2, - aExtraInfo); - - } - - }; - - if (OMX_ErrorInsufficientResources == omxError) - { - HandleInsufficientResources(); - } - - return omxError; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::BufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection) - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::BufferDoneNotificaton : BUFFER [%X]"), - apBufferHeader); - - __ASSERT_ALWAYS(apBufferHeader && - (OMX_DirInput == aLocalPortDirection || - OMX_DirOutput == aLocalPortDirection), - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - __ASSERT_ALWAYS(apBufferHeader->nOffset + apBufferHeader->nFilledLen - <= apBufferHeader->nAllocLen, - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - __ASSERT_DEBUG(ipHandle && ipCallbacks, - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - LockCallbackManager(); - if (OMX_StatePause == iCurrentState) - { - if (KErrNone != iPendingQueue.Append(TOmxILBuffer( - apBufferHeader, - aLocalPortIndex, - aLocalPortDirection))) - { - // Not much we can do here... - UnlockCallbackManager(); - HandleInsufficientResources(); - } - else - { - DEBUG_PRINTF4(_L8("COmxILInContextCallbackManager::BufferDoneNotificaton : DEFERRED buffer header[%X] port [%X] queue items [%d]"), - apBufferHeader, aLocalPortIndex, iPendingQueue.Count()); - UnlockCallbackManager(); - } - - return OMX_ErrorNone; - - } - UnlockCallbackManager(); - - ProcessBufferDoneNotification(apBufferHeader, - aLocalPortIndex, - aLocalPortDirection); - - return OMX_ErrorNone; - - } - -void -COmxILInContextCallbackManager::ProcessBufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection) - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::ProcessBufferDoneNotification : BUFFER [%X]"), - apBufferHeader); - - // Look for buffer marks to be signalled or propagated (maintain callback - // manager unlocked here) - SignalOrPropagateBufferMarks(apBufferHeader, - aLocalPortDirection); - - LockCallbackManager(); - - // find out whether the port is tunnelled or not - TBool tunnelled = EFalse; - OMX_COMPONENTTYPE* pTunnelledComponent = 0; - const TUint tunnelCount = iRegisteredTunnels.Count(); - for (TUint i=0; i( - iRegisteredTunnels[i]. - iTunnelledComponentHandle); - - __ASSERT_DEBUG(pTunnelledComponent, - User::Panic(KOmxILCallbackManagerIfImplPanicCategory, 1)); - - break; - } - } - - // Unlock callback manager before calling the callback - UnlockCallbackManager(); - - if (tunnelled) - { - // From OMX_Core.h "Callbacks should not return an error to the - // component, so if an error occurs, the application shall handle it - // internally". Callback return error ignored here. - if (OMX_DirInput == aLocalPortDirection) - { - OMX_FillThisBuffer(pTunnelledComponent, apBufferHeader); - } - else - { - OMX_EmptyThisBuffer(pTunnelledComponent, apBufferHeader); - } - - } - else - { - OMX_ERRORTYPE (*fp2CBackHandler) - (OMX_HANDLETYPE, OMX_PTR, OMX_BUFFERHEADERTYPE*) = - (aLocalPortDirection == OMX_DirInput ? - ipCallbacks->EmptyBufferDone : - ipCallbacks->FillBufferDone); - - - // From OMX_Core.h "Callbacks should not return an error to the - // component, so if an error occurs, the application shall handle it - // internally". Callback return error ignored here. - fp2CBackHandler(ipHandle, - ipAppData, - apBufferHeader); - - } - - } - -void -COmxILInContextCallbackManager::SignalOrPropagateBufferMarks( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex) - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::SignalOrPropagateBufferMarks() : BUFFER [%X]"), - apBufferHeader); - - // Look for buffer marks to be signalled or propagated - if (apBufferHeader->hMarkTargetComponent) - { - // See if this component is the buffer mark target component... - if (apBufferHeader->hMarkTargetComponent == ipHandle) - { - // Inform the IL Client that a marked buffer has been processed... - ipCallbacks->EventHandler(ipHandle, - ipAppData, - OMX_EventMark, - 0, - 0, - apBufferHeader->pMarkData); - - // At this point, the mark has been delivered to the IL - // Client...Remove the mark from the processed header... - apBufferHeader->hMarkTargetComponent = 0; - apBufferHeader->pMarkData = 0; - - } - else - { - // Propagate the mark... - - LockCallbackManager(); - - // First find the buffer mark propagation port... - const TInt index = iBufferMarkPropagationPorts.Find( - TBufferMarkPropagationInfo(aLocalPortIndex), - TIdentityRelation( - &TBufferMarkPropagationInfo::Compare)); - - // Note that sink components don't propagate marks... - if (index != KErrNotFound) - { - const TBufferMarkPropagationInfo& propInfo = - iBufferMarkPropagationPorts[index]; - - // Let's check for the special case: The case for a source - // component where the output port is both the port that marks - // the headers and the port that propagates them ... Therefore - // no need to store the mark for later propagation... - if (propInfo.iPropagationPortIndex != aLocalPortIndex) - { - // Now, store temporarily the mark so the next time we send - // a buffer done callback in that propagation port, we mark - // that header accordingly... - // Unsuccessful insertion is ignored. - iBufferMarks.Append( - TOutputPortBufferMarkInfo( - propInfo.iPropagationPortIndex, - apBufferHeader->hMarkTargetComponent, - apBufferHeader->pMarkData)); - - // At this point the mark has been set for propagation to - // an output port. Remove the mark from the processed - // header... - apBufferHeader->hMarkTargetComponent = 0; - apBufferHeader->pMarkData = 0; - } - } - - UnlockCallbackManager(); - - } - } - else - { - LockCallbackManager(); - - if(iBufferMarks.Count() != 0) - { - // Let's see if we have a mark waiting to go out...This will find the - // first mark in the local list of marks ... - const TInt index = iBufferMarks.Find( - TOutputPortBufferMarkInfo(aLocalPortIndex), - TIdentityRelation( - &TOutputPortBufferMarkInfo::Compare)); - if (index != KErrNotFound) - { - const TOutputPortBufferMarkInfo& markInfo = - iBufferMarks[index]; - - // Mark the header... - apBufferHeader->hMarkTargetComponent = markInfo.ipMarkTargetComponent; - apBufferHeader->pMarkData = markInfo.ipMarkData; - - // Remove the mark info from the local store - iBufferMarks.Remove(index); - } - - } - - UnlockCallbackManager(); - - } - - - } - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::ClockBufferDoneNotification(OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection) - { - DEBUG_PRINTF(_L8("COmxILInContextCallbackManager::ClockBufferDoneNotification")); - - return BufferDoneNotification(apBufferHeader, - aLocalPortIndex, - aLocalPortDirection); - - } - -EXPORT_C OMX_ERRORTYPE -COmxILInContextCallbackManager::PortSettingsChangeNotification( - OMX_U32 aLocalPortIndex, - TUint aPortSettingsIndex, - const TDesC8& aPortSettings) - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::PortSettingsChangeNotification : aLocalPortIndex[%d]"), aLocalPortIndex); - - LockCallbackManager(); - OMX_ERRORTYPE omxError = DoPortSettingsChangeNotification(aLocalPortIndex, - aPortSettingsIndex, - aPortSettings); - UnlockCallbackManager(); - return omxError; - - } - - -void -COmxILInContextCallbackManager::FlushQueue( - RCbMgrBufferQueue& aQueue) - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::FlushQueue : Handle[%X]"), ipHandle); - - LockCallbackManager(); - - TInt i = 0; - while(i < aQueue.Count()) - { - TOmxILBuffer buffer(aQueue[i]); - aQueue.Remove(i); - DEBUG_PRINTF4(_L8("COmxILInContextCallbackManager::FlushQueue() : FOUND -> buffer header [%X] PortIndex[%d], queue items [%d]"), buffer.ipBufferHeader, buffer.iLocalPortIndex, aQueue.Count()); - - UnlockCallbackManager(); - ProcessBufferDoneNotification(buffer.ipBufferHeader, - buffer.iLocalPortIndex, - buffer.iLocalPortDirection); - LockCallbackManager(); - // There is a window where new items could have been added to the - // queue. Restart loop just in case... - i = 0; - } - - UnlockCallbackManager(); - } - -TBool -COmxILInContextCallbackManager::RemoveBuffersByBufferHeader( - RCbMgrBufferQueue& aQueue, - OMX_BUFFERHEADERTYPE* apBufferHeader, - const OMX_DIRTYPE aDirection) - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::RemoveBuffersByBufferHeader : Handle[%X]"), ipHandle); - - LockCallbackManager(); - - TInt i = 0; - while(i < aQueue.Count()) - { - TOmxILBuffer buffer(aQueue[i]); - if (apBufferHeader == buffer.ipBufferHeader) - { - __ASSERT_DEBUG(aDirection == OMX_DirInput || - aDirection == OMX_DirOutput, - User::Panic(KOmxILCallbackManagerPanicCategory, 1)); - - DEBUG_PRINTF4(_L8("COmxILInContextCallbackManager::RemoveBuffersByBufferHeader() : Nofiying FSM : Handle[%X] aDirection[%X] apBufferHeader[%X]"), ipHandle, aDirection, apBufferHeader); - - // Make sure the buffer contents are cleared... - TOmxILUtil::ClearBufferContents(apBufferHeader); - - aQueue.Remove(i); - UnlockCallbackManager(); - - if (aDirection == OMX_DirInput) - { - ipFsm->EmptyThisBuffer( - const_cast(apBufferHeader)); - } - else - { - ipFsm->FillThisBuffer( - const_cast(apBufferHeader)); - } - - return ETrue; - } - else - { - ++i; - } - } - - UnlockCallbackManager(); - - return EFalse; - } - - -void -COmxILInContextCallbackManager::FlushBuffersByPortIndex( - RCbMgrBufferQueue& aQueue, - const OMX_U32 aLocalPortIndex) - { - DEBUG_PRINTF2(_L8("COmxILInContextCallbackManager::FlushBuffersByPortIndex : Handle[%X]"), ipHandle); - - LockCallbackManager(); - - TInt i = 0; - while(i < aQueue.Count()) - { - TOmxILBuffer buffer(aQueue[i]); - DEBUG_PRINTF4(_L8("COmxILInContextCallbackManager::FlushBuffersByPortIndex() : LOOKING -> buffer header [%X] PortIndex[%d], queue items [%d]"), buffer.ipBufferHeader, aLocalPortIndex, aQueue.Count()); - if (aLocalPortIndex == buffer.iLocalPortIndex) - { - aQueue.Remove(i); - DEBUG_PRINTF4(_L8("COmxILInContextCallbackManager::FlushBuffersByPortIndex() : FOUND -> buffer header [%X] PortIndex[%d], queue items [%d]"), buffer.ipBufferHeader, aLocalPortIndex, aQueue.Count()); - UnlockCallbackManager(); - ProcessBufferDoneNotification(buffer.ipBufferHeader, - buffer.iLocalPortIndex, - buffer.iLocalPortDirection); - LockCallbackManager(); - // There is a window where new items could have been added to the - // queue. Restart loop just in case... - i = 0; - } - else - { - ++i; - } - } - - UnlockCallbackManager(); - - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilincontextcallbackmanager.h --- a/omxil/omxilcomponentcommon/src/common/omxilincontextcallbackmanager.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,217 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILINCONTEXTCALLBACKMANAGER_H -#define OMXILINCONTEXTCALLBACKMANAGER_H - -#include "omxilcallbackmanager.h" - -/** - OpenMAX IL call backs and buffer marks manager. This is a synchronous - implementation of MOmxILCallbackManagerIf. - - */ -NONSHARABLE_CLASS(COmxILInContextCallbackManager) : - public CBase, - public MOmxILCallbackManagerIf, - private XOmxILCallbackManagerIfImpl - { - -public: - - IMPORT_C static COmxILInContextCallbackManager* NewL( - OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks); - - IMPORT_C ~COmxILInContextCallbackManager(); - - IMPORT_C void SetPortManager(COmxILPortManager& apPortManager); - - IMPORT_C void SetFsm(COmxILFsm& apFsm); - - // - // Methods for Callback Registration (from MOmxILCallbackManagerIf) - // - IMPORT_C OMX_ERRORTYPE RegisterComponentHandle( - OMX_HANDLETYPE aComponentHandle); - - IMPORT_C OMX_ERRORTYPE RegisterILClientCallbacks( - const OMX_CALLBACKTYPE* apCallbacks, - const OMX_PTR apAppData); - - IMPORT_C OMX_ERRORTYPE RegisterTunnelCallback( - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection, - OMX_HANDLETYPE aTunnelledComponentHandle, - OMX_U32 aTunnelledPortIndex - ); - - IMPORT_C OMX_ERRORTYPE DeregisterTunnelCallback( - OMX_U32 aLocalPortIndex); - - IMPORT_C OMX_ERRORTYPE RegisterBufferMarkPropagationPort( - OMX_U32 aPortIndex, - OMX_U32 aPropagationPortIndex); - - IMPORT_C TBool BufferRemovalIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection); - - - // - // Methods for Callback Notification (from MOmxILCallbackManagerIf) - // - - IMPORT_C OMX_ERRORTYPE TransitionCompleteNotification( - OMX_STATETYPE aOmxState); - - IMPORT_C OMX_ERRORTYPE CommandCompleteNotification( - OMX_COMMANDTYPE aOmxCommand, - OMX_U32 aOmxPortIndex); - - // - // Methods for Callback Notification (from MOmxILCallbackManagerIf) - // - - IMPORT_C OMX_ERRORTYPE ErrorEventNotification( - OMX_ERRORTYPE aOmxError); - - IMPORT_C OMX_ERRORTYPE EventNotification( - OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - OMX_STRING aExtraInfo); - - IMPORT_C OMX_ERRORTYPE BufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection); - - IMPORT_C OMX_ERRORTYPE ClockBufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection); - - IMPORT_C OMX_ERRORTYPE PortSettingsChangeNotification( - OMX_U32 aLocalPortIndex, - TUint aPortSettingsIndex, - const TDesC8& aPortSettings); - - -private: - - class TOmxILBuffer - { - - public: - - OMX_BUFFERHEADERTYPE* ipBufferHeader; - OMX_U32 iLocalPortIndex; - OMX_DIRTYPE iLocalPortDirection; - - // Default Constructor - inline TOmxILBuffer(); - - // Constructor - inline TOmxILBuffer( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection); - - }; - -private: - - // Convenience typedef - typedef RArray RCbMgrBufferQueue; - - -private: - - COmxILInContextCallbackManager(OMX_HANDLETYPE apComponentHandle, - OMX_PTR apAppData, - OMX_CALLBACKTYPE* apCallbacks); - void ConstructL(); - - void LockCallbackManager(); - void UnlockCallbackManager(); - - void SignalOrPropagateBufferMarks( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex); - - void ProcessBufferDoneNotification( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection); - - void FlushQueue(RCbMgrBufferQueue& aQueue); - - TBool RemoveBuffersByBufferHeader( - RCbMgrBufferQueue& aQueue, - OMX_BUFFERHEADERTYPE* apBufferHeader, - const OMX_DIRTYPE aDirection); - - void FlushBuffersByPortIndex(RCbMgrBufferQueue& aQueue, - const OMX_U32 aLocalPortIndex); - - -private: - - RFastLock iLock; - - // Queue of buffer done notifications that need to be queued during - // OMX_StatePaused state - RCbMgrBufferQueue iPendingQueue; - - // Flag to enable unconditional flushing of buffer done notifications - TBool iFlushPendingQueue; - - OMX_STATETYPE iCurrentState; - OMX_STATETYPE iPreviousState; - - }; - -inline -COmxILInContextCallbackManager::TOmxILBuffer::TOmxILBuffer() - : - ipBufferHeader(0), - iLocalPortIndex(0), - iLocalPortDirection(OMX_DirMax) - { - } - -inline -COmxILInContextCallbackManager::TOmxILBuffer::TOmxILBuffer( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_U32 aLocalPortIndex, - OMX_DIRTYPE aLocalPortDirection - ) - : - ipBufferHeader(apBufferHeader), - iLocalPortIndex(aLocalPortIndex), - iLocalPortDirection(aLocalPortDirection) - { - } - - -#endif // OMXILINCONTEXTCALLBACKMANAGER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilindexmanager.h --- a/omxil/omxilcomponentcommon/src/common/omxilindexmanager.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILINDEXMANAGER_H -#define OMXILINDEXMANAGER_H - -#include - -// Forward declarations - - -class COmxILIndexManager : public CBase - { - -public: - - inline ~COmxILIndexManager(); - - inline void InsertParamIndexL(TUint aParamIndex); - - inline TInt FindParamIndex(TUint aParamIndex) const; - - inline void InsertConfigIndexL(TUint aConfigIndex); - - inline TInt FindConfigIndex(TUint aConfigIndex) const; - -protected: - - COmxILIndexManager(); - - inline RArray& ManagedParamIndexes(); - - inline RArray& ManagedConfigIndexes(); - -protected: - - RArray iManagedOmxParamIndexes; - RArray iManagedOmxConfigIndexes; - - }; - -#include "omxilindexmanager.inl" - -#endif // OMXILINDEXMANAGER_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilindexmanager.inl --- a/omxil/omxilcomponentcommon/src/common/omxilindexmanager.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -inline COmxILIndexManager::COmxILIndexManager() - { - } - -inline COmxILIndexManager::~COmxILIndexManager() - { - iManagedOmxParamIndexes.Close(); - iManagedOmxConfigIndexes.Close(); - } - -inline void -COmxILIndexManager::InsertParamIndexL(TUint aParamIndex) - { - TInt err = iManagedOmxParamIndexes.InsertInOrder(aParamIndex); - - // Note that index duplication is OK. - if (KErrNone != err && KErrAlreadyExists != err) - { - User::Leave(err); - } - - } - -inline TInt -COmxILIndexManager::FindParamIndex(TUint aParamIndex) const - { - return iManagedOmxParamIndexes.SpecificFindInOrder( - aParamIndex, - EArrayFindMode_First); - } - -inline void -COmxILIndexManager::InsertConfigIndexL(TUint aConfigIndex) - { - TInt err = iManagedOmxConfigIndexes.InsertInOrder(aConfigIndex); - - // Note that index duplication is OK. - if (KErrNone != err && KErrAlreadyExists != err) - { - User::Leave(err); - } - - } - -inline TInt -COmxILIndexManager::FindConfigIndex(TUint aConfigIndex) const - { - return iManagedOmxConfigIndexes.SpecificFindInOrder( - aConfigIndex, - EArrayFindMode_First); - } - -inline RArray& -COmxILIndexManager::ManagedParamIndexes() - { - return iManagedOmxParamIndexes; - } - -inline RArray& -COmxILIndexManager::ManagedConfigIndexes() - { - return iManagedOmxConfigIndexes; - } - - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilotherport.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilotherport.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,171 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "omxilotherport.h" -#include "omxilutil.h" - -EXPORT_C COmxILOtherPort::COmxILOtherPort(const TOmxILCommonPortData& aCommonPortData) - : COmxILPort(aCommonPortData) - { - iParamOtherPortFormat.nSize = sizeof(OMX_OTHER_PARAM_PORTFORMATTYPE); - iParamOtherPortFormat.nVersion = aCommonPortData.iOmxVersion; - iParamOtherPortFormat.nPortIndex = aCommonPortData.iPortIndex; - iParamOtherPortFormat.nIndex = 0; - } - -// [YYC]: proposal for deep copy, virtual & called from derived CostructL -EXPORT_C void COmxILOtherPort::ConstructL(const RArray& aSupportedOtherFormats) - { - TUint count = aSupportedOtherFormats.Count(); - for (TInt i = 0; i < count; i++) - { - iSupportedOtherFormats.AppendL(aSupportedOtherFormats[i]); - } - iParamOtherPortFormat.eFormat = count ? iSupportedOtherFormats[0] : OMX_OTHER_FormatMax; - } - -EXPORT_C COmxILOtherPort::~COmxILOtherPort() - { - iSupportedOtherFormats.Close(); - } - -EXPORT_C OMX_ERRORTYPE COmxILOtherPort::GetLocalOmxParamIndexes(RArray& aIndexArray) const - { - // Always collect local indexes from parent - OMX_ERRORTYPE omxRetValue = COmxILPort::GetLocalOmxParamIndexes(aIndexArray); - if (omxRetValue != OMX_ErrorNone) - { - return omxRetValue; - } - - TInt err = aIndexArray.InsertInOrder(OMX_IndexParamOtherPortFormat); - // Note that index duplication is OK - if (err != KErrNone && err != KErrAlreadyExists) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - } - -EXPORT_C OMX_ERRORTYPE COmxILOtherPort::GetLocalOmxConfigIndexes(RArray& aIndexArray) const - { - // Always collect local indexes from parent - return COmxILPort::GetLocalOmxConfigIndexes(aIndexArray); - } - -EXPORT_C OMX_ERRORTYPE COmxILOtherPort::GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const - { - switch(aParamIndex) - { - case OMX_IndexParamOtherPortFormat: - { - OMX_ERRORTYPE omxRetValue = TOmxILUtil::CheckOmxStructSizeAndVersion(apComponentParameterStructure, - sizeof(OMX_OTHER_PARAM_PORTFORMATTYPE)); - - if (omxRetValue != OMX_ErrorNone) - { - return omxRetValue; - } - - OMX_OTHER_PARAM_PORTFORMATTYPE* pParamOtherPortFormat = - static_cast(apComponentParameterStructure); - - if (pParamOtherPortFormat->nIndex >= iSupportedOtherFormats.Count()) - { - return OMX_ErrorNoMore; - } - - pParamOtherPortFormat->eFormat = iSupportedOtherFormats[pParamOtherPortFormat->nIndex]; - } - break; - default: - { - // Try the parent's indexes - return COmxILPort::GetParameter(aParamIndex, apComponentParameterStructure); - } - }; - - return OMX_ErrorNone; - } - -EXPORT_C OMX_ERRORTYPE COmxILOtherPort::SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) - { - aUpdateProcessingFunction = EFalse; - - switch(aParamIndex) - { - case OMX_IndexParamOtherPortFormat: - { - OMX_ERRORTYPE omxRetValue = TOmxILUtil::CheckOmxStructSizeAndVersion(const_cast(apComponentParameterStructure), - sizeof(OMX_OTHER_PARAM_PORTFORMATTYPE)); - - if (omxRetValue != OMX_ErrorNone) - { - return omxRetValue; - } - - const OMX_OTHER_PARAM_PORTFORMATTYPE* pParamOtherPortFormat = - static_cast(apComponentParameterStructure); - - // Check in case the specified format is not actually supported by this - // port - OMX_OTHER_FORMATTYPE newFormatType = pParamOtherPortFormat->eFormat; - - // OMX_OTHER_FormatVendorReserved is the last of the supported values as of - // v1.1.1 - if (newFormatType > OMX_OTHER_FormatVendorReserved) - { - return OMX_ErrorBadParameter; - } - - if (KErrNotFound == iSupportedOtherFormats.Find(newFormatType)) - { - return OMX_ErrorUnsupportedSetting; - } - - // Set the new default format, but check first that we are actually - // changing something... - if (iParamOtherPortFormat.eFormat != newFormatType) - { - iParamOtherPortFormat.eFormat = newFormatType; - - // This is an indication to the PortManager that the processing - // function needs to get updated - // - aUpdateProcessingFunction = ETrue; - } - } - break; - default: - { - // Try the parent's indexes - return COmxILPort::SetParameter(aParamIndex, - apComponentParameterStructure, - aUpdateProcessingFunction); - } - }; - - return OMX_ErrorNone; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilotherport.h --- a/omxil/omxilcomponentcommon/src/common/omxilotherport.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalTechnology -*/ - -#ifndef OMXILOTHERPORT_H -#define OMXILOTHERPORT_H - -#include "omxilport.h" -#include -#include -#include -#include - -class COmxILOtherPort : public COmxILPort - { -public: - IMPORT_C ~COmxILOtherPort(); - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetLocalOmxParamIndexes(RArray& aIndexArray) const = 0; - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetLocalOmxConfigIndexes(RArray& aIndexArray) const = 0; - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const = 0; - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) = 0; - -protected: - IMPORT_C COmxILOtherPort(const TOmxILCommonPortData& aCommonPortData); - - IMPORT_C virtual void ConstructL(const RArray& aSupportedOtherFormats); - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE SetFormatInPortDefinition( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, - TBool& aUpdateProcessingFunction) = 0; - - // From COmxILPort - IMPORT_C TBool IsTunnelledPortCompatible( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const = 0; - -protected: - // To indicate the supported formats - RArray iSupportedOtherFormats; - - OMX_OTHER_PARAM_PORTFORMATTYPE iParamOtherPortFormat; - }; - -#endif // OMXILOTHERPORT_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilport.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilport.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1471 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include -#include - -#include "log.h" -#include "omxilport.h" -#include "omxilutil.h" - - -const TInt COmxILPort::KMaxBufferMarksQueueSize; -const TInt COmxILPort::KBufferMarkPropagationPortNotNeeded; - - -EXPORT_C -TOmxILCommonPortData::TOmxILCommonPortData( - OMX_VERSIONTYPE aOmxVersion, - OMX_U32 aPortIndex, - OMX_DIRTYPE aDirection, - OMX_U32 aBufferCountMin, - OMX_U32 aBufferSizeMin, - OMX_PORTDOMAINTYPE aPortDomain, - OMX_BOOL aBuffersContiguous, - OMX_U32 aBufferAlignment, - OMX_BUFFERSUPPLIERTYPE aBufferSupplier, - OMX_U32 aBufferMarkPropagationPortIndex) - : - iOmxVersion(aOmxVersion), - iPortIndex(aPortIndex), - iDirection(aDirection), - iBufferCountMin(aBufferCountMin), - iBufferSizeMin(aBufferSizeMin), - iPortDomain(aPortDomain), - iBuffersContiguous(aBuffersContiguous), - iBufferAlignment(aBufferAlignment), - iBufferSupplier(aBufferSupplier), - iBufferMarkPropagationPortIndex(aBufferMarkPropagationPortIndex) - { - } - - -EXPORT_C -COmxILPort::COmxILPort(const TOmxILCommonPortData& aCommonPortData) - : - iTunnelledComponent(0), - iTunnelledPort(0), - iBufferHeaders(), - iBufferMarks(_FOFF(TBufferMarkInfo, iLink)), - iTransitionState(EPortNotTransitioning), - iBufferMarkPropagationPortIndex( - aCommonPortData.iBufferMarkPropagationPortIndex) - { - DEBUG_PRINTF(_L8("COmxILPort::COmxILPort")); - - __ASSERT_DEBUG(aCommonPortData.iDirection == OMX_DirInput || - aCommonPortData.iDirection == OMX_DirOutput, - User::Panic(KOmxILPortPanicCategory, 1)); - - // From Section 3.1.2.12.1 . - // - // nBufferCountMin : "The component shall define this non-zero default - // value." - // - // nBufferCountActual : "The component shall set a default value no less - // than nBufferCountMin for this field" - __ASSERT_DEBUG(aCommonPortData.iBufferCountMin > 0, - User::Panic(KOmxILPortPanicCategory, 1)); - - // Filll in OMX_PARAM_PORTDEFINITIONTYPE - iParamPortDefinition.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - iParamPortDefinition.nVersion = aCommonPortData.iOmxVersion; - iParamPortDefinition.nPortIndex = aCommonPortData.iPortIndex; - iParamPortDefinition.eDir = aCommonPortData.iDirection; - iParamPortDefinition.nBufferCountActual = aCommonPortData.iBufferCountMin; - iParamPortDefinition.nBufferCountMin = aCommonPortData.iBufferCountMin; - iParamPortDefinition.nBufferSize = aCommonPortData.iBufferSizeMin; - iParamPortDefinition.bEnabled = OMX_TRUE; - iParamPortDefinition.bPopulated = OMX_FALSE; - iParamPortDefinition.eDomain = aCommonPortData.iPortDomain; - // NOTE: iParamPortDefinition.format must be finished up by concrete ports - iParamPortDefinition.bBuffersContiguous = aCommonPortData.iBuffersContiguous; - iParamPortDefinition.nBufferAlignment = aCommonPortData.iBufferAlignment; - - // Fill in OMX_PARAM_BUFFERSUPPLIERTYPE - iParamCompBufferSupplier.nSize = sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE); - iParamCompBufferSupplier.nVersion = aCommonPortData.iOmxVersion; - iParamCompBufferSupplier.nPortIndex = aCommonPortData.iPortIndex; - iParamCompBufferSupplier.eBufferSupplier = aCommonPortData.iBufferSupplier; - - } - -EXPORT_C -COmxILPort::~COmxILPort() - { - DEBUG_PRINTF(_L8("COmxILPort::~COmxILPort")); - -#ifdef _DEBUG - const TInt headerCount = iBufferHeaders.Count(); - if (headerCount > 0) - { - DEBUG_PRINTF(_L8("COmxILPort::~COmxILPort :: ------------------------------- WARNING --------------------------------------- ")); - DEBUG_PRINTF2(_L8("COmxILPort::~COmxILPort :: [%d] Buffer headers still exist"), headerCount); - DEBUG_PRINTF(_L8("COmxILPort::~COmxILPort :: CleanUpPort() may be used from the most derived port class to delete them")); - DEBUG_PRINTF(_L8("COmxILPort::~COmxILPort :: ------------------------------- WARNING --------------------------------------- ")); - } -#endif - - iBufferHeaders.Close(); - iBufferMarks.ResetAndDestroy(); - - } - -EXPORT_C OMX_ERRORTYPE -COmxILPort::GetLocalOmxParamIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILPort::GetLocalOmxParamIndexes")); - - TInt err = aIndexArray.InsertInOrder(OMX_IndexParamPortDefinition); - - // Note that index duplication is OK. - if (KErrNone == err || KErrAlreadyExists == err) - { - err = aIndexArray.InsertInOrder(OMX_IndexParamCompBufferSupplier); - } - - if (KErrNone != err && KErrAlreadyExists != err) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILPort::GetLocalOmxConfigIndexes(RArray& /*aIndexArray*/) const - { - DEBUG_PRINTF(_L8("COmxILPort::GetLocalOmxConfigIndexes")); - - return OMX_ErrorNone; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILPort::GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILPort::GetParameter")); - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamPortDefinition: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentParameterStructure, - sizeof(OMX_PARAM_PORTDEFINITIONTYPE)))) - { - return omxRetValue; - } - - OMX_PARAM_PORTDEFINITIONTYPE* pPortDefinition - = static_cast( - apComponentParameterStructure); - - *pPortDefinition = iParamPortDefinition; - } - break; - - case OMX_IndexParamCompBufferSupplier: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentParameterStructure, - sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)))) - { - return omxRetValue; - } - - OMX_PARAM_BUFFERSUPPLIERTYPE* pBufferSupplier - = static_cast( - apComponentParameterStructure); - - pBufferSupplier->eBufferSupplier = - iParamCompBufferSupplier.eBufferSupplier; - } - break; - - default: - { - return OMX_ErrorUnsupportedIndex; - } - }; - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILPort::SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILPort::SetParameter")); - - aUpdateProcessingFunction = EFalse; - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamPortDefinition: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_PARAM_PORTDEFINITIONTYPE)))) - { - return omxRetValue; - } - - const OMX_PARAM_PORTDEFINITIONTYPE* pPortDefinition - = static_cast( - apComponentParameterStructure); - - // Port Format must be set by the concrete port... - if (OMX_ErrorNone != - (omxRetValue = - SetFormatInPortDefinition(*pPortDefinition, - aUpdateProcessingFunction))) - { - return omxRetValue; - } - - // Set here only the additional read-write parameters of - // OMX_PARAM_PORTDEFINITIONTYPE - if (iParamPortDefinition.nBufferCountActual != - pPortDefinition->nBufferCountActual) - { - if (pPortDefinition->nBufferCountActual < - iParamPortDefinition.nBufferCountMin) - { - return OMX_ErrorBadParameter; - } - iParamPortDefinition.nBufferCountActual = - pPortDefinition->nBufferCountActual; - aUpdateProcessingFunction = ETrue; - } - - } - break; - - case OMX_IndexParamCompBufferSupplier: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE)))) - { - return omxRetValue; - } - - const OMX_PARAM_BUFFERSUPPLIERTYPE* pBufferSupplier - = static_cast( - apComponentParameterStructure); - - // OMX_BufferSupplyOutput is the last of the supported values as of - // v1.1.1 - if (iParamCompBufferSupplier.eBufferSupplier > OMX_BufferSupplyOutput) - { - return OMX_ErrorBadParameter; - } - - if (iParamCompBufferSupplier.eBufferSupplier != - pBufferSupplier->eBufferSupplier) - { - // The component providing the input port is responsible for - // signalling the tunnelled component about the buffer supplier - // override... - if (iTunnelledComponent && - iParamPortDefinition.eDir == OMX_DirInput) - { - OMX_PARAM_BUFFERSUPPLIERTYPE bufferSupplierType; - bufferSupplierType.nSize = sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE); - bufferSupplierType.nVersion = iParamPortDefinition.nVersion; - bufferSupplierType.nPortIndex = iTunnelledPort; - bufferSupplierType.eBufferSupplier = pBufferSupplier->eBufferSupplier; - OMX_ERRORTYPE retValue = OMX_ErrorUndefined; - if (OMX_ErrorNone != - (retValue = - OMX_SetParameter(iTunnelledComponent, - OMX_IndexParamCompBufferSupplier, - &bufferSupplierType)) ) - { - return retValue; - } - } - iParamCompBufferSupplier.eBufferSupplier = - pBufferSupplier->eBufferSupplier; - } - - } - break; - default: - { - return OMX_ErrorUnsupportedIndex; - } - }; - - return OMX_ErrorNone; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILPort::GetConfig(OMX_INDEXTYPE /*aConfigIndex*/, - TAny* /*apComponentConfigStructure*/) const - { - DEBUG_PRINTF(_L8("COmxILPort::GetConfig")); - return OMX_ErrorUnsupportedIndex; - } - -EXPORT_C OMX_ERRORTYPE -COmxILPort::SetConfig(OMX_INDEXTYPE /*aConfigIndex*/, - const TAny* /*apComponentConfigStructure*/, - TBool& /*aUpdateProcessingFunction*/) - { - DEBUG_PRINTF(_L8("COmxILPort::SetConfig")); - return OMX_ErrorUnsupportedIndex; - } - -EXPORT_C OMX_ERRORTYPE -COmxILPort::GetExtensionIndex(OMX_STRING /* aParameterName */, - OMX_INDEXTYPE* /* apIndexType */) const - { - // This method is intended to be overridden by the concrete ports when - // needed... - return OMX_ErrorUnsupportedIndex; - } - -EXPORT_C OMX_ERRORTYPE -COmxILPort::PopulateBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - const OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILPort::PopulateBuffer")); - - portPopulationCompleted = EFalse; - - if(aSizeBytes < iParamPortDefinition.nBufferSize) - { - return OMX_ErrorBadParameter; - } - - // Allocate the buffer header... - OMX_BUFFERHEADERTYPE* pHeader = new OMX_BUFFERHEADERTYPE; - *appBufferHdr = pHeader; - if (!pHeader) - { - return OMX_ErrorInsufficientResources; - } - - // Here, lets discriminate between apBuffer == 0 (AllocateBuffer) and - // apBuffer != 0 (UseBuffer) - TUint8* pPortSpecificBuffer = 0; - OMX_PTR pPortPrivate = 0; - OMX_PTR pPlatformPrivate = 0; - OMX_ERRORTYPE portSpecificErr = OMX_ErrorNone; - if (apBuffer) - { - //... (UseBuffer) Do any port-specific wrapping of the received buffer, - // if needed by the port.... - portSpecificErr = DoBufferWrapping(aSizeBytes, - apBuffer, - pPortPrivate, - pPlatformPrivate, - apAppPrivate); - } - else - { - // ... (AllocateBuffer) Do the port-specific buffer allocation ... - portSpecificErr = DoBufferAllocation(aSizeBytes, - pPortSpecificBuffer, - pPortPrivate, - pPlatformPrivate, - apAppPrivate); - } - - if (OMX_ErrorNone != portSpecificErr) - { - delete *appBufferHdr; *appBufferHdr = 0; - return portSpecificErr; - } - - - // Add to local list of buffer headers... - if (KErrNone != - iBufferHeaders.Append( - TBufferInfo(pHeader, - (apBuffer ? - TBufferInfo::EBufferAway : - TBufferInfo::EBufferAtHome), - (apBuffer ? - TBufferInfo::EBufferNotOwned : - TBufferInfo::EBufferOwned), - apBuffer, - apAppPrivate, - pPlatformPrivate, - pPortPrivate))) - { - // Undo custom buffer allocation/wrapping - if (apBuffer) - { - DoBufferUnwrapping( - apBuffer, - pPortPrivate, - pPlatformPrivate, - apAppPrivate); - - } - else - { - DoBufferDeallocation( - pPortSpecificBuffer, - pPortPrivate, - pPlatformPrivate, - apAppPrivate); - } - delete *appBufferHdr; *appBufferHdr = NULL; - return OMX_ErrorInsufficientResources; - } - - - // Fill in the header... - pHeader->nSize = sizeof(OMX_BUFFERHEADERTYPE); - pHeader->nVersion = iParamPortDefinition.nVersion; - pHeader->pBuffer = apBuffer ? apBuffer : pPortSpecificBuffer; - pHeader->nAllocLen = aSizeBytes; - pHeader->nFilledLen = 0; - pHeader->nOffset = 0; - pHeader->pAppPrivate = apAppPrivate; - pHeader->pPlatformPrivate = pPlatformPrivate; - pHeader->hMarkTargetComponent = 0; - pHeader->pMarkData = 0; - pHeader->nTickCount = 0; - pHeader->nTimeStamp = 0; - pHeader->nFlags = 0; - - - if (OMX_DirInput == iParamPortDefinition.eDir) - { - pHeader->pInputPortPrivate = pPortPrivate; - pHeader->pOutputPortPrivate = 0; - pHeader->nInputPortIndex = iParamPortDefinition.nPortIndex; - pHeader->nOutputPortIndex = 0; - } - else - { - pHeader->pInputPortPrivate = 0; - pHeader->pOutputPortPrivate = pPortPrivate; - pHeader->nInputPortIndex = 0; - pHeader->nOutputPortIndex = iParamPortDefinition.nPortIndex; - } - - if (iParamPortDefinition.nBufferCountActual == iBufferHeaders.Count()) - { - iParamPortDefinition.bPopulated = OMX_TRUE; - portPopulationCompleted = ETrue; - } - - return OMX_ErrorNone; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILPort::FreeBuffer(OMX_BUFFERHEADERTYPE* apBufferHeader, - TBool& portDepopulationCompleted) - { - DEBUG_PRINTF2(_L8("COmxILPort::FreeBuffer : BUFFER [%X]"), apBufferHeader); - - portDepopulationCompleted = EFalse; - - TInt headerIndex = 0; - if (KErrNotFound == - (headerIndex = - iBufferHeaders.Find(TBufferInfo(apBufferHeader), - TIdentityRelation( - &TBufferInfo::Compare)))) - { - return OMX_ErrorBadParameter; - } - - - OMX_PTR pPortPrivate = - OMX_DirInput == iParamPortDefinition.eDir ? - apBufferHeader->pInputPortPrivate : - apBufferHeader->pOutputPortPrivate; - - if (iBufferHeaders[headerIndex].IsBufferOwned()) - { - DoBufferDeallocation( - apBufferHeader->pBuffer, - pPortPrivate, - apBufferHeader->pPlatformPrivate, - apBufferHeader->pAppPrivate); - } - else - { - DoBufferUnwrapping( - apBufferHeader->pBuffer, - pPortPrivate, - apBufferHeader->pPlatformPrivate, - apBufferHeader->pAppPrivate); - } - - delete apBufferHeader; - iBufferHeaders.Remove(headerIndex); - - if (iBufferHeaders.Count() < iParamPortDefinition.nBufferCountActual) - { - iParamPortDefinition.bPopulated = OMX_FALSE; - } - - if (0 == iBufferHeaders.Count()) - { - portDepopulationCompleted = ETrue; - } - - return OMX_ErrorNone; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILPort::TunnelRequest(OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) - { - DEBUG_PRINTF(_L8("COmxILPort::TunnelRequest")); - - // Check whether the tunnel is being torn down - if (!aTunneledComp) - { - // Cancel existing tunnel setup, if any - iTunnelledComponent = 0; - return OMX_ErrorNone; - } - - // Check that we are receiving a valid tunnel setup structure - if (!apTunnelSetup) - { - return OMX_ErrorBadParameter; - } - - // STEP 0: Retrieve the port definition from the tunnelled component... - OMX_PARAM_PORTDEFINITIONTYPE paramPortDef; - paramPortDef.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - paramPortDef.nVersion = iParamPortDefinition.nVersion; - paramPortDef.nPortIndex = aTunneledPort; - if (OMX_ErrorNone != - OMX_GetParameter(aTunneledComp, - OMX_IndexParamPortDefinition, - ¶mPortDef) ) - { - return OMX_ErrorUndefined; - } - - if (OMX_DirOutput == iParamPortDefinition.eDir) - { - // OMX_DirOutput - // - - // Step 1: Check that this output port is being tunnelled to an input - // port... - if (paramPortDef.eDir != OMX_DirInput) - { - return OMX_ErrorPortsNotCompatible; - } - - // Step 2: Fill in the tunnel setup structure received... - apTunnelSetup->nTunnelFlags = 0; - apTunnelSetup->eSupplier = iParamCompBufferSupplier.eBufferSupplier; - - iTunnelledComponent = aTunneledComp; - iTunnelledPort = aTunneledPort; - } - else - { - // OMX_DirInput - // - - // Check that this input port is being tunnelled to an output - // port... - if (paramPortDef.eDir != OMX_DirOutput) - { - return OMX_ErrorPortsNotCompatible; - } - - // Check that there is something consistent in the tunnel setup data - // received... - if ((apTunnelSetup->eSupplier != OMX_BufferSupplyUnspecified) && - (apTunnelSetup->eSupplier != OMX_BufferSupplyInput) && - (apTunnelSetup->eSupplier != OMX_BufferSupplyOutput)) - { - return OMX_ErrorBadParameter; - } - - // Set tunnelled component and port as they will be needed by - // IsTunnelledPortCompatible... - iTunnelledComponent = aTunneledComp; - iTunnelledPort = aTunneledPort; - - // Check domain-specific parameter compatibility (this is delegated - // to derived port classes)... - if (!IsTunnelledPortCompatible(paramPortDef)) - { - iTunnelledComponent = 0; - return OMX_ErrorPortsNotCompatible; - } - - // Now, try to get to an understanding here...Work out which port will - // be buffer supplier... - OMX_BUFFERSUPPLIERTYPE bufferSupplierDecision = - OMX_BufferSupplyUnspecified; - if (apTunnelSetup->nTunnelFlags & OMX_PORTTUNNELFLAG_READONLY || - ( (apTunnelSetup->eSupplier == OMX_BufferSupplyInput) && - (iParamCompBufferSupplier.eBufferSupplier == - OMX_BufferSupplyInput || - iParamCompBufferSupplier.eBufferSupplier == - OMX_BufferSupplyUnspecified) ) || - ( (apTunnelSetup->eSupplier == OMX_BufferSupplyUnspecified) && - (iParamCompBufferSupplier.eBufferSupplier == - OMX_BufferSupplyInput)) ) - { - bufferSupplierDecision = OMX_BufferSupplyInput; - } - else - { - bufferSupplierDecision = OMX_BufferSupplyOutput; - } - - // Set buffer supplier param in tunnelled port... - OMX_PARAM_BUFFERSUPPLIERTYPE bufferSupplierType; - bufferSupplierType.nSize = sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE); - bufferSupplierType.nVersion = iParamPortDefinition.nVersion; - bufferSupplierType.nPortIndex = aTunneledPort; - bufferSupplierType.eBufferSupplier = bufferSupplierDecision; - if (OMX_ErrorNone != - OMX_SetParameter(aTunneledComp, - OMX_IndexParamCompBufferSupplier, - &bufferSupplierType) ) - { - iTunnelledComponent = 0; - return OMX_ErrorPortsNotCompatible; - } - - apTunnelSetup->eSupplier = bufferSupplierDecision; - iParamCompBufferSupplier.eBufferSupplier = bufferSupplierDecision; - - } - - return OMX_ErrorNone; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILPort::PopulateTunnel(TBool& portPopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILPort::PopulateTunnel")); - - __ASSERT_DEBUG(iBufferHeaders.Count() == 0, - User::Panic(KOmxILPortPanicCategory, 1)); - __ASSERT_DEBUG(IsTunnelledAndBufferSupplier(), - User::Panic(KOmxILPortPanicCategory, 1)); - - portPopulationCompleted = EFalse; - - // STEP 1: Obtain the number of buffers that the tunnelled port requires to - // be populated... Retrieve the port definition from the tunnelled - // component - OMX_PARAM_PORTDEFINITIONTYPE paramPortDef; - paramPortDef.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - paramPortDef.nVersion = iParamPortDefinition.nVersion; - paramPortDef.nPortIndex = iTunnelledPort; - if (OMX_ErrorNone != - OMX_GetParameter(iTunnelledComponent, - OMX_IndexParamPortDefinition, - ¶mPortDef) ) - { - return OMX_ErrorUndefined; - } - - // Step 2: Both ports must have the same threshold value (number of buffers - // to be populated) before completing the transition to - // OMX_StateIdle...Otherwise the population process would complete earlier - // or never... - TUint numOfBuffersToPopulate = iParamPortDefinition.nBufferCountActual; - if(paramPortDef.nBufferCountActual != - iParamPortDefinition.nBufferCountActual) - { - numOfBuffersToPopulate = - Max(iParamPortDefinition.nBufferCountActual, - paramPortDef.nBufferCountActual); - if (iParamPortDefinition.nBufferCountActual < - numOfBuffersToPopulate) - { - // Update own buffer count requirements - DEBUG_PRINTF3(_L8("COmxILPort::PopulateTunnel : Updated own nBufferCountActual - Old Value [%d] New Value [%d] "), - iParamPortDefinition.nBufferCountActual, numOfBuffersToPopulate); - iParamPortDefinition.nBufferCountActual = numOfBuffersToPopulate; - } - else - { - // Update peer's buffer count requirements - DEBUG_PRINTF3(_L8("COmxILPort::PopulateTunnel : Updated peer's nBufferCountActual - Old Value [%d] New Value [%d] "), - paramPortDef.nBufferCountActual, numOfBuffersToPopulate); - paramPortDef.nBufferCountActual = numOfBuffersToPopulate; - if (OMX_ErrorNone != OMX_SetParameter(iTunnelledComponent, - OMX_IndexParamPortDefinition, - ¶mPortDef)) - { - DEBUG_PRINTF(_L8("COmxILPort::PopulateTunnel : Error setting nBufferCountActual in tunnelled component ")); - return OMX_ErrorUndefined; - } - } - } - - // STEP 3: Start population of the tunnel... - TUint sizeOfBuffersToPopulate = - iParamPortDefinition.nBufferSize >= paramPortDef.nBufferSize ? - iParamPortDefinition.nBufferSize : - paramPortDef.nBufferSize; - - OMX_BUFFERHEADERTYPE* pHeader = 0; - TUint8* pPortSpecificBuffer = 0; - OMX_PTR pPortPrivate = 0; - OMX_PTR pPlatformPrivate = 0; - OMX_ERRORTYPE portSpecificErr = OMX_ErrorNone; - for (TUint i=0; ipInputPortPrivate = pPortPrivate; - pHeader->nInputPortIndex = iParamPortDefinition.nPortIndex; - } - else // OMX_DirOutput == iParamPortDefinition.eDir - { - pHeader->pOutputPortPrivate = pPortPrivate; - pHeader->nOutputPortIndex = iParamPortDefinition.nPortIndex; - } - - // Add to local list of buffer headers... return if not sucessful... - if (KErrNone != - iBufferHeaders.Append( - TBufferInfo(pHeader, - TBufferInfo::EBufferAtHome, - TBufferInfo::EBufferOwned, - pPortSpecificBuffer, - 0, - pPlatformPrivate, - pPortPrivate))) - { - DoBufferDeallocation( - pPortSpecificBuffer, - pPortPrivate, - pPlatformPrivate); - - return OMX_ErrorInsufficientResources; - } - } - - iParamPortDefinition.bPopulated = OMX_TRUE; - portPopulationCompleted = ETrue; - - __ASSERT_DEBUG(iBufferHeaders.Count() == - iParamPortDefinition.nBufferCountActual, - User::Panic(KOmxILPortPanicCategory, 1)); - - return OMX_ErrorNone; - - } - - -EXPORT_C OMX_ERRORTYPE -COmxILPort::FreeTunnel(TBool& portDepopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILPort::FreeTunnel")); - - __ASSERT_DEBUG(iBufferHeaders.Count() == - iParamPortDefinition.nBufferCountActual, - User::Panic(KOmxILPortPanicCategory, 1)); - - __ASSERT_DEBUG(IsTunnelledAndBufferSupplier(), - User::Panic(KOmxILPortPanicCategory, 1)); - - const TUint numBuffersToDepopulate = iBufferHeaders.Count(); - for (TUint i=0; ipBuffer; - OMX_PTR pPortPrivate = - OMX_DirInput == iParamPortDefinition.eDir ? - pBufferHeader->pInputPortPrivate : - pBufferHeader->pOutputPortPrivate; - OMX_PTR pAppPrivate = pBufferHeader->pAppPrivate; - OMX_PTR pPlatformPrivate = pBufferHeader->pPlatformPrivate; - - DEBUG_PRINTF2(_L8("COmxILPort::FreeTunnel : BUFFER [%X]"), iBufferHeaders[i].GetHeader()); - - OMX_ERRORTYPE freeBufRes = OMX_FreeBuffer( - iTunnelledComponent, - iTunnelledPort, - pBufferHeader); - - // At this point, the actual buffer header should no longer exist... - pBufferHeader = 0; - - // NOTE that we don't check OMX_FreeBuffer returned error here. If - // something wrong happens at the tunnelled component side we'll - // continue here and try to free as many buffers as possible.... at - // least the state of this component will remain valid.... (we don't - // report errors coming from the tunnelled component as that is its - // responsibility....) - - DoBufferDeallocation( - pBuffer, - pPortPrivate, - pPlatformPrivate, - pAppPrivate); - } - - // Clear the local list of headers. Note that there's no need to delete the - // header as these have been allocated by the tunnelled port... - - iBufferHeaders.Reset(); - iParamPortDefinition.bPopulated = OMX_FALSE; - portDepopulationCompleted = ETrue; - - __ASSERT_DEBUG(iBufferHeaders.Count() == 0, - User::Panic(KOmxILPortPanicCategory, 1)); - - return OMX_ErrorNone; - - } - - - -EXPORT_C TBool -COmxILPort::SetBufferSent(OMX_BUFFERHEADERTYPE* apBufferHeader, - TBool& aBufferMarkedWithOwnMark) - { - DEBUG_PRINTF(_L8("COmxILPort::SetBufferSent")); - - __ASSERT_DEBUG(apBufferHeader, User::Panic(KOmxILPortPanicCategory, 1)); - - aBufferMarkedWithOwnMark = EFalse; - - TInt index = 0; - if (KErrNotFound == - (index = - iBufferHeaders.Find(TBufferInfo(apBufferHeader), - TIdentityRelation( - &TBufferInfo::Compare)))) - { - return EFalse; - } - - iBufferHeaders[index].SetBufferAway(); - - if (!iBufferMarks.IsEmpty()) - { - // Check for existing marks in the buffer header... - if (apBufferHeader->hMarkTargetComponent) - { - // We queue the mark received within the buffer header if there are - // marks already to be delivered... it is mandatory to give a FIFO - // preference to the marks received by a port.. - if (iBufferMarks.Elements() < KMaxBufferMarksQueueSize) - { - // The buffer is marked already. Store the current mark at the end - // of the buffer mark list... - StoreBufferMark(apBufferHeader->hMarkTargetComponent, - apBufferHeader->pMarkData); - } - } - - // Use the first mark in the queue... - TBufferMarkInfo* pMark = iBufferMarks.First(); - apBufferHeader->hMarkTargetComponent = pMark->ipMarkTargetComponent; - apBufferHeader->pMarkData = pMark->ipMarkData; - aBufferMarkedWithOwnMark = pMark->iOwnMark; - iBufferMarks.Remove(*pMark); - delete pMark; - } - - return ETrue; - - } - -EXPORT_C TBool -COmxILPort::SetBufferReturned(OMX_BUFFERHEADERTYPE* apBufferHeader) - { - DEBUG_PRINTF(_L8("COmxILPort::SetBufferReturned")); - - __ASSERT_DEBUG(apBufferHeader, User::Panic(KOmxILPortPanicCategory, 1)); - - TInt index = 0; - if (KErrNotFound == - (index = - iBufferHeaders.Find(TBufferInfo(apBufferHeader), - TIdentityRelation( - &TBufferInfo::Compare)))) - { - return EFalse; - } - - iBufferHeaders[index].SetBufferAtHome(); - - return ETrue; - - } - -EXPORT_C void -COmxILPort::SetTransitionToEnabled() - { - DEBUG_PRINTF(_L8("COmxILPort::SetTransitionToEnabled")); - - iTransitionState = EPortTransitioningToEnabled; - iParamPortDefinition.bEnabled = OMX_TRUE; - - } - -EXPORT_C void -COmxILPort::SetTransitionToDisabled() - { - DEBUG_PRINTF(_L8("COmxILPort::SetTransitionToDisabled")); - - iTransitionState = EPortTransitioningToDisabled; - iParamPortDefinition.bEnabled = OMX_FALSE; - - } - -EXPORT_C void -COmxILPort::SetTransitionToDisabledCompleted() - { - DEBUG_PRINTF(_L8("COmxILPort::SetTransitionToDisabledCompleted")); - - iTransitionState = EPortNotTransitioning; - iParamPortDefinition.bEnabled = OMX_FALSE; - - } - -EXPORT_C void -COmxILPort::SetTransitionToEnabledCompleted() - { - DEBUG_PRINTF(_L8("COmxILPort::SetTransitionToEnabledCompleted")); - - iTransitionState = EPortNotTransitioning; - iParamPortDefinition.bEnabled = OMX_TRUE; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILPort::StoreBufferMark(const OMX_MARKTYPE* apMark) - { - DEBUG_PRINTF(_L8("COmxILPort::StoreBufferMark")); - TBufferMarkInfo* pTBufferMarkInfo = new TBufferMarkInfo(apMark); - if (!pTBufferMarkInfo) - { - return OMX_ErrorInsufficientResources; - } - - iBufferMarks.AddLast(*pTBufferMarkInfo); - - return OMX_ErrorNone; - - } - - -/** - This utility method may be called from the most derived port - class' destructor to delete any buffer header and or buffer that may remain - allocated in the port. This typically happens when the component is unloaded - without being properly transitioned from OMX_StateIdle to OMX_StateLoaded. - - */ -EXPORT_C void -COmxILPort::CleanUpPort() - { - - // Do the clean-up here in case something went wrong and the component is - // being unloaded in a failure scenario... - const TInt headerCount = iBufferHeaders.Count(); - if (headerCount > 0) - { - if (!IsTunnelled()) - { - // A non-tunnelled port needs to delete always the header and needs - // to deallocate/unwrap the buffer depending on whether the buffer - // is owned or not... - - RPointerArray tempHeadersArray; - for (TInt i=0; i tempHeadersArray; - for (TInt i=0; i( - &TBufferInfo::Compare)))) - { - User::Panic(KOmxILPortPanicCategory, 1); - } - - DEBUG_PRINTF2(_L8("COmxILPort::IsBufferAtHome : [%s]"), iBufferHeaders[headerIndex].IsBufferAtHome() ? "YES" : "NO"); - - return iBufferHeaders[headerIndex].IsBufferAtHome(); - - } - - -/** - This method provides a mechanism for ports to place the port-specific - buffer allocation logic (typically used in an OMX_AllocateBuffer - scenario). - - @param aSizeBytes The size in bytes of the buffer to be allocated. - - @param [OUT] apPortSpecificBuffer A pointer to the memory area allocated by - the port. - - @param [OUT] apPortPrivate A pointer that refers to an optional - port-specific structure. - - @param apPlatformPrivate[OUT] A pointer to an optional platform-specific - structure. - - @param apAppPrivate A pointer that refers to a buffer supplier-specific - structure. - - @return OMX_ERRORTYPE -*/ -EXPORT_C OMX_ERRORTYPE -COmxILPort::DoBufferAllocation(OMX_U32 aSizeBytes, - OMX_U8*& apPortSpecificBuffer, - OMX_PTR& apPortPrivate, - OMX_PTR& /* apPlatformPrivate */, - OMX_PTR /* apAppPrivate = 0 */) - { - DEBUG_PRINTF2(_L8("COmxILPort::DoBufferAllocation : aSizeBytes[%u]"), aSizeBytes); - - __ASSERT_DEBUG(aSizeBytes > 0, User::Panic(KOmxILPortPanicCategory, 1)); - - CMMFDescriptorBuffer* pDescBuffer = 0; - TRAPD(allocRes, pDescBuffer = CMMFDescriptorBuffer::NewL(aSizeBytes)); - if (KErrNone != allocRes) - { - return OMX_ErrorInsufficientResources; - } - - apPortSpecificBuffer = const_cast(pDescBuffer->Data().Ptr()); - apPortPrivate = static_cast(pDescBuffer); - - return OMX_ErrorNone; - - } - -/** - This method provides a mechanism for ports to place the port-specific - buffer deallocation logic (typically used in an OMX_FreeBuffer - scenario). - - @param apPortSpecificBuffer A pointer to the memory area to be deallocated - by the port. - - @param apPortPrivate A pointer that refers to a port-specific structure. - - @param apPlatformPrivate A pointer to an optional platform-specific - structure. - - @param apAppPrivate A pointer that refers to a buffer supplier-specific - structure. - -*/ -EXPORT_C void -COmxILPort::DoBufferDeallocation(OMX_PTR /*apPortSpecificBuffer */, - OMX_PTR apPortPrivate, - OMX_PTR /* apPlatformPrivate */, - OMX_PTR /* apAppPrivate = 0 */) - { - DEBUG_PRINTF(_L8("COmxILPort::DoBufferDeallocation")); - - __ASSERT_DEBUG(apPortPrivate, User::Panic(KOmxILPortPanicCategory, 1)); - - delete reinterpret_cast(apPortPrivate); - - } - -/** - This method provides a mechanism for ports to place the port-specific buffer - wrapping logic (typically used in an OMX_UseBuffer scenario). - - @param aSizeBytes The size in bytes of the buffer to be wrapped. - - @param apBuffer A pointer received from the IL Client or another - component that references the allocated memory area . - - @param [OUT] apPortPrivate A pointer that refers to a port-specific - structure. - - @param [OUT] apPlatformPrivate A pointer to an optional platform-specific - structure. - - @param [OUT] apAppPrivate A pointer that refers to a buffer - supplier-specific structure. - - @return OMX_ERRORTYPE -*/ -EXPORT_C OMX_ERRORTYPE -COmxILPort::DoBufferWrapping(OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - OMX_PTR& apPortPrivate, - OMX_PTR& /* apPlatformPrivate */, - OMX_PTR /* apAppPrivate = 0 */) - { - DEBUG_PRINTF(_L8("COmxILPort::DoBufferWrapping")); - - __ASSERT_DEBUG(aSizeBytes > 0 && apBuffer, - User::Panic(KOmxILPortPanicCategory, 1)); - - CMMFBuffer* pMmfBuffer = 0; - TPtr8 ptr(apBuffer, aSizeBytes, aSizeBytes); - TRAPD(allocRes, pMmfBuffer = CMMFPtrBuffer::NewL(ptr)); - if (KErrNone != allocRes) - { - return OMX_ErrorInsufficientResources; - } - - apPortPrivate = pMmfBuffer; - - return OMX_ErrorNone; - - } - -/** - This method provides a mechanism for ports to place the port-specific buffer - unwrapping logic (typically used in an OMX_FreeBuffer scenario). - - @param apPortSpecificBuffer A pointer to the allocated memory area. - - @param apPortPrivate A pointer that refers to a port-specific structure. - - @param apPlatformPrivate A pointer to an optional platform-specific - structure. - - @param apAppPrivate A pointer that refers to a buffer supplier-specific - structure. - -*/ -EXPORT_C void -COmxILPort::DoBufferUnwrapping(OMX_PTR /* apBuffer*/, - OMX_PTR appPortPrivate, - OMX_PTR /* apPlatformPrivate */, - OMX_PTR /* apAppPrivate = 0 */) - { - - DEBUG_PRINTF(_L8("COmxILPort::DoBufferUnwrapping")); - - __ASSERT_DEBUG(appPortPrivate, User::Panic(KOmxILPortPanicCategory, 1)); - - delete reinterpret_cast(appPortPrivate); - - } - -/** - This method gets called during tunnelled buffer allocation (i.e., - PopulateTunnel). This is to allow component implementations to override this - default implementation in a way that the pAppPrivate pointer parameter of - OMX_UseBuffer can be used to convey pPortPrivate or pPlatformPrivate to the - tunnelled component. - - @param aTunnelledComponent Handle to the tunnelled component - - @param [OUT] appBufferHdr The buffer header that will be allocated by the - tunnelled component - - @param aTunnelledPortIndex The index of the tunnelled port - - @param apPortPrivate pPortPrivate pointer as returned by DoBufferAllocation - - @param apPlatformPrivate pPlatformPrivate pointer as returned by - DoBufferAllocation - - @param aSizeBytes The size in bytes of the to be allocated buffer - - @param apBuffer A pointer to the allocated buffer - - @return OMX_ERRORTYPE - -*/ -EXPORT_C OMX_ERRORTYPE -COmxILPort::DoOmxUseBuffer(OMX_HANDLETYPE aTunnelledComponent, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aTunnelledPortIndex, - OMX_PTR /* apPortPrivate */, - OMX_PTR /* apPlatformPrivate */, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer) - { - - DEBUG_PRINTF(_L8("COmxILPort::DoOmxUseBuffer")); - - return OMX_UseBuffer( - aTunnelledComponent, - appBufferHdr, - aTunnelledPortIndex, - 0, - aSizeBytes, - apBuffer); - - } - -EXPORT_C TBool -COmxILPort::TBufferInfo::Compare(const TBufferInfo& aBi1, - const TBufferInfo& aBi2) - { - return (aBi1.GetHeader() == aBi2.GetHeader() ? ETrue : EFalse); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilport.h --- a/omxil/omxilcomponentcommon/src/common/omxilport.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,545 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILPORT_H -#define OMXILPORT_H - -#include - -#include -#include "omxilspecversion.h" - - -/** - Base Port Panic category -*/ -_LIT(KOmxILPortPanicCategory, "OmxILPort"); - - -// Forward declarations -class TOmxILCommonPortData; - -/** - OpenMAX IL component port base class. -*/ -class COmxILPort : public CBase - { - -public: - - static const TInt KMaxBufferMarksQueueSize = 10; - static const TInt KBufferMarkPropagationPortNotNeeded = 0x7FFFFFFF; - -public: - - IMPORT_C ~COmxILPort(); - - /** - This method is used to retrieve the local OpenMAX IL parameter indexes - managed by the specific port. The implementation should collect indexes - from the parent class. Local indexes should be appended in order to the - list received as parameter. The implementation should handle index - duplication as a non-error situation (i.e., the resulting list will - contain unique indexes). - - @param aIndexArray An array of parameter indexes where the local - indexes are to be appended. - - @return OMX_ERRORTYPE - */ - IMPORT_C virtual OMX_ERRORTYPE GetLocalOmxParamIndexes( - RArray& aIndexArray) const = 0; - - /** - This method is used to retrieve the local OpenMAX IL config indexes - managed by the specific port. The implementation should collect indexes - from the parent class. Local indexes should be appended in order to the - list received as parameter. The implementation should handle index - duplication as a non-error situation (i.e., the resulting list will - contain unique indexes). - - @param aIndexArray An array of config indexes where the local indexes - are to be appended. - - @return OMX_ERRORTYPE - */ - IMPORT_C virtual OMX_ERRORTYPE GetLocalOmxConfigIndexes( - RArray& aIndexArray) const = 0; - - /** - Port-specific version of the OpenMAX IL GetParameter API. - - @param aParamIndex The index of the structure that is to be filled. - @param apComponentParameterStructure A pointer to the IL structure. - - @return OMX_ERRORTYPE - */ - IMPORT_C virtual OMX_ERRORTYPE GetParameter( - OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const = 0; - - /** - Port-specific version of the OpenMAX IL SetParameter API. - - @param aParamIndex The index of the structure that is to be set. - @param apComponentParameterStructure A pointer to the IL structure. - @param aUpdateProcessingFunction A flag to signal that the component's - processing function needs to be updated with this structure. - - @return OMX_ERRORTYPE - */ - IMPORT_C virtual OMX_ERRORTYPE SetParameter( - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) = 0; - - IMPORT_C virtual OMX_ERRORTYPE GetConfig( - OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - IMPORT_C virtual OMX_ERRORTYPE SetConfig( - OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure, - TBool& aUpdateProcessingFunction); - - IMPORT_C virtual OMX_ERRORTYPE GetExtensionIndex( - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - - IMPORT_C virtual OMX_ERRORTYPE PopulateBuffer( - OMX_BUFFERHEADERTYPE** appBufferHdr, - const OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted); - - IMPORT_C virtual OMX_ERRORTYPE FreeBuffer( - OMX_BUFFERHEADERTYPE* apBufferHeader, - TBool& portDepopulationCompleted); - - IMPORT_C virtual OMX_ERRORTYPE TunnelRequest( - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - IMPORT_C virtual OMX_ERRORTYPE PopulateTunnel( - TBool& portPopulationCompleted); - - IMPORT_C virtual OMX_ERRORTYPE FreeTunnel( - TBool& portDepopulationCompleted); - - IMPORT_C virtual TBool SetBufferSent( - OMX_BUFFERHEADERTYPE* apBufferHeader, - TBool& aBufferMarkedWithOwnMark); - - IMPORT_C virtual TBool SetBufferReturned( - OMX_BUFFERHEADERTYPE* apBufferHeader); - - IMPORT_C virtual void SetTransitionToDisabled(); - - IMPORT_C virtual void SetTransitionToEnabled(); - - IMPORT_C virtual void SetTransitionToDisabledCompleted(); - - IMPORT_C virtual void SetTransitionToEnabledCompleted(); - - IMPORT_C virtual OMX_ERRORTYPE StoreBufferMark( - const OMX_MARKTYPE* pMark); - - IMPORT_C virtual OMX_ERRORTYPE SetComponentRoleDefaults( - TUint aComponentRoleIndex); - - IMPORT_C virtual OMX_ERRORTYPE DoPortReconfiguration( - TUint aPortSettingsIndex, - const TDesC8& aPortSettings, - OMX_EVENTTYPE& aEventForILClient); - - inline OMX_DIRTYPE Direction() const; - - inline TBool IsEnabled() const; - - inline TBool IsPopulated() const; - - inline TBool IsDePopulated() const; - - inline TBool IsTunnelled() const; - - inline TBool IsTunnelledAndBufferSupplier() const; - - IMPORT_C virtual TBool HasAllBuffersAtHome() const; - - inline TBool IsTransitioningToEnabled() const; - - inline TBool IsTransitioningToDisabled() const; - - IMPORT_C virtual TBool IsBufferAtHome( - OMX_BUFFERHEADERTYPE* apHeaderHeader) const; - - inline OMX_U32 Index() const; - - inline OMX_PORTDOMAINTYPE Domain() const; - - inline OMX_U32 Count() const; - - inline OMX_BUFFERHEADERTYPE* const& operator[](TInt anIndex) const; - - inline OMX_BUFFERHEADERTYPE*& operator[](TInt anIndex); - - inline OMX_U32 BufferMarkPropagationPort() const; - -protected: - - class TBufferMarkInfo; - - /** - Buffer mark info list - */ - class TBufferMarkInfoQue : - public TSglQue - { - - public: - - // Convenience typedef.... - typedef TSglQue Tq; - - public: - - inline explicit TBufferMarkInfoQue(TInt aOffset); - - inline TBufferMarkInfo* First() const; - - inline void AddLast(TBufferMarkInfo& aRef); - - inline void Remove(TBufferMarkInfo& aRef); - - inline TInt Elements() const; - - inline void ResetAndDestroy(); - - private: - - TBufferMarkInfoQue(); - void AddFirst(TBufferMarkInfo& aRef); - TBool IsFirst(const TBufferMarkInfo* aPtr) const; - TBool IsLast(const TBufferMarkInfo* aPtr) const; - - TBufferMarkInfo* Last() const; - - private: - - TInt iNumElements; - - }; - - - class TBufferInfo; - -protected: - - enum TPortIntermediateState - { - EPortNotTransitioning, - EPortTransitioningToDisabled, - EPortTransitioningToEnabled - }; - - -protected: - - IMPORT_C explicit COmxILPort(const TOmxILCommonPortData& aCommonPortData); - - /** - When the IL Client calls SetParameter with index - OMX_IndexParamPortDefinition, this method is called to set the fields in - the OMX_PARAM_PORTDEFINITIONTYPE (@see iParamPortDefinition) structure - that are specific to this port's domain. - - @param aPortDefinition The OpenMAX IL structure received from the IL Client. - @param aUpdateProcessingFunction A flag to signal that the component's - processing function needs to be updated with the this structure. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE SetFormatInPortDefinition( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, - TBool& aUpdateProcessingFunction) = 0; - - /** - On a tunnel request, this method is called to check the compatibility of - the fields in the OMX_PARAM_PORTDEFINITIONTYPE structure of the - tunnelled component that are specific to this port's domain. - - @param aPortDefinition The OpenMAX IL structure received from a - tunnelled component. - - @return ETrue if compatible, EFalse otherwise. - */ - virtual TBool IsTunnelledPortCompatible( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const = 0; - - IMPORT_C virtual OMX_ERRORTYPE DoBufferAllocation( - OMX_U32 aSizeBytes, - OMX_U8*& apPortSpecificBuffer, - OMX_PTR& apPortPrivate, - OMX_PTR& apPlatformPrivate, - OMX_PTR apAppPrivate = 0); - - IMPORT_C virtual void DoBufferDeallocation( - OMX_PTR apPortSpecificBuffer, - OMX_PTR apPortPrivate, - OMX_PTR apPlatformPrivate, - OMX_PTR apAppPrivate = 0); - - IMPORT_C virtual OMX_ERRORTYPE DoBufferWrapping( - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - OMX_PTR& apPortPrivate, - OMX_PTR& apPlatformPrivate, - OMX_PTR apAppPrivate = 0); - - IMPORT_C virtual void DoBufferUnwrapping( - OMX_PTR apPortSpecificBuffer, - OMX_PTR apPortPrivate, - OMX_PTR apPlatformPrivate, - OMX_PTR apAppPrivate = 0); - - IMPORT_C virtual OMX_ERRORTYPE DoOmxUseBuffer( - OMX_HANDLETYPE aTunnelledComponent, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aTunnelledPortIndex, - OMX_PTR apPortPrivate, - OMX_PTR apPlatformPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer); - - template - inline OMX_ERRORTYPE GetParamStructureFromTunnel( - T& aComponentConfigStructure, OMX_INDEXTYPE aParamIndex) const; - - IMPORT_C OMX_ERRORTYPE StoreBufferMark( - OMX_HANDLETYPE& ipMarkTargetComponent, - OMX_PTR& ipMarkData); - - IMPORT_C void CleanUpPort(); - -protected: - - // Tunnelled component - OMX_HANDLETYPE iTunnelledComponent; - - // Tunnelled component's port - OMX_U32 iTunnelledPort; - - // Buffer headers store - RArray iBufferHeaders; - - // Buffer marks store - TBufferMarkInfoQue iBufferMarks; - - // Port's intermediate state to enabled or disabled - TPortIntermediateState iTransitionState; - - // Associated port that will be used to propagate buffer marks - OMX_U32 iBufferMarkPropagationPortIndex; - - // OpenMAX IL port definition structure - OMX_PARAM_PORTDEFINITIONTYPE iParamPortDefinition; - - // OpenMAX IL buffer supplier structure - OMX_PARAM_BUFFERSUPPLIERTYPE iParamCompBufferSupplier; - - }; - - -/** - Structure used to pass the common information that an OpenMAX IL port needs - at instantiation time. -*/ -class TOmxILCommonPortData - { - -public: - - // OMX specification version information - OMX_VERSIONTYPE iOmxVersion; - // Port number the structure applies to - OMX_U32 iPortIndex; - // Direction (input or output) of this port - OMX_DIRTYPE iDirection; - // The minimum number of buffers this port requires - OMX_U32 iBufferCountMin; - // Minimum size, in bytes, for buffers to be used for this port - OMX_U32 iBufferSizeMin; - // Domain of the port - OMX_PORTDOMAINTYPE iPortDomain; - // Buffers contiguous requirement (true or false) - OMX_BOOL iBuffersContiguous; - // Buffer aligment requirements - OMX_U32 iBufferAlignment; - // Port supplier preference when tunneling between two ports - OMX_BUFFERSUPPLIERTYPE iBufferSupplier; - - // \brief This is the associated port that will be used to propagate buffer marks - // found in incoming buffer headers. - // - // In general, for any output port, this parameter should be configured - // with constant COmxILPort::KBufferMarkPropagationPortNotNeeded except - // for an output port of a source component, in which case it must be used - // the same index of the port that this structure applies to. For an input - // port of a sink component, - // COmxILPort::KBufferMarkPropagationPortNotNeeded must also be used. - OMX_U32 iBufferMarkPropagationPortIndex; - - // Constructor - IMPORT_C TOmxILCommonPortData( - OMX_VERSIONTYPE aOmxVersion, - OMX_U32 aPortIndex, - OMX_DIRTYPE aDirection, - OMX_U32 aBufferCountMin, - OMX_U32 aBufferSizeMin, - OMX_PORTDOMAINTYPE aPortDomain, - OMX_BOOL aBuffersContiguous, - OMX_U32 aBufferAlignment, - OMX_BUFFERSUPPLIERTYPE aBufferSupplier, - OMX_U32 aBufferMarkPropagationPortIndex); - - }; - -/** - Buffer mark info structure -*/ -class COmxILPort::TBufferMarkInfo - { - -public: - - inline explicit TBufferMarkInfo( - const OMX_MARKTYPE*& apMark, - TBool aOwnMark = ETrue); - - inline TBufferMarkInfo( - OMX_HANDLETYPE& apMarkTargetComponent, - OMX_PTR& apMarkData, - TBool aOwnMark = ETrue); - -public: - - OMX_HANDLETYPE ipMarkTargetComponent; - OMX_PTR ipMarkData; - TBool iOwnMark; - TSglQueLink iLink; - - }; - -/** - Buffer info structure -*/ -class COmxILPort::TBufferInfo - { - -public: - - enum THeaderLocationProperty - { - EBufferAtHome = 0x01, - EBufferAway = 0x00 - }; - - enum THeaderOwnershipProperty - { - EBufferOwned = 0x02, - EBufferNotOwned = 0x00 - }; - -public: - - inline TBufferInfo(OMX_BUFFERHEADERTYPE* apHeader, - THeaderLocationProperty aLocation, - THeaderOwnershipProperty aOwnership, - OMX_U8* apBuffer, - OMX_PTR apApp, - OMX_PTR apPlatform, - OMX_PTR apPort); - - inline explicit TBufferInfo(OMX_BUFFERHEADERTYPE* apHeader); - - IMPORT_C static TBool Compare(const TBufferInfo& aBi1, - const TBufferInfo& aBi2); - - inline const OMX_BUFFERHEADERTYPE* GetHeader() const; - - inline OMX_BUFFERHEADERTYPE* GetHeader(); - - inline operator OMX_BUFFERHEADERTYPE*&(); - - inline operator OMX_BUFFERHEADERTYPE* const&() const; - - inline OMX_U8* GetBufferPointer() const; - - inline OMX_U8* GetBufferPointer(); - - inline OMX_PTR GetPortPointer() const; - - inline OMX_PTR GetPortPointer(); - - inline OMX_PTR GetPlatformPointer() const; - - inline OMX_PTR GetPlatformPointer(); - - inline OMX_PTR GetAppPointer() const; - - inline OMX_PTR GetAppPointer(); - - inline void SetBufferAtHome(); - - inline void SetBufferAway(); - - inline void SetBufferOwned(); - - inline void SetBufferNotOwned(); - - inline TBool IsBufferAtHome() const; - - inline TBool IsBufferOwned() const; - -private: - - enum THeaderPropertyMask - { - EBufferAwayMask = 0xFE, - EBufferNotOwnedMask = 0xFD - }; - -private: - - OMX_BUFFERHEADERTYPE* ipHeader; - TUint8 iBufferProperties; - OMX_U8* ipBuffer; - OMX_PTR ipApp; - OMX_PTR ipPlatform; - OMX_PTR ipPort; - - }; - -#include "omxilport.inl" - -#endif // OMXILPORT_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilport.inl --- a/omxil/omxilcomponentcommon/src/common/omxilport.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,372 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -inline OMX_DIRTYPE -COmxILPort::Direction() const - { - return iParamPortDefinition.eDir; - } - -inline TBool -COmxILPort::IsEnabled() const - { - return iParamPortDefinition.bEnabled; - } - -inline TBool -COmxILPort::IsPopulated() const - { - return (OMX_TRUE == iParamPortDefinition.bPopulated ? ETrue : EFalse); - } - -inline TBool -COmxILPort::IsDePopulated() const - { - return (iBufferHeaders.Count() == 0 ? ETrue : EFalse); - } - -inline TBool -COmxILPort::IsTunnelled() const - { - return (iTunnelledComponent != 0 ? ETrue : EFalse); - } - -inline TBool -COmxILPort::IsTunnelledAndBufferSupplier() const - { - TBool retValue = ( - iTunnelledComponent && - (((iParamCompBufferSupplier.eBufferSupplier == - OMX_BufferSupplyInput) - && - (iParamPortDefinition.eDir == OMX_DirInput)) - || - ((iParamCompBufferSupplier.eBufferSupplier == OMX_BufferSupplyOutput) - && - (iParamPortDefinition.eDir == OMX_DirOutput))) - ); - - return retValue; - - } - -inline TBool -COmxILPort::IsTransitioningToEnabled() const - { - return (iTransitionState == EPortTransitioningToEnabled ? ETrue : EFalse); - } - -inline TBool -COmxILPort::IsTransitioningToDisabled() const - { - return (iTransitionState == EPortTransitioningToDisabled ? ETrue : EFalse); - } - -inline OMX_U32 -COmxILPort::Index() const - { - return iParamPortDefinition.nPortIndex; - } - -inline OMX_PORTDOMAINTYPE -COmxILPort::Domain() const - { - return iParamPortDefinition.eDomain; - } - -inline OMX_U32 -COmxILPort::Count() const - { - return iBufferHeaders.Count(); - } - -inline OMX_BUFFERHEADERTYPE* const& -COmxILPort::operator[](TInt anIndex) const - { - return this->operator[](anIndex); - } - -inline OMX_BUFFERHEADERTYPE*& -COmxILPort::operator[](TInt anIndex) - { - __ASSERT_ALWAYS((anIndex>=0 && anIndex -inline OMX_ERRORTYPE -COmxILPort::GetParamStructureFromTunnel( - T& aComponentConfigStructure, OMX_INDEXTYPE aParamIndex) const - { - - __ASSERT_ALWAYS(iTunnelledComponent, - User::Panic(KOmxILPortPanicCategory, 1)); - - aComponentConfigStructure.nSize = sizeof(T); - aComponentConfigStructure.nVersion = TOmxILSpecVersion(); - aComponentConfigStructure.nPortIndex = iTunnelledPort; - - if (OMX_ErrorNone != - OMX_GetParameter(iTunnelledComponent, - aParamIndex, - &aComponentConfigStructure) ) - { - return OMX_ErrorUndefined; - } - - return OMX_ErrorNone; - - } - - - -inline -COmxILPort::TBufferMarkInfo::TBufferMarkInfo( - const OMX_MARKTYPE*& apMark, - TBool aOwnMark /* = ETrue */) - : - ipMarkTargetComponent(apMark->hMarkTargetComponent), - ipMarkData(apMark->pMarkData), - iOwnMark(aOwnMark) - { - __ASSERT_DEBUG(ipMarkTargetComponent, - User::Panic(KOmxILPortPanicCategory, 1)); - } - -inline -COmxILPort::TBufferMarkInfo::TBufferMarkInfo( - OMX_HANDLETYPE& apMarkTargetComponent, - OMX_PTR& apMarkData, - TBool aOwnMark /* = ETrue */) - : - ipMarkTargetComponent(apMarkTargetComponent), - ipMarkData(apMarkData), - iOwnMark(aOwnMark) - { - __ASSERT_DEBUG(ipMarkTargetComponent, - User::Panic(KOmxILPortPanicCategory, 1)); - } - -inline -COmxILPort::TBufferMarkInfoQue::TBufferMarkInfoQue(TInt aOffset) - : - Tq(aOffset), - iNumElements(0) - { - } - -inline COmxILPort::TBufferMarkInfo* -COmxILPort::TBufferMarkInfoQue::First() const - { - return Tq::First(); - } - -inline void -COmxILPort::TBufferMarkInfoQue::AddLast(COmxILPort::TBufferMarkInfo& aRef) - { - Tq::AddLast(aRef); - ++iNumElements; - } - -inline void -COmxILPort::TBufferMarkInfoQue::Remove(COmxILPort::TBufferMarkInfo& aRef) - { - Tq::Remove(aRef); - --iNumElements; - } - -inline TInt -COmxILPort::TBufferMarkInfoQue::Elements() const - { - return iNumElements; - } - -inline void -COmxILPort::TBufferMarkInfoQue::ResetAndDestroy() - { - while (!Tq::IsEmpty()) - { - COmxILPort::TBufferMarkInfo* pMark = Tq::First(); - __ASSERT_DEBUG(pMark, User::Panic(KOmxILPortPanicCategory, 1)); - Tq::Remove(*pMark); - delete pMark; - } - iNumElements = 0; - } - - -inline -COmxILPort::TBufferInfo::TBufferInfo( - OMX_BUFFERHEADERTYPE* apHeader, - THeaderLocationProperty aLocation, - THeaderOwnershipProperty aOwnership, - OMX_U8* apBuffer, - OMX_PTR apApp, - OMX_PTR apPlatform, - OMX_PTR apPort) - : - ipHeader(apHeader), - iBufferProperties(0), - ipBuffer(apBuffer), - ipApp(apApp), - ipPlatform(apPlatform), - ipPort(apPort) - { - __ASSERT_DEBUG(ipHeader, User::Panic(KOmxILPortPanicCategory, 1)); - iBufferProperties = aLocation | aOwnership; - } - - -// This constructor should only be used for array look-ups -inline -COmxILPort::TBufferInfo::TBufferInfo( - OMX_BUFFERHEADERTYPE* apHeader) - : - ipHeader(apHeader), - iBufferProperties(0), - ipBuffer(0), - ipApp(0), - ipPlatform(0), - ipPort(0) - { - __ASSERT_DEBUG(ipHeader, User::Panic(KOmxILPortPanicCategory, 1)); - iBufferProperties = EBufferAtHome | EBufferOwned; - } - - -inline const OMX_BUFFERHEADERTYPE* -COmxILPort::TBufferInfo::GetHeader() const - { - return ipHeader; - } - -inline OMX_BUFFERHEADERTYPE* -COmxILPort::TBufferInfo::GetHeader() - { - return ipHeader; - } - -inline -COmxILPort::TBufferInfo::operator OMX_BUFFERHEADERTYPE*&() - { - return ipHeader; - } - -inline -COmxILPort::TBufferInfo::operator OMX_BUFFERHEADERTYPE* const&() const - { - return ipHeader; - } - -inline OMX_U8* -COmxILPort::TBufferInfo::GetBufferPointer() const - { - return ipBuffer; - } - -inline OMX_U8* -COmxILPort::TBufferInfo::GetBufferPointer() - { - return ipBuffer; - } - -inline OMX_PTR -COmxILPort::TBufferInfo::GetPortPointer() const - { - return ipPort; - } - -inline OMX_PTR -COmxILPort::TBufferInfo::GetPortPointer() - { - return ipPort; - } - -inline OMX_PTR -COmxILPort::TBufferInfo::GetPlatformPointer() const - { - return ipPlatform; - } - -inline OMX_PTR -COmxILPort::TBufferInfo::GetPlatformPointer() - { - return ipPlatform; - } - -inline OMX_PTR -COmxILPort::TBufferInfo::GetAppPointer() const - { - return ipApp; - } - -inline OMX_PTR -COmxILPort::TBufferInfo::GetAppPointer() - { - return ipApp; - } - -inline void -COmxILPort::TBufferInfo::SetBufferAtHome() - { - iBufferProperties |= EBufferAtHome; - } - -inline void -COmxILPort::TBufferInfo::SetBufferAway() - { - iBufferProperties &= EBufferAwayMask; - } - -inline void -COmxILPort::TBufferInfo::SetBufferOwned() - { - iBufferProperties |= EBufferOwned; - } - -inline void -COmxILPort::TBufferInfo::SetBufferNotOwned() - { - iBufferProperties &= EBufferNotOwnedMask; - } - -inline TBool -COmxILPort::TBufferInfo::IsBufferAtHome() const - { - return ((iBufferProperties & EBufferAtHome) != 0x0 ? ETrue : EFalse); - } - -inline TBool -COmxILPort::TBufferInfo::IsBufferOwned() const - { - return ((iBufferProperties & EBufferOwned) != 0x0 ? ETrue : EFalse); - } - - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilportmanager.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilportmanager.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1953 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "log.h" -#include "omxilportmanager.h" -#include "omxilprocessingfunction.h" -#include "omxilcallbackmanager.h" -#include "omxilutil.h" - -EXPORT_C COmxILPortManager* -COmxILPortManager::NewL( - COmxILProcessingFunction& aProcessingFunction, - MOmxILCallbackManagerIf& aCallbacks, - const OMX_VERSIONTYPE& aOmxVersion, - OMX_U32 aNumberOfAudioPorts, - OMX_U32 aStartAudioPortNumber, - OMX_U32 aNumberOfImagePorts, - OMX_U32 aStartImagePortNumber, - OMX_U32 aNumberOfVideoPorts, - OMX_U32 aStartVideoPortNumber, - OMX_U32 aNumberOfOtherPorts, - OMX_U32 aStartOtherPortNumber, - OMX_BOOL aImmediateReturnTimeBuffer) - { - DEBUG_PRINTF(_L8("COmxILPortManager::NewL")); - - COmxILPortManager* self = - new (ELeave)COmxILPortManager( - aProcessingFunction, - aCallbacks, - aOmxVersion, - aNumberOfAudioPorts, - aStartAudioPortNumber, - aNumberOfImagePorts, - aStartImagePortNumber, - aNumberOfVideoPorts, - aStartVideoPortNumber, - aNumberOfOtherPorts, - aStartOtherPortNumber, - aImmediateReturnTimeBuffer); - - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -void -COmxILPortManager::ConstructL() - { - DEBUG_PRINTF(_L8("COmxILPortManager::ConstructL")); - - InsertParamIndexL(OMX_IndexParamAudioInit); - InsertParamIndexL(OMX_IndexParamImageInit); - InsertParamIndexL(OMX_IndexParamVideoInit); - InsertParamIndexL(OMX_IndexParamOtherInit); - - - if(iAudioParamInit.nStartPortNumber != 0) - { - User::Leave(KErrArgument); - } - - if (iImageParamInit.nPorts > 0) - { - if (iAudioParamInit.nPorts != - iImageParamInit.nStartPortNumber) - { - User::Leave(KErrArgument); - } - } - - if (iVideoParamInit.nPorts > 0) - { - if ((iAudioParamInit.nPorts + - iImageParamInit.nPorts) != - iVideoParamInit.nStartPortNumber) - { - User::Leave(KErrArgument); - } - } - - if (iOtherParamInit.nPorts > 0) - { - if ((iAudioParamInit.nPorts + - iImageParamInit.nPorts + - iVideoParamInit.nPorts) != - iOtherParamInit.nStartPortNumber) - { - User::Leave(KErrArgument); - } - } - - } - -COmxILPortManager::COmxILPortManager( - COmxILProcessingFunction& aProcessingFunction, - MOmxILCallbackManagerIf& aCallbacks, - const OMX_VERSIONTYPE& aOmxVersion, - OMX_U32 aNumberOfAudioPorts, - OMX_U32 aStartAudioPortNumber, - OMX_U32 aNumberOfImagePorts, - OMX_U32 aStartImagePortNumber, - OMX_U32 aNumberOfVideoPorts, - OMX_U32 aStartVideoPortNumber, - OMX_U32 aNumberOfOtherPorts, - OMX_U32 aStartOtherPortNumber, - OMX_BOOL aImmediateReturnTimeBuffer) - : - iProcessingFunction(aProcessingFunction), - iCallbacks(aCallbacks), - iAllPorts(), - iImmediateReturnTimeBuffer(aImmediateReturnTimeBuffer) - { - DEBUG_PRINTF(_L8("COmxILPortManager::COmxILPortManager")); - - iAudioParamInit.nSize = sizeof(OMX_PORT_PARAM_TYPE); - iAudioParamInit.nVersion = aOmxVersion; - iAudioParamInit.nPorts = aNumberOfAudioPorts; - iAudioParamInit.nStartPortNumber = aStartAudioPortNumber; - - iImageParamInit.nSize = sizeof(OMX_PORT_PARAM_TYPE); - iImageParamInit.nVersion = aOmxVersion; - iImageParamInit.nPorts = aNumberOfImagePorts; - iImageParamInit.nStartPortNumber = aStartImagePortNumber; - - iVideoParamInit.nSize = sizeof(OMX_PORT_PARAM_TYPE); - iVideoParamInit.nVersion = aOmxVersion; - iVideoParamInit.nPorts = aNumberOfVideoPorts; - iVideoParamInit.nStartPortNumber = aStartVideoPortNumber; - - iOtherParamInit.nSize = sizeof(OMX_PORT_PARAM_TYPE); - iOtherParamInit.nVersion = aOmxVersion; - iOtherParamInit.nPorts = aNumberOfOtherPorts; - iOtherParamInit.nStartPortNumber = aStartOtherPortNumber; - - } - -COmxILPortManager::~COmxILPortManager() - { - DEBUG_PRINTF(_L8("COmxILPortManager::~COmxILPortManager")); - iAllPorts.Reset(); // data not owned here - iTimePorts.Close(); - } - -void -COmxILPortManager::AppendPortL(const COmxILPort* aPort) - { - DEBUG_PRINTF(_L8("COmxILPortManager::AppendPort")); - - const TInt portCount = iAllPorts.Count(); - OMX_PORTDOMAINTYPE portDomain = aPort->Domain(); - OMX_U32 startPortNumber = 0; - TBool timePort = EFalse; - - switch(portDomain) - { - case OMX_PortDomainAudio: - { - __ASSERT_ALWAYS(portCount >= 0, - User::Panic(KOmxILPortManagerPanicCategory, 1)); - __ASSERT_ALWAYS(portCount < iAudioParamInit.nPorts, - User::Panic(KOmxILPortManagerPanicCategory, 1)); - - startPortNumber = iAudioParamInit.nStartPortNumber; - - } - break; - - case OMX_PortDomainImage: - { - __ASSERT_ALWAYS(portCount >= iAudioParamInit.nPorts, - User::Panic(KOmxILPortManagerPanicCategory, 1)); - __ASSERT_ALWAYS(portCount < - iAudioParamInit.nPorts + - iImageParamInit.nPorts, - User::Panic(KOmxILPortManagerPanicCategory, 1)); - - startPortNumber = iImageParamInit.nStartPortNumber; - - } - break; - - case OMX_PortDomainVideo: - { - __ASSERT_ALWAYS(portCount >= - iAudioParamInit.nPorts + - iImageParamInit.nPorts, - User::Panic(KOmxILPortManagerPanicCategory, 1)); - __ASSERT_ALWAYS(portCount < - iAudioParamInit.nPorts + - iImageParamInit.nPorts + - iVideoParamInit.nPorts, - User::Panic(KOmxILPortManagerPanicCategory, 1)); - - startPortNumber = iVideoParamInit.nStartPortNumber; - - } - break; - - - case OMX_PortDomainOther: - { - __ASSERT_ALWAYS(portCount >= - iAudioParamInit.nPorts + - iImageParamInit.nPorts + - iVideoParamInit.nPorts, - User::Panic(KOmxILPortManagerPanicCategory, 1)); - __ASSERT_ALWAYS(portCount < - iAudioParamInit.nPorts + - iImageParamInit.nPorts + - iVideoParamInit.nPorts + - iOtherParamInit.nPorts, - User::Panic(KOmxILPortManagerPanicCategory, 1)); - - startPortNumber = iOtherParamInit.nStartPortNumber; - - OMX_OTHER_PARAM_PORTFORMATTYPE paramFormat; - paramFormat.nSize = sizeof(OMX_OTHER_PARAM_PORTFORMATTYPE); - paramFormat.nVersion = TOmxILSpecVersion(); - paramFormat.nPortIndex = aPort->Index(); - paramFormat.nIndex = 0; - - if ((aPort->GetParameter(OMX_IndexParamOtherPortFormat, ¶mFormat) == OMX_ErrorNone) && - paramFormat.eFormat == OMX_OTHER_FormatTime) - { - timePort = ETrue; - } - } - - break; - - default: - { - User::Panic(KOmxILPortManagerPanicCategory, 1); - } - }; - - if(portCount == startPortNumber) - { - iAllPorts.AppendL(aPort); - } - else - { - for (TInt i=startPortNumber; iIndex() >= aPort->Index()) - { - User::Panic(KOmxILPortManagerPanicCategory, 1); - } - } - iAllPorts.AppendL(aPort); - } - - iTimePorts.AppendL(timePort); - } - -/** - This method is used at component's construction time, i.e., in a factory - method of the component. The main component object uses this method to add - the component's ports to its port manager instance. - - @param aPort The port instance to be added. - - @param aDirection The direction of the port being added. - - @ return A Symbian error code indicating if the function call was - successful. KErrNone on success, otherwise another of the system-wide error - codes. -*/ -EXPORT_C TInt -COmxILPortManager::AddPort(const COmxILPort* aPort, - OMX_DIRTYPE aDirection) - { - DEBUG_PRINTF(_L8("COmxILPortManager::AddPort")); - - __ASSERT_ALWAYS(aPort, User::Panic(KOmxILPortManagerPanicCategory, 1)); - - if (iAllPorts.Count() >= (iAudioParamInit.nPorts + - iVideoParamInit.nPorts + - iImageParamInit.nPorts + - iOtherParamInit.nPorts)) - { - return KErrArgument; - } - - if (aPort->Direction() != aDirection) - { - return KErrArgument; - } - - if (iAllPorts.Find(aPort) != KErrNotFound) - { - return KErrArgument; - } - - TRAPD(err, AppendPortL(aPort)); - if (KErrNone != err) - { - return err; - } - - OMX_ERRORTYPE omxRetValue = - aPort->GetLocalOmxParamIndexes(ManagedParamIndexes()); - if (OMX_ErrorNone == omxRetValue) - { - omxRetValue = aPort->GetLocalOmxConfigIndexes(ManagedConfigIndexes()); - } - - if (OMX_ErrorNone != omxRetValue) - { - if (OMX_ErrorInsufficientResources == omxRetValue) - { - return KErrNoMemory; - } - else - { - return KErrGeneral; - } - } - - // Here, let's register this port into the call back manager so buffer - // marks can be propagated to the right port... - const OMX_U32 propagationPortIndex = aPort->BufferMarkPropagationPort(); - if (propagationPortIndex != COmxILPort::KBufferMarkPropagationPortNotNeeded) - { - omxRetValue = iCallbacks.RegisterBufferMarkPropagationPort(aPort->Index(), - propagationPortIndex); - } - - err = KErrNone; - if (OMX_ErrorNone != omxRetValue) - { - switch (omxRetValue) - { - case OMX_ErrorInsufficientResources: - { - err = KErrNoMemory; - } - break; - default: - { - err = KErrGeneral; - } - }; - } - - return err; - - } - -TBool -COmxILPortManager::RemoveBuffersFromPfOrCm( - COmxILPort* apPort, OMX_BOOL aRemoveFromPfOnly /* = OMX_FALSE */) const - { - __ASSERT_DEBUG(apPort, User::Panic(KOmxILPortManagerPanicCategory, 1)); - DEBUG_PRINTF3(_L8("COmxILPortManager::RemoveBuffersFromPfOrCm: PORT[%d] aRemoveFromPfOnly[%s] "), - apPort->Index(), aRemoveFromPfOnly ? "TRUE" : "FALSE"); - - const TInt headerCount = apPort->Count(); - OMX_BUFFERHEADERTYPE* pHeader = 0; - TBool allHeadersRemovedFromPf = ETrue; - for (TInt j=0; jIsBufferAtHome(pHeader)) - { - // Tell the PF to remove this header from its queues... - if (!iProcessingFunction.BufferRemovalIndication( - pHeader, - apPort->Direction())) - { - if (OMX_FALSE == aRemoveFromPfOnly) - { - if (!iCallbacks.BufferRemovalIndication( - pHeader, - apPort->Direction())) - { - allHeadersRemovedFromPf = EFalse; - } - else - { - apPort->SetBufferReturned(pHeader); - // Make sure the buffer contents are cleared - TOmxILUtil::ClearBufferContents(pHeader); - } - } - } - else - { - apPort->SetBufferReturned(pHeader); - // Make sure the buffer contents are cleared - TOmxILUtil::ClearBufferContents(pHeader); - } - } - } - - return allHeadersRemovedFromPf; - - } - -OMX_ERRORTYPE -COmxILPortManager::GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILPortManager::GetParameter")); - - TInt index = FindParamIndex(aParamIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamAudioInit: - case OMX_IndexParamImageInit: - case OMX_IndexParamVideoInit: - case OMX_IndexParamOtherInit: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_PORT_PARAM_TYPE)))) - { - return omxRetValue; - } - - OMX_PORT_PARAM_TYPE* - pPortParamType - = static_cast( - apComponentParameterStructure); - - switch(aParamIndex) - { - case OMX_IndexParamAudioInit: - *pPortParamType = iAudioParamInit; - break; - case OMX_IndexParamImageInit: - *pPortParamType = iImageParamInit; - break; - case OMX_IndexParamVideoInit: - *pPortParamType = iVideoParamInit; - break; - case OMX_IndexParamOtherInit: - *pPortParamType = iOtherParamInit; - break; - } - - } - break; - - default: - { - // Obtain the port index - OMX_U32 portIndex; - if (OMX_ErrorNone != GetPortIndexFromOmxStruct( - apComponentParameterStructure, - portIndex)) - { - return OMX_ErrorBadPortIndex; - } - - // Now delegate to the specific port - return iAllPorts[portIndex]->GetParameter( - aParamIndex, - apComponentParameterStructure); - } - }; - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPortManager::SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - OMX_BOOL aPortIsDisabled /* = OMX_FALSE */ ) - { - DEBUG_PRINTF(_L8("COmxILPortManager::SetParameter")); - - TInt index = FindParamIndex(aParamIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - // Obtain the port index - OMX_U32 portIndex; - if (OMX_ErrorNone != GetPortIndexFromOmxStruct( - apComponentParameterStructure, - portIndex)) - { - return OMX_ErrorBadPortIndex; - } - - // Grab the port here... - COmxILPort* pPort = iAllPorts[portIndex]; - - if (OMX_TRUE == aPortIsDisabled && - pPort->IsEnabled() && - !pPort->IsTransitioningToEnabled()) - { - // There is an indication from the FSM that the port must be disabled, - // otherwise, this is not allowed in the current state. - return OMX_ErrorIncorrectStateOperation; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamAudioInit: - case OMX_IndexParamVideoInit: - case OMX_IndexParamImageInit: - case OMX_IndexParamOtherInit: - { - // Don't allow changes in the OMX_PORT_PARAM_TYPE structure - return OMX_ErrorUnsupportedIndex; - } - default: - { - TBool updateProcessingFunction = EFalse; - omxRetValue = - pPort->SetParameter( - aParamIndex, - apComponentParameterStructure, - updateProcessingFunction); - - if (OMX_ErrorNone == omxRetValue) - { - if (updateProcessingFunction) - { - omxRetValue = iProcessingFunction.ParamIndication( - aParamIndex, - apComponentParameterStructure); - } - } - - } - }; - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILPortManager::GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const - { - DEBUG_PRINTF(_L8("COmxILPortManager::GetConfig")); - - TInt index = FindConfigIndex(aConfigIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - // Obtain the port index - OMX_U32 portIndex; - if (OMX_ErrorNone != GetPortIndexFromOmxStruct(apComponentConfigStructure, - portIndex)) - { - return OMX_ErrorBadPortIndex; - } - - // Now delegate to the specific port - return iAllPorts[portIndex]->GetConfig( - aConfigIndex, - apComponentConfigStructure); - - } - -OMX_ERRORTYPE -COmxILPortManager::SetConfig(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure) - { - DEBUG_PRINTF(_L8("COmxILPortManager::SetConfig")); - - TInt index = FindConfigIndex(aConfigIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - // Obtain the port index - OMX_U32 portIndex; - if (OMX_ErrorNone != GetPortIndexFromOmxStruct(apComponentConfigStructure, - portIndex)) - { - return OMX_ErrorBadPortIndex; - } - - TBool updateProcessingFunction = EFalse; - OMX_ERRORTYPE omxRetValue = - iAllPorts[portIndex]->SetConfig( - aConfigIndex, - apComponentConfigStructure, - updateProcessingFunction); - - if (OMX_ErrorNone == omxRetValue) - { - if (updateProcessingFunction) - { - omxRetValue = iProcessingFunction.ConfigIndication( - aConfigIndex, - apComponentConfigStructure); - } - } - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILPortManager::GetExtensionIndex( - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const - { - DEBUG_PRINTF(_L8("COmxILPortManager::GetExtensionIndex")); - - // See if the extension index is supported by any of the ports... - const TInt portCount = iAllPorts.Count(); - OMX_ERRORTYPE retValue = OMX_ErrorNone; - for (TUint i = 0; i< portCount; ++i) - { - retValue = iAllPorts[i]->GetExtensionIndex(aParameterName, - apIndexType); - if (retValue != OMX_ErrorUnsupportedIndex) - { - return retValue; - } - } - - return OMX_ErrorUnsupportedIndex; - - } - -OMX_ERRORTYPE -COmxILPortManager::PopulateBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted, - OMX_BOOL aPortIsDisabled /* = OMX_FALSE */ ) - { - DEBUG_PRINTF(_L8("COmxILPortManager::PopulateBuffer")); - - // Check the index of the port.. - if (CheckPortIndex(aPortIndex) != OMX_ErrorNone) - { - return OMX_ErrorBadPortIndex; - } - - // Grab the port here... - COmxILPort* pPort = iAllPorts[aPortIndex]; - - if (OMX_TRUE == aPortIsDisabled && - pPort->IsEnabled() && - !pPort->IsTransitioningToEnabled()) - { - // There is an indication from the FSM that the port must be disabled, - // otherwise, the buffer allocation is not allowed in the current - // state. Note that a port may be transitioning to enabled and in that - // case the buffer population must be allowed... - return OMX_ErrorIncorrectStateOperation; - } - - // Check that in case of tunnelling, this port is not buffer supplier... - if (pPort->IsTunnelledAndBufferSupplier()) - { - return OMX_ErrorBadPortIndex; - } - - // Now delegate to the port... - OMX_ERRORTYPE omxRetValue; - if (OMX_ErrorNone != (omxRetValue = pPort->PopulateBuffer( - appBufferHdr, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted))) - { - return omxRetValue; - } - - if (portPopulationCompleted && pPort->IsTransitioningToEnabled()) - { - // This is a case of port being enabled... Inform the port that it - // has been enabled.. - pPort->SetTransitionToEnabledCompleted(); - - // For each enabled port, the IL Client must be notified with an - // enabled completion event... - omxRetValue = iCallbacks.CommandCompleteNotification( - OMX_CommandPortEnable, pPort->Index()); - } - - return omxRetValue; - - } - - -OMX_ERRORTYPE -COmxILPortManager::FreeBuffer(OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBufferHeader, - TBool& portDepopulationCompleted, - OMX_BOOL aPortIsDisabled /* = OMX_FALSE */) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::FreeBuffer : BUFFER [%X]"), apBufferHeader); - - // Check the index of the port.. - if (CheckPortIndex(aPortIndex) != OMX_ErrorNone) - { - return OMX_ErrorBadPortIndex; - } - - // Grab the port here... - COmxILPort* pPort = iAllPorts[aPortIndex]; - - // Check that in case of tunnelling, this port is not buffer supplier... - if (pPort->IsTunnelledAndBufferSupplier()) - { - return OMX_ErrorBadPortIndex; - } - - TBool errorPortUnpopulated = EFalse; - if (OMX_TRUE == aPortIsDisabled && - pPort->IsEnabled()) - { - // There is an indication from the FSM that the port should be - // disabled. If that's not the case, the buffer deallocation will raise - // an OMX_ErrorPortUnpopulated error in the current state. - - if (!pPort->IsBufferAtHome(apBufferHeader)) - { - // FreeBuffer will normally be called in a situation where we are - // not suppliers and the supplier already got the buffer. So the - // buffer won't be on our side almost never. - - if (!iTimePorts[aPortIndex] || !iImmediateReturnTimeBuffer) - { - // We'll tell the PF to remove this - // header from its queues, in case this is called in some strange - // situation (should not happen if the tunnelled component is well - // behaved)... - iProcessingFunction.BufferRemovalIndication( - apBufferHeader, - pPort->Direction()); - } - - // Set the returned flag as this buffer will not count as "away" - // anymore... - pPort->SetBufferReturned(apBufferHeader); - } - - // We have to send the Port Unpopulated Error... - errorPortUnpopulated = ETrue; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - // Now delegate to the port... - if (OMX_ErrorNone != (omxRetValue = pPort->FreeBuffer( - apBufferHeader, - portDepopulationCompleted))) - { - return omxRetValue; - } - - if (errorPortUnpopulated) - { - if (OMX_ErrorNone != - (omxRetValue = - iCallbacks.ErrorEventNotification(OMX_ErrorPortUnpopulated))) - { - return omxRetValue; - } - } - - - if (portDepopulationCompleted) - { - if (pPort->IsTransitioningToDisabled()) - { - // Here we must complete the OMX_CommandPortDisable command - - // Set the state of the port to disabled as the command has already - // completed... - pPort->SetTransitionToDisabledCompleted(); - - // For each disabled port, the IL Client must be notified - // with a disabled completion event... - omxRetValue = iCallbacks.CommandCompleteNotification( - OMX_CommandPortDisable, aPortIndex); - - // Clear this flag here. Otherwise, the FSM would inform the client - // of a successful transition to OMX_StateIdle which is not the - // case... - portDepopulationCompleted = EFalse; - } - } - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILPortManager::TunnelRequest(OMX_U32 aPortIndex, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup, - OMX_BOOL aPortIsDisabled /* = OMX_FALSE */) - { - DEBUG_PRINTF3(_L8("COmxILPortManager::TunnelRequest : aTunneledComp [%X] aTunneledPort [%d]"), aTunneledComp, aTunneledPort); - - // Check the index of the port.. - if (CheckPortIndex(aPortIndex) != OMX_ErrorNone) - { - return OMX_ErrorBadPortIndex; - } - - // Grab the port here... - COmxILPort* pPort = iAllPorts[aPortIndex]; - - if (OMX_TRUE == aPortIsDisabled && - pPort->IsEnabled()) - { - // There is an indication from the FSM that the port must be disabled, - // otherwise, the tunnel request is not allowed in the current state. - return OMX_ErrorIncorrectStateOperation; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - // Check whether the tunnel is being torn down... - if (!aTunneledComp) - { - // Tell the port... - if (OMX_ErrorNone != - (omxRetValue = pPort->TunnelRequest( - aTunneledComp, - aTunneledPort, - apTunnelSetup))) - { - return omxRetValue; - } - - if (OMX_ErrorNone != - (omxRetValue = iCallbacks.DeregisterTunnelCallback(aPortIndex))) - { - // This is serious enough... - return OMX_ErrorInvalidComponent; - } - - // We are done here... - return OMX_ErrorNone; - } - - // Check whether the port is being re-tunnelled... - if (pPort->IsTunnelled()) - { - // Only two valid options here: - // 1.- The port is completely disabled... - // or... - // 2.- The port is enabled AND component in OMX_StateLoaded - if ((!pPort->IsEnabled() && - !pPort->IsTransitioningToEnabled() && - !pPort->IsTransitioningToDisabled()) - || - (pPort->IsEnabled() && !aPortIsDisabled)) - { - if (OMX_ErrorNone != - (omxRetValue = iCallbacks.DeregisterTunnelCallback(aPortIndex))) - { - return OMX_ErrorInvalidComponent; - } - } - else - { - return OMX_ErrorIncorrectStateOperation; - } - } - - // Delegate to the port... - if (OMX_ErrorNone != - (omxRetValue = pPort->TunnelRequest( - aTunneledComp, - aTunneledPort, - apTunnelSetup))) - { - return omxRetValue; - } - - // From this point on, the port will assume that a tunnel has been - // successfully created. If there is a problem at other end, the IL Client - // will clear the tunnel on this side using ComponentTunnelRequest with - // NULL handle parameter - - // Register the existence of a tunnel within the callback manager... - if (OMX_ErrorNone != - (omxRetValue = iCallbacks.RegisterTunnelCallback(aPortIndex, - pPort->Direction(), - aTunneledComp, - aTunneledPort))) - { - // This is serious enough... - return OMX_ErrorInvalidComponent; - } - - return OMX_ErrorNone; - - } - - -OMX_ERRORTYPE -COmxILPortManager::TunnellingBufferAllocation(TBool& aComponentPopulationCompleted, - TUint32 aPortIndex /* = OMX_ALL */) - { - DEBUG_PRINTF(_L8("COmxILPortManager::TunnellingBufferAllocation")); - - aComponentPopulationCompleted = EFalse; - - // Check the index of the port.. - if ((OMX_ALL != aPortIndex) && (CheckPortIndex(aPortIndex) != OMX_ErrorNone)) - { - return OMX_ErrorBadPortIndex; - } - - const TInt portCount = iAllPorts.Count(); - COmxILPort* pPort = 0; - OMX_U32 portIndex = 0; - TInt i=0; - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - do - { - if (aPortIndex != OMX_ALL) - { - // Grab the port here... - pPort = iAllPorts[aPortIndex]; - portIndex = aPortIndex; - } - else - { - pPort = iAllPorts[i]; - portIndex = pPort->Index(); - } - - - if (pPort->IsEnabled() && - pPort->IsTunnelledAndBufferSupplier() && - !pPort->IsPopulated()) - { - TBool portPopulationCompleted = EFalse; - if (OMX_ErrorNone != - (omxRetValue = pPort->PopulateTunnel(portPopulationCompleted))) - { - // TODO: Check case of ports being enabled (error callback needed...) - return omxRetValue; - } - - if (portPopulationCompleted && pPort->IsTransitioningToEnabled()) - { - // This is a case of port being enabled... Inform the port that it - // has been enabled.. - pPort->SetTransitionToEnabledCompleted(); - - // For each enabled port, the IL Client must be notified with an - // enabled completion event... - if (OMX_ErrorNone != ( - omxRetValue = iCallbacks.CommandCompleteNotification( - OMX_CommandPortEnable, portIndex))) - { - return omxRetValue; - } - } - - } - - // Increment loop counter - ++i; - } - while (OMX_ALL == aPortIndex && i < portCount); - - if (AllPortsPopulated()) - { - DEBUG_PRINTF(_L8("COmxILPortManager::TunnellingBufferAllocation : AllPortsPopulated : [TRUE]")); - aComponentPopulationCompleted = ETrue; - } - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPortManager::TunnellingBufferDeallocation( - TBool& aComponentDepopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILPortManager::TunnellingBufferDeallocation")); - - aComponentDepopulationCompleted = EFalse; - - const TInt portCount = iAllPorts.Count(); - COmxILPort* pPort = 0; - TInt portDepopulationCounter = 0; - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - TBool portDepopulationCompleted = EFalse; - for (TInt i=0; iIsEnabled() && pPort->IsTunnelledAndBufferSupplier()) - { - // TODO: Check that at this point, the ProcessingFunction must not - // hold any buffer header... - portDepopulationCompleted = EFalse; - if (OMX_ErrorNone != - (omxRetValue = pPort->FreeTunnel(portDepopulationCompleted))) - { - return omxRetValue; - } - - if (pPort->IsDePopulated()) - { - portDepopulationCounter++; - } - } - } - - if (AllPortsDePopulated()) - { - DEBUG_PRINTF(_L8("COmxILPortManager::TunnellingBufferDeallocation : AllPortsDepopulated : [TRUE]")); - aComponentDepopulationCompleted = ETrue; - } - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPortManager::InitiateTunnellingDataFlow(OMX_U32 aPortIndex /* = OMX_ALL */) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::InitiateTunnellingDataFlow : PORT[%d]"), aPortIndex); - - // Check the index of the port.. - if ((OMX_ALL != aPortIndex) && (CheckPortIndex(aPortIndex) != OMX_ErrorNone)) - { - return OMX_ErrorBadPortIndex; - } - - // This is an indication that the component is ready to start exchanging - // buffers... Supplier tunnelled ports must initiate the buffer exchange in - // the tunnel... - const TInt portCount = iAllPorts.Count(); - COmxILPort* pPort = 0; - OMX_U32 portIndex = 0; - TInt i=0; - do - { - if (aPortIndex != OMX_ALL) - { - // Grab the port here... - pPort = iAllPorts[aPortIndex]; - portIndex = aPortIndex; - } - else - { - pPort = iAllPorts[i]; - portIndex = pPort->Index(); - } - - if (pPort->IsEnabled() && pPort->IsTunnelledAndBufferSupplier()) - { - const TInt headerCount = pPort->Count(); - OMX_BUFFERHEADERTYPE* pHeader = 0; - OMX_DIRTYPE portDir = OMX_DirMax; - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - for (TInt j=0; jIsBufferAtHome(pHeader)) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::InitiateTunnellingDataFlow : BUFFER HEADER[%X] is not at home"), - pHeader); - continue; - } - - portDir = pPort->Direction(); - __ASSERT_DEBUG((OMX_DirInput == portDir || - OMX_DirOutput == portDir), - User::Panic(KOmxILPortManagerPanicCategory, 1)); - - if (OMX_DirInput == portDir) - { - // Input port -> Send buffer to callback manager... - omxRetValue = - iCallbacks.BufferDoneNotification(pHeader, - portIndex, - portDir); - } - else - { - // Output port -> Send buffer to processing function... - omxRetValue = - iProcessingFunction.BufferIndication(pHeader, - portDir); - } - - if (omxRetValue != OMX_ErrorNone) - { - return omxRetValue; - } - - // Inform the port that one of its buffers has been sent - // away... - TBool bufferMarkedWithOwnMark = EFalse; - if (!pPort->SetBufferSent(pHeader, bufferMarkedWithOwnMark)) - { - // The buffer header was not found... - return OMX_ErrorBadParameter; - } - - // For each MarkBuffer command processed, the IL Client must be notified - // with an OMX_EventCommandComplete event... - if (bufferMarkedWithOwnMark) - { - if (OMX_ErrorNone != - (omxRetValue = iCallbacks.CommandCompleteNotification( - OMX_CommandMarkBuffer, portIndex))) - { - return omxRetValue; - } - } - - } // for (TInt j=0; jIsEnabled() && pPort->IsTunnelledAndBufferSupplier()) - - // Increment loop counter - ++i; - } - while(OMX_ALL == aPortIndex && i < portCount); - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPortManager::BufferIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection, - OMX_BOOL aPortIsDisabled /* = OMX_FALSE */) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::BufferIndication : BUFFER [%X]"), apBufferHeader); - - OMX_U32 portIndex = aDirection == OMX_DirInput ? - apBufferHeader->nInputPortIndex : apBufferHeader->nOutputPortIndex; - - // Check the index of the port.. - if (CheckPortIndex(portIndex) != OMX_ErrorNone) - { - return OMX_ErrorBadPortIndex; - } - - // Grab the port here... - COmxILPort* pPort = iAllPorts[portIndex]; - - // Check that port direction is the correct one... - if (pPort->Direction() != aDirection) - { - return OMX_ErrorBadPortIndex; - } - - if (!pPort->IsEnabled() && - !pPort->IsTransitioningToDisabled() && - !pPort->IsTransitioningToEnabled()) - { - return OMX_ErrorIncorrectStateOperation; - } - - // Check port enabled property... - if (OMX_TRUE == aPortIsDisabled && - pPort->IsEnabled()) - { - // There is an indication from the FSM that the port must be disabled, - // otherwise, the buffer indication is not allowed in the current - // state. - return OMX_ErrorIncorrectStateOperation; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - // Check whether this port is a buffer supplier... - if (pPort->IsTunnelledAndBufferSupplier() && - pPort->IsTransitioningToDisabled()) - { - // Set the state of the port to disabled as the command has already - // completed... - if (!pPort->SetBufferReturned(apBufferHeader)) - { - // The buffer header was not found... - return OMX_ErrorBadParameter; - } - - if (pPort->HasAllBuffersAtHome()) - { - // All buffers at home.. we can initiate here the - // depopulation of the tunnel... - TBool portDepopulationCompleted = EFalse; - if (OMX_ErrorNone != - (omxRetValue = pPort->FreeTunnel(portDepopulationCompleted))) - { - return omxRetValue; - } - - // Inform the port that the disabled command has - // completed... - pPort->SetTransitionToDisabledCompleted(); - - // For each disabled port, the IL Client must be notified - // with a port disabled completion event... - if (OMX_ErrorNone != - (omxRetValue = iCallbacks.CommandCompleteNotification( - OMX_CommandPortDisable, portIndex))) - { - return omxRetValue; - } - } - - // Make sure the buffer contents are cleared... - TOmxILUtil::ClearBufferContents(apBufferHeader); - - // ... we are done.. no need to send the buffer to the - // processing function... - return OMX_ErrorNone; - - } // if (pPort->IsTransitioningToDisabled()) - - - // Inform the port that one of its buffers is going to be sent to the - // processing function (exception applies to OMX_PortDomainOther ports) ... - // The port will also mark this buffer if the port - // has pending marks to be signalled... The buffer marks are finally - // processed/propagated by the callback manager once the buffer has been - // consumed by the processing function... - TBool bufferMarkedWithOwnMark = EFalse; - if (!pPort->SetBufferSent(apBufferHeader, bufferMarkedWithOwnMark)) - { - return OMX_ErrorBadParameter; - } - - // For each MarkBuffer command processed, the IL Client must be notified - // with an OMX_EventCommandComplete event... - if (bufferMarkedWithOwnMark) - { - if (OMX_ErrorNone != - (omxRetValue = iCallbacks.CommandCompleteNotification( - OMX_CommandMarkBuffer, portIndex))) - { - return omxRetValue; - } - } - - if (iImmediateReturnTimeBuffer && iTimePorts[portIndex]) - { - // OMX_OTHER_FormatTime ports (such as COmxILClientClockPort) needs - // to return the buffer sooner to the buffer supplier component - OMX_TIME_MEDIATIMETYPE* pMediaTime = - reinterpret_cast(apBufferHeader->pBuffer); - - OMX_TIME_MEDIATIMETYPE timeInfo; - if (pMediaTime) - { - timeInfo = *pMediaTime; - } - - // Return the buffer (send the Buffer Done notification) via callback now. - apBufferHeader->nFilledLen = 0; - - OMX_ERRORTYPE err = iCallbacks.ClockBufferDoneNotification( - apBufferHeader, portIndex, aDirection); - - if (err != OMX_ErrorNone) - { - return err; - } - - if (pMediaTime) - { - // Send time update to the processing function - err = iProcessingFunction.MediaTimeIndication(timeInfo); - } - - __ASSERT_DEBUG(err != OMX_ErrorNotImplemented, - User::Panic(KOmxILPortManagerPanicCategory, 1)); - - return err; - } - - return iProcessingFunction.BufferIndication(apBufferHeader, - aDirection); - } - - -OMX_ERRORTYPE -COmxILPortManager::BufferReturnIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection, - TBool& aAllBuffersReturned) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::BufferReturnIndication : [%X]"), apBufferHeader); - - aAllBuffersReturned = EFalse; - - OMX_U32 portIndex = aDirection == OMX_DirInput ? - apBufferHeader->nInputPortIndex : apBufferHeader->nOutputPortIndex; - - // Check the index of the port.. - if (CheckPortIndex(portIndex) != OMX_ErrorNone) - { - return OMX_ErrorBadPortIndex; - } - - // Grab the port here... - COmxILPort* pPort = iAllPorts[portIndex]; - - // Check that port direction is the correct one... - if (pPort->Direction() != aDirection) - { - return OMX_ErrorBadPortIndex; - } - - - if (!pPort->IsEnabled()) - { - return OMX_ErrorBadPortIndex; - } - - // Check that this port must be buffer supplier... - if (!pPort->IsTunnelledAndBufferSupplier()) - { - return OMX_ErrorBadPortIndex; - } - - // Inform the port that a buffer has returned... - if (!pPort->SetBufferReturned(apBufferHeader)) - { - // The buffer header was not found... - return OMX_ErrorBadParameter; - } - - // Make sure the buffer contents are cleared... - TOmxILUtil::ClearBufferContents(apBufferHeader); - - if (pPort->HasAllBuffersAtHome()) - { - aAllBuffersReturned = ETrue; - } - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPortManager::BufferFlushIndicationFlushCommand( - TUint32 aPortIndex, TBool aEjectBuffers /* = ETrue */) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::BufferFlushIndicationFlushCommand PORT[%d]"), aPortIndex); - - // Check the index of the port.. - if ((OMX_ALL != aPortIndex) && (CheckPortIndex(aPortIndex) != OMX_ErrorNone)) - { - return OMX_ErrorBadPortIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - RPointerArray portsToFlush; - RPointerArray portsToNotify; - const TInt portCount = iAllPorts.Count(); - COmxILPort* pPort = 0; - TInt i=0; - TBool flushSuccessful; - do - { - flushSuccessful = ETrue; - if (aPortIndex != OMX_ALL) - { - // Grab the port here... - pPort = iAllPorts[aPortIndex]; - } - else - { - pPort = iAllPorts[i]; - } - - if (pPort->IsEnabled() && pPort->Count()) - { - if (pPort->IsTunnelledAndBufferSupplier() && - !pPort->HasAllBuffersAtHome()) - { - // Remove buffers from PF only... - RemoveBuffersFromPfOrCm(pPort, OMX_TRUE); - - if (aEjectBuffers) - { - // Now we need to send input buffers upstream and ouput - // buffers to the PF... - if ((omxRetValue = InitiateTunnellingDataFlow()) - != OMX_ErrorNone) - { - // The flush has failed, we need to notify the IL Cient - // via EventHandler... - iCallbacks.ErrorEventNotification(omxRetValue); - flushSuccessful = EFalse; - } - } - - } - else - { - portsToFlush.Append(pPort); - } - } - // Notify flushing completed, even if there was nothing to - // flush... - if (flushSuccessful) - { - portsToNotify.Append(pPort); - } - - // Increment loop counter - ++i; - } - while(OMX_ALL == aPortIndex && i < portCount); - - const TInt flushCount = portsToFlush.Count(); - const TInt notifyCount = portsToNotify.Count(); - - - if (iAllPorts.Count() == flushCount) - { - omxRetValue = iProcessingFunction.BufferFlushingIndication( - OMX_ALL, - OMX_DirMax); - } - else - { - for (i=0; iIndex(), - pPort->Direction()); - } - } - - for (i=0; iIndex()); - } - - portsToFlush.Close(); - portsToNotify.Close(); - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILPortManager::BufferFlushIndicationPauseOrExeToIdleCommand( - TBool& aAllBuffersReturnedToSuppliers) - { - DEBUG_PRINTF(_L8("COmxILPortManager::BufferFlushIndicationPauseOrExeToIdleCommand")); - - aAllBuffersReturnedToSuppliers = EFalse; - - const TInt portCount = iAllPorts.Count(); - TBool foundBufferSupplierThatNeedsToWait = EFalse; - COmxILPort* pPort = 0; - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - for (TInt i=0; iIsEnabled() && pPort->Count()) - { - if (pPort->IsTunnelledAndBufferSupplier() && - !pPort->HasAllBuffersAtHome()) - { - if (!RemoveBuffersFromPfOrCm(pPort)) - { - // This port will have to wait to get some of its buffers - // returned by the tunnelled port... - foundBufferSupplierThatNeedsToWait = ETrue; - } - continue; - } - - if (OMX_ErrorNone != - (omxRetValue = iProcessingFunction.BufferFlushingIndication( - pPort->Index(), - pPort->Direction()))) - { - return omxRetValue; - } - } - } - - if (!foundBufferSupplierThatNeedsToWait) - { - aAllBuffersReturnedToSuppliers = ETrue; - } - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPortManager::PortEnableIndication( - TUint32 aPortIndex, - TBool aIndicationIsFinal) - { - DEBUG_PRINTF3(_L8("COmxILPortManager::PortEnableIndication: PORT[%d] TRANSITIONISFINAL[%d]"), aPortIndex, aIndicationIsFinal); - - // Check the index of the port.. - if ((OMX_ALL != aPortIndex) && (CheckPortIndex(aPortIndex) != OMX_ErrorNone)) - { - return OMX_ErrorBadPortIndex; - } - - const TInt portCount = iAllPorts.Count(); - COmxILPort* pPort = 0; - OMX_U32 portIndex = 0; - TInt i=0; - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - do - { - // We do this so we loop or not depending on the needs... - if (aPortIndex != OMX_ALL) - { - // Grab the port here... - pPort = iAllPorts[aPortIndex]; - portIndex = aPortIndex; - } - else - { - pPort = iAllPorts[i]; - portIndex = pPort->Index(); - } - - // If port is already enabled, just indicate that the enable command has - // completed successfully - if (pPort->IsEnabled()) - { - if (OMX_ErrorNone != - (omxRetValue = - iCallbacks.CommandCompleteNotification( - OMX_CommandPortEnable, portIndex))) - { - return omxRetValue; - } - - ++i; - continue; - } - - // First check that no-one port is currently transitioning to - // Enabled... - if (pPort->IsTransitioningToEnabled() || - pPort->IsTransitioningToDisabled()) - { - // Send an error event... The spec mandates that the nData2 and - // the pEventData are 0 and NULL respectively, but they could be - // used here to hand some information like the index of the port - // that has failed... - if (OMX_ErrorNone != - (omxRetValue = - iCallbacks.ErrorEventNotification(OMX_ErrorPortUnresponsiveDuringAllocation))) - { - return omxRetValue; - } - - if (OMX_ALL == aPortIndex) - { - ++i; - continue; - } - else - { - return OMX_ErrorUndefined; - } - } - - if (aIndicationIsFinal) - { - // Inform the port that it has been enabled.. - pPort->SetTransitionToEnabledCompleted(); - - // For each enabled port, the IL Client must be notified - // with an enabled completion event... - if (OMX_ErrorNone != - (omxRetValue = - iCallbacks.CommandCompleteNotification( - OMX_CommandPortEnable, portIndex))) - { - return omxRetValue; - } - - } - else - { - // Inform the port that it is being enabled.. - pPort->SetTransitionToEnabled(); - } - - // Increment loop counter - ++i; - } - while(OMX_ALL == aPortIndex && i < portCount); - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPortManager::PortDisableIndication( - TUint32 aPortIndex) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::PortDisableIndication: PORT[%d] "), aPortIndex); - - // Check the index of the port.. - if ((OMX_ALL != aPortIndex) && (CheckPortIndex(aPortIndex) != OMX_ErrorNone)) - { - return OMX_ErrorBadPortIndex; - } - - const TInt portCount = iAllPorts.Count(); - COmxILPort* pPort = 0; - OMX_U32 portIndex = 0; - TInt i=0; - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - do - { - if (aPortIndex != OMX_ALL) - { - // Grab the port here... - pPort = iAllPorts[aPortIndex]; - portIndex = aPortIndex; - } - else - { - pPort = iAllPorts[i]; - portIndex = pPort->Index(); - } - - // If port is already disabled, just indicate that the disable command has - // completed successfully - if (!pPort->IsEnabled()) - { - if (OMX_ErrorNone != - (omxRetValue = - iCallbacks.CommandCompleteNotification( - OMX_CommandPortDisable, portIndex))) - { - return omxRetValue; - } - - ++i; - continue; - } - - // First check that no-one port is currently transitioning to - // Disabled... - if (pPort->IsTransitioningToDisabled() || - pPort->IsTransitioningToEnabled()) - { - // Send an error event... The spec mandates that the nData2 and - // the pEventData are 0 and NULL respectively, but they could be - // used here to hand some information like the index of the port - // that has failed... - if (OMX_ErrorNone != - (omxRetValue = - iCallbacks.ErrorEventNotification(OMX_ErrorPortUnresponsiveDuringAllocation))) - { - return omxRetValue; - } - - if (OMX_ALL == aPortIndex) - { - ++i; - continue; - } - else - { - return OMX_ErrorUndefined; - } - - } - - if (pPort->IsTunnelledAndBufferSupplier()) - { - if (!pPort->HasAllBuffersAtHome() && !RemoveBuffersFromPfOrCm(pPort)) - { - // Inform the port that it is being disabled - pPort->SetTransitionToDisabled(); - // This port will have to wait to get all its buffers - // returned by the tunnelled port... - } - else - { - // Buffer supplier with all buffers at home.. we can - // initiate here the depopulation of the tunnel... - - // This boolean is not used here ... - TBool portDepopulationCompleted = EFalse; - - // Better to ignore here any possible error in - // FreeTunnel... nothing we can do about it... - if (OMX_ErrorNone != - (omxRetValue = - pPort->FreeTunnel(portDepopulationCompleted))) - { - return omxRetValue; - } - - // Inform the port that the disabled command has - // completed... - pPort->SetTransitionToDisabledCompleted(); - - // For each disabled port, the IL Client must be notified - // with a disabled completion event... - if (OMX_ErrorNone != - (omxRetValue = - iCallbacks.CommandCompleteNotification( - OMX_CommandPortDisable, portIndex))) - { - return omxRetValue; - } - - } // else <- if (!pPort->HasAllBuffersAtHome()) - - } // if (pPort->IsTunnelledAndBufferSupplier()) - else - { - if (pPort->Count() > 0) - { - if (OMX_ErrorNone != - (omxRetValue = - iProcessingFunction.BufferFlushingIndication( - portIndex, - pPort->Direction()))) - { - return omxRetValue; - } - - // Inform the port that it is being disabled - pPort->SetTransitionToDisabled(); - } - else - { - // Inform the port that the disabled command has - // completed... - pPort->SetTransitionToDisabledCompleted(); - - // For each disabled port, the IL Client must be notified - // with a disabled completion event... - if (OMX_ErrorNone != - (omxRetValue = - iCallbacks.CommandCompleteNotification( - OMX_CommandPortDisable, portIndex))) - { - return omxRetValue; - } - } - - } - - // Increment loop counter - ++i; - } - while(OMX_ALL == aPortIndex && i < portCount); - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPortManager::BufferMarkIndication( - TUint32 aPortIndex, - OMX_PTR ipMarkData) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::BufferMarkIndication: PORT[%d] "), aPortIndex); - - // Check the index of the port.. - if (CheckPortIndex(aPortIndex) != OMX_ErrorNone) - { - return OMX_ErrorBadPortIndex; - } - - const OMX_MARKTYPE* pMark = static_cast(ipMarkData); - - if (!pMark->hMarkTargetComponent) - { - return OMX_ErrorBadParameter; - } - - // Let's tell the port to store the mark so it can mark the next incoming - // buffer... - return iAllPorts[aPortIndex]->StoreBufferMark(pMark); - - } - -OMX_ERRORTYPE -COmxILPortManager::ComponentRoleIndication(TUint aComponentRoleIndex) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::ComponentRoleIndication : aComponentRoleIndex[%d]"), aComponentRoleIndex); - - // At this point, the IL Client wants to set the default role that the - // standard component is assuming. Therefore, the role defaults need to be - // reloaded into all ports and the processing function object. - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - const TInt portCount = iAllPorts.Count(); - for (TUint i = 0; i< portCount; ++i) - { - if (OMX_ErrorNone != - (omxRetValue = - iAllPorts[i]->SetComponentRoleDefaults(aComponentRoleIndex))) - { - return omxRetValue; - } - } - - return iProcessingFunction.ComponentRoleIndication(aComponentRoleIndex); - - } - -OMX_ERRORTYPE -COmxILPortManager::PortSettingsChangeIndication(OMX_U32 aPortIndex, - TUint aPortSettingsIndex, - const TDesC8& aPortSettings, - OMX_EVENTTYPE& aEventForILClient) - { - DEBUG_PRINTF2(_L8("COmxILPortManager::PortSettingsChangeIndication: PORT[%d] "), aPortIndex); - - // Check the index of the port.. - if (CheckPortIndex(aPortIndex) != OMX_ErrorNone) - { - return OMX_ErrorBadPortIndex; - } - - return iAllPorts[aPortIndex]->DoPortReconfiguration( - aPortSettingsIndex, aPortSettings, aEventForILClient); - - } - - -TBool -COmxILPortManager::AllPortsPopulated() const - { - - const TInt portCount = iAllPorts.Count(); - COmxILPort* pPort = 0; - for (TInt i=0; iIsEnabled()) - { - continue; - } - - if (!pPort->IsPopulated()) - { - DEBUG_PRINTF(_L8("COmxILPortManager::AllPortsPopulated : [FALSE]")); - return EFalse; - } - } - - DEBUG_PRINTF(_L8("COmxILPortManager::AllPortsPopulated : [TRUE]")); - return ETrue; - - } - -TBool -COmxILPortManager::AllPortsDePopulated() const - { - - const TInt portCount = iAllPorts.Count(); - for (TInt i=0; iIsDePopulated()) - { - DEBUG_PRINTF(_L8("COmxILPortManager::AllPortsDePopulated : [FALSE]")); - return EFalse; - } - } - - DEBUG_PRINTF(_L8("COmxILPortManager::AllPortsDePopulated : [TRUE]")); - return ETrue; - - } - -TBool -COmxILPortManager::AllBuffersAtHome() const - { - - const TInt portCount = iAllPorts.Count(); - for (TInt i=0; iIsTunnelledAndBufferSupplier()) - { - if (!iAllPorts[i]->HasAllBuffersAtHome()) - { - DEBUG_PRINTF(_L8("COmxILPortManager::AllBuffersAtHome : [FALSE]")); - return EFalse; - } - } - } - - DEBUG_PRINTF(_L8("COmxILPortManager::AllBuffersAtHome : [TRUE]")); - return ETrue; - - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilportmanager.h --- a/omxil/omxilcomponentcommon/src/common/omxilportmanager.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,218 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILPORTMANAGER_H -#define OMXILPORTMANAGER_H - -#include - -#include "omxilport.h" -#include "omxilindexmanager.h" - -/** - Port Manager Panic category -*/ -_LIT(KOmxILPortManagerPanicCategory, "OmxILPortManager"); - - -// Forward declarations -class COmxILProcessingFunction; -class MOmxILCallbackManagerIf; - -/** - OpenMAX IL Port Manager. - - It keeps and manages a list of the ports configured in the component. The - Port Manager is used by the FSM object (@see COmxILFsm) to communicate with - the ports. - -*/ -NONSHARABLE_CLASS(COmxILPortManager) : public COmxILIndexManager - { - -public: - /* - @param aImmediateReturnTimeBuffer Indicates whether the component needs to - return the arriving buffer to the sender immediately or not . This is particularly - related to time port (e.g. COmxILClientClockPort), where notification - could be requested on every frame. Returning the buffer immediately to the - the sender (e.g. Clock Component) would avoid the sender from buffer starvation. - By default, time related component will need to return the buffer sooner, except - Clock Component (the buffer sender) - */ - IMPORT_C static COmxILPortManager* NewL( - COmxILProcessingFunction& aProcessingFunction, - MOmxILCallbackManagerIf& aCallbacks, - const OMX_VERSIONTYPE& aOmxVersion, - OMX_U32 aNumberOfAudioPorts, - OMX_U32 aStartAudioPortNumber, - OMX_U32 aNumberOfImagePorts, - OMX_U32 aStartImagePortNumber, - OMX_U32 aNumberOfVideoPorts, - OMX_U32 aStartVideoPortNumber, - OMX_U32 aNumberOfOtherPorts, - OMX_U32 aStartOtherPortNumber, - OMX_BOOL aImmediateReturnTimeBuffer = OMX_TRUE); - - ~COmxILPortManager(); - - IMPORT_C TInt AddPort(const COmxILPort* aPort, - OMX_DIRTYPE aDirection); - - OMX_ERRORTYPE GetParameter( - OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const; - - OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - OMX_BOOL aPortIsDisabled = OMX_FALSE); - - OMX_ERRORTYPE GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - OMX_ERRORTYPE SetConfig(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure); - - OMX_ERRORTYPE GetExtensionIndex(OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - - OMX_ERRORTYPE PopulateBuffer(OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted, - OMX_BOOL aPortIsDisabled = OMX_FALSE); - - OMX_ERRORTYPE FreeBuffer(OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBufferHeader, - TBool& portDepopulationCompleted, - OMX_BOOL aPortIsDisabled = OMX_FALSE); - - OMX_ERRORTYPE TunnelRequest(OMX_U32 aPortIndex, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup, - OMX_BOOL aPortIsDisabled = OMX_FALSE); - - OMX_ERRORTYPE TunnellingBufferAllocation( - TBool& aComponentPopulationCompleted, - TUint32 aPortIndex = OMX_ALL); - - OMX_ERRORTYPE TunnellingBufferDeallocation( - TBool& aComponentDePopulationCompleted); - - OMX_ERRORTYPE InitiateTunnellingDataFlow( - OMX_U32 aPortIndex = OMX_ALL); - - OMX_ERRORTYPE BufferIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection, - OMX_BOOL aPortIsDisabled = OMX_FALSE); - - OMX_ERRORTYPE BufferReturnIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection, - TBool& aAllBuffersReturned); - - OMX_ERRORTYPE BufferFlushIndicationFlushCommand( - TUint32 aPortIndex, TBool aEjectBuffers = ETrue); - - OMX_ERRORTYPE BufferFlushIndicationPauseOrExeToIdleCommand( - TBool& aAllBuffersReturnedToSuppliers); - - OMX_ERRORTYPE PortEnableIndication( - TUint32 aPortIndex, - TBool aIndicationIsFinal); - - OMX_ERRORTYPE PortDisableIndication( - TUint32 aPortIndex); - - OMX_ERRORTYPE BufferMarkIndication(OMX_U32 aPortIndex, - OMX_PTR ipMarkData); - - OMX_ERRORTYPE ComponentRoleIndication(TUint aComponentRoleIndex); - - OMX_ERRORTYPE PortSettingsChangeIndication(OMX_U32 aPortIndex, - TUint aPortSettingsIndex, - const TDesC8& aPortSettings, - OMX_EVENTTYPE& aEventForILClient); - - // - // - // - TBool AllPortsPopulated() const; - - TBool AllPortsDePopulated() const; - - TBool AllBuffersAtHome() const; - - -private: - - COmxILPortManager(COmxILProcessingFunction& aProcessingFunction, - MOmxILCallbackManagerIf& aCallbacks, - const OMX_VERSIONTYPE& aOmxVersion, - OMX_U32 aNumberOfAudioPorts, - OMX_U32 aStartAudioPortNumber, - OMX_U32 aNumberOfImagePorts, - OMX_U32 aStartImagePortNumber, - OMX_U32 aNumberOfVideoPorts, - OMX_U32 aStartVideoPortNumber, - OMX_U32 aNumberOfOtherPorts, - OMX_U32 aStartOtherPortNumber, - OMX_BOOL aImmediateReturnTimeBuffer); - - void ConstructL(); - - void AppendPortL(const COmxILPort* aPort); - - inline OMX_ERRORTYPE CheckPortIndex(OMX_U32 aPortIndex) const; - - inline OMX_ERRORTYPE GetPortIndexFromOmxStruct( - const TAny*& apComponentParameterStructure, - OMX_U32& aIndex) const; - - inline OMX_ERRORTYPE GetPortIndexFromOmxStruct( - TAny*& apComponentParameterStructure, - OMX_U32& aIndex) const; - - TBool RemoveBuffersFromPfOrCm(COmxILPort* apPort, - OMX_BOOL aRemoveFromPfOnly = OMX_FALSE) const; - -private: - - COmxILProcessingFunction& iProcessingFunction; - MOmxILCallbackManagerIf& iCallbacks; - - RPointerArray iAllPorts; - RArray iTimePorts; // Indicate the corresponding port is OMX_OTHER_FormatTime - - OMX_PORT_PARAM_TYPE iAudioParamInit; - OMX_PORT_PARAM_TYPE iImageParamInit; - OMX_PORT_PARAM_TYPE iVideoParamInit; - OMX_PORT_PARAM_TYPE iOtherParamInit; - OMX_BOOL iImmediateReturnTimeBuffer; - }; - -#include "omxilportmanager.inl" - -#endif // OMXILPORTMANAGER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilportmanager.inl --- a/omxil/omxilcomponentcommon/src/common/omxilportmanager.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -inline OMX_ERRORTYPE -COmxILPortManager::GetPortIndexFromOmxStruct( - TAny*& apComponentParameterStructure, - OMX_U32& aIndex) const - { - return GetPortIndexFromOmxStruct( - const_cast(apComponentParameterStructure), aIndex); - } - - -inline OMX_ERRORTYPE -COmxILPortManager::GetPortIndexFromOmxStruct( - const TAny*& apComponentParameterStructure, - OMX_U32& aIndex) const - { - OMX_U32* const pPortIndex = - reinterpret_cast( - const_cast(apComponentParameterStructure)) + - sizeof(OMX_U32) / sizeof(OMX_U32) + - sizeof(OMX_VERSIONTYPE) / sizeof(OMX_U32); - - if (OMX_ErrorNone != CheckPortIndex(*pPortIndex)) - { - return OMX_ErrorBadPortIndex; - } - - aIndex = *pPortIndex; - - return OMX_ErrorNone; - - } - - -/** - Checks that a port index is consistent with port information found in the - port's OMX_PORT_PARAM_TYPE structure, i.e., the number of ports in the - component. - - @param aPortIndex The port index to be checked. - - @return OMX_ErrorBadPortIndex in case of error. OMX_ErrorNone otherwise. -*/ -inline OMX_ERRORTYPE -COmxILPortManager::CheckPortIndex(OMX_U32 aPortIndex) const - { - - if (aPortIndex >= iAllPorts.Count()) - { - return OMX_ErrorBadPortIndex; - } - - return OMX_ErrorNone; - - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilprocessingfunction.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilprocessingfunction.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "log.h" -#include "omxilprocessingfunction.h" - - -EXPORT_C -COmxILProcessingFunction::COmxILProcessingFunction( - MOmxILCallbackNotificationIf& aCallbacks) - : - iCallbacks(aCallbacks) - { - DEBUG_PRINTF(_L8("COmxILProcessingFunction::COmxILProcessingFunction")); - - } - -EXPORT_C -COmxILProcessingFunction::~COmxILProcessingFunction() - { - DEBUG_PRINTF(_L8("COmxILProcessingFunction::~COmxILProcessingFunction")); - - } - -/** - This is an indication from the framework that the IL Client wants to set the - default role that a standard component is assuming. Therefore, the role - defaults need to be reloaded into all ports and the Processing - Function. This method is the indication to the processing function that the - role defaults have been set into the component ports. A component not - claiming support of any of the standard component roles does not need to - override this method. - - @param aComponentRoleIndex An integer associated to the new component role. - - @return OMX_ERRORTYPE - */ -EXPORT_C OMX_ERRORTYPE -COmxILProcessingFunction::ComponentRoleIndication(TUint /* aComponentRoleIndex */) - { - return OMX_ErrorNotImplemented; - } - - -EXPORT_C OMX_ERRORTYPE COmxILProcessingFunction::MediaTimeIndication(const OMX_TIME_MEDIATIMETYPE& ) - { - return OMX_ErrorNotImplemented; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilprocessingfunction.h --- a/omxil/omxilcomponentcommon/src/common/omxilprocessingfunction.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILPROCESSINGFUNCTION_H -#define OMXILPROCESSINGFUNCTION_H - -#include - -#include -#include -#include - -#include "omxilfsm.h" - -// Forward declarations -class MOmxILCallbackNotificationIf; - -/** - Base class for component-specific implementations of the Processing Function - abstraction. Component implementations realize within a Processing Function - object the codec specific logic. Component implementations may choose - whether to implement the Processing Function functionality in an additional - independent thread or in-context with the framework. The interface is - designed to generalize the notification of the OpenMAX IL commands, OpenMAX - IL state changes and input/output buffer arrivals to the codec - itself. Implementations of this interface are intended to communicate with - the entity in charge of the egress component communication, the Callback - Manager. - */ -class COmxILProcessingFunction : public CBase - { - -public: - - IMPORT_C ~COmxILProcessingFunction(); - - /** - Framework notification of a state transition in the component. - - @param aNewState The new state. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE StateTransitionIndication( - COmxILFsm::TStateIndex aNewState) = 0; - - /** - Framework notification of a buffer flushing command. - - @param aPortIndex The port that is being flushed. - - @param aDirection The direction of the port that is being flushed. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE BufferFlushingIndication( - TUint32 aPortIndex, - OMX_DIRTYPE aDirection) = 0; - - /** - Framework notification of an OpenMAX IL Param structure change. - - @param aParamIndex The index of the param structure that has changed. - - @param apComponentParameterStructure The param structure. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE ParamIndication( - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) = 0; - - /** - Framework notification of an OpenMAX IL Config structure change. - - @param aConfigIndex The index of the config structure that has changed. - - @param apComponentConfigStructure The config structure. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE ConfigIndication( - OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure) = 0; - - /** - Framework notification of a buffer arrival. - - @param apBufferHeader The header of the buffer to be processed. - - @param aDirection The direction of the port that has received the - buffer. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE BufferIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection) = 0; - - /** - Framework notification of a buffer removal. Here the Processing Function - object is being notified that a buffer needs to be removed from its - internal queues. At present, a synchronous implementation of this method - is assumed. Buffer removal notifications may be originated by the - framework in the following scenarios: - - -# After an OMX_FreeBuffer call has been received from the IL Client or - from another component. - - -# After a port flushing command has been received from the IL Client - AND the port is tunnelled and buffer supplier. - - -# After a transition OMX_StateExecuting/OMX_StatePause -> OMX_StateIdle - has been requested by the IL Client AND the port associated to the - buffer is tunnelled and buffer supplier. - - -# After a port disable command has been received from the IL Client AND - the port associated to the buffer is tunnelled and buffer supplier. - - @param apBufferHeader The buffer header to be removed from internal - queues. - - @param aDirection The direction of the port associated to the buffer. - - @return OMX_BOOL Etrue if the Processing Function has successfully - removed the buffer header from its internal queues, EFalse otherwise. - */ - virtual OMX_BOOL BufferRemovalIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection) = 0; - - IMPORT_C virtual OMX_ERRORTYPE ComponentRoleIndication( - TUint aComponentRoleIndex); - - /** - Framework notification of a buffer arrival on a OMX_PortDomainOther; - normally the interested component would just extract the buffer and - let the port manager returns the buffer to the buffer supplier - component via callback immediately. - - @param apBufferHeader The header of the buffer to be processed. - @param aDirection The direction of the port that has received - the buffer. - @return OMX_ERRORTYPE - */ - IMPORT_C virtual OMX_ERRORTYPE MediaTimeIndication(const OMX_TIME_MEDIATIMETYPE& ); - -protected: - - IMPORT_C COmxILProcessingFunction( - MOmxILCallbackNotificationIf& aCallbacks); - -protected: - - MOmxILCallbackNotificationIf& iCallbacks; - - }; - -#endif // OMXILPROCESSINGFUNCTION_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilspecversion.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilspecversion.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "omxilspecversion.h" - -const TUint8 TOmxILSpecVersion::KSpecVersionMajor; -const TUint8 TOmxILSpecVersion::KSpecVersionMinor; -const TUint8 TOmxILSpecVersion::KSpecVersionRevision; -const TUint8 TOmxILSpecVersion::KSpecVersionStep; diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilspecversion.h --- a/omxil/omxilcomponentcommon/src/common/omxilspecversion.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILSPECVERSION_H -#define OMXILSPECVERSION_H - -#include -#include - -#include - -class TOmxILVersion - { - -public: - - inline TOmxILVersion(TUint8 aMajor, - TUint8 aMinor, - TUint8 aRev, - TUint8 aStep); - - - inline operator OMX_VERSIONTYPE&(); - -#ifdef _OMXIL_COMMON_SPEC_VERSION_CHECKS_ON - inline TBool operator!=(const OMX_VERSIONTYPE& aVer) const; - - inline TBool operator==(const OMX_VERSIONTYPE& aVer) const; -#endif - -private: - - OMX_VERSIONTYPE iSpecVersion; - - }; - -class TOmxILSpecVersion : public TOmxILVersion - { - -public: - - static const TUint8 KSpecVersionMajor = OMX_VERSION_MAJOR; - static const TUint8 KSpecVersionMinor = OMX_VERSION_MINOR; - static const TUint8 KSpecVersionRevision = OMX_VERSION_REVISION; - static const TUint8 KSpecVersionStep = OMX_VERSION_STEP; - -public: - - inline TOmxILSpecVersion(); - - }; - -inline -TOmxILVersion::TOmxILVersion(TUint8 aMajor, - TUint8 aMinor, - TUint8 aRev, - TUint8 aStep) - { - iSpecVersion.s.nVersionMajor = aMajor; - iSpecVersion.s.nVersionMinor = aMinor; - iSpecVersion.s.nRevision = aRev; - iSpecVersion.s.nStep = aStep; - } - -inline -TOmxILVersion::operator OMX_VERSIONTYPE&() - { - return iSpecVersion; - } - -#ifdef _OMXIL_COMMON_SPEC_VERSION_CHECKS_ON -inline TBool -TOmxILVersion::operator!=( - const OMX_VERSIONTYPE& aVer) const - { - return !operator==(aVer); - } - -inline TBool -TOmxILVersion::operator==( - const OMX_VERSIONTYPE& aVer) const - { - if (iSpecVersion.s.nVersionMajor == aVer.s.nVersionMajor && - iSpecVersion.s.nVersionMinor == aVer.s.nVersionMinor && - iSpecVersion.s.nRevision == aVer.s.nRevision && - iSpecVersion.s.nStep == aVer.s.nStep) - { - return ETrue; - } - return EFalse; - } -#endif - -inline -TOmxILSpecVersion::TOmxILSpecVersion() - : - TOmxILVersion(KSpecVersionMajor, - KSpecVersionMinor, - KSpecVersionRevision, - KSpecVersionStep) - { - } - -#endif // OMXILSPECVERSION_H - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilstate.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilstate.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1964 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "log.h" -#include "omxilstate.h" -#include "omxilfsm.h" -#include "omxilcommand.h" -#include "omxilconfigmanager.h" -#include "omxilcallbackmanager.h" - - -OMX_ERRORTYPE -COmxILFsm::COmxILState::GetParameter( - const COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILState::GetParameter")); - - // This API can be used independently of the current state of the - // component. Let's try first the Port Manager to check if the index is - // known there - OMX_ERRORTYPE retValue = - aFsm.iPortManager.GetParameter(aParamIndex, - apComponentParameterStructure); - - if (OMX_ErrorUnsupportedIndex == retValue) - { - // Otherwise, try Config Manager... - retValue = aFsm.iConfigManager.GetParameter( - aParamIndex, - apComponentParameterStructure); - } - - return retValue; - - } - -// This SetParameter version must be used in the following states: -// - OMX_StateIdle, -// - OMX_StateExecuting, -// - OMX_StatePaused, and -// -OMX_ERRORTYPE -COmxILFsm::COmxILState::SetParameter( - COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - DEBUG_PRINTF(_L8("COmxILState::SetParameter")); - - OMX_ERRORTYPE retValue = - aFsm.iPortManager.SetParameter( - aParamIndex, - apComponentParameterStructure, - OMX_TRUE // Port must be disabled - ); - - if (OMX_ErrorUnsupportedIndex == retValue) - { - // Try Config Manager now... - retValue = aFsm.iConfigManager.SetParameter( - aParamIndex, - apComponentParameterStructure, - OMX_FALSE // run-time - ); - } - - return retValue; - - } - -// This SetParameter version must be used in the following states: -// - OMX_StateLoaded and derived states, -// - OMX_StateWaitForResources -// -OMX_ERRORTYPE -COmxILFsm::COmxILState::SetParameterV2( - COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - DEBUG_PRINTF(_L8("COmxILState::SetParameterV2")); - - OMX_ERRORTYPE retValue = - aFsm.iPortManager.SetParameter(aParamIndex, - apComponentParameterStructure); - - if (OMX_ErrorUnsupportedIndex == retValue) - { - // Try Config Manager now... - retValue = aFsm.iConfigManager.SetParameter( - aParamIndex, - apComponentParameterStructure); - } - - return retValue; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILState::GetConfig( - const COmxILFsm& aFsm, - OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const - { - DEBUG_PRINTF(_L8("COmxILState::GetConfig")); - - OMX_ERRORTYPE retValue = - aFsm.iPortManager.GetConfig(aConfigIndex, - apComponentConfigStructure); - - if (OMX_ErrorUnsupportedIndex == retValue) - { - // Try Config Manager now... - retValue = aFsm.iConfigManager.GetConfig( - aConfigIndex, - apComponentConfigStructure); - } - - return retValue; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILState::SetConfig(COmxILFsm& aFsm, - OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure) - { - DEBUG_PRINTF(_L8("COmxILState::SetConfig")); - - OMX_ERRORTYPE retValue = - aFsm.iPortManager.SetConfig(aConfigIndex, - apComponentConfigStructure); - - if (OMX_ErrorUnsupportedIndex == retValue) - { - // Try Config Manager now... - retValue = aFsm.iConfigManager.SetConfig( - aConfigIndex, - apComponentConfigStructure); - } - - return retValue; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILState::GetExtensionIndex(const COmxILFsm& aFsm, - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const - { - DEBUG_PRINTF(_L8("COmxILState::GetExtensionIndex")); - - OMX_ERRORTYPE retValue = - aFsm.iPortManager.GetExtensionIndex(aParameterName, - apIndexType); - - if (OMX_ErrorUnsupportedIndex == retValue) - { - // Try Config Manager now... - retValue = aFsm.iConfigManager.GetExtensionIndex( - aParameterName, - apIndexType); - } - - return retValue; - - } - -// -// -// - -OMX_ERRORTYPE -COmxILFsm::COmxILState::CommandFlush(COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILState::CommandFlush")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandFlush, - User::Panic(KOmxILFsmPanicCategory, 1)); - - return aFsm.iPortManager.BufferFlushIndicationFlushCommand( - aCommand.iParam1); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILState::CommandPortDisable(COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILState::CommandPortDisable")); - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandPortDisable, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // First, flush all buffers in the port(s) that is(are) to be disabled. - return aFsm.iPortManager.PortDisableIndication( - aCommand.iParam1); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILState::CommandPortEnable(COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILState::CommandPortEnable")); - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandPortEnable, - User::Panic(KOmxILFsmPanicCategory, 1)); - - TBool indicationIsFinal = EFalse; - return aFsm.iPortManager.PortEnableIndication( - aCommand.iParam1, - indicationIsFinal); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILState::CommandMarkBuffer(COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILState::CommandMarkBuffer")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandMarkBuffer, - User::Panic(KOmxILFsmPanicCategory, 1)); - - if (!aCommand.ipCommandData) - { - return OMX_ErrorBadParameter; - } - - return aFsm.iPortManager.BufferMarkIndication(aCommand.iParam1, - aCommand.ipCommandData); - - } - - -// -// COmxILStateInvalid -// -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::GetParameter( - const COmxILFsm& /*aFsm*/, - OMX_INDEXTYPE /*aParamIndex*/, - TAny* /*apComponentParameterStructure*/) const - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::GetParameter")); - return OMX_ErrorInvalidState; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::SetParameter( - COmxILFsm& /*aFsm*/, - OMX_INDEXTYPE /*aParamIndex*/, - const TAny* /*apComponentParameterStructure*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::SetParameter")); - return OMX_ErrorInvalidState; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::GetConfig( - const COmxILFsm& /*aFsm*/, - OMX_INDEXTYPE /*aConfigIndex*/, - TAny* /*apComponentConfigStructure*/) const - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::GetConfig")); - return OMX_ErrorInvalidState; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::SetConfig( - COmxILFsm& /*aFsm*/, - OMX_INDEXTYPE /*aConfigIndex*/, - const TAny* /*apComponentConfigStructure*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::SetConfig")); - return OMX_ErrorInvalidState; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::GetExtensionIndex( - const COmxILFsm& /*aFsm*/, - OMX_STRING /*aParameterName*/, - OMX_INDEXTYPE* /*apIndexType*/) const - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::GetExtensionIndex")); - return OMX_ErrorInvalidState; - } - -OMX_STATETYPE -COmxILFsm::COmxILStateInvalid::GetState() const - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::GetState")); - return OMX_StateInvalid; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::ComponentTunnelRequest( - COmxILFsm& /*aFsm*/, - OMX_U32 /*aPort*/, - OMX_HANDLETYPE /*aTunneledComp*/, - OMX_U32 /*aTunneledPort*/, - OMX_TUNNELSETUPTYPE* /*apTunnelSetup*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::ComponentTunnelRequest")); - - return OMX_ErrorInvalidState; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::PopulateBuffer( - COmxILFsm& /*aFsm*/, - OMX_BUFFERHEADERTYPE** /*appBufferHdr*/, - OMX_U32 /*aPortIndex*/, - OMX_PTR /*apAppPrivate*/, - OMX_U32 /*aSizeBytes*/, - OMX_U8* /*apBuffer*/, - TBool& /*portPopulationCompleted*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::PopulateBuffer")); - - return OMX_ErrorInvalidState; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::FreeBuffer")); - - return COmxILState::FreeBufferV2( - aFsm, - aPortIndex, - apBuffer, - aPortDepopulationCompleted); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::EmptyThisBuffer( - COmxILFsm& /*aFsm*/, - OMX_BUFFERHEADERTYPE* /*apBuffer*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::EmptyThisBuffer")); - - return OMX_ErrorInvalidState; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::FillThisBuffer( - COmxILFsm& /*aFsm*/, - OMX_BUFFERHEADERTYPE* /*apBuffer*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::FillThisBuffer")); - - return OMX_ErrorInvalidState; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::CommandStateSet( - COmxILFsm& /*aFsm*/, - const TOmxILCommand& /*aCommand*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::CommandStateSet")); - return OMX_ErrorInvalidState; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::CommandFlush( - COmxILFsm& /*aFsm*/, - const TOmxILCommand& /*aCommand*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::CommandFlush")); - return OMX_ErrorInvalidState; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::CommandPortEnable( - COmxILFsm& /*aFsm*/, - const TOmxILCommand& /*aCommand*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::CommandPortEnable")); - return OMX_ErrorInvalidState; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::CommandPortDisable( - COmxILFsm& /*aFsm*/, - const TOmxILCommand& /*aCommand*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::CommandPortDisable")); - return OMX_ErrorInvalidState; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateInvalid::CommandMarkBuffer( - COmxILFsm& /*aFsm*/, - const TOmxILCommand& /*aCommand*/) - { - DEBUG_PRINTF(_L8("COmxILStateInvalid::CommandMarkBuffer")); - return OMX_ErrorInvalidState; - } - - -// -// COmxILStateLoaded -// -OMX_STATETYPE -COmxILFsm::COmxILStateLoaded::GetState() const - { - DEBUG_PRINTF(_L8("COmxILStateLoaded::GetState")); - return OMX_StateLoaded; - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoaded::SetParameter( - COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - DEBUG_PRINTF(_L8("COmxILStateLoaded::SetParameter")); - - return COmxILState::SetParameterV2(aFsm, - aParamIndex, - apComponentParameterStructure); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoaded::PopulateBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateLoaded::PopulateBuffer")); - - // At this point, the command requesting the transition from Loaded to Idle - // has not been received yet.. (see COmxILStateLoadedToIdle). Therefore, - // this can only be successful if the port is disabled - return COmxILState::PopulateBuffer(aFsm, - appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoaded::FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateLoaded::FreeBuffer")); - - return COmxILState::FreeBuffer(aFsm, - aPortIndex, - apBuffer, - aPortDepopulationCompleted); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoaded::EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateLoaded::EmptyThisBuffer")); - - return COmxILState::EmptyThisBuffer(aFsm, - apBuffer); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoaded::FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateLoaded::FillThisBuffer")); - - return COmxILState::FillThisBuffer(aFsm, - apBuffer); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoaded::ComponentTunnelRequest( - COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) - { - DEBUG_PRINTF(_L8("COmxILStateLoaded::ComponentTunnelRequest")); - - return COmxILState::ComponentTunnelRequestV2(aFsm, - aPort, - aTunneledComp, - aTunneledPort, - apTunnelSetup); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoaded::CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateLoaded::CommandStateSet")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandStateSet, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // The only two transitions allowed are : - // - OMX_StateIdle and - // - OMX_StateWaitForResources. - COmxILFsm::TStateIndex nextState = COmxILFsm::EStateMax; - switch(aCommand.iParam1) - { - case OMX_StateIdle: - { - nextState = COmxILFsm::ESubStateLoadedToIdle; - } - break; - case OMX_StateWaitForResources: - { - nextState = COmxILFsm::EStateWaitForResources; - } - break; - case OMX_StateLoaded: - { - return OMX_ErrorSameState; - } - case OMX_StateInvalid: - { - // Notify the IL client... ignore the ret value.. - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateInvalid); - // Invalidate component - return OMX_ErrorInvalidState; - } - default: - { - return OMX_ErrorIncorrectStateTransition; - } - - }; - - // Initial checks OK. The component is commanded to make a transition to - // OMX_StateIdle or OMX_StateWaitForResources. - OMX_ERRORTYPE omxRetValue = aFsm.FsmTransition(nextState); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - if (COmxILFsm::ESubStateLoadedToIdle == nextState) - { - // Lets tell port manager in case there are buffer supplier tunnelled ports - TBool componentPopulationCompleted = EFalse; - omxRetValue = - aFsm.iPortManager.TunnellingBufferAllocation( - componentPopulationCompleted); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - if (componentPopulationCompleted) - { - // Complete here the transition to OMX_StateIdle - omxRetValue = aFsm.FsmTransition(COmxILFsm::EStateIdle); - if (OMX_ErrorNone == omxRetValue) - { - // Notify the IL client that port population has completed - // sucessfully - omxRetValue = - aFsm.iCallbacks.TransitionCompleteNotification( - OMX_StateIdle); - } - - } - - } - else - { - // Notify the IL client that the transition to - // OMX_StateWaitForResources has completed sucessfully - omxRetValue = aFsm.iCallbacks.TransitionCompleteNotification( - OMX_StateWaitForResources); - - } - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoaded::CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateLoaded::CommandPortEnable")); - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandPortEnable, - User::Panic(KOmxILFsmPanicCategory, 1)); - - TBool indicationIsFinal = ETrue; - return aFsm.iPortManager.PortEnableIndication( - aCommand.iParam1, - indicationIsFinal); - - } - - -// -// COmxILStateLoadedToIdle -// -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoadedToIdle::SetParameter( - COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - - // In this transitional state, OMX_SetParameter is allowed only if - // OMX_UseBuffer has not been received yet... - if (iUseBufferReceived) - { - return OMX_ErrorIncorrectStateOperation; - } - - - return COmxILStateLoaded::SetParameter(aFsm, - aParamIndex, - apComponentParameterStructure); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoadedToIdle::PopulateBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateLoadedToIdle::PopulateBuffer")); - - OMX_ERRORTYPE omxError = - COmxILState::PopulateBufferV2(aFsm, - appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted); - - if (apBuffer && OMX_ErrorNone == omxError) - { - // Flag that OMX_UseBuffer has been called in LoadedToIdle state. This - // will be used to know if an OMX_SetParameter call will be allowed in - // this state... It will be allowed only if false... - iUseBufferReceived = ETrue; - } - - return omxError; - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoadedToIdle::CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateLoadedToIdle::CommandStateSet")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandStateSet, - User::Panic(KOmxILFsmPanicCategory, 1)); - - switch(aCommand.iParam1) - { - case OMX_StateWaitForResources: - { - // Not implemented for now... - return OMX_ErrorNotImplemented; - } - case OMX_StateLoaded: - { - // Here, return "same state" as the transition to OMX_StateLoaded has - // not completed yet. - return OMX_ErrorSameState; - } - case OMX_StateInvalid: - { - // Notify the IL client... ignore the ret value... - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateInvalid); - // Invalidate component - return OMX_ErrorInvalidState; - } - default: - { - return OMX_ErrorIncorrectStateTransition; - } - }; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateLoadedToIdle::CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateLoadedToIdle::CommandPortEnable")); - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandPortEnable, - User::Panic(KOmxILFsmPanicCategory, 1)); - - TBool indicationIsFinal = EFalse; - OMX_ERRORTYPE omxRetValue = - aFsm.iPortManager.PortEnableIndication( - aCommand.iParam1, - indicationIsFinal); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - // Lets tell port manager in case the port being enabled is a tunnel - // supplier... - TBool componentPopulationCompleted = EFalse; - omxRetValue = - aFsm.iPortManager.TunnellingBufferAllocation( - componentPopulationCompleted, aCommand.iParam1); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - // Let's do this check here although this situation is going to be very - // unlikely... - if (componentPopulationCompleted) - { - // Complete here the transition to OMX_StateIdle - omxRetValue = aFsm.FsmTransition(COmxILFsm::EStateIdle); - if (OMX_ErrorNone == omxRetValue) - { - // Notify the IL client that port population has completed sucessfully - aFsm.iCallbacks.TransitionCompleteNotification( - OMX_StateIdle); - } - - } - - return omxRetValue; - - } - - -// -// COmxILStateWaitForResources -// -OMX_STATETYPE -COmxILFsm::COmxILStateWaitForResources::GetState() const - { - DEBUG_PRINTF(_L8("COmxILStateWaitForResources::GetState")); - return OMX_StateWaitForResources; - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateWaitForResources::SetParameter( - COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - DEBUG_PRINTF(_L8("COmxILStateWaitForResources::SetParameter")); - - return COmxILState::SetParameterV2(aFsm, - aParamIndex, - apComponentParameterStructure); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateWaitForResources::PopulateBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateWaitForResources::PopulateBuffer")); - - // NOTE that according to the spec, PopulateBuffer could be used here even - // if the port is enabled. However, for now the transition from - // OMX_StateWaitForResouces -> OMX_StateIdle is not supported, therefore - // buffer population is only allowed for disabled ports. This should be - // changed once Resource Management functionality is available and this - // state is revisited. - return COmxILState::PopulateBuffer(aFsm, - appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateWaitForResources::FreeBuffer( - COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateWaitForResources::FreeBuffer")); - - return COmxILState::FreeBuffer(aFsm, - aPortIndex, - apBuffer, - aPortDepopulationCompleted); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateWaitForResources::EmptyThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateWaitForResources::EmptyThisBuffer")); - - return COmxILState::EmptyThisBuffer(aFsm, - apBuffer); - - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateWaitForResources::FillThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateWaitForResources::FillThisBuffer")); - - return COmxILState::FillThisBuffer(aFsm, - apBuffer); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateWaitForResources::ComponentTunnelRequest( - COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) - { - DEBUG_PRINTF(_L8("COmxILStateWaitForResources::ComponentTunnelRequest")); - - return COmxILState::ComponentTunnelRequest(aFsm, - aPort, - aTunneledComp, - aTunneledPort, - apTunnelSetup); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateWaitForResources::CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateWaitForResources::CommandStateSet")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandStateSet, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // Transition to OMX_StateIdle not implemented for now... - COmxILFsm::TStateIndex nextState = COmxILFsm::EStateMax; - switch(aCommand.iParam1) - { - case OMX_StateLoaded: - { - nextState = COmxILFsm::EStateLoaded; - } - break; - case OMX_StateWaitForResources: - { - return OMX_ErrorSameState; - } - case OMX_StateInvalid: - { - // Notify the IL client... ignore the ret value... - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateInvalid); - // Invalidate component - return OMX_ErrorInvalidState; - } - default: - { - return OMX_ErrorIncorrectStateTransition; - } - }; - - // Initial checks OK. The component is commanded to make a transition to - // OMX_StateLoaded - OMX_ERRORTYPE omxRetValue = aFsm.FsmTransition(nextState); - if (OMX_ErrorNone == omxRetValue) - { - // Notify the IL client that the transition to - // OMX_StateLoaded has completed sucessfully - omxRetValue = - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateLoaded); - } - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateWaitForResources::CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateWaitForResources::CommandPortEnable")); - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandPortEnable, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // NOTE: Here, we only care about the port enabled flag. Transition from - // OMX_StateWaitForResources to OMX_StateIdle is not implemented at this - // stage until a Resource Manager is available. Whenever a Resource Manager - // becomes available, a COmxILStateWaitForResourcesToIdle substate should - // be implemented to handle the allocation of buffers mandated by the - // standard when a port is enabled in this transition. - TBool indicationIsFinal = ETrue; - return aFsm.iPortManager.PortEnableIndication( - aCommand.iParam1, - indicationIsFinal); - - } - - -// -// COmxILStateIdle -// -OMX_STATETYPE -COmxILFsm::COmxILStateIdle::GetState() const - { - DEBUG_PRINTF(_L8("COmxILStateIdle::GetState")); - return OMX_StateIdle; - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdle::SetParameter( - COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - DEBUG_PRINTF(_L8("COmxILStateIdle::SetParameter")); - - return COmxILState::SetParameter(aFsm, - aParamIndex, - apComponentParameterStructure); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdle::PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateIdle::PopulateBuffer")); - - // At this point, no buffer population can take place unless the port is disabled - return COmxILState::PopulateBuffer(aFsm, - appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdle::FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateIdle::FreeBuffer")); - - // At this point, the command requesting the transition from Idle to Loaded - // has not been received yet.. (see COmxILStateIdleToLoaded). Therefore, - // this can only be successful if the port is disabled - return COmxILState::FreeBuffer(aFsm, - aPortIndex, - apBuffer, - aPortDepopulationCompleted); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdle::EmptyThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateIdle::EmptyThisBuffer")); - - return COmxILState::EmptyThisBufferV2(aFsm, - apBuffer); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdle::FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateIdle::FillThisBuffer")); - - return COmxILState::FillThisBufferV2(aFsm, - apBuffer); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdle::ComponentTunnelRequest( - COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) - { - DEBUG_PRINTF(_L8("COmxILStateIdle::ComponentTunnelRequest")); - - return COmxILState::ComponentTunnelRequest(aFsm, - aPort, - aTunneledComp, - aTunneledPort, - apTunnelSetup); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdle::CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateIdle::CommandStateSet")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandStateSet, - User::Panic(KOmxILFsmPanicCategory, 1)); - - COmxILFsm::TStateIndex nextState = COmxILFsm::EStateInvalid; - switch(aCommand.iParam1) - { - case OMX_StateLoaded: - { - nextState = COmxILFsm::ESubStateIdleToLoaded; - } - break; - case OMX_StateExecuting: - { - nextState = COmxILFsm::EStateExecuting; - } - break; - case OMX_StatePause: - { - nextState = COmxILFsm::EStatePause; - } - break; - case OMX_StateIdle: - { - return OMX_ErrorSameState; - } - case OMX_StateInvalid: - { - // Notify the IL client... ignore the ret value... - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateInvalid); - // Invalidate component - return OMX_ErrorInvalidState; - } - default: - { - return OMX_ErrorIncorrectStateTransition; - } - }; - - // Initial command checks OK - - // Commit transition to the valid state - OMX_ERRORTYPE omxRetValue = aFsm.FsmTransition(nextState); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - if (COmxILFsm::ESubStateIdleToLoaded == nextState) - { - // Lets tell port manager in case there are tunnelled ports... - TBool componentDepopulationCompleted = EFalse; - omxRetValue = - aFsm.iPortManager.TunnellingBufferDeallocation( - componentDepopulationCompleted); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - if (componentDepopulationCompleted) - { - // Complete here the transition to OMX_StateLoaded - omxRetValue = aFsm.FsmTransition(COmxILFsm::EStateLoaded); - if (OMX_ErrorNone == omxRetValue) - { - // Notify the IL client that port population has completed sucessfully - omxRetValue = aFsm.iCallbacks.TransitionCompleteNotification( - OMX_StateLoaded); - } - } - - } - else - { - // Notify the IL client that the transition to the valid state - // OMX_StatePause or OMX_StateExecuting has completed sucessfully - omxRetValue = aFsm.iCallbacks.TransitionCompleteNotification( - static_cast(aCommand.iParam1)); - - if (OMX_ErrorNone == omxRetValue) - { - // Fire up the tunnelled buffer exchange, if any tunnelled ports are - // found in the component... - omxRetValue = aFsm.iPortManager.InitiateTunnellingDataFlow(); - } - - } - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdle::CommandFlush(COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateIdle::CommandFlush")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandFlush, - User::Panic(KOmxILFsmPanicCategory, 1)); - - return aFsm.iPortManager.BufferFlushIndicationFlushCommand( - aCommand.iParam1, OMX_FALSE); // Do not eject buffers - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdle::CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateIdle::CommandPortEnable")); - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandPortEnable, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // In this state, the port allocation has finished for enabled - // ports. However, a port is being enabled here. The port being enabled - // must populate (if tunnel supplier) or be populated (if non-tunnel - // supplier or IL Client communication) - TBool indicationIsFinal = EFalse; - OMX_ERRORTYPE omxRetValue = - aFsm.iPortManager.PortEnableIndication( - aCommand.iParam1, - indicationIsFinal); - - if (OMX_ErrorNone == omxRetValue) - { - // From section 3.2.2.6, "If the IL client enables a port while the - // component is in any state other than OMX_StateLoaded or - // OMX_WaitForResources, then that port shall allocate its buffers via - // the same call sequence used on a transition from OMX_StateLoaded to - // OMX_StateIdle." - - // Lets tell port manager in case the port being enabled is a tunnel - // supplier... - TBool componentPopulationCompleted = EFalse; - omxRetValue = - aFsm.iPortManager.TunnellingBufferAllocation( - componentPopulationCompleted, aCommand.iParam1); - } - - return omxRetValue; - - } - - -// -// COmxILStateIdleToLoaded -// -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdleToLoaded::FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateIdleToLoaded::FreeBuffer")); - - return COmxILState::FreeBufferV2(aFsm, - aPortIndex, - apBuffer, - aPortDepopulationCompleted); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateIdleToLoaded::CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateIdleToLoaded::CommandStateSet")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandStateSet, - User::Panic(KOmxILFsmPanicCategory, 1)); - - switch (aCommand.iParam1) - { - case OMX_StateIdle: - { - // Here, return "same state" as the transition to OMX_StateLoaded has - // not completed yet. - return OMX_ErrorSameState; - } - case OMX_StateInvalid: - { - // Notify the IL client... ignore the ret value... - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateInvalid); - // Invalidate component - return OMX_ErrorInvalidState; - } - default: - { - __ASSERT_ALWAYS(0, User::Panic(KOmxILFsmPanicCategory, 1)); - } - }; - - return OMX_ErrorNone; - - } - - -// -// COmxILStateExecuting -// -OMX_STATETYPE -COmxILFsm::COmxILStateExecuting::GetState() const - { - DEBUG_PRINTF(_L8("COmxILStateExecuting::GetState")); - return OMX_StateExecuting; - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecuting::SetParameter(COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - DEBUG_PRINTF(_L8("COmxILStateExecuting::SetParameter")); - - return COmxILState::SetParameter(aFsm, - aParamIndex, - apComponentParameterStructure); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecuting::PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateExecuting::PopulateBuffer")); - - return COmxILState::PopulateBuffer(aFsm, - appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecuting::FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStateExecuting::FreeBuffer")); - - return COmxILState::FreeBuffer(aFsm, - aPortIndex, - apBuffer, - aPortDepopulationCompleted); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecuting::EmptyThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateExecuting::EmptyThisBuffer")); - - return COmxILState::EmptyThisBufferV2(aFsm, - apBuffer); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecuting::FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateExecuting::FillThisBuffer")); - - return COmxILState::FillThisBufferV2(aFsm, - apBuffer); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecuting::ComponentTunnelRequest( - COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) - { - DEBUG_PRINTF(_L8("COmxILStateExecuting::ComponentTunnelRequest")); - - return COmxILState::ComponentTunnelRequest(aFsm, - aPort, - aTunneledComp, - aTunneledPort, - apTunnelSetup); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecuting::CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateExecuting::CommandStateSet")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandStateSet, - User::Panic(KOmxILFsmPanicCategory, 1)); - - COmxILFsm::TStateIndex nextState = COmxILFsm::EStateMax; - switch(aCommand.iParam1) - { - case OMX_StateIdle: - { - nextState = COmxILFsm::ESubStateExecutingToIdle; - } - break; - case OMX_StatePause: - { - nextState = COmxILFsm::EStatePause; - } - break; - case OMX_StateExecuting: - { - return OMX_ErrorSameState; - } - case OMX_StateInvalid: - { - // Notify the IL client... ignore the ret value... - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateInvalid); - // Invalidate component - return OMX_ErrorInvalidState; - } - default: - { - return OMX_ErrorIncorrectStateTransition; - } - }; - - - // Initial checks OK. The component is commanded to make a transition to - // ESubStateExecutingToIdle substate or OMX_StatePause. - OMX_ERRORTYPE omxRetValue = aFsm.FsmTransition(nextState); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - if (COmxILFsm::ESubStateExecutingToIdle == nextState) - { - // Lets tell port manager since at this point it is mandated that all - // buffers must be returned to their suppliers (IL Client and/or - // tunnelled components). - TBool allBuffersReturnedToSuppliers = EFalse; - omxRetValue = - aFsm.iPortManager.BufferFlushIndicationPauseOrExeToIdleCommand( - allBuffersReturnedToSuppliers); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - if (allBuffersReturnedToSuppliers) - { - // Complete here the transition to OMX_StateIdle - omxRetValue = aFsm.FsmTransition(COmxILFsm::EStateIdle); - if (OMX_ErrorNone == omxRetValue) - { - // Notify the IL client that port population has completed sucessfully - omxRetValue = aFsm.iCallbacks.TransitionCompleteNotification( - OMX_StateIdle); - } - } - - } - else - { - // Notify the IL client that the transition to OMX_StatePause has - // completed sucessfully - omxRetValue = aFsm.iCallbacks.TransitionCompleteNotification( - OMX_StatePause); - - } - - return omxRetValue; - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecuting::CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateExecuting::CommandPortEnable")); - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandPortEnable, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // In this state, the port allocation has finished for enabled - // ports. However, a port is being enabled here. The port being enabled - // must populate (if tunnel supplier) or be populated (if non-tunnel - // supplier or IL Client communication) - TBool indicationIsFinal = EFalse; - OMX_ERRORTYPE omxRetValue = - aFsm.iPortManager.PortEnableIndication( - aCommand.iParam1, - indicationIsFinal); - - if (OMX_ErrorNone == omxRetValue) - { - // From section 3.2.2.6, "If the IL client enables a port while the - // component is in any state other than OMX_StateLoaded or - // OMX_WaitForResources, then that port shall allocate its buffers via - // the same call sequence used on a transition from OMX_StateLoaded to - // OMX_StateIdle. If the IL client enables while the component is in - // the OMX_Executing state, then that port shall begin transferring - // buffers" - - // Lets tell port manager in case the port being enabled is a tunnel - // supplier... - TBool componentPopulationCompleted = EFalse; - omxRetValue = - aFsm.iPortManager.TunnellingBufferAllocation( - componentPopulationCompleted, aCommand.iParam1); - - // No need to use here componentPopulationCompleted. A port is being - // enabled in OMX_StateExecuting. If the port is a supplier, after - // being re-enabled it should start the buffer allocation phase, - // regardless of the population state of other ports in the component. - if (OMX_ErrorNone == omxRetValue) - { - // Fire up the tunnelled buffer exchange in the enabled port... - omxRetValue = aFsm.iPortManager.InitiateTunnellingDataFlow( - aCommand.iParam1); - } - } - - return omxRetValue; - - } - - -// -// MOmxILPauseOrExecutingToIdle -// -OMX_ERRORTYPE -COmxILFsm::MOmxILPauseOrExecutingToIdle::ReturnThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer, - OMX_DIRTYPE aDirection) - { - DEBUG_PRINTF(_L8("MOmxILPauseOrExecutingToIdle::ReturnThisBuffer")); - - TBool allBuffersReturned = EFalse; - OMX_ERRORTYPE omxRetValue = - aFsm.iPortManager.BufferReturnIndication( - apBuffer, - aDirection, - allBuffersReturned - ); - - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - if (allBuffersReturned && - aFsm.iPortManager.AllBuffersAtHome()) - { - // Complete here the transition to OMX_StateIdle - omxRetValue = aFsm.FsmTransition(COmxILFsm::EStateIdle); - if (OMX_ErrorNone == omxRetValue) - { - // Notify the IL client that transition to Idle has completed - // sucessfully - omxRetValue = aFsm.iCallbacks.TransitionCompleteNotification( - OMX_StateIdle); - } - } - - return omxRetValue; - - } - - - -// -// COmxILStateExecutingToIdle -// -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecutingToIdle::EmptyThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateExecutingToIdle::EmptyThisBuffer")); - - return ReturnThisBuffer(aFsm, - apBuffer, - OMX_DirInput); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecutingToIdle::FillThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStateExecutingToIdle::FillThisBuffer")); - - return ReturnThisBuffer(aFsm, - apBuffer, - OMX_DirOutput); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStateExecutingToIdle::CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStateExecutingToIdle::CommandStateSet")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandStateSet, - User::Panic(KOmxILFsmPanicCategory, 1)); - - switch(aCommand.iParam1) - { - case OMX_StateExecuting: - { - // Here, return "same state" as the transition to OMX_StateIdle has - // not completed yet. - return OMX_ErrorSameState; - } - case OMX_StateInvalid: - { - // Notify the IL client... ignore the ret value... - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateInvalid); - // Invalidate component - return OMX_ErrorInvalidState; - } - default: - { - return OMX_ErrorIncorrectStateTransition; - } - }; - - } - - -// -// COmxILStatePause -// -OMX_STATETYPE -COmxILFsm::COmxILStatePause::GetState() const - { - DEBUG_PRINTF(_L8("COmxILStatePause::GetState")); - return OMX_StatePause; - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePause::SetParameter( - COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - DEBUG_PRINTF(_L8("COmxILStatePause::SetParameter")); - - return COmxILState::SetParameter(aFsm, - aParamIndex, - apComponentParameterStructure); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePause::PopulateBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStatePause::PopulateBuffer")); - - return COmxILState::PopulateBuffer(aFsm, - appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePause::FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) - { - DEBUG_PRINTF(_L8("COmxILStatePause::FreeBuffer")); - - return COmxILState::FreeBuffer(aFsm, - aPortIndex, - apBuffer, - aPortDepopulationCompleted); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePause::EmptyThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStatePause::EmptyThisBuffer")); - - return COmxILState::EmptyThisBufferV2(aFsm, - apBuffer); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePause::FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStatePause::FillThisBuffer")); - - return COmxILState::FillThisBufferV2(aFsm, - apBuffer); - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePause::ComponentTunnelRequest( - COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) - { - DEBUG_PRINTF(_L8("COmxILStatePause::ComponentTunnelRequest")); - - return COmxILState::ComponentTunnelRequest(aFsm, - aPort, - aTunneledComp, - aTunneledPort, - apTunnelSetup); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePause::CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStatePause::CommandStateSet")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandStateSet, - User::Panic(KOmxILFsmPanicCategory, 1)); - - COmxILFsm::TStateIndex nextState = COmxILFsm::EStateInvalid; - switch(aCommand.iParam1) - { - case OMX_StateIdle: - { - nextState = COmxILFsm::ESubStatePauseToIdle; - } - break; - case OMX_StateExecuting: - { - nextState = COmxILFsm::EStateExecuting; - } - break; - case OMX_StatePause: - { - return OMX_ErrorSameState; - } - case OMX_StateInvalid: - { - // Notify the IL client... ignore the ret value... - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateInvalid); - // Invalidate component - return OMX_ErrorInvalidState; - } - default: - { - return OMX_ErrorIncorrectStateTransition; - } - }; - - // Initial command checks OK. The component is commanded to make a - // transition to ESubStatePauseToIdle substate or OMX_StateExecuting. - // Commit transition to the valid state - OMX_ERRORTYPE omxRetValue = aFsm.FsmTransition(nextState); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - if (COmxILFsm::ESubStatePauseToIdle == nextState) - { - // Lets tell port manager since at this point it is mandated that all - // buffers must be returned to their suppliers (IL Client and/or - // tunnelled components). - TBool allBuffersReturnedToSuppliers = EFalse; - omxRetValue = - aFsm.iPortManager.BufferFlushIndicationPauseOrExeToIdleCommand( - allBuffersReturnedToSuppliers); - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - if (allBuffersReturnedToSuppliers) - { - // Complete here the transition to OMX_StateIdle - omxRetValue = aFsm.FsmTransition(COmxILFsm::EStateIdle); - if (OMX_ErrorNone == omxRetValue) - { - // Notify the IL client that port population has completed sucessfully - aFsm.iCallbacks.TransitionCompleteNotification( - OMX_StateIdle); - } - } - - } - else - { - // Notify the IL client that the transition to OMX_StateExecuting has - // completed sucessfully - omxRetValue = aFsm.iCallbacks.TransitionCompleteNotification( - OMX_StateExecuting); - - if (OMX_ErrorNone == omxRetValue) - { - // Fire up the tunnelled buffer exchange, if any tunnelled ports are - // found in the component... - omxRetValue = aFsm.iPortManager.InitiateTunnellingDataFlow(); - } - - } - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePause::CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStatePause::CommandPortEnable")); - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandPortEnable, - User::Panic(KOmxILFsmPanicCategory, 1)); - - // In this state, the port allocation has finished for enabled - // ports. However, a port is being enabled here. The port being enabled - // must populate (if tunnel supplier) or be populated (if non-tunnel - // supplier or IL Client communication) - TBool indicationIsFinal = EFalse; - OMX_ERRORTYPE omxRetValue = aFsm.iPortManager.PortEnableIndication( - aCommand.iParam1, - indicationIsFinal); - - if (OMX_ErrorNone == omxRetValue) - { - // From section 3.2.2.6, "If the IL client enables a port while the - // component is in any state other than OMX_StateLoaded or - // OMX_WaitForResources, then that port shall allocate its buffers via - // the same call sequence used on a transition from OMX_StateLoaded to - // OMX_StateIdle." - - // Lets tell port manager in case the port being enabled is a tunnel - // supplier... - TBool componentPopulationCompleted = EFalse; - omxRetValue = - aFsm.iPortManager.TunnellingBufferAllocation( - componentPopulationCompleted, aCommand.iParam1); - - } - - return omxRetValue; - - } - - -// -// COmxILStatePauseToIdle -// -OMX_ERRORTYPE -COmxILFsm::COmxILStatePauseToIdle::EmptyThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStatePauseToIdle::EmptyThisBuffer")); - - return ReturnThisBuffer(aFsm, - apBuffer, - OMX_DirInput); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePauseToIdle::FillThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - DEBUG_PRINTF(_L8("COmxILStatePauseToIdle::FillThisBuffer")); - - return ReturnThisBuffer(aFsm, - apBuffer, - OMX_DirOutput); - - } - - -OMX_ERRORTYPE -COmxILFsm::COmxILStatePauseToIdle::CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) - { - DEBUG_PRINTF(_L8("COmxILStatePauseToIdle::CommandStateSet")); - - __ASSERT_DEBUG(aCommand.iCommandType == OMX_CommandStateSet, - User::Panic(KOmxILFsmPanicCategory, 1)); - - switch(aCommand.iParam1) - { - case OMX_StatePause: - { - // Here, return "same state" as the transition to OMX_StateIdle has not - // completed yet. - return OMX_ErrorSameState; - } - case OMX_StateInvalid: - { - // Notify the IL client... ignore the ret value... - aFsm.iCallbacks.TransitionCompleteNotification(OMX_StateInvalid); - // Invalidate component - return OMX_ErrorInvalidState; - } - default: - { - return OMX_ErrorIncorrectStateTransition; - } - }; - - } - - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilstate.h --- a/omxil/omxilcomponentcommon/src/common/omxilstate.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,756 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILSTATE_H -#define OMXILSTATE_H - -#include -#include - -#include "omxilfsm.h" -#include "omxilportmanager.h" - -// Forward declarations -class TOmxILCommand; - -/** - Base class for concrete OpenMAX IL state objects (State Pattern) -*/ -class COmxILFsm::COmxILState : public CBase - { - -public: - - // - // Events, a.k.a. OpenMAX IL API calls - // - - virtual OMX_ERRORTYPE GetParameter( - const COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const; - - /** - State-specific version of the OpenMAX IL SetParameter API. - - @param [in] aFsm The main FSM context class that delegates the events to the - state classes. - - @param [in] aParamIndex The index of the structure that is to be filled. - - @param [in] apComponentParameterStructure A pointer to the IL structure. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE SetParameter( - COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) = 0; - - virtual OMX_ERRORTYPE GetConfig( - const COmxILFsm& aFsm, - OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - virtual OMX_ERRORTYPE SetConfig( - COmxILFsm& aFsm, - OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure); - - virtual OMX_ERRORTYPE GetExtensionIndex( - const COmxILFsm& aFsm, - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - - /** - State-specific version of the OpenMAX IL GetState API. - - @return OMX_STATETYPE - */ - virtual OMX_STATETYPE GetState() const = 0; - - /** - State-specific version of the OpenMAX IL ComponentTunnelRequest API. - - @param [in] aFsm The main FSM context class that delegates the events to - the state classes. - - @param [in] aPort Used to select the port on the component to be used - for tunneling. - - @param [in] aTunneledComp Handle of the component to tunnel with. - - @param [in] aTunneledPort Indicates the port the component should tunnel - with. - - @param [in] aTunnelSetup Pointer to the tunnel setup structure. - - @return OMX_ERRORTYPE - */ - inline virtual OMX_ERRORTYPE ComponentTunnelRequest( - COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) = 0; - - /** - State-specific version of the PopulateBuffer method used by the FSM - object to implement the OpenMAX IL AllocateBuffer/UseBuffer APIs. - - @param [in] aFsm The main FSM context class that delegates the events - to the state classes. - - @param [out] appBufferHdr A pointer to a pointer of an - OMX_BUFFERHEADERTYPE structure that receives the pointer to the buffer - header. - - @param [in] aPortIndex The index of the port that will use the - specified buffer. This index is relative to the component that owns the - port. - - @param [in] apAppPrivate A pointer that refers to an - implementation-specific memory area that is under responsibility of the - supplier of the buffer. - - @param [in] aSizeBytes The buffer size in bytes. - - @param [in] apBuffer A pointer to the memory buffer area to be used. - - @param [out] portPopulationCompleted Used to signal the FSM object the - the port population has completed. - - @return OMX_ERRORTYPE - */ - inline virtual OMX_ERRORTYPE PopulateBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) = 0; - - /** - State-specific version of the OpenMAX IL FreeBuffer API. - - @param [in] aFsm The main FSM context class that delegates the events - to the state classes. - - @param [in] aPortIndex The index of the port that is using the - specified buffer. - - @param [in] apBuffer A pointer to an OMX_BUFFERHEADERTYPE structure - used to provide or receive the pointer to the buffer header. - - @param [out] aPortDepopulationCompleted Used to signal the FSM object - the the port population has completed. - - @return OMX_ERRORTYPE - */ - inline virtual OMX_ERRORTYPE FreeBuffer( - COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) = 0; - - /** - State-specific version of the OpenMAX IL EmptyThisBuffer API. - - @param [in] aFsm The main FSM context class that delegates the events - to the state classes. - - @param [in] apBuffer A pointer to an OMX_BUFFERHEADERTYPE structure that is - used to receive the pointer to the buffer header. The buffer header - shall specify the index of the input port that receives the buffer. - - @return OMX_ERRORTYPE - */ - inline virtual OMX_ERRORTYPE EmptyThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) = 0; - - /** - State-specific version of the OpenMAX IL FillThisBuffer API. - - @param [in] aFsm The main FSM context class that delegates the events - to the state classes. - - @param [in] apBuffer A pointer to an OMX_BUFFERHEADERTYPE structure - that is used to receive the pointer to the buffer header. The buffer - header shall specify the index of the input port that receives the - buffer. - - @return OMX_ERRORTYPE - */ - inline virtual OMX_ERRORTYPE FillThisBuffer( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) = 0; - - /** - State-specific version of the method used by the FSM object to - implement the OpenMAX IL OMX_CommandStateSet command. - - @param [in] aFsm The main FSM context class that delegates the events - to the state classes. - - @param [in] aCommand A TOmxILCommand object used to carry the command - parameters. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) = 0; - - virtual OMX_ERRORTYPE CommandFlush( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - /** - State-specific version of the method used by the FSM object to - implement the OpenMAX IL OMX_CommandPortEnable command. - - @param [in] aFsm The main FSM context class that delegates the events - to the state classes. - - @param [in] aCommand A TOmxILCommand object used to carry the command - parameters. - - @return OMX_ERRORTYPE - */ - virtual OMX_ERRORTYPE CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand) = 0; - - virtual OMX_ERRORTYPE CommandPortDisable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - virtual OMX_ERRORTYPE CommandMarkBuffer( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - -protected: - - virtual OMX_ERRORTYPE SetParameterV2( - COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - inline virtual OMX_ERRORTYPE PopulateBufferV2( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted); - - inline virtual OMX_ERRORTYPE FreeBufferV2( - COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted); - - inline virtual OMX_ERRORTYPE ComponentTunnelRequestV2( - COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - inline virtual OMX_ERRORTYPE EmptyThisBufferV2( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - inline virtual OMX_ERRORTYPE FillThisBufferV2( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - }; - - -/** - Concrete class that implements the OpenMAX IL OMX_StateInvalid state -*/ -class COmxILFsm::COmxILStateInvalid : public COmxILFsm::COmxILState - { - -public: - - OMX_ERRORTYPE GetParameter(const COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const; - - OMX_ERRORTYPE SetParameter(COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE GetConfig(const COmxILFsm& aFsm, - OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - OMX_ERRORTYPE SetConfig(COmxILFsm& aFsm, - OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure); - - OMX_ERRORTYPE GetExtensionIndex(const COmxILFsm& aFsm, - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - - OMX_STATETYPE GetState() const; - - OMX_ERRORTYPE ComponentTunnelRequest(COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - OMX_ERRORTYPE PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted); - - OMX_ERRORTYPE FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted); - - OMX_ERRORTYPE EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandFlush( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandPortDisable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandMarkBuffer( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - -/** - Concrete class that implements the OpenMAX IL OMX_StateLoaded state -*/ -class COmxILFsm::COmxILStateLoaded : public COmxILFsm::COmxILState - { - -public: - - OMX_STATETYPE GetState() const; - - OMX_ERRORTYPE SetParameter(COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted); - - OMX_ERRORTYPE FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted); - - OMX_ERRORTYPE EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE ComponentTunnelRequest(COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - - -/** - Concrete class that implements the intermediate state OMX_StateLoaded -> - OMX_StateIdle. -*/ -class COmxILFsm::COmxILStateLoadedToIdle : public COmxILFsm::COmxILStateLoaded - { - -public: - - - OMX_ERRORTYPE SetParameter(COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted); - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - -private: - - TBool iUseBufferReceived; - - }; - -/** - Concrete class that implements the OpenMAX IL OMX_StateWaitForResources - state - - NOTE: This state is here only to provide the basic functionality of - transitioning form OMX_StateLoaded to OMX_StateWaitForResources and - viceversa. Transition from OMX_StateWaitForResources to OMX_StateIdle is not - implemented at this stage since a Resource Manager is not present - yet. Whenever a Resource Manager becomes available, a - COmxILStateWaitForResourcesToIdle substate should be implemented to handle - the allocation of buffers mandated by the standard in this transition. - -*/ -class COmxILFsm::COmxILStateWaitForResources : public COmxILFsm::COmxILState - { - -public: - - OMX_STATETYPE GetState() const; - - OMX_ERRORTYPE SetParameter(COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted); - - OMX_ERRORTYPE FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted); - - OMX_ERRORTYPE EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE ComponentTunnelRequest(COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - -/** - Concrete class that implements the OpenMAX IL COmxILStateIdle state -*/ -class COmxILFsm::COmxILStateIdle : public COmxILFsm::COmxILState - { - -public: - - OMX_STATETYPE GetState() const; - - OMX_ERRORTYPE SetParameter(COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted); - - OMX_ERRORTYPE FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted); - - OMX_ERRORTYPE EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE ComponentTunnelRequest(COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandFlush( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - -/** - Concrete class that implements the intermediate state OMX_StateIdle -> - OMX_StateLoaded. -*/ -class COmxILFsm::COmxILStateIdleToLoaded : public COmxILFsm::COmxILStateIdle - { - -public: - - OMX_ERRORTYPE FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted); - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - -/** - Concrete class that implements the OpenMAX IL COmxILStateExecuting state -*/ -class COmxILFsm::COmxILStateExecuting : public COmxILFsm::COmxILState - { - -public: - - OMX_STATETYPE GetState() const; - - OMX_ERRORTYPE SetParameter(COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted); - - OMX_ERRORTYPE FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted); - - OMX_ERRORTYPE EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE ComponentTunnelRequest(COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - -/** - Class used to abstract the commonalities of the transitions from - OMX_StatePause or OMX_StateExecuting to OMX_StateIdle. -*/ -class COmxILFsm::MOmxILPauseOrExecutingToIdle - { - -protected: - - OMX_ERRORTYPE ReturnThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer, - OMX_DIRTYPE aDirection); - - OMX_ERRORTYPE CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - -/** - Concrete class that implements the intermediate state OMX_StateExecuting -> - OMX_StateIdle. -*/ -class COmxILFsm::COmxILStateExecutingToIdle : - public COmxILFsm::COmxILStateExecuting, - private COmxILFsm::MOmxILPauseOrExecutingToIdle - - { - -public: - - OMX_ERRORTYPE EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - -/** - Concrete class that implements the OpenMAX IL COmxILStatePause state -*/ -class COmxILFsm::COmxILStatePause : public COmxILFsm::COmxILState - { - -public: - - OMX_STATETYPE GetState() const; - - OMX_ERRORTYPE SetParameter(COmxILFsm& aFsm, - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted); - - OMX_ERRORTYPE FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted); - - OMX_ERRORTYPE EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE ComponentTunnelRequest(COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup); - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - OMX_ERRORTYPE CommandPortEnable( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - -/** - Concrete class that implements the intermediate state OMX_StatePause -> - OMX_StateIdle. -*/ -class COmxILFsm::COmxILStatePauseToIdle - : public COmxILFsm::COmxILStatePause, - private COmxILFsm::MOmxILPauseOrExecutingToIdle - { - -public: - - OMX_ERRORTYPE EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer); - - OMX_ERRORTYPE CommandStateSet( - COmxILFsm& aFsm, - const TOmxILCommand& aCommand); - - }; - -#include "omxilstate.inl" - -#endif // OMXILSTATE_H - - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilstate.inl --- a/omxil/omxilcomponentcommon/src/common/omxilstate.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - - -// ComponentTunnelRequest must be used in the following states: -// - Any state, (but the port will have to be disabled) -// -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::ComponentTunnelRequest( - COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) - { - return aFsm.iPortManager.TunnelRequest( - aPort, - aTunneledComp, - aTunneledPort, - apTunnelSetup, - OMX_TRUE // Port must be disabled - ); - } - -// ComponentTunnelRequestV2 must be used in the following states: -// - OMX_StateLoaded -// -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::ComponentTunnelRequestV2( - COmxILFsm& aFsm, - OMX_U32 aPort, - OMX_HANDLETYPE aTunneledComp, - OMX_U32 aTunneledPort, - OMX_TUNNELSETUPTYPE* apTunnelSetup) - { - return aFsm.iPortManager.TunnelRequest( - aPort, - aTunneledComp, - aTunneledPort, - apTunnelSetup, - OMX_FALSE // Port does not need to be disabled - ); - } - -// This PopulateBuffer version must be used in the following states: -// - OMX_StateIdle, -// - OMX_StateExecuting, -// - OMX_StatePaused -// -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::PopulateBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) - { - return aFsm.iPortManager.PopulateBuffer( - appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted, - OMX_TRUE // Port must be disabled - ); - } - -// This PopulateBuffer version must be used in the following states: -// - OMX_StateLoaded, -// - OMX_StateWaitForResources -// -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::PopulateBufferV2( - COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE** appBufferHdr, - OMX_U32 aPortIndex, - OMX_PTR apAppPrivate, - OMX_U32 aSizeBytes, - OMX_U8* apBuffer, - TBool& portPopulationCompleted) - { - return aFsm.iPortManager.PopulateBuffer( - appBufferHdr, - aPortIndex, - apAppPrivate, - aSizeBytes, - apBuffer, - portPopulationCompleted, - OMX_FALSE // Port does not need to be disabled - ); - } - - -// This FreeBuffer version is used in the following states: -// - OMX_StateLoaded, -// - OMX_StateWaitForResources -// - OMX_StateExecuting, -// - OMX_StatePaused, -// AND the port must be disabled -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::FreeBuffer(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) - { - return aFsm.iPortManager.FreeBuffer( - aPortIndex, - apBuffer, - aPortDepopulationCompleted, - OMX_TRUE // Port should be disabled, otherwise - // OMX_ErrorPortUnpopulated might be sent - ); - } - -// This FreeBuffer version is used in the following states: -// - OMX_StateIdle, -// -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::FreeBufferV2(COmxILFsm& aFsm, - OMX_U32 aPortIndex, - OMX_BUFFERHEADERTYPE* apBuffer, - TBool& aPortDepopulationCompleted) - { - return aFsm.iPortManager.FreeBuffer( - aPortIndex, - apBuffer, - aPortDepopulationCompleted, - OMX_FALSE // Port does not need to be disabled - ); - } - -// This EmptyThisBuffer version must be used in the following states: -// - OMX_StateLoaded, -// - OMX_StateWaitForResources -// AND the port must be disabled -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::EmptyThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - return aFsm.iPortManager.BufferIndication( - apBuffer, - OMX_DirInput, - OMX_TRUE // Port must be disabled - ); - } - -// This EmptyThisBuffer version must be used in the following states: -// - OMX_StateIdle, -// - OMX_StateExecuting, -// - OMX_StatePaused -// -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::EmptyThisBufferV2(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - return aFsm.iPortManager.BufferIndication( - apBuffer, - OMX_DirInput, - OMX_FALSE // Port does not need to be disabled - ); - } - -// This FillThisBuffer version must be used in the following states: -// - OMX_StateLoaded, -// - OMX_StateWaitForResources -// AND the port must be disabled -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::FillThisBuffer(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - return aFsm.iPortManager.BufferIndication( - apBuffer, - OMX_DirOutput, - OMX_TRUE // Port must be disabled - ); - } - -// This FillThisBuffer version must be used in the following states: -// - OMX_StateIdle, -// - OMX_StateExecuting, -// - OMX_StatePaused -// -inline OMX_ERRORTYPE -COmxILFsm::COmxILState::FillThisBufferV2(COmxILFsm& aFsm, - OMX_BUFFERHEADERTYPE* apBuffer) - { - return aFsm.iPortManager.BufferIndication( - apBuffer, - OMX_DirOutput, - OMX_FALSE // Port does not need to be disabled - ); - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilutil.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilutil.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - - -#include "omxilutil.h" -#include "omxilspecversion.h" - -/** - This method checks that the size of an OpenMAX IL data structure is - correct. It also checks that the OpenMAX IL version stated in the structure - is the same as the one returned by TOmxILSpecVersion() (at the time of - writting this is 1.1.1). In this version of the component framework, - backward compatibility in not supported for OpenMAX IL structures. - - @param apHeader An OpenMAX IL data structure. - - @param aSize sizeof(OMXIL structure) - - @return OMX_ErrorVersionMismatch if the version is not - 1.1.1. OMX_ErrorBadParameter if versions are the same but the nSize is - different. OMX_ErrorNone otherwise - */ -EXPORT_C OMX_ERRORTYPE -TOmxILUtil::CheckOmxStructSizeAndVersion(OMX_PTR apHeader, OMX_U32 aSize) - { - - if (!apHeader || aSize == 0) - { - return OMX_ErrorBadParameter; - } - -#ifdef _OMXIL_COMMON_SPEC_VERSION_CHECKS_ON - - OMX_U32* const pStructSize = - reinterpret_cast(apHeader); - - // In an OpenMAX IL structure the nSize and nVersion fields are used to - // detect the difference in spec versions. - OMX_VERSIONTYPE* const pOmxVersion = - reinterpret_cast( - pStructSize + (sizeof(OMX_U32)/sizeof(OMX_U32))); - - if ( (TOmxILSpecVersion() != *pOmxVersion)&&(TOmxILVersion(OMX_VERSION_MAJOR, OMX_VERSION_MINOR, 1, OMX_VERSION_STEP) != *pOmxVersion) ) - - { - return OMX_ErrorVersionMismatch; - } - - // If the spec versions are the same, then the struct sizes must be the - // same too... - if (*pStructSize != aSize) - { - return OMX_ErrorBadParameter; - } - -#endif // _OMXIL_COMMON_SPEC_VERSION_CHECKS_ON - - return OMX_ErrorNone; - - } - -/** - This method simply resets the following fields in the OMX IL 1.1.x buffer header: - nFilledLen - hMarkTargetComponent - pMarkData - nTickCount - nTimeStamp - nFlags - - @param apBufferHeader An OpenMAX IL buffer header structure. - - */ -EXPORT_C void -TOmxILUtil::ClearBufferContents( - OMX_BUFFERHEADERTYPE* apBufferHeader) - { - - if (!apBufferHeader) - { - return; - } - - apBufferHeader->nFilledLen = 0; - apBufferHeader->hMarkTargetComponent = 0; - apBufferHeader->pMarkData = 0; - apBufferHeader->nTickCount = 0; - apBufferHeader->nTimeStamp = 0; - apBufferHeader->nFlags = 0; - - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilutil.h --- a/omxil/omxilcomponentcommon/src/common/omxilutil.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILUTIL_H -#define OMXILUTIL_H - -#include - -#include -#include - - -class TOmxILUtil - { - -public: - - IMPORT_C static OMX_ERRORTYPE CheckOmxStructSizeAndVersion( - OMX_PTR apHeader, OMX_U32 aSize); - - IMPORT_C static void ClearBufferContents( - OMX_BUFFERHEADERTYPE* apBufferHeader); - - }; - - -#endif // OMXILUTIL_H - - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilvideoport.cpp --- a/omxil/omxilcomponentcommon/src/common/omxilvideoport.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,219 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#include "omxilvideoport.h" -#include "omxilutil.h" -#include "log.h" - -EXPORT_C -COmxILVideoPort::COmxILVideoPort( - const TOmxILCommonPortData& aCommonPortData, - const RArray& aSupportedVideoFormats, - const RArray& aSupportedColorFormats) -: -COmxILPort(aCommonPortData) - { - DEBUG_PRINTF(_L8("COmxILVideoPort::COmxILVideoPort")); - - // Performing a deep copy of these arrays inside a C++ constructor is unsafe. - // Items should be added to these arrays directly inside the derived class' ConstructL(). - __ASSERT_ALWAYS(aSupportedVideoFormats.Count() == 0 && aSupportedColorFormats.Count() == 0, User::Invariant()); - TInt numVideoFormats = iSupportedVideoFormats.Count(); - TInt numColorFormats = iSupportedColorFormats.Count(); - iParamVideoPortFormat.nSize = sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE); - iParamVideoPortFormat.nVersion = aCommonPortData.iOmxVersion; - iParamVideoPortFormat.nPortIndex = aCommonPortData.iPortIndex; - iParamVideoPortFormat.nIndex = numVideoFormats ? numVideoFormats - 1 : 0; - iParamVideoPortFormat.eCompressionFormat = numVideoFormats ? iSupportedVideoFormats[0] : OMX_VIDEO_CodingUnused; - iParamVideoPortFormat.eColorFormat = numColorFormats ? iSupportedColorFormats[0] : OMX_COLOR_FormatUnused; - iParamVideoPortFormat.xFramerate = 0;//aCommonPortData.xFramerate???; - - } - -EXPORT_C -COmxILVideoPort::~COmxILVideoPort() - { - DEBUG_PRINTF(_L8("COmxILVideoPort::~COmxILVideoPort")); - iSupportedVideoFormats.Close(); - iSupportedColorFormats.Close(); - } - -EXPORT_C OMX_ERRORTYPE -COmxILVideoPort::GetLocalOmxParamIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILVideoPort::GetLocalOmxParamIndexes")); - - // Always collect local indexes from parent - OMX_ERRORTYPE omxRetValue = COmxILPort::GetLocalOmxParamIndexes(aIndexArray); - - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - TInt err = aIndexArray.InsertInOrder(OMX_IndexParamVideoPortFormat); - - // Note that index duplication is OK. - if (KErrNone != err && KErrAlreadyExists != err) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - -EXPORT_C OMX_ERRORTYPE -COmxILVideoPort::GetLocalOmxConfigIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILVideoPort::GetLocalOmxConfigIndexes")); - - // Always collect local indexes from parent - return COmxILPort::GetLocalOmxConfigIndexes(aIndexArray); - - } - -EXPORT_C OMX_ERRORTYPE COmxILVideoPort::GetParameter(OMX_INDEXTYPE aParamIndex, TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILVideoPort::GetParameter")); - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - - switch(aParamIndex) - { - case OMX_IndexParamVideoPortFormat: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE)))) - { - return omxRetValue; - } - - OMX_VIDEO_PARAM_PORTFORMATTYPE* videoPortDefinition = static_cast(apComponentParameterStructure); - - if(OMX_VIDEO_CodingUnused == iParamVideoPortFormat.eCompressionFormat) - { - if (videoPortDefinition->nIndex >= iSupportedColorFormats.Count()) - { - return OMX_ErrorNoMore; - } - videoPortDefinition->eColorFormat = iSupportedColorFormats[videoPortDefinition->nIndex]; - } - else - { - if (videoPortDefinition->nIndex >= iSupportedVideoFormats.Count()) - { - return OMX_ErrorNoMore; - } - videoPortDefinition->eCompressionFormat = iSupportedVideoFormats[videoPortDefinition->nIndex]; - } - videoPortDefinition->xFramerate = iParamVideoPortFormat.xFramerate; - break; - } - default: - { - // Try the parent's indexes - return COmxILPort::GetParameter(aParamIndex, apComponentParameterStructure); - } - }; - - return OMX_ErrorNone; - } - -EXPORT_C OMX_ERRORTYPE COmxILVideoPort::SetParameter(OMX_INDEXTYPE aParamIndex, const TAny* apComponentParameterStructure, TBool& aUpdateProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILVideoPort::SetParameter")); - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - - switch(aParamIndex) - { - case OMX_IndexParamVideoPortFormat: - { - if (OMX_ErrorNone != (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE)))) - { - return omxRetValue; - } - - const OMX_VIDEO_PARAM_PORTFORMATTYPE *componentParameterStructure = static_cast(apComponentParameterStructure); - - if(OMX_VIDEO_CodingUnused == componentParameterStructure->eCompressionFormat) - { - if(OMX_COLOR_FormatUnused == componentParameterStructure->eColorFormat) - { - // Both Compression Format and Color can not be Unused at the same time. - return OMX_ErrorBadParameter; - } - - if(iParamVideoPortFormat.eColorFormat != componentParameterStructure->eColorFormat) - { - if(KErrNotFound == iSupportedColorFormats.Find(componentParameterStructure->eColorFormat)) - { - return OMX_ErrorUnsupportedSetting; - } - else - { - iParamVideoPortFormat.eColorFormat = componentParameterStructure->eColorFormat; - } - aUpdateProcessingFunction = ETrue; - } - - if(iParamVideoPortFormat.xFramerate != componentParameterStructure->xFramerate) - { - iParamVideoPortFormat.xFramerate = componentParameterStructure->xFramerate; - aUpdateProcessingFunction = ETrue; - } - } - else - { - // Data is compressed. Change relevant variables. - if (OMX_COLOR_FormatUnused != componentParameterStructure->eColorFormat) - { - // Both Compression Format and Color can not be Unused at the same time. - return OMX_ErrorBadParameter; - } - - if (iParamVideoPortFormat.eCompressionFormat != componentParameterStructure->eCompressionFormat) - { - if(KErrNotFound == iSupportedVideoFormats.Find(componentParameterStructure->eCompressionFormat)) - { - return OMX_ErrorUnsupportedSetting; - } - else - { - iParamVideoPortFormat.eCompressionFormat = componentParameterStructure->eCompressionFormat; - aUpdateProcessingFunction = ETrue; - } - } - } - break; - } - default: - { - // Try the parent's indexes - return COmxILPort::SetParameter(aParamIndex, apComponentParameterStructure, aUpdateProcessingFunction); - } - }; - return OMX_ErrorNone; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/omxilvideoport.h --- a/omxil/omxilcomponentcommon/src/common/omxilvideoport.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalTechnology -*/ - -#ifndef OMXILVIDEOPORT_H -#define OMXILVIDEOPORT_H - -#include - -#include -#include -#include - -#include "omxilport.h" - -class COmxILVideoPort : public COmxILPort - { - -public: - - IMPORT_C ~COmxILVideoPort(); - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetLocalOmxParamIndexes(RArray& aIndexArray) const = 0; - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetLocalOmxConfigIndexes(RArray& aIndexArray) const = 0; - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const = 0; - // From COmxILPort - IMPORT_C OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) = 0; - -protected: - - IMPORT_C COmxILVideoPort(const TOmxILCommonPortData& aCommonPortData, - const RArray& aSupportedVideoFormats, - const RArray& aSupportedColorFormats); - - // From COmxILPort - IMPORT_C OMX_ERRORTYPE SetFormatInPortDefinition( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, - TBool& aUpdateProcessingFunction) = 0; - - // From COmxILPort - IMPORT_C TBool IsTunnelledPortCompatible( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const = 0; - -protected: - - RArray iSupportedVideoFormats; - RArray iSupportedColorFormats; - RArray iSupportedFrameRates; - OMX_VIDEO_PARAM_PORTFORMATTYPE iParamVideoPortFormat; - }; - -#endif // OMXILVIDEOPORT_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/primsgqueue.h --- a/omxil/omxilcomponentcommon/src/common/primsgqueue.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - -#ifndef PRIMSGQUEUE_H -#define PRIMSGQUEUE_H - -#include -#include - -/** - RPriMsgQueue panic category -*/ -_LIT(RPriMsgQueuePanicCategory, "RPriMsgQueue"); - -/** - A priority-based message queue similar to RMsQueue . - - This templated class provides the behaviour for managing an asynchronous - queue of messages, ordered by descending priority order, where the template - parameter defines the message type. Note that this message queue is intended - to be used with pointer types only. Also, message types are assumed to have - a member with the following signature : TInt Priority() - - */ -template -class RPriMsgQueue - { - -public: - - inline TInt CreateLocal(TInt aSize, TOwnerType aType=EOwnerProcess); - inline TInt Handle() const; - inline TInt Send(const T& aMsg); - inline TInt Receive(T& aMsg); - inline void Close(); - inline void NotifyDataAvailable(TRequestStatus& aStatus); - inline void CancelDataAvailable(); - -protected: - - class TFrontQueueElement - { - - public: - - inline explicit TFrontQueueElement(const TAny* apInfo); - inline TFrontQueueElement(const TAny* apInfo, TInt aPriority); - - public: - - const TAny* ipInfo; - TPriQueLink iLink; - - }; - -protected: - - inline TInt DrainBackQueue(); - -protected: - - RMsgQueueBase iBackQueue; - TPriQue iFrontQueue; - - }; - -#include "primsgqueue.inl" - -#endif // PRIMSGQUEUE_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcomponentcommon/src/common/primsgqueue.inl --- a/omxil/omxilcomponentcommon/src/common/primsgqueue.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,156 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -/** - @file - @internalComponent -*/ - - -template -inline RPriMsgQueue::TFrontQueueElement::TFrontQueueElement( - const TAny* apInfo) - : - ipInfo(apInfo) - { - iLink.iPriority = 0; - } - -template -inline RPriMsgQueue::TFrontQueueElement::TFrontQueueElement( - const TAny* apInfo, TInt aPriority) - : - ipInfo(apInfo) - { - iLink.iPriority = aPriority; - } - -template -inline TInt RPriMsgQueue::CreateLocal(TInt aSize, TOwnerType aOwner) - { - iFrontQueue.SetOffset(_FOFF(TFrontQueueElement, iLink)); - return iBackQueue.CreateLocal(aSize, sizeof(T), aOwner); - } - -template -inline TInt RPriMsgQueue::Handle() const - { - return iBackQueue.Handle(); - } - -template -inline TInt RPriMsgQueue::Send(const T& aMsg) - { - ASSERT(aMsg); - return iBackQueue.Send(&aMsg, sizeof(T)); - } - -template -inline TInt RPriMsgQueue::Receive(T& aMsg) - { - TInt err = DrainBackQueue(); - if (KErrNone == err) - { - if (iFrontQueue.IsEmpty()) - { - return KErrUnderflow; - } - - TFrontQueueElement* pElement = iFrontQueue.First(); - __ASSERT_DEBUG(pElement != 0, - User::Panic(RPriMsgQueuePanicCategory, 1)); - pElement->iLink.Deque(); - aMsg = reinterpret_cast(const_cast(pElement->ipInfo)); - delete pElement; - } - - return err; - - } - -template -inline void RPriMsgQueue::Close() - { - - // Back queue should be empty by now, but just in case... - - // Here we expect a pointer type!... - T pElement; - while (iBackQueue.Receive(&pElement, sizeof(T)) == KErrNone) - { - delete pElement; - pElement = 0; - } - iBackQueue.Close(); - - // Front queue should be empty by now, but just in case... - TFrontQueueElement* pFQElement = 0; - while (!iFrontQueue.IsEmpty()) - { - pFQElement = iFrontQueue.First(); - __ASSERT_DEBUG(pFQElement != 0, - User::Panic(RPriMsgQueuePanicCategory, 1)); - pFQElement->iLink.Deque(); - pElement = reinterpret_cast(const_cast(pFQElement->ipInfo)); - delete pElement; - delete pFQElement; - } - - } - -template -inline void RPriMsgQueue::NotifyDataAvailable(TRequestStatus& aStatus) - { - iBackQueue.NotifyDataAvailable(aStatus); - } - -template -inline void RPriMsgQueue::CancelDataAvailable() - { - iBackQueue.CancelDataAvailable(); - } - -template -TInt RPriMsgQueue::DrainBackQueue() - { - - // Here we expect a pointer type!... - T pElement; - while (iBackQueue.Receive(&pElement, sizeof(T)) == KErrNone) - { - TFrontQueueElement* pElem = - new TFrontQueueElement(pElement, pElement->Priority()); - - // This double attempt at allocation is done in order to allow OOM - // tests to pass, as there is no way to report an error to the client - // if we lose a RegisterCallbacks message in an OOM situation - if (!pElem) - { - pElem = new TFrontQueueElement(pElement, pElement->Priority()); - } - - if (!pElem) - { - // This command will get lost, but at least it won't be leaked - delete pElement; - return KErrNoMemory; - } - iFrontQueue.Add(*pElem); - } - - return KErrNone; - - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/bwins/omxilcoreclient.def --- a/omxil/omxilcore/bwins/omxilcoreclient.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -EXPORTS - OMX_ComponentNameEnum @ 1 NONAME - OMX_Deinit @ 2 NONAME - OMX_FreeHandle @ 3 NONAME - OMX_GetComponentsOfRole @ 4 NONAME - OMX_GetContentPipe @ 5 NONAME - OMX_GetHandle @ 6 NONAME - OMX_GetRolesOfComponent @ 7 NONAME - OMX_Init @ 8 NONAME - OMX_SetupTunnel @ 9 NONAME - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/bwins/omxilcoreserver.def --- a/omxil/omxilcore/bwins/omxilcoreserver.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -EXPORTS - ?ComponentNameEnum@COmxILCore@@QAE?AW4OMX_ERRORTYPE@@PADKK@Z @ 1 NONAME ; enum OMX_ERRORTYPE COmxILCore::ComponentNameEnum(char *, unsigned long, unsigned long) - ?ConstructOmxILCoreServerName@@YAHAAVTDes16@@@Z @ 2 NONAME ABSENT ; int ConstructOmxILCoreServerName(class TDes16 &) - ?FreeHandle@COmxILCore@@QBE?AW4OMX_ERRORTYPE@@PAX@Z @ 3 NONAME ; enum OMX_ERRORTYPE COmxILCore::FreeHandle(void *) const - ?GetComponentsOfRole@COmxILCore@@QAE?AW4OMX_ERRORTYPE@@PADPAKPAPAE@Z @ 4 NONAME ; enum OMX_ERRORTYPE COmxILCore::GetComponentsOfRole(char *, unsigned long *, unsigned char * *) - ?GetContentPipe@COmxILCore@@QAE?AW4OMX_ERRORTYPE@@PAPAXPAD@Z @ 5 NONAME ; enum OMX_ERRORTYPE COmxILCore::GetContentPipe(void * *, char *) - ?GetRolesOfComponent@COmxILCore@@QAE?AW4OMX_ERRORTYPE@@PADPAKPAPAE@Z @ 6 NONAME ; enum OMX_ERRORTYPE COmxILCore::GetRolesOfComponent(char *, unsigned long *, unsigned char * *) - ?LoadComponent@COmxILCore@@QAE?AW4OMX_ERRORTYPE@@PADPAPAXPAXPAUOMX_CALLBACKTYPE@@@Z @ 7 NONAME ; enum OMX_ERRORTYPE COmxILCore::LoadComponent(char *, void * *, void *, struct OMX_CALLBACKTYPE *) - ?SetupTunnel@COmxILCore@@SA?AW4OMX_ERRORTYPE@@PAXK0K@Z @ 8 NONAME ; enum OMX_ERRORTYPE COmxILCore::SetupTunnel(void *, unsigned long, void *, unsigned long) - ?StartOmxILCoreServer@@YAHPAK@Z @ 9 NONAME ; int StartOmxILCoreServer(unsigned long *) - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/eabi/omxilcoreclient.def --- a/omxil/omxilcore/eabi/omxilcoreclient.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -EXPORTS - OMX_ComponentNameEnum @ 1 NONAME - OMX_Deinit @ 2 NONAME - OMX_FreeHandle @ 3 NONAME - OMX_GetComponentsOfRole @ 4 NONAME - OMX_GetContentPipe @ 5 NONAME - OMX_GetHandle @ 6 NONAME - OMX_GetRolesOfComponent @ 7 NONAME - OMX_Init @ 8 NONAME - OMX_SetupTunnel @ 9 NONAME - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/eabi/omxilcoreserver.def --- a/omxil/omxilcore/eabi/omxilcoreserver.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -EXPORTS - _Z20StartOmxILCoreServerPm @ 1 NONAME - _Z28ConstructOmxILCoreServerNameR6TDes16 @ 2 NONAME ABSENT - _ZN10COmxILCore11SetupTunnelEPvmS0_m @ 3 NONAME - _ZN10COmxILCore13LoadComponentEPcPPvS1_P16OMX_CALLBACKTYPE @ 4 NONAME - _ZN10COmxILCore14GetContentPipeEPPvPc @ 5 NONAME - _ZN10COmxILCore17ComponentNameEnumEPcmm @ 6 NONAME - _ZN10COmxILCore19GetComponentsOfRoleEPcPmPPh @ 7 NONAME - _ZN10COmxILCore19GetRolesOfComponentEPcPmPPh @ 8 NONAME - _ZNK10COmxILCore10FreeHandleEPv @ 9 NONAME - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/group/bld.inf --- a/omxil/omxilcore/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - - -PRJ_MMPFILES -// Core and Loader -../mmpfiles/omxilsymbianloaderif.mmp -../mmpfiles/omxilsymbianloader.mmp -../mmpfiles/omxilcomponentif.mmp -../mmpfiles/omxilsymbiancontentpipeif.mmp -../mmpfiles/omxilcoreserver.mmp -../mmpfiles/omxilcoreclient.mmp - - - - -PRJ_EXPORTS -// OMX IL Loader Interface - -// Symbian intend to push OMX_Loader.h to the OMX IL community. Hence export this -// file in mixed case. Its name is listed in filenamepolicyexclusions.txt. -../inc/loader/OMX_Loader.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/loader/OMX_Loader.h) - -../inc/core/omxilloaderif.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/core/omxilloaderif.h) -../inc/core/omxilloaderif.hrh /epoc32/include/openmax/il/core/omxilloaderif.hrh -../inc/core/omxilloaderif.inl SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/core/omxilloaderif.inl) -../inc/core/omxilsymbianloaderif.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/core/omxilsymbianloaderif.h) - -// OMX IL Component Interface -../inc/loader/omxilcomponentif.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/loader/omxilcomponentif.h) -../inc/loader/omxilcomponentif.hrh /epoc32/include/openmax/il/loader/omxilcomponentif.hrh -../inc/loader/omxilsymbiancomponentif.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/loader/omxilsymbiancomponentif.h) - -// Content Pipe Interface API -../inc/core/omxilcontentpipeif.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/core/omxilcontentpipeif.h) -../inc/core/omxilcontentpipeif.hrh /epoc32/include/openmax/il/core/omxilcontentpipeif.hrh -../inc/core/omxilsymbiancontentpipeif.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(openmax/il/core/omxilsymbiancontentpipeif.h) - - -// Romkit include files -omxilcore.iby /epoc32/rom/include/omxilcore.iby - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/group/multimedia_omx_il_core.mrp --- a/omxil/omxilcore/group/multimedia_omx_il_core.mrp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -# multimedia_omx_il_core.mrp -# -# Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "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: -# -# Description: -# - -component multimedia_omx_il_core - -source \sf\os\mm\omxil\omxilcore - -binary \sf\os\mm\omxil\omxilcore\group all - -exports \sf\os\mm\omxil\omxilcore\group - -notes_source \component_defs\release.src - -ipr E diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/group/omxilcore.iby --- a/omxil/omxilcore/group/omxilcore.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILCORE_IBY -#define OMXILCORE_IBY - -// OMX IL Core -file=ABI_DIR\BUILD_DIR\omxilcoreserver.dll System\Libs\omxilcoreserver.dll -file=ABI_DIR\BUILD_DIR\omxilcoreclient.dll System\Libs\omxilcoreclient.dll - -// OMX IL Loader -ECOM_PLUGIN(omxilsymbianloader.dll, omxilsymbianloader.rsc) - -#endif // OMXILCORE_IBY diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/core/omxilcontentpipeif.h --- a/omxil/omxilcore/inc/core/omxilcontentpipeif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// Keep it as prototype until the end of Diran to allow time for the Symbian Content Pipe OMX IL v1.x solution to be exercised, -// since we know this feature has recently been added to the standard and it is not yet in use. -// -// - -/** - @file - @publishedPartner - @prototype -*/ - -#ifndef OMXILCONTENTPIPEIF_H -#define OMXILCONTENTPIPEIF_H - -#include -#include -#include -#include - -/** - Bridge to allow content pipes to be loaded as an ECOM plugin. - Inheritance from this class allows it -*/ -class COmxILContentPipeIf : public CBase - { -public: - ~COmxILContentPipeIf(); - static COmxILContentPipeIf* CreateImplementationL(TUid aUid); - - /** - Gets a valid content pipe handle - - @return KErrNone if successful, otherwise another system-wide error codes - @param aContentPipe Returns a pointer to the content pipe handle - */ - virtual TInt GetHandle(OMX_HANDLETYPE* aContentPipe) = 0; - -private: - /** A 32-bit instance key returned by the ECom framework */ - TUid iDestructorKey; - }; - -/** - Destructor -*/ -inline COmxILContentPipeIf::~COmxILContentPipeIf() - { - REComSession::DestroyedImplementation(iDestructorKey); - } - -/** - This function loads the ECOM plug-in specified by the UID passed as argument and - return a newly created COmxContentPipeIf object - - @return Newly created COmxContentPipeIf object - @param aImplementationUid UID of the ECOM plug-in -*/ -inline COmxILContentPipeIf* COmxILContentPipeIf::CreateImplementationL(TUid aImplementationUid) - { - COmxILContentPipeIf* self = reinterpret_cast(REComSession::CreateImplementationL(aImplementationUid, _FOFF(COmxILContentPipeIf, iDestructorKey))); - return self; - } - -#endif // OMXILCONTENTPIPEIF_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/core/omxilcontentpipeif.hrh --- a/omxil/omxilcore/inc/core/omxilcontentpipeif.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// Keep it as prototype until the end of Diran to allow time for the Symbian Content Pipe OMX IL v1.x solution to be exercised, -// since we know this feature has recently been added to the standard and it is not yet in use. -// -// - -/** - @file - @publishedPartner - @prototype -*/ - -#ifndef OMXILCONTENTPIPEIF_HRH -#define OMXILCONTENTPIPEIF_HRH - -// OpenMax IL Content Pipe Interface - -/** - This Macro defines the interface UID of an OpenMax IL content pipe. - All content pipes ECOM plugins must use this UID in their resource files. -*/ -#define KUidOmxILContentPipeIf 0x102834BA - -#endif // OMXILCONTENTPIPEIF_HRH - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/core/omxilloaderif.h --- a/omxil/omxilcore/inc/core/omxilloaderif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @publishedPartner - @released -*/ - -#ifndef OMXILLOADERIF_H -#define OMXILLOADERIF_H - -#include -#include -#include - -/** -The COmxComponentLoaderIf class provides an interface to the Component Loader implementation. -Component Loaders shall be installed as ECOM plug-ins implementing the COmxComponentLoaderIf -to run under Symbian OMX IL Core. -Symbian OMX IL Core creates a list of all the ECOM implementations of this Component Loader -interface installed in the system. - -@see KUidOmxILLoaderInterface -*/ -class COmxComponentLoaderIf : public CBase - { -public: - inline virtual ~COmxComponentLoaderIf(); - inline static COmxComponentLoaderIf* CreateImplementationL(TUid aUid); - - /** - Gets the valid handle of the already populated OMX_LOADERTYPE structure. - - @return The loader's handle - */ - virtual OMX_HANDLETYPE Handle() = 0; - -private: - TUid iDestructorKey; - }; - -#include - -#endif /*OMXILLOADERIF_H*/ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/core/omxilloaderif.hrh --- a/omxil/omxilcore/inc/core/omxilloaderif.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @publishedPartner - @released -*/ - -#ifndef OMXILLOADERIF_HRH -#define OMXILLOADERIF_HRH - - -/** -Defines the numerical value for the Interface UID of an OpenMax IL Symbian Component Loader. -All component loader ECOM plugins must use this interface UID in the REGISTRY_INFO of -their resource files. -*/ -#define KUidOmxILLoaderInterface 0x1028349D - -#endif // OMXILLOADERIF_HRH diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/core/omxilloaderif.inl --- a/omxil/omxilcore/inc/core/omxilloaderif.inl Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// Destructor of this interface. -// -// - -inline COmxComponentLoaderIf::~COmxComponentLoaderIf() - { - REComSession::DestroyedImplementation(iDestructorKey); - } - -/** -Static method to load the particular ECOM plugin specified by the implementation UID passed as a parameter. -As part of the creation of this interface the actual OMX_LOADERTYPE structure should be allocated and populated. - -@param aUid - UID of the ECOM plug-in -@return The pointer to the newly created COmxComponentLoaderIf object - -@see KUidOmxILLoaderInterface -*/ -inline COmxComponentLoaderIf* COmxComponentLoaderIf::CreateImplementationL(TUid aUid) - { - COmxComponentLoaderIf* self = reinterpret_cast(REComSession::CreateImplementationL(aUid, _FOFF(COmxComponentLoaderIf, iDestructorKey))); - return self; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/core/omxilsymbiancontentpipeif.h --- a/omxil/omxilcore/inc/core/omxilsymbiancontentpipeif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// Keep it as prototype until the end of Diran to allow time for the Symbian Content Pipe OMX IL v1.x solution to be exercised, -// since we know this feature has recently been added to the standard and it is not yet in use. -// -// - -/** - @file - @publishedPartner - @prototype -*/ - -#ifndef OMXILSYMBIANCONTENTPIPEIF_H -#define OMXILSYMBIANCONTENTPIPEIF_H - -#include - -/** -Bridge to allow content pipes to be loaded as ECOM plugins. - -@publishedPartner -*/ -NONSHARABLE_CLASS(COmxILSymbianContentPipeIf) : private COmxILContentPipeIf - { -public: - static COmxILSymbianContentPipeIf* NewL(); - ~COmxILSymbianContentPipeIf(); - TInt GetHandle(OMX_HANDLETYPE* aContentPipe); - -private: - COmxILSymbianContentPipeIf(); - -private: - /** A handle to the CP_PIPETYPE structure */ - CP_PIPETYPE* iHandle; - }; - -/** - This Macro defines the ECOM plug-in entry point and must be used by the content pipe. - - In order to allow a content pipe to be loaded as an ECOM plugin you must: - - Link the content pipe library against this component - - Declare the OMXIL_CONTENTPIPE_ECOM_ENTRYPOINT macro with the content pipe UID - - Implement the function "TInt ContentPipeInit(OMX_HANDLETYPE* aContentPipe)", - the content pipe entry point. This function initialises the CP_PIPETYPE structure - and returns it in its first argument. aContentPipe = Returns a pointer to the - content pipe handle. Must return KErrNone if successful, otherwise another - system-wide error code. - - Implement the function "TInt ContentPipeDeInit(OMX_HANDLETYPE aContentPipe)", - the content pipe exit point. This function deinitialises the CP_PIPETYPE structure - passed as the first argument. aContentPipe = A pointer to the content pipe handle - that will be deinitialised. Must return KErrNone if successful, otherwise another - system-wide error code. - - @param aUid UID of the ECOM plug-in - @see ContentPipeInit - @see ContentPipeDeInit -*/ -#define OMXIL_CONTENTPIPE_ECOM_ENTRYPOINT(aUid) \ -\ -const TImplementationProxy ImplementationTable[] = \ - {\ - IMPLEMENTATION_PROXY_ENTRY((aUid), COmxILSymbianContentPipeIf::NewL),\ - };\ -\ -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)\ - {\ - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);\ - return ImplementationTable;\ - } - -/** - Although this is tagged as InternalAll it is effectively PublishedPartner, however - since it is not exported we are unable to tag it as such. - Any change to this function signature will be a PublishedPartner break. - - Content pipe entry point - This function initialises the CP_PIPETYPE structure and returns it in its first argument - - @return KErrNone if successful, otherwise another system-wide error code - @param aContentPipe Returns a pointer to the content pipe handle - - @publishedPartner -*/ -TInt ContentPipeInit(OMX_HANDLETYPE* aContentPipe); - -/** - Although this is tagged as InternalAll it is effectively PublishedPartner, however - since it is not exported we are unable to tag it as such. - Any change to this function signature will be a PublishedPartner break. - - Content pipe exit point - This function deinitialises the CP_PIPETYPE structure passed as the first argument - - @return KErrNone if successful, otherwise another system-wide error code - @param aContentPipe A pointer to the content pipe handle that will be deinitialised - - @publishedPartner -*/ -TInt ContentPipeDeInit(OMX_HANDLETYPE aContentPipe); - -#endif // OMXILSYMBIANCONTENTPIPEIF_H \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/core/omxilsymbianloaderif.h --- a/omxil/omxilcore/inc/core/omxilsymbianloaderif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @publishedPartner - @released -*/ - -#ifndef OMXILSYMBIANLOADERIF_H -#define OMXILSYMBIANLOADERIF_H - -#include - -/** -COmxSymbianLoaderIf is the Symbian implementation of the COmxComponentLoaderIf. -The COmxComponentLoaderIf class provides an interface to the Component Loader implementation. -Component Loaders shall be installed as ECOM plug-ins implementing the COmxComponentLoaderIf -to run under Symbian OMX IL Core. - -@publishedPartner -*/ -NONSHARABLE_CLASS( COmxSymbianLoaderIf ) : public COmxComponentLoaderIf - { -public: - static COmxSymbianLoaderIf* NewL(); - ~COmxSymbianLoaderIf(); - - // from COmxComponentLoaderIf - OMX_HANDLETYPE Handle(); - -private: - void ConstructL(); - COmxSymbianLoaderIf(); - -private: - OMX_LOADERTYPE* iHandle; - }; - - -/** -Macro to facilitate the entry in the ECOM's ImplementationTable of any new Component Loader ECOM implementation UID. - -To make easier the task of exposing Component Loaders as ECOM plug-ins, Symbian offers a static -library that facilitates the mapping from the ECOM COmxComponentLoaderIf interface to non-ECOM -implementations. -The steps to wrap up a Component Loader as an ECOM plugin are: -- Provide a .mmp project definition file specifying plugin as Targetype, -- Link the Component Loader implementation against the omxilsymbianloaderif.lib static library. -- Provide a .rss file with interface_uid = KUidOmxILLoaderInterface. -- Declare the OMX_LOADER_ECOM_ENTRYPOINT macro with the particular implementation UID of the Loader. -- Implement the function "OMX_ERRORTYPE OMX_LoaderSetup(OMX_HANDLETYPE aLoader)". This function -is the entry point routine that Component Loaders have to implement to populate the actual structure -represented by the handle passed as argument. aLoader = The handle to the OMX_LOADERTYPE structure -to be populated. Must return an OpenMAX defined error, OMX_ErrorNone if successful. - -@param aUid UID of the ECOM plug-in -@see KUidOmxILLoaderInterface -@see OMX_LoaderSetup() -*/ -#define OMX_LOADER_ECOM_ENTRYPOINT(aUid) \ - \ - const TImplementationProxy ImplementationTable[] = \ - {\ - IMPLEMENTATION_PROXY_ENTRY((aUid), COmxSymbianLoaderIf::NewL),\ - };\ - \ - EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)\ - {\ - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);\ - return ImplementationTable;\ - } - -/** -Although this is tagged as InternalAll it is effectively PublishedPartner, however since it is not exported -we are unable to tag it as such. -Any change to this function signature will be a PublishedPartner break. - -Entry point routine that Component Loaders have to implement to populate the actual -structure represented by the handle passed as argument. -@param aLoader - The handle to the OMX_LOADERTYPE structure to be populated. -@return An OpenMAX defined error. OMX_ErrorNone if successful. - -@publishedPartner -*/ -OMX_ERRORTYPE OMX_LoaderSetup(OMX_HANDLETYPE aLoader); - - -#endif /*OMXILSYMBIANLOADERIF_H*/ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/loader/OMX_Loader.h --- a/omxil/omxilcore/inc/loader/OMX_Loader.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,208 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @publishedPartner - @released -*/ - -#ifndef OMX_LOADER_H -#define OMX_LOADER_H - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#include - -struct OMX_LOADERTYPE - { - /** The InitializeComponentLoader method is used to initialize the loader. - It shall be the first call made into the loader and it should only be executed once - until UnInitializeComponentLoader call is made. - - @return OMX_ERRORTYPE - OMX_ErrorNone if the function is executed successfully, - OMX_ErrorInsufficientResources if the component loader fails to construct due to an - out of memory issue, OMX_ErrorUndefined or any other appropriate OMX error otherwise. - */ - OMX_ERRORTYPE (*InitializeComponentLoader)(OMX_LOADERTYPE *loader); - - /** The UnInitializeComponentLoader method is used to uninitialize the loader. - It shall be the last call made into the loader and should be called after all - OpenMAX-related resources have been released. - - @return OMX_ERRORTYPE - It returns OMX_ErrorNone if the function is executed successfully - or any other appropriate OMX error otherwise. - */ - OMX_ERRORTYPE (*UnInitializeComponentLoader)(OMX_LOADERTYPE *loader); - - /** The LoadComponent method will locate the component specified by the - component name given, load that component into memory and then invoke - the component's methods to create an instance of the component. - - @param [out] pHandle - pointer to an OMX_HANDLETYPE pointer to be filled in by this method. - @param [in] cComponentName - pointer to a null terminated string with the component name. The - names of the components are strings less than 127 bytes in length - plus the trailing null for a maximum size of 128 bytes. An example - of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are - assigned by the vendor, but shall start with "OMX." and then have - the Vendor designation next. - @param [in] pAppData - pointer to an application defined value that will be returned - during callbacks so that the application can identify the source - of the callback. - @param [in] pCallBacks - pointer to a OMX_CALLBACKTYPE structure that will be passed to the - component to initialize it with. - @return OMX_ERRORTYPE - It returns OMX_ErrorNone if the function is executed successfully - or any other appropriate OMX error otherwise. - */ - OMX_ERRORTYPE (*LoadComponent)( OMX_LOADERTYPE *loader, - OMX_OUT OMX_HANDLETYPE* pHandle, - OMX_IN OMX_STRING cComponentName, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_CALLBACKTYPE* pCallBacks); - - - /** The UnloadComponent method will free a handle allocated by the LoadComponent - method. - - @param [in] hComponent - Handle of the component to be accessed. This is the component - handle returned by the call to the GetHandle function. - @return OMX_ERRORTYPE - It returns OMX_ErrorNone if the function is executed successfully - OMX_ErrorComponentNotFound if the component is not found in this loader; - or any other appropriate OMX error otherwise. - */ - OMX_ERRORTYPE (*UnloadComponent)( OMX_LOADERTYPE *loader, - OMX_HANDLETYPE hComponent); - - /** The ComponentNameEnum method will enumerate through all the names of - recognised valid components in the system. This function is provided - as a means to detect all the components in the system run-time. There is - no strict ordering to the enumeration order of component names, although - each name will only be enumerated once. If the loader supports run-time - installation of new components, it is only requried to detect newly - installed components when the first call to enumerate component names - is made (i.e. when nIndex is 0x0). - - @param [out] cComponentName - pointer to a null terminated string with the component name. The - names of the components are strings less than 127 bytes in length - plus the trailing null for a maximum size of 128 bytes. An example - of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are - assigned by the vendor, but shall start with "OMX." and then have - the Vendor designation next. - @param [in] nNameLength - number of characters in the cComponentName string. With all - component name strings restricted to less than 128 characters - (including the trailing null) it is recomended that the caller - provide a input string for the cComponentName of 128 characters. - @param [in] nIndex - number containing the enumeration index for the component. - Multiple calls to OMX_ComponentNameEnum with increasing values - of nIndex will enumerate through the component names in the - system until OMX_ErrorNoMore is returned. The value of nIndex - is 0 to (N-1), where N is the number of valid installed components - in the system. - @return OMX_ERRORTYPE - If the command successfully executes, the return code will be - OMX_ErrorNone. When the value of nIndex exceeds the number of - components in the system minus 1, OMX_ErrorNoMore will be - returned. Otherwise the appropriate OMX error will be returned. - */ - OMX_ERRORTYPE (*ComponentNameEnum)( OMX_LOADERTYPE *loader, - OMX_OUT OMX_STRING cComponentName, - OMX_IN OMX_U32 nNameLength, - OMX_IN OMX_U32 nIndex); - - /** The GetRolesOfComponent method will return the number of roles supported by the given - component and (if the roles field is non-NULL) the names of those roles. The call will fail if - an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the - client should: - * first call this function with the roles field NULL to determine the number of role names - * second call this function with the roles field pointing to an array of names allocated - according to the number returned by the first call. - - @param [in] compName - This is the name of the component being queried about. - @param [inout] pNumRoles - This is used both as input and output. - - If roles is NULL, the input is ignored and the output specifies how many roles the component supports. - - If compNames is not NULL, on input it bounds the size of the input structure and - on output, it specifies the number of roles string names listed within the roles parameter. - @param [out] roles - If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings - which accepts a list of the names of all standard components roles implemented on the - specified component name. - @return OMX_ERRORTYPE - It returns OMX_ErrorNone if the function is executed successfully - or any other appropriate OMX error otherwise. - */ - OMX_ERRORTYPE (*GetRolesOfComponent)( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING compName, - OMX_INOUT OMX_U32 *pNumRoles, - OMX_OUT OMX_U8 **roles); - - /** The GetComponentsOfRole method will return the number of components that support the given - role and (if the compNames field is non-NULL) the names of those components. The call will fail if - an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the - client should: - * first call this function with the compNames field NULL to determine the number of component names - * second call this function with the compNames field pointing to an array of names allocated - according to the number returned by the first call. - - @param [in] role - This is generic standard component name consisting only of component class - name and the type within that class (e.g. 'audio_decoder.aac'). - @param [inout] pNumComps - This is used both as input and output. - - If compNames is NULL, the input is ignored and the output specifies how many components support - the given role. - - If compNames is not NULL, on input it bounds the size of the input structure and - on output, it specifies the number of components string names listed within the compNames parameter. - @param [inout] compNames - If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings which accepts - a list of the names of all physical components that implement the specified standard component name. - Each name is NULL terminated. numComps indicates the number of names. - @return OMX_ERRORTYPE - It returns OMX_ErrorNone if the function is executed successfully - or any other appropriate OMX error otherwise. - */ - OMX_ERRORTYPE (*GetComponentsOfRole)( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING role, - OMX_INOUT OMX_U32 *pNumComps, - OMX_INOUT OMX_U8 **compNames); - OMX_PTR pLoaderPrivate; - }; - -#define OMX_MAX_ROLESBUFFER_SIZE 256 - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /*OMX_LOADER_H*/ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/loader/omxilcomponentif.h --- a/omxil/omxilcore/inc/loader/omxilcomponentif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @publishedPartner - @released -*/ - -#ifndef OMXILCOMPONENTIF_H -#define OMXILCOMPONENTIF_H - -#include -#include -#include -#include - -/** -The COmxILComponentIf class provides an interface to the OMX IL Component implementations. - -Symbian OS provides a Symbian Component Loader that manages OMX IL Components that are -installed as ECOM plug-ins implementing the COmxILComponentIf. The Symbian Component Loader -creates a list of all the ECOM implementations of this component interface (identified by -the KUidOmxILSymbianComponentIf UID) installed in the system. - -@see KUidOmxILSymbianComponentIf -*/ -class COmxILComponentIf : public CBase - { -public: - ~COmxILComponentIf(); - static COmxILComponentIf* CreateImplementationL(TUid aUid); - - /** - Gets the valid handle of the already populated OMX_COMPONENTTYPE structure. - - @return The component's handle - */ - virtual OMX_HANDLETYPE Handle() = 0; - -private: - - TUid iDestructorKey; - }; - -/** -Static method to load the particular ECOM plugin specified by the implementation UID passed as a parameter. -As part of the creation of this interface the actual OMX_COMPONENTTYPE structure should be allocated and populated. - -@param aUid - UID of the ECOM plug-in -@return The pointer to the newly created COmxILComponentIf object - -@see KUidOmxILSymbianComponentIf -*/ -inline COmxILComponentIf* COmxILComponentIf::CreateImplementationL(TUid aImplementationUid) - { - COmxILComponentIf* self = reinterpret_cast( REComSession::CreateImplementationL( aImplementationUid, _FOFF(COmxILComponentIf, iDestructorKey))); - return self; - } - -/** -Destructor of this interface. -*/ -inline COmxILComponentIf::~COmxILComponentIf() - { - REComSession::DestroyedImplementation(iDestructorKey); - } -#endif // OMXILCOMPONENTIF_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/loader/omxilcomponentif.hrh --- a/omxil/omxilcore/inc/loader/omxilcomponentif.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @publishedPartner - @released -*/ - -#ifndef OMXILCOMPONENTIF_HRH -#define OMXILCOMPONENTIF_HRH - -/** -Defines the numerical value for the Interface UID of an OpenMax IL Symbian Component. -All components to be loaded by the Symbian Component Loader should be ECOM plugins and must use -this interface UID in the REGISTRY_INFO of their resource files. -*/ -#define KUidOmxILSymbianComponentIf 0x10283497 - -#endif // OMXILCOMPONENTIF_HRH diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/inc/loader/omxilsymbiancomponentif.h --- a/omxil/omxilcore/inc/loader/omxilsymbiancomponentif.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @publishedPartner - @released -*/ - -#ifndef OMXILSYMBIANCOMPONENTIF_H -#define OMXILSYMBIANCOMPONENTIF_H - -#include - -/** -COmxILSymbianComponentIf is the Symbian implementation of the COmxILComponentIf. -The COmxILComponentIf class provides an interface that the Symbian Component Loader uses to access -Symbian OMX IL Components . - - -@publishedPartner - - -*/ -NONSHARABLE_CLASS(COmxILSymbianComponentIf) : private COmxILComponentIf - { -public: - static COmxILSymbianComponentIf* NewL(); - ~COmxILSymbianComponentIf(); - - // from COmxILComponentIf - OMX_HANDLETYPE Handle(); - -private: - COmxILSymbianComponentIf(); - void ConstructL(); - -private: - OMX_COMPONENTTYPE* ipHandle; - }; - -/** -Macro to facilitate the entry in the ECOM's ImplementationTable of any new Component ECOM implementation UID. - -To make easier the task of exposing OMX IL Components as ECOM plug-ins, Symbian offers a static -library that facilitates the mapping from the ECOM COmxILComponentIf interface to non-ECOM -implementations. -The steps to wrap up a Component as an ECOM plugin are: -- Provide a .mmp project definition file specifying plugin as Targetype, -- Link the Component implementation against the omxilcomponentif.lib static library. -- Provide a .rss file with interface_uid = KUidOmxILSymbianComponentIf -- Declare the OMXIL_COMPONENT_ECOM_ENTRYPOINT macro with the particular implementation UID of the Component. -- Implement the function "OMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE aComponent)". This function -is the entry point routine that OMX IL Components have to implement to populate the actual structure -represented by the handle passed as argument. aComponent = The handle to the OMX_COMPONENTTYPE -structure to be populated. Must return an OpenMAX defined error, OMX_ErrorNone if successful. - -@param aUid UID of the ECOM plug-in -@see KUidOmxILSymbianComponentIf -@see OMX_ComponentInit() -@see COmxComponentLoaderIf -*/ -#define OMXIL_COMPONENT_ECOM_ENTRYPOINT(aUid) \ -\ -const TImplementationProxy ImplementationTable[] = \ - {\ - IMPLEMENTATION_PROXY_ENTRY((aUid), COmxILSymbianComponentIf::NewL),\ - };\ -\ -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)\ - {\ - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);\ - return ImplementationTable;\ - } - -/** -Although this is tagged as InternalAll it is effectively PublishedPartner, however -since it is not exported we are unable to tag it as such. -Any change to this function signature will be a PublishedPartner break. - -Entry point routine that OMX IL Components have to implement to populate the actual -structure represented by the handle passed as argument. -@param aComponent - The handle to the OMX_COMPONENTTYPE structure to be populated. -@return An OpenMAX defined error. OMX_ErrorNone if successful. - -@publishedPartner -*/ -OMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE aComponent); - - -#endif //OMXILSYMBIANCOMPONENTIF_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/mmpfiles/omxilcomponentif.mmp --- a/omxil/omxilcore/mmpfiles/omxilcomponentif.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// @file -// @SYMPurpose omxilcomponentif.lib Library used by the OMX Core to -// allow an OMX component to be loaded as an ECom plugin. -// -// - -TARGET omxilcomponentif.lib -TARGETTYPE LIB -UID 0x10285C04 -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -SOURCEPATH ../src/loader -SOURCE omxilsymbiancomponentif.cpp - - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/mmpfiles/omxilcoreclient.mmp --- a/omxil/omxilcore/mmpfiles/omxilcoreclient.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/core/omxiluids.hrh" - -TARGET omxilcoreclient.dll -TARGETTYPE dll -UID KSharedLibraryUidDefine KUidOmxILCoreClientDll - -VENDORID 0x70000001 -CAPABILITY ALL -TCB - -MACRO __OMX_EXPORTS - -SOURCEPATH ../src/omxilcoreclient -SOURCE omxilcoreclientsession.cpp - -USERINCLUDE ../src/omxilcoreserver -USERINCLUDE ../src/core - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -LIBRARY euser.lib -LIBRARY estor.lib -LIBRARY omxilcoreserver.lib - -#ifdef WINS -LIBRARY ewsd.lib // For Process Local Storage on Emulator only -#else -EPOCALLOWDLLDATA -#endif - - -// MACRO _OMXIL_CORECLIENT_DEBUG_TRACING_ON - -DEFFILE omxilcoreclient.def -NOSTRICTDEF - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/mmpfiles/omxilcoreserver.mmp --- a/omxil/omxilcore/mmpfiles/omxilcoreserver.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/core/omxiluids.hrh" - -TARGET omxilcoreserver.dll -TARGETTYPE dll -UID 0x1000008D KUidOmxILCoreServerDll - -VENDORID 0x70000001 -CAPABILITY ALL -TCB - -SOURCEPATH ../src/omxilcoreserver -SOURCE omxilcoreserver.cpp -SOURCE omxilcoreserversession.cpp - -SOURCEPATH ../src/core -SOURCE omxilcore.cpp - -USERINCLUDE ../src/core - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -OS_LAYER_ESTLIB_SYSTEMINCLUDE - - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY inetprotutil.lib -LIBRARY estlib.lib - -// MACRO _OMXIL_CORESERVER_DEBUG_TRACING_ON - -DEFFILE omxilcoreserver.def -NOSTRICTDEF - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/mmpfiles/omxilsymbiancontentpipeif.mmp --- a/omxil/omxilcore/mmpfiles/omxilsymbiancontentpipeif.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/core/omxiluids.hrh" - -TARGET omxilsymbiancontentpipeif.lib -TARGETTYPE LIB -UID KUidOmxILSymbianContentPipeIfLib -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -SOURCEPATH ../src/core -SOURCE omxilsymbiancontentpipeif.cpp - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/mmpfiles/omxilsymbianloader.mmp --- a/omxil/omxilcore/mmpfiles/omxilsymbianloader.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/core/omxiluids.hrh" - -TARGET omxilsymbianloader.dll -CAPABILITY ALL -TCB -TARGETTYPE PLUGIN -UID KUidECOM KUidOmxILLoaderDll -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN -OS_LAYER_ESTLIB_SYSTEMINCLUDE - -SOURCEPATH ../src/loader -SOURCE omxilsymbiancomponentloader.cpp -RESOURCE omxilsymbianloader.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY estlib.lib - -// MACRO _OMXIL_SYMBIANLOADER_DEBUG_TRACING_ON - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/mmpfiles/omxilsymbianloaderif.mmp --- a/omxil/omxilcore/mmpfiles/omxilsymbianloaderif.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/core/omxiluids.hrh" - -TARGET omxilsymbianloaderif.lib -TARGETTYPE LIB -UID KUidOmxILLoaderLib -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -SOURCEPATH ../src/core -SOURCE omxilsymbianloaderif.cpp - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/core/log.h --- a/omxil/omxilcore/src/core/log.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef __SWI_LOG_H__ -#define __SWI_LOG_H__ - -#include - -class TTruncateOverflowHandler16 : public TDes16Overflow - { - public: - virtual void Overflow( TDes16& aDes ); - }; - -inline void TTruncateOverflowHandler16::Overflow( TDes16& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -class TTruncateOverflowHandler8 : public TDes8Overflow - { - public: - virtual void Overflow( TDes8& aDes ); - }; - -inline void TTruncateOverflowHandler8::Overflow( TDes8& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -namespace DSD -{ - -#ifdef _DEBUG - -#ifdef _OMXIL_CORESERVER_DEBUG_TRACING_ON - -#define DEBUG_PRINTF(a) {DSD::DebugPrintf(__LINE__, __FILE__, a);} -#define DEBUG_PRINTF2(a, b) {DSD::DebugPrintf(__LINE__, __FILE__, a, b);} -#define DEBUG_PRINTF3(a, b, c) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c);} -#define DEBUG_PRINTF4(a, b, c, d) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d);} -#define DEBUG_PRINTF5(a, b, c, d, e) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d, e);} - -#define DEBUG_CODE_SECTION(a) TRAP_IGNORE({ a; }) - -// UTF-8 overload of the DebufPrintf method. Should be used by default, -// since it's cheaper both in CPU cycles and stack space. - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler8 overflowHandler8; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<1024> buffer; - _LIT8(KSwiLogPrefix, "[ core ] "); - _LIT8(KSwiLineFileFormat, "TID[%d] : [%s:%d] -- "); - buffer.Append(KSwiLogPrefix); - RThread thread; - TUint threadId = thread.Id(); - thread.Close(); - RProcess proc; - TFileName fName = proc.FileName(); - proc.Close(); - buffer.AppendFormat(KSwiLineFileFormat, threadId, aFile, aLine); - buffer.AppendFormatList(aFormat, list ,&overflowHandler8 ); - buffer.Append(_L8("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } - -// Unicode DebufPrintf overload - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler16 overflowHandler16; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<256> header; - _LIT8(KSwiLogPrefix, "[ core ] "); - _LIT8(KSwiLineFileFormat, "%Ld Line: % 5d, File: %s -- "); - header.Append(KSwiLogPrefix); - header.AppendFormat(KSwiLineFileFormat, now.Int64(), aLine, aFile); - - TBuf<1024> buffer; - buffer.Copy(header); - buffer.AppendFormatList(aFormat, list ,&overflowHandler16); - buffer.Append(_L("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - - -} // namespace DSD - -#endif // __SWI_LOG_H__ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/core/omxilcore.cpp --- a/omxil/omxilcore/src/core/omxilcore.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,894 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// -#include -#include -#include -#include -#include -#include - -#include "log.h" -#include "omxilcore.h" -#include "omxiluids.hrh" -#include -#include -#include -#include - -#ifdef _DEBUG -// This used only in debug build, for now... -_LIT(KOmxILCorePanic, "OmxILCore Panic"); -#endif - -const TInt KLoadersGranularity = 1; -const TInt KContentPipesGranularity = 1; - -const TUint8 COmxILCore::iSpecVersionMajor; -const TUint8 COmxILCore::iSpecVersionMinor; -const TUint8 COmxILCore::iSpecVersionRevision; -const TUint8 COmxILCore::iSpecVersionStep; - - -COmxILCore::COmxILCore() - : - iLoaders(KLoadersGranularity), - iContentPipes(KContentPipesGranularity) - { - DEBUG_PRINTF(_L8("COmxILCore::COmxILCore")); - } - -COmxILCore::~COmxILCore() - { - DEBUG_PRINTF(_L8("COmxILCore::~COmxILCore")); - } - -OMX_ERRORTYPE COmxILCore::ListLoaders() - { - DEBUG_PRINTF(_L8("COmxILCore::ListLoaders")); - - RImplInfoPtrArray ecomArray; - OMX_ERRORTYPE omxError = OMX_ErrorNone; - TInt error = KErrNone; - TRAP(error, REComSession::ListImplementationsL( - TUid::Uid(KUidOmxILLoaderInterface),ecomArray)); - - if(KErrNone == error) - { - const TInt ecomCount = ecomArray.Count(); - const TInt loadersCount = iLoaders.Count(); - - // We only consider a situation where loader plugins are added to the - // system... - if(ecomCount > loadersCount) - { - TOmxLoaderInfo loader; - CImplementationInformation* info; - TInt indexLoaders; - for(TInt index=0; indexImplementationUid()!= - iLoaders[indexLoaders].iUid); - ++indexLoaders ) - {} - - if(indexLoaders>=loadersCount) - { - loader.iUid = info->ImplementationUid(); - loader.iLoader = NULL; - - // We load loader plugins here, instead of "on-demand"... - omxError = LoadAndInitLoader(loader.iUid, - loader.iLoader); - if (OMX_ErrorNone == omxError) - { - error = iLoaders.Append(loader); - if(KErrNone != error) - { - __ASSERT_DEBUG(loader.iLoader != NULL, - User::Panic(KOmxILCorePanic, 1)); - OMX_LOADERTYPE* omx_loader = - reinterpret_cast(loader.iLoader->Handle()); - __ASSERT_DEBUG(omx_loader != NULL, - User::Panic(KOmxILCorePanic, 1)); - omx_loader->UnInitializeComponentLoader(omx_loader); - delete loader.iLoader; - break; - } - } - else - { - DEBUG_PRINTF3(_L8("COmxILCore::ListLoaders : Loader [%d] returned OMX Error [%d]"), index, omxError); - // Check whether there's any point on continuing with - // the next loader... - if (OMX_ErrorInsufficientResources == omxError) - { - error=KErrNoMemory; - break; - } - else - { - DEBUG_PRINTF3(_L8("COmxILCore::ListLoaders : Loader [%d] returned OMX Error [%d] Ignoring error code as it's no considered critical!"), index, omxError); - omxError=OMX_ErrorNone; //ignore any non-critical errors - } - } - } - } - } - - } - - if (KErrNone != error) - { - if (KErrNoMemory == error) - { - omxError = OMX_ErrorInsufficientResources; - } - else - { - // We should return an OMX error that at least is allowed by the - // spec during OMX_Init() - omxError = OMX_ErrorTimeout; - } - } - - ecomArray.ResetAndDestroy(); - return omxError; - } - -TBool VerifyComponentName(const OMX_STRING aComponentName) - { - const TInt KComponentNamePrefixLen = 4; - return strncmp(aComponentName,"OMX.", KComponentNamePrefixLen) == 0; - } -EXPORT_C OMX_ERRORTYPE COmxILCore::LoadComponent( - const OMX_STRING aComponentName, - OMX_HANDLETYPE* aHandle, - OMX_PTR aAppData, - OMX_CALLBACKTYPE* aCallBacks) - { - DEBUG_PRINTF(_L8("COmxILCore::LoadComponent")); - - if(!aHandle || !aComponentName) - { - return OMX_ErrorBadParameter; - } - - if( !VerifyComponentName(aComponentName)) - { - return OMX_ErrorInvalidComponentName; - } - - OMX_ERRORTYPE error = OMX_ErrorComponentNotFound; - OMX_LOADERTYPE* loader; - - const TInt count = iLoaders.Count(); - for( TInt index=0; index( - iLoaders[index].iLoader->Handle()); - __ASSERT_DEBUG(loader != NULL, User::Panic(KOmxILCorePanic, 1)); - error = loader->LoadComponent(loader, aHandle, - aComponentName, - aAppData, aCallBacks); - // if loading the component succeeded we can return else we disregard - // the error on this loader and search for the component with the next - // loader. If this is the last loader the error will be returned at - // the bottom of the function. We return also if there are no resoruces - // available... - if( OMX_ErrorNone == error || OMX_ErrorInsufficientResources == error) - { - return error; - } - } - return error; - } - -OMX_ERRORTYPE COmxILCore::LoadAndInitLoader( - const TUid& aUid, COmxComponentLoaderIf*& aLoader) - { - DEBUG_PRINTF(_L8("COmxILCore::LoadAndInitLoader")); - - COmxComponentLoaderIf* loader = NULL; - - TRAPD(err, loader = COmxComponentLoaderIf::CreateImplementationL(aUid)); - if(err != KErrNone) - { - if (err == KErrNoMemory) - { - return OMX_ErrorInsufficientResources; - } - return OMX_ErrorInvalidComponent; - } - - OMX_HANDLETYPE handle = loader->Handle(); - if (!handle) - { - delete loader; - return OMX_ErrorUndefined; - } - - OMX_LOADERTYPE* omx_loader = reinterpret_cast(handle); - __ASSERT_DEBUG(omx_loader != NULL, User::Panic(KOmxILCorePanic, 1)); - OMX_ERRORTYPE error = omx_loader->InitializeComponentLoader(omx_loader); - if(error != OMX_ErrorNone) - { - // We should call UnInitializeComponentLoader before deletion, just in - // case...returned error is irrelevant now... - omx_loader->UnInitializeComponentLoader(omx_loader); - delete loader; - return error; - } - - aLoader = loader; - return error; - } - -void COmxILCore::DeinitCore() - { - DEBUG_PRINTF(_L8("COmxILCore::DeinitCore")); - - TInt index; - COmxComponentLoaderIf* loader; - - const TInt KLoaderCount = iLoaders.Count(); - for( index = 0; indexHandle(); - OMX_LOADERTYPE* omx_loader = - reinterpret_cast(handle); - __ASSERT_DEBUG(omx_loader != NULL, - User::Panic(KOmxILCorePanic, 1)); - OMX_ERRORTYPE error = - omx_loader->UnInitializeComponentLoader(omx_loader); - delete loader; - } - } - iLoaders.Close(); - iContentPipes.ResetAndDestroy(); - } - - -EXPORT_C OMX_ERRORTYPE COmxILCore::ComponentNameEnum( - OMX_STRING aComponentName, - OMX_U32 aNameLength, - const OMX_U32 aIndex) - { - DEBUG_PRINTF(_L8("COmxILCore::ComponentNameEnum")); - - if( aNameLength == 0 || aComponentName == NULL ) - { - return OMX_ErrorBadParameter; - } - - const TInt KLoadersCount = iLoaders.Count(); - if (KLoadersCount == 0) - { - // There are no loaders in the system... - DEBUG_PRINTF2(_L8("COmxILCore::ComponentNameEnum (index = %d) : No loaders present..."), aIndex); - return OMX_ErrorNoMore; - } - - OMX_ERRORTYPE error = OMX_ErrorNone; - const TInt KIndexForPopulateList = 0; - // if aIndex is 0 (i.e. KIndexForPopulateList) the redescovery of - // components is triggered in the client library - if( aIndex == KIndexForPopulateList ) - { - TBool found=EFalse; - char tempComponentName[OMX_MAX_STRINGNAME_SIZE]; - - // each loader should rediscover its components - for( TInt index=0; index < KLoadersCount; ++index ) - { - OMX_LOADERTYPE* loader = reinterpret_cast( - iLoaders[index].iLoader->Handle()); - __ASSERT_DEBUG(loader != NULL, User::Panic(KOmxILCorePanic, 1)); - - // Index 0 means two things according to the standard: core (through its loader(s)) has to discover components (populate component list) - // and also the component name at 0 index has to be returned - // As there are multiple loaders present and there is no information which loader has any components - // we must go through all loaders inputting 0 index and see which loaders returns anything at index 0 first - // Once we've found the 0 index we can just ignore any component names returned from subsequent calls to loaders - error = loader->ComponentNameEnum(loader, - tempComponentName, - aNameLength,aIndex); - if(OMX_ErrorNone==error) - { - if(!found)//component hasn't been found yet - { - strcpy(aComponentName, tempComponentName); - found=ETrue; //now it's found - } - } - else - { - // We must continue with the next loader if the current loader - // has no components... or if there is some other error - // condition in the current loader... - if( OMX_ErrorNoMore == error ) - { - DEBUG_PRINTF2(_L8("COmxILCore::ComponentNameEnum (index = 0) : Loader [%d] has 0 components..."), index); - } - else - { - // In case the loader returned with some other error condition, - // we log the situation... - DEBUG_PRINTF3(_L8("COmxILCore::ComponentNameEnum (index = 0) : Loader [%d] returned OMX error [%d].. ignoring loader..."), index, error); - // Check whether there's any point on continuing with the - // next loader... - if (OMX_ErrorInsufficientResources == error) - { - return OMX_ErrorInsufficientResources; - } - } - } - } - error= (found ? OMX_ErrorNone : OMX_ErrorNoMore); - } - else - { - RArray componentCountPerLoader; - TInt err=KErrNone; - - //init componentCountPerLoader array with -1; this array tells how many components a particular loader has - for(TInt loaderIndex=0; loaderIndex < KLoadersCount; ++loaderIndex) - { - //first check if loader is available - if( iLoaders[loaderIndex].iLoader == NULL ) - { - // We are considering here that ComponentNameEnum with index = - // 0 must have been called previously... the spec is not - // completely clear here...We return ErrorNotReady although - // this is not a legal return code for this IL Core function... - componentCountPerLoader.Close(); - return OMX_ErrorNotReady; - } - err=componentCountPerLoader.Append(-1); - switch(err) - { - case KErrNone: - //do nothing - break; - - case KErrNoMemory: - componentCountPerLoader.Close(); - return OMX_ErrorInsufficientResources; - - default: - componentCountPerLoader.Close(); - return OMX_ErrorUndefined; - } - } - - for(TInt loaderIndex=0; loaderIndex < KLoadersCount; ++loaderIndex) - { - //fist acquire the actual loader - OMX_LOADERTYPE* loader = reinterpret_cast(iLoaders[loaderIndex].iLoader->Handle()); - __ASSERT_DEBUG(loader != NULL, User::Panic(KOmxILCorePanic, 1)); - - //then count how many components the previous loaders have in total - //obviously for the first loader this loop won't do anything (ie: for loaderIndex==0) - //for the second loader it will count the first loader's component count, etc.... - TInt totalComponentCount(0); - for(TInt l=0; lComponentNameEnum(loader, - aComponentName, - aNameLength, relativeIndex); - - - switch(error) - { - case OMX_ErrorNone: - //this loader has component at this index (ie: at relativeIndex) - componentCountPerLoader.Close(); //free array before return - return OMX_ErrorNone; - - case OMX_ErrorNoMore: - if((KLoadersCount-1)==loaderIndex) //if this is the last loader then the component at this index index obviously does not exist - { - componentCountPerLoader.Close(); //free array before return - return OMX_ErrorNoMore; - } - //this loader has not this many components, so find out how many it actually has - //and then update the correponding item in the componentCountPerLoader array - if(0==relativeIndex)//if this loader has no component at index 0, then it has no components at all - { - componentCountPerLoader[loaderIndex]=0; - break; - } - - for(TInt m=relativeIndex-1; m>=0;--m) //try to figure the first available index (counting down) - { - OMX_ERRORTYPE tempError = loader->ComponentNameEnum(loader, - aComponentName, - aNameLength, m); - if(OMX_ErrorNone==tempError) - { - //this is the first index (counting down) where this loader has component - componentCountPerLoader[loaderIndex]=m+1; //eg: index==4, then component count is 5 (because of zero based indexing) - break; - } - else if(OMX_ErrorInsufficientResources==tempError) - { - //critical error; free array before return - componentCountPerLoader.Close(); - return OMX_ErrorInsufficientResources; - } - //ignore any non-critical error (ie: other than OMX_ErrorInsufficientResources) and go one index down - } - - //if after the last loop (ie: m==0) the count was still not set for some reasons, then set to zero - if(-1==componentCountPerLoader[loaderIndex]) - { - componentCountPerLoader[loaderIndex]=0; - } - break; - case OMX_ErrorInsufficientResources: - componentCountPerLoader.Close(); //free array before return - return OMX_ErrorInsufficientResources; - default: - //some unknown error happened to the loader therefore we can't count how many component it has, assume zero - DEBUG_PRINTF4(_L8("COmxILCore::ComponentNameEnum (index = %d) : Loader [%d] returned OMX error [%d].. ignoring loader (ie: assuming ZERO components)..."), aIndex, loaderIndex, error); - componentCountPerLoader[loaderIndex]=0; - break; - } - }//end of for - componentCountPerLoader.Close(); //free array before return - } // else - - - if (OMX_ErrorInsufficientResources == error) - { - return OMX_ErrorUndefined; - } - else - { - return error; - } - } - - -EXPORT_C OMX_ERRORTYPE COmxILCore::FreeHandle(OMX_HANDLETYPE aComponent) const - { - DEBUG_PRINTF2(_L8("COmxILCore::FreeHandle : Component Handle [%X]"), aComponent); - - if( aComponent == NULL ) - { - return OMX_ErrorBadParameter; - } - - OMX_LOADERTYPE* loader; - OMX_ERRORTYPE error = OMX_ErrorComponentNotFound; - - const TInt KLoadersCount = iLoaders.Count(); - for(TInt index=0; index < KLoadersCount; ++index) - { - // Check this just in case the loader has not been initialized yet... - if(iLoaders[index].iLoader != NULL) - { - loader = reinterpret_cast(iLoaders[index].iLoader->Handle()); - __ASSERT_DEBUG(loader != NULL, User::Panic(KOmxILCorePanic, 1)); - error = loader->UnloadComponent(loader, aComponent); - if( OMX_ErrorNone == error ) - { - // Success case... otherwise, continue with next loader... - break; - } -#ifdef _DEBUG - if( OMX_ErrorComponentNotFound != error ) - { - // Another error occured... log the situation... - DEBUG_PRINTF3(_L8("COmxILCore::FreeHandle : Loader [%d] returned OMX error [%d].. continuing with next loader..."), index, error); - } -#endif - } - } - - return error; - } - -EXPORT_C OMX_ERRORTYPE COmxILCore::SetupTunnel(OMX_HANDLETYPE aHandleOutput, - OMX_U32 aPortOutput, - OMX_HANDLETYPE aHandleInput, - OMX_U32 aPortInput) - { - DEBUG_PRINTF(_L8("COmxILCore::SetupTunnel")); - - if (!aHandleOutput && !aHandleInput ) - { - return OMX_ErrorBadParameter; - } - - OMX_COMPONENTTYPE *componentInput, *componentOutput; - componentInput = reinterpret_cast(aHandleInput); - componentOutput = reinterpret_cast(aHandleOutput); - - OMX_TUNNELSETUPTYPE tunnelSetup; - OMX_ERRORTYPE error; - OMX_PARAM_PORTDEFINITIONTYPE portDefinitionType; - - tunnelSetup.nTunnelFlags = 0; - tunnelSetup.eSupplier = OMX_BufferSupplyUnspecified; - - if(componentOutput) - { - // Check that the output port is actually an output port - portDefinitionType.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - portDefinitionType.nVersion.s.nVersionMajor = COmxILCore::iSpecVersionMajor; - portDefinitionType.nVersion.s.nVersionMinor = COmxILCore::iSpecVersionMinor; - portDefinitionType.nVersion.s.nRevision = COmxILCore::iSpecVersionRevision; - portDefinitionType.nVersion.s.nStep = COmxILCore::iSpecVersionStep; - portDefinitionType.nPortIndex = aPortOutput; - if (OMX_ErrorNone != (error = componentOutput->GetParameter( - componentOutput, - OMX_IndexParamPortDefinition, - &portDefinitionType))) - { - return TOmxILCoreUtils::ConvertErrorGetParameterToSetupTunnel(error); - } - - if (OMX_DirOutput != portDefinitionType.eDir) - { - return OMX_ErrorBadParameter; - } - - error = componentOutput->ComponentTunnelRequest(componentOutput, - aPortOutput, - componentInput, - aPortInput, - &tunnelSetup); - if(OMX_ErrorNone != error) - { - return error; - } - } - - if(componentInput) - { - // Check that the input port is actually an input port. Set again the - // structure values just in case they were overwritten in the previous - // GetParameter call... - portDefinitionType.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - portDefinitionType.nVersion.s.nVersionMajor = COmxILCore::iSpecVersionMajor; - portDefinitionType.nVersion.s.nVersionMinor = COmxILCore::iSpecVersionMinor; - portDefinitionType.nVersion.s.nRevision = COmxILCore::iSpecVersionRevision; - portDefinitionType.nVersion.s.nStep = COmxILCore::iSpecVersionStep; - portDefinitionType.nPortIndex = aPortInput; - if (OMX_ErrorNone != (error = componentInput->GetParameter( - componentInput, - OMX_IndexParamPortDefinition, - &portDefinitionType))) - { - return TOmxILCoreUtils::ConvertErrorGetParameterToSetupTunnel(error); - } - - if (OMX_DirInput != portDefinitionType.eDir) - { - return OMX_ErrorBadParameter; - } - - error = componentInput->ComponentTunnelRequest(componentInput, - aPortInput, - componentOutput, - aPortOutput, - &tunnelSetup); - - if(OMX_ErrorNone != error) - { - if(!componentOutput) - { - return error; - } - - if( OMX_ErrorNone != componentOutput->ComponentTunnelRequest( - componentOutput, - aPortOutput, - NULL, - 0, - &tunnelSetup) ) - { - return OMX_ErrorUndefined; - } - return error; - } - } - return OMX_ErrorNone; - } - -EXPORT_C OMX_ERRORTYPE COmxILCore::GetContentPipe( - OMX_HANDLETYPE *aPipe,const OMX_STRING aURI) - { - DEBUG_PRINTF(_L8("COmxILCore::GetContentPipe")); - - if( aURI == NULL ) - { - return OMX_ErrorBadParameter; - } - - RImplInfoPtrArray ecomArray; - TRAPD(error,REComSession::ListImplementationsL( - TUid::Uid(KUidOmxILContentPipeIf), ecomArray)); - if( error != KErrNone ) - { - ecomArray.ResetAndDestroy(); - return OMX_ErrorUndefined; - } - - const TInt KEcomArrayCount = ecomArray.Count(); - if(!KEcomArrayCount) - { - ecomArray.Close(); - return OMX_ErrorBadParameter; - } - - HBufC8* convert = NULL; - TPtr8 luri(reinterpret_cast(aURI), strlen(aURI), strlen(aURI)); - - TRAP(error, (convert = HBufC8::NewL(strlen(aURI)))); - if( error != KErrNone ) - { - ecomArray.ResetAndDestroy(); - return OMX_ErrorUndefined; - } - - TUriParser8 parser;// Uri parser object - TInt result; - // Extract the scheme component from the parsed URI - const TDesC8& scheme = parser.Extract(EUriScheme); - - *convert = luri; - result = parser.Parse(*convert);// parse the Uri descriptor - if( result != KErrNone ) - { - delete convert; - ecomArray.ResetAndDestroy(); - return OMX_ErrorBadParameter; - } - - TInt index; - CImplementationInformation* info; - COmxILContentPipeIf* cpipe = NULL; - OMX_ERRORTYPE omxError = OMX_ErrorBadParameter; - for(index=0; index < KEcomArrayCount; ++index) - { - info = ecomArray[index]; - if(info->DataType().Find(scheme) != KErrNotFound ) - { - //found - TRAP(error, cpipe = COmxILContentPipeIf::CreateImplementationL( - info->ImplementationUid())); - if(error != KErrNone) - { - omxError = OMX_ErrorUndefined; - break; - } - error = cpipe->GetHandle(aPipe); - if(error != KErrNone) - { - omxError = OMX_ErrorUndefined; - break; - } - - error = iContentPipes.Append(cpipe); - if(error != KErrNone) - { - omxError = OMX_ErrorUndefined; - break; - } - - omxError = OMX_ErrorNone; - break; - } - } - - if (OMX_ErrorNone != omxError) - { - delete cpipe; - aPipe = NULL; - } - - delete convert; - ecomArray.ResetAndDestroy(); - return omxError; - } - -EXPORT_C OMX_ERRORTYPE COmxILCore::GetComponentsOfRole ( - const OMX_STRING aRole, OMX_U32 *aNumComps, OMX_U8 **aCompNames) - { - DEBUG_PRINTF(_L8("COmxILCore::GetComponentsOfRole")); - - if (aNumComps == NULL) - { - return OMX_ErrorBadParameter; - } - - if (aCompNames != NULL && *aNumComps == 0) - { - return OMX_ErrorBadParameter; - } - - OMX_LOADERTYPE* loader; - OMX_ERRORTYPE error = OMX_ErrorComponentNotFound; - OMX_U32 numAllComps = 0; - OMX_U32 maxNumComps = *aNumComps; - OMX_U32 tempNumComps = maxNumComps; - OMX_U8 **compNames = aCompNames; - - const TInt KLoadersCount = iLoaders.Count(); - for(TInt index=0; index < KLoadersCount; ++index) - { - loader = reinterpret_cast( - iLoaders[index].iLoader->Handle()); - __ASSERT_DEBUG(loader != NULL, User::Panic(KOmxILCorePanic, 1)); - error = loader->GetComponentsOfRole(loader, - aRole, - &tempNumComps, - compNames); - if(OMX_ErrorNone == error) - { - numAllComps += tempNumComps; - if(aCompNames != NULL && KLoadersCount > 1) - { - // Update tempNumComps in case there is a next iteration... - tempNumComps = maxNumComps - tempNumComps; - if (numAllComps >= maxNumComps) - { - if (numAllComps > maxNumComps) - { - DEBUG_PRINTF2(_L8("COmxILCore::GetComponentsOfRole : Loader [%d] returned a bad number of component roles... correcting"), index); - numAllComps = maxNumComps; - } - - // The array of component names is full... - break; - } - - compNames = &(aCompNames[numAllComps]); - if (*compNames == NULL) - { - *aNumComps = 0; - return OMX_ErrorBadParameter; - } - } // if(aCompNames != NULL && KLoadersCount > 1) - } // if(OMX_ErrorNone == error) - } // for(TInt index=0; index < KLoadersCount; ++index) - - // Update the number of components value to be returned to the client... - *aNumComps = numAllComps; - - if (error == OMX_ErrorInsufficientResources) - { - return OMX_ErrorUndefined; - } - else - { - return error; - } - } - -EXPORT_C OMX_ERRORTYPE COmxILCore::GetRolesOfComponent ( - const OMX_STRING aCompName, OMX_U32 *aNumRoles, OMX_U8 **aRoles) - { - DEBUG_PRINTF(_L8("COmxILCore::GetRolesOfComponent")); - - if (aNumRoles == NULL) - { - return OMX_ErrorBadParameter; - } - - if (aRoles != NULL && *aNumRoles == 0) - { - return OMX_ErrorBadParameter; - } - if( !VerifyComponentName(aCompName)) - { - return OMX_ErrorInvalidComponentName; - } - TInt numRolesCopy = *aNumRoles; - OMX_LOADERTYPE* loader; - OMX_ERRORTYPE error = OMX_ErrorComponentNotFound; - const TInt KLoadersCount = iLoaders.Count(); - for(TInt index=0; index < KLoadersCount; ++index) - { - loader = reinterpret_cast( - iLoaders[index].iLoader->Handle()); - __ASSERT_DEBUG(loader != NULL, User::Panic(KOmxILCorePanic, 1)); - error = loader->GetRolesOfComponent(loader, - aCompName, - aNumRoles, - aRoles); - if(OMX_ErrorNone == error) - { - if ((aRoles != NULL) && (*aNumRoles > numRolesCopy)) - { - // Just in case... - DEBUG_PRINTF2(_L8("COmxILCore::GetRolesOfComponent : Loader [%d] returned a bad number of roles... correcting"), index); - *aNumRoles = numRolesCopy; - } - return OMX_ErrorNone; - } - - if((index+1 < KLoadersCount) && (aRoles != NULL)) - { - // If we have other loaders after this, reset aNumRoles to the - // value suplied by the client. - *aNumRoles = numRolesCopy; - } - } - - // Make sure that even if loader does not conform to the set of errors required by the standard, we will - if (OMX_ErrorUndefined != error && OMX_ErrorInvalidComponentName != error && - OMX_ErrorInvalidComponent != error && OMX_ErrorBadParameter != error) - { - return OMX_ErrorUndefined; - } - else - { - return error; - } - } - -/** - Converts an error returned by GetParameter to a permitted error to be - returned by OMX_SetupTunnel. - - @param aGetParameterError An error code returned by the GetParameter API - - @return An OMX_ERRORTYPE from the list of permitted errors in - OMX_SetupTunnel -*/ -OMX_ERRORTYPE TOmxILCoreUtils::ConvertErrorGetParameterToSetupTunnel( - OMX_ERRORTYPE aGetParameterError) - { - switch(aGetParameterError) - { - // These are the common errors allowed in GetParameter and - // OMX_SetupTunnel - case OMX_ErrorInvalidComponent: - case OMX_ErrorBadParameter: - case OMX_ErrorInvalidState: - case OMX_ErrorVersionMismatch: - case OMX_ErrorTimeout: - case OMX_ErrorBadPortIndex: - return aGetParameterError; - - // These are the errors supported by GetParameter and not supported by - // OMX_SetupTunnel - case OMX_ErrorUndefined: - case OMX_ErrorNoMore: - case OMX_ErrorNotReady: - case OMX_ErrorUnsupportedIndex: - case OMX_ErrorSeperateTablesUsed: - default: - // Return something that is actually allowed... - return OMX_ErrorBadParameter; - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/core/omxilcore.h --- a/omxil/omxilcore/src/core/omxilcore.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -// -// Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILCORE_H -#define OMXILCORE_H - -#include -#include - -// Forward declarations -class COmxComponentLoaderIf; -class COmxILContentPipeIf; - -NONSHARABLE_CLASS(COmxILCore): public CBase - { -public: - - static const TUint8 iSpecVersionMajor = OMX_VERSION_MAJOR; - static const TUint8 iSpecVersionMinor = OMX_VERSION_MINOR; - static const TUint8 iSpecVersionRevision = OMX_VERSION_REVISION; - static const TUint8 iSpecVersionStep = OMX_VERSION_STEP; - -public: - - COmxILCore(); - ~COmxILCore(); - - OMX_ERRORTYPE ListLoaders(); - void DeinitCore(); - IMPORT_C OMX_ERRORTYPE LoadComponent(const OMX_STRING aComponentName, OMX_HANDLETYPE* aHandle, OMX_PTR aAppData,OMX_CALLBACKTYPE* aCallBacks); - IMPORT_C OMX_ERRORTYPE ComponentNameEnum(OMX_STRING aComponentName, OMX_U32 aNameLength, const OMX_U32 aIndex); - IMPORT_C OMX_ERRORTYPE FreeHandle(OMX_HANDLETYPE aComponent) const; - IMPORT_C static OMX_ERRORTYPE SetupTunnel(OMX_HANDLETYPE aHandleOutput, OMX_U32 aPortOutput, - OMX_HANDLETYPE aHandleInput, OMX_U32 aPortInput); - IMPORT_C OMX_ERRORTYPE GetContentPipe(OMX_HANDLETYPE* aPipe,const OMX_STRING aURI); - IMPORT_C OMX_ERRORTYPE GetComponentsOfRole ( const OMX_STRING aRole, OMX_U32* aNumComps, OMX_U8** aCompNames ); - IMPORT_C OMX_ERRORTYPE GetRolesOfComponent ( const OMX_STRING aCompName, OMX_U32* aNumRoles, OMX_U8** aRoles); - -private: - - class TOmxLoaderInfo - { - public: - TOmxLoaderInfo(); - public: - TUid iUid; - COmxComponentLoaderIf* iLoader; - }; - -private: - - OMX_ERRORTYPE LoadAndInitLoader(const TUid& aUid, COmxComponentLoaderIf*& aLoader); - -private: - RArray iLoaders; - RPointerArray iContentPipes; - }; - -inline COmxILCore::TOmxLoaderInfo::TOmxLoaderInfo(): - iUid(TUid::Uid(0)),iLoader(NULL) - { - } - -/** - Utility functions - */ -class TOmxILCoreUtils - { -public: - - static OMX_ERRORTYPE ConvertErrorGetParameterToSetupTunnel( - OMX_ERRORTYPE aGetParameterError); - - }; - -#endif /* OMXILCORE_H */ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/core/omxilsymbiancontentpipeif.cpp --- a/omxil/omxilcore/src/core/omxilsymbiancontentpipeif.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include - -/** - Content pipe entry point - This function initialises the CP_PIPETYPE structure and return it in its first argument - - @return KErrNone if successful, otherwise another system-wide error codes - @param aContentPipe Returns a pointer to the content pipe handle - - @publishedPartner - @prototype -*/ -TInt ContentPipeInit(OMX_HANDLETYPE* aContentPipe); - -/** - Content pipe exit point - This function deinitialises the CP_PIPETYPE structure passed as first argument - - @return KErrNone if successful, otherwise another system-wide error codes - @param aContentPipe A pointer to the content pipe handle that will be deinitialised - - @publishedPartner - @prototype -*/ -TInt ContentPipeDeInit(OMX_HANDLETYPE aContentPipe); - -/** - Constructor -*/ -COmxILSymbianContentPipeIf::COmxILSymbianContentPipeIf() - { - } - -/** - Constructs a new instance of COmxILSymbianContentPipeIf. - @return COmxILSymbianContentPipeIf* A pointer to the newly constructed COmxILSymbianContentPipeIf. - - @internalTechnology -*/ -COmxILSymbianContentPipeIf* COmxILSymbianContentPipeIf::NewL() - { - return new(ELeave)COmxILSymbianContentPipeIf; - } - -/** - Destructor - - @internalTechnology -*/ -COmxILSymbianContentPipeIf::~COmxILSymbianContentPipeIf() - { - ContentPipeDeInit(iHandle); - } - -TInt COmxILSymbianContentPipeIf::GetHandle(OMX_HANDLETYPE* aContentPipe) - { - if(iHandle) - { // Content Pipe already created - *aContentPipe = iHandle; - return KErrNone; - } - - TInt err = ContentPipeInit(aContentPipe); - if(err == KErrNone) - { - iHandle = reinterpret_cast(*aContentPipe); - } - return err; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/core/omxilsymbianloaderif.cpp --- a/omxil/omxilcore/src/core/omxilsymbianloaderif.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include - -/** -Entry point routine that Component Loaders have to implement to populate the actual -structure represented by the handle passed as argument. -@param aLoader - The handle to the OMX_LOADERTYPE structure to be populated. -@return An OpenMAX defined error. OMX_ErrorNone if successful. - -@publishedPartner -@prototype -*/ -OMX_ERRORTYPE OMX_LoaderSetup(OMX_HANDLETYPE aLoader); - -/** -Constructor of this interface. -*/ -COmxSymbianLoaderIf::COmxSymbianLoaderIf() - { - } - -/** -Static method to create this interface. -The actual OMX_LOADERTYPE structure should be allocated and populated as part -of the construction of this interface. - -@return A pointer to the newly constructed COmxSymbianLoaderIf. - -@internalTechnology -*/ -COmxSymbianLoaderIf* COmxSymbianLoaderIf::NewL() - { - COmxSymbianLoaderIf* self = new(ELeave)COmxSymbianLoaderIf; - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -/** -Constructs and populates the OMX_LOADERTYPE structure encapsulated within this interface. -*/ -void COmxSymbianLoaderIf::ConstructL() - { - iHandle = new(ELeave)OMX_LOADERTYPE; - - OMX_ERRORTYPE error = OMX_ErrorInsufficientResources; - error = ::OMX_LoaderSetup(iHandle); - - if ( error != OMX_ErrorNone ) - { - if( error == OMX_ErrorInsufficientResources ) - { - User::Leave(KErrNoMemory); - } - else - { - User::Leave(KErrGeneral); - } - } - } - -/** -Destructor of this interface. -Deletes this loader's OMX_LOADERTYPE structure. - -@internalTechnology -*/ -COmxSymbianLoaderIf::~COmxSymbianLoaderIf() - { - delete iHandle; - } - -/** -Gets the valid handle of the already populated OMX_LOADERTYPE struct. - -@return The loader's handle -*/ -OMX_HANDLETYPE COmxSymbianLoaderIf::Handle() - { - return iHandle; - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/core/omxiluids.hrh --- a/omxil/omxilcore/src/core/omxiluids.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILUIDS_HRH -#define OMXILUIDS_HRH - -#define KSharedLibraryUidDefine 0x1000008D -#define KUidECOM 0x10009D8D - -// OpenMax IL Core client library -#define KUidOmxILCoreClientDll 0x1028349C - -// OpenMax IL Core server library -#define KUidOmxILCoreServerDll 0x10285D1E - -// OpenMax IL Loader Static Library -#define KUidOmxILLoaderLib 0x1028349E - -// Symbian OpenMax IL loader -#define KUidOmxILLoaderDll 0x102834CF -#define KUidOmxILSymbianComponentLoader 0x102834D0 - -// Symbian OpenMax IL Content Pipe Interface -#define KUidOmxILSymbianContentPipeIfLib 0x102834B8 - -#endif /*OMXILUIDS_HRH*/ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/loader/log.h --- a/omxil/omxilcore/src/loader/log.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,149 +0,0 @@ -/* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -#ifndef __SWI_LOG_H__ -#define __SWI_LOG_H__ - -#include - -class TTruncateOverflowHandler16 : public TDes16Overflow - { - public: - virtual void Overflow( TDes16& aDes ); - }; - -inline void TTruncateOverflowHandler16::Overflow( TDes16& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -class TTruncateOverflowHandler8 : public TDes8Overflow - { - public: - virtual void Overflow( TDes8& aDes ); - }; - -inline void TTruncateOverflowHandler8::Overflow( TDes8& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -namespace DSD -{ - -#ifdef _DEBUG - -#ifdef _OMXIL_SYMBIANLOADER_DEBUG_TRACING_ON - -#define DEBUG_PRINTF(a) {DSD::DebugPrintf(__LINE__, __FILE__, a);} -#define DEBUG_PRINTF2(a, b) {DSD::DebugPrintf(__LINE__, __FILE__, a, b);} -#define DEBUG_PRINTF3(a, b, c) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c);} -#define DEBUG_PRINTF4(a, b, c, d) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d);} -#define DEBUG_PRINTF5(a, b, c, d, e) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d, e);} - -#define DEBUG_CODE_SECTION(a) TRAP_IGNORE({ a; }) - -// UTF-8 overload of the DebufPrintf method. Should be used by default, -// since it's cheaper both in CPU cycles and stack space. - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler8 overflowHandler8; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<1024> buffer; - _LIT8(KSwiLogPrefix, "[symloader] "); - _LIT8(KSwiLineFileFormat, "TID[%d] : [%s:%d] -- "); - buffer.Append(KSwiLogPrefix); - RThread thread; - TUint threadId = thread.Id(); - thread.Close(); - RProcess proc; - TFileName fName = proc.FileName(); - proc.Close(); - buffer.AppendFormat(KSwiLineFileFormat, threadId, aFile, aLine); - buffer.AppendFormatList(aFormat, list ,&overflowHandler8 ); - buffer.Append(_L8("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } - -// Unicode DebufPrintf overload - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler16 overflowHandler16; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<256> header; - _LIT8(KSwiLogPrefix, "[symloader] "); - _LIT8(KSwiLineFileFormat, "%Ld Line: % 5d, File: %s -- "); - header.Append(KSwiLogPrefix); - header.AppendFormat(KSwiLineFileFormat, now.Int64(), aLine, aFile); - - TBuf<1024> buffer; - buffer.Copy(header); - buffer.AppendFormatList(aFormat, list ,&overflowHandler16); - buffer.Append(_L("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - - -} // namespace DSD - -#endif // __SWI_LOG_H__ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/loader/omxilsymbiancomponentif.cpp --- a/omxil/omxilcore/src/loader/omxilsymbiancomponentif.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include - -/** -Constructor of this interface. -*/ -COmxILSymbianComponentIf::COmxILSymbianComponentIf() - { - } - -/** -Static method to create this interface. -The actual OMX_COMPONENTTYPE structure should be allocated and populated as part -of the construction of this interface. - -@return A pointer to the newly constructed COmxILSymbianComponentIf. - -@internalTechnology -*/ -COmxILSymbianComponentIf* COmxILSymbianComponentIf::NewL() - { - COmxILSymbianComponentIf* self = new (ELeave) COmxILSymbianComponentIf; - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - - return self; - } - -/** -Constructs and populates the OMX_COMPONENTTYPE structure encapsulated within this interface. -*/ -void COmxILSymbianComponentIf::ConstructL() - { - ipHandle = new(ELeave) OMX_COMPONENTTYPE; - OMX_ERRORTYPE error = OMX_ErrorInsufficientResources; - - error = ::OMX_ComponentInit(ipHandle); - if ( OMX_ErrorNone != error ) - { - if( error == OMX_ErrorInsufficientResources ) - { - User::Leave(KErrNoMemory); - } - else - { - User::Leave(KErrGeneral); - } - } - } - -/** -Destructor of this interface. -Deletes the component's structure. - -@internalTechnology -*/ -COmxILSymbianComponentIf::~COmxILSymbianComponentIf() - { - delete ipHandle; - } - - -/** -Gets the valid handle of the already populated OMX_HANDLETYPE structure. - -@return The component's handle -*/ -OMX_HANDLETYPE COmxILSymbianComponentIf::Handle() - { - return ipHandle; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/loader/omxilsymbiancomponentloader.cpp --- a/omxil/omxilcore/src/loader/omxilsymbiancomponentloader.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,443 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include -#include "omxilsymbiancomponentloader.h" -#include "../core/omxiluids.hrh" -#include -#include -#include -#include -#include -#include -#include -#include "log.h" - -OMX_ERRORTYPE OmxInitializeComponentLoader(OMX_LOADERTYPE *loader); -OMX_ERRORTYPE OmxUnInitializeComponentLoader(OMX_LOADERTYPE *loader); -OMX_ERRORTYPE OmxLoadComponent( OMX_LOADERTYPE *loader, - OMX_OUT OMX_HANDLETYPE* pHandle, - OMX_IN OMX_STRING cComponentName, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_CALLBACKTYPE* pCallBacks); -OMX_ERRORTYPE OmxUnloadComponent( OMX_LOADERTYPE *loader, - OMX_HANDLETYPE hComponent); -OMX_ERRORTYPE OmxComponentNameEnum( OMX_LOADERTYPE *loader, - OMX_OUT OMX_STRING cComponentName, - OMX_IN OMX_U32 nNameLength, - OMX_IN OMX_U32 nIndex); -OMX_ERRORTYPE OmxGetRolesOfComponent( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING compName, - OMX_INOUT OMX_U32 *pNumRoles, - OMX_OUT OMX_U8 **roles); -OMX_ERRORTYPE OmxGetComponentsOfRole( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING role, - OMX_INOUT OMX_U32 *pNumComps, - OMX_INOUT OMX_U8 **compNames); - - - -OMX_ERRORTYPE OmxInitializeComponentLoader(OMX_LOADERTYPE *loader) - { - return ((CSymbianOmxComponentLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->InitializeComponentLoader(); - } - -OMX_ERRORTYPE OmxUnInitializeComponentLoader(OMX_LOADERTYPE *loader) - { - return ((CSymbianOmxComponentLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->UnInitializeComponentLoader(loader); - } - -OMX_ERRORTYPE OmxLoadComponent( OMX_LOADERTYPE *loader, - OMX_OUT OMX_HANDLETYPE* pHandle, - OMX_IN OMX_STRING cComponentName, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_CALLBACKTYPE* pCallBacks) - { - return ((CSymbianOmxComponentLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->LoadComponent(pHandle,cComponentName,pAppData,pCallBacks); - } - -OMX_ERRORTYPE OmxUnloadComponent( OMX_LOADERTYPE *loader, - OMX_HANDLETYPE hComponent) - { - return ((CSymbianOmxComponentLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->UnloadComponent(hComponent); - } - -OMX_ERRORTYPE OmxComponentNameEnum( OMX_LOADERTYPE *loader, - OMX_OUT OMX_STRING cComponentName, - OMX_IN OMX_U32 nNameLength, - OMX_IN OMX_U32 nIndex) - { - return ((CSymbianOmxComponentLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->ComponentNameEnum(cComponentName,nNameLength,nIndex); - } - -OMX_ERRORTYPE OmxGetRolesOfComponent( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING compName, - OMX_INOUT OMX_U32 *pNumRoles, - OMX_OUT OMX_U8 **roles) - { - return ((CSymbianOmxComponentLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->GetRolesOfComponent(compName,pNumRoles,roles); - } - -OMX_ERRORTYPE OmxGetComponentsOfRole( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING role, - OMX_INOUT OMX_U32 *pNumComps, - OMX_INOUT OMX_U8 **compNames) - { - return ((CSymbianOmxComponentLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->GetComponentsOfRole(role,pNumComps,compNames); - } - -OMX_ERRORTYPE CSymbianOmxComponentLoader::InitializeComponentLoader() - { - RImplInfoPtrArray ecomArray; - TRAPD(error,REComSession::ListImplementationsL(TUid::Uid(KUidOmxILSymbianComponentIf),ecomArray)); - if( error != KErrNone ) - { - ecomArray.ResetAndDestroy(); - return OMX_ErrorInsufficientResources; - } - TInt index; - CImplementationInformation* info; - - TOmxComponentInfo component; - - iComponentNameList.Reset(); - - const TInt KEcomArrayCount = ecomArray.Count(); - for( index=0; indexImplementationUid(); - if( info->DisplayName().Length() >= OMX_MAX_STRINGNAME_SIZE || - info->DataType().Length() >= OMX_MAX_ROLESBUFFER_SIZE ) - { - error = KErrBadName; - break; - } - - component.iComponentName.Copy(info->DisplayName()); - component.iRoles.Copy(info->DataType()); - - error = iComponentNameList.Append(component); - if(error) - { - break; - } - } - ecomArray.ResetAndDestroy(); - if( error != KErrNone ) - { - if( error == KErrNoMemory ) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorUndefined; - } - return OMX_ErrorNone; - } - -OMX_ERRORTYPE CSymbianOmxComponentLoader::UnInitializeComponentLoader(OMX_LOADERTYPE * /*loader*/) - { - iComponentNameList.Reset(); - iComponents.ResetAndDestroy(); - return OMX_ErrorNone; - } - -OMX_ERRORTYPE CSymbianOmxComponentLoader::LoadComponent( OMX_HANDLETYPE* pHandle, - OMX_STRING cComponentName, - OMX_PTR pAppData, - OMX_CALLBACKTYPE* pCallBacks) - { - TInt index; - TPtrC8 lComponentName(reinterpret_cast(cComponentName), strlen(cComponentName)); - COmxILComponentIf* component = NULL; - OMX_ERRORTYPE error = OMX_ErrorComponentNotFound; - - const TInt KComponentNameListCount = iComponentNameList.Count(); - for( index = 0; index < KComponentNameListCount; ++index ) - { - TOmxComponentInfo& comp = iComponentNameList[index]; - DEBUG_PRINTF3(_L8("CSymbianOmxComponentLoader::LoadComponent : comp [%index] [%S]"), index, &comp.iComponentName); - if( comp.iComponentName.CompareF(lComponentName) == 0 ) - { - TRAPD(err, component = COmxILComponentIf::CreateImplementationL(iComponentNameList[index].iUid)); - if( err != KErrNone ) - { - if ( err == KErrNoMemory ) - { - return OMX_ErrorInsufficientResources; - } - else - { - return OMX_ErrorInvalidComponent; - } - } - - *pHandle = component->Handle(); - if( !*pHandle ) - { - return OMX_ErrorInvalidComponent; - } - - error = (static_cast(*pHandle))->SetCallbacks(*pHandle, pCallBacks, pAppData); - - if(error != OMX_ErrorNone) - { - (static_cast(*pHandle))->ComponentDeInit(*pHandle); - delete component; - return error; - } - if( iComponents.Append(component) != KErrNone ) - { - (static_cast(*pHandle))->ComponentDeInit(*pHandle); - delete component; - return OMX_ErrorInsufficientResources; - } - return error; - } - } - return error; - } - -OMX_ERRORTYPE CSymbianOmxComponentLoader::UnloadComponent( OMX_HANDLETYPE hComponent) - { - TInt index; - COmxILComponentIf* component; - - const TInt KComponentsCount = iComponents.Count(); - for( index = 0; index < KComponentsCount; ++index ) - { - component = iComponents[index]; - if( component->Handle() == hComponent ) - { - (static_cast(hComponent))->ComponentDeInit( hComponent ); - delete component; - iComponents.Remove(index); - return OMX_ErrorNone; - } - } - return OMX_ErrorComponentNotFound; - } - -OMX_ERRORTYPE CSymbianOmxComponentLoader::ComponentNameEnum( OMX_STRING aComponentName, - OMX_U32 aNameLength, - OMX_U32 aIndex) - { - ASSERT(aComponentName); - - const TInt KIndexForPopulateList = 0; - if ( aIndex == KIndexForPopulateList ) - { - RImplInfoPtrArray ecomArray; - TRAPD(error, REComSession::ListImplementationsL(TUid::Uid(KUidOmxILSymbianComponentIf), ecomArray)); - if (error != KErrNone) - { - return OMX_ErrorUndefined; - } - TInt index; - iComponentNameList.Reset(); - - const TInt KEcomArrayCount = ecomArray.Count(); - // Create Controller Implementation Information for each entry - for (index=0; index= OMX_MAX_STRINGNAME_SIZE || - info.DataType().Length() >= OMX_MAX_ROLESBUFFER_SIZE ) - { - error = KErrBadName; - break; - } - component.iComponentName.Copy(info.DisplayName()); - component.iRoles.Copy(info.DataType()); - error = iComponentNameList.Append(component); - if( error != KErrNone ) - { - break; - } - } - ecomArray.ResetAndDestroy(); - if( error != KErrNone ) - { - return OMX_ErrorUndefined; - } - } - if (aIndex(compName), strlen(compName)); - - OMX_ERRORTYPE error = OMX_ErrorInvalidComponentName; - const TInt KComponentNameListCount = iComponentNameList.Count(); - for( index = 0, roleindex = 0; index < KComponentNameListCount; ++index ) - { - if( iComponentNameList[index].iComponentName.Compare(tComponentName) == 0 ) - { - char parser[OMX_MAX_ROLESBUFFER_SIZE], *p; - size_t size; - TInt i, j; - - size = iComponentNameList[index].iRoles.Length(); - - strncpy(parser, - reinterpret_cast(const_cast(iComponentNameList[index].iRoles.Ptr())), - size); - parser[size]=0; - - for( i=0, j=0, p=parser; i(role), strlen(role)); - - ASSERT(pNumComps); - - TInt KComponentNameListCount = iComponentNameList.Count(); - for( index = 0, compindex = 0; index < KComponentNameListCount; ++index ) - { - if( iComponentNameList[index].iRoles.Find(lRole) != KErrNotFound ) - { - if( compNames != NULL ) - { - if( compNames[compindex]!= NULL ) - { - strncpy((char*)compNames[compindex],(char*)iComponentNameList[index].iComponentName.Ptr(),iComponentNameList[index].iComponentName.Length()); - compNames[compindex][iComponentNameList[index].iComponentName.Size()]=0; - } - else - { - return OMX_ErrorBadParameter; - } - } - ++compindex; - } - } - *pNumComps = compindex; - return OMX_ErrorNone; - } - -OMX_HANDLETYPE CSymbianOmxComponentLoader::Handle() - { - return iHandle; - } - -CSymbianOmxComponentLoader::CSymbianOmxComponentLoader() - { - } - -CSymbianOmxComponentLoader::~CSymbianOmxComponentLoader() - { - delete iHandle; - } - -void CSymbianOmxComponentLoader::ConstructL() - { - iHandle = new(ELeave) OMX_LOADERTYPE; - - iHandle->InitializeComponentLoader = &::OmxInitializeComponentLoader; - iHandle->UnInitializeComponentLoader = &::OmxUnInitializeComponentLoader; - iHandle->LoadComponent = &::OmxLoadComponent; - iHandle->UnloadComponent = &::OmxUnloadComponent; - iHandle->ComponentNameEnum = &::OmxComponentNameEnum; - iHandle->GetRolesOfComponent = &::OmxGetRolesOfComponent; - iHandle->GetComponentsOfRole = &::OmxGetComponentsOfRole; - - iHandle->pLoaderPrivate = this; - } - -CSymbianOmxComponentLoader* CSymbianOmxComponentLoader::NewL() - { - CSymbianOmxComponentLoader* self = new(ELeave) CSymbianOmxComponentLoader; - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - - return self; - } - -// ECOM -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(KUidOmxILSymbianComponentLoader, CSymbianOmxComponentLoader::NewL), - }; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - return ImplementationTable; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/loader/omxilsymbiancomponentloader.h --- a/omxil/omxilcore/src/loader/omxilsymbiancomponentloader.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILSYMBIANCOMPONENTLOADER_H -#define OMXILSYMBIANCOMPONENTLOADER_H - -#include -#include -#include -#include -#include - -class CSymbianOmxComponentLoader : private COmxComponentLoaderIf - { -public: - class TOmxComponentInfo - { - public: - TOmxComponentInfo(); - public: - TUid iUid; - TBuf8 iComponentName; - TBuf8 iRoles; - }; - -public: - OMX_HANDLETYPE Handle(); - - static CSymbianOmxComponentLoader* NewL(); - - ~CSymbianOmxComponentLoader(); - - OMX_ERRORTYPE InitializeComponentLoader(); - OMX_ERRORTYPE UnInitializeComponentLoader(OMX_LOADERTYPE* loader); - OMX_ERRORTYPE LoadComponent( OMX_HANDLETYPE* pHandle, - const OMX_STRING cComponentName, - OMX_PTR pAppData, - OMX_CALLBACKTYPE* pCallBacks ); - OMX_ERRORTYPE UnloadComponent( OMX_HANDLETYPE hComponent ); - OMX_ERRORTYPE ComponentNameEnum( OMX_STRING cComponentName, - OMX_U32 nNameLength, - const OMX_U32 nIndex ); - OMX_ERRORTYPE GetRolesOfComponent( const OMX_STRING compName, - OMX_U32* pNumRoles, - OMX_U8** roles ); - OMX_ERRORTYPE GetComponentsOfRole( const OMX_STRING role, - OMX_U32* pNumComps, - OMX_U8** compNames ); - -private: - CSymbianOmxComponentLoader(); - void ConstructL(); - -private: - OMX_LOADERTYPE* iHandle; - - RArray iComponentNameList; - RPointerArray iComponents; - }; - -inline CSymbianOmxComponentLoader::TOmxComponentInfo::TOmxComponentInfo(): - iUid(TUid::Uid(0)),iComponentName(0),iRoles(0) - { - } - - -#endif /*OMXILSYMBIANCOMPONENTLOADER_H*/ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/loader/omxilsymbianloader.rss --- a/omxil/omxilcore/src/loader/omxilsymbianloader.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// omxilloader.rss -// -// - -#include -#include "../core/omxiluids.hrh" -#include - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidOmxILLoaderDll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUidOmxILLoaderInterface; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidOmxILSymbianComponentLoader; - version_no = 1; - display_name = ""; - default_data = "" ; - opaque_data = ""; - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/omxilcoreclient/log.h --- a/omxil/omxilcore/src/omxilcoreclient/log.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef __SWI_LOG_H__ -#define __SWI_LOG_H__ - -#include - -namespace DSD -{ - -class TTruncateOverflowHandler16 : public TDes16Overflow - { - public: - virtual void Overflow( TDes16& aDes ); - }; - -inline void TTruncateOverflowHandler16::Overflow( TDes16& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -class TTruncateOverflowHandler8 : public TDes8Overflow - { - public: - virtual void Overflow( TDes8& aDes ); - }; - -inline void TTruncateOverflowHandler8::Overflow( TDes8& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -#ifdef _DEBUG - -#ifdef _OMXIL_CORECLIENT_DEBUG_TRACING_ON - -#define DEBUG_PRINTF(a) {DSD::DebugPrintf(__LINE__, __FILE__, a);} -#define DEBUG_PRINTF2(a, b) {DSD::DebugPrintf(__LINE__, __FILE__, a, b);} -#define DEBUG_PRINTF3(a, b, c) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c);} -#define DEBUG_PRINTF4(a, b, c, d) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d);} -#define DEBUG_PRINTF5(a, b, c, d, e) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d, e);} - -#define DEBUG_CODE_SECTION(a) TRAP_IGNORE({ a; }) - -// UTF-8 overload of the DebufPrintf method. Should be used by default, -// since it's cheaper both in CPU cycles and stack space. - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler8 overflowHandler8; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<1024> buffer; - _LIT8(KSwiLogPrefix, "[corecl] "); - _LIT8(KSwiLineFileFormat, "TID[%d] : [%s:%d] -- "); - buffer.Append(KSwiLogPrefix); - RThread thread; - TUint threadId = thread.Id(); - thread.Close(); - RProcess proc; - TFileName fName = proc.FileName(); - proc.Close(); - buffer.AppendFormat(KSwiLineFileFormat, threadId, aFile, aLine); - buffer.AppendFormatList(aFormat, list ,&overflowHandler8 ); - buffer.Append(_L8("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } - -// Unicode DebufPrintf overload - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler16 overflowHandler16; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<256> header; - _LIT8(KSwiLogPrefix, "[corecl] "); - _LIT8(KSwiLineFileFormat, "%Ld Line: % 5d, File: %s -- "); - header.Append(KSwiLogPrefix); - header.AppendFormat(KSwiLineFileFormat, now.Int64(), aLine, aFile); - - TBuf<1024> buffer; - buffer.Copy(header); - buffer.AppendFormatList(aFormat, list ,&overflowHandler16); - buffer.Append(_L("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - -} // namespace DSD - -#endif // __SWI_LOG_H__ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/omxilcoreclient/omxilcoreclientsession.cpp --- a/omxil/omxilcore/src/omxilcoreclient/omxilcoreclientsession.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1212 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include - -#include "log.h" -#include "omxilcoreclientsession.h" -#include "omxilcoreclientserver.h" -#include "omxilcore.h" - -#ifdef __WINSCW__ -#include -#include "../core/omxiluids.hrh" -#endif - -_LIT(KOmxILCoreClientPanic, "OmxILCoreClient Panic"); -const TInt KOpenSeverSessionMaxRetries = 3; - -namespace - { -/* - This class is used to provide a global cache of a reference to the COmxILCore - object. A mutex is provided to serialize the access to the IL Core - reference. A global object of this class is intended to be used only through - the IL Core Client library which in turn is used by any thread in the process - that needs to access the OpenMAX IL Core services. - -*/ - class XGlobalILCoreCache - { - public: - inline XGlobalILCoreCache(); - inline ~XGlobalILCoreCache(); - - inline static XGlobalILCoreCache* IlCoreCache(); - inline void SetILCore(COmxILCore* aILCore); - inline COmxILCore* ILCore(); - - inline RServer2 &ServerHandle(); - inline TInt SetServerHandle(TUint32 aServerHandle); - - inline void Lock(); - inline void Unlock(); - - private: - - RMutex iMutex; - TInt iError; - COmxILCore* iILCore; - RServer2 iServerHandle; - }; - -#ifndef __WINSCW__ -XGlobalILCoreCache gGlobalILCoreCache; -#endif - - } // unnamed namespace - -XGlobalILCoreCache* XGlobalILCoreCache::IlCoreCache() - { -#ifdef __WINSCW__ - const TUid KUidOmxILCoreClientDllUid = { KUidOmxILCoreClientDll }; - XGlobalILCoreCache* pGlobalIlCoreCache = 0; - if (NULL == (pGlobalIlCoreCache = - Pls(KUidOmxILCoreClientDllUid, NULL))) - { - return NULL; - } - - XGlobalILCoreCache& gGlobalILCoreCache = *pGlobalIlCoreCache; -#endif - return (gGlobalILCoreCache.iError == KErrNone) ? &gGlobalILCoreCache : NULL; - } - -inline XGlobalILCoreCache::XGlobalILCoreCache() - : iMutex(), iError(KErrNone), iILCore(NULL), iServerHandle() - { - DEBUG_PRINTF(_L8("XGlobalILCoreCache::XGlobalILCoreCache")); - iError = iMutex.CreateLocal(EOwnerProcess); - } - -inline XGlobalILCoreCache::~XGlobalILCoreCache() - { - DEBUG_PRINTF(_L8("XGlobalILCoreCache::~XGlobalILCoreCache")); - iMutex.Close(); - iServerHandle.Close(); - } - -inline COmxILCore* XGlobalILCoreCache::ILCore() - { - __ASSERT_ALWAYS(iError == KErrNone, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - - return iILCore; - } - -inline void XGlobalILCoreCache::SetILCore(COmxILCore* aILCore) - { - __ASSERT_ALWAYS(iError == KErrNone, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - __ASSERT_ALWAYS(iMutex.IsHeld(), - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - - iILCore = aILCore; - } - -inline RServer2 &XGlobalILCoreCache::ServerHandle() - { - return iServerHandle; - } - -inline TInt XGlobalILCoreCache::SetServerHandle(TUint32 aServerHandle) - { - iServerHandle.Close(); - iServerHandle.SetHandle(aServerHandle); - return KErrNone; - } - -inline void XGlobalILCoreCache::Lock() - { - __ASSERT_ALWAYS(iError == KErrNone, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - iMutex.Wait(); - } - -inline void XGlobalILCoreCache::Unlock() - { - __ASSERT_ALWAYS(iError == KErrNone, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - __ASSERT_ALWAYS(iMutex.IsHeld(), - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - iMutex.Signal(); - } - - -ROmxILCoreClientSession::ROmxILCoreClientSession() - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::ROmxILCoreClientSession")); - } - -/** - * - */ -ROmxILCoreClientSession::~ROmxILCoreClientSession() - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::~ROmxILCoreClientSession")); - - } - -/** - Starts the separate IL Core server thread if not already started - - @return KErrAlreadyExists if the IL Core server has already been - started. System-wide error if the creation of the session with the IL Core - server did not succeed. -*/ -TInt ROmxILCoreClientSession::Connect() - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::Connect")); - - TInt err = KErrNotFound; - XGlobalILCoreCache *glbCache = XGlobalILCoreCache::IlCoreCache(); - if(!glbCache) - { - return KErrGeneral; - } - if(glbCache->ServerHandle().Handle() != KNullHandle) - { - err = CreateSession(glbCache->ServerHandle(), TVersion(1,0,0)); - } - - if(err == KErrNotFound) - { - // Server not running - TUint32 serverHandle = KNullHandle; - if (KErrNone != (err = StartOmxILCoreServer(&serverHandle))) - { - return err; - } - err = glbCache->SetServerHandle(serverHandle); - } - else - { - // The server exists already... close the session and return... - RHandleBase::Close(); - return KErrAlreadyExists; - } - - if(glbCache->ServerHandle().Handle() == KNullHandle) - { - return KErrNotFound; - } - - // Now, create the session... - if (KErrNone == err) - { - err = CreateSession(glbCache->ServerHandle(), TVersion(1,0,0)); - } - - return err; - - } - -/** - Opens a session to the IL Core server thread that should already be started - - @return KErrNone if successful, otherwise one of the other system-wide error - codes -*/ -TInt ROmxILCoreClientSession::Open() - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::Open")); - - XGlobalILCoreCache *glbCache = XGlobalILCoreCache::IlCoreCache(); - if(glbCache->ServerHandle().Handle() == KNullHandle) - { - return KErrNotFound; - } - return CreateSession(glbCache->ServerHandle(), TVersion(1,0,0)); - - } - -/** - Closes the session to the IL Core server thread. -*/ -void ROmxILCoreClientSession::Close() - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::Close")); - - RHandleBase::Close(); - - } - -/** - Requests initialization of the OpenMAX IL Core loaders. - - @return OMX_ERRORTYPE - */ -OMX_ERRORTYPE ROmxILCoreClientSession::ListLoaders() - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::ListLoaders")); - - // Param 0 - OMX_ERRORTYPE err = OMX_ErrorNone; - TPckgBuf pckg0; - - TIpcArgs arg(&pckg0); - SendReceive(EOmxILCoreListLoaders, arg); - - // Extract the output values returned from the server. - err = pckg0(); - return err; - - } - -/** - Requests de-initialization of the OpenMAX IL core. It closes the session to - the IL Core server. - - @return OMX_ERRORTYPE - */ -OMX_ERRORTYPE ROmxILCoreClientSession::DeinitAndClose() - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::DeinitAndClose")); - - // Param 0 - OMX_ERRORTYPE err = OMX_ErrorNone; - TPckgBuf pckg0; - - // Param 1 - TUint64 serverThreadId = 0; - TPckgBuf pckg1; - - TIpcArgs arg(&pckg0, &pckg1); - SendReceive(EOmxILCoreDeinit, arg); - - // Extract the output values returned from the server. - err = pckg0(); - serverThreadId = pckg1(); - - RHandleBase::Close(); - - // Release server handle so it will exit cleanly. - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - - pGlobalILCoreCache->SetServerHandle(KNullHandle); - - RThread serverThread; - TInt ret = serverThread.Open(TThreadId(serverThreadId)); - - if ((KErrNone == ret) && (serverThread.Handle() != KNullHandle)) - { - DEBUG_PRINTF2(_L8("ROmxILCoreClientSession::DeinitAndClose : serverThread.Handle =[%d]"), serverThread.Handle()); - TBool logoffFailed = EFalse; - TRequestStatus logoffStatus; - serverThread.Logon(logoffStatus); - - if (logoffStatus == KErrNoMemory) - { - logoffFailed = ETrue; - } - - if (!logoffFailed) - { - if (logoffStatus == KRequestPending) - { - User::WaitForRequest(logoffStatus); - } - else - { - serverThread.LogonCancel(logoffStatus); - User::WaitForRequest(logoffStatus); - } - } - else - { - serverThread.Kill(KErrDied); - } - } - - serverThread.Close(); - - return err; - - } - - -/** - Obtains the IL Core pointer stored in the IL Core thread. - - @return COmxILCore& - - */ -COmxILCore& ROmxILCoreClientSession::ILCore() - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::ILCore")); - - // Param 0 - TPckgBuf pckg0; - - TPckgBuf pckg1; - - TIpcArgs arg(&pckg0, &pckg1); - SendReceive(EOmxILCoreGetILCore, arg); - - // Extract the output values returned from the server. - // OMX error is not relevant... - __ASSERT_ALWAYS(pckg1() != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - - return *pckg1(); - - } - - -/** - Requests OMX_ComponentNameEnum to the OpenMAX IL core. - - @return OMX_ERRORTYPE - - */ -OMX_ERRORTYPE ROmxILCoreClientSession::ComponentNameEnum( - OMX_STRING cComponentName, - OMX_U32 nNameLength, - OMX_U32 nIndex) - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::ComponentNameEnum")); - - // Param 0 - OMX_ERRORTYPE err = OMX_ErrorNone; - TPckgBuf pckg0; - - // Param 1 - TComponentNameEnum arg1; - arg1.cComponentName = cComponentName; - arg1.nNameLength = nNameLength; - arg1.nIndex = nIndex; - - TIpcArgs arg(&pckg0, &arg1); - SendReceive(EOmxILCoreComponentNameEnum, arg); - - // Extract the output values returned from the server. - err = pckg0(); - return err; - - } - -/** - Requests OMX_GetHandle to the OpenMAX IL core. - - @return OMX_ERRORTYPE - - */ -OMX_ERRORTYPE ROmxILCoreClientSession::GetHandle( - OMX_HANDLETYPE* pHandle, - OMX_STRING cComponentName, - OMX_PTR pAppData, - OMX_CALLBACKTYPE* pCallBacks) - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::GetHandle")); - - // Param 0 - OMX_ERRORTYPE err = OMX_ErrorNone; - TPckgBuf pckg0; - - - // Param 1 - TGetHandle arg1; - arg1.pHandle = pHandle; - arg1.cComponentName = cComponentName; - arg1.pAppData = pAppData; - arg1.pCallBacks = pCallBacks; - - TIpcArgs arg(&pckg0, &arg1); - SendReceive(EOmxILCoreGetHandle, arg); - - // Extract the output values returned from the server. - err = pckg0(); - return err; - - } - -/** - Requests OMX_FreeHandle to the OpenMAX IL core. - - @return OMX_ERRORTYPE - - */ -OMX_ERRORTYPE ROmxILCoreClientSession::FreeHandle( - OMX_HANDLETYPE hComponent) - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::FreeHandle")); - - // Param 0 - OMX_ERRORTYPE err = OMX_ErrorNone; - TPckgBuf pckg0; - - TIpcArgs arg(&pckg0, hComponent); - SendReceive(EOmxILCoreFreeHandle, arg); - - // Extract the output values returned from the server. - err = pckg0(); - return err; - - } - -/** - Requests OMX_SetupTunnel to the OpenMAX IL core. - - @return OMX_ERRORTYPE - - */ -OMX_ERRORTYPE ROmxILCoreClientSession::SetupTunnel( - OMX_HANDLETYPE hOutput, - OMX_U32 nPortOutput, - OMX_HANDLETYPE hInput, - OMX_U32 nPortInput) - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::SetupTunnel")); - - // Param 0 - OMX_ERRORTYPE err = OMX_ErrorNone; - TPckgBuf pckg0; - - TSetupTunnel arg1; - arg1.hOutput = hOutput; - arg1.nPortOutput = nPortOutput; - arg1.hInput = hInput; - arg1.nPortInput = nPortInput; - - TIpcArgs arg(&pckg0, &arg1); - SendReceive(EOmxILCoreSetupTunnel, arg); - - // Extract the output values returned from the server. - err = pckg0(); - return err; - - } - -/** - Requests OMX_GetContentPipe to the OpenMAX IL core. - - @return OMX_ERRORTYPE - - */ -OMX_ERRORTYPE ROmxILCoreClientSession::GetContentPipe( - OMX_HANDLETYPE* hPipe, - OMX_STRING szURI) - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::GetContentPipe")); - - // Param 0 - OMX_ERRORTYPE err = OMX_ErrorNone; - TPckgBuf pckg0; - - // Param 1 - TGetContentPipe arg1; - arg1.hPipe = hPipe; - arg1.szURI = szURI; - - TIpcArgs arg(&pckg0, &arg1); - SendReceive(EOmxILCoreGetContentPipe, arg); - - // Extract the output values returned from the server. - err = pckg0(); - return err; - - } - -/** - Requests OMX_GetComponentsOfRole to the OpenMAX IL core. - - @return OMX_ERRORTYPE - - */ -OMX_ERRORTYPE ROmxILCoreClientSession::GetComponentsOfRole( - OMX_STRING role, - OMX_U32* pNumComps, - OMX_U8** compNames) - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::GetComponentsOfRole")); - - // Param 0 - OMX_ERRORTYPE err = OMX_ErrorNone; - TPckgBuf pckg0; - - TGetComponentsOfRole arg1; - arg1.role = role; - arg1.pNumComps = pNumComps; - arg1.compNames = compNames; - - TIpcArgs arg(&pckg0, &arg1); - SendReceive(EOmxILCoreGetComponentsOfRole, arg); - - // Extract the output values returned from the server. - err = pckg0(); - return err; - - } - -/** - Requests OMX_GetRolesOfComponent to the OpenMAX IL core. - - @return OMX_ERRORTYPE - - */ -OMX_ERRORTYPE ROmxILCoreClientSession::GetRolesOfComponent( - OMX_STRING compName, - OMX_U32 *pNumRoles, - OMX_U8 **roles) - { - DEBUG_PRINTF(_L8("ROmxILCoreClientSession::GetRolesOfComponent")); - - // Param 0 - OMX_ERRORTYPE err = OMX_ErrorNone; - TPckgBuf pckg0; - - TGetRolesOfComponent arg1; - arg1.compName = compName; - arg1.pNumRoles = pNumRoles; - arg1.roles = roles; - - TIpcArgs arg(&pckg0, &arg1); - SendReceive(EOmxILCoreGetRolesOfComponent, arg); - - // Extract the output values returned from the server. - err = pckg0(); - return err; - - } - - -// -// OMX IL Operations... -// - -/** - The OMX_Init method initializes the OpenMAX IL core. OMX_Init shall be the - first call made into OpenMAX IL and should be executed only one time without - an intervening OMX_Deinit call. If OMX_Init is called twice, OMX_ErrorNone - is returned but the init request is ignored. - - @return OMX_ERRORTYPE - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Init() - { - - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - pGlobalILCoreCache->Lock(); - - // OMX_Init may be called several times, only the first time must have an - // effect.... - OMX_ERRORTYPE omxError = OMX_ErrorNone; - if (pGlobalILCoreCache->ILCore() != NULL) - { - omxError = OMX_ErrorNone; - } - else - { - // Connect will create the server side thread the first time it is - // called... The IL Core object will be instantiated at the sever - // side... - ROmxILCoreClientSession coresession; - TInt err = coresession.Connect(); - // There should not exist a client thread already created at this - // point... - __ASSERT_ALWAYS(err != KErrAlreadyExists, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - if (KErrNone == err) - { - // Obtain the ILCore from the server side... - COmxILCore& ilCore = coresession.ILCore(); - //... and cache it globally so the client library doesn't need to - // access the server every time the IL Core is needed... - pGlobalILCoreCache->SetILCore(&ilCore); - - // This will call COmxILCore::ListLoaders()...We want to initialize - // loader ecom plugins in the IL Core thread, so we can make sure - // they get destroyed in the same thread, the IL Core thread. - omxError = coresession.ListLoaders(); - } - else - { - // This is to make sure we return something that conforms with - // table 3-9 in the spec. - switch(err) - { - case KErrTimedOut: - { - omxError = OMX_ErrorTimeout; - } - break; - case KErrNoMemory: - default: - { - omxError = OMX_ErrorInsufficientResources; - } - }; - } - coresession.Close(); - - if (omxError != OMX_ErrorNone) - { - ROmxILCoreClientSession coresession; - TInt openRetryCounter = KOpenSeverSessionMaxRetries; - TInt err = KErrNone; - // Try to connect to the server several times... - do - { - err = coresession.Open(); - } - while(KErrNone != err && --openRetryCounter > 0); - - if (KErrNone == err) - { - // IL Core deinitialization in the server thread to make sure that - // loader plugins are destroyed in the same thread... - coresession.DeinitAndClose(); - // At this point, the IL Core has been successfully - // deinitialized...remove the cached reference... - pGlobalILCoreCache->SetILCore(NULL); - } - - coresession.Close(); - } - } - - pGlobalILCoreCache->Unlock(); - return omxError; - - } - -/** - The OMX_Deinit method de-initializes the OpenMAX core. OMX_Deinit should be - the last call made into the OpenMAX core after all OpenMAX-related resources have - been released - - @return OMX_ERRORTYPE - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Deinit() - { - - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - pGlobalILCoreCache->Lock(); - - // OMX_Deinit may be called several times.... only the first time will - // remove the IL Core and the remaining ones must simply have no effect... - OMX_ERRORTYPE omxError = OMX_ErrorNone; - if (pGlobalILCoreCache->ILCore() == NULL) - { - omxError = OMX_ErrorNone; - } - else - { - ROmxILCoreClientSession coresession; - TInt openRetryCounter = KOpenSeverSessionMaxRetries; - TInt err = KErrNone; - // Try to connect to the server several times... - do - { - err = coresession.Open(); - __ASSERT_ALWAYS(KErrNotFound != err, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - } - while(KErrNone != err && --openRetryCounter > 0); - - if (KErrNone == err) - { - // IL Core deinitialization in the server thread to make sure that - // loader plugins are destroyed in the same thread... - omxError = coresession.DeinitAndClose(); - // At this point, the IL Core has been successfully - // deinitialized...remove the cached reference... - if (omxError == OMX_ErrorNone) - { - pGlobalILCoreCache->SetILCore(NULL); - } - } - else - { - // This is to make sure we return something that conforms with - // table 3-9 in the spec. - switch(err) - { - case KErrTimedOut: - { - omxError = OMX_ErrorTimeout; - } - break; - default: - { - omxError = OMX_ErrorNone; - } - }; - } - - coresession.Close(); - } - - pGlobalILCoreCache->Unlock(); - return omxError; - - } - -/** - The OMX_ComponentNameEnum method will enumerate through all the names of - recognized components in the system to detect all the components in the system - run-time. - - @return OMX_ERRORTYPE - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_ComponentNameEnum( - OMX_OUT OMX_STRING cComponentName, - OMX_IN OMX_U32 nNameLength, - OMX_IN OMX_U32 nIndex) - { - - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - pGlobalILCoreCache->Lock(); - - // OpenMAX IL mandates that OMX_Init must be the first OMX call made into - // the IL Core... - __ASSERT_ALWAYS(pGlobalILCoreCache->ILCore() != NULL, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - - ROmxILCoreClientSession coresession; - OMX_ERRORTYPE omxError = OMX_ErrorNone; - TInt err = coresession.Open(); - __ASSERT_ALWAYS(KErrNotFound != err, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - // As mandated by the spec, we list and initialize loaders if the index is - // 0. - if (0 == nIndex && KErrNone == err) - { - // Ignore if any error... - coresession.ListLoaders(); - } - - if (CActiveScheduler::Current()) - { - COmxILCore& ilCore = *pGlobalILCoreCache->ILCore(); - omxError = ilCore.ComponentNameEnum( - cComponentName, - nNameLength, - nIndex); - } - else - { - if (KErrNone == err) - { - omxError = coresession.ComponentNameEnum( - cComponentName, - nNameLength, - nIndex); - } - else - { - omxError = OMX_ErrorUndefined; - } - - } - - coresession.Close(); - pGlobalILCoreCache->Unlock(); - return omxError; - - } - -/** - The OMX_GetHandle method will locate the component specified by the - component name given, load that component into memory, and validate it. - - @return OMX_ERRORTYPE - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_GetHandle( - OMX_OUT OMX_HANDLETYPE* pHandle, - OMX_IN OMX_STRING cComponentName, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_CALLBACKTYPE* pCallBacks) - { - - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - pGlobalILCoreCache->Lock(); - - // OpenMAX IL mandates that OMX_Init must be the first OMX call made into - // the IL Core... - __ASSERT_ALWAYS(pGlobalILCoreCache->ILCore() != NULL, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - OMX_ERRORTYPE omxError = OMX_ErrorNone; - if (CActiveScheduler::Current()) - { - COmxILCore& ilCore = *pGlobalILCoreCache->ILCore(); - omxError = ilCore.LoadComponent( - cComponentName, - pHandle, - pAppData, - pCallBacks); - } - else - { - ROmxILCoreClientSession coresession; - TInt err = coresession.Open(); - // OMX_Init must be the first OMX call - __ASSERT_ALWAYS(KErrNotFound != err, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - - if (KErrNone == err) - { - omxError = coresession.GetHandle( - pHandle, - cComponentName, - pAppData, - pCallBacks); - } - else - { - omxError = OMX_ErrorUndefined; - } - - coresession.Close(); - } - - pGlobalILCoreCache->Unlock(); - return omxError; - - } - -/** - The OMX_FreeHandle method will free a handle allocated by the OMX_GetHandle - method. - - @return OMX_ERRORTYPE -*/ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_FreeHandle( - OMX_IN OMX_HANDLETYPE hComponent) - { - - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - pGlobalILCoreCache->Lock(); - - // OpenMAX IL mandates that OMX_Init must be the first OMX call made into - // the IL Core... - __ASSERT_ALWAYS(pGlobalILCoreCache->ILCore() != NULL, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - OMX_ERRORTYPE omxError = OMX_ErrorNone; - if (CActiveScheduler::Current()) - { - COmxILCore& ilCore = *pGlobalILCoreCache->ILCore(); - omxError = ilCore.FreeHandle(hComponent); - } - else - { - ROmxILCoreClientSession coresession; - TInt err = coresession.Open(); - __ASSERT_ALWAYS(KErrNotFound != err, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - if (KErrNone == err) - { - omxError = coresession.FreeHandle(hComponent); - } - else - { - omxError = OMX_ErrorUndefined; - } - - coresession.Close(); - } - - pGlobalILCoreCache->Unlock(); - return omxError; - - } - -/** - The OMX_SetupTunnel method sets up tunneled communication between an output - port and an input port. - - @return OMX_ERRORTYPE - */ -OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_SetupTunnel( - OMX_IN OMX_HANDLETYPE hOutput, - OMX_IN OMX_U32 nPortOutput, - OMX_IN OMX_HANDLETYPE hInput, - OMX_IN OMX_U32 nPortInput) - { - - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - pGlobalILCoreCache->Lock(); - - // OpenMAX IL mandates that OMX_Init must be the first OMX call made into - // the IL Core... - __ASSERT_ALWAYS(pGlobalILCoreCache->ILCore() != NULL, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - // SetupTunnel is reentrant and thus thread-safe, so no need to lock the - // IL Core instance... - pGlobalILCoreCache->Unlock(); - - OMX_ERRORTYPE omxError = OMX_ErrorNone; - if (CActiveScheduler::Current()) - { - omxError = COmxILCore::SetupTunnel( - hOutput, - nPortOutput, - hInput, - nPortInput); - } - else - { - ROmxILCoreClientSession coresession; - TInt err = coresession.Open(); - __ASSERT_ALWAYS(KErrNotFound != err, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - if (KErrNone == err) - { - omxError = coresession.SetupTunnel( - hOutput, - nPortOutput, - hInput, - nPortInput); - } - else - { - // This is to make sure we return something that conforms with - // table 3-9 in the spec. Cannot return OMX_ErrorUndefined - omxError = OMX_ErrorTimeout; - } - - coresession.Close(); - } - - return omxError; - - } - -/** - The OMX_GetContentPipe method returns a content pipe capable of manipulating a - given piece of content as (specified via URI) - - @return OMX_ERRORTYPE - */ -OMX_API OMX_ERRORTYPE OMX_GetContentPipe( - OMX_OUT OMX_HANDLETYPE* hPipe, - OMX_IN OMX_STRING szURI) - { - - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - pGlobalILCoreCache->Lock(); - - // OpenMAX IL mandates that OMX_Init must be the first OMX call made into - // the IL Core... - __ASSERT_ALWAYS(pGlobalILCoreCache->ILCore() != NULL, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - OMX_ERRORTYPE omxError = OMX_ErrorNone; - if (CActiveScheduler::Current()) - { - COmxILCore& ilCore = *pGlobalILCoreCache->ILCore(); - omxError = ilCore.GetContentPipe( - hPipe, - szURI); - } - else - { - ROmxILCoreClientSession coresession; - TInt err = coresession.Open(); - // OMX_Init needs to be the first OMX call - __ASSERT_ALWAYS(KErrNotFound != err, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - if (KErrNone == err) - { - omxError = coresession.GetContentPipe( - hPipe, - szURI); - } - else - { - omxError = OMX_ErrorUndefined; - } - - coresession.Close(); - } - - pGlobalILCoreCache->Unlock(); - return omxError; - - } - -/** - The OMX_GetComponentsOfRole function that enables the IL client to query the - names of all installed components that support a given role. - - @return OMX_ERRORTYPE - */ -OMX_API OMX_ERRORTYPE OMX_GetComponentsOfRole ( - OMX_IN OMX_STRING role, - OMX_INOUT OMX_U32* pNumComps, - OMX_INOUT OMX_U8** compNames) - { - - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - pGlobalILCoreCache->Lock(); - - // OpenMAX IL mandates that OMX_Init must be the first OMX call made into - // the IL Core... - __ASSERT_ALWAYS(pGlobalILCoreCache->ILCore() != NULL, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - ROmxILCoreClientSession coresession; - OMX_ERRORTYPE omxError = OMX_ErrorNone; - TInt err = coresession.Open(); - // OMX_Init needs to be the first OMX call - __ASSERT_ALWAYS(KErrNotFound != err, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - // The OMX IL spec does not mandate this, but it probably should. We list - // and initialize loaders here too, if we can. - if (KErrNone == err) - { - // Ignore if any error... - coresession.ListLoaders(); - } - - if (CActiveScheduler::Current()) - { - COmxILCore& ilCore = *pGlobalILCoreCache->ILCore(); - omxError = ilCore.GetComponentsOfRole( - role, - pNumComps, - compNames); - } - else - { - - if (KErrNone == err) - { - omxError = coresession.GetComponentsOfRole( - role, - pNumComps, - compNames); - } - else - { - omxError = OMX_ErrorUndefined; - } - - } - - coresession.Close(); - pGlobalILCoreCache->Unlock(); - return omxError; - - } - -/** - The function that enables the IL client to query all the roles fulfilled by - a given a component. - - @return OMX_ERRORTYPE - */ -OMX_API OMX_ERRORTYPE OMX_GetRolesOfComponent ( - OMX_IN OMX_STRING compName, - OMX_INOUT OMX_U32* pNumRoles, - OMX_OUT OMX_U8** roles) - { - - XGlobalILCoreCache* pGlobalILCoreCache = XGlobalILCoreCache::IlCoreCache(); - __ASSERT_ALWAYS(pGlobalILCoreCache != NULL, - User::Panic(KOmxILCoreClientPanic, KErrNotReady)); - pGlobalILCoreCache->Lock(); - - // OpenMAX IL mandates that OMX_Init must be the first OMX call made into - // the IL Core... - __ASSERT_ALWAYS(pGlobalILCoreCache->ILCore() != NULL, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - ROmxILCoreClientSession coresession; - TInt err = coresession.Open(); - // OMX_Init needs to be the first OMX call - __ASSERT_ALWAYS(KErrNotFound != err, - User::Panic(KOmxILCoreClientPanic, - KErrNotReady)); - - // The OMX IL spec does not mandate this, but it probably should. We list - // and initialize loaders here too, if we can. - if (KErrNone == err) - { - // Ignore if any error... - coresession.ListLoaders(); - } - - OMX_ERRORTYPE omxError = OMX_ErrorNone; - if (CActiveScheduler::Current()) - { - COmxILCore& ilCore = *pGlobalILCoreCache->ILCore(); - omxError = ilCore.GetRolesOfComponent( - compName, - pNumRoles, - roles); - } - else - { - - if (KErrNone == err) - { - omxError = coresession.GetRolesOfComponent( - compName, - pNumRoles, - roles); - } - else - { - omxError = OMX_ErrorUndefined; - } - - } - - coresession.Close(); - pGlobalILCoreCache->Unlock(); - return omxError; - - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/omxilcoreclient/omxilcoreclientsession.h --- a/omxil/omxilcore/src/omxilcoreclient/omxilcoreclientsession.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// omilcoreclientsession.h -// -// - -#ifndef OMXILCORECLIENTSESSION_H -#define OMXILCORECLIENTSESSION_H - -#include -#include "omxilcoreclientserver.h" - -class COmxILCore; - -/** - Client-side of a an IL Client - IL Core communication - */ -NONSHARABLE_CLASS(ROmxILCoreClientSession) : public RSessionBase - { - -public: - - ROmxILCoreClientSession(); - ~ROmxILCoreClientSession(); - - TInt Connect(); - TInt Open(); - void Close(); - - // Retrieves an IL Core reference from the IL Core thread - COmxILCore& ILCore(); - - // - // OMX IL Operations... - // - - OMX_ERRORTYPE ListLoaders(); - - OMX_ERRORTYPE DeinitAndClose(); - - OMX_ERRORTYPE ComponentNameEnum( - OMX_STRING cComponentName, - OMX_U32 nNameLength, - OMX_U32 nIndex); - - OMX_ERRORTYPE GetHandle( - OMX_HANDLETYPE* pHandle, - OMX_STRING cComponentName, - OMX_PTR pAppData, - OMX_CALLBACKTYPE* pCallBacks); - - OMX_ERRORTYPE FreeHandle( - OMX_HANDLETYPE hComponent); - - OMX_ERRORTYPE SetupTunnel( - OMX_HANDLETYPE hOutput, - OMX_U32 nPortOutput, - OMX_HANDLETYPE hInput, - OMX_U32 nPortInput); - - OMX_ERRORTYPE GetContentPipe( - OMX_HANDLETYPE *hPipe, - OMX_STRING szURI); - - OMX_ERRORTYPE GetComponentsOfRole ( - OMX_STRING role, - OMX_U32 *pNumComps, - OMX_U8 **compNames); - - OMX_ERRORTYPE GetRolesOfComponent ( - OMX_STRING compName, - OMX_U32 *pNumRoles, - OMX_U8 **roles); - - }; - -#endif // OMXILCORECLIENTSESSION_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/omxilcoreserver/log.h --- a/omxil/omxilcore/src/omxilcoreserver/log.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef __SWI_LOG_H__ -#define __SWI_LOG_H__ - -#include - -namespace DSD -{ - -class TTruncateOverflowHandler16 : public TDes16Overflow - { - public: - virtual void Overflow( TDes16& aDes ); - }; - -inline void TTruncateOverflowHandler16::Overflow( TDes16& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -class TTruncateOverflowHandler8 : public TDes8Overflow - { - public: - virtual void Overflow( TDes8& aDes ); - }; - -inline void TTruncateOverflowHandler8::Overflow( TDes8& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -#ifdef _DEBUG - -#ifdef _OMXIL_CORESERVER_DEBUG_TRACING_ON - -#define DEBUG_PRINTF(a) {DSD::DebugPrintf(__LINE__, __FILE__, a);} -#define DEBUG_PRINTF2(a, b) {DSD::DebugPrintf(__LINE__, __FILE__, a, b);} -#define DEBUG_PRINTF3(a, b, c) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c);} -#define DEBUG_PRINTF4(a, b, c, d) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d);} -#define DEBUG_PRINTF5(a, b, c, d, e) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d, e);} - -#define DEBUG_CODE_SECTION(a) TRAP_IGNORE({ a; }) - -// UTF-8 overload of the DebufPrintf method. Should be used by default, -// since it's cheaper both in CPU cycles and stack space. - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler8 overflowHandler8; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<1024> buffer; - _LIT8(KSwiLogPrefix, "[coresv] "); - _LIT8(KSwiLineFileFormat, "TID[%d] : [%s:%d] -- "); - buffer.Append(KSwiLogPrefix); - RThread thread; - TUint threadId = thread.Id(); - thread.Close(); - RProcess proc; - TFileName fName = proc.FileName(); - proc.Close(); - buffer.AppendFormat(KSwiLineFileFormat, threadId, aFile, aLine); - buffer.AppendFormatList(aFormat, list ,&overflowHandler8 ); - buffer.Append(_L8("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } - -// Unicode DebufPrintf overload - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler16 overflowHandler16; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<256> header; - _LIT8(KSwiLogPrefix, "[coresv] "); - _LIT8(KSwiLineFileFormat, "%Ld Line: % 5d, File: %s -- "); - header.Append(KSwiLogPrefix); - header.AppendFormat(KSwiLineFileFormat, now.Int64(), aLine, aFile); - - TBuf<1024> buffer; - buffer.Copy(header); - buffer.AppendFormatList(aFormat, list ,&overflowHandler16); - buffer.Append(_L("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - - -} // namespace DSD - -#endif // __SWI_LOG_H__ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/omxilcoreserver/omxilcoreclientserver.h --- a/omxil/omxilcore/src/omxilcoreserver/omxilcoreclientserver.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILCORECLIENTSERVER_H -#define OMXILCORECLIENTSERVER_H - -#include -#include - -_LIT(KOmxILCoreServerName,"OmxILCoreServer"); - -// A larger stack is used due to Bellagio loader which uses ANSI C calls (fopen etc.). These calls require a large stack, and panic on ARM platforms if a default 8 KB stack is used -const TInt KOmxILCoreServerStackSize=0x4000; // 16KB - -const TUint KOmxILCoreServerVersion = 1; -const TUint KOmxILCoreServerMinorVersionNumber = 0; -const TUint KOmxILCoreServerBuildVersionNumber = 0; - -// Function opcodes for client to server messaging -enum TOmxILCoreClientToServerMessages - { - EOmxILCoreListLoaders = 0, - EOmxILCoreDeinit, - EOmxILCoreGetILCore, - EOmxILCoreComponentNameEnum, - EOmxILCoreGetHandle, - EOmxILCoreFreeHandle, - EOmxILCoreSetupTunnel, - EOmxILCoreGetContentPipe, - EOmxILCoreGetComponentsOfRole, - EOmxILCoreGetRolesOfComponent - }; - -enum TOmxILCoreServerState - { - EOmxILCoreServerStateIdle = 0 - }; - - -class TComponentNameEnum - { -public: - OMX_STRING cComponentName; - OMX_U32 nNameLength; - OMX_U32 nIndex; - }; - -class TGetHandle - { -public: - OMX_HANDLETYPE* pHandle; - OMX_STRING cComponentName; - OMX_PTR pAppData; - OMX_CALLBACKTYPE* pCallBacks; - }; - -class TSetupTunnel - { -public: - OMX_HANDLETYPE hOutput; - OMX_U32 nPortOutput; - OMX_HANDLETYPE hInput; - OMX_U32 nPortInput; - }; - -class TGetContentPipe - { -public: - OMX_HANDLETYPE* hPipe; - OMX_STRING szURI; - }; - -class TGetComponentsOfRole - { -public: - OMX_STRING role; - OMX_U32 *pNumComps; - OMX_U8 **compNames; - }; - -class TGetRolesOfComponent - { -public: - OMX_STRING compName; - OMX_U32 *pNumRoles; - OMX_U8 **roles; - }; - -IMPORT_C TInt StartOmxILCoreServer(TUint32 *aServerHandle); - -#endif // OMXILCORECLIENTSERVER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/omxilcoreserver/omxilcoreserver.cpp --- a/omxil/omxilcore/src/omxilcoreserver/omxilcoreserver.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,310 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "log.h" -#include "omxilcoreserver.h" -#include "omxilcoreserversession.h" -#include "omxilcoreclientserver.h" -#include "omxilcore.h" -#include - - -/** - * Constructor - */ -COmxILCoreServer::COmxILCoreServer() -: CServer2(EPriorityStandard) - { - DEBUG_PRINTF(_L8("COmxILCoreServer::COmxILCoreServer")); - Cancel(); - } - -/** - * Destructor. - */ -COmxILCoreServer::~COmxILCoreServer() - { - DEBUG_PRINTF(_L8("COmxILCoreServer::~COmxILCoreServer")); - delete ipOmxILCore; - delete ipStopCallback; - } - -/** - * Constructs, and returns a pointer to, a new COmxILCoreServer object. - * Leaves on failure. - * @return COmxILCoreServer* A pointer to newly created utlitly object. - */ -COmxILCoreServer* COmxILCoreServer::NewL() - { - DEBUG_PRINTF(_L8("COmxILCoreServer::NewL")); - COmxILCoreServer* self = NewLC(); - CleanupStack::Pop(self); - return self; - } - -/** - * Constructs, leaves object on the cleanup stack, and returns a pointer - * to, a new OMX IL Core Server object. - * Leaves on failure. - * @return COmxILCoreServer* A pointer to newly created utlitly object. - */ -COmxILCoreServer* COmxILCoreServer::NewLC() - { - DEBUG_PRINTF(_L8("COmxILCoreServer::NewLC")); - COmxILCoreServer* self = new(ELeave) COmxILCoreServer; - CleanupStack::PushL(self); - self->ConstructL(); - - return self; - } - -/** - Symbian 2nd phase constructor. - */ -void COmxILCoreServer::ConstructL() - { - DEBUG_PRINTF(_L8("COmxILCoreServer::ConstructL")); - - // Create the OpenMAX IL Core - ipOmxILCore = new (ELeave) COmxILCore; - - // Create the server termination callback object... - TCallBack callbackStop (COmxILCoreServer::StopServer, this); - ipStopCallback = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - - } - -/** - From CServer2. Creates a server-side client session object. Creates a new - session. This function may leave with one of the system-wide error codes. - - @param const TVersion& aVersion The version number of the session. - - @param const RMessage2& aMessage - - @return A pointer to the new session. - */ -CSession2* COmxILCoreServer::NewSessionL(const TVersion& aVersion, - const RMessage2& aMessage) const - { - - RThread clientThread; - aMessage.Client(clientThread); - RProcess clientProcess; - clientThread.Process(clientProcess); - RProcess thisProcess; - - DEBUG_PRINTF3(_L8("COmxILCoreServer::NewSessionL : this process [%d] - client process [%d]"), thisProcess.Id().operator TUint(), clientProcess.Id().operator TUint()); - - // Only allow sessions from clients running in the server process - if (thisProcess.Id() != clientProcess.Id()) - { - clientThread.Close(); - clientProcess.Close(); - thisProcess.Close(); - User::Leave(KErrAccessDenied); - } - - clientThread.Close(); - clientProcess.Close(); - thisProcess.Close(); - - if(!User::QueryVersionSupported(TVersion(KOmxILCoreServerVersion, - KOmxILCoreServerMinorVersionNumber, - KOmxILCoreServerBuildVersionNumber), - aVersion)) - { - User::Leave(KErrNotSupported); - } - - if (iDeinitInProgress) - { - User::Leave(KErrNotReady); - } - - COmxILCoreServerSession* omxilcoreSession = - COmxILCoreServerSession::NewL(*ipOmxILCore, - const_cast(*this)); - - return omxilcoreSession; - } - -TInt COmxILCoreServer::StopServer(TAny* aPtr) - { - DEBUG_PRINTF(_L8("COmxILCoreServer::StopServer")); - COmxILCoreServer* self = - static_cast (aPtr); - self->DoStopServer(); - return KErrNone; - - } - -void COmxILCoreServer::DoStopServer() - { - DEBUG_PRINTF(_L8("COmxILCoreServer::DoStopServer")); - CActiveScheduler::Stop(); - } - - -void COmxILCoreServer::SetDeinitInProgress() - { - DEBUG_PRINTF(_L8("COmxILCoreServer::SetDeinitInProgress")); - - iDeinitInProgress = ETrue; - - } - -void COmxILCoreServer::SessionOpened() - { - DEBUG_PRINTF(_L8("COmxILCoreServer::SessionOpened")); - - iSessionCounter++; - - } - - -void COmxILCoreServer::SessionClosed() - { - DEBUG_PRINTF(_L8("COmxILCoreServer::SessionClosed")); - - iSessionCounter--; - - if (iSessionCounter == 0 && iDeinitInProgress) - { - DEBUG_PRINTF(_L8("COmxILCoreServer::SessionClosed : iSessionCounter = 0 and DeinitInProgress = TRUE")); - ipStopCallback->Call(); - } - - } - - -TInt COmxILCoreServer::ThreadFunctionL(TAny* aServerHandle) - { - // create an active scheduler and server - CActiveScheduler* sched = new (ELeave) CActiveScheduler; - CleanupStack::PushL(sched); - - //Install the active scheduler - CActiveScheduler::Install(sched); - - COmxILCoreServer* server = COmxILCoreServer::NewL(); - CleanupStack::PushL(server); - - // Start the server - TInt err = server->Start(KNullDesC); - if (err != KErrNone) - { - return err; - } - - RServer2 serverHandle = server->Server(); - User::LeaveIfError(serverHandle.Duplicate(RThread(), EOwnerProcess)); - // Return the handle of the server to function which created us. - *reinterpret_cast(aServerHandle) = serverHandle.Handle(); - - // Let everyone know that we are ready to - // deal with requests. - RThread::Rendezvous(KErrNone); - - // And start fielding requests from client(s). - CActiveScheduler::Start(); - - CleanupStack::PopAndDestroy(2, sched); // sched, server - - return KErrNone; - } - -/** - Create the thread that will act as the server. - -*/ -TInt COmxILCoreServer::ThreadFunction(TAny* aServerHandle) - { - DEBUG_PRINTF(_L8("COmxILCoreServer::ThreadFunction")); - // get clean-up stack - CTrapCleanup* cleanup = CTrapCleanup::New(); - if (cleanup == NULL) - { - return KErrNoMemory; - } - - TRAPD( err, ThreadFunctionL(aServerHandle) ); - - REComSession::FinalClose(); - - delete cleanup; - DEBUG_PRINTF(_L8("COmxILCoreServer::ThreadFunction: returning")); - return err; - } - -/** - Create the thread that will act as the server. This function is exported - from the DLL and called by the client. - -*/ -EXPORT_C TInt StartOmxILCoreServer(TUint32 *aServerHandle) - { - DEBUG_PRINTF(_L8("StartOmxILCoreServer")); - - TInt res = KErrNone; - RThread serverThread; - - // Create the thread for the server. - res = serverThread.Create(KNullDesC, - COmxILCoreServer::ThreadFunction, - KOmxILCoreServerStackSize, - &User::Heap(), - aServerHandle); - - if (res==KErrNone) - { - DEBUG_PRINTF(_L8("StartOmxILCoreServer : Thread created")); - TRequestStatus rendezvousStatus; - - serverThread.SetPriority(EPriorityNormal); - - // Synchronise with the server - serverThread.Rendezvous(rendezvousStatus); - if (rendezvousStatus != KRequestPending) - { - serverThread.Kill(KErrDied); - } - else - { - serverThread.Resume(); - } - - User::WaitForRequest(rendezvousStatus); - if(rendezvousStatus != KErrNone) - { - res = rendezvousStatus.Int(); - } - - } - else - { - // The thread could not be created.. - DEBUG_PRINTF2(_L8("StartOmxILCoreServer : Thread Creation error [%d]"), res); - res = KErrGeneral; - } - - serverThread.Close(); - - return res; - - } - -// End of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/omxilcoreserver/omxilcoreserver.h --- a/omxil/omxilcore/src/omxilcoreserver/omxilcoreserver.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILCORESERVER_H -#define OMXILCORESERVER_H - -#include -#include -#include "omxilcoreclientserver.h" - -class COmxILCore; -class COmxILCoreServerSession; - - -NONSHARABLE_CLASS( COmxILCoreServer ): public CServer2 - { -public: - - static COmxILCoreServer* NewL(); - static COmxILCoreServer* NewLC(); - ~COmxILCoreServer(); - -public: - // The thread function executed by the server - static TInt ThreadFunction(TAny* aServerHandle); - - // Creates a new session with the server; the function - // implements the pure virtutal function - // defined in class CServer2 - CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const; - - void SetDeinitInProgress(); - - void SessionClosed(); - - void SessionOpened(); - -private : - - COmxILCoreServer(); - void ConstructL(); - - // The thread function executed by the server - static TInt ThreadFunctionL(TAny* aServerHandle); - - static TInt StopServer(TAny* aPtr); - - // Function to stop the IL Core server - void DoStopServer(); - -private : - - COmxILCore* ipOmxILCore; - CAsyncCallBack* ipStopCallback; - TBool iDeinitInProgress; - TUint iSessionCounter; - - }; - -#endif //OMXILCORESERVER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/omxilcoreserver/omxilcoreserversession.cpp --- a/omxil/omxilcore/src/omxilcoreserver/omxilcoreserversession.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,263 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "log.h" -#include "omxilcore.h" -#include "omxilcoreserver.h" -#include "omxilcoreserversession.h" - - -_LIT(KOmxILCoreServerPanic, "OmxILCoreServer Panic"); - -/** - * By default Symbian 2nd phase constructor is private. - */ -COmxILCoreServerSession::COmxILCoreServerSession(COmxILCore& aCore, COmxILCoreServer& aCoreServer) - : - iCore(aCore), - iCoreServer(aCoreServer) - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::COmxILCoreServerSession")); - - // Inform the server that this session is opening - aCoreServer.SessionOpened(); - - } - -/** - * Destructor - */ -COmxILCoreServerSession::~COmxILCoreServerSession() - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::~COmxILCoreServerSession")); - - // Inform the server that this session is closed - iCoreServer.SessionClosed(); - - } - -/** - * Constructs, and returns a pointer to, a new COmxILCoreServerSession object. - * Leaves on failure. - * @return COmxILCoreServerSession* A pointer to newly created utlitly object. - */ -COmxILCoreServerSession* COmxILCoreServerSession::NewL(COmxILCore& aCore, COmxILCoreServer& aCoreServer) - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::NewL")); - - COmxILCoreServerSession* self = new(ELeave) COmxILCoreServerSession(aCore, aCoreServer); - return self; - } - -/** - * from CSession2 - * @param aMessage - Function and data for the session - */ -void COmxILCoreServerSession::ServiceL(const RMessage2& aMessage) - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::ServiceL")); - - TRAPD( errL, DispatchMessageL(aMessage) ); - - if( errL != KErrNone ) - { - ASSERT(0); - } - } - -/** - * Dispatch the message received from ServeL - * @param aMessage - Function and data for the session - * @return error code - * @leave in case of writeL leave or request leave - */ -TInt COmxILCoreServerSession::DispatchMessageL(const RMessage2& aMessage) - { - - TInt error = KErrNone; - OMX_ERRORTYPE omxError = OMX_ErrorNone; - - TOmxILCoreClientToServerMessages messageFunction = - static_cast(aMessage.Function()); - __ASSERT_ALWAYS(messageFunction <= EOmxILCoreGetRolesOfComponent, - User::Panic(KOmxILCoreServerPanic, 0)); - - switch(messageFunction) - { - case EOmxILCoreListLoaders: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreListLoaders")); - omxError = iCore.ListLoaders(); - } - break; - - case EOmxILCoreDeinit: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreDeinit")); - - // Flag the deinitialization ... - iCoreServer.SetDeinitInProgress(); - iCore.DeinitCore(); - - // Write server thread id - RThread thisThread; - TPckgBuf p(thisThread.Id().Id()); - aMessage.WriteL(1,p); - thisThread.Close(); - } - break; - - case EOmxILCoreGetILCore: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreGetILCore")); - - // Write IL Core reference... - TPckgBuf p(&iCore); - aMessage.WriteL(1,p); - - } - break; - - case EOmxILCoreComponentNameEnum: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreComponentNameEnum")); - - TComponentNameEnum* pArg = - static_cast( - const_cast(aMessage.Ptr1())); - __ASSERT_DEBUG(pArg, User::Panic(KOmxILCoreServerPanic, 0)); - - omxError = iCore.ComponentNameEnum( - pArg->cComponentName, - pArg->nNameLength, - pArg->nIndex); - } - break; - - case EOmxILCoreGetHandle: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreGetHandle")); - - TGetHandle* pArg = - static_cast( - const_cast(aMessage.Ptr1())); - __ASSERT_DEBUG(pArg, User::Panic(KOmxILCoreServerPanic, 0)); - - omxError = iCore.LoadComponent( - pArg->cComponentName, - pArg->pHandle, - pArg->pAppData, - pArg->pCallBacks); - - } - break; - - case EOmxILCoreFreeHandle: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreFreeHandle")); - - OMX_HANDLETYPE* hComponent = - static_cast( - const_cast(aMessage.Ptr1())); - - omxError = iCore.FreeHandle(hComponent); - - } - break; - - case EOmxILCoreSetupTunnel: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreSetupTunnel")); - - TSetupTunnel* pArg = - static_cast( - const_cast(aMessage.Ptr1())); - __ASSERT_DEBUG(pArg, User::Panic(KOmxILCoreServerPanic, 0)); - - omxError = COmxILCore::SetupTunnel( - pArg->hOutput, - pArg->nPortOutput, - pArg->hInput, - pArg->nPortInput); - - } - break; - - case EOmxILCoreGetContentPipe: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreGetContentPipe")); - - TGetContentPipe* pArg = - static_cast( - const_cast(aMessage.Ptr1())); - __ASSERT_DEBUG(pArg, User::Panic(KOmxILCoreServerPanic, 0)); - - omxError = iCore.GetContentPipe( - pArg->hPipe, - pArg->szURI); - - } - break; - - case EOmxILCoreGetComponentsOfRole: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreGetComponentsOfRole")); - - TGetComponentsOfRole* pArg = - static_cast( - const_cast(aMessage.Ptr1())); - __ASSERT_DEBUG(pArg, User::Panic(KOmxILCoreServerPanic, 0)); - - omxError = iCore.GetComponentsOfRole( - pArg->role, - pArg->pNumComps, - pArg->compNames); - - } - break; - - case EOmxILCoreGetRolesOfComponent: - { - DEBUG_PRINTF(_L8("COmxILCoreServerSession::DispatchMessageL : EOmxILCoreGetRolesOfComponent")); - - TGetRolesOfComponent* pArg = - static_cast( - const_cast(aMessage.Ptr1())); - __ASSERT_DEBUG(pArg, User::Panic(KOmxILCoreServerPanic, 0)); - - omxError = iCore.GetRolesOfComponent( - pArg->compName, - pArg->pNumRoles, - pArg->roles); - - } - break; - - default: - { - // Unknown Message - error = KErrNotSupported; - } - break; - }; - - // Write OMX result - TPckgBuf p(omxError); - aMessage.WriteL(0,p); - - aMessage.Complete(error); - - return error; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilcore/src/omxilcoreserver/omxilcoreserversession.h --- a/omxil/omxilcore/src/omxilcoreserver/omxilcoreserversession.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILCORESERVERSESSION_H -#define OMXILCORESERVERSESSION_H - -#include -#include "omxilcoreclientserver.h" - -class COmxILCore; - -NONSHARABLE_CLASS(COmxILCoreServerSession) : public CSession2 - { -public: - static COmxILCoreServerSession* NewL(COmxILCore& aCore, COmxILCoreServer& aCoreServer); - - ~COmxILCoreServerSession(); - - // from CSession2 - void ServiceL(const RMessage2& aMessage); - -private: - COmxILCoreServerSession(COmxILCore& aCore, COmxILCoreServer& aCoreServer); - TInt DispatchMessageL(const RMessage2& aMessage); - -private: - - COmxILCore& iCore; - COmxILCoreServer& iCoreServer; - - }; - -#endif // OMXILCORESERVERSESSION_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/inc/omxilsymbianaudiopcmextensions.h --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/inc/omxilsymbianaudiopcmextensions.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @publishedPartner@prototype -*/ - -#ifndef OMXILSYMBIANAUDIOPCMEXTENSIONS_H -#define OMXILSYMBIANAUDIOPCMEXTENSIONS_H - - -#include - - -/** - * The string that the Symbian's OpenMAX IL PCM Renderer component will - * translate into a 32-bit OpenMAX IL index (@see - * OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP) to support the - * Volume Ramp feature of the MPlayCustomInterface CI - */ -const char sOmxSymbianPcmVolumeRamp [] = - "OMX.Symbian.index.config.audio.pcm.volumeramp"; - - -/** - * Custom index used by Symbian's OpenMAX IL PCM renderer to select the - * structure for setting/getting a Volume Ramp configuration data item - */ -#define OMX_SymbianIndexConfigAudioPcmVolumeRamp 0x7F000002 - - -/** - * Custom OpenMAX IL structure to be used as a container for an - * Volume Ramp configuration data item - */ -struct OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP - { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nPortIndex; /**< Port that this structure applies to */ - OMX_U64 nRampDuration; /**< the period, in microseconds, over which the volume level is - to rise smoothly from nothing to the - required volume level */ - }; - -/** - * The string that the Symbian's OpenMAX IL PCM Renderer component will - * translate into a 32-bit OpenMAX IL index (@see - * OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED) to support the - * Bytes Played feature of the MPlayCustomInterface CI - */ -const char sOmxSymbianPcmBytesPlayed [] = - "OMX.Symbian.index.config.audio.pcm.bytesplayed"; - - -/** - * Custom index used by Symbian's OpenMAX IL PCM renderer to select the - * structure for getting a Bytes Played configuration data item - */ -#define OMX_SymbianIndexConfigAudioBytesPlayed 0x7F000003 - - -/** - * Custom OpenMAX IL structure to be used as a container for an - * Bytes Played configuration data item - */ -struct OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED - { - OMX_U32 nSize; /**< Size of this structure, in Bytes */ - OMX_VERSIONTYPE nVersion; /**< OMX specification version information */ - OMX_U32 nBytesPlayed; /**< the number of bytes played */ - }; - - -#endif // OMXILSYMBIANAUDIOPCMEXTENSIONS_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/log.h --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/log.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -#ifndef __PCMRENDERER_LOG_H__ -#define __PCMRENDERER_LOG_H__ - -#include - -namespace DSD -{ - -#ifdef _DEBUG - -#ifdef _OMXIL_PCMRENDERER_DEBUG_TRACING_ON - -#define DEBUG_PRINTF(a) {DSD::DebugPrintf(__LINE__, __FILE__, a);} -#define DEBUG_PRINTF2(a, b) {DSD::DebugPrintf(__LINE__, __FILE__, a, b);} -#define DEBUG_PRINTF3(a, b, c) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c);} -#define DEBUG_PRINTF4(a, b, c, d) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d);} -#define DEBUG_PRINTF5(a, b, c, d, e) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d, e);} - -#define DEBUG_CODE_SECTION(a) TRAP_IGNORE({ a; }) - -class TTruncateOverflowHandler16 : public TDes16Overflow - { - public: - virtual void Overflow( TDes16& aDes ); - }; - -inline void TTruncateOverflowHandler16::Overflow( TDes16& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -class TTruncateOverflowHandler8 : public TDes8Overflow - { - public: - virtual void Overflow( TDes8& aDes ); - }; - -inline void TTruncateOverflowHandler8::Overflow( TDes8& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -// UTF-8 overload of the DebufPrintf method. Should be used by default, -// since it's cheaper both in CPU cycles and stack space. - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler8 overflowHandler8; - VA_LIST list; - //coverity[var_decl] - // Disabled Coverity warning, since it does not support vararg and throws a warning - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<1024> buffer; - _LIT8(KSwiLogPrefix, "[pcmrend] "); - _LIT8(KSwiLineFileFormat, "TID[%d] : [%s:%d] -- "); - buffer.Append(KSwiLogPrefix); - RThread thread; - TUint threadId = thread.Id(); - thread.Close(); - RProcess proc; - TFileName fName = proc.FileName(); - proc.Close(); - buffer.AppendFormat(KSwiLineFileFormat, threadId, aFile, aLine); - buffer.AppendFormatList(aFormat, list ,&overflowHandler8 ); - // coverity[uninit_use_in_call] - // See comment on Coverity at the start of the function. The comment above silences a Coverity false positive - buffer.Append(_L8("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } - -// Unicode DebufPrintf overload - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler16 overflowHandler16; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<256> header; - _LIT8(KSwiLogPrefix, "[pcmrenderer] "); - _LIT8(KSwiLineFileFormat, "%Ld Line: % 5d, File: %s -- "); - header.Append(KSwiLogPrefix); - header.AppendFormat(KSwiLineFileFormat, now.Int64(), aLine, aFile); - - TBuf<1024> buffer; - buffer.Copy(header); - buffer.AppendFormatList(aFormat, list ,&overflowHandler16); - buffer.Append(_L("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - - -} // namespace DSD - -#endif // __PCMRENDERER_LOG_H__ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrenderer.cpp --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrenderer.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,259 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @internalComponent -*/ - -#include "omxilcallbackmanager.h" -#include "omxilfsm.h" -#include "omxilportmanager.h" -#include "omxilspecversion.h" -#include "omxilclientclockport.h" -#include -#include "log.h" -#include "omxilpcmrenderer.h" -#include "omxilpcmrendererapb0port.h" -#include "omxilpcmrendererprocessingfunction.h" -#include "omxilpcmrendererconfigmanager.h" -#include "omxilpcmrenderer.hrh" - - -const TUint8 COmxILPcmRenderer::iComponentVersionMajor; -const TUint8 COmxILPcmRenderer::iComponentVersionMinor; -const TUint8 COmxILPcmRenderer::iComponentVersionRevision; -const TUint8 COmxILPcmRenderer::iComponentVersionStep; - - -OMXIL_COMPONENT_ECOM_ENTRYPOINT(KUidSymbianOmxILPcmRenderer); - -// Component Entry Point -OMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE aComponent) - { - // This method should be called as a result of a OMX_GetHandle call. Let's - // return something that is consistent with the return codes allowed for - // that API call. - return COmxILComponent::SymbianErrorToGetHandleError(COmxILPcmRenderer::CreateComponent(aComponent)); - } - - -TInt COmxILPcmRenderer::CreateComponent(OMX_HANDLETYPE aComponent) - { - DEBUG_PRINTF(_L8("COmxILPcmRenderer::CreateComponent")); - - COmxILPcmRenderer* self = new COmxILPcmRenderer(); - - if (!self) - { - return KErrNoMemory; - } - - TRAPD(err, self->ConstructL(aComponent)); - if (err != KErrNone) - { - delete self; - } - return err; - - } - -void COmxILPcmRenderer::ConstructL(OMX_HANDLETYPE aComponent) - { - DEBUG_PRINTF(_L8("COmxILPcmRenderer::ConstructL")); - - // STEP 1: Initialize the data received from the IL Core - ipHandle = static_cast(aComponent); - ipAppData = 0; - ipCallbacks = 0; - - // STEP 2: Create the call backs manager... - -#ifdef _OMXIL_PCMRENDERER_INCONTEXT_CALLBACKMANAGER_ON - ipCallbackManager = - COmxILInContextCallbackManager::NewL(ipHandle, ipAppData, ipCallbacks); -#else - ipCallbackManager = - COmxILCallbackManager::NewL(ipHandle, ipAppData, ipCallbacks); -#endif - - // STEP 3: Create the PCM renderer-specific Processing Function... - - // ...create PCM renderer component Client Clock port - iClientClockPort = ConstructClientClockPortL(); - - ipProcessingFunction = - COmxILPcmRendererProcessingFunction::NewL(*ipCallbackManager, *iClientClockPort); - - // STEP 4: Create Port manager... - ipPortManager = COmxILPortManager::NewL - ( - *ipProcessingFunction, // The component's processing function - *ipCallbackManager, // The call back manager object - iOmxILVersion, // Component's OMX Version - 1, // The number of audio ports in this component - KPCMRENDERER_APB0PORT_INDEX, // The starting audio port index - 0, // The number of image ports in this component - 0, // The starting image port index - 0, // The number of video ports in this component - 0, // The starting video port index - 1, // The number of other ports in this component - KPCMRENDERER_OPB0PORT_INDEX // The starting other port index - ); - - // ...create PCM renderer component ports (no OPB0 port) - ipb0Port = ConstructAPB0PortL(); - - // .. and add them to the port manager... - User::LeaveIfError(ipPortManager->AddPort(ipb0Port, OMX_DirInput)); - - User::LeaveIfError(ipPortManager->AddPort(iClientClockPort, OMX_DirInput)); - - // STEP 5: Create the non-port related configuration manager... - RPointerArray componentRoles; - CleanupClosePushL(componentRoles); - User::LeaveIfError(componentRoles.Append(&KSymbianOmxILPcmRendererRole())); - - ipConfigManager = COmxILPcmRendererConfigManager::NewL( - *ipPortManager, - *static_cast(ipProcessingFunction), - KSymbianOmxILPcmRendererName, - TOmxILVersion(iComponentVersionMajor, - iComponentVersionMinor, - iComponentVersionRevision, - iComponentVersionStep), - componentRoles); - - CleanupStack::Pop(); // componentRoles - componentRoles.Close(); // Must not destroy pointers - - // STEP 6: Create the FSM object... - ipFsm = COmxILFsm::NewL(*this, - *ipProcessingFunction, - *ipPortManager, - *ipConfigManager, - *ipCallbackManager); - - // And finally, let's get everything started - InitComponentL(); - - } - -COmxILPcmRenderer::COmxILPcmRenderer() - : - iOmxILVersion(TOmxILSpecVersion()) - { - DEBUG_PRINTF(_L8("COmxILPcmRenderer::COmxILPcmRenderer")); - } - -COmxILPcmRenderer::~COmxILPcmRenderer() - { - DEBUG_PRINTF(_L8("COmxILPcmRenderer::~COmxILPcmRenderer")); - - delete ipProcessingFunction; - delete ipPortManager; - delete ipb0Port; - delete iClientClockPort; - delete ipConfigManager; - delete ipFsm; - delete ipCallbackManager; - } - - -COmxILPcmRendererAPB0Port* COmxILPcmRenderer::ConstructAPB0PortL() const - { - DEBUG_PRINTF(_L8("COmxILPcmRenderer::ConstructAPB0PortL")); - - RArray supportedAudioFormats; - CleanupClosePushL(supportedAudioFormats); - supportedAudioFormats.AppendL(OMX_AUDIO_CodingPCM); - - OMX_AUDIO_PARAM_PCMMODETYPE paramPcmModeType; - paramPcmModeType.nSize = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE); - paramPcmModeType.nVersion = iOmxILVersion; - paramPcmModeType.nPortIndex = KPCMRENDERER_APB0PORT_INDEX; - paramPcmModeType.nChannels = KDefaultNumberChannels; - paramPcmModeType.eNumData = OMX_NumericalDataSigned; - paramPcmModeType.eEndian = OMX_EndianBig; - paramPcmModeType.bInterleaved = OMX_TRUE; - paramPcmModeType.nBitPerSample = KDefaultBitPerSample; - paramPcmModeType.nSamplingRate = KDefaultSampleRate; - paramPcmModeType.ePCMMode = OMX_AUDIO_PCMModeLinear; - paramPcmModeType.eChannelMapping[0] = OMX_AUDIO_ChannelLF; - paramPcmModeType.eChannelMapping[1] = OMX_AUDIO_ChannelRF; - - OMX_AUDIO_CONFIG_VOLUMETYPE configAudioVolume; - configAudioVolume.nSize = sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE); - configAudioVolume.nVersion = iOmxILVersion; - configAudioVolume.nPortIndex = KPCMRENDERER_APB0PORT_INDEX; - configAudioVolume.bLinear = OMX_FALSE; - configAudioVolume.sVolume.nValue = 50; - configAudioVolume.sVolume.nMin = 0; - configAudioVolume.sVolume.nMax = 100; - - OMX_AUDIO_CONFIG_MUTETYPE configAudioMute; - configAudioMute.nSize = sizeof(OMX_AUDIO_CONFIG_MUTETYPE); - configAudioMute.nVersion = iOmxILVersion; - configAudioMute.nPortIndex = KPCMRENDERER_APB0PORT_INDEX; - configAudioMute.bMute = OMX_FALSE; - TOmxILCommonPortData portData(iOmxILVersion, // OMX specification version information - KPCMRENDERER_APB0PORT_INDEX,// Port number the structure applies to - OMX_DirInput, // Direction of this port - 1, // The minimum number of buffers this port requires - 15360, // Minimum size, in bytes, for buffers to be used for this port - OMX_PortDomainAudio, // Domain of the port - OMX_FALSE, // Buffers contiguous requirement (true or false) - 0, // Buffer aligment requirements - OMX_BufferSupplyInput, // supplier preference when tunneling between two ports - // This component is a sink component so there's no need to - // propagate buffer marks received on input ports - COmxILPort:: KBufferMarkPropagationPortNotNeeded); - - COmxILPcmRendererAPB0Port* apb0Port = COmxILPcmRendererAPB0Port::NewL(portData, - supportedAudioFormats, - paramPcmModeType, - configAudioVolume, - configAudioMute); - - CleanupStack::PopAndDestroy(&supportedAudioFormats); - return apb0Port; - } - -COmxILClientClockPort* COmxILPcmRenderer::ConstructClientClockPortL() const - { - DEBUG_PRINTF(_L8("COmxILPcmRenderer::ConstructClientClockPortL")); - - TOmxILCommonPortData portData(iOmxILVersion, - KPCMRENDERER_OPB0PORT_INDEX, // port index - OMX_DirInput, - 4, // minimum number of buffers - sizeof(OMX_TIME_MEDIATIMETYPE), // minimum buffer size, in bytes - OMX_PortDomainOther, - OMX_FALSE, // do not need contigious buffers - 0, // byte alignment - OMX_BufferSupplyUnspecified, - COmxILPort::KBufferMarkPropagationPortNotNeeded); - - RArray supportedOtherFormats; - CleanupClosePushL(supportedOtherFormats); - supportedOtherFormats.AppendL(OMX_OTHER_FormatTime); - COmxILClientClockPort* aClientClockPort = COmxILClientClockPort::NewL(portData, supportedOtherFormats); - CleanupStack::PopAndDestroy(&supportedOtherFormats); - - return aClientClockPort; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrenderer.h --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrenderer.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILPCMRENDERER_H -#define OMXILPCMRENDERER_H - -#include "omxilcomponent.h" - -// Forward declarations -class COmxILPcmRendererAPB0Port; -class COmxILClientClockPort; - -NONSHARABLE_CLASS(COmxILPcmRenderer) : public COmxILComponent - { - -public: - - static const TUint8 iComponentVersionMajor = 1; - static const TUint8 iComponentVersionMinor = 0; - static const TUint8 iComponentVersionRevision = 0; - static const TUint8 iComponentVersionStep = 0; - -public: - - static TInt CreateComponent(OMX_HANDLETYPE aComponent); - - ~COmxILPcmRenderer(); - -private: - - COmxILPcmRenderer(); - - void ConstructL(OMX_HANDLETYPE aComponent); - - COmxILPcmRendererAPB0Port* ConstructAPB0PortL() const; - COmxILClientClockPort* ConstructClientClockPortL() const; - -private: - - const OMX_VERSIONTYPE iOmxILVersion; - COmxILPcmRendererAPB0Port* ipb0Port; - COmxILClientClockPort* iClientClockPort; - }; - -#endif // OMXILPCMRENDERER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrenderer.hrh --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrenderer.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -#ifndef OMXILPCMRENDERER_HRH -#define OMXILPCMRENDERER_HRH - -#define KUidSymbianOmxILPcmRendererDll 0x1028349B -#define KUidSymbianOmxILPcmRenderer 0x1028349F - -#endif // OMXILPCMRENDERER_HRH diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrenderer.rss --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrenderer.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -#include -#include -#include "omxilpcmrenderer.hrh" - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidSymbianOmxILPcmRendererDll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUidOmxILSymbianComponentIf; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidSymbianOmxILPcmRenderer; - version_no = 1; - display_name = "OMX.SYMBIAN.AUDIO.RENDERER.PCM"; - default_data = "audio_renderer.pcm"; - opaque_data = ""; - } - }; - } - }; - } - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererapb0port.cpp --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererapb0port.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,582 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @internalComponent -*/ - -#include -#include "omxilutil.h" -#include "log.h" -#include "omxilpcmrendererapb0port.h" -#include "omxilpcmrendererconst.h" - - -COmxILPcmRendererAPB0Port* -COmxILPcmRendererAPB0Port::NewL( - const TOmxILCommonPortData& aCommonPortData, - const RArray& aSupportedAudioFormats, - const OMX_AUDIO_PARAM_PCMMODETYPE& aParamAudioPcm, - const OMX_AUDIO_CONFIG_VOLUMETYPE& aConfigAudioVolume, - const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::NewL")); - - COmxILPcmRendererAPB0Port* self = new (ELeave)COmxILPcmRendererAPB0Port( - aCommonPortData, - aParamAudioPcm, - aConfigAudioVolume, - aConfigAudioMute); - - CleanupStack::PushL(self); - self->ConstructL(aSupportedAudioFormats); - CleanupStack::Pop(self); - return self; - - } - - -void -COmxILPcmRendererAPB0Port::ConstructL(const RArray& aSupportedAudioFormats) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::ConstructL")); - COmxILAudioPort::ConstructL(aSupportedAudioFormats); - // We have to finish with iParamPortDefinition - iParamPortDefinition.eDomain = OMX_PortDomainAudio; - iParamPortDefinition.format.audio.pNativeRender = 0; - - iMimeTypeBuf.CreateL(KMimeTypeAudioPcm(), KMimeTypeAudioPcm().Length() + 1); - - TUint8* pTUint2 = const_cast(iMimeTypeBuf.PtrZ()); - iParamPortDefinition.format.audio.cMIMEType = reinterpret_cast(pTUint2); - - iParamPortDefinition.format.audio.bFlagErrorConcealment = OMX_FALSE; - iParamPortDefinition.format.audio.eEncoding = OMX_AUDIO_CodingPCM; - - // Init iParamVolumeRamp here... - iConfigVolumeRamp.nSize = sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP); - iConfigVolumeRamp.nVersion = TOmxILSpecVersion(); - iConfigVolumeRamp.nPortIndex = iParamPortDefinition.nPortIndex; - iConfigVolumeRamp.nRampDuration = 0; - } - - -COmxILPcmRendererAPB0Port::COmxILPcmRendererAPB0Port( - const TOmxILCommonPortData& aCommonPortData, - const OMX_AUDIO_PARAM_PCMMODETYPE& aParamAudioPcm, - const OMX_AUDIO_CONFIG_VOLUMETYPE& aConfigAudioVolume, - const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute) - : - COmxILAudioPort(aCommonPortData), - iParamAudioPcm(aParamAudioPcm), - iConfigAudioVolume(aConfigAudioVolume), - iConfigAudioMute(aConfigAudioMute) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::COmxILPcmRendererAPB0Port")); - } - - -COmxILPcmRendererAPB0Port::~COmxILPcmRendererAPB0Port() - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::~COmxILPcmRendererAPB0Port")); - - CleanUpPort(); - iMimeTypeBuf.Close(); - - } - - -OMX_ERRORTYPE -COmxILPcmRendererAPB0Port::SetFormatInPortDefinition( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, - TBool& aUpdateProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::SetFormatInPortDefinition")); - // There's no point on chaging the cMIMEType type of this port - // Same thing for pNativeRender and eEncoding - iParamPortDefinition.format.audio.bFlagErrorConcealment = - aPortDefinition.format.audio.bFlagErrorConcealment; - // Error concealment not currently needed at the processing function - aUpdateProcessingFunction = EFalse; - - return OMX_ErrorNone; - - } - - -TBool -COmxILPcmRendererAPB0Port::IsTunnelledPortCompatible( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::IsTunnelledPortCompatible")); - - // First, the easy checks... - if(aPortDefinition.eDomain != iParamPortDefinition.eDomain) - { - return EFalse; - } - - if(aPortDefinition.format.audio.eEncoding != OMX_AUDIO_CodingPCM) - { - return EFalse; - } - - TBool retValue = ETrue; - -#ifdef _OMXIL_PCMRENDERER_CHECK_MIME_TYPE_ON - RBuf8 tunnelMimeTypeBuf; - tunnelMimeTypeBuf.Create(KMimeTypeAudioPcm().Length() + 1); - tunnelMimeTypeBuf = - const_cast( - reinterpret_cast(aPortDefinition.format.audio.cMIMEType)); - - - if (iMimeTypeBuf != tunnelMimeTypeBuf) - { - retValue = EFalse; - } - - tunnelMimeTypeBuf.Close(); -#endif - - return retValue; - } - - -OMX_ERRORTYPE -COmxILPcmRendererAPB0Port::GetLocalOmxParamIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::GetLocalOmxParamIndexes")); - - // Always collect local indexes from parent - OMX_ERRORTYPE omxRetValue = - COmxILAudioPort::GetLocalOmxParamIndexes(aIndexArray); - - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - TInt err = aIndexArray.InsertInOrder(OMX_IndexParamAudioPcm); - - // Note that index duplication is OK. - if (KErrNone != err && KErrAlreadyExists != err) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPcmRendererAPB0Port::GetLocalOmxConfigIndexes(RArray& aIndexArray) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::GetLocalOmxConfigIndexes")); - - // Always collect local indexes from parent - OMX_ERRORTYPE omxRetValue = - COmxILAudioPort::GetLocalOmxConfigIndexes(aIndexArray); - - if (OMX_ErrorNone != omxRetValue) - { - return omxRetValue; - } - - TInt err = aIndexArray.InsertInOrder(OMX_IndexConfigAudioVolume); - - // Note that index duplication is OK. - if (KErrNone == err || KErrAlreadyExists == err) - { - err = aIndexArray.InsertInOrder(OMX_IndexConfigAudioMute); - - if (KErrNone == err || KErrAlreadyExists == err) - { - err = aIndexArray.InsertInOrder( - OMX_SymbianIndexConfigAudioPcmVolumeRamp); - } - - } - - if (KErrNone != err && KErrAlreadyExists != err) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - - } - - -OMX_ERRORTYPE -COmxILPcmRendererAPB0Port::GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::GetParameter")); - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamAudioPcm: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentParameterStructure, - sizeof(OMX_AUDIO_PARAM_PCMMODETYPE)))) - { - return omxRetValue; - } - - OMX_AUDIO_PARAM_PCMMODETYPE* pPcmMode - = static_cast( - apComponentParameterStructure); - - *pPcmMode = iParamAudioPcm; - } - break; - - default: - { - // Try the parent's indexes - return COmxILAudioPort::GetParameter(aParamIndex, - apComponentParameterStructure); - } - }; - - return OMX_ErrorNone; - - } - - -OMX_ERRORTYPE -COmxILPcmRendererAPB0Port::SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::SetParameter")); - - aUpdateProcessingFunction = EFalse; - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamAudioPcm: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentParameterStructure), - sizeof(OMX_AUDIO_PARAM_PCMMODETYPE)))) - { - return omxRetValue; - } - - const OMX_AUDIO_PARAM_PCMMODETYPE* pPcmMode - = static_cast( - apComponentParameterStructure); - - switch (pPcmMode->nSamplingRate) - { - case 8000 : - case 11025 : - case 12000 : - case 16000 : - case 22050 : - case 24000 : - case 32000 : - case 44100 : - case 48000 : - break; - default: - return OMX_ErrorBadParameter; - } - - switch (pPcmMode->nBitPerSample) - { - case 8 : - case 16 : - break; - default: - return OMX_ErrorBadParameter; - } - - // Set the new default values - if (iParamAudioPcm.nChannels != pPcmMode->nChannels || - iParamAudioPcm.eNumData != pPcmMode->eNumData || - iParamAudioPcm.eEndian != pPcmMode->eEndian || - iParamAudioPcm.bInterleaved != pPcmMode->bInterleaved || - iParamAudioPcm.nBitPerSample != pPcmMode->nBitPerSample || - iParamAudioPcm.nSamplingRate != pPcmMode->nSamplingRate || - iParamAudioPcm.ePCMMode != pPcmMode->ePCMMode) - { - iParamAudioPcm.nChannels = pPcmMode->nChannels; - iParamAudioPcm.eNumData = pPcmMode->eNumData; - iParamAudioPcm.eEndian = pPcmMode->eEndian; - iParamAudioPcm.bInterleaved = pPcmMode->bInterleaved; - iParamAudioPcm.nBitPerSample = pPcmMode->nBitPerSample; - iParamAudioPcm.nSamplingRate = pPcmMode->nSamplingRate; - iParamAudioPcm.ePCMMode = pPcmMode->ePCMMode; - // This is an indication to the PortManager that the processing - // function needs to get updated - aUpdateProcessingFunction = ETrue; - } - - for (TInt i=0; ieChannelMapping[i]) - { - iParamAudioPcm.eChannelMapping[i] = pPcmMode->eChannelMapping[i]; - // This is an indication to the PortManager that the processing - // function needs to get updated - aUpdateProcessingFunction = ETrue; - } - } - - } - break; - default: - { - // Try the parent's indexes - return COmxILAudioPort::SetParameter(aParamIndex, - apComponentParameterStructure, - aUpdateProcessingFunction); - } - }; - - return OMX_ErrorNone; - - } - - -OMX_ERRORTYPE -COmxILPcmRendererAPB0Port::GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::GetConfig")); - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aConfigIndex) - { - case OMX_SymbianIndexConfigAudioPcmVolumeRamp: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentConfigStructure, - sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP)))) - { - return omxRetValue; - } - - OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP* - pPcmVolumeRamp - = static_cast< - OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP*>( - apComponentConfigStructure); - - *pPcmVolumeRamp = iConfigVolumeRamp; - } - break; - - case OMX_IndexConfigAudioVolume: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentConfigStructure, - sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE)))) - { - return omxRetValue; - } - - OMX_AUDIO_CONFIG_VOLUMETYPE* pConfigVolume - = static_cast( - apComponentConfigStructure); - - *pConfigVolume = iConfigAudioVolume; - } - break; - - case OMX_IndexConfigAudioMute: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentConfigStructure, - sizeof(OMX_AUDIO_CONFIG_MUTETYPE)))) - { - return omxRetValue; - } - - OMX_AUDIO_CONFIG_MUTETYPE* pConfigMute - = static_cast( - apComponentConfigStructure); - - *pConfigMute = iConfigAudioMute; - } - break; - - default: - { - // There's no need to try the parent indexes as we know there isn't any - // other config in the parent audio classes - return OMX_ErrorUnsupportedIndex; - } - }; - - return OMX_ErrorNone; - - } - -OMX_ERRORTYPE -COmxILPcmRendererAPB0Port::SetConfig(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure, - TBool& aUpdateProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::SetConfig")); - - aUpdateProcessingFunction = EFalse; - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aConfigIndex) - { - case OMX_SymbianIndexConfigAudioPcmVolumeRamp: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentConfigStructure), - sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP)))) - { - return omxRetValue; - } - - const OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP* - pPcmVolumeRamp - = static_cast< - const OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP*>( - apComponentConfigStructure); - - if (iConfigVolumeRamp.nRampDuration != pPcmVolumeRamp->nRampDuration) - { - // This is an indication to the PortManager that the processing - // function needs to get updated - aUpdateProcessingFunction = ETrue; - - iConfigVolumeRamp.nRampDuration = pPcmVolumeRamp->nRampDuration; - } - - } - break; - - case OMX_IndexConfigAudioVolume: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentConfigStructure), - sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE)))) - { - return omxRetValue; - } - - const OMX_AUDIO_CONFIG_VOLUMETYPE* pConfigVolume - = static_cast( - apComponentConfigStructure); - - // Set the new default values - if (iConfigAudioVolume.bLinear != pConfigVolume->bLinear || - iConfigAudioVolume.sVolume.nValue != pConfigVolume->sVolume.nValue || - iConfigAudioVolume.sVolume.nMin != pConfigVolume->sVolume.nMin || - iConfigAudioVolume.sVolume.nMax != pConfigVolume->sVolume.nMax) - { - iConfigAudioVolume.bLinear = pConfigVolume->bLinear; - iConfigAudioVolume.sVolume.nValue = pConfigVolume->sVolume.nValue; - iConfigAudioVolume.sVolume.nMin = pConfigVolume->sVolume.nMin; - iConfigAudioVolume.sVolume.nMax = pConfigVolume->sVolume.nMax; - // This is an indication to the PortManager that the processing - // function needs to get updated - aUpdateProcessingFunction = ETrue; - } - - } - break; - case OMX_IndexConfigAudioMute: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - const_cast(apComponentConfigStructure), - sizeof(OMX_AUDIO_CONFIG_MUTETYPE)))) - { - return omxRetValue; - } - - const OMX_AUDIO_CONFIG_MUTETYPE* pConfigMute - = static_cast( - apComponentConfigStructure); - - if (iConfigAudioMute.bMute != pConfigMute->bMute) - { - iConfigAudioMute.bMute = pConfigMute->bMute; - // This is an indication to the PortManager that the processing - // function needs to get updated - aUpdateProcessingFunction = ETrue; - } - - } - break; - default: - { - // There's no need to try the parent indexes as we know there isn't any - // other config in the parent audio classes - return OMX_ErrorUnsupportedIndex; - } - }; - - return OMX_ErrorNone; - } - -OMX_ERRORTYPE -COmxILPcmRendererAPB0Port::GetExtensionIndex( - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererAPB0Port::GetExtensionIndex")); - - TPtrC8 requestedParameterNamePtr( - const_cast( - reinterpret_cast(aParameterName))); - - TPtrC8 parameterNamePtr( - reinterpret_cast(sOmxSymbianPcmVolumeRamp)); - - if (requestedParameterNamePtr == parameterNamePtr) - { - *apIndexType = - static_cast( - OMX_SymbianIndexConfigAudioPcmVolumeRamp); - - return OMX_ErrorNone; - } - - *apIndexType = OMX_IndexMax; - return OMX_ErrorUnsupportedIndex; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererapb0port.h --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererapb0port.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILPCMRENDERERAPB0PORT_H -#define OMXILPCMRENDERERAPB0PORT_H - -#include "omxilaudioport.h" -#include "omxilsymbianaudiopcmextensions.h" - -class COmxILPcmRendererAPB0Port : public COmxILAudioPort - { - -public: - - static COmxILPcmRendererAPB0Port* NewL( - const TOmxILCommonPortData& aCommonPortData, - const RArray& aSupportedAudioFormats, - const OMX_AUDIO_PARAM_PCMMODETYPE& aParamAudioPcm, - const OMX_AUDIO_CONFIG_VOLUMETYPE& aConfigAudioVolume, - const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute); - - - ~COmxILPcmRendererAPB0Port(); - - OMX_ERRORTYPE GetLocalOmxParamIndexes(RArray& aIndexArray) const; - - OMX_ERRORTYPE GetLocalOmxConfigIndexes(RArray& aIndexArray) const; - - OMX_ERRORTYPE GetParameter(OMX_INDEXTYPE aParamIndex, - TAny* apComponentParameterStructure) const; - - OMX_ERRORTYPE SetParameter(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure, - TBool& aUpdateProcessingFunction); - - OMX_ERRORTYPE GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - OMX_ERRORTYPE SetConfig(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure, - TBool& aUpdateProcessingFunction); - - OMX_ERRORTYPE GetExtensionIndex(OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - -protected: - - COmxILPcmRendererAPB0Port( - const TOmxILCommonPortData& aCommonPortData, - const OMX_AUDIO_PARAM_PCMMODETYPE& aParamAudioPcm, - const OMX_AUDIO_CONFIG_VOLUMETYPE& aConfigAudioVolume, - const OMX_AUDIO_CONFIG_MUTETYPE& aConfigAudioMute); - - void ConstructL(const RArray& aSupportedAudioFormats); - - OMX_ERRORTYPE SetFormatInPortDefinition( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition, - TBool& aUpdateProcessingFunction); - - TBool IsTunnelledPortCompatible( - const OMX_PARAM_PORTDEFINITIONTYPE& aPortDefinition) const; - -protected: - - OMX_AUDIO_PARAM_PCMMODETYPE iParamAudioPcm; - OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP iConfigVolumeRamp; - OMX_AUDIO_CONFIG_VOLUMETYPE iConfigAudioVolume; - OMX_AUDIO_CONFIG_MUTETYPE iConfigAudioMute; - RBuf8 iMimeTypeBuf; - - }; - -#endif // OMXILPCMRENDERERAPB0PORT_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererconfigmanager.cpp --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererconfigmanager.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,183 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @internalComponent -*/ - -#include "omxilutil.h" -#include "omxilsymbianaudiopcmextensions.h" -#include "log.h" -#include "omxilpcmrendererconfigmanager.h" -#include "omxilpcmrendererprocessingfunction.h" - - - -COmxILPcmRendererConfigManager* -COmxILPcmRendererConfigManager::NewL( - COmxILPortManager& aPortManager, - COmxILPcmRendererProcessingFunction& aProcessingFunction, - const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::NewL")); - ASSERT(aComponentName.Length() && aComponentRoleList.Count()); - - COmxILPcmRendererConfigManager* self = new (ELeave)COmxILPcmRendererConfigManager(aPortManager, aProcessingFunction); - CleanupStack::PushL(self); - self->ConstructL(aComponentName, - aComponentVersion, - aComponentRoleList); - CleanupStack::Pop(self); - return self; - - } - -void -COmxILPcmRendererConfigManager::ConstructL(const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::ConstructL")); - - COmxILConfigManager::ConstructL(aComponentName, aComponentVersion, aComponentRoleList); - - ManagedConfigIndexes().InsertInOrderL(OMX_SymbianIndexConfigAudioBytesPlayed); - } - -COmxILPcmRendererConfigManager::COmxILPcmRendererConfigManager(COmxILPortManager& aPortManager, - COmxILPcmRendererProcessingFunction& aProcessingFunction) - : - COmxILConfigManager(aPortManager), - iProcessingFunction(aProcessingFunction) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::COmxILPcmRendererConfigManager")); - - } - -COmxILPcmRendererConfigManager::~COmxILPcmRendererConfigManager() - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::~COmxILPcmRendererConfigManager")); - - } - -OMX_ERRORTYPE -COmxILPcmRendererConfigManager::GetConfig(OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::GetConfig")); - - TInt index = FindConfigIndex(aConfigIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aConfigIndex) - { - case OMX_SymbianIndexConfigAudioBytesPlayed: - { - if (OMX_ErrorNone != - (omxRetValue = - TOmxILUtil::CheckOmxStructSizeAndVersion( - apComponentConfigStructure, - sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED)))) - { - return omxRetValue; - } - - OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED* - pPcmBytesPlayed - = static_cast< - OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED*>( - apComponentConfigStructure); - - pPcmBytesPlayed->nBytesPlayed = iProcessingFunction.GetBytesPlayed(); - } - break; - - default: - { - omxRetValue = COmxILConfigManager::GetConfig(aConfigIndex, apComponentConfigStructure); - } - }; - - return omxRetValue; - } - -OMX_ERRORTYPE -COmxILPcmRendererConfigManager::SetConfig(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure) - - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::SetConfig")); - - TInt index = FindConfigIndex(aConfigIndex); - if (KErrNotFound == index) - { - return OMX_ErrorUnsupportedIndex; - } - - OMX_ERRORTYPE omxRetValue = OMX_ErrorNone; - switch(aConfigIndex) - { - case OMX_SymbianIndexConfigAudioBytesPlayed: - { - omxRetValue = OMX_ErrorUnsupportedSetting; - } - break; - - default: - { - omxRetValue = COmxILConfigManager::SetConfig(aConfigIndex, apComponentConfigStructure); - } - }; - - return omxRetValue; - - } - -OMX_ERRORTYPE -COmxILPcmRendererConfigManager::GetExtensionIndex( - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const - { - DEBUG_PRINTF(_L8("COmxILPcmRendererConfigManager::GetExtensionIndex")); - - TPtrC8 requestedParameterNamePtr( - const_cast( - reinterpret_cast(aParameterName))); - - TPtrC8 parameterNamePtr( - reinterpret_cast(sOmxSymbianPcmBytesPlayed)); - - if (requestedParameterNamePtr == parameterNamePtr) - { - *apIndexType = - static_cast( - OMX_SymbianIndexConfigAudioBytesPlayed); - - return OMX_ErrorNone; - } - - *apIndexType = OMX_IndexMax; - return OMX_ErrorUnsupportedIndex; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererconfigmanager.h --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererconfigmanager.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILPCMRENDERERCONFIGMANAGER_H -#define OMXILPCMRENDERERCONFIGMANAGER_H - -#include "omxilconfigmanager.h" - -// class forwarding -class COmxILPcmRendererProcessingFunction; - -/** - This class is a placeholder for those PCM Renderer parameters and configs that - apply to the component as a whole and not to a specific port in the - component. - */ -NONSHARABLE_CLASS(COmxILPcmRendererConfigManager) : public COmxILConfigManager - { - -public: - - static COmxILPcmRendererConfigManager* NewL( - COmxILPortManager& aPortManager, - COmxILPcmRendererProcessingFunction& aProcessingFunction, - const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList); - - ~COmxILPcmRendererConfigManager(); - - OMX_ERRORTYPE GetConfig( - OMX_INDEXTYPE aConfigIndex, - TAny* apComponentConfigStructure) const; - - OMX_ERRORTYPE SetConfig( - OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure); - - OMX_ERRORTYPE GetExtensionIndex( - OMX_STRING aParameterName, - OMX_INDEXTYPE* apIndexType) const; - -protected: - - COmxILPcmRendererConfigManager(COmxILPortManager& aPortManager, - COmxILPcmRendererProcessingFunction& aProcessingFunction); - - void ConstructL(const TDesC8& aComponentName, - const OMX_VERSIONTYPE& aComponentVersion, - const RPointerArray& aComponentRoleList); - -private: - COmxILPcmRendererProcessingFunction& iProcessingFunction; - }; - -#endif // OMXILPCMRENDERERCONFIGMANAGER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererconst.h --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererconst.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @internalComponent -*/ - - -#ifndef OMXILPCMRENDERERCONST_H_ -#define OMXILPCMRENDERERCONST_H_ - -#ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER - #include "mdasoundadapter.h" -#else - #include -#endif - - -_LIT8(KSymbianOmxILPcmRendererName, "OMX.SYMBIAN.AUDIO.RENDERER.PCM"); -_LIT8(KSymbianOmxILPcmRendererRole, "audio_renderer.pcm"); -_LIT8(KMimeTypeAudioPcm, "audio/pcm"); - -const OMX_U32 KPCMRENDERER_APB0PORT_INDEX = 0; -const OMX_U32 KPCMRENDERER_OPB0PORT_INDEX = 1; - -const TInt KBufferSize = 16384; // we need 16k to hold a pcm packet -const TInt KDefaultSampleRate = 48000; // check out ./boardsupport/omap3variants/tiomap3bsp/variant/common/soundsc/variant_sound.cpp to find out the supporting rates -const TInt KDefaultNumberChannels = 2; -const TInt KDefaultBitPerSample = 16; -const TInt KMaxVolume = 255; -const TInt KMedianVolume = 226; -const TInt KDefaultVolume = KMedianVolume; -const TInt KMinBufferMilliseconds = 100; // Minimum number of milliseconds allowed in a buffer - -// Timeout to call RSoundSc::TimePlayed() every second -// Under normal operation, the timer will return exactly one sec. -// It is particular useful to compare the value from TimePlayed() -static const TInt KPcmRendererTimePlayedDelay = 998113; - -const TBool KDefaultMuted = EFalse; - -const RMdaDevSound::TMdaSoundEncoding KDefaultEncoding = RMdaDevSound::EMdaSoundEncoding16BitPCM; - -#endif /*OMXILPCMRENDERERCONST_H_*/ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererprocessingfunction.cpp --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererprocessingfunction.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1651 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @internalComponent -*/ - -#include - -#ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER -#include -#endif //SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER - -#include "log.h" -#include "omxilcallbacknotificationif.h" -#include "omxilclockcomponentcmdsif.h" -#include "omxilsymbianaudiopcmextensions.h" -#include "omxilpcmrendererprocessingfunction.h" - -const TInt COmxILPcmRendererProcessingFunction::CPFHelper::KMaxMsgQueueEntries; - -COmxILPcmRendererProcessingFunction* -COmxILPcmRendererProcessingFunction::NewL(MOmxILCallbackNotificationIf& aCallbacks, - MOmxILClockComponentCmdsIf& aClientClockPort) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererProcessingFunction::NewL")); - - COmxILPcmRendererProcessingFunction* self = - new (ELeave)COmxILPcmRendererProcessingFunction(aCallbacks, aClientClockPort); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - - } - -void -COmxILPcmRendererProcessingFunction::ConstructL() - { - DEBUG_PRINTF(_L8("COmxILPcmRendererProcessingFunction::ConstructL")); - - iAudioDevice = CAudioDevice::NewL(*this); - iPFHelper = CPFHelper::NewL(*iAudioDevice); - } - -COmxILPcmRendererProcessingFunction::COmxILPcmRendererProcessingFunction( - MOmxILCallbackNotificationIf& aCallbacks, - MOmxILClockComponentCmdsIf& aClientClockPort) - : - COmxILProcessingFunction(aCallbacks), - iClientClockPortPtr(&aClientClockPort) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererProcessingFunction::COmxILPcmRendererProcessingFunction")); - - } - -COmxILPcmRendererProcessingFunction::~COmxILPcmRendererProcessingFunction() - { - DEBUG_PRINTF(_L8("COmxILPcmRendererProcessingFunction::~COmxILPcmRendererProcessingFunction")); - - // Check in case the Sound Device has not been closed. That would happen in - // an scenario where the component is not being deleted in an orderer way. - if(iAudioDevice && iPFHelper && - (iState == OMX_StateInvalid || - iState == OMX_StateExecuting || - iState == OMX_StatePause)) - { - // Ignore error if the following call fails - iPFHelper->CloseDeviceOnError(); - } - - // Buffer headers are not owned by the processing function - iBuffersToEmpty.Close(); - iBuffersEmptied.Close(); - delete iAudioDevice; - delete iPFHelper; - } - - -OMX_ERRORTYPE -COmxILPcmRendererProcessingFunction::StateTransitionIndication(COmxILFsm::TStateIndex aNewState) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererProcessingFunction::StateTransitionIndication")); - - OMX_ERRORTYPE err = OMX_ErrorNone; - switch(aNewState) - { - case COmxILFsm::EStateExecuting: - { - DEBUG_PRINTF(_L8("StateTransitionIndication : OMX_StateExecuting")); - if (iPFHelper->Execute() != KErrNone) - { - return OMX_ErrorInsufficientResources; - } - } - break; - case COmxILFsm::EStateInvalid: - { - DEBUG_PRINTF(_L8("StateTransitionIndication : OMX_StateInvalid")); - if (iPFHelper->Stop() != KErrNone) - { // InsufficientResources to stop??? - return OMX_ErrorInsufficientResources; - } - } - break; - case COmxILFsm::EStatePause: - { - DEBUG_PRINTF(_L8("StateTransitionIndication : OMX_StatePause")); - err = iAudioDevice->MoveToPausedState(); - } - break; - case COmxILFsm::EStateIdle: - { - DEBUG_PRINTF(_L8("StateTransitionIndication : OMX_StateIdle")); - iBuffersToEmpty.Reset(); - if (iPFHelper->Stop() != KErrNone) - { // InsufficientResources to stop??? - return OMX_ErrorInsufficientResources; - } - } - break; - case COmxILFsm::EStateLoaded: - case COmxILFsm::EStateWaitForResources: - { - DEBUG_PRINTF(_L8("StateTransitionIndication : OMX_StateLoaded, OMX_StateWaitForResources")); - if (iPFHelper->Stop() != KErrNone) - { // InsufficientResources to stop??? - return OMX_ErrorInsufficientResources; - } - } - break; - case COmxILFsm::ESubStateLoadedToIdle: - { - DEBUG_PRINTF(_L8("StateTransitionIndication : ESubStateLoadedToIdle")); - if (iPFHelper->OpenDevice() != KErrNone) - { - return OMX_ErrorInsufficientResources; - } - } - break; - case COmxILFsm::ESubStateIdleToLoaded: - { - DEBUG_PRINTF(_L8("StateTransitionIndication : ESubStateIdleToLoaded")); - if (iPFHelper->CloseDevice() != KErrNone) - { // InsufficientResources to close??? - return OMX_ErrorInsufficientResources; - } - } - break; - case COmxILFsm::ESubStateExecutingToIdle: - case COmxILFsm::ESubStatePauseToIdle: - { - // Ignore these transitions... - return OMX_ErrorNone; - } - default: - { - // Always ASSERT; This would be a problem in the framework. - ASSERT(0); - return OMX_ErrorIncorrectStateTransition; - } - }; - - return err; - - } - - -OMX_ERRORTYPE -COmxILPcmRendererProcessingFunction::BufferFlushingIndication( - TUint32 aPortIndex, - OMX_DIRTYPE aDirection) - { - DEBUG_PRINTF2(_L8("COmxILPcmRendererProcessingFunction::BufferFlushingIndication : aPortIndex[%d]"), aPortIndex); - - if ((aPortIndex == OMX_ALL && aDirection == OMX_DirMax) || - (aPortIndex == KPCMRENDERER_APB0PORT_INDEX && aDirection == OMX_DirInput)) - { - // If we are currently processing a buffer then cancel - if (iPFHelper->CancelDevice() != KErrNone) - { - return OMX_ErrorInsufficientResources; - } - - // Send BufferDone notifications for each emptied buffer... - FlushBufferList(iBuffersEmptied); - - // Send BufferDone notifications for each pending buffer... - FlushBufferList(iBuffersToEmpty); - - return OMX_ErrorNone; - } - else if (aPortIndex == KPCMRENDERER_OPB0PORT_INDEX && aDirection == OMX_DirInput) - { - // Since the clock port buffers are returned immediately, - // there's nothing to flush for the port - return OMX_ErrorNone; - } - else - { - // Always ASSERT; This would be a problem in the framework. - ASSERT(0); - return OMX_ErrorBadParameter; - } - } - -void -COmxILPcmRendererProcessingFunction::FlushBufferList( - RPointerArray& aBufferList) - { - DEBUG_PRINTF2(_L8("COmxILPcmRendererProcessingFunction::FlushBufferList : [%s]"), - &aBufferList == &iBuffersToEmpty ? "iBuffersToEmpty" : "iBuffersEmptied"); - - const TUint bufferCount = aBufferList.Count(); - OMX_BUFFERHEADERTYPE* pBufferHeader = 0; - // We know there is only one input port... - OMX_DIRTYPE portDirection = OMX_DirInput; - - for (TUint i=0; inFilledLen = 0; - iCallbacks. - BufferDoneNotification( - pBufferHeader, - pBufferHeader->nInputPortIndex, - portDirection - ); - } - - // Empty buffer list... - aBufferList.Reset(); - - } - - -OMX_ERRORTYPE -COmxILPcmRendererProcessingFunction::ParamIndication( - OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererProcessingFunction::ParamIndication")); - - OMX_ERRORTYPE err = OMX_ErrorNone; - switch(aParamIndex) - { - case OMX_IndexParamAudioPcm: - { - const OMX_AUDIO_PARAM_PCMMODETYPE* pPcmProfile - = static_cast( - apComponentParameterStructure); - - if((pPcmProfile->nChannels == 1 || pPcmProfile->nChannels == 2) && - (pPcmProfile->eNumData == OMX_NumericalDataSigned) && - (pPcmProfile->eEndian == OMX_EndianBig) && - (pPcmProfile->bInterleaved == OMX_TRUE) && - (pPcmProfile->nBitPerSample == 16) && - ((pPcmProfile->nSamplingRate == 8000) || - (pPcmProfile->nSamplingRate == 11025) || - (pPcmProfile->nSamplingRate == 12000) || - (pPcmProfile->nSamplingRate == 16000) || - (pPcmProfile->nSamplingRate == 22050) || - (pPcmProfile->nSamplingRate == 24000) || - (pPcmProfile->nSamplingRate == 32000) || - (pPcmProfile->nSamplingRate == 44100) || - (pPcmProfile->nSamplingRate == 48000)) && - (pPcmProfile->ePCMMode == OMX_AUDIO_PCMModeLinear) && - (pPcmProfile->eChannelMapping[0] == OMX_AUDIO_ChannelLF) && - (pPcmProfile->eChannelMapping[1] == OMX_AUDIO_ChannelRF)) - { - if (iPFHelper->ParamIndication(pPcmProfile) != KErrNone) - { - err = OMX_ErrorInsufficientResources; - } - } - else - { - err = OMX_ErrorBadParameter; - } - } - break; - default: - { - // Ignore other port param changes... - } - }; - - return err; - - } - -OMX_ERRORTYPE -COmxILPcmRendererProcessingFunction::ConfigIndication(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure) - { - DEBUG_PRINTF2(_L8("COmxILPcmRendererProcessingFunction::ConfigIndication %X"), aConfigIndex); - - OMX_ERRORTYPE err = OMX_ErrorNone; - switch(aConfigIndex) - { - case OMX_SymbianIndexConfigAudioPcmVolumeRamp: - { - const OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP* - pPcmVolumeRamp - = static_cast< - const OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP*>( - apComponentConfigStructure); - - if (iPFHelper->SetVolumeRamp(pPcmVolumeRamp->nRampDuration) != KErrNone) - { - err = OMX_ErrorInsufficientResources; - } - } - break; - - case OMX_IndexConfigAudioVolume: - { - const OMX_AUDIO_CONFIG_VOLUMETYPE* pVolumeType - = static_cast( - apComponentConfigStructure); - - if (pVolumeType->bLinear == OMX_TRUE) - { - // Some configuration structures contain read-only fields. The - // OMX_SetConfig method will preserve read-only fields in configuration - // structures that contain them, and shall not generate an error when - // the caller attempts to change the value of a read-only field. - err = OMX_ErrorNone; - break; - } - - if ((pVolumeType->sVolume.nValue <= pVolumeType->sVolume.nMax) && - (pVolumeType->sVolume.nValue >= pVolumeType->sVolume.nMin)) - { - if (iPFHelper->SetVolume(pVolumeType->sVolume.nValue) != KErrNone) - { - err = OMX_ErrorInsufficientResources; - } - } - else - { - err = OMX_ErrorBadParameter; - } - } - break; - - case OMX_IndexConfigAudioMute: - { - const OMX_AUDIO_CONFIG_MUTETYPE* pVolumeType - = static_cast( - apComponentConfigStructure); - - if (iPFHelper->SetMuted(pVolumeType->bMute) != KErrNone) - { - err = OMX_ErrorInsufficientResources; - } - } - break; - - default: - { - // Ignore other port config changes... - } - }; - - return err; - - } - -OMX_ERRORTYPE -COmxILPcmRendererProcessingFunction::BufferIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection) - { - DEBUG_PRINTF2(_L8("COmxILPcmRendererProcessingFunction::BufferIndication : [%X]"), apBufferHeader); - - if (aDirection != OMX_DirInput) - { - return OMX_ErrorBadParameter; - } - - if (iBuffersToEmpty.Append(apBufferHeader) != KErrNone) - { - return OMX_ErrorInsufficientResources; - } - - // If we are not in an executing state or if the audio device is busy, delay playing back the buffer - if (iState != OMX_StateExecuting || iAudioDevice->IsActive()) - { - return OMX_ErrorNone; - } - - if (iPFHelper->BufferIndication() != KErrNone) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::MediaTimeIndication(const OMX_TIME_MEDIATIMETYPE& aMediaTimeType) - { - // Received a requested media time notification. - DEBUG_PRINTF5(_L8("MediaTimeIndication : eUpdateType = %d eState = %d xScale = %d nMediaTimestamp = %d "), - aMediaTimeType.eUpdateType, aMediaTimeType.eState, aMediaTimeType.xScale, aMediaTimeType.nMediaTimestamp); - - iPFHelper->MediaTimeIndication(aMediaTimeType); - return OMX_ErrorNone; - } - -OMX_BOOL -COmxILPcmRendererProcessingFunction::BufferRemovalIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE /* aDirection */) - { - DEBUG_PRINTF2(_L8("COmxILPcmRendererProcessingFunction::BufferRemovalIndication : BUFFER [%X]"), apBufferHeader); - - TBool headerDeletionResult = ETrue; - // Check if the buffer we want to remove is the one is being currently processed - if (iAudioDevice->IsActive() && iAudioDevice->GetCurrentBuffer() == apBufferHeader) - { - if (iPFHelper->CancelDevice() != KErrNone) - { - return OMX_FALSE; - } - - // if you cancel the audio device then you send the buffer to the other end of the tunnel - // so you shouldn't say that you had the buffer in the processing function in this situation. - headerDeletionResult = EFalse; - } - else - { - TInt headerIndexInArray = KErrNotFound; - if (KErrNotFound != - (headerIndexInArray = - iBuffersToEmpty.Find(apBufferHeader))) - { - iBuffersToEmpty.Remove(headerIndexInArray); - } - else if(KErrNotFound != - (headerIndexInArray = - iBuffersEmptied.Find(apBufferHeader))) - { - iBuffersEmptied.Remove(headerIndexInArray); - } - else - { - headerDeletionResult = EFalse; - } - } - - DEBUG_PRINTF2(_L8("BufferRemovalIndication : Removal result [%s]"), (headerDeletionResult ? "YES" : "NO")); - return (headerDeletionResult ? OMX_TRUE : OMX_FALSE); - } - -TInt -COmxILPcmRendererProcessingFunction::GetBytesPlayed() const - { - return iAudioDevice->GetBytesPlayed(); - } - - -COmxILPcmRendererProcessingFunction::CAudioDevice* COmxILPcmRendererProcessingFunction::CAudioDevice::NewL(COmxILPcmRendererProcessingFunction& aParent) - { - CAudioDevice* self = new (ELeave) CAudioDevice(aParent); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -COmxILPcmRendererProcessingFunction::CAudioDevice::CAudioDevice(COmxILPcmRendererProcessingFunction& aParent) -: CActive(EPriorityUserInput), - iParent(aParent), - iSampleRate(KDefaultSampleRate), - iChannels(KDefaultNumberChannels), - iEncoding(KDefaultEncoding), - iVolume(KDefaultVolume), - iMuted(KDefaultMuted), - iBufferSize(KBufferSize), - iClockStateRunning(EFalse), - iPausedClockViaScale(EFalse), - iIsStartTimeFlagSet(EFalse) - { - CActiveScheduler::Add(this); - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::ConstructL() - { - iCachedPlayBuffer.CreateL(0); - } - -COmxILPcmRendererProcessingFunction::CAudioDevice::~CAudioDevice() - { - delete iPeriodic; - Cancel(); - iCachedPlayBuffer.Close(); - } - -void COmxILPcmRendererProcessingFunction::CAudioDevice::RunL() - { - DEBUG_PRINTF(_L8("CAudioDevice::RunL : ")); - if (iStatus != KErrNone) - { - switch(iStatus.Int()) - { - case KErrUnderflow: - DEBUG_PRINTF(_L8("CAudioDevice::RunL : KErrUnderflow")); - iParent.iCallbacks.ErrorEventNotification(OMX_ErrorUnderflow); - break; - - case KErrOverflow: - DEBUG_PRINTF(_L8("CAudioDevice::RunL : KErrOverflow")); - iParent.iCallbacks.ErrorEventNotification(OMX_ErrorOverflow); - break; - - default: - DEBUG_PRINTF2(_L8("CAudioDevice::RunL : [%d] -> OMX_ErrorHardware"), iStatus.Int()); - iParent.iCallbacks.ErrorEventNotification(OMX_ErrorHardware); - }; - } - - ASSERT(iCurrentBuffer); - // Update the last value of bytes played... - iLastBytesPlayedValue = iSoundDevice.BytesPlayed(); - - // Return the emptied buffer to the IL Client or the tunnelled - // component.. - SignalBufferCompletion(iCurrentBuffer); - iCurrentBuffer = 0; - - // Make sure to clear the aggregated cache buffer, if it was used - iCachedPlayBuffer.Zero(); - } - -void COmxILPcmRendererProcessingFunction::CAudioDevice::SignalBufferCompletion( - OMX_BUFFERHEADERTYPE* apCurrentBuffer) - { - DEBUG_PRINTF2(_L8("CAudioDevice::SignalBufferCompletion : BUFFER = [%X]"), apCurrentBuffer); - - iParent.iBuffersEmptied.Append(apCurrentBuffer); - - // Process the queue only if in executing state... - if (iParent.iState == OMX_StateExecuting) - { - const TUint bufferCount = iParent.iBuffersEmptied.Count(); - OMX_BUFFERHEADERTYPE* pBufferHeader = 0; - for (TUint i=0; inFlags & OMX_BUFFERFLAG_EOS) - { - lastBuffer = ETrue; - } - - pBufferHeader->nFilledLen = 0; - iParent.iCallbacks.BufferDoneNotification(pBufferHeader, - pBufferHeader->nInputPortIndex, - OMX_DirInput); - if (lastBuffer) - { - pBufferHeader->nFlags |= OMX_BUFFERFLAG_EOS; - // propagate the EOS flag - iParent.iCallbacks.EventNotification( - OMX_EventBufferFlag, - KPCMRENDERER_APB0PORT_INDEX, - pBufferHeader->nFlags, - NULL); - } - } - - // Empty list... - iParent.iBuffersEmptied.Reset(); - } - - if (iParent.iBuffersToEmpty.Count() > 0) - { - DEBUG_PRINTF2(_L8("CAudioDevice::RunL : iBuffersToEmpty.Count = [%d]"), - iParent.iBuffersToEmpty.Count()); - iParent.iPFHelper->BufferIndication(); - } - - } - - -TBool COmxILPcmRendererProcessingFunction::CAudioDevice::ConstructAndStartUpdateTimer() - { - // Need this check if: - // - The component state transitions from Execution-Idle-Execution - // - The Clock's state transitions from Running-Stop-Running - if (iPeriodic == NULL) - { - iPeriodic = CPeriodic::New(EPriorityStandard); - - if (iPeriodic == NULL) - { - iParent.iCallbacks.ErrorEventNotification(OMX_ErrorInsufficientResources); - return EFalse; - } - } - - StartUpdateTimer(); - - return ETrue; - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::ProcessNextBuffer() - { - if (iParent.iBuffersToEmpty.Count() == 0) - return; - - // To implement A/V Sync, we should start playing only once the clock component gives the appopriate command - // If the clock component is not available, we start playing immediately - // Since the PCM Renderer supplies the reference clock, we make sure to initialise the clock component with - // the reference when we receive the first buffer - - if (!iParent.iClientClockPortPtr->IsClockComponentAvailable()) - { - PlayData(); - return; - } - - OMX_BUFFERHEADERTYPE* bufferPtr = iParent.iBuffersToEmpty[0]; - - TBool bufferHasStartTime = bufferPtr->nFlags & OMX_BUFFERFLAG_STARTTIME; - - if (!iClockStateRunning) - { - if (!bufferHasStartTime) - { - // Connected with the Clock but OMX_BUFFERFLAG_STARTTIME isn't set; drop the buffer - if (!iIsStartTimeFlagSet) - { - iParent.iBuffersToEmpty.Remove(0); - SignalBufferCompletion(bufferPtr); - } - bufferPtr = NULL; - return; - } - else - { - OMX_ERRORTYPE err = iParent.iClientClockPortPtr->SetStartTime(static_cast(bufferPtr->nTimeStamp)); - - if (err == OMX_ErrorNone) - { - // Clear the returning buffer's flag - bufferPtr->nFlags &= ~OMX_BUFFERFLAG_STARTTIME; - } - else - { - // NOTE: If the Clock is not in OMX_TIME_ClockStateWaitingForStartTime, - // currently SetStartTime will return OMX_ErrorIncorrectStateOperation - - // It is not the PCM renderer to flag a Clock component error; - // therefore, ignore the error. - // - // As the Clock is not in OMX_TIME_ClockStateRunning state, the Renderer needs - // to keep the OMX_BUFFERFLAG_STARTTIME in the first buffer until the Clock - // moves into OMX_TIME_ClockStateWaitingForStartTime or OMX_TIME_ClockStateRunning - // state - DEBUG_PRINTF2(_L8("CAudioDevice::ProcessNextBuffer SetStartTime() return %d"), err); - } - - // Update the iStartMediaTime - iParent.iStartMediaTime = static_cast(bufferPtr->nTimeStamp); - iIsStartTimeFlagSet = ETrue; - } - } // (!iClockStateRunning) - else - { - if (bufferHasStartTime) - { - // The Clock moves straight into OMX_TIME_ClockStateRunning state, - // clear the returning buffer's flag. - bufferPtr->nFlags &= ~OMX_BUFFERFLAG_STARTTIME; - } - - if (!iPlayData) - { - // Not allowed to render audio. This could be due to: - // - The renderer is waiting for a time completion notification from the Clock; - return; - } - - if (!iIsStartTimeFlagSet) - { - // As the StartTimeFlag is not mandatory; therefore it might be missing from the first audio buffer - // In such a case, we use the first buffer's timestamp as the StartMediaTime. - // - // NOTE: Since the Clock is running, calling SetStartTime() to the Clock is meaningless - - // Update the iStartMediaTime - iParent.iStartMediaTime = static_cast(bufferPtr->nTimeStamp); - iIsStartTimeFlagSet = ETrue; - - // Cross checking the Clock's media timestamp with iStartMediaTime to see - // data can be rendered straight away - if (!CanPlayNow()) - { - return; - } - - if (!ConstructAndStartUpdateTimer()) - { - return; - } - } - - DEBUG_PRINTF3(_L8("ProcessNextBuffer : iStartMediaTime = %d nTimeStamp = %d"), - I64LOW(iParent.iStartMediaTime), I64LOW(bufferPtr->nTimeStamp)); - - if (!iPausedClockViaScale) //if clock scale is zero then we are effectively paused - { - PlayData(); - } - } // else - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::PlayData() - { - DEBUG_PRINTF(_L8("COmxILPcmRendererProcessingFunction::CAudioDevice::PlayData()++")); - if (iParent.iBuffersToEmpty.Count() == 0 || iSoundDevice.Handle() == 0 || IsActive()) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererProcessingFunction::CAudioDevice::PlayData() nothing to play, or there is an outstanding request")); - return; - } - - iCurrentBuffer = iParent.iBuffersToEmpty[0]; - - iParent.iBuffersToEmpty.Remove(0); - - CMMFDataBuffer* mmfSrcBuffer = static_cast(iCurrentBuffer->pInputPortPrivate); - mmfSrcBuffer->Data().SetLength(iCurrentBuffer->nFilledLen); - - // Attenuate the amplitude of the samples if volume ramping has been changed - if (iRampAudioSample) - { - iRampAudioSample = RampAudio(mmfSrcBuffer); - } - - // First, check whether the buffer length is sufficient not to cause underflows in the device driver - TBool isFilledLengthSufficient = IsBufferLengthSufficient(iCurrentBuffer->nFilledLen); - // This variable defines whether we should send the data to the driver directly, or append it to an aggregated buffer - // We append the buffer instead of sending it directly, if (i) the buffer is too small, or (ii) we have already aggregated something. - TBool appendBuffer = (!isFilledLengthSufficient || iCachedPlayBuffer.Length() > 0) ? ETrue : EFalse; - if (!appendBuffer) - { - SendBufferToSoundDevice(mmfSrcBuffer->Data()); - } - else - { - // Check if we need to allocate the cached buffer - if (iCachedPlayBuffer.MaxLength() == 0) - { - // The RMdaDevSound shim allocates the shared chunk according to the maxLength of the descriptor it receives - // For this reason, we must allocate our buffer conservatively, otherwise the chunk may be insufficient and the RMdaDevSound shim will panic - TInt err = iCachedPlayBuffer.ReAlloc(GetMinBufferLength() + iCurrentBuffer->nAllocLen); - if (err != KErrNone) - { - iParent.iCallbacks.ErrorEventNotification(OMX_ErrorInsufficientResources); - return; - } - } - - iCachedPlayBuffer.Append(mmfSrcBuffer->Data()); - - // If we have sufficient length aggregated, play the cached buffer - // Also if this is the last buffer, we have to play it now, there's nothing left to cache - if (IsBufferLengthSufficient(iCachedPlayBuffer.Length()) || iCurrentBuffer->nFlags & OMX_BUFFERFLAG_EOS) - { - SendBufferToSoundDevice(iCachedPlayBuffer); - } - // If not, make sure to notify that we notify that the buffer is done for the OMX tunnnel, so that the port will be able to reuse it - else - { - SignalBufferCompletion(iCurrentBuffer); - iCurrentBuffer = NULL; - } - } - } - -void COmxILPcmRendererProcessingFunction::CAudioDevice::SendBufferToSoundDevice(TDes8& aBuffer) - { - ASSERT(!IsActive()); - iStatus = KRequestPending; - DEBUG_PRINTF2(_L8("COmxILPcmRendererProcessingFunction::CAudioDevice::SendBufferToSoundDevice() PlayData [%d]"), aBuffer.Length()); - iSoundDevice.PlayData(iStatus, aBuffer); - SetActive(); - } - -TInt COmxILPcmRendererProcessingFunction::CAudioDevice::GetMinBufferLength() const - { - TInt minBufSize = KMinBufferMilliseconds * iSampleRate * iChannels / 1000; - if (iEncoding == RMdaDevSound::EMdaSoundEncoding16BitPCM) - { - minBufSize *= 2; // All other encodings use 1 byte per sample - } - return minBufSize; - } - -TBool COmxILPcmRendererProcessingFunction::CAudioDevice::IsBufferLengthSufficient(TInt aBufferLength) const - { - return aBufferLength >= GetMinBufferLength() ? ETrue : EFalse; - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::ProcessMediaTimeIndication(OMX_TIME_MEDIATIMETYPE& aMediaTimeType) - { - switch (aMediaTimeType.eUpdateType) - { - case OMX_TIME_UpdateClockStateChanged: - { - HandleClockStateChanged(aMediaTimeType); - } - break; - - case OMX_TIME_UpdateRequestFulfillment: - { - // As the Clock was using another earlier start time; - // it is time for the PCM renderer to start playing the audio. - iPlayData = ETrue; - PlayData(); - - if (!ConstructAndStartUpdateTimer()) - { - return; - } - } - break; - - case OMX_TIME_UpdateScaleChanged: - { - HandleClockScaleChanged(aMediaTimeType); - } - break; - - default: - { - // Do nothing here - } - } - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::StartUpdateTimer() - { - if (!iIsStartTimeFlagSet) - { - DEBUG_PRINTF(_L8("COmxILPcmRendererProcessingFunction::CAudioDevice::StartUpdateTimer() iIsStartTimeFlagSet == EFalse!!")); - return; - } - - // In case the timer already started - ASSERT(iPeriodic); - iPeriodic->Cancel(); - - TCallBack callback(UpdateClockMediaTime, this); - - // Start updating the Clock comp. every KPcmRendererTimePlayedDelay - iPeriodic->Start(KPcmRendererTimePlayedDelay, KPcmRendererTimePlayedDelay, callback); - } - - -TBool COmxILPcmRendererProcessingFunction::CAudioDevice::CanPlayNow() - { - if (iClockMediaTime < iParent.iStartMediaTime) - { - // Once all required Clock's clients have responded, the clock component starts - // the media clock using the earliest client start time. - // Therefore, start playing the audio only when such time comes; send a time - // completion request to the Clock component - OMX_ERRORTYPE err = iParent.iClientClockPortPtr->MediaTimeRequest(NULL, iParent.iStartMediaTime, 0); - - if (err != OMX_ErrorNone) - { - DEBUG_PRINTF2(_L8("CAudioDevice::CanPlayNow() MediaTimeRequest() return %d"), err); - } - - // Indicate that processing a new buffer should not trigger a false start on playback. - iPlayData = EFalse; - return EFalse; - } - else if (iClockMediaTime > iParent.iStartMediaTime) - { - // NOTE: The spec. states that the clock should use the minimum of the received start times - // Therefore the Clock should NOT jump forwards with timestamp greater than the PCM - // Renderer iStartMediaTime - DEBUG_PRINTF3(_L8("CanPlayNow() nMediaTimestamp(%d) > iStartMediaTime(%d) IGNORE this use case"), - I64LOW(iClockMediaTime), I64LOW(iParent.iStartMediaTime)); - - // However if the Clock sends out a timestamp greater than the buffer's timestamp - // drop the buffers that fall outside the Clock specified MediaTimestamp; - - OMX_BUFFERHEADERTYPE* bufferPtr = iParent.iBuffersToEmpty[0]; - iParent.iBuffersToEmpty.Remove(0); - SignalBufferCompletion(bufferPtr); - bufferPtr = NULL; - - // Since the iStartMediaTime doesn't make sense anymore, reset iIsStartTimeFlagSet until the buffer's timestamp - // is within the the Clock's Media timestamp - iIsStartTimeFlagSet = EFalse; - return EFalse; - } - - return ETrue; - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::HandleClockStateChanged(const OMX_TIME_MEDIATIMETYPE& aMediaTimeType) - { - switch (aMediaTimeType.eState) - { - case OMX_TIME_ClockStateRunning: - { - iClockMediaTime = aMediaTimeType.nMediaTimestamp; - - // There are two possibilities: - // case 1 - The clock goes straight into running and the PCM renderer processes the - // StateChanged notification prior the audio buffer - - if (iIsStartTimeFlagSet) - { - // OR - // case 2 - The PCM recieves the audio buffer, and the clock StateChanged notification - // comes later - - // Clear the returning buffer's flag. - iParent.iBuffersToEmpty[0]->nFlags &= ~OMX_BUFFERFLAG_STARTTIME; - - // Cross checking the Clock's media timestamp with iStartMediaTime to see - // data can be rendered straight away - if (!CanPlayNow()) - { - break; - } - - // Start playing the audio and start updating the Clock media time regularly - PlayData(); - - if (!ConstructAndStartUpdateTimer()) - { - return; - } - } - - // Otherwise, the queue is empty; - // - // NOTE: When !iIsStartTimeFlagSet && !iClockStateRunning would drop the incoming buffers; - // if the first buffer does not have the OMX_BUFFERFLAG_STARTTIME set - } - break; - - case OMX_TIME_ClockStateWaitingForStartTime: - { - if (iClockStateRunning) - { - DEBUG_PRINTF(_L8("HandleClockStateChanged() OMX_TIME_ClockStateRunning -> OMX_TIME_ClockStateWaitingForStartTime IGNORED!!")); - } - else - { - // Let's try to process buffers (if any). - ProcessNextBuffer(); - } - } - break; - - case OMX_TIME_ClockStateStopped: - { - if (iClockStateRunning) - { - // The Clock was in "Running" state but not anymore; stop the audio - if (IsActive()) - { - Cancel(); - } - else - { - DoCancel(); - } - - iPlayData = ETrue; - if (iIsStartTimeFlagSet) - { - iIsStartTimeFlagSet = EFalse; - iPeriodic->Cancel(); - } - } - - // Otherwise, ignore other possibilities - } - - break; - - default: - { - DEBUG_PRINTF2(_L8("HandleClockStateChanged() aMediaTimeType.eState = %d IGNORED!!"), aMediaTimeType.eState); - } - break; - } - - iClockStateRunning = (aMediaTimeType.eState == OMX_TIME_ClockStateRunning) ? ETrue : EFalse; - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::HandleClockScaleChanged(const OMX_TIME_MEDIATIMETYPE& aMediaTimeType) - { - if (aMediaTimeType.xScale == 0) - { - PauseAudio(); - iPausedClockViaScale = ETrue; - DEBUG_PRINTF2(_L8("HandleClockScaleChanged() pausing iPausedClockViaScale = %d"), iPausedClockViaScale); - } - else if (aMediaTimeType.xScale == 0x10000) - { - // The scale is a Q16 value - iPausedClockViaScale = EFalse; - DEBUG_PRINTF2(_L8("HandleClockScaleChanged() resuming iPausedClockViaScale = %d"), iPausedClockViaScale); - iSoundDevice.ResumePlaying(); - iParent.iPFHelper->BufferIndication(); //handles the race condition where both 1) iSoundDevice was paused after the last PlayData() completed and before it was passed any data & 2) BufferIndication()s came in for all the IL buffers while in this paused state - StartUpdateTimer(); - } - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::DoCancel() - { - if (iSoundDevice.Handle() != 0) - { - iSoundDevice.CancelPlayData(); - iSoundDevice.FlushPlayBuffer(); - } - - if (iCurrentBuffer) - { - iCurrentBuffer->nFilledLen = 0; - - iParent.iCallbacks.BufferDoneNotification(iCurrentBuffer, - iCurrentBuffer->nInputPortIndex, - OMX_DirInput); - - iCachedPlayBuffer.Zero(); - iCurrentBuffer = NULL; - } - } - - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::OpenDevice() - { - OMX_ERRORTYPE err = OMX_ErrorNone; - if(!iSoundDevice.Handle()) - { -#ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER - if(KErrNone != iSoundDevice.Open(KSoundScTxUnit0)) -#else //SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER - if(KErrNone != iSoundDevice.Open()) -#endif //SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER - { - err = OMX_ErrorHardware; - } - } - return err; - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::CloseDevice() - { - OMX_ERRORTYPE err = OMX_ErrorNone; - if(iSoundDevice.Handle()) - { - iSoundDevice.Close(); - } - return err; - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::Execute() - { - if(!iSoundDevice.Handle()) - { - if(KErrNone != iSoundDevice.Open()) - { - return OMX_ErrorHardware; - } - } - - if(iParent.iState == OMX_StatePause) - { - // Now we can send BufferDone notifications for each emptied - // buffer... - iParent.FlushBufferList(iParent.iBuffersEmptied); - iSoundDevice.ResumePlaying(); - StartUpdateTimer(); - } - else - { - // Set play format - RMdaDevSound::TCurrentSoundFormatBuf buf; - iSoundDevice.GetPlayFormat(buf); - buf().iRate = iSampleRate; - buf().iChannels = iChannels; - buf().iBufferSize = iBufferSize; - buf().iEncoding = iEncoding; - if(KErrNone != iSoundDevice.SetPlayFormat(buf)) - { - return OMX_ErrorHardware; - } - - if (iMuted) - { - iSoundDevice.SetVolume(0); - } - else - { - iSoundDevice.SetVolume(iVolume); - } - } - - iParent.iState = OMX_StateExecuting; - - // Make sure to start processing of queued up buffers (if any) - if (!IsActive() && iParent.iBuffersToEmpty.Count() > 0) - { - ProcessNextBuffer(); - } - - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::MoveToPausedState() - { - iParent.iState = OMX_StatePause; - PauseAudio(); - - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::Stop() - { - if(iParent.iState == OMX_StateExecuting || iParent.iState == OMX_StatePause) - { - // Cancel and flush the device driver - Cancel(); - - // Cancel timer to stop calling RSoundSc::TimePlayed() - if (iIsStartTimeFlagSet) - { - ASSERT(iPeriodic); - iPeriodic->Cancel(); - } - - iParent.iState = OMX_StateIdle; - - // If the audio device is still open, store the last value of bytes - // played before closing the audio device... - if(iSoundDevice.Handle() != 0) - { - iLastBytesPlayedValue = iSoundDevice.BytesPlayed(); - // Close the sound device - iSoundDevice.Close(); - } - } - - iClockStateRunning = EFalse; - iIsStartTimeFlagSet = EFalse; - iPlayData = ETrue; - - return OMX_ErrorNone; - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::PauseAudio() - { - // Cancel timer to stop calling RSoundSc::TimePlayed() - if (iIsStartTimeFlagSet) - { - ASSERT(iPeriodic); - iPeriodic->Cancel(); - } - - if (iSoundDevice.Handle()) - { - iSoundDevice.PausePlayBuffer(); - } - } - - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::SetChannels(TUint aChannels) - { - iChannels = aChannels; - return SetPlayFormat(); - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::SetSampleRate(TUint aSampleRate) - { - iSampleRate = aSampleRate; - return SetPlayFormat(); - } - -TInt ConvertOmxToSymbianVolume(TInt aVolume) - { - // OpenMax volume is in millibels while Symbian volume is in 0.5 db increments in the [0..255] range - // We divide by 50 as 0.5 dB = 50 millibells - TInt res = KMedianVolume + aVolume / 50; - if (res < 0) - return 0; - if (res > KMaxVolume) - return KMaxVolume; - return res; - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::SetVolume(TInt aVolume) - { - iVolume = ConvertOmxToSymbianVolume(aVolume); - if ((!iMuted) && (iSoundDevice.Handle() != 0)) - { - iSoundDevice.SetVolume(iVolume); - } - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration) - { - iVolumeRamp = aRampDuration; - if(iVolumeRamp.Int64() != 0) - { - iRampAudioSample = ETrue; - ConfigAudioRamper( - iVolumeRamp.Int64()); - } - else - { - iRampAudioSample = EFalse; - } - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::SetMuted(TBool aMuted) - { - iMuted = aMuted; - - if (iSoundDevice.Handle() == 0) - { - // Just cache the value; the value will be set once the the device is opened - return OMX_ErrorNone; - } - - if (iMuted) - { - iSoundDevice.SetVolume(0); - } - else - { - iSoundDevice.SetVolume(iVolume); - } - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxILPcmRendererProcessingFunction::CAudioDevice::SetPlayFormat() - { - if (iParent.iState == OMX_StateExecuting) - { - RMdaDevSound::TCurrentSoundFormatBuf buf; - iSoundDevice.GetPlayFormat(buf); - buf().iRate = iSampleRate; - buf().iChannels = iChannels; - buf().iBufferSize = iBufferSize; - buf().iEncoding = iEncoding; - if(KErrNone != iSoundDevice.SetPlayFormat(buf)) - { - return OMX_ErrorHardware; - } - } - return OMX_ErrorNone; - } - -OMX_BUFFERHEADERTYPE* COmxILPcmRendererProcessingFunction::CAudioDevice::GetCurrentBuffer() - { - return iCurrentBuffer; - } - -TInt COmxILPcmRendererProcessingFunction::CAudioDevice::GetBytesPlayed() - { - if(iSoundDevice.Handle() != 0) - { - return iSoundDevice.BytesPlayed(); - } - - return iLastBytesPlayedValue; - } - -void COmxILPcmRendererProcessingFunction::CAudioDevice::ConfigAudioRamper(TInt64 aRampTime) - { - iRampSamples = I64LOW(((TInt64(iSampleRate) * aRampTime) /1000000 )); // Add this - iRampSamplesLeft = iRampSamples; - iRampIncr = 0; - iSkip = ETrue; - } - -TBool COmxILPcmRendererProcessingFunction::CAudioDevice::RampAudio(CMMFDataBuffer* aBuffer) - { - TInt i=0; - TInt length = aBuffer->Data().Length()>>1; - if (length == 0) - { - return EFalse; - } - - TInt16* sample = REINTERPRET_CAST(TInt16*,&aBuffer->Data()[0]); - TInt64 theResult(0); - while ((i < length) && (iRampIncr < iRampSamples)) - { - theResult = sample[i]; - theResult *= iRampIncr; - theResult /= iRampSamples; - sample[i] = STATIC_CAST(TInt16, I64LOW(theResult) ); - - if ((iChannels == 1) || (!iSkip)) - { - iRampIncr++; - } - iSkip = !iSkip; - i++; - } - - if (iRampIncr < iRampSamples) - return ETrue; - else - return EFalse; - } - - -TInt COmxILPcmRendererProcessingFunction::CAudioDevice::UpdateClockMediaTime(TAny* aPtr) - { - CAudioDevice* ptr = (CAudioDevice*)aPtr; - TTimeIntervalMicroSeconds playedTime(0); - - if (ptr->iSoundDevice.GetTimePlayed(playedTime) != KErrNone) - { - ptr->iParent.iCallbacks.ErrorEventNotification(OMX_ErrorHardware); - return EFalse; - } - - OMX_ERRORTYPE err; - - // Update the clock component audio reference clock - err = ptr->iParent.iClientClockPortPtr->SetAudioReference(ptr->iParent.iStartMediaTime + playedTime.Int64()); - - if (err != OMX_ErrorNone) - { - ptr->iParent.iCallbacks.ErrorEventNotification(err); - return EFalse; - } - - DEBUG_PRINTF2(_L8("CAudioDevice::UpdateClockMediaTime : playedTime = %d"), - I64LOW(playedTime.Int64())); - - return ETrue; - } - - -void COmxILPcmRendererProcessingFunction::CAudioDevice::ProcessParamIndication(const OMX_AUDIO_PARAM_PCMMODETYPE& aPcmModeType) - { - if(SetChannels(aPcmModeType.nChannels) != OMX_ErrorNone) - { - iParent.iCallbacks.ErrorEventNotification(OMX_ErrorHardware); - return; - } - - if (SetSampleRate(aPcmModeType.nSamplingRate) != OMX_ErrorNone) - { - iParent.iCallbacks.ErrorEventNotification(OMX_ErrorHardware); - return; - } - } - -COmxILPcmRendererProcessingFunction::CPFHelper* COmxILPcmRendererProcessingFunction::CPFHelper::NewL(CAudioDevice& aAudioDevice) - { - CPFHelper* self = new (ELeave) CPFHelper(aAudioDevice); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -COmxILPcmRendererProcessingFunction::CPFHelper::CPFHelper(CAudioDevice& aAudioDevice) -: CActive(EPriorityUserInput), - iAudioDevice(aAudioDevice) - { - } - -void COmxILPcmRendererProcessingFunction::CPFHelper::ConstructL() - { - CActiveScheduler::Add(this); - User::LeaveIfError(iCallerSemaphore.CreateGlobal(KNullDesC, 0)); - User::LeaveIfError(iMsgQueue.CreateLocal(KMaxMsgQueueEntries)); - iMsgQueue.NotifyDataAvailable(iStatus); - RThread thisThread; - iHelperThreadId = thisThread.Id(); - thisThread.Close(); - SetActive(); - } - -COmxILPcmRendererProcessingFunction::CPFHelper::~CPFHelper() - { - Cancel(); - iMsgQueue.Close(); - iCallerSemaphore.Close(); - } - -void COmxILPcmRendererProcessingFunction::CPFHelper::RunL() - { - - TProcMessage msg; - while (iMsgQueue.Receive(msg)==KErrNone) - { - switch (msg.iType) - { - case EOpenDevice: - { - iAudioDevice.OpenDevice(); - break; - } - case ECloseDevice: - { - iAudioDevice.CloseDevice(); - break; - } - case ECloseDeviceOnError: - { - iAudioDevice.Cancel(); - iAudioDevice.CloseDevice(); - iCallerSemaphore.Signal(); - break; - } - case EExecuteCommand: - { - iAudioDevice.Execute(); - break; - } - - case EStopCommand: - { - iAudioDevice.Stop(); - break; - } - - case ECancelCommand: - { - iAudioDevice.Cancel(); - break; - } - - case EBufferIndication: - { - iAudioDevice.ProcessNextBuffer(); - break; - } - case EMediaTimeIndication: - { - iAudioDevice.ProcessMediaTimeIndication(msg.iMediaTimeType); - break; - } - case EParamIndication: - { - iAudioDevice.ProcessParamIndication(msg.iPcmModeType); - break; - } - case ESetVolumeRamp: - { - iAudioDevice.SetVolumeRamp(TTimeIntervalMicroSeconds(msg.iRampDuration)); - break; - } - case ESetVolume: - { - iAudioDevice.SetVolume(msg.iVolumeValue); - break; - } - case ESetMuted: - { - iAudioDevice.SetMuted(msg.iMuted); - break; - } - default: - { - break; - } - } - } - DEBUG_PRINTF2(_L8("COmxILPcmRendererProcessingFunction::CPFHelper::RunL : msg.iType[%d]"), msg.iType); - // setup for next callbacks - iMsgQueue.NotifyDataAvailable(iStatus); - SetActive(); - } - -void COmxILPcmRendererProcessingFunction::CPFHelper::DoCancel() - { - if (iMsgQueue.Handle()!=NULL) - { - iMsgQueue.CancelDataAvailable(); - } - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::OpenDevice() - { - TProcMessage message; - message.iType = EOpenDevice; - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::CloseDevice() - { - DEBUG_PRINTF2(_L8("COmxILPcmRendererProcessingFunction::CPFHelper::CloseDevice : IsActive[%s]"), - (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = ECloseDevice; - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::CloseDeviceOnError() - { - DEBUG_PRINTF2(_L8("COmxILPcmRendererProcessingFunction::CPFHelper::CloseDeviceOnError : IsActive[%d]"), (IsActive() ? 1 : 0)); - - RThread thisThread; - if (thisThread.Id() == iHelperThreadId) - { - // Just do it... - iAudioDevice.Cancel(); - iAudioDevice.CloseDevice(); - } - else - { - - TProcMessage message; - message.iType = ECloseDeviceOnError; - TInt error = iMsgQueue.Send(message); - if (KErrNone != error) - { - // only wait if the message was sent into the queue... - iCallerSemaphore.Wait(); - } - } - - thisThread.Close(); - - return KErrNone; - - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::Execute() - { - DEBUG_PRINTF2(_L8("CPFHelper::Execute : IsActive[%s]"), (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = EExecuteCommand; - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::Stop() - { - DEBUG_PRINTF2(_L8("CPFHelper::Stop : IsActive[%s]"), (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = EStopCommand; - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::CancelDevice() - { - DEBUG_PRINTF2(_L8("CPFHelper::CancelDevice : IsActive[%s]"), (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = ECancelCommand; - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::BufferIndication() - { - DEBUG_PRINTF2(_L8("CPFHelper::BufferIndication : IsActive[%s]"), (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = EBufferIndication; - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::MediaTimeIndication(const OMX_TIME_MEDIATIMETYPE& aMediaTimeType) - { - DEBUG_PRINTF2(_L8("CPFHelper::MediaTimeIndication : IsActive[%s]"), (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = EMediaTimeIndication; - message.iMediaTimeType.eUpdateType = aMediaTimeType.eUpdateType; - message.iMediaTimeType.eState = aMediaTimeType.eState; - message.iMediaTimeType.xScale = aMediaTimeType.xScale; - message.iMediaTimeType.nMediaTimestamp = aMediaTimeType.nMediaTimestamp; - - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::ParamIndication(const OMX_AUDIO_PARAM_PCMMODETYPE* aPcmModeType) - { - DEBUG_PRINTF2(_L8("CPFHelper::ParamIndication : IsActive[%s]"), (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = EParamIndication; - message.iPcmModeType.nChannels = aPcmModeType->nChannels; - message.iPcmModeType.nSamplingRate = aPcmModeType->nSamplingRate; - - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::SetVolumeRamp(const OMX_U64 aRampDuration) - { - DEBUG_PRINTF2(_L8("CPFHelper::SetVolumeRamp : IsActive[%s]"), (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = ESetVolumeRamp; - message.iRampDuration = aRampDuration; - - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::SetVolume(const OMX_S32 aVolumeValue) - { - DEBUG_PRINTF2(_L8("CPFHelper::SetVolume : IsActive[%s]"), (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = ESetVolume; - message.iVolumeValue = aVolumeValue; - - return iMsgQueue.Send(message); - } - -TInt COmxILPcmRendererProcessingFunction::CPFHelper::SetMuted(const OMX_BOOL aMuted) - { - DEBUG_PRINTF2(_L8("CPFHelper::SetMuted : IsActive[%s]"), (IsActive() ? "YES" : "NO")); - TProcMessage message; - message.iType = ESetMuted; - message.iMuted = aMuted; - - return iMsgQueue.Send(message); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererprocessingfunction.h --- a/omxil/omxilrefcomps/ref_components/audio/pcmrenderer/src/omxilpcmrendererprocessingfunction.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,236 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -/** - @file - @internalComponent -*/ - -#ifndef OMXILPCMRENDERERPROCESSINGFUNCTION_H -#define OMXILPCMRENDERERPROCESSINGFUNCTION_H - -#include -#include "omxilpcmrendererconst.h" -#include "omxilprocessingfunction.h" - -// Forward declarations -class MOmxILClockComponentCmdsIf; - -NONSHARABLE_CLASS(COmxILPcmRendererProcessingFunction) : - public COmxILProcessingFunction - { - -public: - static COmxILPcmRendererProcessingFunction* NewL( - MOmxILCallbackNotificationIf& aCallbacks, - MOmxILClockComponentCmdsIf& aClientClockPort); - - ~COmxILPcmRendererProcessingFunction(); - - OMX_ERRORTYPE StateTransitionIndication(COmxILFsm::TStateIndex aNewState); - - OMX_ERRORTYPE BufferFlushingIndication(TUint32 aPortIndex, - OMX_DIRTYPE aDirection); - - OMX_ERRORTYPE ParamIndication(OMX_INDEXTYPE aParamIndex, - const TAny* apComponentParameterStructure); - - OMX_ERRORTYPE ConfigIndication(OMX_INDEXTYPE aConfigIndex, - const TAny* apComponentConfigStructure); - - OMX_ERRORTYPE BufferIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection); - - OMX_ERRORTYPE MediaTimeIndication(const OMX_TIME_MEDIATIMETYPE& aMediaTimeType); - - OMX_BOOL BufferRemovalIndication( - OMX_BUFFERHEADERTYPE* apBufferHeader, - OMX_DIRTYPE aDirection); - - TInt GetBytesPlayed() const; - -private: - - COmxILPcmRendererProcessingFunction(MOmxILCallbackNotificationIf& aCallbacks, - MOmxILClockComponentCmdsIf& aClientClockPort); - - void ConstructL(); - - void FlushBufferList(RPointerArray& aBufferList); - -private: - RPointerArray iBuffersToEmpty; - RPointerArray iBuffersEmptied; - OMX_STATETYPE iState; - MOmxILClockComponentCmdsIf* iClientClockPortPtr; - OMX_TICKS iStartMediaTime; - - class CAudioDevice : public CActive - { - public: - static CAudioDevice* NewL(COmxILPcmRendererProcessingFunction& aParent); - ~CAudioDevice(); - - // from CActive - void RunL(); - void DoCancel(); - - OMX_ERRORTYPE OpenDevice(); - OMX_ERRORTYPE CloseDevice(); - OMX_ERRORTYPE Execute(); - OMX_ERRORTYPE MoveToPausedState(); - OMX_ERRORTYPE Stop(); - - OMX_ERRORTYPE SetChannels(TUint aChannels); - OMX_ERRORTYPE SetSampleRate(TUint aSampleRate); - OMX_ERRORTYPE SetVolume(TInt aVolume); - OMX_ERRORTYPE SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration); - OMX_ERRORTYPE SetMuted(TBool aMuted); - OMX_BUFFERHEADERTYPE* GetCurrentBuffer(); - TInt GetBytesPlayed(); - void ConfigAudioRamper(TInt64 aRampTime); - TBool RampAudio(CMMFDataBuffer* aBuffer); - TBool ConstructAndStartUpdateTimer(); - void ProcessNextBuffer(); - void PlayData(); - void ProcessMediaTimeIndication(OMX_TIME_MEDIATIMETYPE& aMediaTimeType); - void ProcessParamIndication(const OMX_AUDIO_PARAM_PCMMODETYPE& aPcmModeType); - - private: - CAudioDevice(COmxILPcmRendererProcessingFunction& aParent); - void ConstructL(); - OMX_ERRORTYPE SetPlayFormat(); - void SignalBufferCompletion(OMX_BUFFERHEADERTYPE* apCurrentBuffer); - TBool IsBufferLengthSufficient(TInt aBufferLength) const; - TInt GetMinBufferLength() const; - void SendBufferToSoundDevice(TDes8& aBuffer); - void StartUpdateTimer(); - void HandleClockStateChanged(const OMX_TIME_MEDIATIMETYPE& aMediaTimeType); - TBool CanPlayNow(); - void HandleClockScaleChanged(const OMX_TIME_MEDIATIMETYPE& aMediaTimeType); - void PauseAudio(); - - // From MGenericTimerClient - static TInt UpdateClockMediaTime(TAny* aPtr ); - - private: - RMdaDevSound iSoundDevice; - OMX_BUFFERHEADERTYPE* iCurrentBuffer; - COmxILPcmRendererProcessingFunction& iParent; - TInt iSampleRate; - TInt iChannels; - RMdaDevSound::TMdaSoundEncoding iEncoding; - TUint iVolume; - TBool iMuted; - TUint iBufferSize; - TTimeIntervalMicroSeconds iVolumeRamp; - TBool iRampAudioSample; - TInt iRampSamples; - TInt iRampSamplesLeft; - TInt iRampIncr; - TBool iSkip; - TBool iClockStateRunning; - TBool iPausedClockViaScale; - TBool iIsStartTimeFlagSet; - OMX_TICKS iClockMediaTime; - TBool iPlayData; // To indicate whether it can start rendering audio or not - - /// If the component is in a state other than OMX_StateExecuting, this - /// internal variable is used to store the last value of bytes played by - /// the Sound Device. - TInt iLastBytesPlayedValue; - - /// This is used to send a media time update to the clock component - CPeriodic* iPeriodic; - - // This variable is used to optionally allocate a memory segment to cache OMX buffers if the tunnelled component does not utilise them well - // If the tunnelled components don't fill in sufficient data in the buffers, this can create underflows in the renderer, as the driver won't have enough data to play - RBuf8 iCachedPlayBuffer; - - } *iAudioDevice; - - class CPFHelper : public CActive - { - public: - static CPFHelper* NewL(CAudioDevice& aAudioDevice); - ~CPFHelper(); - - // from CActive - void RunL(); - void DoCancel(); - - TInt OpenDevice(); - TInt CloseDevice(); - TInt CloseDeviceOnError(); - TInt Execute(); - TInt Stop(); - TInt CancelDevice(); - TInt BufferIndication(); - TInt MediaTimeIndication(const OMX_TIME_MEDIATIMETYPE& aMediaTimeType); - TInt ParamIndication(const OMX_AUDIO_PARAM_PCMMODETYPE* aPcmModeType); - TInt SetVolumeRamp(const OMX_U64 aRampDuration); - TInt SetVolume(const OMX_S32 aVolumeValue); - TInt SetMuted(const OMX_BOOL aVolumeValue); - - enum TMessageType - { - EOpenDevice, - ECloseDevice, - ECloseDeviceOnError, - EExecuteCommand, - EStopCommand, - ECancelCommand, - EBufferIndication, - EMediaTimeIndication, - EParamIndication, - ESetVolumeRamp, - ESetVolume, - ESetMuted - }; - - class TProcMessage - { - public: - TMessageType iType; - OMX_TIME_MEDIATIMETYPE iMediaTimeType; - OMX_AUDIO_PARAM_PCMMODETYPE iPcmModeType; - OMX_U64 iRampDuration; - OMX_S32 iVolumeValue; - OMX_BOOL iMuted; - }; - - RMsgQueue iMsgQueue; - - private: - CPFHelper(CAudioDevice& aAudioDevice); - void ConstructL(); - - private: - - static const TInt KMaxMsgQueueEntries = 150; - - CAudioDevice& iAudioDevice; - TThreadId iHelperThreadId; - RSemaphore iCallerSemaphore; - - } *iPFHelper; - - }; - -#endif // OMXILPCMRENDERERPROCESSINGFUNCTION_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/group/bld.inf --- a/omxil/omxilrefcomps/ref_components/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -PRJ_MMPFILES -// Components -../mmpfiles/omxilpcmrenderer.mmp - -PRJ_EXPORTS -// Romkit include files -omxilcompref.iby /epoc32/rom/include/omxilcompref.iby - - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/group/multimedia_omx_il_comp_ref.mrp --- a/omxil/omxilrefcomps/ref_components/group/multimedia_omx_il_comp_ref.mrp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -# multimedia_omx_il_comp_ref.mrp -# -# Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "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: -# -# Description: -# - -component multimedia_omx_il_comp_ref - -source \sf\os\mm\omxil\omxilrefcomps\ref_components\ - -binary \sf\os\mm\omxil\omxilrefcomps\ref_components\group all - -exports \sf\os\mm\omxil\omxilrefcomps\ref_components\group - -notes_source \component_defs\release.src - -ipr T diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/group/omxilcompref.iby --- a/omxil/omxilrefcomps/ref_components/group/omxilcompref.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILCOMPREF_IBY -#define OMXILCOMPREF_IBY - - -// OMX IL Components -ECOM_PLUGIN(omxilpcmrenderer.dll, omxilpcmrenderer.rsc) - -#endif // OMXILCOMPREF_IBY \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilrefcomps/ref_components/mmpfiles/omxilpcmrenderer.mmp --- a/omxil/omxilrefcomps/ref_components/mmpfiles/omxilpcmrenderer.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// @file omxilpcmrenderer.dll -// @SYMPurpose -// -// - -#include "../audio/pcmrenderer/src/omxilpcmrenderer.hrh" - -TARGET omxilpcmrenderer.dll -CAPABILITY ALL -TCB -TARGETTYPE plugin -UID 0x10009D8D KUidSymbianOmxILPcmRendererDll -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -USERINCLUDE ../audio/pcmrenderer/src -USERINCLUDE ../../../omxilcomponentcommon/src/common -USERINCLUDE ../audio/pcmrenderer/inc -USERINCLUDE ../../../../../mm/mmdevicefw/mdf/src/audio/mdasoundadapter - - -SOURCEPATH ../audio/pcmrenderer/src -SOURCE omxilpcmrenderer.cpp -SOURCE omxilpcmrendererapb0port.cpp -SOURCE omxilpcmrendererprocessingfunction.cpp -SOURCE omxilpcmrendererconfigmanager.cpp - -RESOURCE omxilpcmrenderer.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY omxilcomponentcommon.lib -STATICLIBRARY omxilcomponentif.lib - -#ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER -LIBRARY mdasoundadapter.lib -#endif - -// Uncomment to activate debug tracing in this module -MACRO _OMXIL_PCMRENDERER_DEBUG_TRACING_ON - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/bwins/tsu_omxil_pcmrenderer_01.def --- a/omxil/omxilunittest/components/bwins/tsu_omxil_pcmrenderer_01.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?NewTestSuiteL@@YAPAVCTestSuiteOmxILPcmRenderer@@XZ @ 1 NONAME ; class CTestSuiteOmxILPcmRenderer * NewTestSuiteL(void) - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/data/pcm16stereo44khz.raw Binary file omxil/omxilunittest/components/data/pcm16stereo44khz.raw has changed diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/data/pcm16stereo8khz.raw Binary file omxil/omxilunittest/components/data/pcm16stereo8khz.raw has changed diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/eabi/tsu_omxil_pcmrenderer_01.def --- a/omxil/omxilunittest/components/eabi/tsu_omxil_pcmrenderer_01.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - _Z13NewTestSuiteLv @ 1 NONAME - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/group/bld.inf --- a/omxil/omxilunittest/components/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -PRJ_TESTEXPORTS -../scripts/tsu_omxil_pcmrenderer_01.script c:/omxil/tsu_omxil_pcmrenderer_01.script - -// Export test files -../data/pcm16stereo8khz.raw c:/omxil/testfiles/pcm16stereo8khz.raw -../data/pcm16stereo44khz.raw c:/omxil/testfiles/pcm16stereo44khz.raw - -// .iby -tsu_omxil_components.iby /epoc32/rom/include/tsu_omxil_components.iby - -PRJ_TESTMMPFILES -../mmpfiles/tsu_omxil_pcmrenderer_01.mmp - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/group/component_test.pkg --- a/omxil/omxilunittest/components/group/component_test.pkg Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - -"\sf\os\mm\omxil\omxilunittest\components\scripts\tsu_omxil_pcmrenderer_01.script"-"c:\omxil\tsu_omxil_pcmrenderer_01.script" - -// "\sf\os\mm\omxil\omxilunittest\components\data\pcm16stereo8khz.raw"-"c:\omxil\testfiles\pcm16stereo8khz.raw -// "\sf\os\mm\omxil\omxilunittest\components\data\pcm16stereo44khz.raw"-"c:\omxil\testfiles\pcm16stereo44khz.raw diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/group/tsu_omxil_components.iby --- a/omxil/omxilunittest/components/group/tsu_omxil_components.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef TSU_OMXIL_COMPONENTS_IBY -#define TSU_OMXIL_COMPONENTS_IBY - -// OMX IL Components Unit tests and scripts - -file=ABI_DIR\BUILD_DIR\tsu_omxil_pcmrenderer_01.dll System\Libs\tsu_omxil_pcmrenderer_01.dll -data=EPOCROOT##epoc32\data\c\omxil\tsu_omxil_pcmrenderer_01.script \omxil\tsu_omxil_pcmrenderer_01.script - -#endif // TSU_OMXIL_COMPONENTS_IBY \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/mmpfiles/tsu_omxil_pcmrenderer_01.mmp --- a/omxil/omxilunittest/components/mmpfiles/tsu_omxil_pcmrenderer_01.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/uids.hrh" - -TARGET tsu_omxil_pcmrenderer_01.dll -CAPABILITY ALL -TCB -TARGETTYPE dll -UID KSharedLibraryUidDefine KUidTsuOmxILPcmRendererDll -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN -OS_LAYER_ESTLIB_SYSTEMINCLUDE - -USERINCLUDE ../src -USERINCLUDE ../../../omxilrefcomps/ref_components/audio/pcmrenderer/inc -USERINCLUDE ../../../omxilcomponentcommon/src/common -USERINCLUDE ../../../omxilrefcomps/ref_components/audio/pcmrenderer/src - -SOURCEPATH ../src -SOURCE tsu_omxil_component_base.cpp -SOURCE tsu_omxil_pcmrenderer_suite.cpp -SOURCE tsu_omxil_pcmrenderer_step.cpp - -LIBRARY euser.lib -LIBRARY efsrv.lib -LIBRARY ecom.lib -LIBRARY testframeworkclient.lib -LIBRARY omxilcomponentcommon.lib -LIBRARY mmfserverbaseclasses.lib -STATICLIBRARY omxilcomponentif.lib - -NOSTRICTDEF -#ifdef EABI -NOEXPORTLIBRARY -#endif - -// Uncomment to activate debug tracing in this module -// MACRO _OMXIL_AACUNIT_DEBUG_TRACING_ON - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/scripts/tsu_omxil_pcmrenderer_01.script --- a/omxil/omxilunittest/components/scripts/tsu_omxil_pcmrenderer_01.script Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -LOAD_SUITE tsu_omxil_pcmrenderer_01.dll - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0020-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0020-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0021-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0021-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0022-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0022-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0001-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0001-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0002-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0002-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0003-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0003-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0004-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0004-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0005-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0005-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0006-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0006-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0007-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0007-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0008-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0008-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0009-HP - -RUN_TEST_STEP 30000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0009-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0010-HP - -RUN_TEST_STEP 30000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0010-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0030-HP - -RUN_TEST_STEP 20000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0030-HP -TEST_COMPLETE - -//! @SYMTestCaseID MM-OMXIL-OMXILPCMRENDERER-U-0031-HP - -RUN_TEST_STEP 30000 tsu_omxil_pcmrenderer_01 MM-OMXIL-OMXILPCMRENDERER-U-0031-HP -TEST_COMPLETE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/src/log.h --- a/omxil/omxilunittest/components/src/log.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,146 +0,0 @@ -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef __SWI_LOG_H__ -#define __SWI_LOG_H__ - -#include - -class TTruncateOverflowHandler16 : public TDes16Overflow - { - public: - virtual void Overflow( TDes16& aDes ); - }; - -inline void TTruncateOverflowHandler16::Overflow( TDes16& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -class TTruncateOverflowHandler8 : public TDes8Overflow - { - public: - virtual void Overflow( TDes8& aDes ); - }; - -inline void TTruncateOverflowHandler8::Overflow( TDes8& aDes) - { - _LIT(KErrOverflowMsg,"Descriptor Overflow, hence value truncated"); - if( aDes.MaxLength() >= KErrOverflowMsg().Length() + aDes.Length() ) - aDes.Append(KErrOverflowMsg); - } - -namespace DSD -{ - -#ifdef _DEBUG - -#ifdef _OMXIL_AACUNIT_DEBUG_TRACING_ON - -#define DEBUG_PRINTF(a) {DSD::DebugPrintf(__LINE__, __FILE__, a);} -#define DEBUG_PRINTF2(a, b) {DSD::DebugPrintf(__LINE__, __FILE__, a, b);} -#define DEBUG_PRINTF3(a, b, c) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c);} -#define DEBUG_PRINTF4(a, b, c, d) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d);} -#define DEBUG_PRINTF5(a, b, c, d, e) {DSD::DebugPrintf(__LINE__, __FILE__, a, b, c, d, e);} - -#define DEBUG_CODE_SECTION(a) TRAP_IGNORE({ a; }) - -// UTF-8 overload of the DebufPrintf method. Should be used by default, -// since it's cheaper both in CPU cycles and stack space. - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler8 overflowHandler8; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<1024> buffer; - _LIT8(KSwiLogPrefix, "[aacunit] "); - _LIT8(KSwiLineFileFormat, "TID[%d] : [%s:%d] -- "); - buffer.Append(KSwiLogPrefix); - RThread thread; - TUint threadId = thread.Id(); - thread.Close(); - RProcess proc; - TFileName fName = proc.FileName(); - proc.Close(); - buffer.AppendFormat(KSwiLineFileFormat, threadId, aFile, aLine); - buffer.AppendFormatList(aFormat, list ,&overflowHandler8 ); - buffer.Append(_L8("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } - -// Unicode DebufPrintf overload - -inline void DebugPrintf(TInt aLine, char* aFile, TRefByValue aFormat, ...) - { - TTruncateOverflowHandler16 overflowHandler16; - VA_LIST list; - VA_START(list, aFormat); - - TTime now; - now.HomeTime(); - - TBuf8<256> header; - _LIT8(KSwiLogPrefix, "[aacunit] "); - _LIT8(KSwiLineFileFormat, "%Ld Line: % 5d, File: %s -- "); - header.Append(KSwiLogPrefix); - header.AppendFormat(KSwiLineFileFormat, now.Int64(), aLine, aFile); - - TBuf<1024> buffer; - buffer.Copy(header); - buffer.AppendFormatList(aFormat, list ,&overflowHandler16); - buffer.Append(_L("\r\n")); - - RDebug::RawPrint(buffer); - - VA_END(list); - } -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - -#else - -#define DEBUG_PRINTF(a) -#define DEBUG_PRINTF2(a, b) -#define DEBUG_PRINTF3(a, b, c) -#define DEBUG_PRINTF4(a, b, c, d) -#define DEBUG_PRINTF5(a, b, c, d, e) - -#define DEBUG_CODE_SECTION(a) - -#endif - - -} // namespace DSD - -#endif // __SWI_LOG_H__ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/src/tsu_omxil_component_base.cpp --- a/omxil/omxilunittest/components/src/tsu_omxil_component_base.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,858 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#include -#include - -#include -#include -#include - -#include "log.h" -#include "tsu_omxil_component_base.h" - - -const TInt CCallbackHandler::KMaxMsgQueueEntries; - - -CAacTestFile* -CAacTestFile::NewL() - { - DEBUG_PRINTF(_L8("CAacTestFile::NewL")); - CAacTestFile* self = new (ELeave) CAacTestFile(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -void -CAacTestFile::ConstructL() - { - DEBUG_PRINTF(_L8("CAacTestFile::ConstructL")); - } - -CAacTestFile::CAacTestFile() : - iSourceFile(0), - iSourceFileReadPos(0), - iFinished(EFalse) - { - DEBUG_PRINTF(_L8("CAacTestFile::CAacTestFile")); - } - -CAacTestFile::~CAacTestFile() - { - DEBUG_PRINTF(_L8("CAacTestFile::~CAacTestFile")); - - delete iSourceFile; - - } - -TInt -CAacTestFile::ReadTestFileInBuffer(const TDesC& aFileName) - { - DEBUG_PRINTF(_L8("CAacTestFile::ReadTestFileInBuffer")); - - RFs fs; - fs.Connect(); - - RFile file; - TInt err = file.Open(fs, aFileName, EFileRead); - if (err == KErrNone) - { - TInt size; - err = file.Size(size); - if (err == KErrNone) - { - iSourceFile = HBufC8::NewMax(size); - if(!iSourceFile) - { - return KErrNoMemory; - } - TPtr8 ptr = iSourceFile->Des(); - file.Read(ptr,size); - file.Close(); - } - fs.Close(); - } - - return err; - - } - - -void -CAacTestFile::ReadNextBuffer(CMMFBuffer& aDataBuffer) - { - DEBUG_PRINTF(_L8("CAacTestFile::ReadNextBuffer")); - - CMMFDataBuffer* pDataBuffer = static_cast(&aDataBuffer); - while (ETrue) - { - // check if finished - if (iFinished) - { - DEBUG_PRINTF(_L8("CAacTestFile::ReadNextBuffer : File finished")); - pDataBuffer->Data().Zero(); - return; - } - - TInt srcLength = iSourceFile->Size(); - if (iSourceFileReadPos < srcLength) - { - TInt size = srcLength; - if (size > pDataBuffer->Data().MaxLength()) - { - size = pDataBuffer->Data().MaxLength(); - } - Mem::Copy((TAny*)pDataBuffer->Data().Ptr(), (TAny*)iSourceFile->Mid(iSourceFileReadPos).Ptr(), size); - pDataBuffer->Data().SetLength(size); - iSourceFileReadPos += size; - DEBUG_PRINTF2(_L8("CAacTestFile::ReadNextBuffer : data read = [%d] bytes"), iSourceFileReadPos); - DEBUG_PRINTF2(_L8("CAacTestFile::ReadNextBuffer : pDataBuffer->BufferSize = [%u] bytes"), pDataBuffer->BufferSize()); - if (iSourceFileReadPos >= srcLength) - { - DEBUG_PRINTF(_L8("CAacTestFile::ReadNextBuffer : end of data")); - pDataBuffer->SetLastBuffer(ETrue); - iFinished = ETrue; - } - return; - - } - else - { - // no more data - DEBUG_PRINTF(_L8("CAacTestFile::ReadNextBuffer : end of data")); - iFinished = ETrue; - return; - } - } - } - -void -CAacTestFile::ResetPos() - { - iSourceFileReadPos = 0; - iFinished = EFalse; - } - -TInt -CAacTestFile::GetPos() - { - return iSourceFileReadPos; - } - - -CAacOutputTestFile* -CAacOutputTestFile::NewL() - { - DEBUG_PRINTF(_L8("CAacOutputTestFile::NewL")); - CAacOutputTestFile* self = new (ELeave) CAacOutputTestFile(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -void -CAacOutputTestFile::ConstructL() - { - DEBUG_PRINTF(_L8("CAacOutputTestFile::ConstructL")); - } - -CAacOutputTestFile::CAacOutputTestFile() : - iFileServerSession(), - iOutputFile(), - iWrittenDataTotal(0), - iBuffersWrittenCount(0) - { - DEBUG_PRINTF(_L8("CAacOutputTestFile::CAacOutputTestFile")); - } - -CAacOutputTestFile::~CAacOutputTestFile() - { - DEBUG_PRINTF(_L8("CAacOutputTestFile::~CAacOutputTestFile")); - } - -TInt -CAacOutputTestFile::SetUpOutputFile(const TDesC& aFileName) - { - DEBUG_PRINTF(_L8("CAacOutputTestFile::SetUpOutputFile")); - - iFileServerSession.Connect(); - TInt err = iOutputFile.Create(iFileServerSession, - aFileName, - EFileWrite|EFileShareExclusive); - if(err != KErrNone) - { - err = iOutputFile.Replace(iFileServerSession, - aFileName, - EFileWrite|EFileShareExclusive); - } - return err; - - } - -TInt -CAacOutputTestFile::WriteDataToFile(const CMMFBuffer& aDataBuffer) - { - DEBUG_PRINTF(_L8("CAacOutputTestFile::WriteDataToFile")); - - const CMMFDataBuffer& dataBuffer = static_cast(aDataBuffer); - const TDesC8& data = dataBuffer.Data(); - - TInt err = KErrNone; - err = iOutputFile.Write(data); - if(err != KErrNone) - { - return err; - } - // keep record of amount of data and the number of buffers written out - iWrittenDataTotal += data.Size(); - iBuffersWrittenCount++; - - DEBUG_PRINTF2(_L8("CAacOutputTestFile::WriteDataToFile : data.Size()[%d]"), data.Size()); - DEBUG_PRINTF2(_L8("CAacOutputTestFile::WriteDataToFile : iWrittenDataTotal[%d]"), iWrittenDataTotal); - DEBUG_PRINTF2(_L8("CAacOutputTestFile::WriteDataToFile : iBuffersWrittenCount[%d]"), iBuffersWrittenCount); - - return err; - - } - - -TInt -CAacOutputTestFile::AddWavHeader() - { - DEBUG_PRINTF(_L8("CAacOutputTestFile::AddWavHeader")); - - RFs fs; - fs.Connect(); - - RFile file; - TInt err = file.Open(fs, KAacDecoderOutputTestFile, EFileRead); - if (err != KErrNone) - { - return err; - } - - TInt size; - err = file.Size(size); - if (err != KErrNone) - { - return err; - } - - HBufC8* rawDecFile = HBufC8::NewMax(size); - if(!rawDecFile) - { - return KErrNoMemory; - } - - TPtr8 ptr = rawDecFile->Des(); - file.Read(ptr,size); - file.Close(); - - // add headers - err = file.Replace(fs, KAacDecoderOutputTestFile, EFileWrite); - if (err != KErrNone) - { - return err; - } - - // this is canonical WAV file format header - TInt32 chunkSize = size + KTestWavFormatPCMChunkHeaderSize; - TInt32 subchunk1size = KTestWavFormatPCMSubchunk1Size; - TInt16 audioFormat = KTestAudioFormatPCM; - TInt16 numChannels = KTestNumChannels; - TInt32 sampleRate = KTestSampleRate; - TInt16 bitsPerSample = KTestBitsPerSample; - TInt32 byteRate = sampleRate * numChannels * (bitsPerSample / 8); - TInt16 blockAlign = numChannels * (bitsPerSample / 8); - TInt32 subchunk2size = size; - - file.Write(_L8("RIFF")); - { TPtrC8 buf((TText8*)&chunkSize,sizeof(TInt32)); file.Write(buf); } - file.Write(_L8("WAVEfmt ")); - { TPtrC8 buf((TText8*)&subchunk1size,sizeof(TInt32)); file.Write(buf); } - { TPtrC8 buf((TText8*)&audioFormat,sizeof(TInt16)); file.Write(buf); } - { TPtrC8 buf((TText8*)&numChannels,sizeof(TInt16)); file.Write(buf); } - { TPtrC8 buf((TText8*)&sampleRate,sizeof(TInt32)); file.Write(buf); } - { TPtrC8 buf((TText8*)&byteRate,sizeof(TInt32)); file.Write(buf); } - { TPtrC8 buf((TText8*)&blockAlign,sizeof(TInt16)); file.Write(buf); } - { TPtrC8 buf((TText8*)&bitsPerSample,sizeof(TInt16)); file.Write(buf); } - file.Write(_L8("data")); - { TPtrC8 buf((TText8*)&subchunk2size,sizeof(TInt32)); file.Write(buf); } - file.Write(ptr,size); - - // store file size - file.Size(iWrittenDataTotal); - - file.Close(); - fs.Close(); - - delete rawDecFile; - - return KErrNone; - - } - -void -CAacOutputTestFile::CloseOutputFile() - { - DEBUG_PRINTF(_L8("CAacOutputTestFile::CloseOutputFile")); - - iOutputFile.Close(); - iFileServerSession.Close(); - - } - -// -// CUtilityTimer -// -CUtilityTimer* -CUtilityTimer::NewL(TTimeIntervalMicroSeconds32& aDelay, - MTimerObserver& aObserver) - { - CUtilityTimer* self = new (ELeave) CUtilityTimer(aObserver); - CleanupStack::PushL(self); - self->ConstructL(aDelay); - CleanupStack::Pop(self); - return self; - } - -void -CUtilityTimer::ConstructL(TTimeIntervalMicroSeconds32& aDelay) - { - CTimer::ConstructL(); - - iDelay = aDelay; - CActiveScheduler::Add(this); - } - -CUtilityTimer::~CUtilityTimer() - { - Cancel(); - } - -void -CUtilityTimer::InitializeTimer() - { - // Request another wait - assume not active - CTimer::After(iDelay); - } - -void -CUtilityTimer::RunL() - { - if (iStatus.Int() == KErrNone) - iObserver.TimerExpired(); - } - -void -CUtilityTimer::DoCancel() - { - } - - -CUtilityTimer::CUtilityTimer(MTimerObserver& aObserver) : - CTimer(CActive::EPriorityUserInput), - iObserver(aObserver) - { - } - -// -// CCallbackHandler -// -CCallbackHandler* -CCallbackHandler::NewL(RAsyncTestStepOmxILComponentBase& aDecoderTest) - { - DEBUG_PRINTF(_L8("CCallbackHandler::NewL")); - - CCallbackHandler* self = new (ELeave) CCallbackHandler(aDecoderTest); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - - } - - -void -CCallbackHandler::ConstructL() - { - DEBUG_PRINTF(_L8("CCallbackHandler::ConstructL")); - - OMX_CALLBACKTYPE h = - { - CCallbackHandler::EventHandler, - CCallbackHandler::EmptyBufferDone, - CCallbackHandler::FillBufferDone - }; - - iHandle = h; - CActiveScheduler::Add(this); - - User::LeaveIfError(iMsgQueue.CreateLocal(KMaxMsgQueueEntries)); - iMsgQueue.NotifyDataAvailable(iStatus); - SetActive(); - - } - -CCallbackHandler::CCallbackHandler(RAsyncTestStepOmxILComponentBase& aDecoderTest) - : CActive(EPriorityNormal), - iDecoderTest(aDecoderTest) - { - DEBUG_PRINTF(_L8("CCallbackHandler::CCallbackHandler")); - } - - -CCallbackHandler::operator OMX_CALLBACKTYPE*() - { - DEBUG_PRINTF(_L8("CCallbackHandler::operator OMX_CALLBACKTYPE*")); - - return &iHandle; - - } - - -void -CCallbackHandler::RunL() - { - DEBUG_PRINTF(_L8("CCallbackHandler::RunL")); - - TOmxMessage msg; - while (iMsgQueue.Receive(msg)==KErrNone) - { - switch (msg.iType) - { - case EEmptyBufferCallback: - { - iDecoderTest.DoEmptyBufferDoneL(msg.iComponent, - msg.iBuffer); - } - break; - case EFillBufferCallback: - { - iDecoderTest.DoFillBufferDoneL(msg.iComponent, - msg.iBuffer); - } - break; - case EEventCallback: - { - iDecoderTest.DoEventHandlerL(msg.iComponent, - msg.iEventParams.iEvent, - msg.iEventParams.iData1, - msg.iEventParams.iData2, - msg.iEventParams.iExtra); - } - break; - default: - { - // This is an invalid state - ASSERT(EFalse); - } - }; - } - - // setup for next callbacks - iStatus = KRequestPending; - iMsgQueue.NotifyDataAvailable(iStatus); - SetActive(); - - } - -CCallbackHandler::~CCallbackHandler() - { - DEBUG_PRINTF(_L8("CCallbackHandler::~CCallbackHandler")); - - Cancel(); - iMsgQueue.Close(); - - } - - -void -CCallbackHandler::DoCancel() - { - DEBUG_PRINTF(_L8("CCallbackHandler::DoCancel")); - - if (iMsgQueue.Handle()) - { - iMsgQueue.CancelDataAvailable(); - } - - } - -OMX_ERRORTYPE -CCallbackHandler::FillBufferDone(OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_BUFFERHEADERTYPE* aBuffer) - { - DEBUG_PRINTF(_L8("CCallbackHandler::FillBufferDone")); - - return static_cast(aAppData)->DoFillBufferDone(aComponent, aBuffer); - - } - -OMX_ERRORTYPE -CCallbackHandler::EmptyBufferDone(OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_BUFFERHEADERTYPE* aBuffer) - { - DEBUG_PRINTF(_L8("CCallbackHandler::EmptyBufferDone")); - - return static_cast(aAppData)->DoEmptyBufferDone(aComponent, aBuffer); - - } - -OMX_ERRORTYPE -CCallbackHandler::EventHandler(OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - TAny* aExtra) - { - DEBUG_PRINTF4(_L8("CCallbackHandler::EventHandler : EVENT[%d] Data1[%d] Data2[%d]"), aExtra, aData1, aData2); - - CCallbackHandler::TEventParams eventParams; - eventParams.iEvent = aEvent; - eventParams.iData1 = aData1; - eventParams.iData2 = aData2; - eventParams.iExtra = aExtra; - return static_cast(aAppData)->DoEventHandler(aComponent, eventParams); - - } - -OMX_ERRORTYPE -CCallbackHandler::DoFillBufferDone(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer) - { - DEBUG_PRINTF(_L8("CCallbackHandler::DoFillBufferDone")); - - TOmxMessage message; - message.iType = EFillBufferCallback; - message.iComponent = aComponent; - message.iBuffer = aBuffer; - return RAsyncTestStepOmxILComponentBase::ConvertSymbianErrorType( - iMsgQueue.Send(message)); - - } - -OMX_ERRORTYPE -CCallbackHandler::DoEmptyBufferDone(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer) - { - DEBUG_PRINTF(_L8("CCallbackHandler::DoEmptyBufferDone")); - - TOmxMessage message; - message.iType = EEmptyBufferCallback; - message.iComponent = aComponent; - message.iBuffer = aBuffer; - return RAsyncTestStepOmxILComponentBase::ConvertSymbianErrorType( - iMsgQueue.Send(message)); - - } - -OMX_ERRORTYPE -CCallbackHandler::DoEventHandler(OMX_HANDLETYPE aComponent, - TEventParams aEventParams) - { - DEBUG_PRINTF(_L8("CCallbackHandler::DoEventHandler")); - - TOmxMessage message; - message.iType = EEventCallback; - message.iComponent = aComponent; - message.iEventParams = aEventParams; - return RAsyncTestStepOmxILComponentBase::ConvertSymbianErrorType( - iMsgQueue.Send(message)); - - } - -// -// RAsyncTestStepOmxILComponentBase -// -RAsyncTestStepOmxILComponentBase::RAsyncTestStepOmxILComponentBase(const TDesC& aTestName, TInt aComponentUid) - : - iComponentUid(), - ipKickoffAOp(0), - ipKickoffStop(0), - ipCOmxILComponent(0), - ipCallbackHandler(0), - ipTestFile(0), - iTestFileName(KAacDecoderTestFile()), - ipCompHandle(0) - { - DEBUG_PRINTF2(_L8("RAsyncTestStepOmxILComponentBase::RAsyncTestStepOmxILComponentBase: UID[%X]"), aComponentUid); - iTestStepName = aTestName; - iComponentUid = aComponentUid; - // Default heap size is 32K. Increased to avoid the KErrNoMemory for this test step. - iHeapSize = KTestHeapSize; - - } - -RAsyncTestStepOmxILComponentBase::~RAsyncTestStepOmxILComponentBase() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::~RAsyncTestStepOmxILComponentBase")); - // nothing here just yet - } - -void -RAsyncTestStepOmxILComponentBase::PrintOmxState(OMX_STATETYPE aOmxState) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::PrintOmxState")); - - switch(aOmxState) - { - case OMX_StateInvalid: - { - INFO_PRINTF1(_L("OMX STATE : OMX_StateInvalid")); - } - break; - case OMX_StateLoaded: - { - INFO_PRINTF1(_L("OMX STATE : OMX_StateLoaded")); - } - break; - case OMX_StateIdle: - { - INFO_PRINTF1(_L("OMX STATE : OMX_StateIdle")); - } - break; - case OMX_StateExecuting: - { - INFO_PRINTF1(_L("OMX STATE : OMX_StateExecuting")); - } - break; - case OMX_StatePause: - { - INFO_PRINTF1(_L("OMX STATE : OMX_StatePause")); - } - break; - case OMX_StateWaitForResources: - { - INFO_PRINTF1(_L("OMX STATE : OMX_StateWaitForResources")); - } - break; - default: - { - INFO_PRINTF1(_L("OMX STATE : Wrong state found")); - } - }; - - } - -OMX_ERRORTYPE -RAsyncTestStepOmxILComponentBase::ConvertSymbianErrorType(TInt aError) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::ConvertSymbianErrorType")); - - OMX_ERRORTYPE err = OMX_ErrorNone; - switch (aError) - { - case KErrNone: - err = OMX_ErrorNone; - break; - case KErrNoMemory: - err = OMX_ErrorInsufficientResources; - break; - case KErrGeneral: - break; - default: - err = OMX_ErrorUndefined; - } - return err; - - } - - -/** - This method is used at the beginning of the test, and initialises the - asynchronous calls that will be activated once the call returns. The - ActiveScheduler is active at this point. If this test leaves, then - StopTest() will be called with the leave value, so implicitly the test - stops. - -*/ -void -RAsyncTestStepOmxILComponentBase::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::KickoffTestL")); - - __MM_HEAP_MARK; - - // Set up an asynchronous call - TCallBack callback (ComponentBaseCallBack, this); - delete ipKickoffAOp; - ipKickoffAOp = NULL; - ipKickoffAOp = - new (ELeave) CAsyncCallBack (callback, CActive::EPriorityLow); - // Queues this active object to be run once. - ipKickoffAOp->Call(); - - } - -TInt -RAsyncTestStepOmxILComponentBase::ComponentBaseCallBack(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::ComponentBaseCallBack")); - - RAsyncTestStepOmxILComponentBase* self = static_cast (aPtr); - self->DoComponentBaseCallBack(); - return KErrNone; - - } - -void -RAsyncTestStepOmxILComponentBase::DoComponentBaseCallBack() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::DoComponentBaseCallBack")); - - TRAPD(err, ipCOmxILComponent = - COmxILComponentIf::CreateImplementationL(TUid::Uid(iComponentUid))); - - //return StopTest(err, EFail); - if (err != KErrNone) - { - INFO_PRINTF2(_L("RAsyncTestStepOmxILComponentBase::DoComponentBaseCallBack : err [%d]"), err); - if (KErrNotFound == err) - { - INFO_PRINTF1(_L("DoComponentBaseCallBack : CreateImplementationL returned KErrNotFound")); -// PacketVideo's AAC decoder libraries only provided for UDEB -#ifndef _DEBUG - INFO_PRINTF1(_L("IMPORTANT NOTE : THIS SUITE CAN ONLY BE RUN IN UDEB MODE")); - INFO_PRINTF1(_L("IMPORTANT NOTE : PACKETVIDEO'S AAC DECODER LIBRARY ONLY AVAILABLE IN UDEB MODE")); -#endif - } - return StopTest(err, EFail); - } - - ipCompHandle = static_cast(ipCOmxILComponent->Handle()); - if (!ipCompHandle) - { - return StopTest(KErrGeneral, EFail); - } - - TRAP(err, ipCallbackHandler = CCallbackHandler::NewL(*this)); - if (err != KErrNone) - { - return StopTest(err, EFail); - } - - TRAP(err, ipTestFile = CAacTestFile::NewL()); - if (err != KErrNone) - { - return StopTest(err, EFail); - } - - err = ipTestFile->ReadTestFileInBuffer(iTestFileName); - if (err != KErrNone) - { - return StopTest(err, EFail); - } - - TRAP(err, ipOutputTestFile = CAacOutputTestFile::NewL()); - if (err != KErrNone) - { - return StopTest(err, EFail); - } - - err = ipOutputTestFile->SetUpOutputFile(KAacDecoderOutputTestFile); - if (err != KErrNone) - { - return StopTest(err, EFail); - } - - - } - -TInt -RAsyncTestStepOmxILComponentBase::StopTestCallBack(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::StopTestCallBack")); - RAsyncTestStepOmxILComponentBase* self = - static_cast (aPtr); - self->DoStopTestCallBack(); - return KErrNone; - } - -void -RAsyncTestStepOmxILComponentBase::DoStopTestCallBack() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::DoStopTestCallBack")); - - StopTest(); - - } - - -void -RAsyncTestStepOmxILComponentBase::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::CloseTest")); - - if (ipCompHandle) - { - ipCompHandle->ComponentDeInit(ipCompHandle); - } - delete ipCOmxILComponent; - ipCOmxILComponent = 0; - ipCompHandle = 0; - - delete ipKickoffAOp; // no need to Cancel - ipKickoffAOp = 0; - - delete ipCallbackHandler; - ipCallbackHandler = 0; - - delete ipTestFile; - ipTestFile = 0; - - if (ipOutputTestFile) - { - ipOutputTestFile->CloseOutputFile(); - // We ignore here this error... - TInt err = ipOutputTestFile->AddWavHeader(); - delete ipOutputTestFile; - ipOutputTestFile = 0; - } - - REComSession::FinalClose(); - __MM_HEAP_MARKEND; - - } - -void -RAsyncTestStepOmxILComponentBase::DoFillBufferDoneL(OMX_HANDLETYPE /* aComponent */, - OMX_BUFFERHEADERTYPE* /* aBuffer */) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::DoFillBufferDoneL")); - // By default, no callback expected here... - return StopTest(KErrGeneral, EFail); - } - -void -RAsyncTestStepOmxILComponentBase::DoEmptyBufferDoneL(OMX_HANDLETYPE /* aComponent */, - OMX_BUFFERHEADERTYPE* /* aBuffer */) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILComponentBase::DoEmptyBufferDoneL")); - // By default, no callback expected here... - return StopTest(KErrGeneral, EFail); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/src/tsu_omxil_component_base.h --- a/omxil/omxilunittest/components/src/tsu_omxil_component_base.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,273 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file tsu_omxil_component_base.h -*/ - -#ifndef TSU_OMXIL_COMPONENT_BASE_H -#define TSU_OMXIL_COMPONENT_BASE_H - -#include -#include -#include - -#include "tsu_omxil_component_constants.h" - -// Forward declarations -class COmxILComponentIf; -struct OMX_COMPONENTTYPE; -class RAsyncTestStepOmxILComponentBase; -class CMMFBuffer; - - -class CAacTestFile : public CBase - { - -public: - - static CAacTestFile* NewL(); - - ~CAacTestFile(); - - TInt ReadTestFileInBuffer(const TDesC& aFileName); - void ReadNextBuffer(CMMFBuffer& aDataBuffer); - void ResetPos(); - TInt GetPos(); - -private: - - CAacTestFile(); - void ConstructL(); - - -private: - - HBufC8* iSourceFile; - TInt iSourceFileReadPos; - TBool iFinished; - - }; - - -class CAacOutputTestFile : public CBase - { - -public: - - static CAacOutputTestFile* NewL(); - - ~CAacOutputTestFile(); - - TInt SetUpOutputFile(const TDesC& aFileName); - TInt WriteDataToFile(const CMMFBuffer& aDataBuffer); - TInt AddWavHeader(); - void CloseOutputFile(); - -private: - - CAacOutputTestFile(); - void ConstructL(); - - -private: - - RFs iFileServerSession; - RFile iOutputFile; - TInt iWrittenDataTotal; - TInt iBuffersWrittenCount; - - }; - -class MTimerObserver - { - -public: - - virtual void TimerExpired() = 0; - - }; - -class CUtilityTimer : public CTimer - { - -public: - - static CUtilityTimer* NewL(TTimeIntervalMicroSeconds32& aDelay, - MTimerObserver& aObserver); - ~CUtilityTimer(); - - void InitializeTimer(); - -private: - - CUtilityTimer(MTimerObserver& aObserver); - void ConstructL(TTimeIntervalMicroSeconds32& aDelay); - - // from CActive - void RunL(); - void DoCancel(); - -private: - - TTimeIntervalMicroSeconds32 iDelay; - MTimerObserver& iObserver; - - }; - - -class CCallbackHandler : public CActive - { -public: - - enum TMessageType - { - EFillBufferCallback, - EEmptyBufferCallback, - EEventCallback - }; - - class TEventParams - { - public: - OMX_EVENTTYPE iEvent; - TUint iData1; - TUint iData2; - TAny* iExtra; - }; - - class TOmxMessage - { - public: - TMessageType iType; - OMX_HANDLETYPE iComponent; - union - { - OMX_BUFFERHEADERTYPE* iBuffer; - TEventParams iEventParams; - }; - }; - - - static const TInt KMaxMsgQueueEntries = 10; - -public: - - static CCallbackHandler* NewL(RAsyncTestStepOmxILComponentBase& aDecoderTest); - virtual ~CCallbackHandler(); - - operator OMX_CALLBACKTYPE*(); - - void RunL(); - void DoCancel(); - - static OMX_ERRORTYPE FillBufferDone(OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_BUFFERHEADERTYPE* aBuffer); - - static OMX_ERRORTYPE EmptyBufferDone(OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_BUFFERHEADERTYPE* aBuffer); - - static OMX_ERRORTYPE EventHandler(OMX_HANDLETYPE aComponent, - TAny* aAppData, - OMX_EVENTTYPE aEvent, - TUint32 aData1, - TUint32 aData2, - TAny* aExtra); - - -private: - - void ConstructL(); - CCallbackHandler(RAsyncTestStepOmxILComponentBase& aDecoderTest); - - OMX_ERRORTYPE DoFillBufferDone(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - OMX_ERRORTYPE DoEmptyBufferDone(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - OMX_ERRORTYPE DoEventHandler(OMX_HANDLETYPE aComponent, - TEventParams aParams); - - // - // - // - - -private: - - RAsyncTestStepOmxILComponentBase& iDecoderTest; - RMsgQueue iMsgQueue; - OMX_CALLBACKTYPE iHandle; - - }; - - -class RAsyncTestStepOmxILComponentBase : public RAsyncTestStep - { - -public: - - RAsyncTestStepOmxILComponentBase(const TDesC& aTestName, TInt aComponentUid); - - ~RAsyncTestStepOmxILComponentBase(); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - // - virtual void DoFillBufferDoneL(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - - virtual void DoEmptyBufferDoneL(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - - virtual void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra) = 0; - - - static OMX_ERRORTYPE ConvertSymbianErrorType(TInt aError); - - - -protected: - - void PrintOmxState(OMX_STATETYPE aOmxState); - - // Async Call backs - static TInt ComponentBaseCallBack(TAny* aPtr); - void DoComponentBaseCallBack(); - - static TInt StopTestCallBack(TAny* aPtr); - void DoStopTestCallBack(); - -protected: - - TInt iComponentUid; - CAsyncCallBack* ipKickoffAOp; - CAsyncCallBack* ipKickoffStop; - COmxILComponentIf* ipCOmxILComponent; - CCallbackHandler* ipCallbackHandler; - CAacTestFile* ipTestFile; - TPtrC iTestFileName; - CAacOutputTestFile* ipOutputTestFile; - OMX_COMPONENTTYPE* ipCompHandle; - }; - -#endif // TSU_OMXIL_COMPONENT_BASE_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/src/tsu_omxil_component_constants.h --- a/omxil/omxilunittest/components/src/tsu_omxil_component_constants.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file tsu_omxil_component_constants.h -*/ - -#ifndef TSU_OMXIL_COMPONENT_CONSTANTS_H -#define TSU_OMXIL_COMPONENT_CONSTANTS_H - -_LIT(KAacDecoderTestFile, "c:\\omxil\\testfiles\\probando123.hev2.aac"); -_LIT(KAacDecoderOutputTestFile, "c:\\omxil\\testfiles\\omxilaacdecoderoutput.wav"); - -const TInt KTestHeapSize = 0x400000; // 4 Mb; - -// AudioSpecificConfig length (bytes) for probando123.hev2.aac -const TInt KAudioSpecificConfigLength = 7; - -// Wav header params... based on probando123.hev2.aac... -const TInt KTestWavFormatPCMChunkHeaderSize = 36; -const TInt KTestWavFormatPCMSubchunk1Size = 16; -const TInt KTestAudioFormatPCM = 1; -const TInt KTestSampleRate = 44100; -const TInt KTestNumChannels = 2; -const TInt KTestBitsPerSample = 16; -const TInt KTestBitRate = 1411000; - -// These are two numbers that identify some input/output buffers in the middle -// of the processing of a test file -const TInt KSomeInputBufferCount = 15; -const TInt KSomeOutputBufferCount = 25; - -// Some time interval that can be used for timeouts... -const TInt KTwoPointFiveSeconds = 2500000; - -// Some other time interval that can be used for timeouts... -const TInt KPointFiveSeconds = 500000; - -#endif // TSU_OMXIL_COMPONENT_CONSTANTS_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/src/tsu_omxil_pcmrenderer_step.cpp --- a/omxil/omxilunittest/components/src/tsu_omxil_pcmrenderer_step.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3977 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#include -#include -#include -#include - -#include -#include - -#include -#include "omxilsymbianaudiopcmextensions.h" - -#include "log.h" -#include "omxilpcmrenderer.hrh" -#include "omxilspecversion.h" - -#include "tsu_omxil_pcmrenderer_step.h" - -_LIT8(KSymbianOmxILPcmRendererRole, "audio_renderer.pcm"); -_LIT8(KTestOmxILWrongRendererRole, "audio_renderer.wrong"); -_LIT(KPcmRendererTestFile, "c:\\omxil\\testfiles\\pcm16stereo8khz.raw"); -_LIT(KPcmRendererTestFile2, "c:\\omxil\\testfiles\\pcm16stereo44khz.raw"); - -OMX_ERRORTYPE ComponentInit(OMX_HANDLETYPE /*aComponent*/) - { - return OMX_ErrorNone; - } - - -// -// RAsyncTestStepOmxILPcmRenderer0020 -// -RAsyncTestStepOmxILPcmRenderer0020::RAsyncTestStepOmxILPcmRenderer0020(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILComponentBase(aTestName, aComponentUid), - ipKickoff01(NULL), - ipKickoff02(NULL), - ipKickoff03(NULL), - ipKickoff04(NULL), - ipKickoff05(NULL), - ipKickoff06(NULL) - - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0020::RAsyncTestStepOmxILPcmRenderer0020")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0020::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0020::KickoffTestL")); - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test20 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Init Component ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Obtain the component's state (GetState) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Obtain the component's version (GetComponentVersion) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Provide callbacks to component (SetCallbacks) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 5.- Obtain the port def params for Port #0 (GetParameter) ")); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - // This is the only step in this test... - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0020Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0020::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0020::CloseTest")); - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - - -void -RAsyncTestStepOmxILPcmRenderer0020::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE /*aEvent*/, - TUint /*aData1*/, - TUint /*aData2*/, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0020::DoEventHandlerL")); - - // We don't expect here any callback - return StopTest(KErrGeneral, EFail); - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0020::RAsyncTestStepOmxILPcmRenderer0020Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0020::RAsyncTestStepOmxILPcmRenderer0020Step01")); - RAsyncTestStepOmxILPcmRenderer0020* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0020Step01(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0020::DoRAsyncTestStepOmxILPcmRenderer0020Step01() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0020::DoRAsyncTestStepOmxILPcmRenderer0020Step01")); - - - // - // Obtain the component's state - // - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - char componentNameArray[OMX_MAX_STRINGNAME_SIZE]; - OMX_VERSIONTYPE componentVersion; - OMX_VERSIONTYPE specVersion; - OMX_UUIDTYPE componentUUID; - - // - // Obtain the component's version - // - - if (OMX_ErrorNone != ipCompHandle->GetComponentVersion( - ipCompHandle, - componentNameArray, - &componentVersion, - &specVersion, - &componentUUID)) - { - return StopTest(KErrGeneral, EFail); - } - - TBuf8<128> componentNameBuf8; - componentNameBuf8 = const_cast(reinterpret_cast(componentNameArray)); - TBuf<128> componentNameBuf16; - INFO_PRINTF2(_L("Component Name length: %d"), componentNameBuf8.Length()); - componentNameBuf16.Copy(componentNameBuf8); - componentNameBuf16.PtrZ(); - - // INFO_PRINTF2(_L("Component Name: %s"), dst.Ptr()); - INFO_PRINTF2(_L("Component Name: %S"), &componentNameBuf16); - INFO_PRINTF2(_L("Component Version Major: %d"), componentVersion.s.nVersionMajor); - INFO_PRINTF2(_L("Component Version Minor: %d"), componentVersion.s.nVersionMinor); - INFO_PRINTF2(_L("Component Version Revision: %d"), componentVersion.s.nRevision); - INFO_PRINTF2(_L("Component Version Step: %d"), componentVersion.s.nStep); - INFO_PRINTF2(_L("OMX Version Major: %d"), specVersion.s.nVersionMajor); - INFO_PRINTF2(_L("OMX Version Minor: %d"), specVersion.s.nVersionMinor); - INFO_PRINTF2(_L("OMX Version Revision: %d"), specVersion.s.nRevision); - INFO_PRINTF2(_L("OMX Version Step: %d"), specVersion.s.nStep); - INFO_PRINTF2(_L("Component UUID: %X"), componentUUID); - - - // - // Provide callbacks to component - // - OMX_CALLBACKTYPE* omxCallbacks = *ipCallbackHandler; - - if (OMX_ErrorNone != ipCompHandle->SetCallbacks( - ipCompHandle, - omxCallbacks, - ipCallbackHandler)) - { - return StopTest(KErrGeneral, EFail); - } - - INFO_PRINTF2(_L("Component Callbacks set successfully: %X"), ipCallbackHandler); - - // - // Obtain the port def params for Port #0 - // - OMX_PARAM_PORTDEFINITIONTYPE portParamsInputPort; - portParamsInputPort.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - portParamsInputPort.nVersion = TOmxILSpecVersion(); - portParamsInputPort.nPortIndex = 0; - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamPortDefinition, - &portParamsInputPort)) - { - return StopTest(KErrGeneral, EFail); - } - - INFO_PRINTF2(_L("PORTDEFINITIONTYPE nPortIndex: %d"), portParamsInputPort.nPortIndex); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE eDir: %d"), portParamsInputPort.eDir); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE nBufferCountActual: %d"), portParamsInputPort.nBufferCountActual); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE nBufferCountMin: %d"), portParamsInputPort.nBufferCountMin); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE nBufferSize: %d"), portParamsInputPort.nBufferSize); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE bEnabled: %d"), portParamsInputPort.bEnabled == OMX_FALSE ? 0 : 1); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE bPopulated: %d"), portParamsInputPort.bPopulated == OMX_FALSE ? 0 : 1); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE eDomain: %d"), portParamsInputPort.eDomain); - - TBuf8<128> cMIMEType8Input; - cMIMEType8Input = const_cast(reinterpret_cast(portParamsInputPort.format.audio.cMIMEType)); - - TBuf<128> cMIMEType16Input; - cMIMEType16Input.Copy(cMIMEType8Input); - cMIMEType16Input.PtrZ(); - - INFO_PRINTF2(_L("PORTDEFINITIONTYPE format.cMIMEType: %S"), &cMIMEType16Input); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE format.pNativeRender: %X"), portParamsInputPort.format.audio.pNativeRender); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE format.bFlagErrorConcealment: %d"), - portParamsInputPort.format.audio.bFlagErrorConcealment == OMX_FALSE ? 0 : 1); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE format.eEncoding: %d"), portParamsInputPort.format.audio.eEncoding); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE bBuffersContiguous: %d"), - portParamsInputPort.bBuffersContiguous == OMX_FALSE ? 0 : 1); - INFO_PRINTF2(_L("PORTDEFINITIONTYPE nBufferAlignment: %d"), portParamsInputPort.nBufferAlignment); - } - -// -// RAsyncTestStepOmxILPcmRenderer0021 -// -RAsyncTestStepOmxILPcmRenderer0021::RAsyncTestStepOmxILPcmRenderer0021(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILComponentBase(aTestName, aComponentUid), - ipKickoff01(NULL), - ipKickoff02(NULL), - ipKickoff03(NULL), - ipKickoff04(NULL), - ipKickoff05(NULL), - ipKickoff06(NULL) - - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0021::RAsyncTestStepOmxILPcmRenderer0021")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0021::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0021::KickoffTestL")); - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test21 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Init Component ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Provide callbacks to component (SetCallbacks) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Obtain the component's state (GetState) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Obtain component's role #1 with null string (ComponentRoleEnum fails with OMX_ErrorBadParameter) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 5.- Obtain component's role #1 (ComponentRoleEnum returns audio_renderer.pcm) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 6.- Obtain component's role #2 (ComponentRoleEnum fails with OMX_ErrorNoMore) ")); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - // This is the only step in this test... - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0021Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0021::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0021::CloseTest")); - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - - -void -RAsyncTestStepOmxILPcmRenderer0021::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE /*aEvent*/, - TUint /*aData1*/, - TUint /*aData2*/, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0021::DoEventHandlerL")); - - // We don't expect here any callback - return StopTest(KErrGeneral, EFail); - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0021::RAsyncTestStepOmxILPcmRenderer0021Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0021::RAsyncTestStepOmxILPcmRenderer0021Step01")); - RAsyncTestStepOmxILPcmRenderer0021* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0021Step01(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0021::DoRAsyncTestStepOmxILPcmRenderer0021Step01() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0021::DoRAsyncTestStepOmxILPcmRenderer0021Step01")); - - // - // Provide callbacks to component - // - OMX_CALLBACKTYPE* omxCallbacks = *ipCallbackHandler; - - if (OMX_ErrorNone != ipCompHandle->SetCallbacks( - ipCompHandle, - omxCallbacks, - ipCallbackHandler)) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Obtain the component's state - // - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - INFO_PRINTF2(_L("Component Callbacks set successfully: %X"), ipCallbackHandler); - - - // - // Try to obtain the component's first role with null string (must fail with error OMX_ErrorBadParameter) - // - OMX_U8* pNullUint = 0; - if (OMX_ErrorBadParameter != ipCompHandle->ComponentRoleEnum( - ipCompHandle, - pNullUint, - 0 // This is index # 0, the first of the component's roles - )) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Obtain the component's first role (success) - // - char componentRoleArray[OMX_MAX_STRINGNAME_SIZE]; - if (OMX_ErrorNone != ipCompHandle->ComponentRoleEnum( - ipCompHandle, - reinterpret_cast(componentRoleArray), - 0 // This is index # 0, the first of the component's roles - )) - { - return StopTest(KErrGeneral, EFail); - } - - TBuf8<128> componentRoleBuf8; - componentRoleBuf8 = const_cast(reinterpret_cast(componentRoleArray)); - TBuf<128> componentRoleBuf16; - INFO_PRINTF2(_L("Component's Role length: %d"), componentRoleBuf8.Length()); - componentRoleBuf16.Copy(componentRoleBuf8); - componentRoleBuf16.PtrZ(); - - INFO_PRINTF2(_L("Component's 1st Role [%S] "), &componentRoleBuf16); - - if (componentRoleBuf8.Compare(KSymbianOmxILPcmRendererRole()) != 0) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Obtain the component's second role (must fail with error OMX_ErrorNoMore) - // - if (OMX_ErrorNoMore != ipCompHandle->ComponentRoleEnum( - ipCompHandle, - reinterpret_cast(componentRoleArray), - 1 // This is index # 1, the second of the component's roles - )) - { - return StopTest(KErrGeneral, EFail); - } - - } - -// -// RAsyncTestStepOmxILPcmRenderer0022 -// -RAsyncTestStepOmxILPcmRenderer0022::RAsyncTestStepOmxILPcmRenderer0022(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILComponentBase(aTestName, aComponentUid), - ipKickoff01(NULL), - ipKickoff02(NULL), - ipKickoff03(NULL), - ipKickoff04(NULL), - ipKickoff05(NULL), - ipKickoff06(NULL) - - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0022::RAsyncTestStepOmxILPcmRenderer0022")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0022::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0022::KickoffTestL")); - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test22 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Init Component ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Provide callbacks to component (SetCallbacks) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Obtain the component's state (GetState) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Get component's current role (GetParameter(OMX_IndexParamStandardComponentRole) )")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 5.- Set unsupported audio_renderer.wrong role (SetParameter(OMX_IndexParamStandardComponentRole) )")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 5a.- SetParameter returns OMX_ErrorBadParameter (audio_renderer.wrong role not supported)")); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - // This is the only step in this test... - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0022Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0022::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0022::CloseTest")); - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - - -void -RAsyncTestStepOmxILPcmRenderer0022::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE /*aEvent*/, - TUint /*aData1*/, - TUint /*aData2*/, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0022::DoEventHandlerL")); - - // We don't expect here any callback - return StopTest(KErrGeneral, EFail); - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0022::RAsyncTestStepOmxILPcmRenderer0022Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0022::RAsyncTestStepOmxILPcmRenderer0022Step01")); - RAsyncTestStepOmxILPcmRenderer0022* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0022Step01(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0022::DoRAsyncTestStepOmxILPcmRenderer0022Step01() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0022::DoRAsyncTestStepOmxILPcmRenderer0022Step01")); - - // - // Provide callbacks to component - // - OMX_CALLBACKTYPE* omxCallbacks = *ipCallbackHandler; - - if (OMX_ErrorNone != ipCompHandle->SetCallbacks( - ipCompHandle, - omxCallbacks, - ipCallbackHandler)) - { - return StopTest(KErrGeneral, EFail); - } - - INFO_PRINTF2(_L("Component Callbacks set successfully: %X"), ipCallbackHandler); - - // - // Obtain the component's state - // - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Get component's current standard role - // - OMX_PARAM_COMPONENTROLETYPE componentRoleType; - componentRoleType.nSize = sizeof(OMX_PARAM_COMPONENTROLETYPE); - componentRoleType.nVersion = TOmxILSpecVersion(); - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamStandardComponentRole, - &componentRoleType)) - { - return StopTest(KErrGeneral, EFail); - } - - TBuf8<128> componentRoleBuf8; - componentRoleBuf8 = const_cast(reinterpret_cast(componentRoleType.cRole)); - TBuf<128> componentRoleBuf16; - INFO_PRINTF2(_L("Component Role length: %d"), componentRoleBuf8.Length()); - componentRoleBuf16.Copy(componentRoleBuf8); - componentRoleBuf16.PtrZ(); - - INFO_PRINTF2(_L("Component's current Role: %S"), &componentRoleBuf16); - - - // - // Set unsupported standard role - // - TPtr8 role(reinterpret_cast(componentRoleType.cRole), - OMX_MAX_STRINGNAME_SIZE); - role.Copy(KTestOmxILWrongRendererRole()); - role.PtrZ(); - - if (OMX_ErrorBadParameter != ipCompHandle->SetParameter( - ipCompHandle, - OMX_IndexParamStandardComponentRole, - &componentRoleType)) - { - return StopTest(KErrGeneral, EFail); - } - - TBuf8<128> cRole8; - cRole8 = const_cast(reinterpret_cast(componentRoleType.cRole)); - - TBuf<128> cRole16; - cRole16.Copy(cRole8); - cRole16.PtrZ(); - - INFO_PRINTF2(_L("SetParameter of an unsupported standard role failed (success): %S"), &cRole16); - - } - - - -// -// RAsyncTestStepOmxILPcmRenderer0001 -// -RAsyncTestStepOmxILPcmRenderer0001::RAsyncTestStepOmxILPcmRenderer0001(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILComponentBase(aTestName, aComponentUid), - ipBufferHeaderInput(0), - ipBufferHeaderOutput(0), - iTerminateNow(EFalse), - iSamplingRate(8000), - iTestState(EStateDefault), - ipKickoff01(NULL), - ipKickoff02(NULL), - ipKickoff03(NULL), - ipKickoff04(NULL), - ipKickoff05(NULL), - ipKickoff06(NULL) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0001::RAsyncTestStepOmxILPcmRenderer0001")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0001::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0001::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test01 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Loaded(depopulation) ")); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0001Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0001::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0001::CloseTest")); - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - TInt count = ipClientClockPortBufferArray.Count(); - - for (TInt n = 0; n < count; n++) - { - delete ipClientClockPortBufferArray[n]; - } - - ipClientClockPortBufferArray.Close(); - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - - -void -RAsyncTestStepOmxILPcmRenderer0001::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE /*aEvent*/, - TUint /*aData1*/, - TUint /*aData2*/, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0001::DoEventHandlerL")); - - if (!iTerminateNow) - { - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0001Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - } - else - { - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - } - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0001::RAsyncTestStepOmxILPcmRenderer0001Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0001::RAsyncTestStepOmxILPcmRenderer0001Step01")); - RAsyncTestStepOmxILPcmRenderer0001* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step01(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0001::DoRAsyncTestStepOmxILPcmRenderer0001Step01() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0001::DoRAsyncTestStepOmxILPcmRenderer0001Step01")); - - // - // Provide callbacks to component - // - OMX_CALLBACKTYPE* omxCallbacks = *ipCallbackHandler; - - if (OMX_ErrorNone != ipCompHandle->SetCallbacks( - ipCompHandle, - omxCallbacks, - ipCallbackHandler)) - { - return StopTest(KErrGeneral, EFail); - } - - INFO_PRINTF2(_L("Component Callbacks set successfully: %X"), ipCallbackHandler); - - // - // Obtain the port def params for Port #0 - // - OMX_PARAM_PORTDEFINITIONTYPE portParamsInputPort; - portParamsInputPort.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - portParamsInputPort.nVersion = TOmxILSpecVersion(); - portParamsInputPort.nPortIndex = 0; - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamPortDefinition, - &portParamsInputPort)) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Obtain the port def params for Client Clock Port #1 - // - OMX_PARAM_PORTDEFINITIONTYPE portParamsInputPort1; - portParamsInputPort1.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - portParamsInputPort1.nVersion = TOmxILSpecVersion(); - portParamsInputPort1.nPortIndex = 1; - - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamPortDefinition, - &portParamsInputPort1)) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Change the sampling rate on PCM Renderer's port #0 - // - OMX_AUDIO_PARAM_PCMMODETYPE pcmMode; - pcmMode.nSize = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE); - pcmMode.nVersion = TOmxILSpecVersion(); - pcmMode.nPortIndex = 0; - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamAudioPcm, - &pcmMode)) - { - return StopTest(KErrGeneral, EFail); - } - pcmMode.nSamplingRate = iSamplingRate; - if (OMX_ErrorNone != ipCompHandle->SetParameter( - ipCompHandle, - OMX_IndexParamAudioPcm, - &pcmMode)) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Move component to OMX_StateIdle - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StateIdle, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Moving component to OMX_StateIdle")); - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Allocate buffer on input port - // - if (OMX_ErrorNone != ipCompHandle->AllocateBuffer( - ipCompHandle, - &ipBufferHeaderInput, - 0, // input port - 0, - portParamsInputPort.nBufferSize)) - { - return StopTest(KErrGeneral, EFail); - } - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Populated buffer (AllocateBuffer) in INPUT port")); - - // - // Allocate buffer on Client Clock Port - // - TInt bufferCount = portParamsInputPort1.nBufferCountActual; - - for (TInt n = 0; n < bufferCount; n++) - { - OMX_BUFFERHEADERTYPE* clockBufPtr; - - if (OMX_ErrorNone != ipCompHandle->AllocateBuffer( - ipCompHandle, - &clockBufPtr, - 1, // Clock input port - 0, - portParamsInputPort1.nBufferSize)) - { - return StopTest(KErrGeneral, EFail); - } - - if (ipClientClockPortBufferArray.Append(clockBufPtr) != KErrNone) - { - return StopTest(KErrNoMemory, EFail); - } - } - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Populated buffer (AllocateBuffer) in Clock INPUT port")); - } - -TInt -RAsyncTestStepOmxILPcmRenderer0001::RAsyncTestStepOmxILPcmRenderer0001Step02(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0001::RAsyncTestStepOmxILPcmRenderer0001Step02")); - RAsyncTestStepOmxILPcmRenderer0001* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step02(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0001::DoRAsyncTestStepOmxILPcmRenderer0001Step02() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0001::DoRAsyncTestStepOmxILPcmRenderer0001Step02")); - - // - // Move component to OMX_StateLoaded - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StateLoaded, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Moving component to OMX_StateLoaded")); - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateIdle != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Free buffer on input port - // - if (OMX_ErrorNone != ipCompHandle->FreeBuffer( - ipCompHandle, - 0, // input port - ipBufferHeaderInput)) - { - return StopTest(KErrGeneral, EFail); - } - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Depopulated buffer (FreeBuffer) in INPUT port")); - - // - // Free Client Clock Port buffer on input port - // - TInt count = ipClientClockPortBufferArray.Count(); - - for (TInt n = 0; n < count; n++) - { - if (OMX_ErrorNone != ipCompHandle->FreeBuffer( - ipCompHandle, - 1, // Client Clock Port - ipClientClockPortBufferArray[0])) - { - return StopTest(KErrGeneral, EFail); - } - - ipClientClockPortBufferArray.Remove(0); - } - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Depopulated Client Clock Port buffer (FreeBuffer) in INPUT port")); - - iTerminateNow = ETrue; - - } - - -// -// RAsyncTestStepOmxILPcmRenderer0002 -// -RAsyncTestStepOmxILPcmRenderer0002::RAsyncTestStepOmxILPcmRenderer0002(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0001(aTestName, aComponentUid), - ipInputBuffer(0), - ipOutputBuffer(0) - - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0002::RAsyncTestStepOmxILPcmRenderer0002")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0002::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0002::KickoffTestL")); - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test02 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(UseBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Loaded(depopulation) ")); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0002Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0002::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0002::CloseTest")); - - delete ipInputBuffer; - ipInputBuffer = NULL; - delete ipOutputBuffer; - ipOutputBuffer = NULL; - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - ipClientClockPortBufferArray.Close(); - - TInt count = iClockPortBufferPtrArray.Count(); - - for (TInt n = 0; n < count; n++) - { - delete iClockPortBufferPtrArray[n]; - } - - iClockPortBufferPtrArray.Close(); - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0002::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE /*aEvent*/, - TUint /*aData1*/, - TUint /*aData2*/, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0002::DoEventHandlerL")); - - if (!iTerminateNow) - { - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0002Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - } - - if (iTerminateNow) - { - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - } - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0002::RAsyncTestStepOmxILPcmRenderer0002Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0002::RAsyncTestStepOmxILPcmRenderer0002Step01")); - RAsyncTestStepOmxILPcmRenderer0002* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0002Step01(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0002::DoRAsyncTestStepOmxILPcmRenderer0002Step01() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0002::DoRAsyncTestStepOmxILPcmRenderer0002Step01")); - - // - // Provide callbacks to component - // - OMX_CALLBACKTYPE* omxCallbacks = *ipCallbackHandler; - - if (OMX_ErrorNone != ipCompHandle->SetCallbacks( - ipCompHandle, - omxCallbacks, - ipCallbackHandler)) - { - return StopTest(KErrGeneral, EFail); - } - - INFO_PRINTF2(_L("Component Callbacks set successfully: %X"), ipCallbackHandler); - - // - // Obtain the port def params for Port #0 - // - OMX_PARAM_PORTDEFINITIONTYPE portParamsInputPort; - portParamsInputPort.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - portParamsInputPort.nVersion = TOmxILSpecVersion(); - portParamsInputPort.nPortIndex = 0; - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamPortDefinition, - &portParamsInputPort)) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Obtain the port def params for Client Clock Port #1 - // - OMX_PARAM_PORTDEFINITIONTYPE portParamsInputPort1; - portParamsInputPort1.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - portParamsInputPort1.nVersion = TOmxILSpecVersion(); - portParamsInputPort1.nPortIndex = 1; - - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamPortDefinition, - &portParamsInputPort1)) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Move component to OMX_StateIdle - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StateIdle, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - - // - // Allocate buffer on input port - // - TRAPD(err, ipInputBuffer = CMMFDescriptorBuffer::NewL(portParamsInputPort.nBufferSize)); - if(err != KErrNone) - { - return StopTest(KErrGeneral, EFail); - } - - TDes8& inputBufferDes = ipInputBuffer->Data(); - - if (OMX_ErrorNone != ipCompHandle->UseBuffer( - ipCompHandle, - &ipBufferHeaderInput, - 0, // input port - ipInputBuffer, // pAppPrivate - portParamsInputPort.nBufferSize, - const_cast(inputBufferDes.Ptr()))) - { - return StopTest(KErrGeneral, EFail); - } - INFO_PRINTF1(_L("Populated buffer (UseBuffer) in INPUT port")); - - // - // Allocate Client Clock Port buffer - // - TInt bufferCount = portParamsInputPort1.nBufferCountActual; - - for (TInt n = 0; n < bufferCount; n++) - { - CMMFDescriptorBuffer* bufPtr; - - TRAPD(err, bufPtr = CMMFDescriptorBuffer::NewL(portParamsInputPort1.nBufferSize)); - - if(err != KErrNone) - { - return StopTest(KErrGeneral, EFail); - } - - if (iClockPortBufferPtrArray.Append(bufPtr) != KErrNone) - { - delete bufPtr; - return StopTest(KErrGeneral, EFail); - } - - TDes8& inputBufferDes = bufPtr->Data(); - OMX_BUFFERHEADERTYPE* clockBufPtr; - - if (OMX_ErrorNone != ipCompHandle->UseBuffer( - ipCompHandle, - &clockBufPtr, - 1, // Clock input port - ipInputBuffer, // pAppPrivate - portParamsInputPort.nBufferSize, - const_cast(inputBufferDes.Ptr()))) - { - return StopTest(KErrGeneral, EFail); - } - - TRAPD(error, ipClientClockPortBufferArray.AppendL(clockBufPtr)); - if(error != KErrNone) - { - return StopTest(KErrGeneral, EFail); - } - } - INFO_PRINTF1(_L("Populated buffer (UseBuffer) in Client Clock Port")); - - } - -TInt -RAsyncTestStepOmxILPcmRenderer0002::RAsyncTestStepOmxILPcmRenderer0002Step02(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0002::RAsyncTestStepOmxILPcmRenderer0002Step02")); - // NOTE, Here we reuse inherited code, to depopulate the component and make it go to OMX_StateLoaded - RAsyncTestStepOmxILPcmRenderer0002* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step02(); - return KErrNone; - } - - -// -// RAsyncTestStepOmxILPcmRenderer0003 -// -RAsyncTestStepOmxILPcmRenderer0003::RAsyncTestStepOmxILPcmRenderer0003(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILComponentBase(aTestName, aComponentUid), - iTerminateNow(EFalse), - ipKickoff01(NULL), - ipKickoff02(NULL), - ipKickoff03(NULL), - ipKickoff04(NULL), - ipKickoff05(NULL), - ipKickoff06(NULL) - - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0003::RAsyncTestStepOmxILPcmRenderer0003")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0003::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0003::KickoffTestL")); - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test03 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->WaitForResources ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- WaitForResources->Loaded ")); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0003Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - // This will be used later in DoRAsyncTestStepOmxILPcmRenderer0003Step02 - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - - } - -void -RAsyncTestStepOmxILPcmRenderer0003::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0003::CloseTest")); - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0003::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE /*aEvent*/, - TUint /*aData1*/, - TUint /*aData2*/, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0003::DoEventHandlerL")); - - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0003Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0003::RAsyncTestStepOmxILPcmRenderer0003Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0003::RAsyncTestStepOmxILPcmRenderer0003Step01")); - RAsyncTestStepOmxILPcmRenderer0003* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0003Step01(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0003::DoRAsyncTestStepOmxILPcmRenderer0003Step01() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0003::DoRAsyncTestStepOmxILPcmRenderer0003Step01")); - - // - // Obtain the component's state - // - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Provide callbacks to component - // - OMX_CALLBACKTYPE* omxCallbacks = *ipCallbackHandler; - - if (OMX_ErrorNone != ipCompHandle->SetCallbacks( - ipCompHandle, - omxCallbacks, - ipCallbackHandler)) - { - return StopTest(KErrGeneral, EFail); - } - - INFO_PRINTF2(_L("Component Callbacks set successfully: %X"), ipCallbackHandler); - - // - // Move component to OMX_StateWaitForResources - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StateWaitForResources, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateWaitForResources != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // - // The following code is to improve code coerage only - // - OMX_AUDIO_PARAM_PCMMODETYPE pcmMode; - pcmMode.nSize = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE); - pcmMode.nVersion = TOmxILSpecVersion(); - pcmMode.nPortIndex = 0; - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamAudioPcm, - &pcmMode)) - { - return StopTest(KErrGeneral, EFail); - } - pcmMode.nSamplingRate = 44100; - if (OMX_ErrorNone != ipCompHandle->SetParameter( - ipCompHandle, - OMX_IndexParamAudioPcm, - &pcmMode)) - { - return StopTest(KErrGeneral, EFail); - } - OMX_BUFFERHEADERTYPE temp; - OMX_BUFFERHEADERTYPE* bufferHeaderInput=&temp; - if (OMX_ErrorIncorrectStateOperation != ipCompHandle->AllocateBuffer( - ipCompHandle, - &bufferHeaderInput, - 0, // input port - 0, - 1024)) - { - return StopTest(KErrGeneral, EFail); - } - - if (OMX_ErrorBadPortIndex != ipCompHandle->EmptyThisBuffer( - ipCompHandle, - bufferHeaderInput)) - { - return StopTest(KErrGeneral, EFail); - } - - if (OMX_ErrorBadPortIndex != ipCompHandle->FillThisBuffer( - ipCompHandle, - bufferHeaderInput)) - { - return StopTest(KErrGeneral, EFail); - } - - if (OMX_ErrorBadPortIndex != ipCompHandle->FreeBuffer( - ipCompHandle, - 2, - bufferHeaderInput)) - { - return StopTest(KErrGeneral, EFail); - } - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandPortEnable, - 0, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - OMX_TUNNELSETUPTYPE tunnelSetup; - OMX_U32 outputPort = 1; - OMX_U32 inputPort = 0; - - if (OMX_ErrorIncorrectStateOperation != - ipCompHandle->ComponentTunnelRequest( - ipCompHandle, - outputPort, - ipCompHandle, - inputPort, - &tunnelSetup)) - { - return StopTest(KErrGeneral, EFail); - } - } - -TInt -RAsyncTestStepOmxILPcmRenderer0003::RAsyncTestStepOmxILPcmRenderer0003Step02(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0003::RAsyncTestStepOmxILPcmRenderer0003Step02")); - RAsyncTestStepOmxILPcmRenderer0003* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0003Step02(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0003::DoRAsyncTestStepOmxILPcmRenderer0003Step02() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0003::DoRAsyncTestStepOmxILPcmRenderer0003Step02")); - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateWaitForResources != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Move component to OMX_StateLoaded - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StateLoaded, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - ipKickoffStop->Call(); - - } - - -// -// RAsyncTestStepOmxILPcmRenderer0004 -// -RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0001(aTestName, aComponentUid) - - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0004::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test04 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Pause ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Pause->Idle ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Idle->Loaded(depopulation) ")); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0004Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0004::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::CloseTest")); - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - TInt count = ipClientClockPortBufferArray.Count(); - - for (TInt n = 0; n < count; n++) - { - delete ipClientClockPortBufferArray[n]; - } - - ipClientClockPortBufferArray.Close(); - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0004::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::DoEventHandlerL")); - - switch (aEvent) - { - case OMX_EventError: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_EventError [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - case OMX_EventCmdComplete: - { - switch(aData1) - { - case OMX_CommandStateSet: - { - switch(aData2) - { - case OMX_StateLoaded: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateLoaded [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToLoadedComplete; - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - } - } - break; - case OMX_StateIdle: - { - if (EStateLoadKickoffTestLComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateLoadKickoffTestLComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0004Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - - } - else if (EStateTransitionToPauseComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateTransitionToPauseComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback04 (RAsyncTestStepOmxILPcmRenderer0004Step04, this); - delete ipKickoff04; - ipKickoff04 = NULL; - ipKickoff04 = - new (ELeave) CAsyncCallBack (callback04, CActive::EPriorityLow); - ipKickoff04->Call(); - - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StatePause: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StatePause [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToPauseComplete; - TCallBack callback03 (RAsyncTestStepOmxILPcmRenderer0004Step03, this); - delete ipKickoff03; - ipKickoff03 = NULL; - ipKickoff03 = - new (ELeave) CAsyncCallBack (callback03, CActive::EPriorityLow); - ipKickoff03->Call(); - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StatePause [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_State [%d]"), aData2); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_Command [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX Event [%d]"), aEvent); - return StopTest(KErrGeneral, EFail); - } - }; - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004Step01")); - // NOTE, Here we reuse inherited code, to populate the component and make it go to OMX_StateIdle - RAsyncTestStepOmxILPcmRenderer0004* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step01(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004Step02(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004Step02")); - RAsyncTestStepOmxILPcmRenderer0004* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0004Step02(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0004::DoRAsyncTestStepOmxILPcmRenderer0004Step02() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::DoRAsyncTestStepOmxILPcmRenderer0004Step02")); - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateIdle != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Move component to OMX_StatePause - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StatePause, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StatePause != compState) - { - return StopTest(KErrGeneral, EFail); - } - - } - -TInt -RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004Step03(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004Step03")); - RAsyncTestStepOmxILPcmRenderer0004* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0004Step03(); - return KErrNone; - } - - -void -RAsyncTestStepOmxILPcmRenderer0004::DoRAsyncTestStepOmxILPcmRenderer0004Step03() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::DoRAsyncTestStepOmxILPcmRenderer0004Step03")); - - // - // Move component to OMX_StateIdle - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StateIdle, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateIdle != compState) - { - return StopTest(KErrGeneral, EFail); - } - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004Step04(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0004::RAsyncTestStepOmxILPcmRenderer0004Step04")); - // NOTE, Here we reuse inherited code, to depopulate the component and to - // make it go to OMX_StateLoaded - RAsyncTestStepOmxILPcmRenderer0004* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step02(); - return KErrNone; - } - - -// -// RAsyncTestStepOmxILPcmRenderer0005 -// -RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0004(aTestName, aComponentUid) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0005::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test05 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Executing ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2a. - Call EmptyThisBuffer on PCM Renderer ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2b. - EmptyBufferDone callback received ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Executing->Idle(BufferFlushing) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Idle->Loaded(Depopulation) ")); - - // This will change the test file - iTestFileName.Set(KPcmRendererTestFile); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0005Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0005::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::CloseTest")); - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - TInt count = ipClientClockPortBufferArray.Count(); - - for (TInt n = 0; n < count; n++) - { - delete ipClientClockPortBufferArray[n]; - } - - ipClientClockPortBufferArray.Close(); - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0005::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::DoEventHandlerL")); - - switch (aEvent) - { - case OMX_EventError: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_EventError [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - case OMX_EventCmdComplete: - { - switch(aData1) - { - case OMX_CommandStateSet: - { - switch(aData2) - { - case OMX_StateLoaded: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateLoaded [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToLoadedComplete; - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - } - } - break; - case OMX_StateIdle: - { - if (EStateLoadKickoffTestLComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateLoadKickoffTestLComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0005Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - - } - else if (EStateTransitionToExecutingComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateTransitionToPauseComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback04 (RAsyncTestStepOmxILPcmRenderer0005Step04, this); - delete ipKickoff04; - ipKickoff04 = NULL; - ipKickoff04 = - new (ELeave) CAsyncCallBack (callback04, CActive::EPriorityLow); - ipKickoff04->Call(); - - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StateExecuting: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToExecutingComplete; - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); - - // Send a buffer to the input port - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [Send a buffer to the input port]")); - INFO_PRINTF2(_L("ipBufferHeaderInput->pBuffer [%X]"), ipBufferHeaderInput->pBuffer); - INFO_PRINTF2(_L("ipBufferHeaderInput->nAllocLen [%d]"), ipBufferHeaderInput->nAllocLen); - INFO_PRINTF2(_L("ipBufferHeaderInput->nFilledLen [%d]"), ipBufferHeaderInput->nFilledLen); - INFO_PRINTF2(_L("ipBufferHeaderInput->nOffset [%d]"), ipBufferHeaderInput->nOffset); - INFO_PRINTF2(_L("ipBufferHeaderInput->pAppPrivate [%X]"), ipBufferHeaderInput->pAppPrivate); - INFO_PRINTF2(_L("ipBufferHeaderInput->pPlatformPrivate [%X]"), ipBufferHeaderInput->pPlatformPrivate); - INFO_PRINTF2(_L("ipBufferHeaderInput->pInputPortPrivate [%X]"), ipBufferHeaderInput->pInputPortPrivate); - INFO_PRINTF2(_L("ipBufferHeaderInput->pOutputPortPrivate [%X]"), ipBufferHeaderInput->pOutputPortPrivate); - INFO_PRINTF2(_L("ipBufferHeaderInput->hMarkTargetComponent [%X]"), ipBufferHeaderInput->hMarkTargetComponent); - INFO_PRINTF2(_L("ipBufferHeaderInput->pMarkData [%X]"), ipBufferHeaderInput->pMarkData); - INFO_PRINTF2(_L("ipBufferHeaderInput->nTickCount [%d]"), ipBufferHeaderInput->nTickCount); - INFO_PRINTF2(_L("ipBufferHeaderInput->nFlags [%X]"), ipBufferHeaderInput->nFlags); - INFO_PRINTF2(_L("ipBufferHeaderInput->nOutputPortIndex [%X]"), ipBufferHeaderInput->nOutputPortIndex); - INFO_PRINTF2(_L("ipBufferHeaderInput->nInputPortIndex [%X]"), ipBufferHeaderInput->nInputPortIndex); - - if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( - ipCompHandle, ipBufferHeaderInput)) - { - return StopTest(KErrGeneral, EFail); - } - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_State [%d]"), aData2); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_Command [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX Event [%d]"), aEvent); - return StopTest(KErrGeneral, EFail); - } - }; - - } - -void -RAsyncTestStepOmxILPcmRenderer0005::DoEmptyBufferDoneL(OMX_HANDLETYPE /*aComponent*/, - OMX_BUFFERHEADERTYPE* /*aBuffer*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::DoEmptyBufferDoneL")); - - INFO_PRINTF1(_L("DoEmptyBufferDoneL : Callback received ")); - - TCallBack callback03 (RAsyncTestStepOmxILPcmRenderer0005Step03, this); - delete ipKickoff03; - ipKickoff03 = NULL; - ipKickoff03 = - new (ELeave) CAsyncCallBack (callback03, CActive::EPriorityLow); - ipKickoff03->Call(); - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005Step01")); - // NOTE, Here we reuse inherited code, to populate the component and make it go to OMX_StateIdle - RAsyncTestStepOmxILPcmRenderer0005* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step01(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005Step02(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005Step02")); - RAsyncTestStepOmxILPcmRenderer0005* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0005Step02(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0005::DoRAsyncTestStepOmxILPcmRenderer0005Step02() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::DoRAsyncTestStepOmxILPcmRenderer0005Step02")); - - // - // Move component to OMX_StateExecuting - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StateExecuting, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateExecuting != compState) - { - return StopTest(KErrGeneral, EFail); - } - - } - -TInt -RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005Step03(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005Step03")); - RAsyncTestStepOmxILPcmRenderer0005* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0004Step03(); - return KErrNone; - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005Step04(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0005::RAsyncTestStepOmxILPcmRenderer0005Step04")); - // NOTE, Here we reuse inherited code, to depopulate the component and to - // make it go to OMX_StateLoaded - RAsyncTestStepOmxILPcmRenderer0005* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step02(); - return KErrNone; - } - - - -// -// RAsyncTestStepOmxILPcmRenderer0006 -// -RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0005(aTestName, aComponentUid) - - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0006::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test06 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Executing ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Executing->Pause ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Pause->Executing ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 5.- Executing->Idle(BufferFlushing) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 6.- Idle->Loaded(depopulation) ")); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0006Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0006::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::CloseTest")); - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - TInt count = ipClientClockPortBufferArray.Count(); - - for (TInt n = 0; n < count; n++) - { - delete ipClientClockPortBufferArray[n]; - } - - ipClientClockPortBufferArray.Close(); - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - - -void -RAsyncTestStepOmxILPcmRenderer0006::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::DoEventHandlerL")); - - switch (aEvent) - { - case OMX_EventError: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_EventError [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - case OMX_EventCmdComplete: - { - switch(aData1) - { - case OMX_CommandStateSet: - { - switch(aData2) - { - case OMX_StateLoaded: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateLoaded [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToLoadedComplete; - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - } - } - break; - case OMX_StateIdle: - { - if (EStateLoadKickoffTestLComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateLoadKickoffTestLComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0006Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - - } - else if (EStateTransitionToExecutingComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateTransitionToExecutingComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback06 (RAsyncTestStepOmxILPcmRenderer0006Step06, this); - delete ipKickoff06; - ipKickoff06 = NULL; - ipKickoff06 = - new (ELeave) CAsyncCallBack (callback06, CActive::EPriorityLow); - ipKickoff06->Call(); - - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StateExecuting: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToExecutingComplete; - TCallBack callback03 (RAsyncTestStepOmxILPcmRenderer0006Step03, this); - delete ipKickoff03; - ipKickoff03 = NULL; - ipKickoff03 = - new (ELeave) CAsyncCallBack (callback03, CActive::EPriorityLow); - ipKickoff03->Call(); - - } - else if (EStateTransitionToPauseComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToPauseComplete]")); - iTestState = EStateTransitionToExecutingComplete; - TCallBack callback05 (RAsyncTestStepOmxILPcmRenderer0006Step05, this); - delete ipKickoff05; - ipKickoff05 = NULL; - ipKickoff05 = - new (ELeave) CAsyncCallBack (callback05, CActive::EPriorityLow); - ipKickoff05->Call(); - - } - else - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_StateExecuting iTestState[%d]"), iTestState); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StatePause: - { - if (EStateTransitionToExecutingComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StatePause [EStateTransitionToExecutingComplete]")); - iTestState = EStateTransitionToPauseComplete; - TCallBack callback04 (RAsyncTestStepOmxILPcmRenderer0006Step04, this); - delete ipKickoff04; - ipKickoff04 = NULL; - ipKickoff04 = - new (ELeave) CAsyncCallBack (callback04, CActive::EPriorityLow); - ipKickoff04->Call(); - } - else - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_StatePause iTestState[%d]"), iTestState); - return StopTest(KErrGeneral, EFail); - } - - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_State [%d]"), aData2); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_Command [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX Event [%d]"), aEvent); - return StopTest(KErrGeneral, EFail); - } - }; - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step01")); - // NOTE, Here we reuse inherited code, to populate the component and make it go to OMX_StateIdle - RAsyncTestStepOmxILPcmRenderer0006* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step01(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step02(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step02")); - RAsyncTestStepOmxILPcmRenderer0006* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0005Step02(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step03(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step03")); - RAsyncTestStepOmxILPcmRenderer0006* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0006Step03(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0006::DoRAsyncTestStepOmxILPcmRenderer0006Step03() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::DoRAsyncTestStepOmxILPcmRenderer0006Step03")); - - // - // Move component to OMX_StatePause - // - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StatePause, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StatePause != compState) - { - return StopTest(KErrGeneral, EFail); - } - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step04(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step04")); - // NOTE, Here we reuse inherited code, to make it go to OMX_StateIdle - RAsyncTestStepOmxILPcmRenderer0006* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0005Step02(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step05(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step05")); - // NOTE, Here we reuse inherited code, to make it go to OMX_StateIdle - RAsyncTestStepOmxILPcmRenderer0006* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0004Step03(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step06(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0006::RAsyncTestStepOmxILPcmRenderer0006Step06")); - // NOTE, Here we reuse inherited code, to make it go to OMX_StateLoaded - RAsyncTestStepOmxILPcmRenderer0006* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step02(); - return KErrNone; - } - - -// -// RAsyncTestStepOmxILPcmRenderer0007 -// -RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0006(aTestName, aComponentUid) - - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0007::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0007::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test07 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Executing ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Executing->Pause ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Pause->Idle(BufferFlushing)")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 5.- Idle->Loaded(depopulation) ")); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0007Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - - } - -void -RAsyncTestStepOmxILPcmRenderer0007::CloseTest() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0007::CloseTest")); - - delete ipKickoff01; // no need to Cancel - ipKickoff01 = NULL; - delete ipKickoff02; // no need to Cancel - ipKickoff02 = NULL; - delete ipKickoff03; // no need to Cancel - ipKickoff03 = NULL; - delete ipKickoff04; // no need to Cancel - ipKickoff04 = NULL; - delete ipKickoff05; // no need to Cancel - ipKickoff05 = NULL; - delete ipKickoff06; // no need to Cancel - ipKickoff06 = NULL; - - delete ipKickoffStop; // no need to Cancel - ipKickoffStop = 0; - - TInt count = ipClientClockPortBufferArray.Count(); - - for (TInt n = 0; n < count; n++) - { - delete ipClientClockPortBufferArray[n]; - } - - ipClientClockPortBufferArray.Close(); - - RAsyncTestStepOmxILComponentBase::CloseTest(); - - } - - -void -RAsyncTestStepOmxILPcmRenderer0007::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0007::DoEventHandlerL")); - - switch (aEvent) - { - case OMX_EventError: - { - // Ignore underflow errors... - if (OMX_ErrorUnderflow == (OMX_S32)aData1) - { - INFO_PRINTF1(_L("DoEventHandlerL: [OMX_ErrorUnderflow]")); - } - else - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_EventError [%x]"), aData1); - return StopTest(KErrGeneral, EFail); - } - } - break; - - case OMX_EventCmdComplete: - { - switch(aData1) - { - case OMX_CommandStateSet: - { - switch(aData2) - { - case OMX_StateLoaded: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateLoaded [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToLoadedComplete; - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - } - } - break; - case OMX_StateIdle: - { - if (EStateLoadKickoffTestLComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateLoadKickoffTestLComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0007Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - - } - else if (EStateTransitionToPauseComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateTransitionToPauseComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback05 (RAsyncTestStepOmxILPcmRenderer0007Step05, this); - delete ipKickoff05; - ipKickoff05 = NULL; - ipKickoff05 = - new (ELeave) CAsyncCallBack (callback05, CActive::EPriorityLow); - ipKickoff05->Call(); - - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StateExecuting: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToExecutingComplete; - TCallBack callback03 (RAsyncTestStepOmxILPcmRenderer0007Step03, this); - delete ipKickoff03; - ipKickoff03 = NULL; - ipKickoff03 = - new (ELeave) CAsyncCallBack (callback03, CActive::EPriorityLow); - ipKickoff03->Call(); - - } - else - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_StateExecuting iTestState[%d]"), iTestState); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StatePause: - { - if (EStateTransitionToExecutingComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StatePause [EStateTransitionToExecutingComplete]")); - iTestState = EStateTransitionToPauseComplete; - TCallBack callback04 (RAsyncTestStepOmxILPcmRenderer0007Step04, this); - delete ipKickoff04; - ipKickoff04 = NULL; - ipKickoff04 = - new (ELeave) CAsyncCallBack (callback04, CActive::EPriorityLow); - ipKickoff04->Call(); - } - else - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_StatePause iTestState[%d]"), iTestState); - return StopTest(KErrGeneral, EFail); - } - - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_State [%d]"), aData2); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_Command [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX Event [%d]"), aEvent); - return StopTest(KErrGeneral, EFail); - } - }; - - } - - -TInt -RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step01")); - // NOTE, Here we reuse inherited code, to populate the component and make it go to OMX_StateIdle - RAsyncTestStepOmxILPcmRenderer0007* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step01(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step02(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step02")); - RAsyncTestStepOmxILPcmRenderer0007* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0005Step02(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step03(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step03")); - RAsyncTestStepOmxILPcmRenderer0007* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0006Step03(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step04(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step04")); - // NOTE, Here we reuse inherited code, to make it go to OMX_StateIdle - RAsyncTestStepOmxILPcmRenderer0007* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0004Step03(); - return KErrNone; - } - -TInt -RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step05(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0007::RAsyncTestStepOmxILPcmRenderer0007Step05")); - // NOTE, Here we reuse inherited code, to make it go to OMX_StateIdle - RAsyncTestStepOmxILPcmRenderer0007* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0001Step02(); - return KErrNone; - } - -// -// RAsyncTestStepOmxILPcmRenderer0008 -// -RAsyncTestStepOmxILPcmRenderer0008::RAsyncTestStepOmxILPcmRenderer0008(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0005(aTestName, aComponentUid) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0008::RAsyncTestStepOmxILPcmRenderer0008")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0008::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0008::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test08 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Executing ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Repeat these two steps until the whole file has beeen empited ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2a. - Call EmptyThisBuffer on PCM Renderer ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2b. - EmptyBufferDone callback received ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Executing->Idle(BufferFlushing) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Idle->Loaded(Depopulation) ")); - - // This will change the test file - iTestFileName.Set(KPcmRendererTestFile); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0005Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - } - -void -RAsyncTestStepOmxILPcmRenderer0008::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0008::DoEventHandlerL")); - - switch (aEvent) - { - case OMX_EventError: - { - // Ignore underflow errors... - if (OMX_ErrorUnderflow == (OMX_S32)aData1) - { - INFO_PRINTF1(_L("DoEventHandlerL: [OMX_ErrorUnderflow]")); - } - else - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_EventError [%x]"), aData1); - return StopTest(KErrGeneral, EFail); - } - } - break; - - case OMX_EventCmdComplete: - { - switch(aData1) - { - case OMX_CommandStateSet: - { - switch(aData2) - { - case OMX_StateLoaded: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateLoaded [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToLoadedComplete; - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - } - } - break; - case OMX_StateIdle: - { - if (EStateLoadKickoffTestLComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateLoadKickoffTestLComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0005Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - - } - else if (EStateTransitionToExecutingComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateTransitionToPauseComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback04 (RAsyncTestStepOmxILPcmRenderer0005Step04, this); - delete ipKickoff04; - ipKickoff04 = NULL; - ipKickoff04 = - new (ELeave) CAsyncCallBack (callback04, CActive::EPriorityLow); - ipKickoff04->Call(); - - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StateExecuting: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToExecutingComplete; - - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - - // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); - - if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( - ipCompHandle, ipBufferHeaderInput)) - { - StopTest(KErrGeneral, EFail); - } - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_State [%d]"), aData2); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_Command [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX Event [%d]"), aEvent); - return StopTest(KErrGeneral, EFail); - } - }; - - } - -void -RAsyncTestStepOmxILPcmRenderer0008::DoEmptyBufferDoneL(OMX_HANDLETYPE /*aComponent*/, - OMX_BUFFERHEADERTYPE* /*aBuffer*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0008::DoEmptyBufferDoneL")); - INFO_PRINTF1(_L("DoEmptyBufferDoneL : Callback received ")); - - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - - if (dataBuffer.BufferSize() > 0) - { - // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); - - if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( - ipCompHandle, ipBufferHeaderInput)) - { - StopTest(KErrGeneral, EFail); - } - } - else - { - TCallBack callback03 (RAsyncTestStepOmxILPcmRenderer0005Step03, this); - delete ipKickoff03; - ipKickoff03 = NULL; - ipKickoff03 = - new (ELeave) CAsyncCallBack (callback03, CActive::EPriorityLow); - ipKickoff03->Call(); - } - } - -// -// RAsyncTestStepOmxILPcmRenderer0009 -// -RAsyncTestStepOmxILPcmRenderer0009::RAsyncTestStepOmxILPcmRenderer0009(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0008(aTestName, aComponentUid) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0009::RAsyncTestStepOmxILPcmRenderer0009")); - iSamplingRate = 44100; - } - - -void -RAsyncTestStepOmxILPcmRenderer0009::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0009::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test09 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Executing ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Repeat these two steps until the whole file has beeen empited ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2a. - Call EmptyThisBuffer on PCM Renderer ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2b. - EmptyBufferDone callback received ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Executing->Pause and Pause->Executing (after 5 and again after 10 buffers played) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Executing->Idle(BufferFlushing) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 5.- Idle->Loaded(Depopulation) ")); - - // This will change the test file - iTestFileName.Set(KPcmRendererTestFile2); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0005Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - } - -void -RAsyncTestStepOmxILPcmRenderer0009::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0009::DoEventHandlerL")); - - switch (aEvent) - { - case OMX_EventError: - { - // Ignore underflow errors... - if (OMX_ErrorUnderflow == (OMX_S32)aData1) - { - INFO_PRINTF1(_L("DoEventHandlerL: [OMX_ErrorUnderflow]")); - } - else - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_EventError [%x]"), aData1); - return StopTest(KErrGeneral, EFail); - } - } - break; - - case OMX_EventCmdComplete: - { - switch(aData1) - { - case OMX_CommandStateSet: - { - switch(aData2) - { - case OMX_StateLoaded: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateLoaded [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToLoadedComplete; - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - } - } - break; - case OMX_StateIdle: - { - if (EStateLoadKickoffTestLComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateLoadKickoffTestLComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0005Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - - } - else if (EStateTransitionToExecutingComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateTransitionToPauseComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback04 (RAsyncTestStepOmxILPcmRenderer0005Step04, this); - delete ipKickoff04; - ipKickoff04 = NULL; - ipKickoff04 = - new (ELeave) CAsyncCallBack (callback04, CActive::EPriorityLow); - ipKickoff04->Call(); - - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StateExecuting: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToExecutingComplete; - - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - - // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); - - if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( - ipCompHandle, ipBufferHeaderInput)) - { - StopTest(KErrGeneral, EFail); - } - } - else if (EStateTransitionToPauseComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToExecutingComplete; - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StatePause: - { - if (EStateTransitionToExecutingComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StatePause [EStateTransitionToExecutingComplete]")); - iTestState = EStateTransitionToPauseComplete; - - // Wait for a second... - User::After(1000000); - - // Resume playing... - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0005Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - } - else - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_StatePause iTestState[%d]"), iTestState); - return StopTest(KErrGeneral, EFail); - } - - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_State [%d]"), aData2); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_Command [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX Event [%d]"), aEvent); - return StopTest(KErrGeneral, EFail); - } - }; - - } - -void -RAsyncTestStepOmxILPcmRenderer0009::DoEmptyBufferDoneL(OMX_HANDLETYPE /*aComponent*/, - OMX_BUFFERHEADERTYPE* /*aBuffer*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0009::DoEmptyBufferDoneL")); - INFO_PRINTF1(_L("DoEmptyBufferDoneL : Callback received ")); - - iNumOfEmptiedBuffers++; - if (iNumOfEmptiedBuffers == 5 || iNumOfEmptiedBuffers == 10) - { - // - // Move component to OMX_StatePause - // - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StatePause, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - if (OMX_StatePause != compState) - { - return StopTest(KErrGeneral, EFail); - } - } - - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - - if (dataBuffer.BufferSize() > 0) - { - // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); - - if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( - ipCompHandle, ipBufferHeaderInput)) - { - StopTest(KErrGeneral, EFail); - } - } - else - { - TCallBack callback03 (RAsyncTestStepOmxILPcmRenderer0005Step03, this); - delete ipKickoff03; - ipKickoff03 = NULL; - ipKickoff03 = - new (ELeave) CAsyncCallBack (callback03, CActive::EPriorityLow); - ipKickoff03->Call(); - } - } - -// -// RAsyncTestStepOmxILPcmRenderer0010 -// -RAsyncTestStepOmxILPcmRenderer0010::RAsyncTestStepOmxILPcmRenderer0010(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0008(aTestName, aComponentUid) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0010::RAsyncTestStepOmxILPcmRenderer0010")); - iSamplingRate = 44100; - } - - -void -RAsyncTestStepOmxILPcmRenderer0010::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0010::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test10 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Executing ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Repeat these two steps until the whole file has beeen empited ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2a. - Call EmptyThisBuffer on PCM Renderer ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2b. - EmptyBufferDone callback received ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Executing->Idle and Idle->Executing (after 5 and again after 10 buffers played) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Executing->Idle(BufferFlushing) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 5.- Idle->Loaded(Depopulation) ")); - - // This will change the test file - iTestFileName.Set(KPcmRendererTestFile2); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0005Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - } - -void -RAsyncTestStepOmxILPcmRenderer0010::DoEventHandlerL(OMX_HANDLETYPE /*aComponent*/, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* /*aExtra*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0010::DoEventHandlerL")); - - switch (aEvent) - { - case OMX_EventError: - { - // Ignore underflow errors... - if (OMX_ErrorUnderflow == (OMX_S32)aData1) - { - INFO_PRINTF1(_L("DoEventHandlerL: [OMX_ErrorUnderflow]")); - } - else - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_EventError [%x]"), aData1); - return StopTest(KErrGeneral, EFail); - } - } - break; - - case OMX_EventCmdComplete: - { - switch(aData1) - { - case OMX_CommandStateSet: - { - switch(aData2) - { - case OMX_StateLoaded: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateLoaded [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToLoadedComplete; - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // The successful termination... - TCallBack callbackStop (RAsyncTestStepOmxILComponentBase::StopTestCallBack, this); - delete ipKickoffStop; - ipKickoffStop = NULL; - ipKickoffStop = - new (ELeave) CAsyncCallBack (callbackStop, CActive::EPriorityLow); - ipKickoffStop->Call(); - } - } - break; - case OMX_StateIdle: - { - if (EStateLoadKickoffTestLComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateLoadKickoffTestLComplete]")); - iTestState = EStateTransitionToIdleComplete; - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0005Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - - } - else if (EStateTransitionToExecutingComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [EStateTransitionToExecutingComplete]")); - iTestState = EStateTransitionToIdleComplete; - - if(iNumOfEmptiedBuffers <= 20) - { - // Wait for a second... - User::After(1000000); - - // Resume playing... - TCallBack callback02 (RAsyncTestStepOmxILPcmRenderer0005Step02, this); - delete ipKickoff02; - ipKickoff02 = NULL; - ipKickoff02 = - new (ELeave) CAsyncCallBack (callback02, CActive::EPriorityLow); - ipKickoff02->Call(); - } - else - { - // Playback finished - TCallBack callback04 (RAsyncTestStepOmxILPcmRenderer0005Step04, this); - delete ipKickoff04; - ipKickoff04 = NULL; - ipKickoff04 = - new (ELeave) CAsyncCallBack (callback04, CActive::EPriorityLow); - ipKickoff04->Call(); - } - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateIdle [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - case OMX_StateExecuting: - { - if (EStateTransitionToIdleComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToExecutingComplete; - - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - - // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); - - if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( - ipCompHandle, ipBufferHeaderInput)) - { - StopTest(KErrGeneral, EFail); - } - } - else if (EStateTransitionToPauseComplete == iTestState) - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [EStateTransitionToIdleComplete]")); - iTestState = EStateTransitionToExecutingComplete; - } - else - { - INFO_PRINTF1(_L("DoEventHandlerL: OMX_StateExecuting [Other]")); - return StopTest(KErrGeneral, EFail); - } - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_State [%d]"), aData2); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX_Command [%d]"), aData1); - return StopTest(KErrGeneral, EFail); - } - }; - } - break; - default: - { - INFO_PRINTF2(_L("DoEventHandlerL: OMX Event [%d]"), aEvent); - return StopTest(KErrGeneral, EFail); - } - }; - - } - -void -RAsyncTestStepOmxILPcmRenderer0010::DoEmptyBufferDoneL(OMX_HANDLETYPE /*aComponent*/, - OMX_BUFFERHEADERTYPE* /*aBuffer*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0010::DoEmptyBufferDoneL")); - INFO_PRINTF1(_L("DoEmptyBufferDoneL : Callback received ")); - - iNumOfEmptiedBuffers++; - if (iNumOfEmptiedBuffers == 5 || iNumOfEmptiedBuffers == 10) - { - // - // Move component to OMX_StateIdle - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StateIdle, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateIdle != compState) - { - return StopTest(KErrGeneral, EFail); - } - - // Reset the file position - ipTestFile->ResetPos(); - } - else - { - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - - if (dataBuffer.BufferSize() > 0) - { - // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); - - if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( - ipCompHandle, ipBufferHeaderInput)) - { - StopTest(KErrGeneral, EFail); - } - } - else - { - TCallBack callback03 (RAsyncTestStepOmxILPcmRenderer0005Step03, this); - delete ipKickoff03; - ipKickoff03 = NULL; - ipKickoff03 = - new (ELeave) CAsyncCallBack (callback03, CActive::EPriorityLow); - ipKickoff03->Call(); - } - } - } - -TInt -RAsyncTestStepOmxILPcmRenderer0010::RAsyncTestStepOmxILPcmRenderer0010Step01(TAny* aPtr) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0010::RAsyncTestStepOmxILPcmRenderer0010Step01")); - RAsyncTestStepOmxILPcmRenderer0010* self = - static_cast (aPtr); - self->DoRAsyncTestStepOmxILPcmRenderer0010Step01(); - return KErrNone; - } - -void -RAsyncTestStepOmxILPcmRenderer0010::DoRAsyncTestStepOmxILPcmRenderer0010Step01() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0010::DoRAsyncTestStepOmxILPcmRenderer0010Step01")); - - // - // Provide callbacks to component - // - OMX_CALLBACKTYPE* omxCallbacks = *ipCallbackHandler; - - if (OMX_ErrorNone != ipCompHandle->SetCallbacks( - ipCompHandle, - omxCallbacks, - ipCallbackHandler)) - { - return StopTest(KErrGeneral, EFail); - } - - INFO_PRINTF2(_L("Component Callbacks set successfully: %X"), ipCallbackHandler); - - // - // Obtain the port def params for Port #0 - // - OMX_PARAM_PORTDEFINITIONTYPE portParamsInputPort; - portParamsInputPort.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); - portParamsInputPort.nVersion = TOmxILSpecVersion(); - portParamsInputPort.nPortIndex = 0; - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamPortDefinition, - &portParamsInputPort)) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Change the sampling rate on PCM Renderer's port #0 - // - OMX_AUDIO_PARAM_PCMMODETYPE pcmMode; - pcmMode.nSize = sizeof(OMX_AUDIO_PARAM_PCMMODETYPE); - pcmMode.nVersion = TOmxILSpecVersion(); - pcmMode.nPortIndex = 0; - if (OMX_ErrorNone != ipCompHandle->GetParameter( - ipCompHandle, - OMX_IndexParamAudioPcm, - &pcmMode)) - { - return StopTest(KErrGeneral, EFail); - } - pcmMode.nSamplingRate = 44100; - if (OMX_ErrorNone != ipCompHandle->SetParameter( - ipCompHandle, - OMX_IndexParamAudioPcm, - &pcmMode)) - { - return StopTest(KErrGeneral, EFail); - } - - // - // Move component to OMX_StateIdle - // - - if (OMX_ErrorNone != ipCompHandle->SendCommand( - ipCompHandle, - OMX_CommandStateSet, - OMX_StateIdle, - 0)) - { - return StopTest(KErrGeneral, EFail); - } - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Moving component to OMX_StateIdle")); - - OMX_STATETYPE compState; - if (OMX_ErrorNone != ipCompHandle->GetState(ipCompHandle, - &compState)) - { - return StopTest(KErrGeneral, EFail); - } - - PrintOmxState(compState); - - if (OMX_StateLoaded != compState) - { - return StopTest(KErrGeneral, EFail); - } - - - // - // Allocate buffer on input port - // - if (OMX_ErrorNone != ipCompHandle->AllocateBuffer( - ipCompHandle, - &ipBufferHeaderInput, - 0, // input port - 0, - portParamsInputPort.nBufferSize)) - { - return StopTest(KErrGeneral, EFail); - } - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Populated buffer (AllocateBuffer) in INPUT port")); - } - - -// -// RAsyncTestStepOmxILPcmRenderer0030 -// -RAsyncTestStepOmxILPcmRenderer0030::RAsyncTestStepOmxILPcmRenderer0030(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0008(aTestName, aComponentUid) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0030::RAsyncTestStepOmxILPcmRenderer0030")); - } - - -void -RAsyncTestStepOmxILPcmRenderer0030::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0030::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test30 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Executing ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Repeat these two steps until the whole file has beeen empited ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2a. - Call EmptyThisBuffer on PCM Renderer ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2b. - EmptyBufferDone callback received ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2c. - Get Bytes Played parameter and compare with the bytes readed from file ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Executing->Idle(BufferFlushing) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Idle->Loaded(Depopulation) ")); - - // This will change the test file - iTestFileName.Set(KPcmRendererTestFile); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0005Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - } - -void -RAsyncTestStepOmxILPcmRenderer0030::DoEmptyBufferDoneL(OMX_HANDLETYPE /*aComponent*/, - OMX_BUFFERHEADERTYPE* aBuffer) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0030::DoEmptyBufferDoneL")); - INFO_PRINTF1(_L("DoEmptyBufferDoneL : Callback received ")); - - // Check that GetConfig is returning the correct amount of bytes played - OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED bytesPlayedStruct; - bytesPlayedStruct.nSize = sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_BYTESPLAYED); - bytesPlayedStruct.nVersion = TOmxILSpecVersion(); - if (OMX_ErrorNone != ipCompHandle->GetConfig(ipCompHandle, - static_cast(OMX_SymbianIndexConfigAudioBytesPlayed), - &bytesPlayedStruct)) - { - StopTest(KErrGeneral, EFail); - } - //check the number of bytes played by the device corresponds - //to the number of bytes readed from file - //allow an extra margin of one buffer. - TUint maxAllowedBytesPlayed =ipTestFile->GetPos(); - if ((bytesPlayedStruct.nBytesPlayed < 0)||(bytesPlayedStruct.nBytesPlayed > maxAllowedBytesPlayed)) - { - StopTest(KErrGeneral, EFail); - } - - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - - if (dataBuffer.BufferSize() > 0) - { - // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); - - if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( - ipCompHandle, ipBufferHeaderInput)) - { - StopTest(KErrGeneral, EFail); - } - } - else - { - TCallBack callback03 (RAsyncTestStepOmxILPcmRenderer0005Step03, this); - delete ipKickoff03; - ipKickoff03 = NULL; - ipKickoff03 = - new (ELeave) CAsyncCallBack (callback03, CActive::EPriorityLow); - ipKickoff03->Call(); - } - } - -// -// RAsyncTestStepOmxILPcmRenderer0031 -// -RAsyncTestStepOmxILPcmRenderer0031::RAsyncTestStepOmxILPcmRenderer0031(const TDesC& aTestName, TInt aComponentUid) - : - RAsyncTestStepOmxILPcmRenderer0008(aTestName, aComponentUid) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0031::RAsyncTestStepOmxILPcmRenderer0031")); - iSamplingRate = 44100; - } - - -void -RAsyncTestStepOmxILPcmRenderer0031::KickoffTestL() - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0031::KickoffTestL")); - iTestState = EStateLoadKickoffTestLComplete; - - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : Test31 ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 1.- Loaded->Idle(AllocateBuffer-population) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Idle->Executing ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2.- Repeat these two steps until the whole file has beeen empited ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2a. - Call EmptyThisBuffer on PCM Renderer ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 2b. - EmptyBufferDone callback received ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 3.- Set Volume Ramp to 2s (after 5 buffers played) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 4.- Executing->Idle(BufferFlushing) ")); - INFO_PRINTF1(_L("UNIT TEST OMX IL PCM RENDERER : 5.- Idle->Loaded(Depopulation) ")); - - // This will change the test file - iTestFileName.Set(KPcmRendererTestFile2); - - // This will install one callback - RAsyncTestStepOmxILComponentBase::KickoffTestL(); - - TCallBack callback01 (RAsyncTestStepOmxILPcmRenderer0005Step01, this); - delete ipKickoff01; - ipKickoff01 = NULL; - ipKickoff01 = - new (ELeave) CAsyncCallBack (callback01, CActive::EPriorityLow); - ipKickoff01->Call(); - } - -void -RAsyncTestStepOmxILPcmRenderer0031::DoEmptyBufferDoneL(OMX_HANDLETYPE /*aComponent*/, - OMX_BUFFERHEADERTYPE* /*aBuffer*/) - { - DEBUG_PRINTF(_L8("RAsyncTestStepOmxILPcmRenderer0031::DoEmptyBufferDoneL")); - INFO_PRINTF1(_L("DoEmptyBufferDoneL : Callback received ")); - - iNumOfEmptiedBuffers++; - if (iNumOfEmptiedBuffers == 5) - { - OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP volumeRampStruct; - volumeRampStruct.nSize = sizeof(OMX_SYMBIAN_AUDIO_CONFIG_PCM_VOLUMERAMP); - volumeRampStruct.nVersion = TOmxILSpecVersion(); - volumeRampStruct.nPortIndex = 0; - if (OMX_ErrorNone != ipCompHandle->GetConfig(ipCompHandle, - static_cast(OMX_SymbianIndexConfigAudioPcmVolumeRamp), - &volumeRampStruct)) - { - StopTest(KErrGeneral, EFail); - } - volumeRampStruct.nRampDuration = 2000000; // 2 second - if (OMX_ErrorNone != ipCompHandle->SetConfig(ipCompHandle, - static_cast(OMX_SymbianIndexConfigAudioPcmVolumeRamp), - &volumeRampStruct)) - { - StopTest(KErrGeneral, EFail); - } - INFO_PRINTF1(_L("Volume ramp set")); - } - - CMMFDataBuffer& dataBuffer = *(static_cast(ipBufferHeaderInput->pInputPortPrivate)); - ipTestFile->ReadNextBuffer(dataBuffer); - - if (dataBuffer.BufferSize() > 0) - { - // Send a buffer to the input port - ipBufferHeaderInput->nFilledLen = dataBuffer.BufferSize(); - - if (OMX_ErrorNone != ipCompHandle->EmptyThisBuffer( - ipCompHandle, ipBufferHeaderInput)) - { - StopTest(KErrGeneral, EFail); - } - } - else - { - TCallBack callback03 (RAsyncTestStepOmxILPcmRenderer0005Step03, this); - delete ipKickoff03; - ipKickoff03 = NULL; - ipKickoff03 = - new (ELeave) CAsyncCallBack (callback03, CActive::EPriorityLow); - ipKickoff03->Call(); - } - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/src/tsu_omxil_pcmrenderer_step.h --- a/omxil/omxilunittest/components/src/tsu_omxil_pcmrenderer_step.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,703 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#ifndef TSU_OMXIL_PCMRENDERER_STEP_H -#define TSU_OMXIL_PCMRENDERER_STEP_H - -#include "tsu_omxil_component_base.h" - - -// Forward declarations -class CMMFDescriptorBuffer; - -// -// RAsyncTestStepOmxILPcmRenderer0020 -// -// Test20 Description -// -# Init Component -// -# Obtain the component's state (GetState) -// -# Obtain the component's version (GetComponentVersion) -// -# Provide callbacks to component (SetCallbacks) -// -# Obtain component's role #1 (ComponentRoleEnum) -// -# Obtain component's role #2 (ComponentRoleEnum fails with OMX_ErrorNoMore) -// -class RAsyncTestStepOmxILPcmRenderer0020 : public RAsyncTestStepOmxILComponentBase - { - -public: - - RAsyncTestStepOmxILPcmRenderer0020(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0020Step01(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0020Step01(); - -protected: - - CAsyncCallBack* ipKickoff01; - CAsyncCallBack* ipKickoff02; - CAsyncCallBack* ipKickoff03; - CAsyncCallBack* ipKickoff04; - CAsyncCallBack* ipKickoff05; - CAsyncCallBack* ipKickoff06; - - }; - -// Test21 Description -// -# Init Component -// -# Provide callbacks to component (SetCallbacks) -// -# Obtain the component's state (GetState) -// -# Obtain component's role #1 with null string (ComponentRoleEnum fails with OMX_ErrorBadParameter) -// -# Obtain component's role #1 (ComponentRoleEnum successfully returns audio_decoder.aac) -// -# Obtain component's role #2 (ComponentRoleEnum fails with OMX_ErrorNoMore) -// -class RAsyncTestStepOmxILPcmRenderer0021 : public RAsyncTestStepOmxILComponentBase - { - -public: - - RAsyncTestStepOmxILPcmRenderer0021(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0021Step01(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0021Step01(); - -protected: - - CAsyncCallBack* ipKickoff01; - CAsyncCallBack* ipKickoff02; - CAsyncCallBack* ipKickoff03; - CAsyncCallBack* ipKickoff04; - CAsyncCallBack* ipKickoff05; - CAsyncCallBack* ipKickoff06; - - }; - -// Test22 Description -// -# Init Component -// -# Provide callbacks to component (SetCallbacks) -// -# Obtain the component's state (GetState) -// -# Get component's current role (GetParameter(OMX_IndexParamStandardComponentRole) ) -// -# Set unsupported audio_decoder.mp3 role (SetParameter(OMX_IndexParamStandardComponentRole) ) -// -# SetParameter returns OMX_ErrorBadParameter (audio_decoder.mp3 role not supported) -// -class RAsyncTestStepOmxILPcmRenderer0022 : public RAsyncTestStepOmxILComponentBase - { - -public: - - RAsyncTestStepOmxILPcmRenderer0022(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0022Step01(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0022Step01(); - -protected: - - CAsyncCallBack* ipKickoff01; - CAsyncCallBack* ipKickoff02; - CAsyncCallBack* ipKickoff03; - CAsyncCallBack* ipKickoff04; - CAsyncCallBack* ipKickoff05; - CAsyncCallBack* ipKickoff06; - - }; - - - -// -// RAsyncTestStepOmxILPcmRenderer0001 -// -// Test01 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Loaded(depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0001 : public RAsyncTestStepOmxILComponentBase - { - -public: - - RAsyncTestStepOmxILPcmRenderer0001(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0001Step01(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0001Step01(); - - static TInt RAsyncTestStepOmxILPcmRenderer0001Step02(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0001Step02(); - -protected: - - - // Set of states for simple state machine - enum TTestState - { - EStateDefault, - EStateLoadKickoffTestLComplete, - EStateTransitionToLoadedComplete, - EStateTransitionToIdleComplete, - EStateTransitionToWaiForResourcesComplete, - EStateTransitionToPauseComplete, - EStateTransitionToExecutingComplete, - }; - - OMX_BUFFERHEADERTYPE* ipBufferHeaderInput; - OMX_BUFFERHEADERTYPE* ipBufferHeaderOutput; - RArray ipClientClockPortBufferArray; - - TBool iTerminateNow; - TInt iSamplingRate; - - TTestState iTestState; - - CAsyncCallBack* ipKickoff01; - CAsyncCallBack* ipKickoff02; - CAsyncCallBack* ipKickoff03; - CAsyncCallBack* ipKickoff04; - CAsyncCallBack* ipKickoff05; - CAsyncCallBack* ipKickoff06; - - }; - -// -// RAsyncTestStepOmxILPcmRenderer0002 -// -// Test02 -// -# Init Component -// -# Loaded->Idle(UseBuffer-population) -// -# Idle->Loaded(depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0002 : public RAsyncTestStepOmxILPcmRenderer0001 - { - -public: - - RAsyncTestStepOmxILPcmRenderer0002(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0002Step01(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0002Step01(); - - static TInt RAsyncTestStepOmxILPcmRenderer0002Step02(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0002Step02(); - - -protected: - - CMMFDescriptorBuffer* ipInputBuffer; - CMMFDescriptorBuffer* ipOutputBuffer; - RArray iClockPortBufferPtrArray; - }; - -// -// RAsyncTestStepOmxILPcmRenderer0003 -// -// Test03 -// -# Init Component -// -# Loaded->WaitForResources -// -# WaitForResources->Loaded -// -class RAsyncTestStepOmxILPcmRenderer0003 : public RAsyncTestStepOmxILComponentBase - { - -public: - - RAsyncTestStepOmxILPcmRenderer0003(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0003Step01(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0003Step01(); - - static TInt RAsyncTestStepOmxILPcmRenderer0003Step02(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0003Step02(); - - -protected: - - TBool iTerminateNow; - - CAsyncCallBack* ipKickoff01; - CAsyncCallBack* ipKickoff02; - CAsyncCallBack* ipKickoff03; - CAsyncCallBack* ipKickoff04; - CAsyncCallBack* ipKickoff05; - CAsyncCallBack* ipKickoff06; - - - }; - -// -// RAsyncTestStepOmxILPcmRenderer0004 -// -// Test04 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Pause -// -# Pause->Idle -// -# Idle->Loaded(depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0004 : public RAsyncTestStepOmxILPcmRenderer0001 - { - -public: - - RAsyncTestStepOmxILPcmRenderer0004(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0004Step01(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0004Step01(); - - static TInt RAsyncTestStepOmxILPcmRenderer0004Step02(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0004Step02(); - - static TInt RAsyncTestStepOmxILPcmRenderer0004Step03(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0004Step03(); - - static TInt RAsyncTestStepOmxILPcmRenderer0004Step04(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0004Step04(); - - }; - -// -// RAsyncTestStepOmxILPcmRenderer0005 -// -// Test05 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Executing -// -# Call EmptyThisBuffer on PCM Renderer -// -# EmptyBufferDone callbacks received -// -# Executing->Idle(BufferFlushing) -// -# Idle->Loaded(Depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0005 : public RAsyncTestStepOmxILPcmRenderer0004 - { - -public: - - RAsyncTestStepOmxILPcmRenderer0005(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - void DoEmptyBufferDoneL(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0005Step01(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0005Step01(); - - static TInt RAsyncTestStepOmxILPcmRenderer0005Step02(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0005Step02(); - - static TInt RAsyncTestStepOmxILPcmRenderer0005Step03(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0005Step03(); - - static TInt RAsyncTestStepOmxILPcmRenderer0005Step04(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0005Step04(); - }; - -// -// RAsyncTestStepOmxILPcmRenderer0006 -// -// Test06 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Executing -// -# Executing->Pause -// -# Pause->Executing -// -# Executing->Idle(BufferFlushing) -// -# Idle->Loaded(depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0006 : public RAsyncTestStepOmxILPcmRenderer0005 - { - -public: - - RAsyncTestStepOmxILPcmRenderer0006(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0006Step01(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0006Step01(); - - static TInt RAsyncTestStepOmxILPcmRenderer0006Step02(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0006Step02(); - - static TInt RAsyncTestStepOmxILPcmRenderer0006Step03(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0006Step03(); - - static TInt RAsyncTestStepOmxILPcmRenderer0006Step04(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0006Step04(); - - static TInt RAsyncTestStepOmxILPcmRenderer0006Step05(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0006Step05(); - - static TInt RAsyncTestStepOmxILPcmRenderer0006Step06(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0006Step06(); - - }; - -// -// RAsyncTestStepOmxILPcmRenderer0007 -// -// Test07 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Executing -// -# Executing->Pause -// -# Pause->Idle(BufferFlushing) -// -# Idle->Loaded(depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0007 : public RAsyncTestStepOmxILPcmRenderer0006 - { - -public: - - RAsyncTestStepOmxILPcmRenderer0007(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - void CloseTest(); - - - // - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0007Step01(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0007Step01(); - - static TInt RAsyncTestStepOmxILPcmRenderer0007Step02(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0007Step02(); - - static TInt RAsyncTestStepOmxILPcmRenderer0007Step03(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0007Step03(); - - static TInt RAsyncTestStepOmxILPcmRenderer0007Step04(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0007Step04(); - - static TInt RAsyncTestStepOmxILPcmRenderer0007Step05(TAny* aPtr); - // void DoRAsyncTestStepOmxILPcmRenderer0007Step05(); - }; - -// -// RAsyncTestStepOmxILPcmRenderer0008 -// -// Test08 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Executing -// -# Repeat these steps until the whole file has been emptied -// -# Call EmptyThisBuffer on PCM Renderer -// -# EmptyBufferDone callbacks received -// -# Executing->Idle(BufferFlushing) -// -# Idle->Loaded(Depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0008 : public RAsyncTestStepOmxILPcmRenderer0005 - { -public: - RAsyncTestStepOmxILPcmRenderer0008(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - void DoEmptyBufferDoneL(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - }; - -// -// RAsyncTestStepOmxILPcmRenderer0009 -// -// Test09 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Executing -// -# Repeat these steps until the whole file has been emptied -// -# Call EmptyThisBuffer on PCM Renderer -// -# EmptyBufferDone callbacks received -// -# Executing->Pause and Pause->Executing (after 5 and again after 10 buffers played) -// -# Executing->Idle(BufferFlushing) -// -# Idle->Loaded(Depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0009 : public RAsyncTestStepOmxILPcmRenderer0008 - { -public: - RAsyncTestStepOmxILPcmRenderer0009(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - void DoEmptyBufferDoneL(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - -private: - TInt iNumOfEmptiedBuffers; - }; - -// -// RAsyncTestStepOmxILPcmRenderer0010 -// -// Test09 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Executing -// -# Repeat these steps until the whole file has been emptied -// -# Call EmptyThisBuffer on PCM Renderer -// -# EmptyBufferDone callbacks received -// -# Executing->Idle and Idle->Executing (after 5 and again after 10 buffers played) -// -# Executing->Idle(BufferFlushing) -// -# Idle->Loaded(Depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0010 : public RAsyncTestStepOmxILPcmRenderer0008 - { -public: - RAsyncTestStepOmxILPcmRenderer0010(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - - void DoEventHandlerL(OMX_HANDLETYPE aComponent, - OMX_EVENTTYPE aEvent, - TUint aData1, - TUint aData2, - TAny* aExtra); - - void DoEmptyBufferDoneL(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - -protected: - - // Call backs - static TInt RAsyncTestStepOmxILPcmRenderer0010Step01(TAny* aPtr); - void DoRAsyncTestStepOmxILPcmRenderer0010Step01(); - -private: - - - TInt iNumOfEmptiedBuffers; - }; - -// -// RAsyncTestStepOmxILPcmRenderer0030 -// -// Test30 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Executing -// -# Repeat these steps until the whole file has been emptied -// -# Call EmptyThisBuffer on PCM Renderer -// -# EmptyBufferDone callbacks received -// -# Get Bytes Played parameter and compare with the bytes readed from file -// -# Executing->Idle(BufferFlushing) -// -# Idle->Loaded(Depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0030 : public RAsyncTestStepOmxILPcmRenderer0008 - { -public: - RAsyncTestStepOmxILPcmRenderer0030(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - - void DoEmptyBufferDoneL(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - }; - -// -// RAsyncTestStepOmxILPcmRenderer0031 -// -// Test09 -// -# Init Component -// -# Loaded->Idle(AllocateBuffer-population) -// -# Idle->Executing -// -# Repeat these steps until the whole file has been emptied -// -# Call EmptyThisBuffer on PCM Renderer -// -# EmptyBufferDone callbacks received -// -# Set Volume Ramp to 2s (after 5 buffers played) -// -# Executing->Idle(BufferFlushing) -// -# Idle->Loaded(Depopulation) -// -class RAsyncTestStepOmxILPcmRenderer0031 : public RAsyncTestStepOmxILPcmRenderer0008 - { -public: - RAsyncTestStepOmxILPcmRenderer0031(const TDesC& aTestName, TInt aComponentUid); - - // From RAsyncTestStep - void KickoffTestL(); - - void DoEmptyBufferDoneL(OMX_HANDLETYPE aComponent, - OMX_BUFFERHEADERTYPE* aBuffer); - -private: - TInt iNumOfEmptiedBuffers; - }; - -#endif // TSU_OMXIL_PCMRENDERER_STEP_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/src/tsu_omxil_pcmrenderer_suite.cpp --- a/omxil/omxilunittest/components/src/tsu_omxil_pcmrenderer_suite.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,170 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#include - -#include "log.h" -#include "tsu_omxil_pcmrenderer_suite.h" -#include "tsu_omxil_pcmrenderer_step.h" -#include "omxilpcmrenderer.hrh" - -/** - * - * NewTestSuiteL - * NewTestSuite is exported at ordinal 1 - * this provides the interface to allow schedule test - * to create instances of this test suite - * @result CTestSuiteOmxILPcmRenderer* - * - */ -EXPORT_C CTestSuiteOmxILPcmRenderer* NewTestSuiteL() - { - CTestSuiteOmxILPcmRenderer* result = new (ELeave) CTestSuiteOmxILPcmRenderer; - CleanupStack::PushL(result); - result->ConstructL(); - CleanupStack::Pop(); // result - return result; - } - -/** - * - * CTestSuiteOmxILPcmRenderer - * - */ -CTestSuiteOmxILPcmRenderer::CTestSuiteOmxILPcmRenderer() - { - DEBUG_PRINTF(_L8("CTestSuiteOmxILPcmRenderer::CTestSuiteOmxILPcmRenderer")); - - } - - -/** - * - * ~CTestSuiteOmxILPcmRenderer - * - */ -CTestSuiteOmxILPcmRenderer::~CTestSuiteOmxILPcmRenderer() - { - DEBUG_PRINTF(_L8("CTestSuiteOmxILPcmRenderer::~CTestSuiteOmxILPcmRenderer")); - } -/** - * - * GetVersion - * Get Test Suite version - * @result TPtrC - * - */ -TPtrC CTestSuiteOmxILPcmRenderer::GetVersion( void ) const - { - _LIT(KTxtVersion,"1.00"); - return KTxtVersion(); - } - - - -/** - * - * InitialiseL - * Constructor for test suite - * this creates all the test steps and - * stores them inside CTestSuiteOmxILPcmRenderer - * - */ -void CTestSuiteOmxILPcmRenderer::InitialiseL(void) - { - // store the name of this test suite - iSuiteName = _L("TSU_OMXIL_PcmRenderer"); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0020( - _L("MM-OMXIL-OMXILPcmRenderer-U-0020-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0021( - _L("MM-OMXIL-OMXILPcmRenderer-U-0021-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0022( - _L("MM-OMXIL-OMXILPcmRenderer-U-0022-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0001( - _L("MM-OMXIL-OMXILPcmRenderer-U-0001-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0002( - _L("MM-OMXIL-OMXILPcmRenderer-U-0002-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0003( - _L("MM-OMXIL-OMXILPcmRenderer-U-0003-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0004( - _L("MM-OMXIL-OMXILPcmRenderer-U-0004-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0005( - _L("MM-OMXIL-OMXILPcmRenderer-U-0005-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0006( - _L("MM-OMXIL-OMXILPcmRenderer-U-0006-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0007( - _L("MM-OMXIL-OMXILPcmRenderer-U-0007-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0008( - _L("MM-OMXIL-OMXILPcmRenderer-U-0008-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0009( - _L("MM-OMXIL-OMXILPcmRenderer-U-0009-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0010( - _L("MM-OMXIL-OMXILPcmRenderer-U-0010-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0030( - _L("MM-OMXIL-OMXILPcmRenderer-U-0030-HP"), - KUidSymbianOmxILPcmRenderer)); - - AddTestStepL( - new(ELeave) RAsyncTestStepOmxILPcmRenderer0031( - _L("MM-OMXIL-OMXILPcmRenderer-U-0031-HP"), - KUidSymbianOmxILPcmRenderer)); - - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/src/tsu_omxil_pcmrenderer_suite.h --- a/omxil/omxilunittest/components/src/tsu_omxil_pcmrenderer_suite.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent -*/ - -#ifndef TSU_OMXIL_PCMRENDERER_SUITE_H -#define TSU_OMXIL_PCMRENDERER_SUITE_H - -#include - -/** - * - * CTestSuiteOmxILPcmRenderer defines the test suite for OMX IL PCM Renderer tests - * - * - * - */ -class CTestSuiteOmxILPcmRenderer : public CTestSuite - { - -public: -CTestSuiteOmxILPcmRenderer(); - void InitialiseL(void); - virtual ~CTestSuiteOmxILPcmRenderer(); - virtual TPtrC GetVersion( void ) const; - }; - -#endif // TSU_OMXIL_PCMRENDERER_SUITE_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/components/src/uids.hrh --- a/omxil/omxilunittest/components/src/uids.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef UIDS_HRH -#define UIDS_HRH - -#define KSharedLibraryUidDefine 0x1000008d - -// The following UID has changed to fix the defect DEF123946 v9.5 -#define KUidTsuOmxILAacDecoderDll 0x10285E7C -#define KUidTsuOmxILPcmRendererDll 0x10285C07 - -#endif // UIDS_HRH - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/bwins/tsu_omxil_dummycontentpipeu.def --- a/omxil/omxilunittest/contentpipe/bwins/tsu_omxil_dummycontentpipeu.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?NewTestSuiteL@@YAPAVCTestSuite_OMXIL_DummyContentPipe@@XZ @ 1 NONAME ; class CTestSuite_OMXIL_DummyContentPipe * NewTestSuiteL(void) - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/eabi/tsu_omxil_dummycontentpipeu.def --- a/omxil/omxilunittest/contentpipe/eabi/tsu_omxil_dummycontentpipeu.def Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - _Z13NewTestSuiteLv @ 1 NONAME - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/group/bld.inf --- a/omxil/omxilunittest/contentpipe/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -PRJ_TESTMMPFILES -//Dummy Content Pipe Unit Tests -../mmpfiles/tsu_omxil_dummycontentpipe.mmp - -PRJ_TESTEXPORTS -// test scripts -../scripts/tsu_omxil_dummycontentpipe.script c:/omxil/tsu_omxil_dummycontentpipe.script - -// Romkit include files -tsu_omxil_dummycontentpipe.iby /epoc32/rom/include/tsu_omxil_dummycontentpipe.iby diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/group/component_test.pkg --- a/omxil/omxilunittest/contentpipe/group/component_test.pkg Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ - - -"\sf\os\mm\omxil\omxilunittest\contentpipe\scripts\tsu_omxil_dummycontentpipe.script"-"c:\omxil\tsu_omxil_dummycontentpipe.script" diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/group/tsu_omxil_dummycontentpipe.iby --- a/omxil/omxilunittest/contentpipe/group/tsu_omxil_dummycontentpipe.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// -// tsu_omxil_dummycontentpipe.iby - -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef TSU_OMXIL_DUMMYCONTENTPIPE_IBY -#define TSU_OMXIL_DUMMYCONTENTPIPE_IBY - -// OMX IL Components Unit tests -file=ABI_DIR\BUILD_DIR\tsu_omxil_dummycontentpipe.dll System\Libs\tsu_omxil_dummycontentpipe.dll - -// Scripts -data=EPOCROOT##epoc32\data\c\omxil\tsu_omxil_dummycontentpipe.script \omxil\tsu_omxil_dummycontentpipe.script - -#endif // TSU_OMXIL_DUMMYCONTENTPIPE_IBY \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/mmpfiles/tsu_omxil_dummycontentpipe.mmp --- a/omxil/omxilunittest/contentpipe/mmpfiles/tsu_omxil_dummycontentpipe.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -TARGET tsu_omxil_dummycontentpipe.dll -CAPABILITY ALL -TCB -TARGETTYPE dll -UID 0x1000008d 0x102834BC -VENDORID 0x70000001 - -SOURCEPATH ../src -SOURCE tsu_omxil_dummycontentpipe.cpp -SOURCE tsu_omxil_dummycontentpipesuite.cpp - -USERINCLUDE ../src - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY testframeworkclient.lib - -#ifdef EABI -NOEXPORTLIBRARY -#endif - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/scripts/tsu_omxil_dummycontentpipe.script --- a/omxil/omxilunittest/contentpipe/scripts/tsu_omxil_dummycontentpipe.script Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -// -// Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -LOAD_SUITE TSU_OMXIL_DUMMYCONTENTPIPE.dll - -#Req. under test REQ8336 -# - -//-------------------------------------// -// Dummy Content Pipe // -//-------------------------------------// - -// Create and destroy dummy content pipe -//! @SYMTestCaseID MM-OMXIL-DUMMYCONTENTPIPE-U-0001 - -RUN_TEST_STEP -1 TSU_OMXIL_DUMMYCONTENTPIPE MM-OMXIL-DUMMYCONTENTPIPE-U-0001 -TEST_COMPLETE - -// Call Create() and Close() on a content pipe -//! @SYMTestCaseID MM-OMXIL-DUMMYCONTENTPIPE-U-0002 - -RUN_TEST_STEP -1 TSU_OMXIL_DUMMYCONTENTPIPE MM-OMXIL-DUMMYCONTENTPIPE-U-0002 -TEST_COMPLETE - -// Call SetPosition and GetPosition() on the dummy content pipe 1 -//! @SYMTestCaseID MM-OMXIL-DUMMYCONTENTPIPE-U-0003 - -RUN_TEST_STEP -1 TSU_OMXIL_DUMMYCONTENTPIPE MM-OMXIL-DUMMYCONTENTPIPE-U-0003 -TEST_COMPLETE - -// Call SetPosition and GetPosition() on the dummy content pipe 2 -//! @SYMTestCaseID MM-OMXIL-DUMMYCONTENTPIPE-U-0004 - -RUN_TEST_STEP -1 TSU_OMXIL_DUMMYCONTENTPIPE MM-OMXIL-DUMMYCONTENTPIPE-U-0004 -TEST_COMPLETE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/src/tsu_omxil_dummycontentpipe.cpp --- a/omxil/omxilunittest/contentpipe/src/tsu_omxil_dummycontentpipe.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,385 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include - -#include - -#include "../../test_plugins/dummy_cp/src/omxildummycontentpipe.hrh" -#include "../../test_plugins/dummy_cp_2/src/omxildummycontentpipe2.hrh" -#include "tsu_omxil_dummycontentpipe.h" - -char* const KTestUri = "http://www.symbian.com"; -const TInt KTestOffset = 5; - -/** - * - * CTestStep_OMXIL_DummyContentPipe constructor - * - * @xxxx - * - */ -CTestStep_OMXIL_DummyContentPipe::CTestStep_OMXIL_DummyContentPipe() - { - } - -/** - * - * CTestStep_OMXIL_DummyContentPipe destructor - * - * @xxxx - * - */ -CTestStep_OMXIL_DummyContentPipe::~CTestStep_OMXIL_DummyContentPipe() - { - } - -TVerdict CTestStep_OMXIL_DummyContentPipe::DoTestStepPreambleL() - { - TVerdict verdict = EPass; - - return verdict; - } - -TVerdict CTestStep_OMXIL_DummyContentPipe::DoTestStepPostambleL() - { - TVerdict verdict = EPass; - - return verdict; - } - - -CTestStep_OMXIL_DummyContentPipe_U_0001::CTestStep_OMXIL_DummyContentPipe_U_0001() - /** Constructor - */ - { - // store the name of this test case - // this is the name that is used by the script file - // Each test step initialises it's own name - iTestStepName = _L("MM-OMXIL-DummyContentPipe-U-0001"); - } - - -TVerdict CTestStep_OMXIL_DummyContentPipe_U_0001::DoTestStepL( void ) -/** - * Call the COmxILContentPipeIf::CreateImplementationL(..) with the Dummy Content Pipe UID. - * Call COmxILContentPipeIf::GetHandle(..), verify the return value is 0. - * Destroy the COmxILContentPipeIf object and verify there isn't any memory leak. - - * Use case: N/A - * @test Req. under test REQ8336 - */ - { - INFO_PRINTF1(_L("Setting UHEAP_MARK")); - __MM_HEAP_MARK; - - TVerdict verdict = EPass; - TInt err; - COmxILContentPipeIf* dummyContentPipeIf = NULL; - OMX_HANDLETYPE contentPipeHandle; - - INFO_PRINTF1(_L("Attempting to Create Content Pipe Interface")); - TRAP(err, dummyContentPipeIf = COmxILContentPipeIf::CreateImplementationL(TUid::Uid(KUidOmxILDummyContentPipe))); - INFO_PRINTF2(_L("Content Pipe Interface Created: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Init Content Pipe")); - err = dummyContentPipeIf->GetHandle(&contentPipeHandle); - INFO_PRINTF2(_L("Content Pipe initialised: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - delete dummyContentPipeIf; - REComSession::FinalClose(); - - INFO_PRINTF1(_L("Setting UHEAP_MARKEND")); - __MM_HEAP_MARKEND; - - return verdict; - } - - -//------------------------------------------------------------------ - -CTestStep_OMXIL_DummyContentPipe_U_0002::CTestStep_OMXIL_DummyContentPipe_U_0002() -/** Constructor -*/ - { - // store the name of this test case - // this is the name that is used by the script file - // Each test step initialises it's own name - iTestStepName = _L("MM-OMXIL-DummyContentPipe-U-0002"); - } - - -TVerdict CTestStep_OMXIL_DummyContentPipe_U_0002::DoTestStepL( void ) -/** -* Call the COmxILContentPipeIf::CreateImplementationL(..) with the Dummy Content Pipe UID. -* Call COmxILContentPipeIf::GetHandle(..), verify the return value is 0. -* Call CP_PIPETYPE::Create(..), verify the return value is 0. -* Call the CP_PIPETYPE::Close(), verify the return value is 0. -* Destroy the COmxILContentPipeIf object and verify there isn't any memory leak. - -* Use case: N/A -* @test Req. under test REQ8336 -*/ - { - INFO_PRINTF1(_L("Setting UHEAP_MARK")); - __MM_HEAP_MARK; - - TVerdict verdict = EPass; - TInt err; - COmxILContentPipeIf* dummyContentPipeIf = NULL; - OMX_HANDLETYPE contentPipeHandle; - CPhandle contentSourceHandle; - - INFO_PRINTF1(_L("Attempting to Create Content Pipe Interface")); - TRAP(err, dummyContentPipeIf = COmxILContentPipeIf::CreateImplementationL(TUid::Uid(KUidOmxILDummyContentPipe))); - INFO_PRINTF2(_L("Content Pipe Interface Created: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Init Content Pipe")); - err = dummyContentPipeIf->GetHandle(&contentPipeHandle); - INFO_PRINTF2(_L("Content Pipe initialised: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Create Content Source")); - err = (reinterpret_cast(contentPipeHandle))->Create(&contentSourceHandle, KTestUri); - INFO_PRINTF2(_L("Content Source created: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Close Content Source")); - err = (reinterpret_cast(contentPipeHandle))->Close(contentSourceHandle); - INFO_PRINTF2(_L("Content Source closed: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - delete dummyContentPipeIf; - REComSession::FinalClose(); - - INFO_PRINTF1(_L("Setting UHEAP_MARKEND")); - __MM_HEAP_MARKEND; - - return verdict; - } - - -//------------------------------------------------------------------ - -CTestStep_OMXIL_DummyContentPipe_U_0003::CTestStep_OMXIL_DummyContentPipe_U_0003() -/** Constructor -*/ - { - // store the name of this test case - // this is the name that is used by the script file - // Each test step initialises it's own name - iTestStepName = _L("MM-OMXIL-DummyContentPipe-U-0003"); - } - - -TVerdict CTestStep_OMXIL_DummyContentPipe_U_0003::DoTestStepL( void ) -/** -* Call the COmxILContentPipeIf::CreateImplementationL(..) with the Dummy Content Pipe UID. -* Call COmxILContentPipeIf::GetHandle(..), verify the return value is 0. -* Call CP_PIPETYPE::Create(..), verify the return value is 0. -* Call CP_PIPETYPE::SetPosition(), verify the return value is 0. -* Call CP_PIPETYPE::GetPosition(), verify the return value is 0. Verify the position has been set correctly -* Call the CP_PIPETYPE::Close(), verify the return value is 0. -* Destroy the COmxILContentPipeIf object and verify there isn't any memory leak. - -* Use case: N/A -* @test Req. under test REQ8336 -*/ - { - INFO_PRINTF1(_L("Setting UHEAP_MARK")); - __MM_HEAP_MARK; - - TVerdict verdict = EPass; - TInt err; - COmxILContentPipeIf* dummyContentPipeIf = NULL; - OMX_HANDLETYPE contentPipeHandle; - CPhandle contentSourceHandle; - - INFO_PRINTF1(_L("Attempting to Create Content Pipe Interface")); - TRAP(err, dummyContentPipeIf = COmxILContentPipeIf::CreateImplementationL(TUid::Uid(KUidOmxILDummyContentPipe))); - INFO_PRINTF2(_L("Content Pipe Interface Created: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Init Content Pipe")); - err = dummyContentPipeIf->GetHandle(&contentPipeHandle); - INFO_PRINTF2(_L("Content Pipe initialised: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Create Content Source")); - err = (reinterpret_cast(contentPipeHandle))->Create(&contentSourceHandle, KTestUri); - INFO_PRINTF2(_L("Content Source created: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Calling SetPosition()")); - err = (reinterpret_cast(contentPipeHandle))->SetPosition(contentSourceHandle, KTestOffset, CP_OriginBegin); - INFO_PRINTF2(_L("SetPosition() called: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Calling GetPosition()...")); - TUint32 pos; - err = (reinterpret_cast(contentPipeHandle))->GetPosition(contentSourceHandle, &pos); - INFO_PRINTF2(_L("GetPosition() called: %d"), err); - if(err != KErrNone || pos != KTestOffset) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Close Content Source")); - err = (reinterpret_cast(contentPipeHandle))->Close(contentSourceHandle); - INFO_PRINTF2(_L("Content Source closed: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - delete dummyContentPipeIf; - REComSession::FinalClose(); - - INFO_PRINTF1(_L("Setting UHEAP_MARKEND")); - __MM_HEAP_MARKEND; - - return verdict; - } - - -//------------------------------------------------------------------ - -CTestStep_OMXIL_DummyContentPipe_U_0004::CTestStep_OMXIL_DummyContentPipe_U_0004() -/** Constructor -*/ - { - // store the name of this test case - // this is the name that is used by the script file - // Each test step initialises it's own name - iTestStepName = _L("MM-OMXIL-DummyContentPipe-U-0004"); - } - - -TVerdict CTestStep_OMXIL_DummyContentPipe_U_0004::DoTestStepL( void ) -/** -* Call the COmxILContentPipeIf::CreateImplementationL(..) with the Dummy Content Pipe 2 UID. -* Call COmxILContentPipeIf::GetHandle(..), verify the return value is 0. -* Call CP_PIPETYPE::Create(..), verify the return value is 0. -* Call CP_PIPETYPE::SetPosition(), verify the return value is 0. -* Call CP_PIPETYPE::GetPosition(), verify the return value is 0. Verify the position has been set correctly -* Call the CP_PIPETYPE::Close(), verify the return value is 0. -* Destroy the COmxILContentPipeIf object and verify there isn't any memory leak. - -* Use case: N/A -* @test Req. under test REQ8336 -*/ - { - INFO_PRINTF1(_L("Setting UHEAP_MARK")); - __MM_HEAP_MARK; - - TVerdict verdict = EPass; - TInt err; - COmxILContentPipeIf* dummyContentPipeIf = NULL; - OMX_HANDLETYPE contentPipeHandle; - CPhandle contentSourceHandle; - - INFO_PRINTF1(_L("Attempting to Create Content Pipe Interface")); - TRAP(err, dummyContentPipeIf = COmxILContentPipeIf::CreateImplementationL(TUid::Uid(KUidOmxILDummyContentPipe2))); - INFO_PRINTF2(_L("Content Pipe Interface Created: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Init Content Pipe")); - err = dummyContentPipeIf->GetHandle(&contentPipeHandle); - INFO_PRINTF2(_L("Content Pipe initialised: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Create Content Source")); - err = (reinterpret_cast(contentPipeHandle))->Create(&contentSourceHandle, KTestUri); - INFO_PRINTF2(_L("Content Source created: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Calling SetPosition()")); - err = (reinterpret_cast(contentPipeHandle))->SetPosition(contentSourceHandle, KTestOffset, CP_OriginBegin); - INFO_PRINTF2(_L("SetPosition() called: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Calling GetPosition()...")); - TUint32 pos; - err = (reinterpret_cast(contentPipeHandle))->GetPosition(contentSourceHandle, &pos); - INFO_PRINTF2(_L("GetPosition() called: %d"), err); - if(err != KErrNone || pos != KTestOffset) - { - verdict = EFail; - } - - INFO_PRINTF1(_L("Attempting to Close Content Source")); - err = (reinterpret_cast(contentPipeHandle))->Close(contentSourceHandle); - INFO_PRINTF2(_L("Content Source closed: %d"), err); - if(err != KErrNone) - { - verdict = EFail; - } - - delete dummyContentPipeIf; - REComSession::FinalClose(); - - INFO_PRINTF1(_L("Setting UHEAP_MARKEND")); - __MM_HEAP_MARKEND; - - return verdict; - } - - -//------------------------------------------------------------------ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/src/tsu_omxil_dummycontentpipe.h --- a/omxil/omxilunittest/contentpipe/src/tsu_omxil_dummycontentpipe.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef TSU_OMXIL_DUMMYCONTENTPIPE_H -#define TSU_OMXIL_DUMMYCONTENTPIPE_H - -#include - -// forward declaring -class CTestSuite_OMXIL_DummyContentPipe; - -class CTestStep_OMXIL_DummyContentPipe: public CTestStep - { -public: - CTestStep_OMXIL_DummyContentPipe(); - ~CTestStep_OMXIL_DummyContentPipe(); - static void CleanUp(TAny *aPtr); - void SetTestSuite(const CTestSuite_OMXIL_DummyContentPipe* aTestSuite ) - {iOMXDummyContentPipeTestSuite = aTestSuite;} - - virtual TVerdict DoTestStepPreambleL(); - virtual TVerdict DoTestStepPostambleL(); -protected: - // pointer to suite which owns this test - const CTestSuite_OMXIL_DummyContentPipe* iOMXDummyContentPipeTestSuite; - }; - -/** - *@class CTestStep_OMXIL_DummyContentPipe_U_0001 - *@test Req. under test REQ8336 - */ -class CTestStep_OMXIL_DummyContentPipe_U_0001 : public CTestStep_OMXIL_DummyContentPipe - { -public: - CTestStep_OMXIL_DummyContentPipe_U_0001() ; - ~CTestStep_OMXIL_DummyContentPipe_U_0001(){} ; - virtual TVerdict DoTestStepL( void ); - }; - -/** - *@class CTestStep_OMXIL_DummyContentPipe_U_0002 - *@test Req. under test REQ8336 - */ -class CTestStep_OMXIL_DummyContentPipe_U_0002 : public CTestStep_OMXIL_DummyContentPipe - { -public: - CTestStep_OMXIL_DummyContentPipe_U_0002() ; - ~CTestStep_OMXIL_DummyContentPipe_U_0002(){} ; - virtual TVerdict DoTestStepL( void ); - }; - -/** - *@class CTestStep_OMXIL_DummyContentPipe_U_0003 - *@test Req. under test REQ8336 - */ -class CTestStep_OMXIL_DummyContentPipe_U_0003 : public CTestStep_OMXIL_DummyContentPipe - { - public: - CTestStep_OMXIL_DummyContentPipe_U_0003() ; - ~CTestStep_OMXIL_DummyContentPipe_U_0003(){} ; - virtual TVerdict DoTestStepL( void ); - }; - -/** - *@class CTestStep_OMXIL_DummyContentPipe_U_0004 - *@test Req. under test REQ8336 - */ -class CTestStep_OMXIL_DummyContentPipe_U_0004 : public CTestStep_OMXIL_DummyContentPipe - { - public: - CTestStep_OMXIL_DummyContentPipe_U_0004() ; - ~CTestStep_OMXIL_DummyContentPipe_U_0004(){} ; - virtual TVerdict DoTestStepL( void ); - }; - -#endif // TSU_OMXIL_DUMMYCONTENTPIPE_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/src/tsu_omxil_dummycontentpipesuite.cpp --- a/omxil/omxilunittest/contentpipe/src/tsu_omxil_dummycontentpipesuite.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// This is the main DLL entry point for the tsu_omxil_dummycontentpipe.dll -// -// - -// EPOC includes -#include - -// Test system includes -#include "tsu_omxil_dummycontentpipesuite.h" -#include "tsu_omxil_dummycontentpipe.h" - - - -/** - * - * Create an instance of this test suite. - * - * NewTestSuiteL is exported at ordinal 1. - * This provides the interface to allow the Test Framework - * to create instances of this test suite. - * - * @return "CTestSuite_OMXIL_DummyContentPipe*" - * The newly created test suite - */ -EXPORT_C CTestSuite_OMXIL_DummyContentPipe* NewTestSuiteL() - { - CTestSuite_OMXIL_DummyContentPipe* result = new (ELeave) CTestSuite_OMXIL_DummyContentPipe; - CleanupStack::PushL(result); - result->ConstructL(); - CleanupStack::Pop(); // result - return result; - } - -CTestSuite_OMXIL_DummyContentPipe::~CTestSuite_OMXIL_DummyContentPipe() - { - } - - -/** - * - * Get test suite version. - * - * @return "TPtrC" - * The version string. - * - * @xxxx - * - */ -_LIT(KTxtVersion,"0.1"); -TPtrC CTestSuite_OMXIL_DummyContentPipe::GetVersion( void ) const - { - - return KTxtVersion(); - } - -/** - * - * Initialiser for test suite. - * This creates all the test steps and stores them - * inside test suite - * - * @xxxx - * - */ -void CTestSuite_OMXIL_DummyContentPipe::InitialiseL( void ) - { - - // store the name of this test suite - iSuiteName = _L("TSU_OMXIL_DUMMYCONTENTPIPE"); - - // add test steps - AddTestStepL( new(ELeave) CTestStep_OMXIL_DummyContentPipe_U_0001 ); - AddTestStepL( new(ELeave) CTestStep_OMXIL_DummyContentPipe_U_0002 ); - AddTestStepL( new(ELeave) CTestStep_OMXIL_DummyContentPipe_U_0003 ); - AddTestStepL( new(ELeave) CTestStep_OMXIL_DummyContentPipe_U_0004 ); - } - - -// ------------------------- diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/contentpipe/src/tsu_omxil_dummycontentpipesuite.h --- a/omxil/omxilunittest/contentpipe/src/tsu_omxil_dummycontentpipesuite.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef TSU_OMXIL_DUMMYCONTENTPIPE_SUITE_H_ -#define TSU_OMXIL_DUMMYCONTENTPIPE_SUITE_H_ - -#include - -/** - * - * CTestSuite, which is the base class for - * the CTestSuite_OMXIL_DummyContentPipe. - * - */ -class CTestSuite_OMXIL_DummyContentPipe : public CTestSuite - { - public: - - void InitialiseL( void ); - virtual ~CTestSuite_OMXIL_DummyContentPipe(); - virtual TPtrC GetVersion( void ) const; - }; - - -#endif /* TSU_OMXIL_DUMMYCONTENTPIPE_SUITE_H_ */ diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/group/bld.inf --- a/omxil/omxilunittest/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../components/group/bld.inf" -#include "../contentpipe/group/bld.inf" -#include "../test_plugins/dummy_components/group/bld.inf" -#include "../test_plugins/dummy_cp/group/bld.inf" -#include "../test_plugins/dummy_cp_2/group/bld.inf" -#include "../test_plugins/dummy_loader/group/bld.inf" \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/group/multimedia_unittest_omx_il.mrp --- a/omxil/omxilunittest/group/multimedia_unittest_omx_il.mrp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -# multimedia_unittest_omx_il.mrp -# -# Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -# All rights reserved. -# This component and the accompanying materials are made available -# under the terms of "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: -# -# Description: -# - -component multimedia_unittest_omx_il - -source \sf\os\mm\omxil\omxilunittest - -notes_source \component_defs\release.src - -ipr T \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_components/group/bld.inf --- a/omxil/omxilunittest/test_plugins/dummy_components/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -PRJ_MMPFILES -../mmpfiles/Core_Conf_Dummy_Component1.mmp -../mmpfiles/Core_Conf_Dummy_Component2.mmp - - -PRJ_EXPORTS -// Romkit include files -omxildummycomponents.iby /epoc32/rom/include/omxildummycomponents.iby diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_components/group/omxildummycomponents.iby --- a/omxil/omxilunittest/test_plugins/dummy_components/group/omxildummycomponents.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYCOMPONENTS_IBY -#define OMXILDUMMYCOMPONENTS_IBY - -// Dummy Components -ECOM_PLUGIN(core_conf_dummy_component1.dll, core_conf_dummy_component1.rsc) -ECOM_PLUGIN(core_conf_dummy_component2.dll, core_conf_dummy_component2.rsc) - -#endif //OMXILDUMMYCOMPONENTS_IBY \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_components/mmpfiles/Core_Conf_Dummy_Component1.mmp --- a/omxil/omxilunittest/test_plugins/dummy_components/mmpfiles/Core_Conf_Dummy_Component1.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/Core_Conf_Dummy_Component.hrh" - -TARGET core_conf_dummy_component1.dll -CAPABILITY ALL -TCB -TARGETTYPE PLUGIN -EPOCALLOWDLLDATA -UID 0x10009D8D KUidCoreDummyTestComponent1Dll -VENDORID 0x70000001 - - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN -OS_LAYER_ESTLIB_SYSTEMINCLUDE - -// Specifics to dummy component for core conf suite -USERINCLUDE ../../../../omxilcoreconftest/generic/inc -SOURCEPATH ../../../../omxilcoreconftest/generic/src -SOURCE Core_Conf_DummyTestComponent.c -SOURCE Core_Conf_TestHarness.c -SOURCE Core_Conf_Tests.c -SOURCEPATH ../../../../omxilcoreconftest/generic/src/tests -SOURCE Core_Conf_CoreInitDeinitTest.c -SOURCE Core_Conf_CompLoadUnloadTest.c -SOURCE Core_Conf_CompNameEnumTest.c -SOURCE Core_Conf_CompRolesTest.c -SOURCE Core_Conf_GetContentPipeTest.c -SOURCE Core_Conf_TunnelSetupTest.c -SOURCE Core_Conf_OSAL_Test.c -SOURCEPATH ../../../../omxilcoreconftest/src -SOURCE Core_Conf_OSAL_Interface.cpp - - -// Porting of dummy component to Symbian OS -SOURCEPATH ../src -SOURCE Core_Conf_Dummy_Component1.cpp -RESOURCE Core_Conf_Dummy_Component1.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY estlib.lib -LIBRARY hal.lib -LIBRARY omxilcoreclient.lib -STATICLIBRARY omxilcomponentif.lib - -NOSTRICTDEF - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_components/mmpfiles/Core_Conf_Dummy_Component2.mmp --- a/omxil/omxilunittest/test_plugins/dummy_components/mmpfiles/Core_Conf_Dummy_Component2.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/Core_Conf_Dummy_Component.hrh" - -TARGET core_conf_dummy_component2.dll -CAPABILITY ALL -TCB -TARGETTYPE PLUGIN -EPOCALLOWDLLDATA -UID 0x10009D8D KUidCoreDummyTestComponent2Dll -VENDORID 0x70000001 - - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN -OS_LAYER_ESTLIB_SYSTEMINCLUDE - -// Specifics to dummy component for core conf suite -USERINCLUDE ../../../../omxilcoreconftest/generic/inc -SOURCEPATH ../../../../omxilcoreconftest/generic/src -SOURCE Core_Conf_DummyTestComponent.c -SOURCE Core_Conf_TestHarness.c -SOURCE Core_Conf_Tests.c -SOURCEPATH ../../../../omxilcoreconftest/generic/src/tests -SOURCE Core_Conf_CoreInitDeinitTest.c -SOURCE Core_Conf_CompLoadUnloadTest.c -SOURCE Core_Conf_CompNameEnumTest.c -SOURCE Core_Conf_CompRolesTest.c -SOURCE Core_Conf_GetContentPipeTest.c -SOURCE Core_Conf_TunnelSetupTest.c -SOURCE Core_Conf_OSAL_Test.c -SOURCEPATH ../../../../omxilcoreconftest/src -SOURCE Core_Conf_OSAL_Interface.cpp - - -// Porting of dummy component to Symbian OS -SOURCEPATH ../src -SOURCE Core_Conf_Dummy_Component2.cpp -RESOURCE Core_Conf_Dummy_Component2.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY estlib.lib -LIBRARY hal.lib -LIBRARY omxilcoreclient.lib -STATICLIBRARY omxilcomponentif.lib - -NOSTRICTDEF - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component.hrh --- a/omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef CORE_CONF_DUMMY_COMPONENT_HRH -#define OMXILPCMRENDERER_HRH - -#define KUidCoreDummyTestComponent1Dll 0x102834CB -#define KUidCoreDummyTestComponent1 0x102834CC - -#define KUidCoreDummyTestComponent2Dll 0x102834CD -#define KUidCoreDummyTestComponent2 0x102834CE - -#endif // CORE_CONF_DUMMY_COMPONENT_HRH diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component1.cpp --- a/omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component1.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// Core_Conf_Dummy_Component1.cpp - -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include "Core_Conf_Dummy_Component.hrh" - -extern "C" OMX_ERRORTYPE TestCompComponentInit(OMX_HANDLETYPE hComponent); - -OMXIL_COMPONENT_ECOM_ENTRYPOINT(KUidCoreDummyTestComponent1); - -OMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE hComponent) - { - return TestCompComponentInit(hComponent); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component1.rss --- a/omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component1.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include -#include "Core_Conf_Dummy_Component.hrh" - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidCoreDummyTestComponent1Dll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUidOmxILSymbianComponentIf; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidCoreDummyTestComponent1; - version_no = 1; - display_name = "OMX.Symbian.testcomp1"; - default_data = "Decoder,Encoder" ; - opaque_data = ""; - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component2.cpp --- a/omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component2.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -// Core_Conf_Dummy_Component2.cpp - -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include "Core_Conf_Dummy_Component.hrh" - -extern "C" OMX_ERRORTYPE TestCompComponentInit(OMX_HANDLETYPE hComponent); - -OMXIL_COMPONENT_ECOM_ENTRYPOINT(KUidCoreDummyTestComponent2); - -OMX_ERRORTYPE OMX_ComponentInit(OMX_HANDLETYPE hComponent) - { - return TestCompComponentInit(hComponent); - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component2.rss --- a/omxil/omxilunittest/test_plugins/dummy_components/src/Core_Conf_Dummy_Component2.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include "Core_Conf_Dummy_Component.hrh" -#include "../../dummy_loader/src/omxildummyloader.hrh" - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidCoreDummyTestComponent2Dll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUidOmxILDummyComponentIf; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidCoreDummyTestComponent2; - version_no = 1; - display_name = "OMX.Symbian.testcomp2"; - default_data = "Encoder,Decoder" ; - opaque_data = ""; - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp/group/bld.inf --- a/omxil/omxilunittest/test_plugins/dummy_cp/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -// Dummy Content Pipe Implementation using the class inheritance approach -PRJ_MMPFILES -../mmpfiles/omxildummycontentpipe.mmp - -// Romkit include files -PRJ_EXPORTS -omxildummycontentpipe.iby /epoc32/rom/include/omxildummycontentpipe.iby \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp/group/omxildummycontentpipe.iby --- a/omxil/omxilunittest/test_plugins/dummy_cp/group/omxildummycontentpipe.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -// -// omxildummycontentpipe.iby - -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYCONTENTPIPE_IBY -#define OMXILDUMMYCONTENTPIPE_IBY - -// OMX IL Dummy Content Pipe -ECOM_PLUGIN(omxildummycontentpipe.dll, omxildummycontentpipe.rsc) - -#endif // OMXILDUMMYCONTENTPIPE_IBY \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp/mmpfiles/omxildummycontentpipe.mmp --- a/omxil/omxilunittest/test_plugins/dummy_cp/mmpfiles/omxildummycontentpipe.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/omxildummycontentpipe.hrh" - -TARGET omxildummycontentpipe.dll -TARGETTYPE PLUGIN -CAPABILITY ALL -TCB - -UID 0x10009D8D KUidOmxILDummyContentPipeDll -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -USERINCLUDE ../src - -SOURCEPATH ../src -SOURCE omxildummycontentpipe.cpp - -RESOURCE omxildummycontentpipe.rss - -LIBRARY euser.lib -LIBRARY ecom.lib - -nostrictdef - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp/src/omxildummycontentpipe.cpp --- a/omxil/omxilunittest/test_plugins/dummy_cp/src/omxildummycontentpipe.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,251 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include - -#include "omxildummycontentpipe.h" -#include "omxildummycontentpipe.hrh" - -// ECOM stuff... -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(KUidOmxILDummyContentPipe, COmxILDummyContentPipe::NewL), - }; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - return ImplementationTable; - } - -COmxILDummyContentPipe* COmxILDummyContentPipe::NewL() - { - return new (ELeave) COmxILDummyContentPipe(); - } - -COmxILDummyContentPipe::COmxILDummyContentPipe() - { - // fill in handle structure - - CP_PIPETYPE::Open = &COmxILDummyContentPipe::Open; - CP_PIPETYPE::Close = &COmxILDummyContentPipe::Close; - CP_PIPETYPE::Create = &COmxILDummyContentPipe::Create; - CP_PIPETYPE::CheckAvailableBytes = &COmxILDummyContentPipe::CheckAvailableBytes; - CP_PIPETYPE::SetPosition = &COmxILDummyContentPipe::SetPosition; - CP_PIPETYPE::GetPosition = &COmxILDummyContentPipe::GetPosition; - CP_PIPETYPE::Read = &COmxILDummyContentPipe::Read; - CP_PIPETYPE::ReadBuffer = &COmxILDummyContentPipe::ReadBuffer; - CP_PIPETYPE::ReleaseReadBuffer = &COmxILDummyContentPipe::ReleaseReadBuffer; - CP_PIPETYPE::Write = &COmxILDummyContentPipe::Write; - CP_PIPETYPE::GetWriteBuffer = &COmxILDummyContentPipe::GetWriteBuffer; - CP_PIPETYPE::WriteBuffer = &COmxILDummyContentPipe::WriteBuffer; - CP_PIPETYPE::RegisterCallback = &COmxILDummyContentPipe::RegisterCallback; - } - -COmxILDummyContentPipe::~COmxILDummyContentPipe() - { - } - -TInt COmxILDummyContentPipe::GetHandle(OMX_HANDLETYPE* aContentPipe) - { - *aContentPipe = static_cast(this); - return KErrNone; - } - -CPresult COmxILDummyContentPipe::Open(CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess) - { - COmxILDummyContentHandle* dummyContentHandle = reinterpret_cast(*hContent); - TInt err = COmxILDummyContentHandle::Open(dummyContentHandle, _L8(szURI), eAccess); - *hContent = dummyContentHandle; - return err; - } - -CPresult COmxILDummyContentPipe::Close(CPhandle hContent) - { - COmxILDummyContentHandle* dummyContentHandle = reinterpret_cast(hContent); - TInt err = dummyContentHandle->Close(); - delete dummyContentHandle; - return err; - } - -CPresult COmxILDummyContentPipe::Create(CPhandle* hContent, CPstring szURI) - { - COmxILDummyContentHandle* dummyContentHandle = reinterpret_cast(*hContent); - TInt err = COmxILDummyContentHandle::Create(dummyContentHandle, _L8(szURI)); - *hContent = dummyContentHandle; - return err; - } - -CPresult COmxILDummyContentPipe::CheckAvailableBytes(CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE* eResult) - { - return reinterpret_cast(hContent)->CheckAvailableBytes(nBytesRequested, eResult); - } - -CPresult COmxILDummyContentPipe::SetPosition(CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin) - { - return reinterpret_cast(hContent)->SetPosition(nOffset, eOrigin); - } - -CPresult COmxILDummyContentPipe::GetPosition(CPhandle hContent, CPuint* pPosition) - { - return reinterpret_cast(hContent)->GetPosition((TUint*)pPosition); - } - -CPresult COmxILDummyContentPipe::Read(CPhandle hContent, CPbyte* pData, CPuint nSize) - { - return reinterpret_cast(hContent)->Read((TUint8*)pData, nSize); - } - -CPresult COmxILDummyContentPipe::ReadBuffer(CPhandle hContent, CPbyte** ppBuffer, CPuint* nSize, CPbool bForbidCopy) - { - return reinterpret_cast(hContent)->ReadBuffer((TUint8**)ppBuffer, (TUint*)nSize, bForbidCopy); - } - -CPresult COmxILDummyContentPipe::ReleaseReadBuffer(CPhandle hContent, CPbyte* pBuffer) - { - return reinterpret_cast(hContent)->ReleaseReadBuffer((TUint8*)pBuffer); - } - -CPresult COmxILDummyContentPipe::Write(CPhandle hContent, CPbyte* data, CPuint nSize) - { - return reinterpret_cast(hContent)->Write((TUint8*)data, nSize); - } - -CPresult COmxILDummyContentPipe::GetWriteBuffer(CPhandle hContent, CPbyte** ppBuffer, CPuint nSize) - { - return reinterpret_cast(hContent)->GetWriteBuffer((TUint8**)ppBuffer, nSize); - } - -CPresult COmxILDummyContentPipe::WriteBuffer(CPhandle hContent, CPbyte* pBuffer, CPuint nFilledSize) - { - return reinterpret_cast(hContent)->WriteBuffer((TUint8*)pBuffer, nFilledSize); - } - -CPresult COmxILDummyContentPipe::RegisterCallback(CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam)) - { - return reinterpret_cast(hContent)->RegisterCallback((TUint (*)(CP_EVENTTYPE, TUint))ClientCallback); - } - -COmxILDummyContentPipe::COmxILDummyContentHandle::COmxILDummyContentHandle() - { - } - -COmxILDummyContentPipe::COmxILDummyContentHandle::~COmxILDummyContentHandle() - { - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::Open(COmxILDummyContentHandle*& aHandle, const TDesC8& /*aUri*/, CP_ACCESSTYPE /*aAccess*/) - { - aHandle = new COmxILDummyContentHandle; - if (aHandle != NULL) - { - return KErrNone; - } - else - { - return KD_ENOMEM; - } - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::Close() - { - return KErrNone; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::Create(COmxILDummyContentHandle*& aHandle, const TDesC8& /*aUri*/) - { - aHandle = new COmxILDummyContentHandle; - if (aHandle != NULL) - { - return KErrNone; - } - else - { - return KD_ENOMEM; - } - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::CheckAvailableBytes(TUint /*aBytesRequested*/, CP_CHECKBYTESRESULTTYPE* /*aResult*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::SetPosition(TInt aOffset, CP_ORIGINTYPE aOrigin) - { - switch(aOrigin) - { - case CP_OriginBegin: - { - if (aOffset < 0) - return KD_EINVAL; - iPosition = aOffset; - break; - } - - case CP_OriginCur: - case CP_OriginEnd: - { - return KD_EINVAL; - } - - default: - { - return KD_EINVAL; - } - } - - return KErrNone; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::GetPosition(TUint* aPosition) - { - *aPosition = iPosition; - return KErrNone; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::Read(TUint8* /*aData*/, TUint /*aSize*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::ReadBuffer(TUint8** /*aBuffer*/, TUint* /*aSize*/, TBool /*aForbidCopy*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::ReleaseReadBuffer(TUint8* /*aBuffer*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::Write(TUint8* /*aData*/, TUint /*aSize*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::GetWriteBuffer(TUint8** /*aBuffer*/, TUint /*aSize*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::WriteBuffer(TUint8* /*aBuffer*/, TUint /*aFilledSize*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe::COmxILDummyContentHandle::RegisterCallback(TUint (* /*ClientCallback*/)(CP_EVENTTYPE aEvent, TUint aParam)) - { - return KD_EINVAL; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp/src/omxildummycontentpipe.h --- a/omxil/omxilunittest/test_plugins/dummy_cp/src/omxildummycontentpipe.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent - @prototype -*/ - -#ifndef OMXILDUMMYCONTENTPIPE_H -#define OMXILDUMMYCONTENTPIPE_H - -#include - -NONSHARABLE_CLASS(COmxILDummyContentPipe) : private COmxILContentPipeIf, private CP_PIPETYPE - { -public: - static COmxILDummyContentPipe* NewL(); - ~COmxILDummyContentPipe(); - - // from COmxILContentPipeIf - TInt GetHandle(OMX_HANDLETYPE* aContentPipe); - - static CPresult Open(CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess); - - static CPresult Close(CPhandle hContent); - - static CPresult Create(CPhandle* hContent, CPstring szURI); - - static CPresult CheckAvailableBytes(CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE* eResult); - - static CPresult SetPosition(CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin); - - static CPresult GetPosition(CPhandle hContent, CPuint* pPosition); - - static CPresult Read(CPhandle hContent, CPbyte* pData, CPuint nSize); - - static CPresult ReadBuffer(CPhandle hContent, CPbyte** ppBuffer, CPuint* nSize, CPbool bForbidCopy); - - static CPresult ReleaseReadBuffer(CPhandle hContent, CPbyte* pBuffer); - - static CPresult Write(CPhandle hContent, CPbyte* data, CPuint nSize); - - static CPresult GetWriteBuffer(CPhandle hContent, CPbyte** ppBuffer, CPuint nSize); - - static CPresult WriteBuffer(CPhandle hContent, CPbyte* pBuffer, CPuint nFilledSize); - - static CPresult RegisterCallback(CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam)); - -private: - COmxILDummyContentPipe(); - - class COmxILDummyContentHandle : public CBase - { - public: - static TInt Open(COmxILDummyContentHandle*& aHandle, const TDesC8& aUri, CP_ACCESSTYPE aAccess); - - TInt Close(); - - static TInt Create(COmxILDummyContentHandle*& aHandle, const TDesC8& aUri); - - TInt CheckAvailableBytes(TUint aBytesRequested, CP_CHECKBYTESRESULTTYPE* aResult); - - TInt SetPosition(TInt aOffset, CP_ORIGINTYPE aOrigin); - - TInt GetPosition(TUint* aPosition); - - TInt Read(TUint8* aData, TUint aSize); - - TInt ReadBuffer(TUint8** aBuffer, TUint* aSize, TBool aForbidCopy); - - TInt ReleaseReadBuffer(TUint8* aBuffer); - - TInt Write(TUint8* aData, TUint aSize); - - TInt GetWriteBuffer(TUint8** aBuffer, TUint aSize); - - TInt WriteBuffer(TUint8* aBuffer, TUint aFilledSize); - - TInt RegisterCallback(TUint (*ClientCallback)(CP_EVENTTYPE aEvent, TUint aParam)); - - ~COmxILDummyContentHandle(); - - private: - COmxILDummyContentHandle(); - - private: - TUint iPosition; - }; - }; - -#endif // OMXILDUMMYCONTENTPIPE_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp/src/omxildummycontentpipe.hrh --- a/omxil/omxilunittest/test_plugins/dummy_cp/src/omxildummycontentpipe.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYCONTENTPIPE_HRH -#define OMXILDUMMYCONTENTPIPE_HRH - -#define KUidOmxILDummyContentPipe 0x102834BB -#define KUidOmxILDummyContentPipeDll 0x102834B9 - -#endif // OMXILDUMMYCONTENTPIPE_HRH - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp/src/omxildummycontentpipe.rss --- a/omxil/omxilunittest/test_plugins/dummy_cp/src/omxildummycontentpipe.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include "omxildummycontentpipe.hrh" -#include - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidOmxILDummyContentPipeDll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUidOmxILContentPipeIf; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidOmxILDummyContentPipe; - version_no = 1; - display_name = "Symbian OpenMax IL Dummy Content Pipe"; // not used - default_data = "rtsp,http" ; // URI-schemes supported by content pipes, - // separated with commas - opaque_data = ""; // not used - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp_2/group/bld.inf --- a/omxil/omxilunittest/test_plugins/dummy_cp_2/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -// Dummy Content Pipe Implementation using the static linking approach -PRJ_MMPFILES -../mmpfiles/omxildummycontentpipe2.mmp - -// Romkit include files -PRJ_EXPORTS -omxildummycontentpipe2.iby /epoc32/rom/include/omxildummycontentpipe2.iby diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp_2/group/omxildummycontentpipe2.iby --- a/omxil/omxilunittest/test_plugins/dummy_cp_2/group/omxildummycontentpipe2.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -// -// omxildummycontentpipe2.iby - -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYCONTENTPIPE2_IBY -#define OMXILDUMMYCONTENTPIPE2_IBY - -// OMX IL Dummy Content Pipe 2 -ECOM_PLUGIN(omxildummycontentpipe2.dll, omxildummycontentpipe2.rsc) - -#endif // OMXILDUMMYCONTENTPIPE2_IBY \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp_2/mmpfiles/omxildummycontentpipe2.mmp --- a/omxil/omxilunittest/test_plugins/dummy_cp_2/mmpfiles/omxildummycontentpipe2.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/omxildummycontentpipe2.hrh" - -TARGET omxildummycontentpipe2.dll -TARGETTYPE PLUGIN -CAPABILITY ALL -TCB - -UID 0x10009D8D KUidOmxILDummyContentPipe2Dll -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -USERINCLUDE ../src - -SOURCEPATH ../src -SOURCE omxildummycontentpipe2.cpp - -RESOURCE omxildummycontentpipe2.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -STATICLIBRARY omxilsymbiancontentpipeif.lib - -nostrictdef - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp_2/src/omxildummycontentpipe2.cpp --- a/omxil/omxilunittest/test_plugins/dummy_cp_2/src/omxildummycontentpipe2.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,250 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include - -#include "omxildummycontentpipe2.h" -#include "omxildummycontentpipe2.hrh" - -OMXIL_CONTENTPIPE_ECOM_ENTRYPOINT(KUidOmxILDummyContentPipe2) - -/* Content Pipe Entry Point */ -TInt ContentPipeInit(OMX_HANDLETYPE* aContentPipe) - { - TRAPD(err, *aContentPipe = COmxILDummyContentPipe2::NewL()); - return err; - } - -/* Content Pipe Exit Point */ -TInt ContentPipeDeInit(OMX_HANDLETYPE aContentPipe) - { - delete static_cast(reinterpret_cast(aContentPipe)); - return KErrNone; - } - - -COmxILDummyContentPipe2* COmxILDummyContentPipe2::NewL() - { - return new (ELeave) COmxILDummyContentPipe2(); - } - -COmxILDummyContentPipe2::COmxILDummyContentPipe2() - { - // fill in handle structure - - CP_PIPETYPE::Open = &COmxILDummyContentPipe2::Open; - CP_PIPETYPE::Close = &COmxILDummyContentPipe2::Close; - CP_PIPETYPE::Create = &COmxILDummyContentPipe2::Create; - CP_PIPETYPE::CheckAvailableBytes = &COmxILDummyContentPipe2::CheckAvailableBytes; - CP_PIPETYPE::SetPosition = &COmxILDummyContentPipe2::SetPosition; - CP_PIPETYPE::GetPosition = &COmxILDummyContentPipe2::GetPosition; - CP_PIPETYPE::Read = &COmxILDummyContentPipe2::Read; - CP_PIPETYPE::ReadBuffer = &COmxILDummyContentPipe2::ReadBuffer; - CP_PIPETYPE::ReleaseReadBuffer = &COmxILDummyContentPipe2::ReleaseReadBuffer; - CP_PIPETYPE::Write = &COmxILDummyContentPipe2::Write; - CP_PIPETYPE::GetWriteBuffer = &COmxILDummyContentPipe2::GetWriteBuffer; - CP_PIPETYPE::WriteBuffer = &COmxILDummyContentPipe2::WriteBuffer; - CP_PIPETYPE::RegisterCallback = &COmxILDummyContentPipe2::RegisterCallback; - } - -COmxILDummyContentPipe2::~COmxILDummyContentPipe2() - { - } - -CPresult COmxILDummyContentPipe2::Open(CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess) - { - COmxILDummyContentHandle* dummyContentHandle = reinterpret_cast(*hContent); - TInt err = COmxILDummyContentHandle::Open(dummyContentHandle, _L8(szURI), eAccess); - *hContent = dummyContentHandle; - return err; - } - -CPresult COmxILDummyContentPipe2::Close(CPhandle hContent) - { - COmxILDummyContentHandle* dummyContentHandle = reinterpret_cast(hContent); - TInt err = dummyContentHandle->Close(); - delete dummyContentHandle; - return err; - } - -CPresult COmxILDummyContentPipe2::Create(CPhandle* hContent, CPstring szURI) - { - COmxILDummyContentHandle* dummyContentHandle = reinterpret_cast(*hContent); - TInt err = COmxILDummyContentHandle::Create(dummyContentHandle, _L8(szURI)); - *hContent = dummyContentHandle; - return err; - } - -CPresult COmxILDummyContentPipe2::CheckAvailableBytes(CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE* eResult) - { - return reinterpret_cast(hContent)->CheckAvailableBytes(nBytesRequested, eResult); - } - -CPresult COmxILDummyContentPipe2::SetPosition(CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin) - { - return reinterpret_cast(hContent)->SetPosition(nOffset, eOrigin); - } - -CPresult COmxILDummyContentPipe2::GetPosition(CPhandle hContent, CPuint* pPosition) - { - return reinterpret_cast(hContent)->GetPosition((TUint*)pPosition); - } - -CPresult COmxILDummyContentPipe2::Read(CPhandle hContent, CPbyte* pData, CPuint nSize) - { - return reinterpret_cast(hContent)->Read((TUint8*)pData, nSize); - } - -CPresult COmxILDummyContentPipe2::ReadBuffer(CPhandle hContent, CPbyte** ppBuffer, CPuint* nSize, CPbool bForbidCopy) - { - return reinterpret_cast(hContent)->ReadBuffer((TUint8**)ppBuffer, (TUint*)nSize, bForbidCopy); - } - -CPresult COmxILDummyContentPipe2::ReleaseReadBuffer(CPhandle hContent, CPbyte* pBuffer) - { - return reinterpret_cast(hContent)->ReleaseReadBuffer((TUint8*)pBuffer); - } - -CPresult COmxILDummyContentPipe2::Write(CPhandle hContent, CPbyte* data, CPuint nSize) - { - return reinterpret_cast(hContent)->Write((TUint8*)data, nSize); - } - -CPresult COmxILDummyContentPipe2::GetWriteBuffer(CPhandle hContent, CPbyte** ppBuffer, CPuint nSize) - { - return reinterpret_cast(hContent)->GetWriteBuffer((TUint8**)ppBuffer, nSize); - } - -CPresult COmxILDummyContentPipe2::WriteBuffer(CPhandle hContent, CPbyte* pBuffer, CPuint nFilledSize) - { - return reinterpret_cast(hContent)->WriteBuffer((TUint8*)pBuffer, nFilledSize); - } - -CPresult COmxILDummyContentPipe2::RegisterCallback(CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam)) - { - return reinterpret_cast(hContent)->RegisterCallback((TUint (*)(CP_EVENTTYPE, TUint))ClientCallback); - } - -COmxILDummyContentPipe2::COmxILDummyContentHandle::COmxILDummyContentHandle() - { - } - -COmxILDummyContentPipe2::COmxILDummyContentHandle::~COmxILDummyContentHandle() - { - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::Open(COmxILDummyContentHandle*& aHandle, const TDesC8& /*aUri*/, CP_ACCESSTYPE /*aAccess*/) - { - aHandle = new COmxILDummyContentHandle; - if (aHandle != NULL) - { - return KErrNone; - } - else - { - return KD_ENOMEM; - } - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::Close() - { - return KErrNone; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::Create(COmxILDummyContentHandle*& aHandle, const TDesC8& /*aUri*/) - { - aHandle = new COmxILDummyContentHandle; - if (aHandle != NULL) - { - return KErrNone; - } - else - { - return KD_ENOMEM; - } - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::CheckAvailableBytes(TUint /*aBytesRequested*/, CP_CHECKBYTESRESULTTYPE* /*aResult*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::SetPosition(TInt aOffset, CP_ORIGINTYPE aOrigin) - { - switch(aOrigin) - { - case CP_OriginBegin: - { - if (aOffset < 0) - return KD_EINVAL; - iPosition = aOffset; - break; - } - - case CP_OriginCur: - case CP_OriginEnd: - { - return KD_EINVAL; - } - - default: - { - return KD_EINVAL; - } - } - - return KErrNone; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::GetPosition(TUint* aPosition) - { - *aPosition = iPosition; - return KErrNone; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::Read(TUint8* /*aData*/, TUint /*aSize*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::ReadBuffer(TUint8** /*aBuffer*/, TUint* /*aSize*/, TBool /*aForbidCopy*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::ReleaseReadBuffer(TUint8* /*aBuffer*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::Write(TUint8* /*aData*/, TUint /*aSize*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::GetWriteBuffer(TUint8** /*aBuffer*/, TUint /*aSize*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::WriteBuffer(TUint8* /*aBuffer*/, TUint /*aFilledSize*/) - { - return KD_EINVAL; - } - -TInt COmxILDummyContentPipe2::COmxILDummyContentHandle::RegisterCallback(TUint (* /*ClientCallback*/)(CP_EVENTTYPE aEvent, TUint aParam)) - { - return KD_EINVAL; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp_2/src/omxildummycontentpipe2.h --- a/omxil/omxilunittest/test_plugins/dummy_cp_2/src/omxildummycontentpipe2.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent - @prototype -*/ - -#ifndef OMXILDUMMYCONTENTPIPE2_H -#define OMXILDUMMYCONTENTPIPE2_H - -#include - -NONSHARABLE_CLASS(COmxILDummyContentPipe2) : public CP_PIPETYPE - { -public: - static COmxILDummyContentPipe2* NewL(); - ~COmxILDummyContentPipe2(); - - static CPresult Open(CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess); - - static CPresult Close(CPhandle hContent); - - static CPresult Create(CPhandle* hContent, CPstring szURI); - - static CPresult CheckAvailableBytes(CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE* eResult); - - static CPresult SetPosition(CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin); - - static CPresult GetPosition(CPhandle hContent, CPuint* pPosition); - - static CPresult Read(CPhandle hContent, CPbyte* pData, CPuint nSize); - - static CPresult ReadBuffer(CPhandle hContent, CPbyte** ppBuffer, CPuint* nSize, CPbool bForbidCopy); - - static CPresult ReleaseReadBuffer(CPhandle hContent, CPbyte* pBuffer); - - static CPresult Write(CPhandle hContent, CPbyte* data, CPuint nSize); - - static CPresult GetWriteBuffer(CPhandle hContent, CPbyte** ppBuffer, CPuint nSize); - - static CPresult WriteBuffer(CPhandle hContent, CPbyte* pBuffer, CPuint nFilledSize); - - static CPresult RegisterCallback(CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam)); - -private: - COmxILDummyContentPipe2(); - - class COmxILDummyContentHandle : public CBase - { - public: - static TInt Open(COmxILDummyContentHandle*& aHandle, const TDesC8& aUri, CP_ACCESSTYPE aAccess); - - TInt Close(); - - static TInt Create(COmxILDummyContentHandle*& aHandle, const TDesC8& aUri); - - TInt CheckAvailableBytes(TUint aBytesRequested, CP_CHECKBYTESRESULTTYPE* aResult); - - TInt SetPosition(TInt aOffset, CP_ORIGINTYPE aOrigin); - - TInt GetPosition(TUint* aPosition); - - TInt Read(TUint8* aData, TUint aSize); - - TInt ReadBuffer(TUint8** aBuffer, TUint* aSize, TBool aForbidCopy); - - TInt ReleaseReadBuffer(TUint8* aBuffer); - - TInt Write(TUint8* aData, TUint aSize); - - TInt GetWriteBuffer(TUint8** aBuffer, TUint aSize); - - TInt WriteBuffer(TUint8* aBuffer, TUint aFilledSize); - - TInt RegisterCallback(TUint (*ClientCallback)(CP_EVENTTYPE aEvent, TUint aParam)); - - ~COmxILDummyContentHandle(); - - private: - COmxILDummyContentHandle(); - - private: - TUint iPosition; - }; - }; - -#endif // OMXILDUMMYCONTENTPIPE2_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp_2/src/omxildummycontentpipe2.hrh --- a/omxil/omxilunittest/test_plugins/dummy_cp_2/src/omxildummycontentpipe2.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYCONTENTPIPE2_HRH -#define OMXILDUMMYCONTENTPIPE2_HRH - -#define KUidOmxILDummyContentPipe2 0x102834C9 -#define KUidOmxILDummyContentPipe2Dll 0x102834C8 - -#endif // OMXILDUMMYCONTENTPIPE2_HRH - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_cp_2/src/omxildummycontentpipe2.rss --- a/omxil/omxilunittest/test_plugins/dummy_cp_2/src/omxildummycontentpipe2.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include "omxildummycontentpipe2.hrh" -#include - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidOmxILDummyContentPipe2Dll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUidOmxILContentPipeIf; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidOmxILDummyContentPipe2; - version_no = 1; - display_name = "Symbian OpenMax IL Dummy Content Pipe"; // not used - default_data = "file" ; // URI-schemes supported by content pipes, - // separated with commas - opaque_data = ""; // not used - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_loader/group/bld.inf --- a/omxil/omxilunittest/test_plugins/dummy_loader/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -// Dummy Loader Implementation using the static linking approach -PRJ_MMPFILES -../mmpfiles/omxildummyloader.mmp - -PRJ_EXPORTS -omxildummyloader.iby /epoc32/rom/include/omxildummyloader.iby diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_loader/group/omxildummyloader.iby --- a/omxil/omxilunittest/test_plugins/dummy_loader/group/omxildummyloader.iby Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -// -// omxildummyloader.iby - -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYLOADER_IBY -#define OMXILDUMMYLOADER_IBY - -// OMX IL Dummy Loader -ECOM_PLUGIN(omxildummyloader.dll, omxildummyloader.rsc) - -#endif // OMXILDUMMYLOADER_IBY \ No newline at end of file diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_loader/mmpfiles/omxildummyloader.mmp --- a/omxil/omxilunittest/test_plugins/dummy_loader/mmpfiles/omxildummyloader.mmp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../src/omxildummyloader.hrh" - -TARGET omxildummyloader.dll -TARGETTYPE PLUGIN -CAPABILITY ALL -TCB - -UID 0x10009D8D KUidOmxILDummyLoaderDll -VENDORID 0x70000001 - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN -OS_LAYER_ESTLIB_SYSTEMINCLUDE - -SOURCEPATH ../src -SOURCE omxildummyloader.cpp -RESOURCE omxildummyloader.rss - -LIBRARY euser.lib -LIBRARY ecom.lib -LIBRARY libc.lib -STATICLIBRARY omxilsymbianloaderif.lib - -SMPSAFE diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_loader/src/omxildummyloader.cpp --- a/omxil/omxilunittest/test_plugins/dummy_loader/src/omxildummyloader.cpp Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,446 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "omxildummyloader.h" -#include "omxildummyloader.hrh" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -OMX_ERRORTYPE OmxInitializeComponentLoader(OMX_LOADERTYPE *loader); -OMX_ERRORTYPE OmxUnInitializeComponentLoader(OMX_LOADERTYPE *loader); -OMX_ERRORTYPE OmxLoadComponent( OMX_LOADERTYPE *loader, - OMX_OUT OMX_HANDLETYPE* pHandle, - OMX_IN OMX_STRING cComponentName, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_CALLBACKTYPE* pCallBacks); -OMX_ERRORTYPE OmxUnloadComponent( OMX_LOADERTYPE *loader, - OMX_HANDLETYPE hComponent); -OMX_ERRORTYPE OmxComponentNameEnum( OMX_LOADERTYPE *loader, - OMX_OUT OMX_STRING cComponentName, - OMX_IN OMX_U32 nNameLength, - OMX_IN OMX_U32 nIndex); -OMX_ERRORTYPE OmxGetRolesOfComponent( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING compName, - OMX_INOUT OMX_U32 *pNumRoles, - OMX_OUT OMX_U8 **roles); -OMX_ERRORTYPE OmxGetComponentsOfRole( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING role, - OMX_INOUT OMX_U32 *pNumComps, - OMX_INOUT OMX_U8 **compNames); - - - -OMX_ERRORTYPE OmxInitializeComponentLoader(OMX_LOADERTYPE *loader) - { - return ((COmxILDummyLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->InitializeComponentLoader(); - } - -OMX_ERRORTYPE OmxUnInitializeComponentLoader(OMX_LOADERTYPE *loader) - { - COmxILDummyLoader* dummyLoader = (COmxILDummyLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate; - OMX_ERRORTYPE error = dummyLoader->UnInitializeComponentLoader(loader); - delete dummyLoader; - dummyLoader = NULL; - return error; - } - -OMX_ERRORTYPE OmxLoadComponent( OMX_LOADERTYPE *loader, - OMX_OUT OMX_HANDLETYPE* pHandle, - OMX_IN OMX_STRING cComponentName, - OMX_IN OMX_PTR pAppData, - OMX_IN OMX_CALLBACKTYPE* pCallBacks) - { - return ((COmxILDummyLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->LoadComponent(pHandle,cComponentName,pAppData,pCallBacks); - } - -OMX_ERRORTYPE OmxUnloadComponent( OMX_LOADERTYPE *loader, - OMX_HANDLETYPE hComponent) - { - return ((COmxILDummyLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->UnloadComponent(hComponent); - } - -OMX_ERRORTYPE OmxComponentNameEnum( OMX_LOADERTYPE *loader, - OMX_OUT OMX_STRING cComponentName, - OMX_IN OMX_U32 nNameLength, - OMX_IN OMX_U32 nIndex) - { - return ((COmxILDummyLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->ComponentNameEnum(cComponentName,nNameLength,nIndex); - } - -OMX_ERRORTYPE OmxGetRolesOfComponent( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING compName, - OMX_INOUT OMX_U32 *pNumRoles, - OMX_OUT OMX_U8 **roles) - { - return ((COmxILDummyLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->GetRolesOfComponent(compName,pNumRoles,roles); - } - -OMX_ERRORTYPE OmxGetComponentsOfRole( OMX_LOADERTYPE *loader, - OMX_IN OMX_STRING role, - OMX_INOUT OMX_U32 *pNumComps, - OMX_INOUT OMX_U8 **compNames) - { - return ((COmxILDummyLoader*)((OMX_LOADERTYPE*)loader)->pLoaderPrivate)->GetComponentsOfRole(role,pNumComps,compNames); - } - -COmxILDummyLoader::operator OMX_HANDLETYPE() - { - return (OMX_HANDLETYPE)&iHandle; - } - - -OMX_ERRORTYPE COmxILDummyLoader::InitializeComponentLoader() - { - RImplInfoPtrArray ecomArray; - TRAPD(error,REComSession::ListImplementationsL(TUid::Uid(KUidOmxILDummyComponentIf),ecomArray)); - if( error != KErrNone ) - { - ecomArray.ResetAndDestroy(); - return OMX_ErrorInsufficientResources; - } - TInt index; - CImplementationInformation* info; - - TOmxComponentInfo component; - - iComponentNameList.Reset(); - - const TInt KEcomArrayCount = ecomArray.Count(); - for( index=0; indexImplementationUid(); - if( info->DisplayName().Length() >= OMX_MAX_STRINGNAME_SIZE || - info->DataType().Length() >= OMX_MAX_ROLESBUFFER_SIZE ) - { - error = KErrBadName; - break; - } - - component.iComponentName.Copy(info->DisplayName()); - component.iRoles.Copy(info->DataType()); - - error = iComponentNameList.Append(component); - if(error) - { - break; - } - } - ecomArray.ResetAndDestroy(); - if( error != KErrNone ) - { - if( error == KErrNoMemory ) - { - return OMX_ErrorInsufficientResources; - } - - return OMX_ErrorUndefined; - } - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxILDummyLoader::UnInitializeComponentLoader(OMX_LOADERTYPE * /*loader*/) - { - iComponentNameList.Reset(); - iComponents.ResetAndDestroy(); - return OMX_ErrorNone; - } - -OMX_ERRORTYPE COmxILDummyLoader::LoadComponent( OMX_HANDLETYPE* pHandle, - OMX_STRING cComponentName, - OMX_PTR pAppData, - OMX_CALLBACKTYPE* pCallBacks) - { - TInt index; - TPtrC8 lComponentName(reinterpret_cast(cComponentName), strlen(cComponentName)); - COmxILComponentIf* component = NULL; - OMX_ERRORTYPE error = OMX_ErrorComponentNotFound; - - const TInt KComponentNameListCount = iComponentNameList.Count(); - for( index = 0; index < KComponentNameListCount; ++index ) - { - TOmxComponentInfo& comp = iComponentNameList[index]; - if( comp.iComponentName.CompareF(lComponentName) == 0 ) - { - TRAPD(err, component = COmxILComponentIf::CreateImplementationL(iComponentNameList[index].iUid)); - if( err != KErrNone ) - { - if ( err == KErrNoMemory ) - { - return OMX_ErrorInsufficientResources; - } - else - { - return OMX_ErrorInvalidComponent; - } - } - - *pHandle = component->Handle(); - if( !*pHandle ) - { - return OMX_ErrorInvalidComponent; - } - - error = (static_cast(*pHandle))->SetCallbacks(*pHandle, pCallBacks, pAppData); - if(error != OMX_ErrorNone) - { - (static_cast(*pHandle))->ComponentDeInit(*pHandle); - delete component; - return error; - } - if( iComponents.Append(component) != KErrNone ) - { - (static_cast(*pHandle))->ComponentDeInit(*pHandle); - delete component; - return OMX_ErrorInsufficientResources; - } - return error; - } - } - return error; - } - -OMX_ERRORTYPE COmxILDummyLoader::UnloadComponent( OMX_HANDLETYPE hComponent) - { - TInt index; - COmxILComponentIf* component; - - const TInt KComponentsCount = iComponents.Count(); - for( index = 0; index < KComponentsCount; ++index ) - { - component = iComponents[index]; - if( component->Handle() == hComponent ) - { - (static_cast(hComponent))->ComponentDeInit( hComponent ); - delete component; - iComponents.Remove(index); - return OMX_ErrorNone; - } - } - return OMX_ErrorComponentNotFound; - } - -OMX_ERRORTYPE COmxILDummyLoader::ComponentNameEnum( OMX_STRING aComponentName, - OMX_U32 aNameLength, - OMX_U32 aIndex) - { - if( !aComponentName ) - { - return OMX_ErrorBadParameter; - } - - const TInt KIndexForPopulateList = 0; - if ( aIndex == KIndexForPopulateList ) - { - RImplInfoPtrArray ecomArray; - TRAPD(error, REComSession::ListImplementationsL(TUid::Uid(KUidOmxILDummyComponentIf), ecomArray)); - if (error != KErrNone) - { - return OMX_ErrorUndefined; - } - TInt index; - iComponentNameList.Reset(); - - const TInt KEcomArrayCount = ecomArray.Count(); - // Create Controller Implementation Information for each entry - for (index=0; index= OMX_MAX_STRINGNAME_SIZE || - info.DataType().Length() >= OMX_MAX_ROLESBUFFER_SIZE ) - { - error = KErrBadName; - break; - } - component.iComponentName.Copy(info.DisplayName()); - component.iRoles.Copy(info.DataType()); - error = iComponentNameList.Append(component); - if( error != KErrNone ) - { - break; - } - } - ecomArray.ResetAndDestroy(); - if( error != KErrNone ) - { - return OMX_ErrorUndefined; - } - } - if (aIndex(compName), strlen(compName)); - - if( !pNumRoles || !compName ) - { - return OMX_ErrorBadParameter; - } - - OMX_ERRORTYPE error = OMX_ErrorInvalidComponentName; - const TInt KComponentNameListCount = iComponentNameList.Count(); - for( index = 0, roleindex = 0; index < KComponentNameListCount; ++index ) - { - if( iComponentNameList[index].iComponentName.Compare(tComponentName) == 0 ) - { - char parser[OMX_MAX_ROLESBUFFER_SIZE], *p; - size_t size; - TInt i, j; - - size = iComponentNameList[index].iRoles.Length(); - - strncpy(parser, - reinterpret_cast(const_cast(iComponentNameList[index].iRoles.Ptr())), - size); - parser[size]=0; - - for( i=0, j=0, p=parser; i(role), strlen(role)); - - if( !pNumComps ) - { - return OMX_ErrorBadParameter; - } - - TInt KComponentNameListCount = iComponentNameList.Count(); - for( index = 0, compindex = 0; index < KComponentNameListCount; ++index ) - { - if( iComponentNameList[index].iRoles.Find(lRole) != KErrNotFound ) - { - if( compNames != NULL ) - { - if( compNames[compindex]!= NULL ) - { - strncpy((char*)compNames[compindex],(char*)iComponentNameList[index].iComponentName.Ptr(),iComponentNameList[index].iComponentName.Length()); - compNames[compindex][iComponentNameList[index].iComponentName.Size()]=0; - } - else - { - return OMX_ErrorBadParameter; - } - } - ++compindex; - } - } - *pNumComps = compindex; - return OMX_ErrorNone; - } - -OMX_HANDLETYPE COmxILDummyLoader::Handle() - { - return iHandle; - } - -COmxILDummyLoader::COmxILDummyLoader(OMX_HANDLETYPE hComponent) - { - iHandle = static_cast(hComponent); - - iHandle->InitializeComponentLoader = &::OmxInitializeComponentLoader; - iHandle->UnInitializeComponentLoader = &::OmxUnInitializeComponentLoader; - iHandle->LoadComponent = &::OmxLoadComponent; - iHandle->UnloadComponent = &::OmxUnloadComponent; - iHandle->ComponentNameEnum = &::OmxComponentNameEnum; - iHandle->GetRolesOfComponent = &::OmxGetRolesOfComponent; - iHandle->GetComponentsOfRole = &::OmxGetComponentsOfRole; - - iHandle->pLoaderPrivate = this; - } - -COmxILDummyLoader::~COmxILDummyLoader() - { - } - -void COmxILDummyLoader::ConstructL() - { - } - - -// ECOM -OMX_LOADER_ECOM_ENTRYPOINT(KUidOmxILDummyLoader) - -/* Content Pipe Entry Point */ -OMX_ERRORTYPE OMX_LoaderSetup(OMX_HANDLETYPE aLoader) - { - COmxILDummyLoader* self = new COmxILDummyLoader(aLoader); - if( self == NULL ) - { - return OMX_ErrorInsufficientResources; - } - return OMX_ErrorNone; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_loader/src/omxildummyloader.h --- a/omxil/omxilunittest/test_plugins/dummy_loader/src/omxildummyloader.h Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,84 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -/** - @file - @internalComponent - @prototype -*/ - -#ifndef OMXILDUMMYLOADER_H -#define OMXILDUMMYLOADER_H - -#include -#include -#include -#include - -class COmxILDummyLoader : public CBase - { -public: - class TOmxComponentInfo - { - public: - TOmxComponentInfo(); - public: - TUid iUid; - TBuf8 iComponentName; - TBuf8 iRoles; - }; - -public: - OMX_HANDLETYPE Handle(); - - COmxILDummyLoader(OMX_HANDLETYPE aLoader); - ~COmxILDummyLoader(); - - OMX_ERRORTYPE InitializeComponentLoader(); - OMX_ERRORTYPE UnInitializeComponentLoader(OMX_LOADERTYPE* loader); - OMX_ERRORTYPE LoadComponent( OMX_HANDLETYPE* pHandle, - const OMX_STRING cComponentName, - OMX_PTR pAppData, - OMX_CALLBACKTYPE* pCallBacks ); - OMX_ERRORTYPE UnloadComponent( OMX_HANDLETYPE hComponent ); - OMX_ERRORTYPE ComponentNameEnum( OMX_STRING cComponentName, - OMX_U32 nNameLength, - const OMX_U32 nIndex ); - OMX_ERRORTYPE GetRolesOfComponent( const OMX_STRING compName, - OMX_U32* pNumRoles, - OMX_U8** roles ); - OMX_ERRORTYPE GetComponentsOfRole( const OMX_STRING role, - OMX_U32* pNumComps, - OMX_U8** compNames ); - - operator OMX_HANDLETYPE(); - -private: - void ConstructL(); - -private: - OMX_LOADERTYPE* iHandle; - - RArray iComponentNameList; - RPointerArray iComponents; - }; - -inline COmxILDummyLoader::TOmxComponentInfo::TOmxComponentInfo(): - iUid(TUid::Uid(0)),iComponentName(0),iRoles(0) - { - } - - -#endif // OMXILDUMMYLOADER_H diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_loader/src/omxildummyloader.hrh --- a/omxil/omxilunittest/test_plugins/dummy_loader/src/omxildummyloader.hrh Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#ifndef OMXILDUMMYLOADER_HRH -#define OMXILDUMMYLOADER_HRH - -#define KUidOmxILDummyLoader 0x10285C05 -#define KUidOmxILDummyLoaderDll 0x10285C06 -#define KUidOmxILDummyComponentIf 0x10285CC0 - -#endif // OMXILDUMMYLOADER_HRH - diff -r 481b3bce574a -r b6488ac24ddc omxil/omxilunittest/test_plugins/dummy_loader/src/omxildummyloader.rss --- a/omxil/omxilunittest/test_plugins/dummy_loader/src/omxildummyloader.rss Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include -#include "omxildummyloader.hrh" -#include - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = KUidOmxILDummyLoaderDll; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUidOmxILLoaderInterface; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KUidOmxILDummyLoader; - version_no = 1; - display_name = ""; // not used - default_data = "" ; // URI-schemes supported by content pipes, - opaque_data = ""; // not used - } - }; - } - }; - } diff -r 481b3bce574a -r b6488ac24ddc omxil/openmax/il/group/bld.inf --- a/omxil/openmax/il/group/bld.inf Mon Aug 23 21:48:44 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of "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: -// -// Description: -// - -#include "../../../omxilapi/group/bld.inf" -#include "../../../omxilcore/group/bld.inf" -#include "../../../omxilcomponentcommon/group/bld.inf" -#include "../../../omxilrefcomps/ref_components/group/bld.inf" diff -r 481b3bce574a -r b6488ac24ddc package_definition.xml --- a/package_definition.xml Mon Aug 23 21:48:44 2010 +0100 +++ b/package_definition.xml Wed Sep 08 17:15:23 2010 +0100 @@ -471,29 +471,6 @@ - - - - - - - - - - - - - - - - - - - - - - -