# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1273843274 -10800 # Node ID cbb1bfb7ebfb59ef5b85a9afba9e0a006cb45bd9 # Parent d881023c13eb0f8e14d0572fadfb01ffcbf8fceb Revision: 201017 Kit: 201019 diff -r d881023c13eb -r cbb1bfb7ebfb layers.sysdef.xml --- a/layers.sysdef.xml Mon May 03 12:58:40 2010 +0300 +++ b/layers.sysdef.xml Fri May 14 16:21:14 2010 +0300 @@ -10,6 +10,7 @@ + @@ -29,6 +30,7 @@ + diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/asxparser/group/asxparser.mmp --- a/mmappcomponents/asxparser/group/asxparser.mmp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/asxparser/group/asxparser.mmp Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 9.1.4 % +// Version : %version: 9.1.5 % #include diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/asxparser/inc/AsxParser_debug.h --- a/mmappcomponents/asxparser/inc/AsxParser_debug.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/asxparser/inc/AsxParser_debug.h Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 4.1.3 % +// Version : %version: 4.1.4 % #ifndef __MP_DEBUG_H__ diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/asxparser/src/asxparser.cpp --- a/mmappcomponents/asxparser/src/asxparser.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/asxparser/src/asxparser.cpp Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 10.1.5.1.1 % +// Version : %version: 10.1.5.1.2 % diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/asxparser/test/test.cpp --- a/mmappcomponents/asxparser/test/test.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/asxparser/test/test.cpp Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 8 % +// Version : %version: 9 % #include #include diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/asxparser/test/test.mmp --- a/mmappcomponents/asxparser/test/test.mmp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/asxparser/test/test.mmp Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 11 % +// Version : %version: 12 % diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp --- a/mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp Fri May 14 16:21:14 2010 +0300 @@ -196,7 +196,7 @@ case EAknSoftkeySelect : { TInt index = CurrentItemListIndex(); - TBuf<128> fileName; + TFileName fileName; iFileHandler->GetAttribute( index, CAudioFetcherFileHandler::EAttrFullName, fileName, 0 ); iSelectedFiles.AppendL( fileName ); @@ -928,7 +928,7 @@ TBool closeDialog = EFalse; TInt index = CurrentItemListIndex(); - TBuf<128> fileName; + TFileName fileName; iFileHandler->GetAttribute( index, CAudioFetcherFileHandler::EAttrFullName, fileName, 0 ); iSelectedFiles.AppendL( fileName ); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/collectionhelper/src/mpxcollectioncachedhelper.cpp --- a/mmappcomponents/collectionhelper/src/mpxcollectioncachedhelper.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/collectionhelper/src/mpxcollectioncachedhelper.cpp Fri May 14 16:21:14 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: Extended collection helper with an internal caching array -* Version : %version: da1mmcf#27.1.12.3.1 % +* Version : %version: da1mmcf#27.1.12.3.2 % * */ diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp --- a/mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp Fri May 14 16:21:14 2010 +0300 @@ -407,7 +407,7 @@ MPX_FUNC("CMPXCollectionHelperImp::RenameL"); MPX_DEBUG3("aOldUri = %S, aNewUri = %S", &aOldUri, &aNewUri); - if (aItemCat != EMPXSong && aItemCat != EMPXPlaylist) + if (aItemCat != EMPXSong && aItemCat != EMPXPlaylist && aItemCat != EMPXAbstractAlbum) { User::Leave(KErrArgument); } diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/group/mpxfilehandler.mmp --- a/mmappcomponents/harvester/filehandler/group/mpxfilehandler.mmp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/group/mpxfilehandler.mmp Fri May 14 16:21:14 2010 +0300 @@ -69,9 +69,7 @@ LIBRARY mpxmetadataextractor.lib LIBRARY caf.lib LIBRARY DrmServerInterfaces.lib -#ifdef RD_MULTIPLE_DRIVE LIBRARY PlatformEnv.lib -#endif //RD_MULTIPLE_DRIVE #if defined(ARMCC) deffile ../eabi/ diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/inc/mpxharvesterdbmanager.h --- a/mmappcomponents/harvester/filehandler/inc/mpxharvesterdbmanager.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/inc/mpxharvesterdbmanager.h Fri May 14 16:21:14 2010 +0300 @@ -54,8 +54,7 @@ TInt OpenAllDatabasesL(); /** - * Reopen a particular database - * (For MMC events) + * Open a particular database * @param TDriveNumber aDrive */ void OpenDatabaseL( TDriveNumber aDrive ); @@ -63,26 +62,38 @@ /** * Close all databases */ - void CloseAllDatabase(); + void CloseAllDatabases(); + + /** + * Close all databases on mass storage drives + */ + void CloseMassStorageDatabases(); /** * Close a particular DB - * (For MMC events) * @param TDriveNumber the Drive */ void CloseDatabase( TDriveNumber aDrive ); + /** * Get a particular database * @param TDriveNumber the Drive */ CMPXHarvesterDB& GetDatabaseL( TDriveNumber aDrive ); - + + /** + * Abruptly close a particular DB without trying to access it + * To be used when drive is no more accessible + * @param TDriveNumber the Drive + */ + void DropDatabase( TDriveNumber aDrive ); + /** - * Remove a particular database from the array - * @param TDriveNumber the Drive + * Return whether database is open on the specified drive */ - void RemoveDatabaseL( TDriveNumber aDrive ); + TBool DatabaseIsOpen( TDriveNumber aDrive ); + /** * Return the number of databases @@ -152,6 +163,18 @@ #endif //__RAMDISK_PERF_ENABLE private: // new functions + + /** + * Find database index in the internal table + * Return KErrNotFound if not found + */ + TInt FindDatabaseIndex ( TDriveNumber aDrive ); + + /** + * Return whether drive exists and is local + */ + TBool IsLocalDrive( TDriveNumber aDrive ); + #ifdef __RAMDISK_PERF_ENABLE /** @@ -174,7 +197,7 @@ /** * Copy database from RAM disk */ - void DoCopyDBFromRamL(TDriveUnit aDriveUnit); + TInt DoCopyDBFromRam(TDriveUnit aDriveUnit); /** * To block a disk space so that it can gurantee for a write back from RAM disk @@ -193,9 +216,9 @@ /** * Remove dummy file * - * @return TInt index to the database handler + * @param aDrive Drive */ - void RemoveDummyFile( TInt aIndex ); + void RemoveDummyFile( TDriveNumber aDrive ); /** * Update the database from ram drive. diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/inc/mpxharvesterfilehandlerimp.h --- a/mmappcomponents/harvester/filehandler/inc/mpxharvesterfilehandlerimp.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/inc/mpxharvesterfilehandlerimp.h Fri May 14 16:21:14 2010 +0300 @@ -274,6 +274,13 @@ * for a list of folders to automatically scan */ void ParseAutoScanL(); + + /** + * Refreshes scan drives so that non-existing + * drives are not scanned. + * Used add back drives that were take out because of dismount + */ + void RefreshScanDrivesL(); /*** * Resets the current scan directory and frees memory @@ -350,13 +357,6 @@ */ RPointerArray* GetDrmFilesL(); - /** - * Verifies if aDrive is ready. - * @param aDrive, certain drive name, such as EDRIVEE - * @return TBool ETrue if aDrive is ready,otherwise EFalse - */ - TBool IsDriveReady( TDriveNumber aDrive ); - public: /** @@ -392,13 +392,12 @@ RPointerArray iFolderMonitors; // Multiple drives RPointerArray iSupportedTypes; CDesCArray* iContainerTypes; + RArray iConfiguredDrivesToScan; RArray iDrivesToScan; RArray iFilteredDrivesToScan; RArray iPathsToBlock; TBool iOutOfDisk; -#ifdef RD_MULTIPLE_DRIVE - TInt iRemovedDrive; -#endif // RD_MULTIPLE_DRIVE + TBool iFilteredOutOfDisk; // Metadata related CMPXMetadataScanner* iMetadataScanner; diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/inc/mpxmetadatascanner.h --- a/mmappcomponents/harvester/filehandler/inc/mpxmetadatascanner.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/inc/mpxmetadatascanner.h Fri May 14 16:21:14 2010 +0300 @@ -20,6 +20,7 @@ #define CMPXMETADATASCANNER_H #include +#include class CMPXMedia; class CMPXMediaArray; @@ -33,7 +34,8 @@ ENewFiles = 0, EModFiles = 1, EMaxFile = 2 - }; + }; + /** * CMPXMetadataScanner * @@ -42,7 +44,8 @@ * @lib mpxfilehandler.lib * @since S60 3.0 */ -NONSHARABLE_CLASS( CMPXMetadataScanner ): public CActive +NONSHARABLE_CLASS( CMPXMetadataScanner ): public CActive, + public MMPXMetadataExtractorObserver { public: @@ -128,15 +131,43 @@ * From CActive */ void RunL(); + + /** + * From MMPXMetadataExtractorObserver + */ + void HandleCreateMediaComplete( CMPXMedia* aMedia, TInt aError ); private: // New Functions /** * Extract metadata from a few files - * @return ETrue if there are no more files to extract - * EFalse otherwise */ - TBool DoExtractL(); + void DoExtractL(); + + /** + * Get source array + */ + RPointerArray* GetSource(); + + /** + * Is metadata scanner done + */ + TBool IsDone(); + + /** + * Run again + */ + void RunAgain(); + + /** + * Add metadata to collection + */ + void AddToCollectionL(); + + /** + * Complete metadata scanner + */ + void MetadataScannerComplete( TInt aError ); private: @@ -160,8 +191,7 @@ RPointerArray iNewFiles; RPointerArray iModifiedFiles; - CMPXMediaArray* iNewFileProps; - CMPXMediaArray* iModifiedFileProps; + CMPXMediaArray* iTargetProps; TBool iExtracting; // Are we extracting TInt iExtractType; // What are we extracting @@ -170,7 +200,7 @@ CMPXMetadataExtractor* iExtractor; // Metadata Utilities wrapper MMPXMetadataScanObserver& iObserver; - MMPXFileScanStateObserver& iStateObserver; + MMPXFileScanStateObserver& iStateObserver; }; #endif // CMPXMETADATASCANNER_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/src/mpxfoldermonitor.cpp --- a/mmappcomponents/harvester/filehandler/src/mpxfoldermonitor.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/src/mpxfoldermonitor.cpp Fri May 14 16:21:14 2010 +0300 @@ -17,22 +17,15 @@ #include -#ifdef RD_MULTIPLE_DRIVE #include #include -#endif //RD_MULTIPLE_DRIVE #include #include "mpxfoldermonitor.h" #include "mpxfileadditionobserver.h" #include "mpxfoldermonitorobserver.h" // CONSTANTS -#ifdef RD_MULTIPLE_DRIVE _LIT( KMPXMusicPath, "\\Music\\"); -#else -_LIT( KMPXMusicPath, "\\Music\\"); -_LIT( KMPXDataPath, "\\Data\\"); -#endif //RD_MULTIPLE_DRIVE // --------------------------------------------------------------------------- @@ -94,7 +87,6 @@ delete iFolderName; iFolderName = NULL; -#ifdef RD_MULTIPLE_DRIVE switch( aDrive ) { case EDriveC: @@ -135,46 +127,6 @@ } } MPX_DEBUG2("CMPXFolderMonitor::Start: Use %S path", iFolderName); -#else - switch( aDrive ) - { - case EDriveC: - { - TDriveName driveName = TDriveUnit( aDrive ).Name(); - TInt length = KMPXDataPath().Length() + driveName.Length(); - - iFolderName = HBufC::NewL(length); - - TPtr folderPtr( iFolderName->Des() ); - folderPtr.Append( driveName ); - folderPtr.Append( KMPXDataPath ); - - break; - } - case EDriveE: - // deliberate fall through, same actions for E & F drive - - case EDriveF: - { - - TDriveName driveName = TDriveUnit( aDrive ).Name(); - TInt length = KMPXMusicPath().Length() + driveName.Length(); - - iFolderName = HBufC::NewL(length); - - TPtr folderPtr( iFolderName->Des() ); - folderPtr.Append( driveName ); - folderPtr.Append( KMPXMusicPath ); - - break; - } - - default: - { - User::Leave( KErrNotSupported ); - } - } -#endif // RD_MULTIPLE_DRIVE // Start listening // diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/src/mpxfolderscanner.cpp --- a/mmappcomponents/harvester/filehandler/src/mpxfolderscanner.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/src/mpxfolderscanner.cpp Fri May 14 16:21:14 2010 +0300 @@ -244,9 +244,9 @@ TInt err(KErrNone); do { - MPX_DEBUG1("CMPXFolderScanner::SetupNextDriveToScanL iDirScan->NexL()"); + MPX_DEBUG1("CMPXFolderScanner::SetupNextDriveToScanL iDirScan->NextL()"); TRAP(err, iDirScan->NextL(iDir)); - MPX_DEBUG1("CMPXFolderScanner::SetupNextDriveToScanL path blocked?"); + MPX_DEBUG2("CMPXFolderScanner::SetupNextDriveToScanL path %S", &iDirScan->FullPath()); blocked = iObserver.IsPathBlockedL( iDirScan->FullPath() ); MPX_DEBUG2("CMPXFolderScanner::SetupNextDriveToScanL path blocked %i", blocked); if( blocked ) diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp --- a/mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp Fri May 14 16:21:14 2010 +0300 @@ -79,11 +79,12 @@ // TInt CMPXHarvesterDB::OpenL() { - MPX_FUNC("CMPXHarvesterDB::OpenL"); + MPX_DEBUG1("-->CMPXHarvesterDB::OpenL"); // There is no need to re-open if it was already open if( iDBOpen ) { + MPX_DEBUG1("<--CMPXHarvesterDB::OpenL rtn=0 (already open)"); return KErrNone; } @@ -131,6 +132,7 @@ if( idErr != KErrNone ) { // Delete the database because this is not readable + MPX_DEBUG2("CMPXHarvesterDB::OpenL -- Deleting unreadable DB %i", idErr); Close(); User::LeaveIfError(DeleteDatabase()); rtn = KErrCorrupt; @@ -144,7 +146,8 @@ User::LeaveIfError(DeleteDatabase()); rtn = OpenL(); } - + + MPX_DEBUG2("<--CMPXHarvesterDB::OpenL rtn=%d", rtn); return rtn; } @@ -294,6 +297,7 @@ TRAPD(err, iDatabase->OpenL( iStore, iStore->Root() ) ); if( err != KErrNone ) { + MPX_DEBUG2("CMPXHarvesterDB::OpenDBL RDbStoreDatabase::OpenL error %d", err); delete iDatabase; iDatabase = NULL; CreateDBL(); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp --- a/mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp Fri May 14 16:21:14 2010 +0300 @@ -17,10 +17,8 @@ #include -#ifdef RD_MULTIPLE_DRIVE #include #include -#endif //RD_MULTIPLE_DRIVE #ifdef __RAMDISK_PERF_ENABLE #include @@ -129,7 +127,7 @@ TInt count(iDatabases.Count()); for (TInt i = 0; i < count; ++i) { - RemoveDummyFile(i); + RemoveDummyFile(iDatabases[i]->GetDbDrive()); } #endif // __RAMDISK_PERF_ENABLE iDatabases.ResetAndDestroy(); @@ -149,25 +147,20 @@ // Open drives we are interested in. // -#ifdef RD_MULTIPLE_DRIVE TDriveList driveList; TInt driveCount(0); User::LeaveIfError( DriveInfo::GetUserVisibleDrives( iFs, driveList, driveCount ) ); - TInt check(KErrNone); for( TInt driveNum = EDriveA; driveNum <= EDriveZ; driveNum++ ) { - if (driveList[driveNum] && !IsRemoteDrive(static_cast(driveNum))) + if (driveList[driveNum] && IsLocalDrive(static_cast(driveNum))) { - TFileName drivePath; - User::LeaveIfError( - PathInfo::GetRootPath( drivePath, driveNum ) ); - MPX_DEBUG2("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: opening database in %S drive", - &drivePath); - TRAP( check, GetDatabaseL(static_cast(driveNum)) ); - if( check == KErrNotFound ) + MPX_DEBUG2("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: opening database in drive %d", driveNum); + TInt index = FindDatabaseIndex ( (TDriveNumber) driveNum ); + if ( index == KErrNotFound ) { + MPX_DEBUG1("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: re-creating database"); CMPXHarvesterDB* dB = CMPXHarvesterDB::NewL( static_cast(driveNum), iFs ); CleanupStack::PushL( dB ); @@ -179,64 +172,23 @@ } else { + MPX_DEBUG2("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: opening failed, error=%d, removing database", openError); CleanupStack::PopAndDestroy( dB ); } } - else if( check == KErrNone ) + else { - TRAPD(openError, GetDatabaseL(static_cast(driveNum)).OpenL() ); + CMPXHarvesterDB* dB = iDatabases[index]; + TRAPD(openError, rtn |= dB->OpenL() ); //lint !e665 if(openError != KErrNone) { - TRAP_IGNORE( RemoveDatabaseL(static_cast(driveNum))); + MPX_DEBUG2("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: opening failed, error=%d, removing database", openError); + iDatabases.Remove ( index ); + delete dB; } } } } -#else - TInt check(KErrNone); - TRAP( check, GetDatabaseL(EDriveC) ); - if( check == KErrNotFound ) - { - CMPXHarvesterDB* dB = CMPXHarvesterDB::NewL( EDriveC, iFs ); - CleanupStack::PushL( dB ); - iDatabases.AppendL( dB ); - CleanupStack::Pop( dB ); - TRAP_IGNORE( rtn = dB->OpenL() ); //lint !e665 - } - else if( check == KErrNone ) - { - TRAPD(openError, GetDatabaseL(EDriveC).OpenL() ); - if(openError != KErrNone) - { - TRAP_IGNORE( RemoveDatabaseL(EDriveC)); - } - } - TRAP( check, GetDatabaseL(EDriveE) ); //lint !e961 - if( check == KErrNotFound ) - { - CMPXHarvesterDB* dB = CMPXHarvesterDB::NewL( EDriveE, iFs ); - CleanupStack::PushL( dB ); - TRAPD(openError, rtn |= dB->OpenL() ); //lint !e665 - if(openError == KErrNone) - { - iDatabases.AppendL( dB ); - CleanupStack::Pop( dB ); - } - else - { - CleanupStack::PopAndDestroy( dB ); - } - } - else if( check == KErrNone ) - { - TRAPD(openError,GetDatabaseL(EDriveE).OpenL() ); - if(openError != KErrNone) - { - TRAP_IGNORE( RemoveDatabaseL(EDriveE)); - } - } -#endif // RD_MULTIPLE_DRIVE - MPX_DEBUG1("CMPXHarvesterDatabaseManager::OpenAllDatabasesL --->"); //lint !e961 return rtn; } @@ -247,57 +199,172 @@ // void CMPXHarvesterDatabaseManager::OpenDatabaseL( TDriveNumber aDrive ) { - MPX_DEBUG1("CMPXHarvesterDatabaseManager::OpenDatabaseL <---"); + MPX_DEBUG2("CMPXHarvesterDatabaseManager::OpenDatabaseL %d <---", aDrive); - // Re-open a specific database - // - if (!IsRemoteDrive(aDrive)) + if ( ! IsLocalDrive( aDrive ) ) + { + MPX_DEBUG1("CMPXHarvesterDatabaseManager::OpenDatabaseL drive not available -->"); + return; + } + + CMPXHarvesterDB * db = NULL; + TInt index = FindDatabaseIndex ( aDrive ); + if ( index == KErrNotFound ) { - TInt count( iDatabases.Count() ); - for( TInt i=0; iGetDbDrive() == aDrive ) - { - db->OpenL(); - break; - } - } + db = CMPXHarvesterDB::NewL( aDrive, iFs ); + CleanupStack::PushL( db ); + iDatabases.AppendL( db ); + CleanupStack::Pop( db ); + } + else + { + db = iDatabases[index]; + } + + // TRAPD(openError, rtn |= dB->OpenL() ); //lint !e665 + TRAPD( openError, db->OpenL() ); + if( openError != KErrNone ) + { + MPX_DEBUG2("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: opening failed, error=%d", openError); + iDatabases.Remove(index); + delete db; } MPX_DEBUG1("CMPXHarvesterDatabaseManager::OpenDatabaseL --->"); } // --------------------------------------------------------------------------- -// CMPXHarvesterDatabaseManager::CloseAllDatabase +// CMPXHarvesterDatabaseManager::CloseAllDatabases // --------------------------------------------------------------------------- // -void CMPXHarvesterDatabaseManager::CloseAllDatabase() +void CMPXHarvesterDatabaseManager::CloseAllDatabases() { // Close all databases for shutdown iDatabases.ResetAndDestroy(); } + +// --------------------------------------------------------------------------- +// CMPXHarvesterDatabaseManager::CloseMassStorageDatabases +// --------------------------------------------------------------------------- +// +void CMPXHarvesterDatabaseManager::CloseMassStorageDatabases() + { + MPX_FUNC("CMPXHarvesterDatabaseManager::CloseMassStorageDatabases"); + for (TInt i = 0; i < iDatabases.Count();) + { + CMPXHarvesterDB * db =iDatabases [i]; + TDriveNumber drive = db->GetDbDrive(); + if ( drive != EDriveC ) + { + MPX_DEBUG2("CMPXHarvesterDatabaseManager::CloseMassStorageDatabases closing DB on drive %d", drive); + db->Close(); +#ifdef __RAMDISK_PERF_ENABLE + if( iRAMDiskPerfEnabled && db->IsUseRamDrive() ) + { + MPX_DEBUG1("CMPXHarvesterDatabaseManager::CloseDatabase DB is on RAM"); + db->SetRamDriveInfo( iRAMDrive, EFalse ); + TInt err = DoCopyDBFromRam (drive); + if ( err ) + { + MPX_DEBUG2("CMPXHarvesterDatabaseManager::CloseDatabase DB copy error=%d", err); + RemoveDummyFile( drive ); + } + } +#endif + delete db; + iDatabases.Remove(i); + } + else + { + ++i; + } + } + } + // --------------------------------------------------------------------------- // CMPXHarvesterDatabaseManager::CloseDatabase // --------------------------------------------------------------------------- // void CMPXHarvesterDatabaseManager::CloseDatabase( TDriveNumber aDrive ) { - if (!IsRemoteDrive(aDrive)) + MPX_DEBUG2("-->CMPXHarvesterDatabaseManager::CloseDatabase drive %d", aDrive ); + TInt index = FindDatabaseIndex( aDrive ); + if ( index != KErrNotFound ) { - MPX_DEBUG2("CMPXHarvesterDatabaseManager::CloseDatabase drive %d <---", aDrive ); - TInt count = iDatabases.Count(); - for ( TInt i=0; iClose(); +#ifdef __RAMDISK_PERF_ENABLE + if( iRAMDiskPerfEnabled && db->IsUseRamDrive() ) { - CMPXHarvesterDB* db = (CMPXHarvesterDB*) iDatabases[i]; - if ( db->GetDbDrive() == aDrive) + MPX_DEBUG1("CMPXHarvesterDatabaseManager::CloseDatabase DB is on RAM"); + db->SetRamDriveInfo( iRAMDrive, EFalse ); + TInt err = DoCopyDBFromRam(aDrive); + if ( err ) { - db->Close(); - break; + MPX_DEBUG2("CMPXHarvesterDatabaseManager::CloseDatabase DB copy error=%d", err); + RemoveDummyFile( aDrive ); } } +#endif + delete db; + iDatabases.Remove(index); } - MPX_DEBUG1("CMPXHarvesterDatabaseManager::CloseDatabase --->"); + MPX_DEBUG1("<--CMPXHarvesterDatabaseManager::CloseDatabase"); + } + +// --------------------------------------------------------------------------- +// CMPXHarvesterDatabaseManager::DropDatabase +// --------------------------------------------------------------------------- +// +void CMPXHarvesterDatabaseManager::DropDatabase( TDriveNumber aDrive ) + { + MPX_DEBUG2("CMPXHarvesterDatabaseManager::DropDatabase drive %d <---", aDrive ); + TInt index = FindDatabaseIndex( aDrive ); + if ( index != KErrNotFound ) + { + CMPXHarvesterDB * db =iDatabases[index]; +#ifdef __RAMDISK_PERF_ENABLE + if( iRAMDiskPerfEnabled && db->IsUseRamDrive() ) + { + MPX_DEBUG1("CMPXHarvesterDatabaseManager::DropDatabase DB is on RAM"); + db->Close(); + // delete db on ram drive. + TFileName src = GenerateHarvesterDbName( TDriveUnit(aDrive), ETrue ); + BaflUtils::DeleteFile(iFs, src); + } +#endif + delete db; + iDatabases.Remove(index); + } + MPX_DEBUG1("CMPXHarvesterDatabaseManager::DropDatabase --->"); + } +// --------------------------------------------------------------------------- +// CMPXHarvesterDatabaseManager::FindDatabaseIndex +// --------------------------------------------------------------------------- +// +TInt CMPXHarvesterDatabaseManager::FindDatabaseIndex ( TDriveNumber aDrive ) + { + TInt count = iDatabases.Count(); + for( TInt i=0; iGetDbDrive() == aDrive ) + { + MPX_DEBUG3("CMPXHarvesterDatabaseManager::FindDatabaseIndex drive=%d returns index %d ", aDrive, i); + return i; + } + } + MPX_DEBUG2("CMPXHarvesterDatabaseManager::FindDatabaseIndex drive=%d returns KErrNotFound", aDrive); + return KErrNotFound; + } + +// --------------------------------------------------------------------------- +// CMPXHarvesterDatabaseManager::DataaseIsOpen +// --------------------------------------------------------------------------- +// +TBool CMPXHarvesterDatabaseManager::DatabaseIsOpen( TDriveNumber aDrive ) + { + return FindDatabaseIndex( aDrive ) != KErrNotFound; } // --------------------------------------------------------------------------- @@ -306,54 +373,9 @@ // CMPXHarvesterDB& CMPXHarvesterDatabaseManager::GetDatabaseL( TDriveNumber aDrive ) { - CMPXHarvesterDB* db( NULL ); - - // Find the database - TInt count = iDatabases.Count(); - for( TInt i=0; iGetDbDrive() == aDrive ) - { - db = tmp; - break; - } - } - - // Not found, so we leave - if( db == NULL ) - { - User::Leave( KErrNotFound ); - } - return *db; - } - -// --------------------------------------------------------------------------- -// CMPXHarvesterDatabaseManager::RemoveDatabase -// --------------------------------------------------------------------------- -// -void CMPXHarvesterDatabaseManager::RemoveDatabaseL( TDriveNumber aDrive ) - { - - TBool bFound(EFalse); - // Find the database - TInt count = iDatabases.Count(); - for(TInt index=0; indexGetDbDrive() == aDrive )) - { - bFound = ETrue; - delete iDatabases[index]; - iDatabases.Remove(index); - break; - } - } - - // Not found, so we leave - if( !bFound ) - { - User::Leave( KErrNotFound ); - } + TInt index = FindDatabaseIndex( aDrive ); + User::LeaveIfError (index); // Not found, so we leave + return *iDatabases[index]; } // --------------------------------------------------------------------------- @@ -386,17 +408,27 @@ { MPX_DEBUG1("CMPXHarvesterDatabaseManager::RecreateDatabases <--"); TInt count( iDatabases.Count() ); - for( TInt i=0; iClose(); cur->DeleteDatabase(); // trap leave just in case 1 db had err // - TRAP_IGNORE( cur->OpenL() ); + TRAPD( openError, cur->OpenL() ); + if( openError != KErrNone ) + { + MPX_DEBUG2("CMPXHarvesterDatabaseManager::RecreateDatabases: opening failed, error=%d", openError); + iDatabases.Remove(i); + delete cur; + } + else + { + ++i; + } } } @@ -417,6 +449,18 @@ } // --------------------------------------------------------------------------- +// CMPXHarvesterDatabaseManager::IsLocalDrive +// --------------------------------------------------------------------------- +// +TBool CMPXHarvesterDatabaseManager::IsLocalDrive( TDriveNumber aDrive ) + { + TDriveInfo driveInfo; + return (iFs.Drive ( driveInfo, aDrive) == KErrNone ) + && driveInfo.iType != EMediaNotPresent + && ! (driveInfo.iDriveAtt & KDriveAttRemote); + } + +// --------------------------------------------------------------------------- // CMPXHarvesterDatabaseManager::BeginL // --------------------------------------------------------------------------- // @@ -535,7 +579,7 @@ { MPX_DEBUG2("CMPXHarvesterDatabaseManager::CopyDBsToRamL error=%d", err); // delete dummy file - RemoveDummyFile(i); + RemoveDummyFile( (TDriveNumber)(TInt)drive ); // delete db in ram drive TFileName ramDb = GenerateHarvesterDbName( drive, ETrue ); @@ -589,6 +633,8 @@ if( iRAMDiskPerfEnabled ) { + // Should not leave until all the databases have been copied from RAM drive. + TInt leaveError = KErrNone; TInt count(iDatabases.Count()); for (TInt i = 0; i < count; ++i) { @@ -605,57 +651,71 @@ iDatabases[i]->SetRamDriveInfo( iRAMDrive, EFalse ); // Get the db state in order to restore it later. TDbState dbState = iDatabases[i]->GetDbState(); - iDatabases[i]->SetDbStateL(EDbClose); - TRAP( err, DoCopyDBFromRamL(drive) ); + TRAP( err, iDatabases[i]->SetDbStateL(EDbClose) ); + if ( err == KErrNone ) + { + err = DoCopyDBFromRam(drive); + } + else + { + // Error closing db on RAM drive, try to delete it. + TFileName ramDB; + ramDB = GenerateHarvesterDbName( drive, ETrue ); + BaflUtils::DeleteFile(iFs, ramDB); + } + if ( err ) { MPX_DEBUG2("CMPXHarvesterDatabaseManager::CopyDBsFromRamL copy error=%d", err); //anyting wrong, delete the temp file. - RemoveDummyFile(i); + RemoveDummyFile( (TDriveNumber)(TInt)drive ); } // Restore the db state. - iDatabases[i]->SetDbStateL( dbState ); + TRAPD( error, iDatabases[i]->SetDbStateL( dbState ) ); + if ( error && !leaveError ) + { + leaveError = error; + } } + User::LeaveIfError( leaveError ); } } // --------------------------------------------------------------------------- -// CMPXHarvesterDatabaseManager::DoCopyDBFromRamL +// CMPXHarvesterDatabaseManager::DoCopyDBFromRam // --------------------------------------------------------------------------- // -void CMPXHarvesterDatabaseManager::DoCopyDBFromRamL(TDriveUnit aDriveUnit) +TInt CMPXHarvesterDatabaseManager::DoCopyDBFromRam(TDriveUnit aDriveUnit) { - MPX_FUNC("CMPXHarvesterDatabaseManager::DoCopyDBFromRamL"); + MPX_FUNC("CMPXHarvesterDatabaseManager::DoCopyDBFromRam"); TFileName dst; TFileName src; TInt err = KErrNone; dst = GenerateHarvesterDbName( aDriveUnit ); src = GenerateHarvesterDbName( aDriveUnit, ETrue ); - MPX_DEBUG3("CMPXHarvesterDatabaseManager::DoCopyDBFromRamL from %S to %S", &src, &dst ); + MPX_DEBUG3("CMPXHarvesterDatabaseManager::DoCopyDBFromRam from %S to %S", &src, &dst ); - // Rename the temp file into real Db name TFileName dummyDbFileName = GenerateDummyDbName( aDriveUnit ); //Copy Db from RAM to replace dummy file err = BaflUtils::CopyFile(iFs, src, dummyDbFileName); - MPX_DEBUG2("CMPXHarvesterDatabaseManager::DoCopyDBFromRamL database copied from ram drive err=%d.", err); + MPX_DEBUG2("CMPXHarvesterDatabaseManager::DoCopyDBFromRam database copied from ram drive err=%d.", err); - // delete db in ram drive. + // delete db on ram drive. TInt delErr = BaflUtils::DeleteFile(iFs, src); - MPX_DEBUG3("CMPXHarvesterDatabaseManager::DoCopyDBFromRamL db on ram drive deleted file=%S, err=%d", &src, delErr); + MPX_DEBUG3("CMPXHarvesterDatabaseManager::DoCopyDBFromRam db on ram drive deleted file=%S, err=%d", &src, delErr); - // Make sure we del db from ram drive before leaving. - User::LeaveIfError( err ); + // Make sure we del db from ram drive before returning. + if (err != KErrNone) + { + return err; + } - // Delete existing DB on drive - delErr = BaflUtils::DeleteFile(iFs, dst); - MPX_DEBUG2("CMPXHarvesterDatabaseManager::DoCopyDBFromRamL destination file deleted err=%d", delErr); - - // rename dummy file to real db name - User::LeaveIfError( BaflUtils::RenameFile(iFs, dummyDbFileName, dst) ); - MPX_DEBUG1("CMPXHarvesterDatabaseManager::DoCopyDBFromRamL dummy file renamed."); + err = iFs.Replace(dummyDbFileName, dst); + MPX_DEBUG2("CMPXHarvesterDatabaseManager::DoCopyDBFromRam dummy file replaced, err=%d.", err); + return err; } // --------------------------------------------------------------------------- @@ -839,12 +899,11 @@ // CMPXHarvesterDatabaseManager::RemoveDummyFile // --------------------------------------------------------------------------- // -void CMPXHarvesterDatabaseManager::RemoveDummyFile( TInt aIndex ) +void CMPXHarvesterDatabaseManager::RemoveDummyFile( TDriveNumber aDrive ) { MPX_FUNC("CMPXHarvesterDatabaseManager::RemoveDummyFile"); - TDriveUnit driveUnit(iDatabases[aIndex]->GetDbDrive()); - TFileName file = GenerateDummyDbName(driveUnit); + TFileName file = GenerateDummyDbName(TDriveUnit(aDrive)); if ( (file.Length() > 0) && (BaflUtils::FileExists(iFs, file)) ) diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/src/mpxharvesterfilehandlerimp.cpp --- a/mmappcomponents/harvester/filehandler/src/mpxharvesterfilehandlerimp.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterfilehandlerimp.cpp Fri May 14 16:21:14 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: Handles all file related activities -* Version : %version: da1mmcf#72.1.14.2.4.1.4.1.2.5.1 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: da1mmcf#72.1.14.2.4.1.4.1.2.5.2 % << Don't touch! Updated by Synergy at check-out. * */ @@ -20,10 +20,8 @@ #include #include #include -#ifdef RD_MULTIPLE_DRIVE #include #include -#endif //RD_MULTIPLE_DRIVE #include #include @@ -124,7 +122,6 @@ // List of watchers for different drives // -#ifdef RD_MULTIPLE_DRIVE TDriveList driveList; TInt driveCount(0); User::LeaveIfError( DriveInfo::GetUserVisibleDrives( @@ -141,17 +138,6 @@ CleanupStack::Pop( dw ); } } -#else - CMPXDiskSpaceWatcher* dw_e = CMPXDiskSpaceWatcher::NewL( iFs, EDriveE, *this ); - CleanupStack::PushL( dw_e ); - iDiskMonitors.AppendL( dw_e ); - CleanupStack::Pop( dw_e ); - CMPXDiskSpaceWatcher* dw_c = CMPXDiskSpaceWatcher::NewL( iFs, EDriveC, *this ); - CleanupStack::PushL( dw_c ); - iDiskMonitors.AppendL( dw_c ); - CleanupStack::Pop( dw_c ); -#endif // RD_MULTIPLE_DRIVE - TInt openerr = iDBManager->OpenAllDatabasesL(); @@ -187,6 +173,7 @@ // Get the scan drives from cenrep. // ParseScanPathL(); + RefreshScanDrivesL(); // Get the list of container types iContainerTypes = new(ELeave) CDesCArrayFlat(2); // granularity @@ -214,13 +201,6 @@ iDbSynchronizer = CMPXDbSynchronizer::NewL(*this,*iDBManager,iMusicCollectionId, iPodcastCollectionId,iFs, iDisablePodcasting); -#ifdef RD_MULTIPLE_DRIVE - // Use default MMC drive as the Removable drive - User::LeaveIfError( DriveInfo::GetDefaultDrive( - DriveInfo::EDefaultRemovableMassStorage, - iRemovedDrive ) ); -#endif - // Create DRM Notifier and register for AddRemove event iDrmNotifier = CDRMNotifier::NewL(); iDrmNotifier->RegisterEventObserverL( *this, KEventAddRemove ); @@ -270,11 +250,9 @@ } delete iContainerTypes; - iFilteredDrivesToScan.Reset(); iFilteredDrivesToScan.Close(); - iDrivesToScan.Reset(); iDrivesToScan.Close(); - iPathsToBlock.Reset(); + iConfiguredDrivesToScan.Close(); iPathsToBlock.Close(); // Cleans up the scanning tables and arrays @@ -337,14 +315,12 @@ iCollectionUtil->Collection().NotifyL( EMcMsgRefreshStart, KErrNone ); - // Reopen databases - iDBManager->OpenAllDatabasesL(); - // Begin transaction on databases iDBManager->BeginL(); //Remove out of disk space drives from scanned drives list iFilteredDrivesToScan.Reset(); + iFilteredOutOfDisk = EFalse; CopyArrayL(iDrivesToScan.Array(),iFilteredDrivesToScan); iOutOfDisk = EFalse; @@ -371,6 +347,7 @@ if (currentDriveNumber == driveNumber) { iFilteredDrivesToScan.Remove(index); + iFilteredOutOfDisk = ETrue; count--; } else @@ -378,7 +355,7 @@ index++; } } - TRAP_IGNORE(iDBManager->RemoveDatabaseL(static_cast(currentDriveNumber))); + iDBManager->CloseDatabase(static_cast(currentDriveNumber)); } } @@ -438,8 +415,8 @@ // 4: USB end we re-open all db and scan for new files // 5: MTP start we stop monitoring for new files (no dismount) // 6: MTP end we re-open all db, files added already, restart monitor + // 7: Disk dismount: stop scanning, close the dismounting DB // -#ifdef RD_MULTIPLE_DRIVE // Get all visible drives TDriveList driveList; TInt driveCount(0); @@ -472,127 +449,64 @@ (driveStatus&DriveInfo::EDriveFormatted)?&driveFormatted:&driveNotFormatted); } } -#endif //RD_MULTIPLE_DRIVE + switch( aEvent ) { case EFormatStartEvent: { - MPX_DEBUG1("Disk Format start event"); + MPX_DEBUG2("Disk Format start event, drive %d", aData); + iIdle->Cancel(); CancelScan(); iDBManager->CloseDatabase( (TDriveNumber) aData ); + RefreshScanDrivesL(); break; } case EDiskRemovedEvent: { - MPX_DEBUG1("Disk Removed event"); + MPX_DEBUG2("Disk Removed event, drive %d", aData); iIdle->Cancel(); CancelScan(); -#ifdef RD_MULTIPLE_DRIVE - TBool dbClosed( EFalse ); - for( TInt driveNum = EDriveA; driveNum <= EDriveZ; driveNum++ ) - { - if (driveList[driveNum] && (!iDBManager->IsRemoteDrive(static_cast(driveNum)))) - { - TUint driveStatus(0); - User::LeaveIfError( DriveInfo::GetDriveStatus( - iFs, driveNum, driveStatus ) ); - if (!(driveStatus & DriveInfo::EDrivePresent )) - { - // Close database for non-present drive - iDBManager->CloseDatabase( (TDriveNumber) driveNum ); - // Save the drive - iRemovedDrive = driveNum; - dbClosed = ETrue; - break; - } - } - } - - if( !dbClosed ) - { - // GetUserVisibleDrives / RFs::DriveList does not return drive at all - // if it is dismounted using file server methods. This occurs at least - // when removing card using power menu eject. - // If the drive reported as removed is not ready, close db on that drive. - TUint driveStatus(0); - TInt err( DriveInfo::GetDriveStatus( iFs, aData, driveStatus ) ); - MPX_DEBUG4("Drive %d status 0x%x, err %d", aData, driveStatus, err); - if( err == KErrNotReady ) - { - iDBManager->CloseDatabase( (TDriveNumber) aData ); - iRemovedDrive = aData; - } - } -#else - iDBManager->CloseDatabase( (TDriveNumber) aData ); -#endif // RD_MULTIPLE_DRIVE + iDBManager->DropDatabase ( TDriveNumber( aData ) ); + RefreshScanDrivesL(); break; } case EFormatEndEvent: { - MPX_DEBUG1("Disk Format end event"); + MPX_DEBUG2("Disk Format end event, drive %d", aData); CancelScan(); iDBManager->OpenDatabaseL( (TDriveNumber) aData ); + RefreshScanDrivesL(); break; } case EDiskInsertedEvent: { - MPX_DEBUG1("Disk Insert event"); + MPX_DEBUG2("Disk Insert event %d", aData); CancelScan(); -#ifdef RD_MULTIPLE_DRIVE - iDBManager->OpenDatabaseL( (TDriveNumber) iRemovedDrive ); -#else iDBManager->OpenDatabaseL( (TDriveNumber) aData ); -#endif // RD_MULTIPLE_DRIVE + RefreshScanDrivesL(); break; } case EUSBMassStorageStartEvent: { if (iCurUSBEvent == EUSBMassStorageStartEvent) - { - break; - } + { + break; + } iIdle->Cancel(); + iDBManager->CloseMassStorageDatabases(); + RefreshScanDrivesL(); CancelScan(); -#ifdef RD_MULTIPLE_DRIVE - // Close all databases other than the phone memory database - for( TInt driveNum = EDriveA; driveNum <= EDriveZ; driveNum++ ) - { - if (driveList[driveNum] && (!iDBManager->IsRemoteDrive(static_cast(driveNum)))) - { - if ( driveNum != EDriveC ) - { - iDBManager->CloseDatabase( (TDriveNumber) driveNum ); - } - } - } -#else - iDBManager->CloseDatabase( (TDriveNumber) aData ); -#endif // RD_MULTIPLE_DRIVE iCurUSBEvent = EUSBMassStorageStartEvent; break; } case EUSBMassStorageEndEvent: { -#ifdef RD_MULTIPLE_DRIVE - // Open all databases other than the phone memory - for( TInt driveNum = EDriveA; driveNum <= EDriveZ; driveNum++ ) - { - if (driveList[driveNum] && (!iDBManager->IsRemoteDrive(static_cast(driveNum)))) - { - if ( driveNum != EDriveC ) - { - iDBManager->OpenDatabaseL( (TDriveNumber) driveNum ); - } - } - } -#else - iDBManager->OpenDatabaseL( (TDriveNumber) aData ); -#endif // RD_MULTIPLE_DRIVE + iDBManager->OpenAllDatabasesL(); + RefreshScanDrivesL(); iCurUSBEvent = EUSBMassStorageEndEvent; break; } - case EUSBMTPNotActiveEvent: // deliberate fall through + case EUSBMTPNotActiveEvent: { if (iCurUSBEvent == EUSBMTPNotActiveEvent) { @@ -611,29 +525,33 @@ { CancelScan(); iCurUSBEvent = EUSBMTPStartEvent; - // nothing to do, db is needed for MTP #ifdef __RAMDISK_PERF_ENABLE - // if statement needed because of fall through above. - if ( aEvent == EUSBMTPStartEvent ) - { - // copy dbs to ram drive - iDBManager->CopyDBsToRamL(ETrue); - } + iDBManager->CopyDBsToRamL(ETrue); #endif //__RAMDISK_PERF_ENABLE break; } case EUSBMTPEndEvent: { iCurUSBEvent = EUSBMTPEndEvent; - // nothing to do, db is updated by MTP #ifdef __RAMDISK_PERF_ENABLE // copy dbs from ram drive iDBManager->CopyDBsFromRamL(); #endif //__RAMDISK_PERF_ENABLE break; } - case EPowerKeyEjectEvent: + case EDiskDismountEvent: { + MPX_DEBUG2("Disk dismount notification, drive %d", aData); + iIdle->Cancel(); + if ( aData < 0 ) + { + iDBManager->CloseMassStorageDatabases(); + } + else + { + iDBManager->CloseDatabase( (TDriveNumber) aData ); + } + RefreshScanDrivesL(); CancelScan(); break; } @@ -927,9 +845,10 @@ // void CMPXHarvesterFileHandlerImp::RecreateDatabases() { - MPX_DEBUG1("CMPXHarvesterFileHandlerImp::RecreateDatabasesL <--"); + MPX_DEBUG1("CMPXHarvesterFileHandlerImp::RecreateDatabases <--"); iDBManager->RecreateDatabases(); - MPX_DEBUG1("CMPXHarvesterFileHandlerImp::RecreateDatabasesL -->"); + TRAP_IGNORE(RefreshScanDrivesL()); + MPX_DEBUG1("CMPXHarvesterFileHandlerImp::RecreateDatabases -->"); } // --------------------------------------------------------------------------- @@ -1256,18 +1175,24 @@ // void CMPXHarvesterFileHandlerImp::HandleDirectoryChangedL( const TDesC& aPath ) { + MPX_DEBUG2("--->CMPXHarvesterFileHandlerImp::HandleDirectoryChangedL path=%S", &aPath); // Delay the scanning for a few seconds so the files are finished // copying. If already active, means we just append onto the list - // - iAutoScanPaths.AppendL( aPath ); - if( !iIdle->IsActive() ) + // But don't scan if there is no DB == drive does not exist any more + TParsePtrC parse( aPath ); + TDriveUnit drive ( parse.Drive() ); + if ( iDBManager->DatabaseIsOpen ((TDriveNumber) (TInt) drive) ) { - TCallBack cb( Callback, this ); - iIdle->Start( TTimeIntervalMicroSeconds32( KAutoScanDelay ), - TTimeIntervalMicroSeconds32( KAutoScanAfter ), - cb ); + MPX_DEBUG1("CMPXHarvesterFileHandlerImp::HandleDirectoryChangedL adding in iAutoScanPaths"); + iAutoScanPaths.AppendL( aPath ); + if( !iIdle->IsActive() ) + { + TCallBack cb( Callback, this ); + iIdle->Start( TTimeIntervalMicroSeconds32( KAutoScanDelay ), + TTimeIntervalMicroSeconds32( KAutoScanAfter ), + cb ); + } } - } // --------------------------------------------------------------------------- @@ -1277,6 +1202,7 @@ void CMPXHarvesterFileHandlerImp::HandleOpenDriveL( TDriveNumber aDrive, const TDesC& aFolder ) { + MPX_DEBUG3("--->CMPXHarvesterFileHandlerImp::HandleOpenDriveL drive=%d, folder=%S", aDrive, &aFolder); #ifdef __PRINTDB__ if( iCurTable ) iCurTable->PrintItemsInTableL(); @@ -1291,13 +1217,7 @@ // EnsureRamSpaceL will copy dbs from ram if ram space is low or dbs exceeded max space. iDBManager->EnsureRamSpaceL(); #endif // __RAMDISK_PERF_ENABLE - MPX_TRAPD( err, iCurDB = &iDBManager->GetDatabaseL( aDrive ) ); - if ( err != KErrNone ) - { - iDBManager->OpenAllDatabasesL(); - iCurDB = &iDBManager->GetDatabaseL( aDrive ); - } - + iCurDB = &iDBManager->GetDatabaseL( aDrive ); if( iDrivesToScan.Find( aFolder ) != KErrNotFound ) { iCurTable = iCurDB->OpenAllFilesTableL(); @@ -1307,6 +1227,7 @@ iCurTable = iCurDB->OpenDirectoryL( aFolder ); } iCurList = iCurTable->CreateTableRepresentationL(); + MPX_DEBUG1("<--CMPXHarvesterFileHandlerImp::HandleOpenDriveL"); } // --------------------------------------------------------------------------- @@ -1831,7 +1752,7 @@ MPX_DEBUG2("ParseScanPathL scanPaths: %S", &scanPath); MPX_DEBUG2("ParseScanPathL blockPaths: %S", &blockPath); - ::ExtractTokensL( scanPath, iDrivesToScan ); + ::ExtractTokensL( scanPath, iConfiguredDrivesToScan ); ::ExtractTokensL( blockPath, iPathsToBlock ); } @@ -1899,6 +1820,25 @@ } // --------------------------------------------------------------------------- +// Refreshes scan drives +// --------------------------------------------------------------------------- +// +void CMPXHarvesterFileHandlerImp::RefreshScanDrivesL() + { + iDrivesToScan.Reset(); + for (TInt i = 0; i < iConfiguredDrivesToScan.Count(); ++i) + { + const TDesC& path = iConfiguredDrivesToScan[i]; + TParsePtrC parse(path); + TDriveUnit drive(parse.Drive()); + if ( iDBManager->DatabaseIsOpen( (TDriveNumber)(TInt) drive) ) + { + iDrivesToScan.AppendL(path); + } + } + } + +// --------------------------------------------------------------------------- // Resets the scanning table and array // --------------------------------------------------------------------------- // @@ -2015,10 +1955,7 @@ // If no error or cancel, return the final number of items added MPX_DEBUG2("Scan error %i", aErr ); - // Reopen databases (in case we removed them for out of disk drives before scan) - iDBManager->OpenAllDatabasesL(); - - if( aErr == KErrNone ) + if( aErr == KErrNone || aErr == KErrCancel ) { // Commit the changes on databases in transaction iDBManager->CommitL(); @@ -2034,12 +1971,27 @@ iDBManager->CopyDBsFromRamL(); #endif //__RAMDISK_PERF_ENABLE + // Reopen databases (in case we removed them for out of disk drives before scan) + for (TInt i = 0, j = 0; i < iDrivesToScan.Count(); ++i) + { + if ( j < iFilteredDrivesToScan.Count() && ! iDrivesToScan[i].Compare( iFilteredDrivesToScan[j] ) ) + { + ++j; + } + else + { + TParsePtrC fileNameParser ( iDrivesToScan[i] ); + TDriveUnit drive ( fileNameParser.Drive() ); + TRAP_IGNORE( iDBManager->OpenDatabaseL( TDriveNumber ( (TInt) drive ) ) ); + } + } + if( aErr == KErrNone || aErr == KErrCancel ) { aErr = iAddedCount; } - if (iFilteredDrivesToScan.Count() != iDrivesToScan.Count()) + if ( iFilteredOutOfDisk ) { aErr = KErrDiskFull; } @@ -2191,7 +2143,24 @@ iRefreshCount++; CancelScan(); Reset(); - iFolderScanner->ScanL( iAutoScanPaths ); + // ensure you don't try to scan paths that are on closed drives + for (TInt i = 0; i < iAutoScanPaths.Count(); ) + { + TParsePtr parse(iAutoScanPaths[i]); + TDriveUnit drive(parse.Drive()); + if ( iDBManager->DatabaseIsOpen( (TDriveNumber) (TInt) drive ) ) + { + ++i; + } + else + { + iAutoScanPaths.Remove(i); + } + } + if ( iAutoScanPaths.Count() ) + { + iFolderScanner->ScanL( iAutoScanPaths ); + } // Cleanup iAutoScanPaths.Reset(); @@ -2313,7 +2282,6 @@ CleanupStack::PushL( drmFileList ); -#ifdef RD_MULTIPLE_DRIVE TDriveList driveList; TInt driveCount(0); @@ -2344,81 +2312,9 @@ } } } -#else - //ensure drive E is ready - //otherwise GetDataBaseL will leave if MMC is removed - if ( IsDriveReady( EDriveE ) ) - { - // Get DRM files from database in E drive - db = &iDBManager->GetDatabaseL( EDriveE ); - table = db->OpenDrmFileL(); - CleanupStack::PushL( table ); - tempList = table->CreateTableRepresentationL(); - CleanupStack::PushL( tempList ); - // copy content to drm file list - for ( TInt i=0; iCount(); i++ ) - { - drmFileList->AppendL( (*tempList)[i] ); - } - // reset - tempList->Reset(); - CleanupStack::PopAndDestroy( tempList ); - CleanupStack::PopAndDestroy( table ); - } - - // Get DRM files from database in C drive - db = &iDBManager->GetDatabaseL( EDriveC ); - table = db->OpenDrmFileL(); - CleanupStack::PushL( table ); - tempList = table->CreateTableRepresentationL(); - CleanupStack::PushL( tempList ); - // copy content to iCurList - for ( TInt i=0; iCount(); i++ ) - { - drmFileList->AppendL( (*tempList)[i] ); - } - tempList->Reset(); - CleanupStack::PopAndDestroy( tempList ); - CleanupStack::PopAndDestroy( table ); -#endif CleanupStack::Pop( drmFileList ); MPX_DEBUG1("CMPXHarvesterFileHandlerImp::GetDrmFiles --->"); return drmFileList; } -// --------------------------------------------------------------------------- -// Verifies if aDrive is ready. -// --------------------------------------------------------------------------- -// -TBool CMPXHarvesterFileHandlerImp::IsDriveReady( TDriveNumber aDrive ) - { - MPX_DEBUG1("CMPXHarvesterFileHandlerImp::IsDriveReady <---"); - - TDriveInfo driveInfo; - TInt error = iFs.Drive( driveInfo, aDrive ); - TBool ready = ETrue; - if ( error != KErrNone ) - { - ready = EFalse; - } - else if ( driveInfo.iDriveAtt == static_cast( KDriveAbsent ) ) - { - //aDrive is absent - ready = EFalse; - } - else - { - TVolumeInfo volumeInfo; - TInt errCode = iFs.Volume( volumeInfo, aDrive ); - if( errCode != KErrNone ) - { - //aDrive is ready for use - ready = EFalse; - } - } - - MPX_DEBUG1("CMPXHarvesterFileHandlerImp::IsDriveReady --->"); - return ready; - } - // END OF FILE diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/filehandler/src/mpxmetadatascanner.cpp --- a/mmappcomponents/harvester/filehandler/src/mpxmetadatascanner.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/src/mpxmetadatascanner.cpp Fri May 14 16:21:14 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: Active object to extract metadata -* Version : %version: da1mmcf#16.2.3.1.5 % +* Version : %version: da1mmcf#16.2.3.1.5.2.1 % * */ @@ -44,8 +44,9 @@ CMPXMetadataScanner::CMPXMetadataScanner( MMPXMetadataScanObserver& aObs, MMPXFileScanStateObserver& aStateObs ) : CActive( EPriorityNull ), + iExtractType( EMaxFile ), iObserver( aObs ), - iStateObserver( aStateObs ) + iStateObserver( aStateObs ) { CActiveScheduler::Add( this ); } @@ -60,8 +61,7 @@ RPointerArray& aTypesAry ) { iExtractor = CMPXMetadataExtractor::NewL( aFs, aAppArc, aTypesAry ); - iNewFileProps = CMPXMediaArray::NewL(); - iModifiedFileProps = CMPXMediaArray::NewL(); + iTargetProps = CMPXMediaArray::NewL(); } @@ -114,8 +114,7 @@ iNewFiles.Close(); iModifiedFiles.Close(); - delete iNewFileProps; - delete iModifiedFileProps; + delete iTargetProps; delete iExtractor; } @@ -128,14 +127,7 @@ { iNewFiles.ResetAndDestroy(); iModifiedFiles.ResetAndDestroy(); - if(iNewFileProps) - { - iNewFileProps->Reset(); - } - if(iModifiedFileProps) - { - iModifiedFileProps->Reset(); - } + iTargetProps->Reset(); } // --------------------------------------------------------------------------- @@ -144,20 +136,20 @@ // void CMPXMetadataScanner::Start() { - MPX_DEBUG1("MPXMetadataScanner::StartL <---"); + MPX_FUNC("MPXMetadataScanner::StartL()"); if( !IsActive() ) { // Setup iAryPos = 0; iExtractType = ENewFiles; iExtracting = ETrue; - + iTargetProps->Reset(); + // Set Active iStatus = KRequestPending; SetActive(); TRequestStatus* status = &iStatus; User::RequestComplete( status, KErrNone ); - MPX_DEBUG1("MPXMetadataScanner::StartL --->"); } } // --------------------------------------------------------------------------- @@ -166,9 +158,8 @@ // void CMPXMetadataScanner::Stop() { - MPX_DEBUG1("MPXMetadataScanner::Stop <---"); + MPX_FUNC("MPXMetadataScanner::Stop()"); DoCancel(); - MPX_DEBUG1("MPXMetadataScanner::Stop --->"); } // --------------------------------------------------------------------------- @@ -177,6 +168,7 @@ // void CMPXMetadataScanner::AddNewFileToScanL( const TDesC& aFile ) { + MPX_FUNC("MPXMetadataScanner::AddNewFileToScanL()"); HBufC* file = aFile.AllocLC(); iNewFiles.AppendL( file ); CleanupStack::Pop( file ); @@ -188,6 +180,7 @@ // void CMPXMetadataScanner::AddModifiedFileToScanL( const TDesC& aFile ) { + MPX_FUNC("MPXMetadataScanner::AddModifiedFileToScanL()"); HBufC* file = aFile.AllocLC(); iModifiedFiles.AppendL( file ); CleanupStack::Pop( file ); @@ -199,6 +192,7 @@ // CMPXMedia* CMPXMetadataScanner::ExtractFileL( const TDesC& aFile ) { + MPX_FUNC("MPXMetadataScanner::ExtractFileL()"); CMPXMedia* media; iExtractor->CreateMediaL( aFile, media ); return media; @@ -210,10 +204,12 @@ // void CMPXMetadataScanner::DoCancel() { + MPX_FUNC("MPXMetadataScanner::DoCancel()"); if( iExtracting ) { - // Callback to observer + iExtractor->CancelRequest(); Reset(); + // Callback to observer TRAP_IGNORE( iStateObserver.HandleScanStateCompleteL( MMPXFileScanStateObserver::EScanMetadata, KErrCancel ) ); iExtracting = EFalse; @@ -226,29 +222,13 @@ // void CMPXMetadataScanner::RunL() { + MPX_FUNC("CMPXMetadataScanner::RunL()"); if ( iExtracting ) { - TBool done(EFalse); - TRAPD( err, done = DoExtractL() ); - if ( !iExtracting ) - { - // If DoCancel() was called during DoExtractL(), do nothing. - MPX_DEBUG1("CMPXMetadataScanner::RunL - Cancel during RunL"); - } - else if( KErrNone != err || done ) + TRAPD( err, DoExtractL() ); + if ( err ) { - // Callback to observer - TRAP_IGNORE( iStateObserver.HandleScanStateCompleteL( MMPXFileScanStateObserver::EScanMetadata, - err ) ); - iExtracting = EFalse; - } - else - { - MPX_DEBUG1("CMPXMetadataScanner::RunL -- Run again"); - iStatus = KRequestPending; - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete( status, KErrNone ); + MetadataScannerComplete( err ); } } } @@ -257,98 +237,185 @@ // Extract metadata // --------------------------------------------------------------------------- // -TBool CMPXMetadataScanner::DoExtractL() +void CMPXMetadataScanner::DoExtractL() + { + MPX_FUNC("CMPXMetadataScanner::DoExtractL()"); + + RPointerArray* source = GetSource(); + if ( source->Count() ) + { + // Call asynchronous CreateMedia to get metadata. + iExtractor->CreateMediaAsyncL( *(*source)[iAryPos], this ); + } + else + { + // Source array is empty, go to next array. + MPX_DEBUG2("CMPXMetadataScanner::DoExtractL Source array is empty ExtractType = %d.", iExtractType); + iAryPos = 0; + iExtractType++; + RunAgain(); + } + } + +// --------------------------------------------------------------------------- +// Callback for CreateMediaAsyncL +// --------------------------------------------------------------------------- +// +void CMPXMetadataScanner::HandleCreateMediaComplete( CMPXMedia* aMedia, TInt aError ) { - MPX_DEBUG1("CMPXMetadataScanner::DoExtractL <---"); - TBool done(EFalse); + MPX_FUNC("CMPXMetadataScanner::HandleCreateMediaComplete()"); + MPX_DEBUG2("CMPXMetadataScanner::HandleCreateMediaComplete error = %d", aError); + TInt err = KErrNone; + + // Scanning cancelled + if ( !iExtracting ) + { + delete aMedia; + return; + } + + // Add media to target array. + if ( ( aError == KErrNone ) && + ( aMedia != NULL ) ) + { + TRAP( err, iTargetProps->AppendL( aMedia ) ); + if ( err ) + { + delete aMedia; + } + } + + iAryPos++; + if( iAryPos >= GetSource()->Count() ) + { + // Finished with this array, go to the next array. + iAryPos = 0; + TRAP( err, AddToCollectionL() ); + if ( err ) + { + MetadataScannerComplete( err ); + } + iExtractType++; + } + else + { + // Batch update collection DBs. + if ( iTargetProps->Count() >= KLoopCount ) + { + TRAP( err, AddToCollectionL() ); + if ( err ) + { + MetadataScannerComplete( err ); + } + } + } + + RunAgain(); + } + +// --------------------------------------------------------------------------- +// Get source array +// --------------------------------------------------------------------------- +// +RPointerArray* CMPXMetadataScanner::GetSource() + { + MPX_FUNC("CMPXMetadataScanner::GetSource()"); TExtractType curType = (TExtractType) iExtractType; - - // Pointer re-direction to generalize extraction - RPointerArray* source; - CMPXMediaArray* mptarget; + if( curType == ENewFiles ) { - source = &iNewFiles; - mptarget = iNewFileProps; + return &iNewFiles; } else if( curType == EModFiles ) { - source = &iModifiedFiles; - mptarget = iModifiedFileProps; + return &iModifiedFiles; } - else // All done! - { - return ETrue; - } - - // Process at most KLoopCount number of files - // - mptarget->Reset(); - if( source->Count() != 0 ) + else + return NULL; + } + +// --------------------------------------------------------------------------- +// Is metadata scanner done +// --------------------------------------------------------------------------- +// +TBool CMPXMetadataScanner::IsDone() + { + MPX_FUNC("CMPXMetadataScanner::IsDone()"); + TExtractType curType = (TExtractType) iExtractType; + + TBool done = EFalse; + if ( curType >= EMaxFile ) { - for( TInt i=0; iCreateMediaL( *(*source)[iAryPos], media ) ); - if ( !iExtracting ) - { - // In case DoCancel() was called while processing iExtractor->CreateMediaL - MPX_DEBUG1("CMPXMetadataScanner::DoExtractL - Cancel during CreateMediaL"); - delete media; - return ETrue; - } - - if( err == KErrNone ) - { - CleanupStack::PushL( media ); - mptarget->AppendL( media ); - CleanupStack::Pop( media ); - } - - iAryPos++; - if( iAryPos == source->Count() ) - { - iAryPos = 0; - iExtractType++; - break; - } - } + done = ETrue; + } + return done; + } + +// --------------------------------------------------------------------------- +// Run Active Object again +// --------------------------------------------------------------------------- +// +void CMPXMetadataScanner::RunAgain() + { + MPX_FUNC("CMPXMetadataScanner::RunAgain()"); + if ( IsDone() ) + { + MetadataScannerComplete( KErrNone ); } - else // No item in the array + else { - iAryPos = 0; - iExtractType++; + MPX_DEBUG1("CMPXMetadataScanner::RunAgain -- Run again"); + iStatus = KRequestPending; + SetActive(); + TRequestStatus* status = &iStatus; + User::RequestComplete( status, KErrNone ); } + } + +// --------------------------------------------------------------------------- +// Add metadata to collection +// --------------------------------------------------------------------------- +// +void CMPXMetadataScanner::AddToCollectionL() + { + MPX_FUNC("CMPXMetadataScanner::AddToCollectionL()"); + TExtractType curType = (TExtractType) iExtractType; - // After extraction, get observer to add files to the collection - // switch( curType ) { case ENewFiles: { - if( iNewFileProps->Count() ) + if( iTargetProps->Count() ) { - iObserver.AddFilesToCollectionL( *iNewFileProps ); + iObserver.AddFilesToCollectionL( *iTargetProps ); } break; } case EModFiles: { - if( iModifiedFileProps->Count() ) + if( iTargetProps->Count() ) { - iObserver.UpdatesFilesInCollectionL( *iModifiedFileProps ); + iObserver.UpdatesFilesInCollectionL( *iTargetProps ); } break; } - case EMaxFile: // All done. - done = ETrue; - break; default: ASSERT(0); } - - MPX_DEBUG1("CMPXMetadataScanner::DoExtractL --->"); - return done; + iTargetProps->Reset(); } + +// --------------------------------------------------------------------------- +// Complete metadata scanner +// --------------------------------------------------------------------------- +// +void CMPXMetadataScanner::MetadataScannerComplete( TInt aError ) + { + MPX_FUNC("CMPXMetadataScanner::MetadataScannerCompleteL()"); + MPX_DEBUG2("CMPXMetadataScanner::MetadataScannerCompleteL error = %d", aError); + + // Callback to observer + TRAP_IGNORE( iStateObserver.HandleScanStateCompleteL( MMPXFileScanStateObserver::EScanMetadata, aError ) ); + iExtracting = EFalse; + Reset(); + } diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/metadataextractor/bwinscw/mpxmetadataextractorU.DEF --- a/mmappcomponents/harvester/metadataextractor/bwinscw/mpxmetadataextractorU.DEF Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/metadataextractor/bwinscw/mpxmetadataextractorU.DEF Fri May 14 16:21:14 2010 +0300 @@ -2,4 +2,6 @@ ?CreateMediaL@CMPXMetadataExtractor@@QAEXABVTDesC16@@AAPAVCMPXMedia@@H@Z @ 1 NONAME ; void CMPXMetadataExtractor::CreateMediaL(class TDesC16 const &, class CMPXMedia * &, int) ?NewL@CMPXMetadataExtractor@@SAPAV1@AAVRFs@@AAVRApaLsSession@@AAV?$RPointerArray@VCMPXCollectionType@@@@@Z @ 2 NONAME ; class CMPXMetadataExtractor * CMPXMetadataExtractor::NewL(class RFs &, class RApaLsSession &, class RPointerArray &) ?ExtractAlbumArtL@CMPXMetadataExtractor@@QAEHPAVCMPXMedia@@@Z @ 3 NONAME ; int CMPXMetadataExtractor::ExtractAlbumArtL(class CMPXMedia *) + ?CancelRequest@CMPXMetadataExtractor@@QAEXXZ @ 4 NONAME ; void CMPXMetadataExtractor::CancelRequest(void) + ?CreateMediaAsyncL@CMPXMetadataExtractor@@QAEXABVTDesC16@@PAVMMPXMetadataExtractorObserver@@H@Z @ 5 NONAME ; void CMPXMetadataExtractor::CreateMediaAsyncL(class TDesC16 const &, class MMPXMetadataExtractorObserver *, int) diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/metadataextractor/eabi/mpxmetadataextractorU.DEF --- a/mmappcomponents/harvester/metadataextractor/eabi/mpxmetadataextractorU.DEF Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/metadataextractor/eabi/mpxmetadataextractorU.DEF Fri May 14 16:21:14 2010 +0300 @@ -6,4 +6,6 @@ _ZTV19CMPXFileInfoUtility @ 5 NONAME ; ## _ZTV21CMPXMetadataExtractor @ 6 NONAME ; ## _ZN21CMPXMetadataExtractor16ExtractAlbumArtLEP9CMPXMedia @ 7 NONAME + _ZN21CMPXMetadataExtractor13CancelRequestEv @ 8 NONAME + _ZN21CMPXMetadataExtractor17CreateMediaAsyncLERK7TDesC16P29MMPXMetadataExtractorObserveri @ 9 NONAME diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp --- a/mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp Fri May 14 16:21:14 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: This class is responsible for reading file info -* Version : %version: da1mmcf#5.1.3.1.6 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: da1mmcf#5.1.3.1.6.2.1 % << Don't touch! Updated by Synergy at check-out. * * Copyright © 2005 Nokia. All rights reserved. */ @@ -65,6 +65,8 @@ // Destructor CMPXFileInfoUtility::~CMPXFileInfoUtility() { + MPX_DEBUG1("CMPXFileInfoUtility::~CMPXFileInfoUtility()<---"); + iAudioControllers.ResetAndDestroy(); //Reset(); // Close all MMF controllers in the cache @@ -88,6 +90,9 @@ } REComSession::FinalClose(); + + MPX_DEBUG1("CMPXFileInfoUtility::~CMPXFileInfoUtility()--->"); + } // ---------------------------------------------------------------------------- @@ -106,7 +111,7 @@ void CMPXFileInfoUtility::OpenFileL(RFile& aFile, const TDesC& aMimeType /*= KNullDesC*/) { - MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()"); + MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()<---"); Reset(); HBufC* fileNameBuf = HBufC::NewLC(KMaxFileName); @@ -125,10 +130,8 @@ TBool enableUI = EFalse; //Code taken from TMMFileHandleSource - - - //{//build custom mmf message packet - //based on CMMFileSourceSink::DoCreateFileHandleSourceConfigDataL() + //build custom mmf message packet + //based on CMMFileSourceSink::DoCreateFileHandleSourceConfigDataL() CBufFlat* buf = CBufFlat::NewL(KMCExpandSize); CleanupStack::PushL(buf); RBufWriteStream stream; @@ -152,22 +155,21 @@ stream.CommitL(); CleanupStack::PopAndDestroy(&stream); - //iSourceSinkData = buf->Ptr(0).AllocL(); - //CleanupStack::PopAndDestroy(buf); - //} - - // User::LeaveIfError(iController->Reset()); + // Add new data source + MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()- AddDataSource()"); - - // Add new data source User::LeaveIfError(iController->AddDataSource(KUidMmfFileSource, buf->Ptr(0), dataSource)); + MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()- AddDataSink()"); User::LeaveIfError(iController->AddDataSink(KUidMmfAudioOutput, KNullDesC8)); CleanupStack::PopAndDestroy(buf); + + MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()--->"); + } // ---------------------------------------------------------------------------- @@ -176,21 +178,25 @@ // void CMPXFileInfoUtility::Reset() { - // Reset the controller + MPX_DEBUG1("CMPXFileInfoUtility::Reset()<---"); + if(iController) { - if(iCurrentControllerUid == 0x101FAFB1 || iCurrentControllerUid == 0x10283351 - || iCurrentControllerUid == 0x10207B65 ) + // This is just for RA, WMA does not use controller + if( iCurrentControllerUid == 0x10207B65 ) // Helix Controller UID { + MPX_DEBUG1("CMPXFileInfoUtility::Reset(), Close Controller - only for RA "); iController->Close(); delete iController; iController = NULL; } else { - iController->Reset(); + MPX_DEBUG1("CMPXFileInfoUtility::Reset(), Reset Controller "); + iController->Reset(); } - } + } + MPX_DEBUG1("CMPXFileInfoUtility::Reset()--->"); } @@ -200,13 +206,15 @@ // TTimeIntervalMicroSeconds CMPXFileInfoUtility::Duration() { - MPX_DEBUG1("CMPXFileInfoUtility::Duration()"); + MPX_DEBUG1("CMPXFileInfoUtility::Duration()<---"); TTimeIntervalMicroSeconds duration; TInt err = iController->GetDuration(duration); if(err != KErrNone) { duration = TInt64(0); } + MPX_DEBUG2("CMPXFileInfoUtility::Duration(), duration = %ld --->", duration ); + return duration; } @@ -216,11 +224,16 @@ // TUint CMPXFileInfoUtility::BitRate() { + MPX_DEBUG1("CMPXFileInfoUtility::BitRate()<---"); + RMMFAudioControllerCustomCommands customCommands(*iController); TUint bitRate(0); //Ignore return value, bitRate remain 0 if error customCommands.GetSourceBitRate(bitRate); + + MPX_DEBUG2("CMPXFileInfoUtility::BitRate(), bit rate = %d --->", bitRate); + return bitRate; } @@ -230,11 +243,16 @@ // TUint CMPXFileInfoUtility::SampleRate() { + MPX_DEBUG1("CMPXFileInfoUtility::SampleRate()<---"); + RMMFAudioControllerCustomCommands customCommands(*iController); TUint sampleRate(0) ; //Ignore return value, sampleRate remain 0 if error customCommands.GetSourceSampleRate(sampleRate); + + MPX_DEBUG2("CMPXFileInfoUtility::SampleRate(), sample rate = %d --->", sampleRate); + return sampleRate; } @@ -245,7 +263,8 @@ const TDesC& aMimeType, TUid& aUid) { - MPX_DEBUG1("CMPXFileInfoUtility::FindControllerL()"); + MPX_DEBUG1("CMPXFileInfoUtility::FindControllerL()<---"); + TBool found(EFalse); TInt i(0); TInt j(0); @@ -292,6 +311,9 @@ } } } + + MPX_DEBUG1("CMPXFileInfoUtility::FindControllerL()--->"); + } // ---------------------------------------------------------------------------- @@ -302,11 +324,10 @@ // ---------------------------------------------------------------------------- void CMPXFileInfoUtility::OpenControllerL(const TUid& aUid) { - MPX_DEBUG1("CMPXFileInfoUtility::OpenControllerL()"); - - // 3gp and helix (wma) do not allow controller caching - if(aUid.iUid == 0x101FAFB1 || aUid.iUid == 0x10283351 - || aUid.iUid == 0x10207B65 ) + MPX_DEBUG1("CMPXFileInfoUtility::OpenControllerL()<---"); + + // RA does not allow controller caching + if( aUid.iUid == 0x10207B65 ) // RA Controller Uid { iCurrentControllerUid = aUid.iUid; TMMFPrioritySettings prioritySettings; @@ -319,9 +340,11 @@ User::LeaveIfError(iController->Open(aUid, prioritySettings)); iCurrentControllerUid = aUid.iUid; + MPX_DEBUG1("CMPXFileInfoUtility::OpenControllerL(), RA Controller open --->"); + return; } - + // check if we already have controller open for this UID in the cache RMMFController* controller = const_cast(iMMFControllers.Find(aUid.iUid)); @@ -335,10 +358,11 @@ TUint32* key = new (ELeave) TUint32(aUid.iUid); CleanupStack::PushL(key); - // Now instantiate the first controller in the array - TMMFPrioritySettings prioritySettings; - prioritySettings.iPriority = EMdaPriorityNormal; - prioritySettings.iPref = EMdaPriorityPreferenceTimeAndQuality; + + // Now instantiate the first controller in the array + TMMFPrioritySettings prioritySettings; + prioritySettings.iPriority = EMdaPriorityNormal; + prioritySettings.iPref = EMdaPriorityPreferenceTimeAndQuality; // Try to open controller User::LeaveIfError(controller->Open(aUid, @@ -353,7 +377,9 @@ iController = controller; iCurrentControllerUid = aUid.iUid; - + + MPX_DEBUG1("CMPXFileInfoUtility::OpenControllerL()--->"); + } // ----------------------------------------------------------------------------- @@ -362,6 +388,8 @@ // void CMPXFileInfoUtility::CreateAudioFormatsArrayL() { + MPX_DEBUG1("CMPXFileInfoUtility::CreateAudioFormatsArrayL()<---"); + CMMFControllerPluginSelectionParameters* cSelect = CMMFControllerPluginSelectionParameters::NewLC(); CMMFFormatSelectionParameters* fSelect = @@ -381,6 +409,9 @@ cSelect->ListImplementationsL(iAudioControllers); // Clean up CleanupStack::PopAndDestroy(3); //fSelect, cSelect, mediaIds + + MPX_DEBUG1("CMPXFileInfoUtility::CreateAudioFormatsArrayL()--->"); + } // End of File diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp --- a/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Fri May 14 16:21:14 2010 +0300 @@ -12,11 +12,10 @@ * Contributors: * * Description: Extracts metadata from a file -* Version : %version: da1mmcf#38.1.4.2.6.1.5.3.1 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: da1mmcf#38.1.4.2.6.1.5.3.2 % << Don't touch! Updated by Synergy at check-out. * */ - #include #include #include @@ -42,13 +41,18 @@ #include #include #include +#include #include "mpxmetadataextractor.h" #include "mpxfileinfoutility.h" + +_LIT( KWmaMimeType, "audio/x-ms-wma" ); +_LIT( KWmaCafMimeType, "x-caf-audio/x-ms-wma" ); + #ifdef RD_MPX_TNM_INTEGRATION _LIT( KImageFileType, "image/jpeg" ); const TInt KMPXTimeoutTimer = 3000000; // 3 seconds -const TInt KMPXMaxThumbnailRequest = 5; +const TInt KMPXMaxThumbnailRequest = 2; #endif //RD_MPX_TNM_INTEGRATION #ifdef ABSTRACTAUDIOALBUM_INCLUDED @@ -79,8 +83,11 @@ : iFs( aFs ), iAppArc( aAppArc ), iSupportedTypes( aTypes ), - iOutstandingThumbnailRequest(0), - iTNMBlockCount(0) + iCancelled( EFalse ), + iObs( NULL ), + iMedia( NULL ), + iMetadataOnly( EFalse ), + iFileOpenError( KErrNone ) { } @@ -95,6 +102,7 @@ iMetadataUtility = CMetaDataUtility::NewL(); iDrmMediaUtility = CMPXDrmMediaUtility::NewL(); iFileInfoUtil = CMPXFileInfoUtility::NewL(); + iTaskTimer = CPeriodic::NewL( CActive::EPriorityIdle ); #ifdef RD_MPX_TNM_INTEGRATION // Create Thumbnail Manager instance. This object is the observer. @@ -104,6 +112,8 @@ // create wait loop iTNSyncWait = new (ELeave) CActiveSchedulerWait; iTimer = CPeriodic::NewL( CActive::EPriorityIdle ); + iArrayTNRequestId.Reset(); + iArrayTasks.Reset(); #endif //RD_MPX_TNM_INTEGRATION } @@ -135,6 +145,8 @@ delete iMetadataUtility; delete iFileInfoUtil; delete iDrmMediaUtility; + delete iTaskTimer; + iFile.Close(); #ifdef RD_MPX_TNM_INTEGRATION delete iTNManager; if (iTNSyncWait && iTNSyncWait->IsStarted() ) @@ -143,149 +155,64 @@ } delete iTNSyncWait; delete iTimer; + iArrayTNRequestId.Close(); + iArrayTasks.Close(); #endif //RD_MPX_TNM_INTEGRATION - - MPX_DEBUG2("CMPXMetadataExtractor: TNM Block Count: %d ", iTNMBlockCount ); } // --------------------------------------------------------------------------- -// Constructs a media properties object +// Constructs a media properties object : synchronous function // --------------------------------------------------------------------------- // EXPORT_C void CMPXMetadataExtractor::CreateMediaL( const TDesC& aFile, CMPXMedia*& aNewProperty, TBool aMetadataOnly ) { - // make a copy of aFile - HBufC* fileName = HBufC::NewL(KMaxFileName); - CleanupStack::PushL( fileName ); - fileName->Des().Append( aFile ); - MPX_DEBUG2("CMPXMetadataExtractor::CreateMediaL %S <---", fileName ); - - RArray contentIDs; - contentIDs.AppendL( KMPXMediaIdGeneral ); - contentIDs.AppendL( KMPXMediaIdAudio ); - contentIDs.AppendL( KMPXMediaIdMusic ); - contentIDs.AppendL( KMPXMediaIdDrm ); - contentIDs.AppendL( KMPXMediaIdMTP ); - aNewProperty = NULL; - CMPXMedia* media = CMPXMedia::NewL( contentIDs.Array() ); - CleanupStack::PushL( media ); - contentIDs.Close(); - - // CMPXMedia default types - - media->SetTObjectValueL( KMPXMediaGeneralType, - EMPXItem ); - media->SetTObjectValueL( KMPXMediaGeneralCategory, - EMPXSong ); - - TParsePtrC parse( *fileName ); - - // Title, default is file name - media->SetTextValueL( KMPXMediaGeneralTitle, - parse.Name() ); - - // Default album track - media->SetTextValueL( KMPXMediaMusicAlbumTrack, - KNullDesC ); - - // Set the Mime Type and collection UID - // - if( !aMetadataOnly ) + MPX_FUNC("CMPXMetadataExtractor::CreateMediaL()"); + // check if we are still processing a request. + if ( iArrayTasks.Count() ) { - TInt index(KErrNotFound); - TInt count( iSupportedTypes.Count() ); - for (TInt i=0; i Extensions(); - const TDesC& ext = parse.Ext(); - if (!exts.FindIsq(ext, index2)) - { // found - index = i; - break; - } - } - if( KErrNotFound != index ) - { - MPX_DEBUG1("CMPXMetadataExtractor::CreateMediaPropertiesL apparc <---" ); - TInt mimeIndex = SupportedContainerTypeL( *fileName, index ); - User::LeaveIfError( mimeIndex ); - MPX_DEBUG1("CMPXMetadataExtractor::CreateMediaPropertiesL apparc --->" ); + MPX_DEBUG1("CMPXMetadataExtractor::CreateMediaL Request ongoing. Abort!" ); + User::Leave( KErrAbort ); + } - media->SetTextValueL( KMPXMediaGeneralMimeType, - iSupportedTypes[index]->Mimetypes()[mimeIndex] ); - - media->SetTObjectValueL( KMPXMediaGeneralCollectionId, - iSupportedTypes[index]->Uid() ); - } - else - { - User::Leave(KErrNotSupported); - } - } - else // other case use apparc to fetch and set mimetype - { - TDataType dataType; - TUid dummyUid(KNullUid); - iAppArc.AppForDocument(*fileName, dummyUid, dataType); - media->SetTextValueL( KMPXMediaGeneralMimeType,dataType.Des() ); - } - - // Use file handle here - // - RFile file; - TInt err = file.Open( iFs, *fileName, EFileRead | EFileShareReadersOrWriters ); - CleanupClosePushL(file); + iCancelled = EFalse; + iFileOpenError = KErrNone; + iObs = NULL; + aNewProperty = NULL; + iFileName = aFile; + iMetadataOnly = aMetadataOnly; - // Metadata related - // - if( err == KErrNone ) + // populate the task array + AddTasksL(); + + // execute all tasks in the array + while ( iArrayTasks.Count() ) { - const TDesC& mimeType = media->ValueText( KMPXMediaGeneralMimeType ); - HBufC8* mimeType8 = HBufC8::NewLC( mimeType.Length() ); - mimeType8->Des().Append( mimeType ); - TRAPD( metadataerror, iMetadataUtility->OpenFileL( file, *mimeType8 ) ); - CleanupStack::PopAndDestroy( mimeType8 ); - - // No problem - if( KErrNone == metadataerror ) + // execute task at index 0 + TRAPD( error, ExecuteTaskL() ); + if ( error || iCancelled ) { - // Add TRAPD to capture exception KErrNoMemory. - //If album art size is too large, trap this exception and SetDefaultL. - //Fix EYLU-7ESE5L - TRAPD( err, SetMediaPropertiesL( *media, *fileName ) ); - if ( KErrNoMemory == err ) + // cleanup + if ( iMedia != NULL ) { - SetDefaultL( *media ); + delete iMedia; + iMedia = NULL; } - } - else // Error, Set defaults - { - SetDefaultL( *media ); + iArrayTasks.Reset(); + if ( error ) + { + CleanUp(); + User::LeaveIfError( error ); + } + break; } - - // Reset the utility - iMetadataUtility->ResetL(); - } - else // Error, Set defaults - { - SetDefaultL( *media ); + + iArrayTasks.Remove( 0 ); } - // Common properties that we can extract - // - SetExtMediaPropertiesL( *media, *fileName, aMetadataOnly, file, err ); - CleanupStack::PopAndDestroy(&file); - - // Set the pointers now that the object is ready - // - CleanupStack::Pop( media ); - aNewProperty = media; - - CleanupStack::PopAndDestroy( fileName ); - MPX_DEBUG1("CMPXMetadataExtractor::CreateMediaPropertiesL --->"); + aNewProperty = iMedia; + CleanUp(); } // --------------------------------------------------------------------------- @@ -294,6 +221,7 @@ // void CMPXMetadataExtractor::SetDefaultL( CMPXMedia& aMediaProp ) { + MPX_FUNC("CMPXMetadataExtractor::SetDefaultL()"); // Comment aMediaProp.SetTextValueL( KMPXMediaGeneralComment, KNullDesC ); @@ -327,13 +255,21 @@ // Sets media object attributes from metadata utilities // --------------------------------------------------------------------------- // -void CMPXMetadataExtractor::SetMediaPropertiesL( CMPXMedia& aMedia, - const TDesC& aFile ) +void CMPXMetadataExtractor::SetMediaPropertiesL() { - MPX_DEBUG1("CMPXMetadataExtractor::SetMediaPropertiesL <---" ); + MPX_FUNC("CMPXMetadataExtractor::SetMediaPropertiesL()"); - const CMetaDataFieldContainer& metaCont = - iMetadataUtility->MetaDataFieldsL(); + const TDesC& mimeType = iMedia->ValueText( KMPXMediaGeneralMimeType ); + HBufC8* mimeType8 = HBufC8::NewLC( mimeType.Length() ); + mimeType8->Des().Append( mimeType ); + + // Continue to extract metadata even if fail. + TRAPD( metadataerror, iMetadataUtility->OpenFileL( iFile, *mimeType8 ) ); + MPX_DEBUG2("CMPXMetadataExtractor::CreateMediaL, error %d parsing metadata", + metadataerror ); + CleanupStack::PopAndDestroy( mimeType8 ); + + const CMetaDataFieldContainer& metaCont = iMetadataUtility->MetaDataFieldsL(); TInt count( metaCont.Count() ); for( TInt i=0; i0) { FindAndReplaceForbiddenChars(valptr, vallen); - aMedia.SetTextValueL(KMPXMediaGeneralTitle, *value); + iMedia->SetTextValueL(KMPXMediaGeneralTitle, *value); } break; } @@ -377,7 +312,7 @@ if (vallen>0) { FindAndReplaceForbiddenChars(valptr, vallen); - aMedia.SetTextValueL(KMPXMediaMusicArtist, *value); + iMedia->SetTextValueL(KMPXMediaMusicArtist, *value); } break; } @@ -389,7 +324,7 @@ if (vallen>0) { FindAndReplaceForbiddenChars(valptr, vallen); - aMedia.SetTextValueL(KMPXMediaMusicAlbum, *value ); + iMedia->SetTextValueL(KMPXMediaMusicAlbum, *value ); } break; } @@ -404,19 +339,19 @@ TDateTime dt; dt.SetYear( year ); TTime time( dt ); - aMedia.SetTObjectValueL( KMPXMediaMusicYear, + iMedia->SetTObjectValueL( KMPXMediaMusicYear, time.Int64() ); break; } case EMetaDataComment: { - aMedia.SetTextValueL( KMPXMediaGeneralComment, + iMedia->SetTextValueL( KMPXMediaGeneralComment, *value ); break; } case EMetaDataAlbumTrack: { - aMedia.SetTextValueL( KMPXMediaMusicAlbumTrack, + iMedia->SetTextValueL( KMPXMediaMusicAlbumTrack, *value ); break; } @@ -428,7 +363,7 @@ if (vallen>0) { FindAndReplaceForbiddenChars(valptr, vallen); - aMedia.SetTextValueL(KMPXMediaMusicGenre, *value); + iMedia->SetTextValueL(KMPXMediaMusicGenre, *value); } break; } @@ -440,50 +375,55 @@ if (vallen>0) { FindAndReplaceForbiddenChars(valptr, vallen); - aMedia.SetTextValueL(KMPXMediaMusicComposer, *value); + iMedia->SetTextValueL(KMPXMediaMusicComposer, *value); } break; } case EMetaDataUrl: case EMetaDataUserUrl: // fall through { - aMedia.SetTextValueL( KMPXMediaMusicURL, + iMedia->SetTextValueL( KMPXMediaMusicURL, *value ); break; } case EMetaDataJpeg: { -#ifdef RD_MPX_TNM_INTEGRATION - MPX_PERF_START(CMPXMetadataExtractor_SetMediaPropertiesL_JPEG_TNM); - TPtrC8 ptr8 = metaCont.Field8( EMetaDataJpeg ); - HBufC8* value8; - TRAPD( err, value8 = ptr8.AllocL() ); - if ( KErrNone != err ) - { - MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL - error jpeg = %i", err); - User::Leave( err ); - } - CleanupStack::PushL( value8 ); - AddMediaAlbumArtL( aMedia, aFile, *value8 ); - CleanupStack::Pop(value8); - MPX_PERF_END(CMPXMetadataExtractor_SetMediaPropertiesL_JPEG_TNM); -#else //RD_MPX_TNM_INTEGRATION - aMedia.SetTextValueL( KMPXMediaMusicAlbumArtFileName, - aFile ); -#endif //RD_MPX_TNM_INTEGRATION + // Album art handled in AddMediaAlbumArtL() break; } case EMetaDataCopyright: { - aMedia.SetTextValueL( KMPXMediaGeneralCopyright, + iMedia->SetTextValueL( KMPXMediaGeneralCopyright, *value ); break; } + case EMetaDataDuration: + { + const TDesC& mimeType = iMedia->ValueText( KMPXMediaGeneralMimeType ); + MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL, mimeType = %S", &mimeType); + + // Verify if WMA, get the duration + if( mimeType.Compare(KWmaMimeType) == 0 || mimeType.Compare(KWmaCafMimeType) == 0 ) + { + MPX_DEBUG1("CMPXMetadataExtractor::SetMediaPropertiesL- WMA"); + + // Perform the duration conversion + TLex lexer( *value ); + TInt32 duration ( 0 ); + lexer.Val( duration ); // [second] + duration *= 1000; // [msec] + + iMedia->SetTObjectValueL( KMPXMediaGeneralDuration, + duration ); + + MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL- duration = %i", duration); + } + break; + } case EMetaDataOriginalArtist: // fall through case EMetaDataVendor: // fall through case EMetaDataRating: // fall through case EMetaDataUniqueFileIdentifier: // fall through - case EMetaDataDuration: // fall through case EMetaDataDate: // fall through { // not used @@ -500,21 +440,15 @@ CleanupStack::PopAndDestroy( value ); } } - - MPX_DEBUG1("CMPXMetadataExtractor::SetMediaPropertiesL --->" ); } // --------------------------------------------------------------------------- // Sets extra media properties not returned by metadata utilities // --------------------------------------------------------------------------- // -void CMPXMetadataExtractor::SetExtMediaPropertiesL( CMPXMedia& aProp, - const TDesC& aFile, - TBool aMetadataOnly, - RFile& aFileHandle, - TInt aFileErr ) +void CMPXMetadataExtractor::SetExtMediaPropertiesL() { - MPX_DEBUG1("CMPXMetadataExtractor::SetExtMediaPropertiesL <---"); + MPX_FUNC("CMPXMetadataExtractor::SetExtMediaPropertiesL()"); // DB Flags to set // @@ -522,18 +456,16 @@ // File Path // - TParsePtrC parse( aFile ); - aProp.SetTextValueL( KMPXMediaGeneralUri, - aFile ); - aProp.SetTextValueL( KMPXMediaGeneralDrive, - parse.Drive() ); + TParsePtrC parse( iFileName ); + iMedia->SetTextValueL( KMPXMediaGeneralUri, iFileName ); + iMedia->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); // DRM Rights // CMPXMedia* drm = NULL; - TRAPD( drmError, iDrmMediaUtility->InitL( aFile ); - drm = CMPXMedia::NewL( *iDrmMediaUtility->GetMediaL( KMPXMediaDrmProtected.iAttributeId | - KMPXMediaDrmRightsStatus.iAttributeId ) ); + TRAPD( drmError, iDrmMediaUtility->InitL( iFileName ); + drm = CMPXMedia::NewL( *iDrmMediaUtility->GetMediaL( KMPXMediaDrmProtected.iAttributeId | + KMPXMediaDrmRightsStatus.iAttributeId ) ); ); TBool prot(EFalse); @@ -551,7 +483,7 @@ if( drm->IsSupported( KMPXMediaDrmRightsStatus ) ) { status = drm->ValueTObjectL(KMPXMediaDrmRightsStatus); - aProp.SetTObjectValueL(KMPXMediaDrmRightsStatus, status ); + iMedia->SetTObjectValueL(KMPXMediaDrmRightsStatus, status ); MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL -- status %i", status); } @@ -575,53 +507,65 @@ User::LeaveIfError( drmError ); } - aProp.SetTObjectValueL( KMPXMediaDrmProtected, prot ); - aProp.SetTObjectValueL( KMPXMediaMTPDrmStatus, (TUint16)prot ); + iMedia->SetTObjectValueL( KMPXMediaDrmProtected, prot ); + iMedia->SetTObjectValueL( KMPXMediaMTPDrmStatus, (TUint16)prot ); iDrmMediaUtility->Close(); - // File Size + // + // File Size --- The following needs MMF support // TInt size( 0 ); - if( aFileErr == KErrNone ) + if( iFileOpenError == KErrNone ) { - aFileHandle.Size( size ); - aProp.SetTObjectValueL( KMPXMediaGeneralSize, - size ); - - // Duration, bitrate, samplerate, etc - // - if( !aMetadataOnly ) + const TDesC& mimeType = iMedia->ValueText( KMPXMediaGeneralMimeType ); + MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL, mimeType = %S", &mimeType); + + // Verify if WMA, skip getting info from MMF + if( mimeType.Compare(KWmaMimeType) == 0 || mimeType.Compare(KWmaCafMimeType) == 0 ) + { + // No need to get MMF support + MPX_DEBUG1("CMPXMetadataExtractor::SetExtMediaPropertiesL, skip MMF "); + } + else { - TRAPD(err2, iFileInfoUtil->OpenFileL( - aFileHandle, - aProp.ValueText(KMPXMediaGeneralMimeType))); - MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL, file info util error %i", err2); - if( KErrNone == err2 ) - { - aProp.SetTObjectValueL( KMPXMediaAudioBitrate, - iFileInfoUtil->BitRate() ); - aProp.SetTObjectValueL( KMPXMediaAudioSamplerate, - iFileInfoUtil->SampleRate() ); - TInt64 duration = (TInt64) iFileInfoUtil->Duration().Int64() / 1000; // ms - aProp.SetTObjectValueL( KMPXMediaGeneralDuration, - duration ); - MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL -- duration %i", duration); + MPX_DEBUG1("CMPXMetadataExtractor::SetExtMediaPropertiesL, get MMF controller"); + iFile.Size( size ); + iMedia->SetTObjectValueL( KMPXMediaGeneralSize, size ); + + // Duration, bitrate, samplerate, etc + // + if( !iMetadataOnly ) + { + TRAPD(err2, iFileInfoUtil->OpenFileL( + iFile, + iMedia->ValueText(KMPXMediaGeneralMimeType))); + MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL, file info util error %i", err2); + if( KErrNone == err2 ) + { + iMedia->SetTObjectValueL( KMPXMediaAudioBitrate, + iFileInfoUtil->BitRate() ); + iMedia->SetTObjectValueL( KMPXMediaAudioSamplerate, + iFileInfoUtil->SampleRate() ); + TInt64 duration = (TInt64) iFileInfoUtil->Duration().Int64() / 1000; // ms + iMedia->SetTObjectValueL( KMPXMediaGeneralDuration, + duration ); + + MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL -- duration %i", duration); + } + + iFileInfoUtil->Reset(); } } } - else if( aFileErr == KErrNotFound || aFileErr == KErrPathNotFound ) + else if( iFileOpenError == KErrNotFound || iFileOpenError == KErrPathNotFound ) { dbFlags |= KMPXMediaGeneralFlagsIsInvalid; } // Finally set the db flag // - aProp.SetTObjectValueL( KMPXMediaGeneralFlags, + iMedia->SetTObjectValueL( KMPXMediaGeneralFlags, dbFlags ); - - iFileInfoUtil->Reset(); - - MPX_DEBUG1("CMPXMetadataExtractor::SetExtMediaPropertiesL --->"); } // --------------------------------------------------------------------------- @@ -631,6 +575,7 @@ TInt CMPXMetadataExtractor::SupportedContainerTypeL( const TDesC& aFile, TInt aIndex ) { + MPX_FUNC("CMPXMetadataExtractor::SupportedContainerTypeL()"); TInt index(KErrNotFound); TDataType dataType; @@ -664,11 +609,20 @@ // Callback but not used here // --------------------------------------------------------------------------- void CMPXMetadataExtractor::ThumbnailReady( TInt /*aError*/, - MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ ) + MThumbnailData& /*aThumbnail*/, TThumbnailRequestId aId ) { MPX_FUNC("CMPXMetadataExtractor::ThumbnailReady()"); - iOutstandingThumbnailRequest--; - if ( iOutstandingThumbnailRequest <= KMPXMaxThumbnailRequest ) + + // Remove thumbnail id from array. + TInt index = iArrayTNRequestId.Find( aId ); + if ( index >= 0 ) + { + iArrayTNRequestId.Remove( index ); + } + MPX_DEBUG2("CMPXMetadataExtractor::ThumbnailReady(): Outstanding Thumbnail Request = %d", + iArrayTNRequestId.Count()); + + if ( iArrayTNRequestId.Count() < KMPXMaxThumbnailRequest ) { StopWaitLoop(); } @@ -727,7 +681,8 @@ EXPORT_C TInt CMPXMetadataExtractor::ExtractAlbumArtL( CMPXMedia* aMedia ) { MPX_FUNC("CMPXMetadataExtractor::ExtractAlbumArtL()"); - TInt err = KErrNone; + TInt err = KErrNone; + iCancelled = EFalse; if ( !aMedia->IsSupported(KMPXMediaGeneralUri) ) { @@ -742,26 +697,41 @@ TPtrC ext( parse.Ext() ); if (ext.CompareF(KNonEmbeddedArtExt)== 0) { - #ifdef RD_MPX_TNM_INTEGRATION +#ifdef RD_MPX_TNM_INTEGRATION //check if can send TN request, If thumbnail creation is ongoing, wait til it is done CheckBeforeSendRequest(); - CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC( - path, KImageFileType ); - - - - iTNManager->CreateThumbnails( *source ); - - iOutstandingThumbnailRequest++; - CleanupStack::PopAndDestroy( source ); - - #endif + CThumbnailObjectSource* source( NULL ); + if (aMedia->IsSupported(KMPXMediaMTPSampleData)) + { + TBuf<20> mimeType(KImageFileType); + TInt sampleData = aMedia->ValueTObjectL(KMPXMediaMTPSampleData); + HBufC8* value8 = ((HBufC8*)sampleData)->Des().AllocLC(); // make a local copy of sampleData + source = CThumbnailObjectSource::NewLC( + value8, mimeType, path ); // give up ownership of value8 + + MPX_DEBUG1("CMPXMetadataExtractor::ExtractAlbumArtL source created from buffer"); + TThumbnailRequestId tnId = iTNManager->CreateThumbnails( *source ); + iArrayTNRequestId.Append( tnId ); + CleanupStack::PopAndDestroy( source ); + CleanupStack::Pop( value8 ); + } + else + { + source = CThumbnailObjectSource::NewLC( + path, KImageFileType ); + + MPX_DEBUG1("CMPXMetadataExtractor::ExtractAlbumArtL source created from path"); + TThumbnailRequestId tnId = iTNManager->CreateThumbnails( *source ); + iArrayTNRequestId.Append( tnId ); + CleanupStack::PopAndDestroy( source ); + } +#endif // RD_MPX_TNM_INTEGRATION } else { -#endif +#endif // ABSTRACTAUDIOALBUM_INCLUDED // create wanted fields array RArray wantedFields; CleanupClosePushL( wantedFields ); @@ -785,54 +755,16 @@ if ( !err ) { - TRAP( err, GetMediaAlbumArtL( *aMedia, path )); + //check if can send TN request, If thumbnail creation is ongoing, wait til it is done + CheckBeforeSendRequest(); + TRAP( err, AddMediaAlbumArtL( *aMedia, path )); } // Reset the utility iMetadataUtility->ResetL(); #ifdef ABSTRACTAUDIOALBUM_INCLUDED } -#endif - return err; - } - -// ---------------------------------------------------------------------------- -// Set album art. -// ---------------------------------------------------------------------------- -TInt CMPXMetadataExtractor::GetMediaAlbumArtL( CMPXMedia& aMedia, - const TDesC& aFile ) - { - MPX_FUNC("CMPXMetadataExtractor::GetMediaAlbumArtL()"); - TInt err = KErrNone; - // get metadata container. - const CMetaDataFieldContainer& metaCont = iMetadataUtility->MetaDataFieldsL(); - - TPtrC8 data8 = metaCont.Field8( EMetaDataJpeg ); - - if ( data8.Length() ) - { - MPX_DEBUG1("CMPXMetadataExtractor::GetMediaAlbumArtL(): Album art exist."); - -#ifdef RD_MPX_TNM_INTEGRATION - HBufC8* value8; - TRAPD( err, value8 = data8.AllocL() ); - if ( KErrNone != err ) - { - MPX_DEBUG2("CMPXMetadataExtractor::GetMediaAlbumArtL - error jpeg = %i", err); - User::Leave( err ); - } - CleanupStack::PushL( value8 ); - AddMediaAlbumArtL( aMedia, aFile, *value8 ); - CleanupStack::Pop(value8); -#else // RD_MPX_TNM_INTEGRATION - aMedia.SetTextValueL( KMPXMediaMusicAlbumArtFileName, aFile ); -#endif // RD_MPX_TNM_INTEGRATION - } - else - { - err = KErrNotFound; - } - +#endif // ABSTRACTAUDIOALBUM_INCLUDED return err; } @@ -840,38 +772,53 @@ // Add album art to media object. // ---------------------------------------------------------------------------- void CMPXMetadataExtractor::AddMediaAlbumArtL( CMPXMedia& aMedia, - const TDesC& aFile, - TDesC8& aValue ) + const TDesC& aFile ) { MPX_FUNC("CMPXMetadataExtractor::AddMediaAlbumArtL()"); -#ifdef RD_MPX_TNM_INTEGRATION - - //check if can send TN request, If thumbnail creation is ongoing, wait til it is done - CheckBeforeSendRequest(); - - aMedia.SetTextValueL( KMPXMediaMusicAlbumArtFileName, aFile ); - TBuf<256> mimeType; - mimeType.Copy( KImageFileType ); - CThumbnailObjectSource* source = CThumbnailObjectSource::NewLC( - &aValue, mimeType, aFile ); - iTNManager->CreateThumbnails( *source ); - CleanupStack::PopAndDestroy( source ); - aMedia.SetTextValueL( KMPXMediaMusicOriginalAlbumArtFileName, aFile ); - iOutstandingThumbnailRequest++; + // get metadata container. + const CMetaDataFieldContainer& metaCont = iMetadataUtility->MetaDataFieldsL(); + TPtrC8 data8 = metaCont.Field8( EMetaDataJpeg ); + + if ( data8.Length() ) + { + MPX_DEBUG1("CMPXMetadataExtractor::GetMediaAlbumArtL(): Album art exist."); +#ifdef RD_MPX_TNM_INTEGRATION + HBufC8* value8 = NULL; + TRAPD( err, value8 = data8.AllocL() ); + if ( KErrNone != err ) + { + MPX_DEBUG2("CMPXMetadataExtractor::GetMediaAlbumArtL - error jpeg = %i", err); + return; + } + CleanupStack::PushL( value8 ); + TBuf<256> mimeType; + mimeType.Copy( KImageFileType ); + CThumbnailObjectSource* source = CThumbnailObjectSource::NewL( + value8, mimeType, aFile ); + TThumbnailRequestId tnId = iTNManager->CreateThumbnails( *source ); + iArrayTNRequestId.Append( tnId ); // add thumbnail id to array + CleanupStack::Pop( value8 ); + aMedia.SetTextValueL( KMPXMediaMusicOriginalAlbumArtFileName, aFile ); #endif // RD_MPX_TNM_INTEGRATION + aMedia.SetTextValueL( KMPXMediaMusicAlbumArtFileName, aFile ); + } } +// ---------------------------------------------------------------------------- +// Check if can send request to TNM or not. +// ---------------------------------------------------------------------------- void CMPXMetadataExtractor::CheckBeforeSendRequest() { MPX_FUNC("CMPXMetadataExtractor::CheckBeforeSendRequest()"); #ifdef RD_MPX_TNM_INTEGRATION + MPX_DEBUG2("CMPXMetadataExtractor::CheckBeforeSendRequest(): Outstanding Thumbnail Request = %d", + iArrayTNRequestId.Count()); // If thumbnail creation is ongoing, wait til it is done - if ( iOutstandingThumbnailRequest > KMPXMaxThumbnailRequest ) + if ( iArrayTNRequestId.Count() >= KMPXMaxThumbnailRequest ) { MPX_DEBUG1("CMPXMetadataExtractor::CheckBeforeSendRequest(): Thumbnail creation ongoing!"); - iTNMBlockCount++; // Cancel timer. CancelTimeoutTimer(); // Start timer in case there is no callback from ThumbNail Manager. @@ -888,3 +835,292 @@ } #endif // RD_MPX_TNM_INTEGRATION } + +// ---------------------------------------------------------------------------- +// Cancel request. This will empty the task array and stop the wait loop. This +// will cause the CreateMediaL() to finish more quickly. +// ---------------------------------------------------------------------------- +EXPORT_C void CMPXMetadataExtractor::CancelRequest() + { + MPX_FUNC("CMPXMetadataExtractor::CancelRequest()"); + iCancelled = ETrue; + // Cancel all tasks + iArrayTasks.Reset(); + // Cancel all thumbnail request + CancelAllThumbnailRequests(); + StopWaitLoop(); + } + +// ---------------------------------------------------------------------------- +// Cancel all outstanding thumbnail requests. +// ---------------------------------------------------------------------------- +void CMPXMetadataExtractor::CancelAllThumbnailRequests() + { + MPX_FUNC("CMPXMetadataExtractor::CancelAllThumbnailRequests()"); +#ifdef RD_MPX_TNM_INTEGRATION + // TODO: remove comments when TNM make CancelRequest asynchronous. + /*TInt count = iArrayTNRequestId.Count(); + for ( TInt i=0; iCancelRequest( iArrayTNRequestId[i] ); + } + */ + iArrayTNRequestId.Reset(); +#endif // RD_MPX_TNM_INTEGRATION + } + +// ---------------------------------------------------------------------------- +// Create media and set default data and mimetype. +// ---------------------------------------------------------------------------- +void CMPXMetadataExtractor::DoCreateMediaL() + { + MPX_FUNC("CMPXMetadataExtractor::DoCreateMediaL()"); + RArray contentIDs; + contentIDs.AppendL( KMPXMediaIdGeneral ); + contentIDs.AppendL( KMPXMediaIdAudio ); + contentIDs.AppendL( KMPXMediaIdMusic ); + contentIDs.AppendL( KMPXMediaIdDrm ); + contentIDs.AppendL( KMPXMediaIdMTP ); + iMedia = CMPXMedia::NewL( contentIDs.Array() ); + contentIDs.Close(); + + // CMPXMedia default types + iMedia->SetTObjectValueL( KMPXMediaGeneralType, + EMPXItem ); + iMedia->SetTObjectValueL( KMPXMediaGeneralCategory, + EMPXSong ); + + TParsePtrC parse( iFileName ); + // Title, default is file name + iMedia->SetTextValueL( KMPXMediaGeneralTitle, + parse.Name() ); + // Default album track + iMedia->SetTextValueL( KMPXMediaMusicAlbumTrack, + KNullDesC ); + + // Set the Mime Type and collection UID + // + if( !iMetadataOnly ) + { + TInt index(KErrNotFound); + TInt count( iSupportedTypes.Count() ); + for (TInt i=0; i Extensions(); + const TDesC& ext = parse.Ext(); + if (!exts.FindIsq(ext, index2)) + { // found + index = i; + break; + } + } + if( KErrNotFound != index ) + { + MPX_DEBUG1("CMPXMetadataExtractor::DoCreateMediaL apparc <---" ); + TInt mimeIndex = SupportedContainerTypeL( iFileName, index ); + User::LeaveIfError( mimeIndex ); + MPX_DEBUG1("CMPXMetadataExtractor::DoCreateMediaL apparc --->" ); + + iMedia->SetTextValueL( KMPXMediaGeneralMimeType, + iSupportedTypes[index]->Mimetypes()[mimeIndex] ); + + iMedia->SetTObjectValueL( KMPXMediaGeneralCollectionId, + iSupportedTypes[index]->Uid() ); + } + else + { + User::Leave(KErrNotSupported); + } + } + else // other case use apparc to fetch and set mimetype + { + TDataType dataType; + TUid dummyUid(KNullUid); + iAppArc.AppForDocument(iFileName, dummyUid, dataType); + iMedia->SetTextValueL( KMPXMediaGeneralMimeType,dataType.Des() ); + } + + // Initially set default tags. + SetDefaultL( *iMedia ); + } + +// ---------------------------------------------------------------------------- +// Execute task at index 0. +// ---------------------------------------------------------------------------- +void CMPXMetadataExtractor::ExecuteTaskL() + { + MPX_FUNC("CMPXMetadataExtractor::ExecuteTasksL()"); + + if ( iArrayTasks.Count() ) + { + switch ( iArrayTasks[0] ) + { + case ETaskCreateMedia: + DoCreateMediaL(); + break; + case ETaskAddMetadata: + SetMediaPropertiesL(); + break; + case ETaskAddExtMetadata: + SetExtMediaPropertiesL(); + break; + case ETaskAddAlbumArt: + AddMediaAlbumArtL( *iMedia, iFileName ); + break; + case ETaskCheckBeforeSend: + CheckBeforeSendRequest(); + break; + default: + MPX_ASSERT(0); // Should never get here + } + } + } + +// --------------------------------------------------------------------------- +// Constructs a media properties object : asynchronous funcion +// --------------------------------------------------------------------------- +// +EXPORT_C void CMPXMetadataExtractor::CreateMediaAsyncL( const TDesC& aFile, + MMPXMetadataExtractorObserver* aObs, + TBool aMetadataOnly ) + { + MPX_FUNC("CMPXMetadataExtractor::CreateMediaAsyncL()"); + // check if we are still processing a request. + if ( iArrayTasks.Count() ) + { + MPX_DEBUG1("CMPXMetadataExtractor::CreateMediaAsyncL Request ongoing. Abort!" ); + User::Leave( KErrAbort ); + } + + iCancelled = EFalse; + iFileOpenError = KErrNone; + iFileName = aFile; + iObs = aObs; + iMetadataOnly = aMetadataOnly; + + // populate the task array + AddTasksL(); + + // Start task timer to execute task + if ( iArrayTasks.Count() ) + { + if ( iTaskTimer->IsActive() ) + { + iTaskTimer->Cancel(); + } + iTaskTimer->Start( 0, 0, TCallBack(TaskTimerCallback, this )); + } + } + +// --------------------------------------------------------------------------- +// Opens the file +// --------------------------------------------------------------------------- +// +TInt CMPXMetadataExtractor::OpenFile() + { + MPX_FUNC("CMPXMetadataExtractor::OpenFile()"); + + // Open the file + iFile.Close(); + TInt error = iFile.Open( iFs, iFileName, EFileRead | EFileShareReadersOrWriters ); + MPX_DEBUG2("CMPXMetadataExtractor::OpenFile open error = %d", error ); + return error; + } + +// --------------------------------------------------------------------------- +// Populat task array +// --------------------------------------------------------------------------- +// +void CMPXMetadataExtractor::AddTasksL() + { + MPX_FUNC("CMPXMetadataExtractor::AddTasks()"); + iFileOpenError = OpenFile(); + + // Do not change the order of the task below. + iArrayTasks.Reset(); + if ( iFileOpenError == KErrNone ) + { + iArrayTasks.AppendL(ETaskCreateMedia); + iArrayTasks.AppendL(ETaskAddMetadata); + iArrayTasks.AppendL(ETaskCheckBeforeSend); + iArrayTasks.AppendL(ETaskAddAlbumArt); + iArrayTasks.AppendL(ETaskAddExtMetadata); + } + else + { + iArrayTasks.AppendL(ETaskCreateMedia); + iArrayTasks.AppendL(ETaskAddExtMetadata); + } + } + +// ---------------------------------------------------------------------------- +// Callback for timer. +// ---------------------------------------------------------------------------- +TInt CMPXMetadataExtractor::TaskTimerCallback(TAny* aPtr) + { + MPX_FUNC("CMPXMetadataExtractor::TaskTimerCallback()"); + + CMPXMetadataExtractor* ptr = + static_cast(aPtr); + + ptr->HandleTaskTimerExpired(); + return KErrNone; + } + +// ---------------------------------------------------------------------------- +// Handle task timer expired +// ---------------------------------------------------------------------------- +void CMPXMetadataExtractor::HandleTaskTimerExpired() + { + MPX_FUNC("CMPXMetadataExtractor::HandleTaskTimerExpired()"); + + iTaskTimer->Cancel(); + // execute task at index 0 + TRAPD( error, ExecuteTaskL() ); + if ( error || iCancelled ) + { + // cleanup + if ( iMedia != NULL ) + { + delete iMedia; + iMedia = NULL; + } + iArrayTasks.Reset(); + } + + // Remove task at index 0. + if ( iArrayTasks.Count() ) + { + iArrayTasks.Remove( 0 ); + } + + // check if we have any more task to run + if ( iArrayTasks.Count() ) + { + // start task timer + iTaskTimer->Start( 0, 0, TCallBack(TaskTimerCallback, this )); + } + else + { + // done + if ( iObs && !iCancelled ) + { + iObs->HandleCreateMediaComplete( iMedia, error ); + } + + CleanUp(); + } + } + +// ---------------------------------------------------------------------------- +// Callback for timer. +// ---------------------------------------------------------------------------- +void CMPXMetadataExtractor::CleanUp() + { + MPX_FUNC("CMPXMetadataExtractor::CleanUp()"); + // Reset the utility + TRAP_IGNORE( iMetadataUtility->ResetL() ); + iFile.Close(); + } + diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/server/group/mpxharvester.mmp --- a/mmappcomponents/harvester/server/group/mpxharvester.mmp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/server/group/mpxharvester.mmp Fri May 14 16:21:14 2010 +0300 @@ -23,8 +23,12 @@ TARGET mpxharvesterserver.exe TARGETTYPE exe UID 0 0x101FFCA9 +#ifdef WINSCW EPOCHEAPSIZE 0x1000 0x500000 -EPOCSTACKSIZE 0X5000 +#else +EPOCHEAPSIZE 0x1000 0x800000 +#endif +EPOCSTACKSIZE 0x5000 CAPABILITY CAP_SERVER DRM AllFiles VENDORID VID_DEFAULT @@ -40,7 +44,6 @@ SOURCE mpxfsformatmonitor.cpp SOURCE mpxmediaremovalmonitor.cpp SOURCE mpxusbeventhandler.cpp -SOURCE mpxmmcejectmonitor.cpp USERINCLUDE ../inc USERINCLUDE ../../inc @@ -57,6 +60,5 @@ LIBRARY mpxplaylistengine.lib LIBRARY mpxplaybackutility.lib LIBRARY usbman.lib -#ifdef RD_MULTIPLE_DRIVE LIBRARY PlatformEnv.lib -#endif //RD_MULTIPLE_DRIVE +LIBRARY disknotifyhandler.lib diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/server/inc/mpxharvesterengine.h --- a/mmappcomponents/harvester/server/inc/mpxharvesterengine.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/server/inc/mpxharvesterengine.h Fri May 14 16:21:14 2010 +0300 @@ -32,7 +32,6 @@ class CMPXFsFormatMonitor; class CMPXMediaRemovalMonitor; class CMPXUsbEventHandler; -class CMPXMMCEjectMonitor; class CMPXMedia; class CMPXActiveTaskQueue; class CMPXPlaylistEngine; @@ -306,7 +305,6 @@ CMPXFsFormatMonitor* iFormatMonitor; CMPXMediaRemovalMonitor* iMediaRemovalMonitor; CMPXUsbEventHandler* iUSBMonitor; - CMPXMMCEjectMonitor* iMMCMonitor; // Internal task queue for async operations CMPXActiveTaskQueue* iTaskQueue; diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/server/inc/mpxmediaremovalmonitor.h --- a/mmappcomponents/harvester/server/inc/mpxmediaremovalmonitor.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/server/inc/mpxmediaremovalmonitor.h Fri May 14 16:21:14 2010 +0300 @@ -20,21 +20,35 @@ #define CMPXMEDIAREMOVALMONITOR_H #include +#include #include "mpxsystemeventobserver.h" /** * Class to monitors for File System dismount events + * + * The monitor emits events to MMPXSystemEventObserver + * + * EDiskDismountEvent whenever a drive is about to be dismounted (see RFs::NotifyDismount). + * EDiskRemovedEvent whenever a specified drive has been dismounted or removed + * EDiskInsertedEvent whenever a specified drive has been inserted + * + * The observer is expected to prepare the drive for dismounting during the EDiskDismountEvent. + * + * Dismount monitoring is automatically subscribed for all non-remote drives. + * Inserted/Removed monitor is subscribed only for the drive given in the constructor. + * * @lib Harvester * @since S60 3.0 */ -class CMPXMediaRemovalMonitor : public CActive +class CMPXMediaRemovalMonitor : public CBase, + public MDiskNotifyHandlerCallback { public: /** * Two-phase constructor - * @param aDrive drive to monitor + * @param aDrive drive to monitor for insertions and removals * @param aFs file server session * @param aObserver observer to the event */ @@ -55,24 +69,24 @@ * Virtual destructor */ virtual ~CMPXMediaRemovalMonitor(); - -protected: // From base class - /* - * From CActive + /** + * Check the status of the monitored disks + * + * This check should be done whenever there is a risk that we got + * a NotifyDismount even though the drives actually weren't dismounted. + * */ - void RunL(); - - /* - * From CActive - */ - void DoCancel(); + void CheckDriveStatus(); + +protected: // From Base Class /** - * From CActive + * From MDiskNotifyHandlerCallback */ - TInt RunError(TInt aError); - + void HandleNotifyDismount( TInt aError, const TDismountEvent& aEvent ); + void HandleNotifyDisk( TInt aError, const TDiskEvent& aEvent ); + private: /** @@ -89,6 +103,7 @@ private: // data + CDiskNotifyHandler* iDiskNotifyHandler; // Disk notification handler TInt iDrive; // Drive that is being monitored RFs& iFs; // File Session, not owned TBool iDiskRemoved; // Is the disk inserted diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/server/inc/mpxmmcejectmonitor.h --- a/mmappcomponents/harvester/server/inc/mpxmmcejectmonitor.h Mon May 03 12:58:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2007 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: MMC Eject monitor -* -*/ - - -#ifndef C_MPXMMCEJECTMONITOR_H -#define C_MPXMMCEJECTMONITOR_H - -#include -#include "mpxsystemeventobserver.h" - -// FORWARD DECLARATIONS -class CMPXPSKeyWatcher; - -/** - * Monitors a SysAp cenrep key for the "eject" mmc menu option - * - * @lib mpxharvester.exe - * @since S60 3.1 - */ -NONSHARABLE_CLASS( CMPXMMCEjectMonitor ) : public CBase, - public MMPXPSKeyObserver - { - -public: - - /** - * Two-phased constructor - */ - static CMPXMMCEjectMonitor* NewL( MMPXSystemEventObserver& aObserver ); - - /** - * Destructor - */ - virtual ~CMPXMMCEjectMonitor(); - -protected: // From Base Class - - /** - * From MMPXPSKeyObserver - */ - void HandlePSEvent( TUid aUid, TInt aKey ); - -private: - - /** - * 2nd phase constructor - */ - void ConstructL(); - - /** - * Private Constructor - */ - CMPXMMCEjectMonitor( MMPXSystemEventObserver& aObserver ); - -private: // data - - CMPXPSKeyWatcher* iPSKeyWatcher; // PS key watcher for USB PS key - - /* - * Observer interface to callback to an observer - */ - MMPXSystemEventObserver& iObserver; // Not owned - }; - -#endif // C_MPXMMCEJECTMONITOR_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/server/src/mpxfsformatmonitor.cpp --- a/mmappcomponents/harvester/server/src/mpxfsformatmonitor.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/server/src/mpxfsformatmonitor.cpp Fri May 14 16:21:14 2010 +0300 @@ -18,17 +18,11 @@ #include #include -#ifdef RD_MULTIPLE_DRIVE #include -#endif //RD_MULTIPLE_DRIVE #include #include "mpxfsformatmonitor.h" -#ifdef RD_MULTIPLE_DRIVE - static const TInt KDriveCount = 2; -#else - static const TInt KDriveCount = 1; -#endif +static const TInt KDriveCount = 2; // ======== MEMBER FUNCTIONS ======== @@ -142,6 +136,12 @@ } else // TOperationType::EEnd or TOperationType::EAbort { + //Ignore if formatting is ongoing + TBool formatting = iBackupSession->IsBackupOperationRunning(); + if ( formatting ) + { + return; + } for(TInt i=0; i -#ifdef RD_MULTIPLE_DRIVE #include -#endif //RD_MULTIPLE_DRIVE #include #include #include @@ -38,7 +36,6 @@ #include "mpxfsformatmonitor.h" #include "mpxmediaremovalmonitor.h" #include "mpxusbeventhandler.h" -#include "mpxmmcejectmonitor.h" #include "mpxharvesterfilehandler.h" #include "mpxharvesterengineobserver.h" #include "mpxhvsmsg.h" @@ -64,7 +61,6 @@ delete iFormatMonitor; delete iMediaRemovalMonitor; delete iUSBMonitor; - delete iMMCMonitor; delete iFileHandler; iFsSession.Close(); @@ -99,19 +95,15 @@ // MMC Removal monitor for Removable Drive TInt removableDrive( EDriveE ); -#ifdef RD_MULTIPLE_DRIVE User::LeaveIfError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRemovableMassStorage, removableDrive ) ); -#endif // RD_MULTIPLE_DRIVE iMediaRemovalMonitor = CMPXMediaRemovalMonitor::NewL( removableDrive, iFsSession, *this ); // USB Event monitor iUSBMonitor = CMPXUsbEventHandler::NewL( *this ); - // MMC Event handling - iMMCMonitor = CMPXMMCEjectMonitor::NewL( *this ); // File handler to handle file related events iFileHandler = CMPXHarvesterFileHandler::NewL( iFsSession ); @@ -445,6 +437,26 @@ TInt aData ) { MPX_DEBUG2("CMPXHarvesterEngine::HandleSystemEventL %i <---", aEvent); + + if( !iTempCollectionUtil ) + { + iTempCollectionUtil = MMPXCollectionUtility::NewL( NULL, KMcModeDefault ); + } + + // Must close collections ASAP in case drives may dismount soon + TRAP_IGNORE( + if (aEvent == EUSBMassStorageStartEvent) + { + DoStopPlaybackL(); + iTempCollectionUtil->Collection().CommandL ( EMcCloseCollection, -1 ); + iFileHandler->HandleSystemEventL ( EDiskDismountEvent, -1 ); + } + else if ( aEvent == EDiskDismountEvent ) + { + DoStopPlaybackL(); + iTempCollectionUtil->Collection().CommandL ( EMcCloseCollection, aData ); + } + ); // The engine is a delegator, it sends the events to // different classes to do the actual work @@ -455,14 +467,17 @@ TBool notify(ETrue); switch( aEvent ) { - case EPowerKeyEjectEvent: + case EDiskDismountEvent: { notify=EFalse; - TRAP_IGNORE( DoStopPlaybackL() ); break; } + case EUSBMassStorageStartEvent: + { + iDiskOpActive = ETrue; + } + break; case EFormatStartEvent: - case EUSBMassStorageStartEvent: // deliberate fall through case EUSBMTPStartEvent: // deliberate fall through case EDiskInsertedEvent: // deliberate fall through case EDiskRemovedEvent: // deliberate fall through @@ -470,11 +485,6 @@ iDiskOpActive = ETrue; TRAP_IGNORE( DoStopPlaybackL() ); } - default: //lint !e616 !e825 - if( !iTempCollectionUtil ) - { - iTempCollectionUtil = MMPXCollectionUtility::NewL( NULL, KMcModeDefault ); - } break; } @@ -514,6 +524,15 @@ iTempCollectionUtil = NULL; } } + + if ( aEvent == EUSBMassStorageEndEvent ) + { + // In some cases visit to USB Mass Storage mode can be so brief + // that drives are actually not dismounted at all even though we + // get a NotifyDismount event. In such cases we need to re-issue + // the NotifyDismount requests. + iMediaRemovalMonitor->CheckDriveStatus(); + } } // --------------------------------------------------------------------------- diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/server/src/mpxmediaremovalmonitor.cpp --- a/mmappcomponents/harvester/server/src/mpxmediaremovalmonitor.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/server/src/mpxmediaremovalmonitor.cpp Fri May 14 16:21:14 2010 +0300 @@ -18,6 +18,7 @@ #include #include +#include #include #include "mpxmediaremovalmonitor.h" @@ -27,14 +28,12 @@ // CMPXMediaRemovalMonitor::CMPXMediaRemovalMonitor ( TInt aDrive, RFs& aFs, MMPXSystemEventObserver& aObserver ) - : CActive(EPriorityHigh), - iDrive( aDrive ), + : iDrive( aDrive ), iFs( aFs ), iDiskRemoved( EFalse ), iObserver( aObserver ) { - CActiveScheduler::Add(this); } @@ -44,19 +43,11 @@ // void CMPXMediaRemovalMonitor::ConstructL() { - MPX_DEBUG1(_L("CMPXMediaRemovalMonitor::ConstructL <---")); + MPX_FUNC("CMPXMediaRemovalMonitor::ConstructL"); + iDiskNotifyHandler = CDiskNotifyHandler::NewL(*this, iFs); + CheckDriveStatus(); - // Initial state - TDriveInfo drive; - User::LeaveIfError(iFs.Drive(drive, TInt(iDrive))); - iDiskRemoved = (drive.iType == EMediaNotPresent); - - // Start listening - TNotifyType notType(ENotifyDisk); - iFs.NotifyChange( notType, iStatus ); - SetActive(); - - MPX_DEBUG1(_L("CMPXMediaRemovalMonitor::ConstructL --->")); + iDiskNotifyHandler->NotifyDisk(); } @@ -99,74 +90,95 @@ // CMPXMediaRemovalMonitor::~CMPXMediaRemovalMonitor() { - Cancel(); + delete iDiskNotifyHandler; + } + +void CMPXMediaRemovalMonitor::CheckDriveStatus() + { + TDriveList driveList; + TInt driveCount(0); + TInt error = DriveInfo::GetUserVisibleDrives( iFs, driveList, driveCount ); + if ( error != KErrNone ) + { + MPX_DEBUG2("CMPXMediaRemovalMonitor::CheckDriveStatus GetUserVisibleDrives failed, error %d", error); + return; + } + for( TInt driveNum = EDriveA; driveNum < EDriveZ; driveNum++ ) + { + if ( driveNum != EDriveC && driveList[driveNum] ) + { + TDriveInfo driveInfo; + if (iFs.Drive(driveInfo, driveNum) == KErrNone) + { + if ( (driveInfo.iType != EMediaNotPresent) && ! (driveInfo.iDriveAtt & KDriveAttRemote) ) + { + TInt error = iDiskNotifyHandler->NotifyDismount( driveNum ); + MPX_DEBUG3("CMPXMediaRemovalMonitor::CheckDriveStatus monitoring drive %d for dismounts, error %d", driveNum, error); + } + } + if ( driveNum == iDrive ) + { + iDiskRemoved = driveInfo.iType == EMediaNotPresent; + } + } + } } - // --------------------------------------------------------------------------- -// Service the request +// Callback when disk state has changed // --------------------------------------------------------------------------- // -void CMPXMediaRemovalMonitor::RunL() +void CMPXMediaRemovalMonitor::HandleNotifyDisk( TInt aError, const TDiskEvent& aEvent ) { - MPX_DEBUG1(_L("CMPXMediaRemovalMonitor::RunL <---")); - - // Re-subscribe to event. - TNotifyType notType(ENotifyDisk); - iFs.NotifyChange( notType, iStatus ); - SetActive(); - - // Check state - TDriveInfo drive; - User::LeaveIfError(iFs.Drive(drive, TInt(iDrive))); - - // Notify Observer - switch(drive.iType) - { - case EMediaNotPresent: - { - if (!iDiskRemoved) + MPX_DEBUG4("-->CMPXMediaRemovalMonitor::HandleNotifyDisk aError=%d event=%d drive=%d", aError, aEvent.iType, aEvent.iDrive); + if ( aError == KErrNone ) + { + if ( aEvent.iType == EDiskRemoved + || aEvent.iType == EDiskStatusChanged && aEvent.iInfo.iType == EMediaNotPresent ) + { + if ( aEvent.iDrive == iDrive && !iDiskRemoved ) { iObserver.HandleSystemEventL( EDiskRemovedEvent, iDrive ); + iDiskRemoved = ETrue; } - iDiskRemoved = ETrue; - break; - } - default: - { - if ( iDiskRemoved && - ( drive.iMediaAtt & ( KMediaAttLockable|KMediaAttLocked|KMediaAttHasPassword ) ) != - ( KMediaAttLockable|KMediaAttLocked|KMediaAttHasPassword ) ) + + } + else if ( ( aEvent.iType == EDiskAdded || aEvent.iType == EDiskStatusChanged ) + && aEvent.iInfo.iType != EMediaNotPresent ) + { + if ( aEvent.iDrive == iDrive + && iDiskRemoved + && ( aEvent.iInfo.iMediaAtt & ( KMediaAttLockable|KMediaAttLocked|KMediaAttHasPassword ) ) + != ( KMediaAttLockable|KMediaAttLocked|KMediaAttHasPassword ) ) { iObserver.HandleSystemEventL( EDiskInsertedEvent, iDrive ); iDiskRemoved = EFalse; } - break; - } + + if ( !( aEvent.iInfo.iDriveAtt & KDriveAttRemote ) ) + { + TInt error = iDiskNotifyHandler->NotifyDismount( aEvent.iDrive ); + MPX_DEBUG3("CMPXMediaRemovalMonitor::HandleNotifyDisk monitoring drive %d for dismounts, error %d", aEvent.iDrive, error); + } + } } - + + MPX_DEBUG1("<--CMPXMediaRemovalMonitor::HandleNotifyDisk"); + } - MPX_DEBUG1(_L("CMPXMediaRemovalMonitor::RunL --->")); - } // --------------------------------------------------------------------------- -// Cancel NotifyChange request from file system +// Callback when disk is about to be dismounted // --------------------------------------------------------------------------- // -void CMPXMediaRemovalMonitor::DoCancel() +void CMPXMediaRemovalMonitor::HandleNotifyDismount( TInt aError, const TDismountEvent& aEvent ) { - iFs.NotifyChangeCancel(); + MPX_DEBUG3("-->CMPXMediaRemovalMonitor::HandleNotifyDismount aError=%d drive=%d", aError, aEvent.iDrive); + if (aError == KErrNone) + { + TRAP_IGNORE( iObserver.HandleSystemEventL( EDiskDismountEvent, aEvent.iDrive ) ); + TInt error = iDiskNotifyHandler->AllowDismount( aEvent.iDrive ); + MPX_DEBUG3("CMPXMediaRemovalMonitor::HandleNotifyDismount allowed dismount of drive %d, error %d", aEvent.iDrive, error); + } + MPX_DEBUG1("<--CMPXMediaRemovalMonitor::HandleNotifyDismount"); } - -// ---------------------------------------------------------------------------- -// Handles a leave occurring in the request completion event handler RunL() -// Don't care if client has a User::Leave() in RunL(), keep monitoring for events -// ---------------------------------------------------------------------------- -// -TInt CMPXMediaRemovalMonitor::RunError(TInt aError) - { - MPX_DEBUG2("CMPXMediaRemovalMonitor::RunError(%d)", aError ); - (void) aError; // avoid compile warning in urel - - return KErrNone; - } diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/server/src/mpxmmcejectmonitor.cpp --- a/mmappcomponents/harvester/server/src/mpxmmcejectmonitor.cpp Mon May 03 12:58:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -/* -* Copyright (c) 2007 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: Monitor for PS Key changes from SysAp ( ME specific ) -* -*/ - - -#include -#include -#include -#include -#include "mpxmmcejectmonitor.h" - -// CONSTANTS -const TUid KMmcEjectAppUid = { 0x101FFAFC }; -const TUint KKeyMmcEjectOperation = 10; - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Constructor -// --------------------------------------------------------------------------- -// -CMPXMMCEjectMonitor::CMPXMMCEjectMonitor( MMPXSystemEventObserver& aObserver ) : - iObserver( aObserver ) - { - - } - - -// --------------------------------------------------------------------------- -// 2nd phased Constructor -// --------------------------------------------------------------------------- -// -void CMPXMMCEjectMonitor::ConstructL() - { - MPX_DEBUG1(_L("CMPXMMCEjectMonitor::ConstructL <---")); - - iPSKeyWatcher = CMPXPSKeyWatcher::NewL( KMmcEjectAppUid, - KKeyMmcEjectOperation, - this ); - MPX_DEBUG1(_L("CMPXMMCEjectMonitor::ConstructL --->")); - } - - -// --------------------------------------------------------------------------- -// Two-Phase Constructor -// --------------------------------------------------------------------------- -// -CMPXMMCEjectMonitor* CMPXMMCEjectMonitor::NewL( MMPXSystemEventObserver& aObserver ) - { - CMPXMMCEjectMonitor* self = new( ELeave ) CMPXMMCEjectMonitor( aObserver ); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CMPXMMCEjectMonitor::~CMPXMMCEjectMonitor() - { - delete iPSKeyWatcher; - } - -// --------------------------------------------------------------------------- -// Callback when a cenrep key is modified -// --------------------------------------------------------------------------- -// -void CMPXMMCEjectMonitor::HandlePSEvent( TUid /*aUid*/, TInt /*aKey*/ ) - { - MPX_DEBUG1(_L("CMPXMMCEjectMonitor::HandlePSEvent <---")); - TInt value; - iPSKeyWatcher->GetValue( value ); - - // MMC About to be ejected from power key menu - // - if( value == 1 ) - { - TRAP_IGNORE( iObserver.HandleSystemEventL( EPowerKeyEjectEvent, 0 ) ); - } - MPX_DEBUG1(_L("CMPXMMCEjectMonitor::HandlePSEvent --->")); - } - -// END OF FILE diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/harvester/server/src/mpxusbeventhandler.cpp --- a/mmappcomponents/harvester/server/src/mpxusbeventhandler.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/harvester/server/src/mpxusbeventhandler.cpp Fri May 14 16:21:14 2010 +0300 @@ -19,14 +19,12 @@ #include #include #include -#ifdef RD_MULTIPLE_DRIVE #include -#endif //RD_MULTIPLE_DRIVE #include #include #include #include -#include +#include #include #include "mpxusbeventhandler.h" @@ -151,11 +149,9 @@ // Use the default MMC drive TInt removableDrive( EDriveE ); -#ifdef RD_MULTIPLE_DRIVE User::LeaveIfError( DriveInfo::GetDefaultDrive( DriveInfo::EDefaultRemovableMassStorage, removableDrive ) ); -#endif // RD_MULTIPLE_DRIVE // Handle the Key event TInt value; @@ -176,9 +172,7 @@ iObserver.HandleSystemEventL( EUSBMTPEndEvent, removableDrive ); } MPX_DEBUG1("CMPXUsbEventHandler::DoHandlePSEvent - USB Start"); -#ifdef RD_MULTIPLE_DRIVE removableDrive = -1; -#endif // RD_MULTIPLE_DRIVE // Notify the state change (may happen more than once) iObserver.HandleSystemEventL( EUSBMassStorageStartEvent, removableDrive ); @@ -197,7 +191,7 @@ if (value == EMtpPSStatusActive) { - MPX_DEBUG1("CMPXUsbEventHandler::DoHandlePSEvent - MTP Start"); + MPX_DEBUG1("CMPXUsbEventHandler::DoHandlePSEvent - MTP Start"); iObserver.HandleSystemEventL( EUSBMTPStartEvent, removableDrive ); iState = KUsbPersonalityIdMTP; } diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mediaplayersettingsengine/group/MPSettEng.mmp --- a/mmappcomponents/mediaplayersettingsengine/group/MPSettEng.mmp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mediaplayersettingsengine/group/MPSettEng.mmp Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 4.1.4 % +// Version : %version: 4.1.5 % diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadataaccesswrapper.h --- a/mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadataaccesswrapper.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadataaccesswrapper.h Fri May 14 16:21:14 2010 +0300 @@ -75,7 +75,7 @@ * @param aFullFileName, full file name of file * @return void */ - void AddObjectL( const CMTPObjectMetaData& aObject ); + IMPORT_C void AddObjectL( const CMTPObjectMetaData& aObject ); /** * Set abstract media to DB @@ -124,7 +124,7 @@ * Deletes metadata information associated with the object * @param aObject, the object need to be deleted */ - void DeleteObjectL( const CMTPObjectMetaData& aObject ); + IMPORT_C void DeleteObjectL( const CMTPObjectMetaData& aObject ); /** * Set current drive info @@ -215,7 +215,7 @@ void ConstructL(); - TMPXGeneralCategory ContainerCategory( const TDesC& aFullFileName ); + TMPXGeneralCategory ContainerCategoryL( const TDesC& aFullFileName ); /** * Remove all dummy file of which format is "pla", and leave the "m3u" @@ -225,10 +225,11 @@ private: CMmMtpDpMetadataMpxAccess* iMmMtpDpMetadataMpxAccess; CMmMtpDpMetadataVideoAccess* iMmMtpDpMetadataVideoAccess; - TBool iOpenSession; MMTPDataProviderFramework& iFramework; - RFs& iFs; // should not remove this member data!!! + RFs& iFs; // should not remove this member data!!! + + TInt iOpenCount; // introduce to fix CollectionHelper Flush problem CDesCArray* iAbstractMediaArray; diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadatampxaccess.h --- a/mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadatampxaccess.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/inc/cmmmtpdpmetadatampxaccess.h Fri May 14 16:21:14 2010 +0300 @@ -56,6 +56,16 @@ public: /** + * OpenSession, introduce to fix CollectionHelper Flush problem + */ + void OpenSession(); + + /** + * CloseSession, introduce to fix CollectionHelper Flush problem + */ + void CloseSession(); + + /** * Get all abstract medias from MPX database in the assigned store * @param aStoreRoot, specify in which drive abstract medias are stored * @param aAbstractMedias, return result array @@ -203,6 +213,7 @@ TBuf iStoreRoot; MMPXCollectionHelper* iCollectionHelper; + HBufC8* iSampleData; #if defined(_DEBUG) || defined(MMMTPDP_PERFLOG) CMmMtpDpPerfLog* iPerfLog; diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/inc/mmmtpdpfiledefs.h --- a/mmappcomponents/mmmtpdataprovider/inc/mmmtpdpfiledefs.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/inc/mmmtpdpfiledefs.h Fri May 14 16:21:14 2010 +0300 @@ -59,9 +59,7 @@ //ODF container _LIT(KFormatExtensionODFAudio3GPP, "0xB984:ODF:audio/3gpp"); -_LIT(KFormatExtensionODFAudioMP4, "0xB982:ODF:audio/mp4"); _LIT(KFormatExtensionODFVideo3GPP, "0xB984:ODF:video/3gpp"); -_LIT(KFormatExtensionODFVideoMP4, "0xB982:ODF:video/mp4"); _LIT(KFormatExtensionM4A, "0xB982:m4a"); _LIT(KFormatExtensionO4A, "0xB984:o4a"); @@ -100,7 +98,7 @@ EMTPSubFormatCodeUnknown, EMTPSubFormatCodeAudio, EMTPSubFormatCodeVideo, - EMTPSubFormatCodeUndefine + EMTPSubFormatCodeUndefined }; #endif // MMMTPDPFILEDEFS_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/inc/cabstractmediamtpdataproviderenumerator.h --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/inc/cabstractmediamtpdataproviderenumerator.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/inc/cabstractmediamtpdataproviderenumerator.h Fri May 14 16:21:14 2010 +0300 @@ -99,10 +99,6 @@ TInt aError = KErrNone ); void InitStorageL( ); - - /** - * Scan next storage - */ void ScanNextL(); /** diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovider.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovider.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataprovider.cpp Fri May 14 16:21:14 2010 +0300 @@ -118,7 +118,7 @@ iSupportedPropPlaylist.Close(); iSupportedPropAll.Close(); - PRINT( _L( "MM MTP => CAbstractMediaMtpDataProvider::~CAbstractMediaMtpDataProvider" ) ); + PRINT( _L( "MM MTP <= CAbstractMediaMtpDataProvider::~CAbstractMediaMtpDataProvider" ) ); } void CAbstractMediaMtpDataProvider::Cancel() diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderenumerator.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderenumerator.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderenumerator.cpp Fri May 14 16:21:14 2010 +0300 @@ -269,7 +269,7 @@ // void CAbstractMediaMtpDataProviderEnumerator::ScanNextL() { - while (iStorages.Count() > 0) + while ( iStorages.Count() > 0 ) { while ( iEnumState < EEnumCount ) { @@ -284,14 +284,15 @@ return; } ++iEnumState; - if (iEnumState == EEnumCount) + if ( iEnumState == EEnumCount ) { break; } InitStorageL(); } + iStorages.Remove( 0 ); - if (iStorages.Count() == 0) + if ( iStorages.Count() == 0 ) { break; } @@ -313,8 +314,6 @@ // void CAbstractMediaMtpDataProviderEnumerator::RunL() { - PRINT( _L( "MM MTP => CAbstractMediaMtpDataProviderEnumerator::RunL" ) ); - // insert all abstract medias into handle db of framework CMPXMedia* media = ( *iAbstractMedias )[iCurrentIndex]; @@ -411,21 +410,39 @@ TUint32 parentHandle = iFramework.ObjectMgr().HandleL( parser.DriveAndPath() ); PERFLOGSTOP( KObjectManagerObjectUid ); - object->SetUint( CMTPObjectMetaData::EParentHandle, parentHandle ); - - PERFLOGSTART( KObjectManagerInsert ); - iObjectMgr.InsertObjectL( *object ); - PERFLOGSTOP( KObjectManagerInsert ); - - CleanupStack::PopAndDestroy( object );// - object + // MTP FW returns KMTPHandleNone for parentHandle in two situations: + // 1. The path doesn't exist + // 2. The object is under root directory + if ( parentHandle == KMTPHandleNone ) + { + if ( BaflUtils::PathExists( iFramework.Fs(), parser.DriveAndPath() ) ) + { + parentHandle = KMTPHandleNoParent; + } + else + { + iDataProvider.GetWrapperL().DeleteObjectL( *object ); + } + } - //Only remember the playlist file for clean up - if( iEnumState == EEnumPlaylist ) + if ( parentHandle != KMTPHandleNone ) { - iDataProvider.GetWrapperL().CreateDummyFile( aSuid ); + object->SetUint( CMTPObjectMetaData::EParentHandle, parentHandle ); + + PERFLOGSTART( KObjectManagerInsert ); + iObjectMgr.InsertObjectL( *object ); + PERFLOGSTOP( KObjectManagerInsert ); + + CleanupStack::PopAndDestroy( object );// - object - // remember the abstract media file for clean up - iDataProvider.GetWrapperL().AddDummyFileL( aSuid ); + //Only remember the playlist file for clean up + if( iEnumState == EEnumPlaylist ) + { + iDataProvider.GetWrapperL().CreateDummyFile( aSuid ); + + // remember the abstract media file for clean up + iDataProvider.GetWrapperL().AddDummyFileL( aSuid ); + } } PRINT( _L( "MM MTP <= CAbstractMediaMtpDataProviderEnumerator::AddEntryL" ) ); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderrenameobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderrenameobject.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/abstractmediamtpdataprovider/src/cabstractmediamtpdataproviderrenameobject.cpp Fri May 14 16:21:14 2010 +0300 @@ -89,14 +89,12 @@ iWrapper.AddDummyFileL( iFileName ); // Do not update MPX db to keep the same behavior in mass storage and device file manager. } - else - { - TRAPD( err, iWrapper.RenameObjectL( *iObjectInfo, iFileName ) ); + + TRAPD( err, iWrapper.RenameObjectL( *iObjectInfo, iFileName ) ); - // should not fail for 1 file, keep it going, as folder already renamed - if ( err != KErrNone ) - PRINT1( _L( "MM MTP <> CRenameObject::PerformAdditionalActionL err = %d" ), err ); - } + // should not fail for 1 file, keep it going, as folder already renamed + if ( err != KErrNone ) + PRINT1( _L( "MM MTP <> CRenameObject::PerformAdditionalActionL err = %d" ), err ); // the reference DB use PUID // so we needn't to update the reference DB diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/inc/cmediamtpdataprovider.h --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/inc/cmediamtpdataprovider.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/inc/cmediamtpdataprovider.h Fri May 14 16:21:14 2010 +0300 @@ -113,6 +113,12 @@ */ void RenameObjectL( const TMTPNotificationParamsHandle& aObject ); + /** + * Notify the data provider that the object has been added + * @param aObjectHandle the added object handle + */ + void ObjectAddedL( TUint32 aObjectHandle ); + void StartObjectEnumerationL( TUint32 aStorageId ); void StartStorageEnumerationL(); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/inc/mediamtpdataproviderconst.h --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/inc/mediamtpdataproviderconst.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/inc/mediamtpdataproviderconst.h Fri May 14 16:21:14 2010 +0300 @@ -111,7 +111,7 @@ enum TMmMtpFramesPerThousandSecondsRange { EMTPMinFramesPerThousandSeconds = 0x00000000, - EMTPMaxFramesPerThousandSeconds = 0x00007530, // 30000 frame per ms (30 frame/s), standard for progressive content + EMTPMaxFramesPerThousandSeconds = 0x00007530, // 30000 frame per thousand seconds (30 frame/s), standard for progressive content EMTPStepFramesPerThousandSeconds = 0x00000001 }; diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataprovider.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataprovider.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataprovider.cpp Fri May 14 16:21:14 2010 +0300 @@ -179,9 +179,11 @@ break; case EMTPStorageAdded: + PRINT( _L( "MM MTP <> CMediaMtpDataProvider::ProcessNotificationL EMTPStorageAdded event recvd" ) ); break; case EMTPStorageRemoved: + PRINT( _L( "MM MTP <> CMediaMtpDataProvider::ProcessNotificationL EMTPStorageRemoved event recvd" ) ); break; case EMTPRenameObject: @@ -189,6 +191,11 @@ RenameObjectL( *reinterpret_cast ( aParams ) ); break; + case EMTPObjectAdded: + PRINT( _L( "MM MTP <> CMediaMtpDataProvider::ProcessNotificationL EMTPObjectAdded event recvd" ) ); + ObjectAddedL(*reinterpret_cast(aParams)); + break; + default: PRINT( _L( "MM MTP <> CMediaMtpDataProvider::ProcessNotificationL default" ) ); // Ignore all other notifications. @@ -271,6 +278,8 @@ // introduce to cleanup DBs at each close session iMediaEnumerator->SessionClosedL(); + CMmMtpDpAccessSingleton::CloseSessionL(); + PRINT( _L( "MM MTP <= CMediaMtpDataProvider::SessionClosedL" ) ); } @@ -305,6 +314,27 @@ } // ----------------------------------------------------------------------------- +// CMediaMtpDataProvider::ObjectAddedL +// Process the added object +// ----------------------------------------------------------------------------- +// +void CMediaMtpDataProvider::ObjectAddedL( TUint32 aObjectHandle ) + { + PRINT1( _L( "MM MTP => CMediaMtpDataProvider::ObjectAddedL aHandle=0x%x" ), aObjectHandle ); + + CMTPObjectMetaData* object(CMTPObjectMetaData::NewLC()); + Framework().ObjectMgr().ObjectL( aObjectHandle, *object ); + + //Since the object's processor is not route to media dp, its format code should be reset + TUint formatCode = MmMtpDpUtility::FormatFromFilename( object->DesC( CMTPObjectMetaData::ESuid ) ); + object->SetUint( CMTPObjectMetaData::EFormatCode, formatCode ); + GetWrapperL().AddObjectL( *object ); + PRINT2( _L( "MM MTP => CMediaMtpDataProvider::ObjectAddedL formatCode=0x%x Suid=%S" ), formatCode, &(object->DesC( CMTPObjectMetaData::ESuid ) ) ); + CleanupStack::PopAndDestroy( object ); + PRINT( _L( "MM MTP <= CMediaMtpDataProvider::ObjectAddedL" ) ); + } + +// ----------------------------------------------------------------------------- // CMediaMtpDataProvider::StartObjectEnumerationL // Start object enumeration // ----------------------------------------------------------------------------- @@ -435,9 +465,7 @@ #endif //ODF container aStrings.AppendL(KFormatExtensionODFAudio3GPP); - aStrings.AppendL(KFormatExtensionODFAudioMP4); aStrings.AppendL(KFormatExtensionODFVideo3GPP); - aStrings.AppendL(KFormatExtensionODFVideoMP4); aStrings.AppendL(KFormatExtensionO4A); aStrings.AppendL(KFormatExtensionO4V); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/bwins/mmmtpdprequestprocessoru.def --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/bwins/mmmtpdprequestprocessoru.def Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/bwins/mmmtpdprequestprocessoru.def Fri May 14 16:21:14 2010 +0300 @@ -4,156 +4,157 @@ ?NewL@CDeleteObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 3 NONAME ; class MMmRequestProcessor * CDeleteObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) ?StartL@CRenameObject@@QAEXKABVTDesC16@@@Z @ 4 NONAME ; void CRenameObject::StartL(unsigned long, class TDesC16 const &) ??1CRequestUnknown@@UAE@XZ @ 5 NONAME ; CRequestUnknown::~CRequestUnknown(void) - ?Release@CRequestProcessor@@MAEXXZ @ 6 NONAME ; void CRequestProcessor::Release(void) - ?HandleRequestL@CRequestProcessor@@MAEHABVTMTPTypeRequest@@W4TMTPTransactionPhase@@@Z @ 7 NONAME ; int CRequestProcessor::HandleRequestL(class TMTPTypeRequest const &, enum TMTPTransactionPhase) - ??1CGetInterdependentPropDesc@@UAE@XZ @ 8 NONAME ; CGetInterdependentPropDesc::~CGetInterdependentPropDesc(void) - ?OpenSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 9 NONAME ; void CMmMtpDpAccessSingleton::OpenSessionL(void) - ?ServiceL@CGetPartialObject@@MAEXXZ @ 10 NONAME ; void CGetPartialObject::ServiceL(void) - ??0CGetObjectInfo@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 11 NONAME ; CGetObjectInfo::CGetObjectInfo(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?DoHandleResponsePhaseL@CRequestProcessor@@MAEHXZ @ 12 NONAME ; int CRequestProcessor::DoHandleResponsePhaseL(void) - ?NewL@CGetObjectPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 13 NONAME ; class MMmRequestProcessor * CGetObjectPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??0CGetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 14 NONAME ; CGetObjectPropValue::CGetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?CheckRequestL@CSetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 15 NONAME ; enum TMTPResponseCode CSetObjectPropList::CheckRequestL(void) - ?RunL@CRequestProcessor@@MAEXXZ @ 16 NONAME ; void CRequestProcessor::RunL(void) - ?ServiceL@CDeleteObject@@MAEXXZ @ 17 NONAME ; void CDeleteObject::ServiceL(void) - ?DoCancel@CSetObjectPropList@@MAEXXZ @ 18 NONAME ; void CSetObjectPropList::DoCancel(void) - ?CleanupDatabaseL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 19 NONAME ; void CMmMtpDpMetadataAccessWrapper::CleanupDatabaseL(void) - ?ServiceL@CGetObjectPropsSupported@@MAEXXZ @ 20 NONAME ; void CGetObjectPropsSupported::ServiceL(void) - ?NewL@CSetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 21 NONAME ; class MMmRequestProcessor * CSetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?Release@CMmMtpDpAccessSingleton@@SAXXZ @ 22 NONAME ; void CMmMtpDpAccessSingleton::Release(void) - ?UsbDisconnect@CSendObject@@MAEXXZ @ 23 NONAME ; void CSendObject::UsbDisconnect(void) - ?ServiceL@CGetFormatCapabilities@@MAEXXZ @ 24 NONAME ; void CGetFormatCapabilities::ServiceL(void) - ?GetAllReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXPAVCMPXMedia@@AAVCDesC16Array@@@Z @ 25 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllReferenceL(class CMPXMedia *, class CDesC16Array &) - ??1CSetObjectPropList@@UAE@XZ @ 26 NONAME ; CSetObjectPropList::~CSetObjectPropList(void) - ?ServiceL@CSetObjectPropList@@MAEXXZ @ 27 NONAME ; void CSetObjectPropList::ServiceL(void) - ??0CMoveObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 28 NONAME ; CMoveObject::CMoveObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??0CRequestUnknown@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 29 NONAME ; CRequestUnknown::CRequestUnknown(class MMTPDataProviderFramework &, class MMTPConnection &) - ?ConstructL@CGetObjectPropList@@IAEXXZ @ 30 NONAME ; void CGetObjectPropList::ConstructL(void) - ??1CSendObject@@UAE@XZ @ 31 NONAME ; CSendObject::~CSendObject(void) - ?ServiceMetaDataFromWrapperL@CGetObjectPropValue@@IAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 32 NONAME ; void CGetObjectPropValue::ServiceMetaDataFromWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?NewL@CGetObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 33 NONAME ; class MMmRequestProcessor * CGetObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectPropValue@@UAE@XZ @ 34 NONAME ; CGetObjectPropValue::~CGetObjectPropValue(void) - ?CreateL@CMmMtpDpAccessSingleton@@SAXAAVMMTPDataProviderFramework@@@Z @ 35 NONAME ; void CMmMtpDpAccessSingleton::CreateL(class MMTPDataProviderFramework &) - ??1CGetFormatCapabilities@@UAE@XZ @ 36 NONAME ; CGetFormatCapabilities::~CGetFormatCapabilities(void) - ?ServiceL@CSetObjectReferences@@EAEXXZ @ 37 NONAME ; void CSetObjectReferences::ServiceL(void) - ?DoHandleDataIToRPhaseL@CRequestProcessor@@MAEHXZ @ 38 NONAME ; int CRequestProcessor::DoHandleDataIToRPhaseL(void) - ??0CGetObjectPropList@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 39 NONAME ; CGetObjectPropList::CGetObjectPropList(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ConstructL@CCopyObject@@IAEXXZ @ 40 NONAME ; void CCopyObject::ConstructL(void) - ?SetMetaDataToWrapper@CPropertySettingUtility@@QAE?AW4TMTPResponseCode@@AAVMMmMtpDpConfig@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 41 NONAME ; enum TMTPResponseCode CPropertySettingUtility::SetMetaDataToWrapper(class MMmMtpDpConfig &, unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?ServiceL@CGetObjectPropValue@@MAEXXZ @ 42 NONAME ; void CGetObjectPropValue::ServiceL(void) - ??1CRenameObject@@UAE@XZ @ 43 NONAME ; CRenameObject::~CRenameObject(void) - ?Match@CRequestProcessor@@MBEHABVTMTPTypeEvent@@AAVMMTPConnection@@@Z @ 44 NONAME ; int CRequestProcessor::Match(class TMTPTypeEvent const &, class MMTPConnection &) const - ?DoHandleCompletingPhaseL@CSendObject@@MAEHXZ @ 45 NONAME ; int CSendObject::DoHandleCompletingPhaseL(void) - ?GetDrmStatus@MmMtpDpUtility@@SAHABVTDesC16@@@Z @ 46 NONAME ; int MmMtpDpUtility::GetDrmStatus(class TDesC16 const &) - ?RunL@CRenameObject@@MAEXXZ @ 47 NONAME ; void CRenameObject::RunL(void) - ??0CSetObjectReferences@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 48 NONAME ; CSetObjectReferences::CSetObjectReferences(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??0CRequestProcessor@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@HPBUTMTPRequestElementInfo@@@Z @ 49 NONAME ; CRequestProcessor::CRequestProcessor(class MMTPDataProviderFramework &, class MMTPConnection &, int, struct TMTPRequestElementInfo const *) - ?ServiceL@CSendObject@@MAEXXZ @ 50 NONAME ; void CSendObject::ServiceL(void) - ?Request@CRequestProcessor@@MBEABVTMTPTypeRequest@@XZ @ 51 NONAME ; class TMTPTypeRequest const & CRequestProcessor::Request(void) const - ?DoCancel@CRequestProcessor@@MAEXXZ @ 52 NONAME ; void CRequestProcessor::DoCancel(void) - ?CheckRequestL@CGetPartialObject@@MAE?AW4TMTPResponseCode@@XZ @ 53 NONAME ; enum TMTPResponseCode CGetPartialObject::CheckRequestL(void) - ?NewL@CRequestUnknown@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 54 NONAME ; class MMmRequestProcessor * CRequestUnknown::NewL(class MMTPDataProviderFramework &, class MMTPConnection &) - ??0CGetFormatCapabilities@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 55 NONAME ; CGetFormatCapabilities::CGetFormatCapabilities(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ConstructL@CGetObjectInfo@@AAEXXZ @ 56 NONAME ; void CGetObjectInfo::ConstructL(void) - ?UsbDisconnect@CRequestProcessor@@MAEXXZ @ 57 NONAME ; void CRequestProcessor::UsbDisconnect(void) - ?UpdateMusicCollectionL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 58 NONAME ; void CMmMtpDpMetadataAccessWrapper::UpdateMusicCollectionL(void) - ??1CMoveObject@@UAE@XZ @ 59 NONAME ; CMoveObject::~CMoveObject(void) - ?CheckRequestL@CSendObject@@MAE?AW4TMTPResponseCode@@XZ @ 60 NONAME ; enum TMTPResponseCode CSendObject::CheckRequestL(void) - ??1CRequestProcessor@@MAE@XZ @ 61 NONAME ; CRequestProcessor::~CRequestProcessor(void) - ?DoCancel@CDeleteObject@@MAEXXZ @ 62 NONAME ; void CDeleteObject::DoCancel(void) - ??1CGetObject@@UAE@XZ @ 63 NONAME ; CGetObject::~CGetObject(void) - ?NewL@CGetInterdependentPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 64 NONAME ; class MMmRequestProcessor * CGetInterdependentPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?DoHandleResponsePhaseL@CSetObjectReferences@@EAEHXZ @ 65 NONAME ; int CSetObjectReferences::DoHandleResponsePhaseL(void) - ?GetAccessWrapperL@CMmMtpDpAccessSingleton@@SAAAVCMmMtpDpMetadataAccessWrapper@@XZ @ 66 NONAME ; class CMmMtpDpMetadataAccessWrapper & CMmMtpDpAccessSingleton::GetAccessWrapperL(void) - ??1CGetObjectPropsSupported@@UAE@XZ @ 67 NONAME ; CGetObjectPropsSupported::~CGetObjectPropsSupported(void) - ?CheckRequestL@CGetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 68 NONAME ; enum TMTPResponseCode CGetObjectPropList::CheckRequestL(void) - ?HasDataphase@CRequestProcessor@@MBEHXZ @ 69 NONAME ; int CRequestProcessor::HasDataphase(void) const - ?NewL@CGetObjectPropsSupported@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 70 NONAME ; class MMmRequestProcessor * CGetObjectPropsSupported::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?Connection@CRequestProcessor@@MBEAAVMMTPConnection@@XZ @ 71 NONAME ; class MMTPConnection & CRequestProcessor::Connection(void) const - ?ConstructL@CGetFormatCapabilities@@AAEXXZ @ 72 NONAME ; void CGetFormatCapabilities::ConstructL(void) - ??1CPropertySettingUtility@@UAE@XZ @ 73 NONAME ; CPropertySettingUtility::~CPropertySettingUtility(void) - ??1CGetPartialObject@@UAE@XZ @ 74 NONAME ; CGetPartialObject::~CGetPartialObject(void) - ?NewL@CGetObjectInfo@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 75 NONAME ; class MMmRequestProcessor * CGetObjectInfo::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?RunError@CSetObjectPropList@@MAEHH@Z @ 76 NONAME ; int CSetObjectPropList::RunError(int) - ?CheckRequestL@CGetInterdependentPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 77 NONAME ; enum TMTPResponseCode CGetInterdependentPropDesc::CheckRequestL(void) - ?Match@CRequestUnknown@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 78 NONAME ; int CRequestUnknown::Match(class TMTPTypeRequest const &, class MMTPConnection &) const - ?ServiceL@CMoveObject@@MAEXXZ @ 79 NONAME ; void CMoveObject::ServiceL(void) - ?CreateDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 80 NONAME ; void CMmMtpDpMetadataAccessWrapper::CreateDummyFile(class TDesC16 const &) - ?CheckRequestL@CGetObjectPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 81 NONAME ; enum TMTPResponseCode CGetObjectPropDesc::CheckRequestL(void) - ?DoHandleRToIPhaseL@CRequestProcessor@@MAEHXZ @ 82 NONAME ; int CRequestProcessor::DoHandleRToIPhaseL(void) - ?ServiceMetaDataToWrapperL@CSetObjectPropValue@@IAE?AW4TMTPResponseCode@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 83 NONAME ; enum TMTPResponseCode CSetObjectPropValue::ServiceMetaDataToWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?NewCommonObjectPropertyL@CDescriptionUtility@@QAEPAVCMTPTypeObjectPropDesc@@G@Z @ 84 NONAME ; class CMTPTypeObjectPropDesc * CDescriptionUtility::NewCommonObjectPropertyL(unsigned short) - ?FormatFromFilename@MmMtpDpUtility@@SA?AW4TMTPFormatCode@@ABVTDesC16@@@Z @ 85 NONAME ; enum TMTPFormatCode MmMtpDpUtility::FormatFromFilename(class TDesC16 const &) - ?CheckRequestL@CSetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 86 NONAME ; enum TMTPResponseCode CSetObjectPropValue::CheckRequestL(void) - ??0CPropertySettingUtility@@IAE@XZ @ 87 NONAME ; CPropertySettingUtility::CPropertySettingUtility(void) - ?Match@CRequestProcessor@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 88 NONAME ; int CRequestProcessor::Match(class TMTPTypeRequest const &, class MMTPConnection &) const - ??0CCopyObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 89 NONAME ; CCopyObject::CCopyObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?CheckRequestL@CRequestProcessor@@MAE?AW4TMTPResponseCode@@XZ @ 90 NONAME ; enum TMTPResponseCode CRequestProcessor::CheckRequestL(void) - ?SendResponseL@CRequestProcessor@@IAEXW4TMTPResponseCode@@HPAK@Z @ 91 NONAME ; void CRequestProcessor::SendResponseL(enum TMTPResponseCode, int, unsigned long *) - ??0CGetPartialObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 92 NONAME ; CGetPartialObject::CGetPartialObject(class MMTPDataProviderFramework &, class MMTPConnection &) - ?DoHandleCompletingPhaseL@CRequestProcessor@@MAEHXZ @ 93 NONAME ; int CRequestProcessor::DoHandleCompletingPhaseL(void) - ?DeleteDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 94 NONAME ; void CMmMtpDpMetadataAccessWrapper::DeleteDummyFile(class TDesC16 const &) - ?DoSetObjectReferencesL@CSetObjectReferences@@IAEXABVCMTPObjectMetaData@@@Z @ 95 NONAME ; void CSetObjectReferences::DoSetObjectReferencesL(class CMTPObjectMetaData const &) - ??1CGetObjectInfo@@UAE@XZ @ 96 NONAME ; CGetObjectInfo::~CGetObjectInfo(void) - ?ServiceL@CRequestUnknown@@MAEXXZ @ 97 NONAME ; void CRequestUnknown::ServiceL(void) - ?HasDataphase@CSetObjectPropList@@MBEHXZ @ 98 NONAME ; int CSetObjectPropList::HasDataphase(void) const - ?NewL@CGetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 99 NONAME ; class MMmRequestProcessor * CGetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?DoCancel@CRenameObject@@MAEXXZ @ 100 NONAME ; void CRenameObject::DoCancel(void) - ??1CSetObjectReferences@@UAE@XZ @ 101 NONAME ; CSetObjectReferences::~CSetObjectReferences(void) - ?Match@CSendObject@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 102 NONAME ; int CSendObject::Match(class TMTPTypeRequest const &, class MMTPConnection &) const - ?NewL@CSetObjectPropList@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 103 NONAME ; class MMmRequestProcessor * CSetObjectPropList::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?GetAllAbstractMediaL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@PAPAVCMPXMediaArray@@W4TMPXGeneralCategory@@@Z @ 104 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllAbstractMediaL(class TDesC16 const &, class CMPXMediaArray * *, enum TMPXGeneralCategory) - ??1CCopyObject@@UAE@XZ @ 105 NONAME ; CCopyObject::~CCopyObject(void) - ?GetModifiedContentL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@AAHAAVCDesC16Array@@@Z @ 106 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetModifiedContentL(class TDesC16 const &, int &, class CDesC16Array &) + ?DeleteObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@@Z @ 6 NONAME ; void CMmMtpDpMetadataAccessWrapper::DeleteObjectL(class CMTPObjectMetaData const &) + ?Release@CRequestProcessor@@MAEXXZ @ 7 NONAME ; void CRequestProcessor::Release(void) + ?HandleRequestL@CRequestProcessor@@MAEHABVTMTPTypeRequest@@W4TMTPTransactionPhase@@@Z @ 8 NONAME ; int CRequestProcessor::HandleRequestL(class TMTPTypeRequest const &, enum TMTPTransactionPhase) + ??1CGetInterdependentPropDesc@@UAE@XZ @ 9 NONAME ; CGetInterdependentPropDesc::~CGetInterdependentPropDesc(void) + ?OpenSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 10 NONAME ; void CMmMtpDpAccessSingleton::OpenSessionL(void) + ?ServiceL@CGetPartialObject@@MAEXXZ @ 11 NONAME ; void CGetPartialObject::ServiceL(void) + ??0CGetObjectInfo@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 12 NONAME ; CGetObjectInfo::CGetObjectInfo(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?DoHandleResponsePhaseL@CRequestProcessor@@MAEHXZ @ 13 NONAME ; int CRequestProcessor::DoHandleResponsePhaseL(void) + ?NewL@CGetObjectPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 14 NONAME ; class MMmRequestProcessor * CGetObjectPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??0CGetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 15 NONAME ; CGetObjectPropValue::CGetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?CheckRequestL@CSetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 16 NONAME ; enum TMTPResponseCode CSetObjectPropList::CheckRequestL(void) + ?RunL@CRequestProcessor@@MAEXXZ @ 17 NONAME ; void CRequestProcessor::RunL(void) + ?ServiceL@CDeleteObject@@MAEXXZ @ 18 NONAME ; void CDeleteObject::ServiceL(void) + ?DoCancel@CSetObjectPropList@@MAEXXZ @ 19 NONAME ; void CSetObjectPropList::DoCancel(void) + ?CleanupDatabaseL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 20 NONAME ; void CMmMtpDpMetadataAccessWrapper::CleanupDatabaseL(void) + ?ServiceL@CGetObjectPropsSupported@@MAEXXZ @ 21 NONAME ; void CGetObjectPropsSupported::ServiceL(void) + ?NewL@CSetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 22 NONAME ; class MMmRequestProcessor * CSetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?Release@CMmMtpDpAccessSingleton@@SAXXZ @ 23 NONAME ; void CMmMtpDpAccessSingleton::Release(void) + ?UsbDisconnect@CSendObject@@MAEXXZ @ 24 NONAME ; void CSendObject::UsbDisconnect(void) + ?ServiceL@CGetFormatCapabilities@@MAEXXZ @ 25 NONAME ; void CGetFormatCapabilities::ServiceL(void) + ?GetAllReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXPAVCMPXMedia@@AAVCDesC16Array@@@Z @ 26 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllReferenceL(class CMPXMedia *, class CDesC16Array &) + ??1CSetObjectPropList@@UAE@XZ @ 27 NONAME ; CSetObjectPropList::~CSetObjectPropList(void) + ?ServiceL@CSetObjectPropList@@MAEXXZ @ 28 NONAME ; void CSetObjectPropList::ServiceL(void) + ??0CMoveObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 29 NONAME ; CMoveObject::CMoveObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??0CRequestUnknown@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 30 NONAME ; CRequestUnknown::CRequestUnknown(class MMTPDataProviderFramework &, class MMTPConnection &) + ?ConstructL@CGetObjectPropList@@IAEXXZ @ 31 NONAME ; void CGetObjectPropList::ConstructL(void) + ??1CSendObject@@UAE@XZ @ 32 NONAME ; CSendObject::~CSendObject(void) + ?ServiceMetaDataFromWrapperL@CGetObjectPropValue@@IAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 33 NONAME ; void CGetObjectPropValue::ServiceMetaDataFromWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?NewL@CGetObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 34 NONAME ; class MMmRequestProcessor * CGetObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectPropValue@@UAE@XZ @ 35 NONAME ; CGetObjectPropValue::~CGetObjectPropValue(void) + ?CreateL@CMmMtpDpAccessSingleton@@SAXAAVMMTPDataProviderFramework@@@Z @ 36 NONAME ; void CMmMtpDpAccessSingleton::CreateL(class MMTPDataProviderFramework &) + ??1CGetFormatCapabilities@@UAE@XZ @ 37 NONAME ; CGetFormatCapabilities::~CGetFormatCapabilities(void) + ?ServiceL@CSetObjectReferences@@EAEXXZ @ 38 NONAME ; void CSetObjectReferences::ServiceL(void) + ?DoHandleDataIToRPhaseL@CRequestProcessor@@MAEHXZ @ 39 NONAME ; int CRequestProcessor::DoHandleDataIToRPhaseL(void) + ??0CGetObjectPropList@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 40 NONAME ; CGetObjectPropList::CGetObjectPropList(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ConstructL@CCopyObject@@IAEXXZ @ 41 NONAME ; void CCopyObject::ConstructL(void) + ?SetMetaDataToWrapper@CPropertySettingUtility@@QAE?AW4TMTPResponseCode@@AAVMMmMtpDpConfig@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 42 NONAME ; enum TMTPResponseCode CPropertySettingUtility::SetMetaDataToWrapper(class MMmMtpDpConfig &, unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?ServiceL@CGetObjectPropValue@@MAEXXZ @ 43 NONAME ; void CGetObjectPropValue::ServiceL(void) + ??1CRenameObject@@UAE@XZ @ 44 NONAME ; CRenameObject::~CRenameObject(void) + ?Match@CRequestProcessor@@MBEHABVTMTPTypeEvent@@AAVMMTPConnection@@@Z @ 45 NONAME ; int CRequestProcessor::Match(class TMTPTypeEvent const &, class MMTPConnection &) const + ?DoHandleCompletingPhaseL@CSendObject@@MAEHXZ @ 46 NONAME ; int CSendObject::DoHandleCompletingPhaseL(void) + ?GetDrmStatus@MmMtpDpUtility@@SAHABVTDesC16@@@Z @ 47 NONAME ; int MmMtpDpUtility::GetDrmStatus(class TDesC16 const &) + ?RunL@CRenameObject@@MAEXXZ @ 48 NONAME ; void CRenameObject::RunL(void) + ??0CSetObjectReferences@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 49 NONAME ; CSetObjectReferences::CSetObjectReferences(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??0CRequestProcessor@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@HPBUTMTPRequestElementInfo@@@Z @ 50 NONAME ; CRequestProcessor::CRequestProcessor(class MMTPDataProviderFramework &, class MMTPConnection &, int, struct TMTPRequestElementInfo const *) + ?ServiceL@CSendObject@@MAEXXZ @ 51 NONAME ; void CSendObject::ServiceL(void) + ?Request@CRequestProcessor@@MBEABVTMTPTypeRequest@@XZ @ 52 NONAME ; class TMTPTypeRequest const & CRequestProcessor::Request(void) const + ?DoCancel@CRequestProcessor@@MAEXXZ @ 53 NONAME ; void CRequestProcessor::DoCancel(void) + ?CheckRequestL@CGetPartialObject@@MAE?AW4TMTPResponseCode@@XZ @ 54 NONAME ; enum TMTPResponseCode CGetPartialObject::CheckRequestL(void) + ?NewL@CRequestUnknown@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 55 NONAME ; class MMmRequestProcessor * CRequestUnknown::NewL(class MMTPDataProviderFramework &, class MMTPConnection &) + ??0CGetFormatCapabilities@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 56 NONAME ; CGetFormatCapabilities::CGetFormatCapabilities(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ConstructL@CGetObjectInfo@@AAEXXZ @ 57 NONAME ; void CGetObjectInfo::ConstructL(void) + ?UsbDisconnect@CRequestProcessor@@MAEXXZ @ 58 NONAME ; void CRequestProcessor::UsbDisconnect(void) + ?UpdateMusicCollectionL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 59 NONAME ; void CMmMtpDpMetadataAccessWrapper::UpdateMusicCollectionL(void) + ??1CMoveObject@@UAE@XZ @ 60 NONAME ; CMoveObject::~CMoveObject(void) + ?CheckRequestL@CSendObject@@MAE?AW4TMTPResponseCode@@XZ @ 61 NONAME ; enum TMTPResponseCode CSendObject::CheckRequestL(void) + ??1CRequestProcessor@@MAE@XZ @ 62 NONAME ; CRequestProcessor::~CRequestProcessor(void) + ?DoCancel@CDeleteObject@@MAEXXZ @ 63 NONAME ; void CDeleteObject::DoCancel(void) + ??1CGetObject@@UAE@XZ @ 64 NONAME ; CGetObject::~CGetObject(void) + ?NewL@CGetInterdependentPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 65 NONAME ; class MMmRequestProcessor * CGetInterdependentPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?AddObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@@Z @ 66 NONAME ; void CMmMtpDpMetadataAccessWrapper::AddObjectL(class CMTPObjectMetaData const &) + ?DoHandleResponsePhaseL@CSetObjectReferences@@EAEHXZ @ 67 NONAME ; int CSetObjectReferences::DoHandleResponsePhaseL(void) + ?GetAccessWrapperL@CMmMtpDpAccessSingleton@@SAAAVCMmMtpDpMetadataAccessWrapper@@XZ @ 68 NONAME ; class CMmMtpDpMetadataAccessWrapper & CMmMtpDpAccessSingleton::GetAccessWrapperL(void) + ??1CGetObjectPropsSupported@@UAE@XZ @ 69 NONAME ; CGetObjectPropsSupported::~CGetObjectPropsSupported(void) + ?CheckRequestL@CGetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 70 NONAME ; enum TMTPResponseCode CGetObjectPropList::CheckRequestL(void) + ?HasDataphase@CRequestProcessor@@MBEHXZ @ 71 NONAME ; int CRequestProcessor::HasDataphase(void) const + ?NewL@CGetObjectPropsSupported@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 72 NONAME ; class MMmRequestProcessor * CGetObjectPropsSupported::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?Connection@CRequestProcessor@@MBEAAVMMTPConnection@@XZ @ 73 NONAME ; class MMTPConnection & CRequestProcessor::Connection(void) const + ?ConstructL@CGetFormatCapabilities@@AAEXXZ @ 74 NONAME ; void CGetFormatCapabilities::ConstructL(void) + ??1CPropertySettingUtility@@UAE@XZ @ 75 NONAME ; CPropertySettingUtility::~CPropertySettingUtility(void) + ??1CGetPartialObject@@UAE@XZ @ 76 NONAME ; CGetPartialObject::~CGetPartialObject(void) + ?NewL@CGetObjectInfo@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 77 NONAME ; class MMmRequestProcessor * CGetObjectInfo::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?RunError@CSetObjectPropList@@MAEHH@Z @ 78 NONAME ; int CSetObjectPropList::RunError(int) + ?CheckRequestL@CGetInterdependentPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 79 NONAME ; enum TMTPResponseCode CGetInterdependentPropDesc::CheckRequestL(void) + ?Match@CRequestUnknown@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 80 NONAME ; int CRequestUnknown::Match(class TMTPTypeRequest const &, class MMTPConnection &) const + ?ServiceL@CMoveObject@@MAEXXZ @ 81 NONAME ; void CMoveObject::ServiceL(void) + ?CreateDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 82 NONAME ; void CMmMtpDpMetadataAccessWrapper::CreateDummyFile(class TDesC16 const &) + ?CheckRequestL@CGetObjectPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 83 NONAME ; enum TMTPResponseCode CGetObjectPropDesc::CheckRequestL(void) + ?DoHandleRToIPhaseL@CRequestProcessor@@MAEHXZ @ 84 NONAME ; int CRequestProcessor::DoHandleRToIPhaseL(void) + ?ServiceMetaDataToWrapperL@CSetObjectPropValue@@IAE?AW4TMTPResponseCode@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 85 NONAME ; enum TMTPResponseCode CSetObjectPropValue::ServiceMetaDataToWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?FormatFromFilename@MmMtpDpUtility@@SA?AW4TMTPFormatCode@@ABVTDesC16@@@Z @ 86 NONAME ; enum TMTPFormatCode MmMtpDpUtility::FormatFromFilename(class TDesC16 const &) + ?CheckRequestL@CSetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 87 NONAME ; enum TMTPResponseCode CSetObjectPropValue::CheckRequestL(void) + ??0CPropertySettingUtility@@IAE@XZ @ 88 NONAME ; CPropertySettingUtility::CPropertySettingUtility(void) + ?Match@CRequestProcessor@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 89 NONAME ; int CRequestProcessor::Match(class TMTPTypeRequest const &, class MMTPConnection &) const + ??0CCopyObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 90 NONAME ; CCopyObject::CCopyObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?CheckRequestL@CRequestProcessor@@MAE?AW4TMTPResponseCode@@XZ @ 91 NONAME ; enum TMTPResponseCode CRequestProcessor::CheckRequestL(void) + ?SendResponseL@CRequestProcessor@@IAEXW4TMTPResponseCode@@HPAK@Z @ 92 NONAME ; void CRequestProcessor::SendResponseL(enum TMTPResponseCode, int, unsigned long *) + ??0CGetPartialObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 93 NONAME ; CGetPartialObject::CGetPartialObject(class MMTPDataProviderFramework &, class MMTPConnection &) + ?DoHandleCompletingPhaseL@CRequestProcessor@@MAEHXZ @ 94 NONAME ; int CRequestProcessor::DoHandleCompletingPhaseL(void) + ?DeleteDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 95 NONAME ; void CMmMtpDpMetadataAccessWrapper::DeleteDummyFile(class TDesC16 const &) + ?DoSetObjectReferencesL@CSetObjectReferences@@IAEXABVCMTPObjectMetaData@@@Z @ 96 NONAME ; void CSetObjectReferences::DoSetObjectReferencesL(class CMTPObjectMetaData const &) + ??1CGetObjectInfo@@UAE@XZ @ 97 NONAME ; CGetObjectInfo::~CGetObjectInfo(void) + ?ServiceL@CRequestUnknown@@MAEXXZ @ 98 NONAME ; void CRequestUnknown::ServiceL(void) + ?HasDataphase@CSetObjectPropList@@MBEHXZ @ 99 NONAME ; int CSetObjectPropList::HasDataphase(void) const + ?NewL@CGetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 100 NONAME ; class MMmRequestProcessor * CGetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?DoCancel@CRenameObject@@MAEXXZ @ 101 NONAME ; void CRenameObject::DoCancel(void) + ??1CSetObjectReferences@@UAE@XZ @ 102 NONAME ; CSetObjectReferences::~CSetObjectReferences(void) + ?Match@CSendObject@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 103 NONAME ; int CSendObject::Match(class TMTPTypeRequest const &, class MMTPConnection &) const + ?NewL@CSetObjectPropList@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 104 NONAME ; class MMmRequestProcessor * CSetObjectPropList::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?GetAllAbstractMediaL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@PAPAVCMPXMediaArray@@W4TMPXGeneralCategory@@@Z @ 105 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllAbstractMediaL(class TDesC16 const &, class CMPXMediaArray * *, enum TMPXGeneralCategory) + ??1CCopyObject@@UAE@XZ @ 106 NONAME ; CCopyObject::~CCopyObject(void) ?RunL@CGetObjectPropList@@MAEXXZ @ 107 NONAME ; void CGetObjectPropList::RunL(void) - ?NewRangeFormDescriptionL@CDescriptionUtility@@QAEPAVCMTPTypeObjectPropDesc@@GKKKH@Z @ 108 NONAME ; class CMTPTypeObjectPropDesc * CDescriptionUtility::NewRangeFormDescriptionL(unsigned short, unsigned long, unsigned long, unsigned long, int) - ?RunError@CRequestProcessor@@MAEHH@Z @ 109 NONAME ; int CRequestProcessor::RunError(int) - ?SessionId@CRequestProcessor@@MAEKXZ @ 110 NONAME ; unsigned long CRequestProcessor::SessionId(void) - ??0CDescriptionUtility@@IAE@XZ @ 111 NONAME ; CDescriptionUtility::CDescriptionUtility(void) - ?HandleEventL@CRequestProcessor@@MAEXABVTMTPTypeEvent@@@Z @ 112 NONAME ; void CRequestProcessor::HandleEventL(class TMTPTypeEvent const &) - ?NewL@CGetPartialObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 113 NONAME ; class MMmRequestProcessor * CGetPartialObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?HasDataphase@CSetObjectReferences@@EBEHXZ @ 114 NONAME ; int CSetObjectReferences::HasDataphase(void) const - ?ConstructL@CGetInterdependentPropDesc@@IAEXXZ @ 115 NONAME ; void CGetInterdependentPropDesc::ConstructL(void) - ?RunError@CGetObjectPropList@@MAEHH@Z @ 116 NONAME ; int CGetObjectPropList::RunError(int) - ?DoHandleResponsePhaseL@CSetObjectPropList@@MAEHXZ @ 117 NONAME ; int CSetObjectPropList::DoHandleResponsePhaseL(void) - ??0CDeleteObject@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 118 NONAME ; CDeleteObject::CDeleteObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?NewL@CRenameObject@@SAPAV1@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 119 NONAME ; class CRenameObject * CRenameObject::NewL(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) - ?RenameObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@ABVTDesC16@@@Z @ 120 NONAME ; void CMmMtpDpMetadataAccessWrapper::RenameObjectL(class CMTPObjectMetaData const &, class TDesC16 const &) - ?GetObjectMetadataValueL@CMmMtpDpMetadataAccessWrapper@@QAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 121 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetObjectMetadataValueL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?AddDummyFileL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 122 NONAME ; void CMmMtpDpMetadataAccessWrapper::AddDummyFileL(class TDesC16 const &) - ??0CGetObjectPropDesc@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 123 NONAME ; CGetObjectPropDesc::CGetObjectPropDesc(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ConstructL@CGetObjectPropDesc@@AAEXXZ @ 124 NONAME ; void CGetObjectPropDesc::ConstructL(void) - ??0CGetInterdependentPropDesc@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 125 NONAME ; CGetInterdependentPropDesc::CGetInterdependentPropDesc(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectPropDesc@@UAE@XZ @ 126 NONAME ; CGetObjectPropDesc::~CGetObjectPropDesc(void) - ?ServiceL@CGetObjectPropDesc@@MAEXXZ @ 127 NONAME ; void CGetObjectPropDesc::ServiceL(void) - ?HasDataphase@CSetObjectPropValue@@MBEHXZ @ 128 NONAME ; int CSetObjectPropValue::HasDataphase(void) const - ?ServiceL@CCopyObject@@MAEXXZ @ 129 NONAME ; void CCopyObject::ServiceL(void) - ?CheckRequestL@CGetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 130 NONAME ; enum TMTPResponseCode CGetObjectPropValue::CheckRequestL(void) - ?CloseSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 131 NONAME ; void CMmMtpDpAccessSingleton::CloseSessionL(void) - ?NewL@CGetFormatCapabilities@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 132 NONAME ; class MMmRequestProcessor * CGetFormatCapabilities::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ReceiveDataL@CRequestProcessor@@IAEXAAVMMTPType@@@Z @ 133 NONAME ; void CRequestProcessor::ReceiveDataL(class MMTPType &) - ??1CDescriptionUtility@@UAE@XZ @ 134 NONAME ; CDescriptionUtility::~CDescriptionUtility(void) - ?RunL@CSetObjectPropList@@MAEXXZ @ 135 NONAME ; void CSetObjectPropList::RunL(void) - ?ConstructL@CMoveObject@@IAEXXZ @ 136 NONAME ; void CMoveObject::ConstructL(void) - ?NewL@CSendObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 137 NONAME ; class MMmRequestProcessor * CSendObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectReferences@@UAE@XZ @ 138 NONAME ; CGetObjectReferences::~CGetObjectReferences(void) - ?HasDataphase@CSendObject@@MBEHXZ @ 139 NONAME ; int CSendObject::HasDataphase(void) const - ??1CSetObjectPropValue@@UAE@XZ @ 140 NONAME ; CSetObjectPropValue::~CSetObjectPropValue(void) - ?ConstructL@CRenameObject@@IAEXXZ @ 141 NONAME ; void CRenameObject::ConstructL(void) - ?SendDataL@CRequestProcessor@@IAEXABVMMTPType@@@Z @ 142 NONAME ; void CRequestProcessor::SendDataL(class MMTPType const &) - ?DoHandleResponsePhaseL@CSendObject@@MAEHXZ @ 143 NONAME ; int CSendObject::DoHandleResponsePhaseL(void) - ?SetReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@AAVCDesC16Array@@@Z @ 144 NONAME ; void CMmMtpDpMetadataAccessWrapper::SetReferenceL(class CMTPObjectMetaData const &, class CDesC16Array &) - ?DoCancel@CGetObjectPropList@@MAEXXZ @ 145 NONAME ; void CGetObjectPropList::DoCancel(void) - ?ServiceL@CGetInterdependentPropDesc@@MAEXXZ @ 146 NONAME ; void CGetInterdependentPropDesc::ServiceL(void) - ?DoHandleRequestPhaseL@CRequestProcessor@@MAEHXZ @ 147 NONAME ; int CRequestProcessor::DoHandleRequestPhaseL(void) - ?GetAbstractMediaNameL@CMmMtpDpMetadataAccessWrapper@@QAEPAVHBufC16@@PAVCMPXMedia@@W4TMPXGeneralCategory@@@Z @ 148 NONAME ; class HBufC16 * CMmMtpDpMetadataAccessWrapper::GetAbstractMediaNameL(class CMPXMedia *, enum TMPXGeneralCategory) - ?ServiceL@CSetObjectPropValue@@MAEXXZ @ 149 NONAME ; void CSetObjectPropValue::ServiceL(void) - ?RunError@CRenameObject@@MAEHH@Z @ 150 NONAME ; int CRenameObject::RunError(int) - ??1CDeleteObject@@UAE@XZ @ 151 NONAME ; CDeleteObject::~CDeleteObject(void) - ?DoHandleResponsePhaseL@CGetPartialObject@@MAEHXZ @ 152 NONAME ; int CGetPartialObject::DoHandleResponsePhaseL(void) - ?CheckRequestL@CGetFormatCapabilities@@MAE?AW4TMTPResponseCode@@XZ @ 153 NONAME ; enum TMTPResponseCode CGetFormatCapabilities::CheckRequestL(void) - ??0CSetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 154 NONAME ; CSetObjectPropValue::CSetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectPropList@@UAE@XZ @ 155 NONAME ; CGetObjectPropList::~CGetObjectPropList(void) - ?ServiceL@CGetObjectPropList@@MAEXXZ @ 156 NONAME ; void CGetObjectPropList::ServiceL(void) - ??0CRenameObject@@IAE@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 157 NONAME ; CRenameObject::CRenameObject(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) + ?GetModifiedContentL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@AAHAAVCDesC16Array@@@Z @ 108 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetModifiedContentL(class TDesC16 const &, int &, class CDesC16Array &) + ?NewRangeFormDescriptionL@CDescriptionUtility@@QAEPAVCMTPTypeObjectPropDesc@@GKKKH@Z @ 109 NONAME ; class CMTPTypeObjectPropDesc * CDescriptionUtility::NewRangeFormDescriptionL(unsigned short, unsigned long, unsigned long, unsigned long, int) + ?RunError@CRequestProcessor@@MAEHH@Z @ 110 NONAME ; int CRequestProcessor::RunError(int) + ?SessionId@CRequestProcessor@@MAEKXZ @ 111 NONAME ; unsigned long CRequestProcessor::SessionId(void) + ??0CDescriptionUtility@@IAE@XZ @ 112 NONAME ; CDescriptionUtility::CDescriptionUtility(void) + ?HandleEventL@CRequestProcessor@@MAEXABVTMTPTypeEvent@@@Z @ 113 NONAME ; void CRequestProcessor::HandleEventL(class TMTPTypeEvent const &) + ?NewL@CGetPartialObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 114 NONAME ; class MMmRequestProcessor * CGetPartialObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?HasDataphase@CSetObjectReferences@@EBEHXZ @ 115 NONAME ; int CSetObjectReferences::HasDataphase(void) const + ?ConstructL@CGetInterdependentPropDesc@@IAEXXZ @ 116 NONAME ; void CGetInterdependentPropDesc::ConstructL(void) + ?RunError@CGetObjectPropList@@MAEHH@Z @ 117 NONAME ; int CGetObjectPropList::RunError(int) + ?DoHandleResponsePhaseL@CSetObjectPropList@@MAEHXZ @ 118 NONAME ; int CSetObjectPropList::DoHandleResponsePhaseL(void) + ??0CDeleteObject@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 119 NONAME ; CDeleteObject::CDeleteObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?NewL@CRenameObject@@SAPAV1@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 120 NONAME ; class CRenameObject * CRenameObject::NewL(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) + ?RenameObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@ABVTDesC16@@@Z @ 121 NONAME ; void CMmMtpDpMetadataAccessWrapper::RenameObjectL(class CMTPObjectMetaData const &, class TDesC16 const &) + ?GetObjectMetadataValueL@CMmMtpDpMetadataAccessWrapper@@QAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 122 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetObjectMetadataValueL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?AddDummyFileL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 123 NONAME ; void CMmMtpDpMetadataAccessWrapper::AddDummyFileL(class TDesC16 const &) + ??0CGetObjectPropDesc@@AAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 124 NONAME ; CGetObjectPropDesc::CGetObjectPropDesc(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ConstructL@CGetObjectPropDesc@@AAEXXZ @ 125 NONAME ; void CGetObjectPropDesc::ConstructL(void) + ??0CGetInterdependentPropDesc@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 126 NONAME ; CGetInterdependentPropDesc::CGetInterdependentPropDesc(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectPropDesc@@UAE@XZ @ 127 NONAME ; CGetObjectPropDesc::~CGetObjectPropDesc(void) + ?ServiceL@CGetObjectPropDesc@@MAEXXZ @ 128 NONAME ; void CGetObjectPropDesc::ServiceL(void) + ?HasDataphase@CSetObjectPropValue@@MBEHXZ @ 129 NONAME ; int CSetObjectPropValue::HasDataphase(void) const + ?ServiceL@CCopyObject@@MAEXXZ @ 130 NONAME ; void CCopyObject::ServiceL(void) + ?CheckRequestL@CGetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 131 NONAME ; enum TMTPResponseCode CGetObjectPropValue::CheckRequestL(void) + ?CloseSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 132 NONAME ; void CMmMtpDpAccessSingleton::CloseSessionL(void) + ?NewL@CGetFormatCapabilities@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 133 NONAME ; class MMmRequestProcessor * CGetFormatCapabilities::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ReceiveDataL@CRequestProcessor@@IAEXAAVMMTPType@@@Z @ 134 NONAME ; void CRequestProcessor::ReceiveDataL(class MMTPType &) + ??1CDescriptionUtility@@UAE@XZ @ 135 NONAME ; CDescriptionUtility::~CDescriptionUtility(void) + ?RunL@CSetObjectPropList@@MAEXXZ @ 136 NONAME ; void CSetObjectPropList::RunL(void) + ?ConstructL@CMoveObject@@IAEXXZ @ 137 NONAME ; void CMoveObject::ConstructL(void) + ?NewL@CSendObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 138 NONAME ; class MMmRequestProcessor * CSendObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectReferences@@UAE@XZ @ 139 NONAME ; CGetObjectReferences::~CGetObjectReferences(void) + ?HasDataphase@CSendObject@@MBEHXZ @ 140 NONAME ; int CSendObject::HasDataphase(void) const + ??1CSetObjectPropValue@@UAE@XZ @ 141 NONAME ; CSetObjectPropValue::~CSetObjectPropValue(void) + ?ConstructL@CRenameObject@@IAEXXZ @ 142 NONAME ; void CRenameObject::ConstructL(void) + ?SendDataL@CRequestProcessor@@IAEXABVMMTPType@@@Z @ 143 NONAME ; void CRequestProcessor::SendDataL(class MMTPType const &) + ?DoHandleResponsePhaseL@CSendObject@@MAEHXZ @ 144 NONAME ; int CSendObject::DoHandleResponsePhaseL(void) + ?SetReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@AAVCDesC16Array@@@Z @ 145 NONAME ; void CMmMtpDpMetadataAccessWrapper::SetReferenceL(class CMTPObjectMetaData const &, class CDesC16Array &) + ?DoCancel@CGetObjectPropList@@MAEXXZ @ 146 NONAME ; void CGetObjectPropList::DoCancel(void) + ?ServiceL@CGetInterdependentPropDesc@@MAEXXZ @ 147 NONAME ; void CGetInterdependentPropDesc::ServiceL(void) + ?DoHandleRequestPhaseL@CRequestProcessor@@MAEHXZ @ 148 NONAME ; int CRequestProcessor::DoHandleRequestPhaseL(void) + ?GetAbstractMediaNameL@CMmMtpDpMetadataAccessWrapper@@QAEPAVHBufC16@@PAVCMPXMedia@@W4TMPXGeneralCategory@@@Z @ 149 NONAME ; class HBufC16 * CMmMtpDpMetadataAccessWrapper::GetAbstractMediaNameL(class CMPXMedia *, enum TMPXGeneralCategory) + ?ServiceL@CSetObjectPropValue@@MAEXXZ @ 150 NONAME ; void CSetObjectPropValue::ServiceL(void) + ?RunError@CRenameObject@@MAEHH@Z @ 151 NONAME ; int CRenameObject::RunError(int) + ??1CDeleteObject@@UAE@XZ @ 152 NONAME ; CDeleteObject::~CDeleteObject(void) + ?DoHandleResponsePhaseL@CGetPartialObject@@MAEHXZ @ 153 NONAME ; int CGetPartialObject::DoHandleResponsePhaseL(void) + ?CheckRequestL@CGetFormatCapabilities@@MAE?AW4TMTPResponseCode@@XZ @ 154 NONAME ; enum TMTPResponseCode CGetFormatCapabilities::CheckRequestL(void) + ??0CSetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 155 NONAME ; CSetObjectPropValue::CSetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectPropList@@UAE@XZ @ 156 NONAME ; CGetObjectPropList::~CGetObjectPropList(void) + ?ServiceL@CGetObjectPropList@@MAEXXZ @ 157 NONAME ; void CGetObjectPropList::ServiceL(void) + ??0CRenameObject@@IAE@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 158 NONAME ; CRenameObject::CRenameObject(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/eabi/mmmtpdprequestprocessoru.def --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/eabi/mmmtpdprequestprocessoru.def Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/eabi/mmmtpdprequestprocessoru.def Fri May 14 16:21:14 2010 +0300 @@ -115,164 +115,165 @@ _ZN18CSetObjectPropListD0Ev @ 114 NONAME _ZN18CSetObjectPropListD1Ev @ 115 NONAME _ZN18CSetObjectPropListD2Ev @ 116 NONAME - _ZN19CDescriptionUtility24NewCommonObjectPropertyLEt @ 117 NONAME - _ZN19CDescriptionUtility24NewRangeFormDescriptionLEtmmmi @ 118 NONAME - _ZN19CDescriptionUtilityC2Ev @ 119 NONAME - _ZN19CDescriptionUtilityD0Ev @ 120 NONAME - _ZN19CDescriptionUtilityD1Ev @ 121 NONAME - _ZN19CDescriptionUtilityD2Ev @ 122 NONAME - _ZN19CGetObjectPropValue13CheckRequestLEv @ 123 NONAME - _ZN19CGetObjectPropValue27ServiceMetaDataFromWrapperLEtR8MMTPTypeRK18CMTPObjectMetaData @ 124 NONAME - _ZN19CGetObjectPropValue8ServiceLEv @ 125 NONAME - _ZN19CGetObjectPropValueC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 126 NONAME - _ZN19CGetObjectPropValueD0Ev @ 127 NONAME - _ZN19CGetObjectPropValueD1Ev @ 128 NONAME - _ZN19CGetObjectPropValueD2Ev @ 129 NONAME - _ZN19CSetObjectPropValue13CheckRequestLEv @ 130 NONAME - _ZN19CSetObjectPropValue22DoHandleResponsePhaseLEv @ 131 NONAME - _ZN19CSetObjectPropValue25ServiceMetaDataToWrapperLEtR8MMTPTypeRK18CMTPObjectMetaData @ 132 NONAME - _ZN19CSetObjectPropValue8ServiceLEv @ 133 NONAME - _ZN19CSetObjectPropValueC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 134 NONAME - _ZN19CSetObjectPropValueD0Ev @ 135 NONAME - _ZN19CSetObjectPropValueD1Ev @ 136 NONAME - _ZN19CSetObjectPropValueD2Ev @ 137 NONAME - _ZN20CGetObjectReferences4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 138 NONAME - _ZN20CGetObjectReferencesD0Ev @ 139 NONAME - _ZN20CGetObjectReferencesD1Ev @ 140 NONAME - _ZN20CGetObjectReferencesD2Ev @ 141 NONAME - _ZN20CSetObjectReferences22DoHandleResponsePhaseLEv @ 142 NONAME - _ZN20CSetObjectReferences22DoSetObjectReferencesLERK18CMTPObjectMetaData @ 143 NONAME - _ZN20CSetObjectReferences4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 144 NONAME - _ZN20CSetObjectReferences8ServiceLEv @ 145 NONAME - _ZN20CSetObjectReferencesC1ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 146 NONAME - _ZN20CSetObjectReferencesC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 147 NONAME - _ZN20CSetObjectReferencesD0Ev @ 148 NONAME - _ZN20CSetObjectReferencesD1Ev @ 149 NONAME - _ZN20CSetObjectReferencesD2Ev @ 150 NONAME - _ZN22CGetFormatCapabilities10ConstructLEv @ 151 NONAME - _ZN22CGetFormatCapabilities13CheckRequestLEv @ 152 NONAME - _ZN22CGetFormatCapabilities4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 153 NONAME - _ZN22CGetFormatCapabilities8ServiceLEv @ 154 NONAME - _ZN22CGetFormatCapabilitiesC1ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 155 NONAME - _ZN22CGetFormatCapabilitiesC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 156 NONAME - _ZN22CGetFormatCapabilitiesD0Ev @ 157 NONAME - _ZN22CGetFormatCapabilitiesD1Ev @ 158 NONAME - _ZN22CGetFormatCapabilitiesD2Ev @ 159 NONAME - _ZN23CMmMtpDpAccessSingleton12OpenSessionLEv @ 160 NONAME - _ZN23CMmMtpDpAccessSingleton13CloseSessionLEv @ 161 NONAME - _ZN23CMmMtpDpAccessSingleton17GetAccessWrapperLEv @ 162 NONAME - _ZN23CMmMtpDpAccessSingleton7CreateLER25MMTPDataProviderFramework @ 163 NONAME - _ZN23CMmMtpDpAccessSingleton7ReleaseEv @ 164 NONAME - _ZN23CPropertySettingUtility20SetMetaDataToWrapperER14MMmMtpDpConfigtR8MMTPTypeRK18CMTPObjectMetaData @ 165 NONAME - _ZN23CPropertySettingUtilityC2Ev @ 166 NONAME - _ZN23CPropertySettingUtilityD0Ev @ 167 NONAME - _ZN23CPropertySettingUtilityD1Ev @ 168 NONAME - _ZN23CPropertySettingUtilityD2Ev @ 169 NONAME - _ZN24CGetObjectPropsSupported4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 170 NONAME - _ZN24CGetObjectPropsSupported8ServiceLEv @ 171 NONAME - _ZN24CGetObjectPropsSupportedD0Ev @ 172 NONAME - _ZN24CGetObjectPropsSupportedD1Ev @ 173 NONAME - _ZN24CGetObjectPropsSupportedD2Ev @ 174 NONAME - _ZN26CGetInterdependentPropDesc10ConstructLEv @ 175 NONAME - _ZN26CGetInterdependentPropDesc13CheckRequestLEv @ 176 NONAME - _ZN26CGetInterdependentPropDesc4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 177 NONAME - _ZN26CGetInterdependentPropDesc8ServiceLEv @ 178 NONAME - _ZN26CGetInterdependentPropDescC1ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 179 NONAME - _ZN26CGetInterdependentPropDescC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 180 NONAME - _ZN26CGetInterdependentPropDescD0Ev @ 181 NONAME - _ZN26CGetInterdependentPropDescD1Ev @ 182 NONAME - _ZN26CGetInterdependentPropDescD2Ev @ 183 NONAME + _ZN19CDescriptionUtility24NewRangeFormDescriptionLEtmmmi @ 117 NONAME + _ZN19CDescriptionUtilityC2Ev @ 118 NONAME + _ZN19CDescriptionUtilityD0Ev @ 119 NONAME + _ZN19CDescriptionUtilityD1Ev @ 120 NONAME + _ZN19CDescriptionUtilityD2Ev @ 121 NONAME + _ZN19CGetObjectPropValue13CheckRequestLEv @ 122 NONAME + _ZN19CGetObjectPropValue27ServiceMetaDataFromWrapperLEtR8MMTPTypeRK18CMTPObjectMetaData @ 123 NONAME + _ZN19CGetObjectPropValue8ServiceLEv @ 124 NONAME + _ZN19CGetObjectPropValueC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 125 NONAME + _ZN19CGetObjectPropValueD0Ev @ 126 NONAME + _ZN19CGetObjectPropValueD1Ev @ 127 NONAME + _ZN19CGetObjectPropValueD2Ev @ 128 NONAME + _ZN19CSetObjectPropValue13CheckRequestLEv @ 129 NONAME + _ZN19CSetObjectPropValue22DoHandleResponsePhaseLEv @ 130 NONAME + _ZN19CSetObjectPropValue25ServiceMetaDataToWrapperLEtR8MMTPTypeRK18CMTPObjectMetaData @ 131 NONAME + _ZN19CSetObjectPropValue8ServiceLEv @ 132 NONAME + _ZN19CSetObjectPropValueC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 133 NONAME + _ZN19CSetObjectPropValueD0Ev @ 134 NONAME + _ZN19CSetObjectPropValueD1Ev @ 135 NONAME + _ZN19CSetObjectPropValueD2Ev @ 136 NONAME + _ZN20CGetObjectReferences4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 137 NONAME + _ZN20CGetObjectReferencesD0Ev @ 138 NONAME + _ZN20CGetObjectReferencesD1Ev @ 139 NONAME + _ZN20CGetObjectReferencesD2Ev @ 140 NONAME + _ZN20CSetObjectReferences22DoHandleResponsePhaseLEv @ 141 NONAME + _ZN20CSetObjectReferences22DoSetObjectReferencesLERK18CMTPObjectMetaData @ 142 NONAME + _ZN20CSetObjectReferences4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 143 NONAME + _ZN20CSetObjectReferences8ServiceLEv @ 144 NONAME + _ZN20CSetObjectReferencesC1ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 145 NONAME + _ZN20CSetObjectReferencesC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 146 NONAME + _ZN20CSetObjectReferencesD0Ev @ 147 NONAME + _ZN20CSetObjectReferencesD1Ev @ 148 NONAME + _ZN20CSetObjectReferencesD2Ev @ 149 NONAME + _ZN22CGetFormatCapabilities10ConstructLEv @ 150 NONAME + _ZN22CGetFormatCapabilities13CheckRequestLEv @ 151 NONAME + _ZN22CGetFormatCapabilities4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 152 NONAME + _ZN22CGetFormatCapabilities8ServiceLEv @ 153 NONAME + _ZN22CGetFormatCapabilitiesC1ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 154 NONAME + _ZN22CGetFormatCapabilitiesC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 155 NONAME + _ZN22CGetFormatCapabilitiesD0Ev @ 156 NONAME + _ZN22CGetFormatCapabilitiesD1Ev @ 157 NONAME + _ZN22CGetFormatCapabilitiesD2Ev @ 158 NONAME + _ZN23CMmMtpDpAccessSingleton12OpenSessionLEv @ 159 NONAME + _ZN23CMmMtpDpAccessSingleton13CloseSessionLEv @ 160 NONAME + _ZN23CMmMtpDpAccessSingleton17GetAccessWrapperLEv @ 161 NONAME + _ZN23CMmMtpDpAccessSingleton7CreateLER25MMTPDataProviderFramework @ 162 NONAME + _ZN23CMmMtpDpAccessSingleton7ReleaseEv @ 163 NONAME + _ZN23CPropertySettingUtility20SetMetaDataToWrapperER14MMmMtpDpConfigtR8MMTPTypeRK18CMTPObjectMetaData @ 164 NONAME + _ZN23CPropertySettingUtilityC2Ev @ 165 NONAME + _ZN23CPropertySettingUtilityD0Ev @ 166 NONAME + _ZN23CPropertySettingUtilityD1Ev @ 167 NONAME + _ZN23CPropertySettingUtilityD2Ev @ 168 NONAME + _ZN24CGetObjectPropsSupported4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 169 NONAME + _ZN24CGetObjectPropsSupported8ServiceLEv @ 170 NONAME + _ZN24CGetObjectPropsSupportedD0Ev @ 171 NONAME + _ZN24CGetObjectPropsSupportedD1Ev @ 172 NONAME + _ZN24CGetObjectPropsSupportedD2Ev @ 173 NONAME + _ZN26CGetInterdependentPropDesc10ConstructLEv @ 174 NONAME + _ZN26CGetInterdependentPropDesc13CheckRequestLEv @ 175 NONAME + _ZN26CGetInterdependentPropDesc4NewLER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 176 NONAME + _ZN26CGetInterdependentPropDesc8ServiceLEv @ 177 NONAME + _ZN26CGetInterdependentPropDescC1ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 178 NONAME + _ZN26CGetInterdependentPropDescC2ER25MMTPDataProviderFrameworkR14MMTPConnectionR14MMmMtpDpConfig @ 179 NONAME + _ZN26CGetInterdependentPropDescD0Ev @ 180 NONAME + _ZN26CGetInterdependentPropDescD1Ev @ 181 NONAME + _ZN26CGetInterdependentPropDescD2Ev @ 182 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper10AddObjectLERK18CMTPObjectMetaData @ 183 NONAME _ZN29CMmMtpDpMetadataAccessWrapper13AddDummyFileLERK7TDesC16 @ 184 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper13RenameObjectLERK18CMTPObjectMetaDataRK7TDesC16 @ 185 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper13SetReferenceLERK18CMTPObjectMetaDataR12CDesC16Array @ 186 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper15CreateDummyFileERK7TDesC16 @ 187 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper15DeleteDummyFileERK7TDesC16 @ 188 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper16CleanupDatabaseLEv @ 189 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper16GetAllReferenceLEP9CMPXMediaR12CDesC16Array @ 190 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper19GetModifiedContentLERK7TDesC16RiR12CDesC16Array @ 191 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper20GetAllAbstractMediaLERK7TDesC16PP14CMPXMediaArray19TMPXGeneralCategory @ 192 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper21GetAbstractMediaNameLEP9CMPXMedia19TMPXGeneralCategory @ 193 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper22UpdateMusicCollectionLEv @ 194 NONAME - _ZN29CMmMtpDpMetadataAccessWrapper23GetObjectMetadataValueLEtR8MMTPTypeRK18CMTPObjectMetaData @ 195 NONAME - _ZNK11CSendObject12HasDataphaseEv @ 196 NONAME - _ZNK11CSendObject5MatchERK15TMTPTypeRequestR14MMTPConnection @ 197 NONAME - _ZNK15CRequestUnknown5MatchERK15TMTPTypeRequestR14MMTPConnection @ 198 NONAME - _ZNK17CRequestProcessor10ConnectionEv @ 199 NONAME - _ZNK17CRequestProcessor12HasDataphaseEv @ 200 NONAME - _ZNK17CRequestProcessor5MatchERK13TMTPTypeEventR14MMTPConnection @ 201 NONAME - _ZNK17CRequestProcessor5MatchERK15TMTPTypeRequestR14MMTPConnection @ 202 NONAME - _ZNK17CRequestProcessor7RequestEv @ 203 NONAME - _ZNK18CSetObjectPropList12HasDataphaseEv @ 204 NONAME - _ZNK19CSetObjectPropValue12HasDataphaseEv @ 205 NONAME - _ZNK20CSetObjectReferences12HasDataphaseEv @ 206 NONAME - _ZTI10CGetObject @ 207 NONAME - _ZTI11CCopyObject @ 208 NONAME - _ZTI11CMoveObject @ 209 NONAME - _ZTI11CSendObject @ 210 NONAME - _ZTI13CDeleteObject @ 211 NONAME - _ZTI13CRenameObject @ 212 NONAME - _ZTI14CGetObjectInfo @ 213 NONAME - _ZTI15CRequestChecker @ 214 NONAME - _ZTI15CRequestUnknown @ 215 NONAME - _ZTI15TMTPTypeFlatBuf @ 216 NONAME - _ZTI17CGetPartialObject @ 217 NONAME - _ZTI17CRequestProcessor @ 218 NONAME - _ZTI18CGetObjectPropDesc @ 219 NONAME - _ZTI18CGetObjectPropList @ 220 NONAME - _ZTI18CHXMetaDataUtility @ 221 NONAME - _ZTI18CSetObjectPropList @ 222 NONAME - _ZTI19CDescriptionUtility @ 223 NONAME - _ZTI19CGetObjectPropValue @ 224 NONAME - _ZTI19CSetObjectPropValue @ 225 NONAME - _ZTI20CGetObjectReferences @ 226 NONAME - _ZTI20CSetObjectReferences @ 227 NONAME - _ZTI22CGetFormatCapabilities @ 228 NONAME - _ZTI23CMmMtpDpAccessSingleton @ 229 NONAME - _ZTI23CPropertySettingUtility @ 230 NONAME - _ZTI24CGetObjectPropsSupported @ 231 NONAME - _ZTI25CMmMtpDpMetadataMpxAccess @ 232 NONAME - _ZTI26CGetInterdependentPropDesc @ 233 NONAME - _ZTI27CMmMtpDpMetadataVideoAccess @ 234 NONAME - _ZTI29CMmMtpDpMetadataAccessWrapper @ 235 NONAME - _ZTV10CGetObject @ 236 NONAME - _ZTV11CCopyObject @ 237 NONAME - _ZTV11CMoveObject @ 238 NONAME - _ZTV11CSendObject @ 239 NONAME - _ZTV13CDeleteObject @ 240 NONAME - _ZTV13CRenameObject @ 241 NONAME - _ZTV14CGetObjectInfo @ 242 NONAME - _ZTV15CRequestChecker @ 243 NONAME - _ZTV15CRequestUnknown @ 244 NONAME - _ZTV15TMTPTypeFlatBuf @ 245 NONAME - _ZTV17CGetPartialObject @ 246 NONAME - _ZTV17CRequestProcessor @ 247 NONAME - _ZTV18CGetObjectPropDesc @ 248 NONAME - _ZTV18CGetObjectPropList @ 249 NONAME - _ZTV18CHXMetaDataUtility @ 250 NONAME - _ZTV18CSetObjectPropList @ 251 NONAME - _ZTV19CDescriptionUtility @ 252 NONAME - _ZTV19CGetObjectPropValue @ 253 NONAME - _ZTV19CSetObjectPropValue @ 254 NONAME - _ZTV20CGetObjectReferences @ 255 NONAME - _ZTV20CSetObjectReferences @ 256 NONAME - _ZTV22CGetFormatCapabilities @ 257 NONAME - _ZTV23CMmMtpDpAccessSingleton @ 258 NONAME - _ZTV23CPropertySettingUtility @ 259 NONAME - _ZTV24CGetObjectPropsSupported @ 260 NONAME - _ZTV25CMmMtpDpMetadataMpxAccess @ 261 NONAME - _ZTV26CGetInterdependentPropDesc @ 262 NONAME - _ZTV27CMmMtpDpMetadataVideoAccess @ 263 NONAME - _ZTV29CMmMtpDpMetadataAccessWrapper @ 264 NONAME - _ZThn28_N11CSendObject13UsbDisconnectEv @ 265 NONAME - _ZThn28_N17CRequestProcessor12HandleEventLERK13TMTPTypeEvent @ 266 NONAME - _ZThn28_N17CRequestProcessor13UsbDisconnectEv @ 267 NONAME - _ZThn28_N17CRequestProcessor14HandleRequestLERK15TMTPTypeRequest20TMTPTransactionPhase @ 268 NONAME - _ZThn28_N17CRequestProcessor7ReleaseEv @ 269 NONAME - _ZThn28_N17CRequestProcessor9SessionIdEv @ 270 NONAME - _ZThn28_NK11CSendObject5MatchERK15TMTPTypeRequestR14MMTPConnection @ 271 NONAME - _ZThn28_NK15CRequestUnknown5MatchERK15TMTPTypeRequestR14MMTPConnection @ 272 NONAME - _ZThn28_NK17CRequestProcessor10ConnectionEv @ 273 NONAME - _ZThn28_NK17CRequestProcessor5MatchERK13TMTPTypeEventR14MMTPConnection @ 274 NONAME - _ZThn28_NK17CRequestProcessor5MatchERK15TMTPTypeRequestR14MMTPConnection @ 275 NONAME - _ZThn28_NK17CRequestProcessor7RequestEv @ 276 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper13DeleteObjectLERK18CMTPObjectMetaData @ 185 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper13RenameObjectLERK18CMTPObjectMetaDataRK7TDesC16 @ 186 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper13SetReferenceLERK18CMTPObjectMetaDataR12CDesC16Array @ 187 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper15CreateDummyFileERK7TDesC16 @ 188 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper15DeleteDummyFileERK7TDesC16 @ 189 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper16CleanupDatabaseLEv @ 190 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper16GetAllReferenceLEP9CMPXMediaR12CDesC16Array @ 191 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper19GetModifiedContentLERK7TDesC16RiR12CDesC16Array @ 192 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper20GetAllAbstractMediaLERK7TDesC16PP14CMPXMediaArray19TMPXGeneralCategory @ 193 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper21GetAbstractMediaNameLEP9CMPXMedia19TMPXGeneralCategory @ 194 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper22UpdateMusicCollectionLEv @ 195 NONAME + _ZN29CMmMtpDpMetadataAccessWrapper23GetObjectMetadataValueLEtR8MMTPTypeRK18CMTPObjectMetaData @ 196 NONAME + _ZNK11CSendObject12HasDataphaseEv @ 197 NONAME + _ZNK11CSendObject5MatchERK15TMTPTypeRequestR14MMTPConnection @ 198 NONAME + _ZNK15CRequestUnknown5MatchERK15TMTPTypeRequestR14MMTPConnection @ 199 NONAME + _ZNK17CRequestProcessor10ConnectionEv @ 200 NONAME + _ZNK17CRequestProcessor12HasDataphaseEv @ 201 NONAME + _ZNK17CRequestProcessor5MatchERK13TMTPTypeEventR14MMTPConnection @ 202 NONAME + _ZNK17CRequestProcessor5MatchERK15TMTPTypeRequestR14MMTPConnection @ 203 NONAME + _ZNK17CRequestProcessor7RequestEv @ 204 NONAME + _ZNK18CSetObjectPropList12HasDataphaseEv @ 205 NONAME + _ZNK19CSetObjectPropValue12HasDataphaseEv @ 206 NONAME + _ZNK20CSetObjectReferences12HasDataphaseEv @ 207 NONAME + _ZTI10CGetObject @ 208 NONAME + _ZTI11CCopyObject @ 209 NONAME + _ZTI11CMoveObject @ 210 NONAME + _ZTI11CSendObject @ 211 NONAME + _ZTI13CDeleteObject @ 212 NONAME + _ZTI13CRenameObject @ 213 NONAME + _ZTI14CGetObjectInfo @ 214 NONAME + _ZTI15CRequestChecker @ 215 NONAME + _ZTI15CRequestUnknown @ 216 NONAME + _ZTI15TMTPTypeFlatBuf @ 217 NONAME + _ZTI17CGetPartialObject @ 218 NONAME + _ZTI17CRequestProcessor @ 219 NONAME + _ZTI18CGetObjectPropDesc @ 220 NONAME + _ZTI18CGetObjectPropList @ 221 NONAME + _ZTI18CHXMetaDataUtility @ 222 NONAME + _ZTI18CSetObjectPropList @ 223 NONAME + _ZTI19CDescriptionUtility @ 224 NONAME + _ZTI19CGetObjectPropValue @ 225 NONAME + _ZTI19CSetObjectPropValue @ 226 NONAME + _ZTI20CGetObjectReferences @ 227 NONAME + _ZTI20CSetObjectReferences @ 228 NONAME + _ZTI22CGetFormatCapabilities @ 229 NONAME + _ZTI23CMmMtpDpAccessSingleton @ 230 NONAME + _ZTI23CPropertySettingUtility @ 231 NONAME + _ZTI24CGetObjectPropsSupported @ 232 NONAME + _ZTI25CMmMtpDpMetadataMpxAccess @ 233 NONAME + _ZTI26CGetInterdependentPropDesc @ 234 NONAME + _ZTI27CMmMtpDpMetadataVideoAccess @ 235 NONAME + _ZTI29CMmMtpDpMetadataAccessWrapper @ 236 NONAME + _ZTV10CGetObject @ 237 NONAME + _ZTV11CCopyObject @ 238 NONAME + _ZTV11CMoveObject @ 239 NONAME + _ZTV11CSendObject @ 240 NONAME + _ZTV13CDeleteObject @ 241 NONAME + _ZTV13CRenameObject @ 242 NONAME + _ZTV14CGetObjectInfo @ 243 NONAME + _ZTV15CRequestChecker @ 244 NONAME + _ZTV15CRequestUnknown @ 245 NONAME + _ZTV15TMTPTypeFlatBuf @ 246 NONAME + _ZTV17CGetPartialObject @ 247 NONAME + _ZTV17CRequestProcessor @ 248 NONAME + _ZTV18CGetObjectPropDesc @ 249 NONAME + _ZTV18CGetObjectPropList @ 250 NONAME + _ZTV18CHXMetaDataUtility @ 251 NONAME + _ZTV18CSetObjectPropList @ 252 NONAME + _ZTV19CDescriptionUtility @ 253 NONAME + _ZTV19CGetObjectPropValue @ 254 NONAME + _ZTV19CSetObjectPropValue @ 255 NONAME + _ZTV20CGetObjectReferences @ 256 NONAME + _ZTV20CSetObjectReferences @ 257 NONAME + _ZTV22CGetFormatCapabilities @ 258 NONAME + _ZTV23CMmMtpDpAccessSingleton @ 259 NONAME + _ZTV23CPropertySettingUtility @ 260 NONAME + _ZTV24CGetObjectPropsSupported @ 261 NONAME + _ZTV25CMmMtpDpMetadataMpxAccess @ 262 NONAME + _ZTV26CGetInterdependentPropDesc @ 263 NONAME + _ZTV27CMmMtpDpMetadataVideoAccess @ 264 NONAME + _ZTV29CMmMtpDpMetadataAccessWrapper @ 265 NONAME + _ZThn28_N11CSendObject13UsbDisconnectEv @ 266 NONAME + _ZThn28_N17CRequestProcessor12HandleEventLERK13TMTPTypeEvent @ 267 NONAME + _ZThn28_N17CRequestProcessor13UsbDisconnectEv @ 268 NONAME + _ZThn28_N17CRequestProcessor14HandleRequestLERK15TMTPTypeRequest20TMTPTransactionPhase @ 269 NONAME + _ZThn28_N17CRequestProcessor7ReleaseEv @ 270 NONAME + _ZThn28_N17CRequestProcessor9SessionIdEv @ 271 NONAME + _ZThn28_NK11CSendObject5MatchERK15TMTPTypeRequestR14MMTPConnection @ 272 NONAME + _ZThn28_NK15CRequestUnknown5MatchERK15TMTPTypeRequestR14MMTPConnection @ 273 NONAME + _ZThn28_NK17CRequestProcessor10ConnectionEv @ 274 NONAME + _ZThn28_NK17CRequestProcessor5MatchERK13TMTPTypeEventR14MMTPConnection @ 275 NONAME + _ZThn28_NK17CRequestProcessor5MatchERK15TMTPTypeRequestR14MMTPConnection @ 276 NONAME + _ZThn28_NK17CRequestProcessor7RequestEv @ 277 NONAME diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdeleteobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdeleteobject.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdeleteobject.cpp Fri May 14 16:21:14 2010 +0300 @@ -315,10 +315,14 @@ { SendResponseL( EMTPRespCodePartialDeletion ); } - else if( !iIsMultiDelete && iDeleteError == KErrAccessDenied ) + else if ( !iIsMultiDelete && iDeleteError == KErrAccessDenied ) { SendResponseL( EMTPRespCodeObjectWriteProtected ); } + else if ( iDeleteError == KErrInUse ) + { + SendResponseL( EMTPRespCodeDeviceBusy ); + } else { SendResponseL( EMTPRespCodeAccessDenied ); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdescriptionutility.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdescriptionutility.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdescriptionutility.cpp Fri May 14 16:21:14 2010 +0300 @@ -39,7 +39,7 @@ // Do nothing } -EXPORT_C CMTPTypeObjectPropDesc* CDescriptionUtility::NewCommonObjectPropertyL( TUint16 aPropCode ) +CMTPTypeObjectPropDesc* CDescriptionUtility::NewCommonObjectPropertyL( TUint16 aPropCode ) { CMTPTypeObjectPropDesc* propertyDesc = NULL; diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cmoveobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cmoveobject.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cmoveobject.cpp Fri May 14 16:21:14 2010 +0300 @@ -22,6 +22,7 @@ #include #include #include +#include #include "cmoveobject.h" #include "mmmtpdplogger.h" @@ -141,7 +142,7 @@ newObjectName.CleanupClosePushL(); // + newObjectName newObjectName = *iDest; - const TDesC& suid( iObjectInfo->DesC( CMTPObjectMetaData::ESuid ) ); + TPtrC suid( iObjectInfo->DesC( CMTPObjectMetaData::ESuid ) ); TParsePtrC fileNameParser( suid ); if ( ( newObjectName.Length() + fileNameParser.NameAndExt().Length() ) <= newObjectName.MaxLength() ) @@ -419,7 +420,7 @@ TUint32 handle = element.Uint32L( CMTPTypeObjectPropListElement::EObjectHandle ); TUint16 propertyCode = element.Uint16L( CMTPTypeObjectPropListElement::EPropertyCode ); TUint16 dataType = element.Uint16L( CMTPTypeObjectPropListElement::EDatatype ); - PRINT3( _L( "MM MTP <> CCopyObject::SetPreviousPropertiesL = 0x%x, propertyCode = 0x%x, dataType = 0x%x" ), + PRINT3( _L( "MM MTP <> CMoveObject::SetPreviousPropertiesL = 0x%x, propertyCode = 0x%x, dataType = 0x%x" ), handle, propertyCode, dataType ); @@ -492,32 +493,45 @@ { // This is used to keep the same behavior in mass storage and device file manager. PRINT( _L( "MM MTP <> CMoveObject::SetPropertiesL Playlist file do not update the MPX DB" ) ); - } - else - // TODO: Need rollback mechanism for consistant with image dp in fw. - // Not sure if it should be trap if something wrong with MPX db. - { - if ( iSameStorage ) - { - iDpConfig.GetWrapperL().RenameObjectL( *iObjectInfo, aNewFileName ); - } - else // if the two object in different storage, we should delete the old one and insert new one - { - iDpConfig.GetWrapperL().DeleteObjectL( *iObjectInfo ); - iDpConfig.GetWrapperL().AddObjectL( *iObjectInfo ); - - // Only leave when getting proplist element from data received by fw. - // It should not happen after ReceiveDataL in which construction of proplist already succeed. - SetPreviousPropertiesL(); - } + iDpConfig.GetWrapperL().DeleteDummyFile( iObjectInfo->DesC( CMTPObjectMetaData::ESuid ) ); + iDpConfig.GetWrapperL().AddDummyFileL( aNewFileName ); } - iObjectInfo->SetDesCL( CMTPObjectMetaData::ESuid, aNewFileName ); - iObjectInfo->SetUint( CMTPObjectMetaData::EStorageId, iStorageId ); - iObjectInfo->SetUint( CMTPObjectMetaData::EParentHandle, iNewParentHandle ); - iFramework.ObjectMgr().ModifyObjectL( *iObjectInfo ); + if (iSameStorage) + { + iDpConfig.GetWrapperL().RenameObjectL( *iObjectInfo, aNewFileName ); + iObjectInfo->SetDesCL( CMTPObjectMetaData::ESuid, aNewFileName ); + iObjectInfo->SetUint( CMTPObjectMetaData::EStorageId, iStorageId ); + iObjectInfo->SetUint( CMTPObjectMetaData::EParentHandle, iNewParentHandle ); + iFramework.ObjectMgr().ModifyObjectL( *iObjectInfo ); + } + else // if the two object in different storage, we should delete the old one and insert new one + { + iDpConfig.GetWrapperL().DeleteObjectL( *iObjectInfo ); + + HBufC* oldFileName = iObjectInfo->DesC(CMTPObjectMetaData::ESuid).AllocLC(); // + oldFileName + iObjectInfo->SetDesCL( CMTPObjectMetaData::ESuid, aNewFileName ); + iObjectInfo->SetUint( CMTPObjectMetaData::EStorageId, iStorageId ); + iObjectInfo->SetUint( CMTPObjectMetaData::EParentHandle, iNewParentHandle ); + iFramework.ObjectMgr().ModifyObjectL(*iObjectInfo); - // It's not necessary to change references of playlists since Reference DB is used PUID + iDpConfig.GetWrapperL().SetStorageRootL( aNewFileName ); + iDpConfig.GetWrapperL().AddObjectL( *iObjectInfo ); + + if ( formatCode == EMTPFormatCodeAbstractAudioVideoPlaylist + || formatCode == EMTPFormatCodeAbstractAudioAlbum ) + { + MMTPReferenceMgr& referenceMgr = iFramework.ReferenceMgr(); + CDesCArray* references = referenceMgr.ReferencesLC( aNewFileName ); // + references + iDpConfig.GetWrapperL().SetReferenceL( *iObjectInfo, *references ); + CleanupStack::PopAndDestroy( references ); // - references + } + CleanupStack::PopAndDestroy( oldFileName ); // - oldFileName + + // Only leave when getting proplist element from data received by fw. + // It should not happen after ReceiveDataL in which construction of proplist already succeed. + SetPreviousPropertiesL(); + } PRINT( _L( "MM MTP <= CMoveObject::SetPropertiesL" ) ); } diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crenameobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crenameobject.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crenameobject.cpp Fri May 14 16:21:14 2010 +0300 @@ -145,12 +145,13 @@ if ( iNewFolderName.Length() + iRightPartName.Length() <= KMaxFileName ) { - PerformAdditionalActionL(); - iFileName.Zero(); iFileName.Append( iNewFolderName ); iFileName.Append( iRightPartName ); PRINT1( _L( "MM MTP <> CRenameObject::RunL new file name(%S)" ), &iFileName ); + + PerformAdditionalActionL(); + // update framework metadata DB iObjectInfo->SetDesCL( CMTPObjectMetaData::ESuid, iFileName ); iObjectInfo->SetUint( CMTPObjectMetaData::EObjectMetaDataUpdate, 1 ); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp Fri May 14 16:21:14 2010 +0300 @@ -1108,8 +1108,18 @@ if ( result && ( iObjectFormat != MmMtpDpUtility::FormatFromFilename( iFullPath ) ) ) { - PRINT2( _L( "MM MTP <> %S does not match 0x%x" ), &iFullPath, iObjectFormat ); - result = EFalse; + TParsePtrC file( aFileName ); + if ( ( iObjectFormat == EMTPFormatCode3GPContainer ) && (file.Ext().CompareF( KTxtExtensionODF ) == 0)) + { + PRINT( _L( "MM MTP <> might happen if function is called before physical file arrives" ) ); + // might happen if function is called before physical file arrives + // do nothing + } + else + { + PRINT2( _L( "MM MTP <> %S does not match 0x%x" ), &iFullPath, iObjectFormat ); + result = EFalse; + } } PRINT1( _L( "MM MTP <= CSendObject::GetFullPathNameL result = %d" ), result ); @@ -1322,9 +1332,9 @@ void CSendObject::Rollback() { // Delete this object from file system. - if ( iProgress == ESendObjectInProgress - || iProgress == EObjectInfoSucceed - ||iProgress == EObjectInfoFail ) + if ( iProgress == ESendObjectInProgress ) + // || iProgress == EObjectInfoSucceed // this line is to be commented out until SetSize is done in SendObjectInfo/SendObjectPropList + //||iProgress == EObjectInfoFail ) { PRINT1( _L( "MM MTP <> CSendObject::Rollback ROLLBACK_FILE %S" ), &iFullPath ); // Close the interrupted transfer file by delete iFileReceived object diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectproplist.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectproplist.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectproplist.cpp Fri May 14 16:21:14 2010 +0300 @@ -245,6 +245,10 @@ object->SetDesCL( CMTPObjectMetaData::ESuid, newSuid ); iFramework.ObjectMgr().ModifyObjectL( *object ); } + else if ( KErrInUse == err ) // object file is being used by other program + { + responseCode = EMTPRespCodeDeviceBusy; + } else { responseCode = EMTPRespCodeGeneralError; diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectpropvalue.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectpropvalue.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectpropvalue.cpp Fri May 14 16:21:14 2010 +0300 @@ -300,6 +300,10 @@ iObjectInfo->SetDesCL( CMTPObjectMetaData::ESuid, newSuid ); iFramework.ObjectMgr().ModifyObjectL( *iObjectInfo ); } + else if ( KErrInUse == err ) // object file is being used by other program + { + responseCode = EMTPRespCodeDeviceBusy; + } else { responseCode = EMTPRespCodeGeneralError; diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectreferences.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectreferences.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectreferences.cpp Fri May 14 16:21:14 2010 +0300 @@ -154,7 +154,7 @@ { MMTPReferenceMgr& referenceMgr = iFramework.ReferenceMgr(); TUint32 objectHandle = Request().Uint32( TMTPTypeRequest::ERequestParameter1 ); - PRINT1( _L( "MM MTP <>CSetObjectReferences::DoHandleResponsePhaseL objectHandle = 0x%x" ), objectHandle ); + PRINT1( _L( "MM MTP <> CSetObjectReferences::DoHandleResponsePhaseL objectHandle = 0x%x" ), objectHandle ); referenceMgr.SetReferencesL( TMTPTypeUint32( objectHandle ), *iReferences ); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp Fri May 14 16:21:14 2010 +0300 @@ -46,7 +46,8 @@ CMmMtpDpMetadataAccessWrapper::CMmMtpDpMetadataAccessWrapper( MMTPDataProviderFramework& aFramework ) : iFramework( aFramework ), - iFs( aFramework.Fs() ) + iFs( aFramework.Fs() ), + iOpenCount( 0 ) { // Do nothing } @@ -259,7 +260,7 @@ // Deletes metadata information associated with the object // --------------------------------------------------------------------------- // -void CMmMtpDpMetadataAccessWrapper::DeleteObjectL( const CMTPObjectMetaData& aObject ) +EXPORT_C void CMmMtpDpMetadataAccessWrapper::DeleteObjectL( const CMTPObjectMetaData& aObject ) { TPtrC fileName( aObject.DesC( CMTPObjectMetaData::ESuid ) ); PRINT1( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::DeleteObjectL name = %S" ), &fileName ); @@ -350,7 +351,7 @@ // void CMmMtpDpMetadataAccessWrapper::OpenSessionL() { - iOpenSession = ETrue; + iOpenCount++; } // ----------------------------------------------------------------------------- @@ -360,15 +361,22 @@ // void CMmMtpDpMetadataAccessWrapper::CloseSessionL() { - if ( iOpenSession ) + PRINT1( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::CloseSessionL count = %d" ), iOpenCount ); + + if ( iOpenCount >= 1 ) { - PRINT( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::CloseSessionL close" ) ); - iMmMtpDpMetadataVideoAccess->CloseSessionL(); - iOpenSession = EFalse; + iOpenCount--; + + if ( iOpenCount == 0 ) + { + PRINT( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::CloseSessionL close" ) ); + iMmMtpDpMetadataMpxAccess->CloseSession(); + iMmMtpDpMetadataVideoAccess->CloseSessionL(); + } } else { - PRINT( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::CloseSessionL alreay close" ) ); + PRINT( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::CloseSessionL already close" ) ); } } @@ -390,13 +398,13 @@ TUint aSubFormatCode = aObject.Uint( CMTPObjectMetaData::EFormatSubCode ); if ( aSubFormatCode == EMTPSubFormatCodeUnknown ) { - category = ContainerCategory( aObject.DesC( CMTPObjectMetaData::ESuid ) ); + TRAP_IGNORE( category = ContainerCategoryL( aObject.DesC( CMTPObjectMetaData::ESuid ) ) ); if ( category == EMPXSong ) aSubFormatCode = EMTPSubFormatCodeAudio; else if ( category == EMPXVideo ) aSubFormatCode = EMTPSubFormatCodeVideo; else - aSubFormatCode = EMTPSubFormatCodeUndefine; + aSubFormatCode = EMTPSubFormatCodeUndefined; const_cast(aObject).SetUint( CMTPObjectMetaData::EFormatSubCode, aSubFormatCode ); // If object doesn't exist, do nothing TRAP_IGNORE( iFramework.ObjectMgr().ModifyObjectL( aObject ) ); @@ -405,7 +413,7 @@ category = EMPXSong; else if ( aSubFormatCode == EMTPSubFormatCodeVideo ) category = EMPXVideo; - else if( aSubFormatCode == EMTPSubFormatCodeUndefine ) + else if( aSubFormatCode == EMTPSubFormatCodeUndefined ) category = EMPXOther; } break; @@ -445,9 +453,9 @@ return category; } -TMPXGeneralCategory CMmMtpDpMetadataAccessWrapper::ContainerCategory( const TDesC& aFullFileName ) +TMPXGeneralCategory CMmMtpDpMetadataAccessWrapper::ContainerCategoryL( const TDesC& aFullFileName ) { - PRINT1( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::ContainerCategory aFullFileName = %S" ), &aFullFileName ); + PRINT1( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::ContainerCategoryL aFullFileName = %S" ), &aFullFileName ); TMPXGeneralCategory category = EMPXNoCategory; TParsePtrC pathParser( aFullFileName ); @@ -455,17 +463,27 @@ if ( ext.Length() <= 0 ) category = EMPXOther; + else if ( ext.CompareF( KTxtExtensionO4A ) == 0 + || ext.CompareF( KTxtExtensionM4A ) == 0 ) + category = EMPXSong; + else if ( ext.CompareF( KTxtExtensionO4V ) == 0 ) + category = EMPXVideo; + else + { + HBufC8* mimetype = NULL; - if ( ext.CompareF( KTxtExtensionMP4 ) == 0 - || ext.CompareF( KTxtExtension3GP ) == 0 - || ext.CompareF( KTxtExtension3G2 ) == 0 - || ext.CompareF( KTxtExtensionODF ) == 0 - || ext.CompareF( KTxtExtensionASF ) == 0 ) - { - HBufC8* mimetype = MmMtpDpUtility::ContainerMimeType( aFullFileName ); + if ( ext.CompareF( KTxtExtensionMP4 ) == 0 + || ext.CompareF( KTxtExtension3GP ) == 0 + || ext.CompareF( KTxtExtension3G2 ) == 0 ) + mimetype = MmMtpDpUtility::Mp4MimeTypeL( aFullFileName ); + else if ( ext.CompareF( KTxtExtensionODF ) == 0 ) + mimetype = MmMtpDpUtility::OdfMimeTypeL( aFullFileName ); + else if ( ext.CompareF( KTxtExtensionASF ) == 0 ) + mimetype = MmMtpDpUtility::AsfMimeTypeL( aFullFileName ); if ( mimetype != NULL ) { - TMmMtpSubFormatCode subFormatCode = MmMtpDpUtility::SubFormatCodeFromMime( *mimetype ); + TMmMtpSubFormatCode subFormatCode = + MmMtpDpUtility::SubFormatCodeFromMime( *mimetype ); if ( subFormatCode == EMTPSubFormatCodeVideo ) category = EMPXVideo; @@ -475,12 +493,8 @@ category = EMPXOther; } } - else if ( ext.CompareF( KTxtExtensionO4V ) == 0 ) - category = EMPXVideo; - else - category = EMPXOther; - PRINT1( _L( "MM MTP <= CMmMtpDpMetadataAccessWrapper::ContainerCategory, category = %d" ), category ); + PRINT1( _L( "MM MTP <= CMmMtpDpMetadataAccessWrapper::ContainerCategoryL, category = %d" ), category ); return category; } @@ -518,7 +532,7 @@ // Add object (music, video, playlist and abstract media) info to DB // ----------------------------------------------------------------------------- // -void CMmMtpDpMetadataAccessWrapper::AddObjectL( const CMTPObjectMetaData& aObject ) +EXPORT_C void CMmMtpDpMetadataAccessWrapper::AddObjectL( const CMTPObjectMetaData& aObject ) { PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL" ) ); TMPXGeneralCategory category = Category( aObject ); @@ -531,7 +545,7 @@ } else if ( category == EMPXPlaylist || category == EMPXAbstractAlbum ) { - PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL AddPlaylist" ) ); + PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL AddPlaylist/AbstractAlbum" ) ); iMmMtpDpMetadataMpxAccess->AddAbstractMediaL( fullFileName, category ); } diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Fri May 14 16:21:14 2010 +0300 @@ -62,6 +62,8 @@ _LIT( KMpxCollectionGetReference, "MpxCollectionGetReference" ); _LIT( KMpxCollectionFindAllLValidate, "MpxCollectionValidate" ); _LIT( KMpxCollectionFindAllLBeforeAdd, "MpxCollectionFindAllLBeforeAdd" ); +_LIT( KMpxCollectionFindAllLModified, "MpxCollectionFindAllLModified" ); +_LIT( KMpxCollectionCleanupDeletedMediasL, "KMpxCollectionCleanupDeletedMediasL" ); _LIT( KSetMetadataValue, "SetMetadataValueL" ); #endif @@ -80,7 +82,8 @@ } CMmMtpDpMetadataMpxAccess::CMmMtpDpMetadataMpxAccess( RFs& aRfs ): - iRfs( aRfs ) + iRfs( aRfs ), + iSampleData( NULL ) { // Do nothing } @@ -105,12 +108,14 @@ // CMmMtpDpMetadataMpxAccess::~CMmMtpDpMetadataMpxAccess() { - if ( iCollectionHelper ) + if ( iCollectionHelper != NULL ) { iCollectionHelper->Close(); iCollectionHelper = NULL; } + delete iSampleData; + // for performance measurement purpose #if defined(_DEBUG) || defined(MMMTPDP_PERFLOG) delete iPerfLog; @@ -118,6 +123,36 @@ } // --------------------------------------------------------------------------- +// CMmMtpDpMetadataMpxAccess::OpenSession +// This is introduced to fix CollectionHelper Flush problem +// --------------------------------------------------------------------------- +// +void CMmMtpDpMetadataMpxAccess::OpenSession() + { + // do nothing + } + +// --------------------------------------------------------------------------- +// CMmMtpDpMetadataMpxAccess::CloseSession +// This is introduced to fix CollectionHelper Flush problem +// --------------------------------------------------------------------------- +// +void CMmMtpDpMetadataMpxAccess::CloseSession() + { + PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::CloseSession" ) ); + + // flush cache + if ( iCollectionHelper != NULL ) + { + PRINT( _L( "MM MTP <> Delete & Close CollectionHelper" ) ); + iCollectionHelper->Close(); + iCollectionHelper = NULL; + } + + PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::CloseSession" ) ); + } + +// --------------------------------------------------------------------------- // CMmMtpDpMetadataMpxAccess::GetObjectMetadataValueL // Gets a piece of metadata from the collection // --------------------------------------------------------------------------- @@ -425,8 +460,10 @@ PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC searchMedia setup with no problems" ) ); + PERFLOGSTART(KMpxCollectionFindAllLModified); CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, songAttributes.Array() ); + PERFLOGSTOP(KMpxCollectionFindAllLModified); PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC foundMedia assigned from FindAllL" ) ); CleanupStack::PopAndDestroy( &songAttributes ); // - songAttributes @@ -557,7 +594,9 @@ // as there is NOT a separate database for deleted files. PRINT( _L( "MM MTP <> Deleting metadata for deleted files" ) ); + PERFLOGSTART( KMpxCollectionCleanupDeletedMediasL ); CollectionHelperL()->CleanupDeletedMediasL(); + PERFLOGSTOP( KMpxCollectionCleanupDeletedMediasL ); PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::UpdateMusicCollectionL" ) ); } @@ -644,6 +683,7 @@ TParsePtrC parse( aFullFileName ); media->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); + media->SetTObjectValueL( KMPXMediaGeneralModified, EFalse ); PERFLOGSTART( KSetMetadataValue ); SetMetadataValueL( aPropCode, aNewData, *media ); @@ -654,6 +694,9 @@ CollectionHelperL()->SetL( media ); PERFLOGSTOP( KMpxCollectionSetL ); + delete iSampleData; + iSampleData = NULL; + CleanupStack::PopAndDestroy( 2, &contentIDs ); // - media, contentIDs PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetObjectMetadataValueL" ) ); @@ -668,7 +711,6 @@ CMPXMedia& aMediaProp ) { PRINT1( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::SetMetadataValueL aPropCode = 0x%x" ), aPropCode ); - CMTPTypeString* textData = CMTPTypeString::NewLC(); // + textData CMTPTypeArray* desData = NULL; TMTPTypeUint16 uint16Data; TMTPTypeUint32 uint32Data; @@ -684,13 +726,12 @@ case EMTPObjectPropCodeComposer: case EMTPObjectPropCodeAlbumArtist: { - PRINT1( _L( "MM MTP <> SetMetadataValueL Before Copy, string length = %d" ), aNewData.Size() ); - MMTPType::CopyL( aNewData, *textData ); - HBufC* string = textData->StringChars().AllocLC(); - PRINT1( _L( "MM MTP <> SetMetadataValueL string length = %d" ), string->Des().Length() ); + const CMTPTypeString& textData = static_cast( aNewData ); + HBufC* string = textData.StringChars().AllocLC(); // + string + PRINT2( _L( "MM MTP <> SetMetadataValueL des.ptr() = 0x%x, string length = %d" ),string->Des().Ptr(), string->Des().Length() ); + PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL string = %S" ), string ); aMediaProp.SetTextValueL( attrib, string->Des() ); - PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL string = %S" ), string ); - CleanupStack::PopAndDestroy(string); + CleanupStack::PopAndDestroy( string ); // - string } break; @@ -734,10 +775,10 @@ case EMTPObjectPropCodeOriginalReleaseDate: { - MMTPType::CopyL( aNewData, *textData ); + const CMTPTypeString& textData = static_cast( aNewData ); TBuf data; - data.Copy( textData->StringChars().Left( KMtpMaxDateTimeStringLength ) ); + data.Copy( textData.StringChars().Left( KMtpMaxDateTimeStringLength ) ); PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL 0xDC99 date = %S" ), &data ); if ( data.Length() < KMtpMaxDateTimeStringLength ) @@ -852,16 +893,19 @@ const TDesC& suid = aMediaProp.ValueText( KMPXMediaGeneralUri ); PRINT2( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData numElements = %d, suid = %S" ), numElements, &suid ); - HBufC8* sampleData = HBufC8::NewLC( numElements * sizeof( TUint8 ) ); - TPtr8 samplePtr = sampleData->Des(); + delete iSampleData; + iSampleData = NULL; + + iSampleData = HBufC8::NewL( numElements * sizeof( TUint8 ) ); + TPtr8 samplePtr = iSampleData->Des(); mtpTypeArray.ToDes( samplePtr ); RFile sampleFile; CleanupClosePushL( sampleFile ); User::LeaveIfError( sampleFile.Replace( iRfs, suid, EFileWrite ) ); User::LeaveIfError( sampleFile.Write( samplePtr ) ); + aMediaProp.SetTObjectValueL( KMPXMediaMTPSampleData, (TInt)iSampleData ); + aMediaProp.SetTObjectValueL( attrib, ETrue ); CleanupStack::PopAndDestroy( &sampleFile ); - CleanupStack::PopAndDestroy( sampleData ); - aMediaProp.SetTObjectValueL( attrib, ETrue ); PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData is ready = %u" ), 1 ); } break; @@ -873,7 +917,6 @@ break; } - CleanupStack::PopAndDestroy( textData ); // - textData PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetMetadataValueL" ) ); } @@ -1021,10 +1064,7 @@ CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); - if ( aCategory == EMPXPlaylist ) - { - abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); - } + abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); PERFLOGSTART( KMpxCollectionFindAllLBeforeAdd ); CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, @@ -1069,12 +1109,8 @@ media->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); TParsePtrC parse( aFullFileName ); - media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); - if ( ( aCategory == EMPXPlaylist ) || ( aCategory == EMPXAbstractAlbum ) ) - { - media->SetTextValueL( KMPXMediaGeneralTitle, parse.Name() ); - } + media->SetTextValueL( KMPXMediaGeneralTitle, parse.Name() ); media->SetTObjectValueL( KMPXMediaGeneralSynchronized, ETrue ); media->SetCObjectValueL( KMPXMediaArrayContents, abstractMediaArray ); media->SetTObjectValueL( KMPXMediaArrayCount, abstractMediaArray->Count() ); @@ -1136,7 +1172,8 @@ // TODO: need to confirm that should set drive letter or storage root path. TParsePtrC parse( aRefFileArray[j] ); media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); - + media->SetTObjectValueL( KMPXMediaGeneralModified, EFalse ); + // Add media into array contents abstractMediaArray->AppendL( media ); @@ -1317,10 +1354,8 @@ CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); - if ( aCategory == EMPXPlaylist ) - { - abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); - } + + abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); PERFLOGSTART( KMpxCollectionGetAbstractMedia ); CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, @@ -1451,7 +1486,7 @@ { PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL" ) ); HBufC* name = NULL; - if ( aCategory == EMPXPlaylist ) + if ( aCategory == EMPXPlaylist || aCategory == EMPXAbstractAlbum ) { if( !aAbstractMedia->IsSupported( KMPXMediaGeneralUri ) ) { @@ -1459,14 +1494,6 @@ } name = aAbstractMedia->ValueText( KMPXMediaGeneralUri ).AllocL(); } - else if ( aCategory == EMPXAbstractAlbum ) - { - if ( !aAbstractMedia->IsSupported( KMPXMediaGeneralTitle ) ) - { - User::Leave( KErrNotSupported ); - } - name = aAbstractMedia->ValueText( KMPXMediaGeneralTitle ).AllocL(); - } else { User::Leave( KErrNotSupported ); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/mmmtpdataprovider/src/mmmtpdputility.cpp --- a/mmappcomponents/mmmtpdataprovider/src/mmmtpdputility.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/mmmtpdputility.cpp Fri May 14 16:21:14 2010 +0300 @@ -38,6 +38,7 @@ #include "mmmtpdpfiledefs.h" #include "tobjectdescription.h" #include "mmmtpdplogger.h" +#include "mmmtpdp_variant.hrh" using namespace ContentAccess; @@ -57,82 +58,77 @@ // EXPORT_C TMTPFormatCode MmMtpDpUtility::FormatFromFilename( const TDesC& aFullFileName ) { + TMTPFormatCode format = EMTPFormatCodeUndefined; + if ( aFullFileName.Right( 1 ).CompareF( KTxtBackSlash ) == 0 ) // We have a directory name { - return EMTPFormatCodeAssociation; + format = EMTPFormatCodeAssociation; } - - TParsePtrC file( aFullFileName ); - - if ( !file.ExtPresent() ) - return EMTPFormatCodeUndefined; - - // need to do it in popularity of format, to optmize performance - if ( file.Ext().CompareF( KTxtExtensionMP3 ) == 0 ) - return EMTPFormatCodeMP3; - -#ifdef __WINDOWS_MEDIA - if ( file.Ext().CompareF( KTxtExtensionWMA ) == 0 ) - return EMTPFormatCodeWMA; -#endif // __WINDOWS_MEDIA - - if ( ( file.Ext().CompareF( KTxtExtensionMP4 ) == 0 ) - || ( file.Ext().CompareF( KTxtExtensionM4A ) == 0 ) ) - return EMTPFormatCodeMP4Container; - - if ( ( file.Ext().CompareF( KTxtExtension3GP ) == 0 ) - || ( file.Ext().CompareF( KTxtExtension3G2 ) == 0 ) - || ( file.Ext().CompareF( KTxtExtensionO4A ) == 0 ) - || ( file.Ext().CompareF( KTxtExtensionO4V ) == 0 ) ) - return EMTPFormatCode3GPContainer; - - if ( file.Ext().CompareF( KTxtExtensionAAC ) == 0 ) - return EMTPFormatCodeAAC; + else + { + TParsePtrC file( aFullFileName ); - if ( file.Ext().CompareF( KTxtExtensionWAV ) == 0 ) - return EMTPFormatCodeWAV; - + if ( file.ExtPresent() ) + { + // need to do it in popularity of format, to optmize performance + if ( file.Ext().CompareF( KTxtExtensionMP3 ) == 0 ) + format = EMTPFormatCodeMP3; #ifdef __WINDOWS_MEDIA - if ( file.Ext().CompareF( KTxtExtensionWMV ) == 0 ) - return EMTPFormatCodeWMV; - - if ( file.Ext().CompareF( KTxtExtensionASF ) == 0 ) - return EMTPFormatCodeASF; - + else if ( file.Ext().CompareF( KTxtExtensionWMA ) == 0 ) + format = EMTPFormatCodeWMA; #endif // __WINDOWS_MEDIA + else if (( file.Ext().CompareF( KTxtExtensionPLA ) == 0 ) + || ( file.Ext().CompareF( KTxtExtensionVIR ) == 0 ) ) + format = EMTPFormatCodeAbstractAudioVideoPlaylist; + else if ( ( file.Ext().CompareF( KTxtExtensionMP4 ) == 0 ) + || ( file.Ext().CompareF( KTxtExtensionM4A ) == 0 ) ) + format = EMTPFormatCodeMP4Container; + else if ( ( file.Ext().CompareF( KTxtExtension3GP ) == 0 ) + || ( file.Ext().CompareF( KTxtExtension3G2 ) == 0 ) + || ( file.Ext().CompareF( KTxtExtensionO4A ) == 0 ) + || ( file.Ext().CompareF( KTxtExtensionO4V ) == 0 ) ) + format = EMTPFormatCode3GPContainer; + else if ( file.Ext().CompareF( KTxtExtensionAAC ) == 0 ) + format = EMTPFormatCodeAAC; + else if ( file.Ext().CompareF( KTxtExtensionWAV ) == 0 ) + format = EMTPFormatCodeWAV; +#ifdef __WINDOWS_MEDIA + else if ( file.Ext().CompareF( KTxtExtensionWMV ) == 0 ) + format = EMTPFormatCodeWMV; + else if ( file.Ext().CompareF( KTxtExtensionASF ) == 0 ) + format = EMTPFormatCodeASF; +#endif // __WINDOWS_MEDIA + else if ( file.Ext().CompareF( KTxtExtensionODF ) == 0 ) + { + HBufC8* mime = MmMtpDpUtility::OdfMimeTypeL( file.FullName() ); + if ( mime != NULL ) + { + // 3GP + if ( mime->CompareF( KMimeTypeAudio3gpp ) == 0 + || mime->CompareF( KMimeTypeVideo3gpp ) == 0 ) + { + delete mime; + mime = NULL; + format = EMTPFormatCode3GPContainer; + } + } - if ( file.Ext().CompareF( KTxtExtensionODF ) == 0 ) - { - HBufC8* mime = MmMtpDpUtility::ContainerMimeType( file.FullName() ); - if ( mime != NULL ) - { - // 3GP - if ( mime->CompareF( KMimeTypeAudio3gpp ) == 0 - || mime->CompareF( KMimeTypeVideo3gpp ) == 0 ) - { - delete mime; - mime = NULL; - return EMTPFormatCode3GPContainer; + if ( mime != NULL ) + { + delete mime; + mime = NULL; + } } - } - - if ( mime != NULL ) - { - delete mime; - mime = NULL; +#ifdef MMMTPDP_ABSTRACTAUDIOALBUM_SUPPORT + else if ( file.Ext().CompareF( KTxtExtensionALB ) == 0 ) + format = EMTPFormatCodeAbstractAudioAlbum; +#endif // MMMTPDP_ABSTRACTAUDIOALBUM_SUPPORT + else if ( file.Ext().CompareF( KTxtExtensionM3U ) == 0 ) + format = EMTPFormatCodeM3UPlaylist; } } - if ( file.Ext().CompareF( KTxtExtensionALB ) == 0 ) - return EMTPFormatCodeAbstractAudioAlbum; - - if (( file.Ext().CompareF( KTxtExtensionPLA ) == 0 ) || ( file.Ext().CompareF( KTxtExtensionVIR ) == 0 ) ) - return EMTPFormatCodeAbstractAudioVideoPlaylist; - - if ( file.Ext().CompareF( KTxtExtensionM3U ) == 0 ) - return EMTPFormatCodeM3UPlaylist; - - return EMTPFormatCodeUndefined; + return format; } // ----------------------------------------------------------------------------- @@ -413,54 +409,6 @@ } // ----------------------------------------------------------------------------- -// MetadataAccessWrapper::ContainerMimeType -// Get mime type from file -// ----------------------------------------------------------------------------- -// -HBufC8* MmMtpDpUtility::ContainerMimeType( const TDesC& aFullPath ) - { - PRINT( _L( "MM MTP => MmMtpDpUtility::ContainerMimeType" ) ); - - // parse the file path - TParsePtrC pathParser( aFullPath ); - - // get the extension of file - TPtrC ext( pathParser.Ext() ); - if ( ext.Length() <= 0 ) - { - PRINT( _L( "MM MTP <> MmMtpDpUtility::ContainerMimeType file ext len == 0" ) ); - return NULL; - } - - HBufC8* mimebuf = NULL; - TInt err = KErrNone; - - // MP4/3GP - if ( ext.CompareF( KTxtExtensionMP4 ) == 0 - || ext.CompareF( KTxtExtension3GP ) == 0 - || ext.CompareF( KTxtExtension3G2 ) == 0 ) - { - TRAP( err, mimebuf = Mp4MimeTypeL( aFullPath ) ); - PRINT1( _L("MM MTP <> MmMtpDpUtility::ContainerMimeType, Mp4MimeTypeL err = %d"), err ); - } - else if ( ext.CompareF( KTxtExtensionODF ) == 0 ) - { - TRAP( err, mimebuf = OdfMimeTypeL( aFullPath ) ); - PRINT1( _L("MM MTP <> MmMtpDpUtility::ContainerMimeType, OdfMimeTypeL err = %d"), err ); - } -#ifdef __WINDOWS_MEDIA - else if ( ext.CompareF( KTxtExtensionASF ) == 0 ) - { - TRAP( err, mimebuf = AsfMimeTypeL( aFullPath ) ); - PRINT1( _L("MM MTP <> MmMtpDpUtility::ContainerMimeType, AsfMimeTypeL err = %d"), err ); - } -#endif - - PRINT( _L( "MM MTP <= MmMtpDpUtility::ContainerMimeType" ) ); - return mimebuf; - } - -// ----------------------------------------------------------------------------- // MetadataAccessWrapper::Mp4MimeTypeL // Get mime type from mp4 file // ----------------------------------------------------------------------------- @@ -523,7 +471,7 @@ // is video file else if ( mp4err == MP4_OK ) { - if ( file.Ext().CompareF( KTxtExtension3GP ) == 0 + if ( file.Ext().CompareF( KTxtExtension3GP ) == 0 || file.Ext().CompareF( KTxtExtension3G2 ) == 0 ) { mimebuf = KMimeTypeVideo3gpp().Alloc(); @@ -566,44 +514,35 @@ PRINT( _L( "MM MTP => MmMtpDpUtility::OdfMimeTypeL" ) ); HBufC8* mimebuf = NULL; - TParsePtrC file( aFullPath ); + CContent* content = CContent::NewL( aFullPath ); + CleanupStack::PushL( content ); // + content - if ( file.Ext().CompareF( KTxtExtensionODF ) == 0 ) - { - CContent* content = CContent::NewL( aFullPath ); - CleanupStack::PushL( content ); // + content - - HBufC* buffer = HBufC::NewL( KMimeTypeMaxLength ); - CleanupStack::PushL( buffer ); // + buffer + HBufC* buffer = HBufC::NewL( KMimeTypeMaxLength ); + CleanupStack::PushL( buffer ); // + buffer - TPtr data = buffer->Des(); - TInt err = content->GetStringAttribute( EMimeType, data ); - - if ( err == KErrNone ) - { - mimebuf = HBufC8::New( buffer->Length() ); + TPtr data = buffer->Des(); + TInt err = content->GetStringAttribute( EMimeType, data ); - if (mimebuf == NULL) - { - User::LeaveIfError( KErrNotFound ); - } + if ( err == KErrNone ) + { + mimebuf = HBufC8::New( buffer->Length() ); - mimebuf->Des().Copy( *buffer ); + if ( mimebuf == NULL ) + { + User::LeaveIfError( KErrNotFound ); } - // leave if NULL - if ( mimebuf == NULL ) - { - User::Leave( KErrNotFound ); - } + mimebuf->Des().Copy( *buffer ); + } - CleanupStack::PopAndDestroy( buffer ); // - buffer - CleanupStack::PopAndDestroy( content ); // - content + // leave if NULL + if ( mimebuf == NULL ) + { + User::Leave( KErrNotFound ); } - else - { - User::Leave( KErrNotSupported ); - } + + CleanupStack::PopAndDestroy( buffer ); // - buffer + CleanupStack::PopAndDestroy( content ); // - content PRINT( _L( "MM MTP <= MmMtpDpUtility::OdfMimeTypeL" ) ); return mimebuf; @@ -621,62 +560,52 @@ HBufC8* mimebuf = NULL; #ifdef __WINDOWS_MEDIA - TParsePtrC file( aFullPath ); - - if ( file.Ext().CompareF( KTxtExtensionASF ) == 0 ) - { - CHXMetaDataUtility *hxUtility = CHXMetaDataUtility::NewL(); - CleanupStack::PushL( hxUtility ); - - hxUtility->OpenFileL( aFullPath ); - PRINT( _L( "MM MTP <> MmMtpDpUtility::AsfMimeTypeL OpenFileL" ) ); + CHXMetaDataUtility *hxUtility = CHXMetaDataUtility::NewL(); + CleanupStack::PushL( hxUtility ); - HXMetaDataKeys::EHXMetaDataId id; - TUint count = 0; - TBool isAudio = EFalse; - hxUtility->GetMetaDataCount( count ); - for ( TUint i = 0; i < count; i++ ) - { - HBufC* buf = NULL; - hxUtility->GetMetaDataAt( i, id, buf ); - - if ( id == HXMetaDataKeys::EHXMimeType ) - { - TPtr des = buf->Des(); + hxUtility->OpenFileL( aFullPath ); + PRINT( _L( "MM MTP <> MmMtpDpUtility::AsfMimeTypeL OpenFileL" ) ); - if ( des.Find( KHxMimeTypeWma() ) != KErrNotFound ) - { - isAudio = ETrue; - } - else if ( des.Find( KHxMimeTypeWmv() ) != KErrNotFound ) - { - PRINT( _L( "MM MTP <> MmMtpDpUtility::AsfMimeTypeL, video" ) ); - mimebuf = KMimeTypeVideoWm().Alloc(); - break; - } + HXMetaDataKeys::EHXMetaDataId id; + TUint count = 0; + TBool isAudio = EFalse; + hxUtility->GetMetaDataCount( count ); + for ( TUint i = 0; i < count; i++ ) + { + HBufC* buf = NULL; + hxUtility->GetMetaDataAt( i, id, buf ); + + if ( id == HXMetaDataKeys::EHXMimeType ) + { + TPtr des = buf->Des(); + + if ( des.Find( KHxMimeTypeWma() ) != KErrNotFound ) + { + isAudio = ETrue; } - else if ( i == count - 1 ) + else if ( des.Find( KHxMimeTypeWmv() ) != KErrNotFound ) { - if ( isAudio ) - { - PRINT( _L( "MM MTP <> MmMtpDpUtility::AsfMimeTypeL, audio" ) ); - mimebuf = KMimeTypeAudioWm().Alloc(); - } - else - { - User::Leave( KErrNotFound ); - } + PRINT( _L( "MM MTP <> MmMtpDpUtility::AsfMimeTypeL, video" ) ); + mimebuf = KMimeTypeVideoWm().Alloc(); + break; } } - - hxUtility->ResetL(); - CleanupStack::PopAndDestroy( hxUtility ); - } - else - { - User::Leave( KErrNotSupported ); + else if ( i == count - 1 ) + { + if ( isAudio ) + { + PRINT( _L( "MM MTP <> MmMtpDpUtility::AsfMimeTypeL, audio" ) ); + mimebuf = KMimeTypeAudioWm().Alloc(); + } + else + { + User::Leave( KErrNotFound ); + } + } } + hxUtility->ResetL(); + CleanupStack::PopAndDestroy( hxUtility ); #else User::Leave( KErrNotSupported ); #endif @@ -717,7 +646,7 @@ else { PRINT( _L( "MM MTP <= MmMtpDpUtility::SubFormatCodeFromMime format not supported" ) ); - subFormatCode = EMTPSubFormatCodeUndefine; + subFormatCode = EMTPSubFormatCodeUndefined; } PRINT1( _L( "MM MTP <= MmMtpDpUtility::SubFormatCodeFromMime SubFormatCode = %d" ), subFormatCode ); diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/playbackhelper/group/playbackhelper.mmp --- a/mmappcomponents/playbackhelper/group/playbackhelper.mmp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/playbackhelper/group/playbackhelper.mmp Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 7 % +// Version : %version: 8 % #include diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/playbackhelper/inc/playbackhelper_log.h --- a/mmappcomponents/playbackhelper/inc/playbackhelper_log.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/playbackhelper/inc/playbackhelper_log.h Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 6 % +// Version : %version: 7 % #ifndef PLAYBACKHELPER_LOG_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/playlistengine/group/bld.inf --- a/mmappcomponents/playlistengine/group/bld.inf Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/playlistengine/group/bld.inf Fri May 14 16:21:14 2010 +0300 @@ -23,9 +23,12 @@ PRJ_EXPORTS ../rom/mpxplaylistengine.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mpxplaylistengine.iby) -../rom/mpxplaylistrecognizerplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mpxplaylistrecognizerplugin.iby) + +//MMMW has a generic recognizer that takes care of m3u files +//../rom/mpxplaylistrecognizerplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(mpxplaylistrecognizerplugin.iby) PRJ_MMPFILES -mpxplaylistrecognizer.mmp +//MMMW has a generic recognizer that takes care of m3u files +//mpxplaylistrecognizer.mmp mpxplaylistengine.mmp diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/playlistengine/inc/mpxplaylistrecognizer.h --- a/mmappcomponents/playlistengine/inc/mpxplaylistrecognizer.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/playlistengine/inc/mpxplaylistrecognizer.h Fri May 14 16:21:14 2010 +0300 @@ -29,6 +29,8 @@ class CMPXPluginHandlerBase; /** +* Deprecated. replaced by playlist recognizer in mw/mmmw. +* * Concrete implementation of the recognizer API used to recognize playlist files. * * This is used by the application framework, as well as CMPXPlaylistEngine to diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/playlistengine/src/mpxplaylistengine.cpp --- a/mmappcomponents/playlistengine/src/mpxplaylistengine.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/playlistengine/src/mpxplaylistengine.cpp Fri May 14 16:21:14 2010 +0300 @@ -59,7 +59,6 @@ #include "mpxplaylistenginedefs.hrh" #include "mpxplaylistplugin.h" #include "mpxplaylistengine.h" -#include "mpxplaylistrecognizer.h" // ============================ CONSTANTS ===================================== const TInt KMPXBufExpandSize = 0x40; diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/videoplaylistutility/group/videoplaylistutility.mmp --- a/mmappcomponents/videoplaylistutility/group/videoplaylistutility.mmp Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/videoplaylistutility/group/videoplaylistutility.mmp Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 5 % +// Version : %version: 6 % #include diff -r d881023c13eb -r cbb1bfb7ebfb mmappcomponents/videoplaylistutility/inc/videoplaylistutility_log.h --- a/mmappcomponents/videoplaylistutility/inc/videoplaylistutility_log.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappcomponents/videoplaylistutility/inc/videoplaylistutility_log.h Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 4 % +// Version : %version: 5 % diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/group/bld.inf --- a/mmappfw_plat/group/bld.inf Mon May 03 12:58:40 2010 +0300 +++ b/mmappfw_plat/group/bld.inf Fri May 14 16:21:14 2010 +0300 @@ -13,7 +13,7 @@ * * Description: Includes all the Domain API specific bld.inf files, which * export files. -* Version : %version: 1.1.4.1.3.3.6 % +* Version : %version: da1ido#1.1.4.1.3.3.8 % * */ @@ -46,3 +46,4 @@ #endif #include "../playback_helper_api/group/bld.inf" #include "../videoplaylist_utility_api/group/bld.inf" +#include "../qt_telephony_multimedia_service_api/group/bld.inf" diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/harvester_collection_mediator_api/tsrc/HarvesterCollectionMediatorTest/group/HarvesterCollectionMediatorTest.mmp --- a/mmappfw_plat/harvester_collection_mediator_api/tsrc/HarvesterCollectionMediatorTest/group/HarvesterCollectionMediatorTest.mmp Mon May 03 12:58:40 2010 +0300 +++ b/mmappfw_plat/harvester_collection_mediator_api/tsrc/HarvesterCollectionMediatorTest/group/HarvesterCollectionMediatorTest.mmp Fri May 14 16:21:14 2010 +0300 @@ -49,7 +49,11 @@ LIBRARY euser.lib LIBRARY bafl.lib estor.lib ecom.lib stiftestinterface.lib LIBRARY stiftestengine.lib -LIBRARY mpxcollectionmediator.lib mpxcollectionutility.lib mpxcollectionengine.lib mpxcollectionhelper.lib mpxcommon.lib +LIBRARY mpxcollectionmediator.lib +LIBRARY mpxcollectionutility.lib +LIBRARY mpxcollectionengine.lib +LIBRARY mpxcollectionhelper.lib +LIBRARY mpxcommon.lib LANG SC diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/harvester_metadata_extractor_api/group/bld.inf --- a/mmappfw_plat/harvester_metadata_extractor_api/group/bld.inf Mon May 03 12:58:40 2010 +0300 +++ b/mmappfw_plat/harvester_metadata_extractor_api/group/bld.inf Fri May 14 16:21:14 2010 +0300 @@ -25,3 +25,4 @@ PRJ_EXPORTS ../inc/mpxmetadataextractor.h MW_LAYER_PLATFORM_EXPORT_PATH(mpxmetadataextractor.h) +../inc/mpxmetadataextractorobserver.h MW_LAYER_PLATFORM_EXPORT_PATH(mpxmetadataextractorobserver.h) diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/harvester_metadata_extractor_api/inc/mpxmetadataextractor.h --- a/mmappfw_plat/harvester_metadata_extractor_api/inc/mpxmetadataextractor.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappfw_plat/harvester_metadata_extractor_api/inc/mpxmetadataextractor.h Fri May 14 16:21:14 2010 +0300 @@ -24,6 +24,7 @@ class CMetaDataUtility; class CMPXFileInfoUtility; class CMPXDrmMediaUtility; +class MMPXMetadataExtractorObserver; #include #include @@ -33,7 +34,7 @@ * @lib mpxfilehandler.lib */ class CMPXMetadataExtractor : public CBase, - public MThumbnailManagerObserver + public MThumbnailManagerObserver { public: @@ -72,6 +73,27 @@ */ IMPORT_C TInt ExtractAlbumArtL( CMPXMedia* aMedia ); + /* + * Create a media object for a file. This is a asynchronous function. + * This function will leave with KErrAbort if still processing last request. + * Callback function is HandleCreateMediaComplete() + * @since 9.2 + * @param aFile a fullpath to the file. + * @param aObs Metadata Extractor Observer + * @param aMetadataOnly extract metadata only or not. Default EFalse + */ + IMPORT_C void CreateMediaAsyncL( const TDesC& aFile, + MMPXMetadataExtractorObserver* aObs, + TBool aMetadataOnly = EFalse ); + + /** + * Cancel request. This will empty the task array and stop the wait loop. This + * will cause the CreateMediaL() to finish more quickly. Also, + * all outstanding thumbnail requests are cancelled. + * @since 9.2 + */ + IMPORT_C void CancelRequest(); + private: // New Functions: /** @@ -84,26 +106,14 @@ /** * Function to go through the metadata entries. * @since 3.2.3 - * @param aProp Media Properties to update. - * @param aFile File name */ - void SetMediaPropertiesL( CMPXMedia& aProp, - const TDesC& aFile ); + void SetMediaPropertiesL(); /** * Sets other media properties not found from metadata util. * @since 3.2.3 - * @param aProp Media Properties to update. - * @param aFile file name. - * @param aMetadataOnly extract metadata only or not Default EFalse. - * @param aFileHandle file handle to the file. - * @param aFileErr file handle error if file could not be opened */ - void SetExtMediaPropertiesL( CMPXMedia& aProp, - const TDesC& aFile, - TBool aMetadataOnly, - RFile& aFileHandle, - TInt aFileErr ); + void SetExtMediaPropertiesL(); /** * Checks to see if a container type is supported. @@ -151,22 +161,12 @@ static TInt TimeoutTimerCallback(TAny* aPtr); /** - * Get album art metadata. - * @since 5.0 - * @param aMedia - * @return error ID - */ - TInt GetMediaAlbumArtL( CMPXMedia& aMedia, - const TDesC& aFile ); - - /** * Add album art to media object. * @since 5.0 * @param aMedia */ void AddMediaAlbumArtL( CMPXMedia& aMedia, - const TDesC& aFile, - TDesC8& aValue); + const TDesC& aFile ); /** * Check if can send request to TNM or not. @@ -175,6 +175,62 @@ */ void CheckBeforeSendRequest(); + /** + * Cancel all outstanding thumbnail requests + * @since 9.2 + * + */ + void CancelAllThumbnailRequests(); + + /** + * Create media and set default data. + * @since 9.2 + * + */ + void DoCreateMediaL(); + + /** + * Execute task at index 0. + * @since 9.2 + * + */ + void ExecuteTaskL(); + + /** + * Cancel task timer. + */ + void CancelTaskTimer(); + + /** + * Callback when the task timer expires. + */ + static TInt TaskTimerCallback(TAny* aPtr); + + /** + * Populate task array + * @since 9.2 + */ + void AddTasksL(); + + /** + * Opens the file + * @since 9.2 + * @return system error + */ + TInt OpenFile(); + + /** + * Handle task timer expired + * @since 9.2 + */ + void HandleTaskTimerExpired(); + + /** + * Clean up + * @since 9.2 + */ + void CleanUp(); + private: /** @@ -190,6 +246,15 @@ void ConstructL(); private: // data + enum EMetadataExtractorTasks + { + ETaskCreateMedia, + ETaskAddMetadata, + ETaskAddExtMetadata, + ETaskAddAlbumArt, + ETaskCheckBeforeSend + }; + CMetaDataUtility* iMetadataUtility; // extract metadata from file CMPXDrmMediaUtility* iDrmMediaUtility; // extra drm data from file CMPXFileInfoUtility* iFileInfoUtil; // extract duration/bitrate etc from file @@ -200,8 +265,16 @@ CThumbnailManager* iTNManager; CActiveSchedulerWait* iTNSyncWait; // wait loop use to sync thumbnail CPeriodic* iTimer; // backup timer to stop wait loop - TInt iOutstandingThumbnailRequest; - TInt iTNMBlockCount; + RArray iArrayTNRequestId; + RArray iArrayTasks; + TBool iCancelled; + CPeriodic* iTaskTimer; // timer for task execution + MMPXMetadataExtractorObserver* iObs; // metadata extractor obserer + TFileName iFileName; + RFile iFile; + CMPXMedia* iMedia; // ownership transferred + TBool iMetadataOnly; + TInt iFileOpenError; }; #endif // CMPXMETADATAEXTRACTOR_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/harvester_metadata_extractor_api/inc/mpxmetadataextractorobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/harvester_metadata_extractor_api/inc/mpxmetadataextractorobserver.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2006 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: Observer class for metadata extractor +* +*/ + + +#ifndef MMPXMETADATAEXTRACTOROBSERVER_H +#define MMPXMETADATAEXTRACTOROBSERVER_H + +class CMPXMediaArray; + +/** + * Metadata Extractor observer + * + * @lib mpxfilehandler.lib + * @since S60 v9.2 + */ +class MMPXMetadataExtractorObserver + { + +public: + + /** + * Callback when the CreateMediaL() is completed. + * @param aMedia media with metadata populated. Ownership transferred. + * @param aError error + */ + virtual void HandleCreateMediaComplete( CMPXMedia* aMedia, TInt aError ) = 0; + }; + +#endif // MMPXMETADATAEXTRACTOROBSERVER_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/harvester_server_api/inc/mpxharvestercommon.h --- a/mmappfw_plat/harvester_server_api/inc/mpxharvestercommon.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappfw_plat/harvester_server_api/inc/mpxharvestercommon.h Fri May 14 16:21:14 2010 +0300 @@ -69,7 +69,7 @@ EUSBMTPEndEvent, // MTP end event EUSBMTPNotActiveEvent, // MTP selected but not active ESystemEventMax, // End of event enum - EPowerKeyEjectEvent // Power key eject mmc + EDiskDismountEvent // Disk dismount notification (MPX Harvester internal) }; #endif // MPX_HARVESTER_COMMON_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/mpx_common_api/inc/mpxmediamtpdefs.h --- a/mmappfw_plat/mpx_common_api/inc/mpxmediamtpdefs.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappfw_plat/mpx_common_api/inc/mpxmediamtpdefs.h Fri May 14 16:21:14 2010 +0300 @@ -35,6 +35,7 @@ */ const TMPXAttributeData KMPXMediaMTPDrmStatus = {KMPXMediaIdMTP, 0x0001}; // TUint16 const TMPXAttributeData KMPXMediaMTPSampleDataFlag = {KMPXMediaIdMTP, 0x0002}; // TBool +const TMPXAttributeData KMPXMediaMTPSampleData = {KMPXMediaIdMTP, 0x0004}; // HBufC8* const TMPXAttributeData KMPXMediaMTPAll = {KMPXMediaIdMTP, 0xffffffff}; #endif // MPXMEDIAMTPDEFS_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/mpx_common_api/inc/mpxmediamusicdefs.h --- a/mmappfw_plat/mpx_common_api/inc/mpxmediamusicdefs.h Mon May 03 12:58:40 2010 +0300 +++ b/mmappfw_plat/mpx_common_api/inc/mpxmediamusicdefs.h Fri May 14 16:21:14 2010 +0300 @@ -46,6 +46,7 @@ const TMPXAttributeData KMPXMediaMusicAlbumArtThumbnailSize={KMPXMediaIdMusic,0x800}; // TSint const TMPXAttributeData KMPXMediaMusicAlbumArtChanged={KMPXMediaIdMusic,0x1000}; // TInt const TMPXAttributeData KMPXMediaMusicAlbumArtist={KMPXMediaIdMusic,0x2000}; // Text +const TMPXAttributeData KMPXMediaMusicAlbumId={KMPXMediaIdMusic,0x4000}; // TMPXItemId const TMPXAttributeData KMPXMediaMusicAll={KMPXMediaIdMusic,0xffffffff}; // Text /** @@ -68,6 +69,7 @@ EMPXMediaMusicAlbumArtThumbnail=0x400, EMPXMediaMusicAlbumArtThumbnailSize=0x800, EMPXMediaMusicAlbumArtist=0x2000, + EMPXMediaMusicAlbumId=0x4000, EMPXMediaMusicAll=0xffffffff }; diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/mpx_common_definition_api/group/bld.inf --- a/mmappfw_plat/mpx_common_definition_api/group/bld.inf Mon May 03 12:58:40 2010 +0300 +++ b/mmappfw_plat/mpx_common_definition_api/group/bld.inf Fri May 14 16:21:14 2010 +0300 @@ -36,4 +36,5 @@ ../inc/mpxmessage2.h MW_LAYER_PLATFORM_EXPORT_PATH(mpxmessage2.h) ../inc/mpxpathconfiguration.hrh MW_LAYER_PLATFORM_EXPORT_PATH(mpxpathconfiguration.hrh) ../inc/mpxprivatecrkeys.h MW_LAYER_PLATFORM_EXPORT_PATH(mpxprivatecrkeys.h) -../inc/mpxsearchcriteria.h MW_LAYER_PLATFORM_EXPORT_PATH(mpxsearchcriteria.h) \ No newline at end of file +../inc/mpxsearchcriteria.h MW_LAYER_PLATFORM_EXPORT_PATH(mpxsearchcriteria.h) +../inc/EqualizerConstants.h MW_LAYER_PLATFORM_EXPORT_PATH(EqualizerConstants.h) \ No newline at end of file diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/group/bld.inf Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include + +PRJ_PLATFORMS +DEFAULT + +PRJ_EXPORTS + +../inc/qtms.h MW_LAYER_PLATFORM_EXPORT_PATH(qtms.h) +../inc/qtmsamrformat.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsamrformat.h) +../inc/qtmsbuffer.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsbuffer.h) +../inc/qtmscall.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmscall.h) +../inc/qtmsclientsink.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsclientsink.h) +../inc/qtmsclientsource.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsclientsource.h) +../inc/qtmsdtmf.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsdtmf.h) +../inc/qtmseffect.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmseffect.h) +../inc/qtmsfactory.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsfactory.h) +../inc/qtmsformat.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsformat.h) +../inc/qtmsg711format.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsg711format.h) +../inc/qtmsg729format.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsg729format.h) +../inc/qtmsgaineffect.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsgaineffect.h) +../inc/qtmsglobalgaineffect.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsglobalgaineffect.h) +../inc/qtmsglobalrouting.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsglobalrouting.h) +../inc/qtmsglobalvoleffect.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsglobalvoleffect.h) +../inc/qtmsilbcformat.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsilbcformat.h) +../inc/qtmspcmformat.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmspcmformat.h) +../inc/qtmsringtone.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsringtone.h) +../inc/qtmssink.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmssink.h) +../inc/qtmssource.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmssource.h) +../inc/qtmsstream.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsstream.h) +../inc/qtmsvolumeeffect.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsvolumeeffect.h) +../inc/qtmsmicsource.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsmicsource.h) +../inc/qtmsmodemsink.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsmodemsink.h) +../inc/qtmsmodemsource.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsmodemsource.h) +../inc/qtmsspeakersink.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsspeakersink.h) +../inc/qtmsinbandtone.h MW_LAYER_PLATFORM_EXPORT_PATH(qtmsinbandtone.h) diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtms.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtms.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,208 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_H +#define QTMS_H + +// Include files +#include +#include + +namespace QTMS { + +class QTMSFormat; + +// Result codes +#define QTMS_RESULT_SUCCESS ((gint)0x00000000) +#define QTMS_RESULT_ALREADY_EXIST ((gint)0x00000001) +#define QTMS_RESULT_DOES_NOT_EXIST ((gint)0x00000002) +#define QTMS_RESULT_NULL_ARGUMENT ((gint)0x00000003) +#define QTMS_RESULT_INVALID_ARGUMENT ((gint)0x00000004) +#define QTMS_RESULT_INVALID_STATE ((gint)0x00000005) +#define QTMS_RESULT_UNINITIALIZED_OBJECT ((gint)0x00000006) +#define QTMS_RESULT_INSUFFICIENT_MEMORY ((gint)0x00000007) +#define QTMS_RESULT_GENERAL_ERROR ((gint)0x00000008) +#define QTMS_RESULT_FATAL_ERROR ((gint)0x00000009) +#define QTMS_RESULT_OPERATION_CANCELLED ((gint)0x0000000A) +#define QTMS_RESULT_ILLEGAL_OPERATION ((gint)0x0000000B) +#define QTMS_RESULT_BUFFER_LATENCY_ERROR ((gint)0x0000000C) +#define QTMS_RESULT_CALL_TYPE_NOT_SUPPORTED ((gint)0x0000000D) +#define QTMS_RESULT_BUFFER_TYPE_NOT_SUPPORTED ((gint)0x0000000E) +#define QTMS_RESULT_SOURCE_TYPE_NOT_SUPPORTED ((gint)0x0000000F) +#define QTMS_RESULT_SINK_TYPE_NOT_SUPPORTED ((gint)0x00000010) +#define QTMS_RESULT_STREAM_TYPE_NOT_SUPPORTED ((gint)0x00000011) +#define QTMS_RESULT_FORMAT_TYPE_NOT_SUPPORTED ((gint)0x00000012) +#define QTMS_RESULT_EFFECT_TYPE_NOT_SUPPORTED ((gint)0x00000013) +#define QTMS_RESULT_VERSION_NOT_SUPPORTED ((gint)0x00000014) +#define QTMS_RESULT_FORMAT_TYPE_UNSPECIFIED ((gint)0x00000015) +#define QTMS_RESULT_FEATURE_NOT_SUPPORTED ((gint)0x00000016) + +// Reasons codes +#define QTMS_REASON_CLIENT_INITIATED ((gint)0x00000000) +#define QTMS_REASON_DEVICE_IN_USE ((gint)0x00000001) // Device not available +#define QTMS_REASON_DEVICE_TAKEN ((gint)0x00000002) // Preemption +#define QTMS_REASON_INSUFFICIENT_MEMORY ((gint)0x00000003) // Memory +#define QTMS_REASON_PERMISSION_DENIED ((gint)0x00000004) // Client app does not have perission +#define QTMS_REASON_EMERGENCY_CALL_ONGOING ((gint)0x00000005) // Already ongoing emergency call +#define QTMS_REASON_EMERGENCY_CALL_STARTED ((gint)0x00000006) // Preemption because of emergency call +#define QTMS_REASON_SOURCE_NULL ((gint)0x00000007) // Could be checked on client side +#define QTMS_REASON_SOURCE_NOT_SUPPORTED ((gint)0x00000008) +#define QTMS_REASON_FORMAT_NULL ((gint)0x00000009) // Could be checked on client side +#define QTMS_REASON_EFFECT_NOT_SUPPORTED ((gint)0x0000000A) +#define QTMS_REASON_SINK_NULL ((gint)0x0000000B) // Could be checked on client side +#define QTMS_REASON_SINK_NOT_SUPPORTED ((gint)0x0000000C) +#define QTMS_REASON_CALL_NOT_ACTIVE ((gint)0x0000000D) + +// Event codes +#define QTMS_EVENT_STREAM_STATE_CHANGED ((gint)0x00000000) +#define QTMS_EVENT_SOURCE_FILL_BUFFER ((gint)0x00000001) +#define QTMS_EVENT_SOURCE_PROCESSED_BUFFER ((gint)0x00000002) +#define QTMS_EVENT_SINK_PROCESS_BUFFER ((gint)0x00000003) +#define QTMS_EVENT_EFFECT_VOL_CHANGED ((gint)0x00000004) +#define QTMS_EVENT_EFFECT_GAIN_CHANGED ((gint)0x00000005) +#define QTMS_EVENT_ROUTING_AVAIL_OUTPUTS_CHANGED ((gint)0x00000006) +#define QTMS_EVENT_ROUTING_OUTPUT_CHANGED ((gint)0x00000007) +#define QTMS_EVENT_ROUTING_SET_OUTPUT_COMPLETE ((gint)0x00000008) +#define QTMS_EVENT_RINGTONE_OPEN_COMPLETE ((gint)0x00000009) +#define QTMS_EVENT_RINGTONE_PLAY_COMPLETE ((gint)0x0000000A) +#define QTMS_EVENT_RINGTONE_DEINIT_COMPLETE ((gint)0x0000000B) +#define QTMS_EVENT_DTMF_TONE_STARTED ((gint)0x0000000C) +#define QTMS_EVENT_DTMF_TONE_STOPPED ((gint)0x0000000D) +#define QTMS_EVENT_INBAND_TONE_STARTED ((gint)0x0000000E) +#define QTMS_EVENT_INBAND_TONE_STOPPED ((gint)0x0000000F) + +// Stream states +typedef gint QTMSStreamState; +#define QTMS_STREAM_UNINITIALIZED ((gint)0x00000000) +#define QTMS_STREAM_INITIALIZED ((gint)0x00000001) +#define QTMS_STREAM_PAUSED ((gint)0x00000002) +#define QTMS_STREAM_STARTED ((gint)0x00000003) + +#define DEFAULT_CALL_CONTEXT ((gint)1) + +// QTMS object types +typedef gint QTMSStreamType; +#define QTMS_STREAM_UPLINK ((gint)0) +#define QTMS_STREAM_DOWNLINK ((gint)1) + +typedef gint QTMSBufferType; +#define QTMS_BUFFER_MEMORY ((gint)2) + +typedef gint QTMSSourceType; +#define QTMS_SOURCE_CLIENT ((gint)3) +#define QTMS_SOURCE_MODEM ((gint)4) +#define QTMS_SOURCE_MIC ((gint)5) + +typedef gint QTMSSinkType; +#define QTMS_SINK_CLIENT ((gint)6) +#define QTMS_SINK_MODEM ((gint)7) +#define QTMS_SINK_SPEAKER ((gint)8) + +typedef gint QTMSEffectType; +#define QTMS_EFFECT_GLOBAL_VOL ((gint)9) +#define QTMS_EFFECT_GLOBAL_GAIN ((gint)10) +#define QTMS_EFFECT_VOLUME ((gint)11) +#define QTMS_EFFECT_GAIN ((gint)12) + +typedef gint QTMSFormatType; +#define QTMS_FORMAT_PCM ((gint)13) +#define QTMS_FORMAT_AMR ((gint)14) +#define QTMS_FORMAT_G711 ((gint)15) +#define QTMS_FORMAT_G729 ((gint)16) +#define QTMS_FORMAT_ILBC ((gint)17) + +typedef gint QTMSRingToneType; +#define QTMS_RINGTONE_DEFAULT ((gint)0) +#define QTMS_RINGTONE_FILE ((gint)1) +#define QTMS_RINGTONE_SEQUENCE ((gint)2) +#define QTMS_RINGTONE_BEEP_ONCE ((gint)3) +#define QTMS_RINGTONE_SILENT ((gint)4) +#define QTMS_RINGTONE_UNSECURE_VOIP ((gint)5) + +typedef gint QTMSRTPSessionType; +#define QTMS_SESSION_RTP_PULL ((gint)0) +#define QTMS_SESSION_RTP_PUSH ((gint)1) + +// QTMS vectors +typedef std::vector FormatVector; +typedef std::vector BitRateVector; +typedef std::vector OutputVector; + +// Call types +typedef gint QTMSCallType; +#define QTMS_CALL_CS ((gint)0) +#define QTMS_CALL_ECS ((gint)1) +#define QTMS_CALL_IP ((gint)2) +#define QTMS_CALL_RTP ((gint)3) + +// Codec modes +typedef gint QTMSG711CodecMode; +#define QTMS_G711_CODEC_MODE_ALAW ((gint)0) +#define QTMS_G711_CODEC_MODE_MULAW ((gint)1) + +typedef gint QTMSILBCCodecMode; +#define QTMS_ILBC_CODEC_MODE_20MS_FRAME ((gint)0) +#define QTMS_ILBC_CODEC_MODE_30MS_FRAME ((gint)1) + +// Audio output types +typedef gint QTMSAudioOutput; +#define QTMS_AUDIO_OUTPUT_NONE ((gint)0) +#define QTMS_AUDIO_OUTPUT_PUBLIC ((gint)1) +#define QTMS_AUDIO_OUTPUT_PRIVATE ((gint)2) +#define QTMS_AUDIO_OUTPUT_HANDSET ((gint)3) +#define QTMS_AUDIO_OUTPUT_LOUDSPEAKER ((gint)4) +#define QTMS_AUDIO_OUTPUT_WIRED_ACCESSORY ((gint)5) +#define QTMS_AUDIO_OUTPUT_ACCESSORY ((gint)6) +#define QTMS_AUDIO_OUTPUT_ETTY ((gint)7) +#define QTMS_AUDIO_OUTPUT_NOT_ACTIVE ((gint)8) + +typedef gint QTMSInbandToneType; +#define QTMS_INBAND_USER_BUSY ((gint)0) +#define QTMS_INBAND_RADIO_PATH_NOT_AVAIL ((gint)1) +#define QTMS_INBAND_CONGESTION ((gint)2) +#define QTMS_INBAND_SPECIAL_INFO ((gint)3) +#define QTMS_INBAND_REORDER ((gint)4) +#define QTMS_INBAND_REMOTE_ALEARTING ((gint)5) +#define QTMS_INBAND_CALL_WAITING ((gint)6) +#define QTMS_INBAND_DATA_CALL ((gint)7) +#define QTMS_INBAND_NO_SEQUENCE ((gint)8) +#define QTMS_INBAND_BEEP_SEQUENCE ((gint)9) + +// Structure signalling callback notifications +struct QTMSSignalEvent + { + guint type; + guint reason; + gpointer event_data; + gpointer user_data; + gint curr_state; + gint prev_state; + }; + +// Structure for global volume effect change event +struct QTMSVolumeEventChangeData + { + guint level; + QTMSAudioOutput output; + gboolean output_changed; + }; + +} //namespace QTMS + +#endif // QTMS_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsamrformat.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsamrformat.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_AMR_FORMAT_H +#define QTMS_AMR_FORMAT_H + +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +/** + * QTMSAMRFormat class + * + * This class provides access methods to configure and query AMR-NB codec + * format settings. + * + * This format class can be used for both the encoder and decoder. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSAMRFormat : public QObject, + public QTMSFormat + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSAMRFormat(); + +protected: + /** + * Constructor + */ + QTMSAMRFormat(); + }; + +} //namespace QTMS + +#endif //QTMS_AMR_FORMAT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsbuffer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsbuffer.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_BUFFER_H +#define QTMS_BUFFER_H + +#include +#include + +namespace QTMS { + +/** + * QTMSBuffer class + * + * This interface provides data buffers to QTMS clients. This class allows + * clients to allocate data by themselves or request a specific size of the + * buffer from the factory. + * + * @lib QTMSapi.lib + * + */ +class QTMSBuffer : public QObject + { + Q_OBJECT +public: + /** + * Return buffer type. + * + * @param buftype + * Type of the buffer object (QTMS_BUFFER_MEMORY). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSBufferType& buftype)=0; + + /** + * Returns time stamp of the buffer so that the framework can determine + * the time at which this buffer has to be rendered by the output device + * sink. + * + * @param ts + * Time stamp in microseconds. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetTimeStamp(guint64& ts)=0; + + /** + * Sets the time stamp on the Buffer so that the framework can determine + * the time at which this buffer has to be rendered by the output device + * sink. + * + * @param ts + * Time stamp in microseconds. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint SetTimeStamp(const guint64 ts) =0; + + /** + * Returns size of data in the buffer. + * + * @param size + * Size of data in the buffer. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetDataSize(guint& size)=0; + + /** + * Set size of data in the buffer after filling in by the client. + * + * @param size + * Size of data in the buffer. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint SetDataSize(const guint size)=0; + + /** + * Return pointer to the memory location of the data associated with this + * buffer. + * + * @param bufptr + * Pointer to the data stored in the buffer. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetDataPtr(guint8*& bufptr) =0; + }; + +} //namespace QTMS + +#endif //QTMS_BUFFER_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmscall.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmscall.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_CALL_H +#define QTMS_CALL_H + +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSCall; +} + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSStream; + +/** + * QTMSCall class + * + * This class instantiates QTMS call object of one of the following types: + * QTMS_CALL_CS + * QTMS_CALL_ECS + * QTMS_CALL_IP + * + * Each QTMS call contains at least 1 stream (uplink or downlink). + * + * Usage: + * + * QTMSFactory *iFactory; + * QTMSCall *iCall; + * QTMSStream *iUplink; + * QTMSStream *iDownlink; + * gint err; + * err = QTMSFactory::CreateFactory(iFactory); + * err = iFactory->CreateCall(QTMS_CALL_IP, iCall); + * err = iCall->CreateStream(QTMS_STREAM_UPLINK, iUplink); + * err = iCall->CreateStream(QTMS_STREAM_DOWNLINK, iDownlink); + * ... + * err = iCall->DeleteStream(iDownlink); + * err = iCall->DeleteStream(iUplink); + * err = iFactory->DeleteCall(iCall); + * delete iFactory; + * ... + * + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSCall : public QObject + { + Q_OBJECT +public: + /** + * Destructor + * + */ + virtual ~QTMSCall(); + + /** + * Return call type. + * + * This function can be called at any time. + * + * Possible call types are as follows: + * QTMS_CALL_CS, + * QTMS_CALL_ECS + * QTMS_CALL_IP + * + * @return + * Call type as indicated above. + * + */ + QTMSCallType GetCallType(); + + /** + * Get call context ID. + * + * This ID is passed during the creation of the call object. + * + * @param ctxid + * Context ID. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_FATAL_ERROR if an error occured. + * + */ + gint GetCallContextId(guint& ctxid); + + /** + * Create QTMS stream of the given type. + * + * @param type + * Stream type to be created. + * + * @param strm + * Created stream. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INSUFFICIENT_MEMORY if call creation failed due to + * insufficient memory. + * QTMS_RESULT_STREAM_TYPE_NOT_SUPPORTED if stream type is not + * supported. + * QTMS_RESULT_FATAL_ERROR if an error occured. + * QTMS_REASON_EMERGENCY_CALL_ONGOING if emergency call is active. + * QTMS_REASON_PERMISSION_DENIED if permission is denied. + * + */ + gint CreateStream(const QTMSStreamType type, QTMSStream*& strm); + + /** + * Delete stream object. + * + * @param strm + * Stream to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INVALID_ARGUMENT if the stream is not valid. + */ + gint DeleteStream(QTMSStream*& strm); + +protected: + /** + * Constructor + */ + QTMSCall(); + +protected: + TMS::TMSCall* iTmsCall; + }; + +} //namespace QTMS + +#endif //QTMS_CALL_H + +// End of file + diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsclientsink.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsclientsink.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_CLIENT_SINK_H +#define QTMS_CLIENT_SINK_H + +#include +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSink; +class TMSBuffer; +} + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSBuffer; + +/** + * QTMSClientSink class + * + * This class provides QTMS client sink interface. It serves as a data sink + * to the QTMS, which supplies the client with buffers recorded by the a/v + * recording device. The constant flow of data between the a/v recorder + * device and the client is accomplished by sending BufferProcessed() events + * in response to TMSClientSinkObserver::ProcessBuffer sink observer callbacks. + * This indicates to the QTMS that the supplied buffer has been consumed by the + * client and it is ready to receive more recorded data. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSClientSink : public QObject, + public QTMSSink + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSClientSink(); + + /** + * Tell the sink that the buffer passed in has been processed by + * the client and is ready to be reused by the Sink. + * + * This function must be called in response to the callback from the + * sink observer QTMSClientSinkObserver::ProcessBuffer(). + * + * @param buffer + * The buffer which has been processed by the client (filled in + * with data). + * + * @return + * Status of the operation. + * + */ + gint BufferProcessed(TMS::TMSBuffer* buffer); + + /** + * Return sink type. + * + * This function can be called at any time. + * + * @param sinktype + * The type of sink object (QTMS_SINK_CLIENT). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSSinkType& sinktype); + + Q_SIGNALS: + void ProcessBuffer(const TMS::TMSBuffer* buffer); + +protected: + /** + * Constructor + */ + QTMSClientSink(); + +protected: + TMS::TMSSink* iSink; + }; + +} //namespace QTMS + +#endif //QTMS_CLIENT_SINK_H + +// End of file + diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsclientsource.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsclientsource.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_CLIENT_SOURCE_H +#define QTMS_CLIENT_SOURCE_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSource; +class TMSBuffer; +} + +namespace QTMS { + +/** + * QTMSClientSource class + * + * This class instantiates QTMS client source interface. It serves as a data + * source to the QTMS, through which the client submits data buffers to the + * QTMS call server for playback on the audio and/or video output device. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSClientSource : public QObject, + public QTMSSource + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSClientSource(); + + /** + * PULL MODE ONLY + * + * Tell the source that the buffer passed in has been filled in with data + * by the client and it is ready to be sent do the QTMS for processing. + * + * This function must be called in response to the callback from the + * source observer QTMSClientSourceObserver::FillBuffer. + * + * @param buffer + * The buffer which has been processed by the client (filled in + * with data). + * + * @return + * Status of the operation. + * + */ + gint BufferFilled(TMS::TMSBuffer& buffer); + + /** + * In the PUSH MODE, tell the source that the supplied buffer filled in + * with data should be queued before being sent for processing by the + * server. All ProcessBuffer requests will be queued until client calls + * Flush(). After all queued buffers are pushed to the server and + * processed, the QTMS will respond by issuing + * QTMSClientSourceObserver::BufferProcessed + * callback event. + * + * @param buffer + * The buffer with audio data supplied by the client for playback. + * + */ + gint ProcessBuffer(TMS::TMSBuffer* buffer); + + /** + * PUSH MODE ONLY + * + * Tell the QTMS framework to queue ProcessBuffer events. To request the + * QTMS push mode operation, the SetEnqueueMode must be called with the + * flag set TRUE. Buffer enqueuing continues until the client calls + * Flush(). At this point all queued data (buffers) are sent over to the + * QTMS for processing and the enqueuing mode is turned OFF. To turn it + * ON again, the client has to call SetEnqueueMode with TRUE parameter. + * + * Has no effect in the PULL mode. + * + * @param enable + * Toggles buffer enqueuing ON and OFF. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint SetEnqueueMode(const gboolean enable); + + /** + * PUSH MODE ONLY + * + * Return current buffer enqueuing mode setting. + * Has no effect in the PULL mode. + * + * @param enable + * Current enqueuing mode. + * + */ + gint GetEnqueueMode(gboolean& enable); + + /** + * PUSH MODE ONLY + * + * Push all queued buffers by ProcessBuffer to the server for processing. + * After calling this function, the enqueuing mode is turned OFF. To set + * it ON, the client has to call SetEnqueueMode again. + * + * Has no effect in the PULL mode. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Flush(); + + /** + * Return the source type. + * + * This function can be called at any time. + * + * @param QTMSSourceType& + * The type of the source object. The supported source types are + * as follows: + * QTMS_SOURCE_CLIENT + * QTMS_SOURCE_MODEM + * QTMS_SOURCE_MIC + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSSourceType& sourcetype); + + Q_SIGNALS: + void FillBuffer(TMS::TMSBuffer& buffer); + void BufferProcessed(const TMS::TMSBuffer* buffer, gint reason); + +protected: + /** + * Constructor + */ + QTMSClientSource(); + +protected: + TMS::TMSSource* iSource; + }; + +} //namespace QTMS + +#endif //QTMS_CLIENT_SOURCE_H + +// End of file + diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsdtmf.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsdtmf.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_DTMF_H +#define QTMS_DTMF_H + +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSDTMF; +} + +namespace QTMS { + +/** + * QTMSDTMFclass + * + * This class provides DTMF playback capability to the QTMS clients. Each + * DTMF player session is associated either with an uplink or downlink stream. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSDTMF : public QObject + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSDTMF(); + + /** + * Starts DTMF playback. In the case of downlink, the tone will be played + * locally. In case of uplink, the network will play tones. + * + * Common for CS and VOIP (uplink and downlink) + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Start(); + + /** + * Stops DTMF playback. + * Common for CS and VOIP (Uplink and Downlink). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Stop(); + + /** + * Supply DTMF player with a string of tones to be played on local + * playback device or sent via the uplink. + * + * @param string + * String containing one or more DTMF digits. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint SetTone(GString* string); + + /** + * Allows a client to continue or cancel the sending of a DTMF string + * when it was stopped by the use of ‘w’ char in the string. + * The client will set sending param to true if it wishes to continue + * the DTMF string sending and will set sending param to false if it + * wishes to discard the rest of the DTMF string. + * Reference: Multimode ETel API Design Document + * + * For CS calltype + * + * @param sending + * Boolean to continue sending DTMF string. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint ContinueDTMFStringSending(gboolean sending); + + Q_SIGNALS: + void DTMFEvent(const QTMSDTMF& dtmf, QTMSSignalEvent event); + +protected: + + /** + * Constructor + */ + QTMSDTMF(); + +protected: + TMS::TMSDTMF* iDtmf; + }; + +} //namespace QTMS + +#endif //__QTMS_DTMF_H__ + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmseffect.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmseffect.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_EFFECT_H +#define QTMS_EFFECT_H + +#include +#include + +namespace QTMS { + +/** + * QTMSEffect class + * + * Base class for all effect object classes. + * This is an abstract class. + * + * @lib QTMSapi.lib + * + */ +class QTMSEffect + { + //Q_OBJECT +public: + /** + * Return effect type. + * + * @param effecttype + * Type of the effect object. + * + * @return + * The status of the operation. + * + */ + virtual gint GetType(QTMSEffectType& effecttype) = 0; + }; + +} //namespace QTMS + +#endif //QTMS_EFFECT_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsfactory.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsfactory.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_FACTORY_H +#define QTMS_FACTORY_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSCall; +class QTMSFormat; +class QTMSEffect; +class QTMSBuffer; +class QTMSSource; +class QTMSSink; +class QTMSFactoryImpl; +class QTMSVer; // QTMS version definition +class QTMSGlobalRouting; +class QTMSDTMF; +class QTMSRingTone; +class QTMSInbandTone; + +/** + * QTMSFactory class + * + * This class serves as a factory crating all necessary QTMS components. + * + * Usage: + * + * QTMSFactory* iFactory; + * QTMSCall* iCall; + * gint err; + * err = QTMSFactory::CreateFactory(iFactory); + * err = iFactory->CreateCall(QTMS_CALL_IP, iCall); + * ... + * err = iFactory->DeleteCall(iCall); + * delete iFactory; + * ... + * + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSFactory : public QObject + { + Q_OBJECT +public: + /** + * Returns pointer reference to created QTMS Factory object. The specified + * API version will allow using different QTMS API variants. + * + * @param QTMSfactory + * Created Factory object. + * + * @param ver + * API version which should be used to create QTMS components. + * + * @return + * QTMS_RESULT_SUCCESS if factory is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY if factory creation failed due to + * insufficient of memory. + * QTMS_RESULT_VERSION_NOT_SUPPORTED if requested API version is not + * supported. + * + */ + static gint CreateFactory(QTMSFactory*& tmsfactory, QTMSVer& ver); + + /** + * Destructor + * + * Deletes the QTMS Factory. + * + */ + virtual ~QTMSFactory(); + + /** + * Creates QTMS Call of the given type with context ID. + * + * @param ctype + * Call type to be created. + * Supported call types: + * QTMS_CALL_CS + * QTMS_CALL_ECS + * QTMS_CALL_IP + * + * @param QTMScall + * Created Call object. + * + * @param ctxid + * The Context ID to be assigned to the call. The default is + * DEFAULT_CALL_CONTEXT. + * + * @return + * QTMS_RESULT_SUCCESS if call is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY if call creation failed due to + * insufficient memory. + * QTMS_RESULT_CALL_TYPE_NOT_SUPPORTED if calltype is not supported. + * QTMS_RESULT_INVALID_ARGUMENT if the context id is not valid. + * QTMS_RESULT_FATAL_ERROR if there is any other error. + * + */ + gint CreateCall(QTMSCallType ctype, QTMSCall*& QTMScall, + guint ctxid = DEFAULT_CALL_CONTEXT); + + /** + * Deletes QTMS Call. + * + * @param QTMSct + * The call to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS if call is deleted successfully. + * QTMS_RESULT_INVALID_ARGUMENT if the call is not valid. + * + */ + gint DeleteCall(QTMSCall*& qtmsct); + + /** + * Is the given calltype supported by the QTMS API. + * + * @param ctype + * The call type to be validated. + * + * @param flag + * Indicates wheter the call type is supported or not. + * + * @return + * QTMS_RESULT_SUCCESS if operation was successful. + * QTMS_RESULT_FATAL_ERROR if operation failed. + * + */ + gint IsCallTypeSupported(QTMSCallType ctype, gboolean& flag); + + /** + * Returns supported codec format types. + * + * @param strmtype + * Stream type: Uplink or Downlink + * + * @param fmtlist + * Format vector in which the supported formats are stored + * + * @return + * QTMS_RESULT_SUCCESS if operation was successful. + * QTMS_RESULT_FATAL_ERROR if operation failed. + * + */ + gint GetSupportedFormats(const QTMSStreamType strmtype, + FormatVector& fmtlist); + + /** + * Creates Format object of the given format type. + * + * @param fmttype + * Format type to be created. + * + * @param QTMSfmt + * Crated Format object. + * + * @return + * QTMS_RESULT_SUCCESS if format is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY if format creation failed due to + * insufficient of memory. + * QTMS_RESULT_FORMAT_TYPE_NOT_SUPPORTED if format type is not + * supported. + * + */ + gint CreateFormat(QTMSFormatType fmttype, QTMSFormat*& qtmsfmt); + + /** + * Deletes Format object. + * + * @param QTMSfmt + * Format to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS if format is deleted successfully. + * QTMS_RESULT_INVALID_ARGUMENT if the format is not valid. + * + */ + gint DeleteFormat(QTMSFormat*& qtmsfmt); + + /** + * Creates Effect object of the given type. + * + * @param QTMSeffecttype + * Effect type to be created. + * + * @param QTMSeffect + * Created Effect object. + * + * @return + * QTMS_RESULT_SUCCESS if effect is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY if effect creation failed due to + * insufficient memory. + * QTMS_RESULT_EFFECT_TYPE_NOT_SUPPORTED if the effect type is not + * supported. + * + */ + gint CreateEffect(QTMSEffectType QTMSeffecttype, + QTMSEffect*& qtmseffect); + + /** + * Deletes Effect object. + * + * @param QTMSeffect + * Effect object to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS if effect is deleted successfully. + * QTMS_RESULT_INVALID_ARGUMENT if the effect is not valid. + */ + gint DeleteEffect(QTMSEffect*& qtmseffect); + + /** + * Creates Buffer object of the given type and size. + * The memory is allocated on the heap. + * + * @param buffertype + * Buffer type to be created. + * + * @param size + * Size of the buffer to be created. + * + * @param QTMSbuffer + * Created buffer object. + * + * @return + * QTMS_RESULT_SUCCESS if buffer is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY if buffer creation failed due to + * insufficient memory. + * QTMS_RESULT_BUFFER_TYPE_NOT_SUPPORTED if the buffer type is not + * supported. + * + */ + gint CreateBuffer(QTMSBufferType buffertype, guint size, + QTMSBuffer*& qtmsbuffer); + + /** + * Deletes the Buffer object. + * + * @param QTMSbuffer + * Buffer to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS if buffer is deleted successfully. + * QTMS_RESULT_INVALID_ARGUMENT if the buffer is not valid. + */ + gint DeleteBuffer(QTMSBuffer*& qtmsbuffer); + + /** + * Creates the Source object of the given type. + * + * @param srctype + * Source type to be created. + * + * @param QTMSsrc + * Crated source object. + * + * @return + * QTMS_RESULT_SUCCESS if source is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY if source creation failed due to + * lack of memory. + * QTMS_RESULT_SOURCE_TYPE_NOT_SUPPORTED if the source type is not + * supported. + * + */ + gint CreateSource(QTMSSourceType srctype, QTMSSource*& qtmssrc); + + /** + * Deletes the Source object. + * + * @param QTMSsrc + * Source to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS if source is deleted successfully. + * QTMS_RESULT_INVALID_ARGUMENT if the source is not valid. + * + */ + gint DeleteSource(QTMSSource*& qtmssrc); + + /** + * Creates the Sink object of the given QTMSSinkType. + * + * @param sinktype + * Sink type to be created. + * + * @param QTMSsink + * Created sink object. + * + * @return + * QTMS_RESULT_SUCCESS if sink is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY if sink creation failed due to + * lack of memory. + * QTMS_RESULT_SOURCE_TYPE_NOT_SUPPORTED if the sink type is not + * supported. + * + */ + gint CreateSink(QTMSSinkType sinktype, QTMSSink*& qtmssink); + + /** + * Deletes the Sink object. + * + * @param QTMSsink + * The sink to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS if sink is deleted successfully. + * QTMS_RESULT_INVALID_ARGUMENT if the sink is not valid. + */ + gint DeleteSink(QTMSSink*& qtmssink); + + /** + * Creates QTMSGlobalRouting object. + * + * @param globrouting + * Created global routing object. + * + * @return + * QTMS_RESULT_SUCCESS if global routing object is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY if global routing creation failed + * due to lack of memory. + * QTMS_RESULT_SOURCE_TYPE_NOT_SUPPORTED if global routing is not + * supported. + * + */ + gint CreateGlobalRouting(QTMSGlobalRouting*& globrouting); + + /** + * Deletes QTMSGlobalRouting object. + * + * @param globrouting + * Global routing object to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS if global routing object is deleted successfully. + * QTMS_RESULT_INVALID_ARGUMENT if the global routing object is invalid. + */ + gint DeleteGlobalRouting(QTMSGlobalRouting*& globrouting); + + /** + * Create DTMF player object. + * + * @param streamtype + * Stream ID to be used to create the DTMF player. + * QTMS_STREAM_UPLINK + * QTMS_STREAM_DOWNLINK + * + * @param dtmf + * Created DTMF player. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INSUFFICIENT_MEMORY if DTMF player creation failed due + * to insufficient memory. + * QTMS_RESULT_FATAL_ERROR if an error occured. + * QTMS_REASON_EMERGENCY_CALL_ONGOING if emergency call is active. + * QTMS_REASON_PERMISSION_DENIED if permission is denied. + * + */ + gint CreateDTMF(QTMSStreamType streamtype, QTMSDTMF*& dtmf); + + /** + * Delete DTMF player object. + * + * @param dtmf + * DTMF player to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INVALID_ARGUMENT if the DTMF player is not valid. + * + */ + gint DeleteDTMF(QTMSDTMF*& dtmf); + + /** + * Creates QTMSRingTone player object for audio ring tone. + * + * @param rt + * RingTone player object to be created. + * + * @return + * QTMS_RESULT_SUCCESS when object is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY when object creation failed due to + * insufficient memory. + */ + gint CreateRingTonePlayer(QTMSRingTone*& rt); + + /** + * Deletes QTMSRingTone object. + * + * @param rt + * RingTone player object to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS when object is deleted successfully. + * QTMS_RESULT_INVALID_ARGUMENT if RingTone player object is invalid. + */ + gint DeleteRingTonePlayer(QTMSRingTone*& rt); + + /** + * Creates QTMSInbandTone player object. + * + * @param inbandtone + * InbandTone player object to be created. + * + * @return + * QTMS_RESULT_SUCCESS when object is created successfully. + * QTMS_RESULT_INSUFFICIENT_MEMORY when object creation failed due to + * insufficient memory. + */ + gint CreateInbandTonePlayer(QTMSInbandTone*& inbandtone); + + /** + * Deletes QTMSInbandTone object. + * + * @param inbandtone + * InbandTone player object to be deleted. + * + * @return + * QTMS_RESULT_SUCCESS when object is deleted successfully. + * QTMS_RESULT_INVALID_ARGUMENT if InbandTone player object is invalid. + */ + gint DeleteInbandTonePlayer(QTMSInbandTone*& inbandtone); + +private: + /** + * Constructor + */ + QTMSFactory(); + +private: + QTMSFactoryImpl* impl; + }; + +} //namespace QTMS + +#endif //QTMS_FACTORY_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsformat.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsformat.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_FORMAT_H +#define QTMS_FORMAT_H + +#include +#include "qtmswrapperexport.h" + +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +/** + * QTMSFormat class + * + * This is base class for codec format classes. Provides access methods to + * configure and query common codec format settings. + * + * This format class can be used for both the encoder and decoder. + * + * Usage: + * + * QTMSFactory* iFactory; + * QTMSFormat* iFormat + * gint err; + * err = QTMSFactory::CreateFactory(iFactory); + * err = iFactory->Create(QTMS_FORMAT_XXX,iFormat); + * ... + * + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSFormat + { +public: + /** + * Destructor + */ + virtual ~QTMSFormat(); + + /** + * Get supported bitrates. Returns list of supported bitrates for the + * selected encoder + * + * This method is allowable at all times, while actively encoding or not. + * + * @param bitrates + * The typedef std::vector BitRateVector; list of codecs. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * + */ + gint GetSupportedBitRates(BitRateVector& bitrates); + + /** + * Set bitrate. + * + * This method is allowable at all times, while actively encoding or not. + * + * @param bitrate + * Bitrate to be set for the encoder. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INVALID_ARGUMENT if requested bitrate is invalid. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * + */ + gint SetBitRate(const guint bitrate); + + /** + * Get current encoder's bitrate. + * + * This method is allowable at all times, while actively encoding or not. + * + * @param bitrate + * Current bitrate. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * + */ + gint GetBitRate(guint& bitrate); + + /** + * Return format type. + * + * @param fmttype + * Type of the format object. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSFormatType& fmttype); + +protected: + /** + * Constructor + */ + QTMSFormat(); + +protected: + TMS::TMSFormat *iFormat; + }; + +} //namespace QTMS + +#endif //QTMS_FORMAT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsg711format.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsg711format.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_G711_FORMAT_H +#define QTMS_G711_FORMAT_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +/** + * QTMSG711Format class + * + * This class provides access methods to configure and query G.711 codec + * format settings. + * + * This format class can be used for both the encoder and decoder. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSG711Format : public QObject, + public QTMSFormat + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSG711Format(); + + /** + * Set G.711 codec mode. + * + * This method is allowable when encoding is not active; i.e. anytime + * before encoding is started or after it is stopped. + * + * Supported G.711 codec modes are: + * QTMS_G711_CODEC_MODE_ALAW + * QTMS_G711_CODEC_MODE_MULAW + * + * @param mode + * Sets selected G.711 encoding or decoding mode. + + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INVALID_STATE if this method is used during active + * encoding or decoding operation. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * + */ + gint SetMode(const QTMSG711CodecMode mode); + + /** + * Return current G.711 codec mode. + * + * This method is allowable at all times, while actively encoding/decoding + * or not. + * + * Supported G.711 codec modes are: + * QTMS_G711_CODEC_MODE_ALAW + * QTMS_G711_CODEC_MODE_MULAW + * + * @param mode + * Returns current G.711 encoding or decoding mode. + + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetMode(QTMSG711CodecMode& mode); + + /** + * Toggles on and off Comfort Noise Generator (CNG) for G.711 decoder. + * Not supported by the encoder. + * + * This method is allowable when decoding is not active; i.e. anytime + * before decoding is started or after it is stopped. + * + * @param cng + * Sets CNG feature on or off. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INVALID_STATE if this method is used during active + * decoding operation. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * + */ + gint SetCNG(const gboolean cng); + + /** + * Returns current CNG setting of the G.711 decoder. + * + * This method is allowable when decoding is not active; i.e. anytime + * before decoding is started or after it is stopped. + * + * @param cng + * Current CNG setting of the decoder. + * + * @return gint + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetCNG(gboolean& cng); + + /** + * Toggles on and off Packet Loss Concealment (PLC) for G.711 decoder. + * Not supported by the encoder. + * + * This method is allowable when decoding is not active; i.e. anytime + * before decoding is started or after it is stopped. + * + * @param plc + * Sets PLC feature on or off. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INVALID_STATE if this method is used during active + * decoding operation. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * + */ + gint SetPlc(const gboolean plc); + + /** + * Returns current PLC setting of the G.711 decoder. + * + * This method is allowable at all times, while actively decoding or not. + * + * @param plc + * Current CNG setting of the decoder. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetPlc(gboolean& plc); + + /** + * Toggles on and off Voice Activation Detection (VAD) for G.711 encoder. + * Not supported by the decoder. + * + * This method is allowable at all times, while actively encoding or not. + * + * @param vad + * Sets VAD feature on or off. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * + */ + gint SetVADMode(const gboolean vad); + + /** + * Returns current VAD setting of the G.711 encoder. + * + * This method is allowable at all times, while actively encoding or not. + * + * @param vad + * Current VAD setting of the encoder. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetVADMode(gboolean& vad); + +protected: + /** + * Constructor + */ + QTMSG711Format(); + }; + +} //namespace QTMS + +#endif //QTMS_G711_FORMAT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsg729format.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsg729format.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_G729_FORMAT_H +#define QTMS_G729_FORMAT_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +/** + * QTMSG729Format class + * + * This class provides access methods to configure and query G.729 codec + * format settings. + * + * This format class can be used for both the encoder and decoder. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSG729Format : public QObject, + public QTMSFormat + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSG729Format(); + + /** + * Toggles on and off Voice Activation Detection (VAD) for G.729 encoder. + * Not supported by the decoder. + * + * This method is allowable at all times, while actively encoding or not. + * + * @param vad + * Sets VAD feature on or off. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * QTMS_RESULT_DOES_NOT_EXIST if the custom interface handle does + * not exist. + * + */ + gint SetVADMode(const gboolean vad); + + /** + * Returns current VAD setting of the G.729 encoder. + * + * This method is allowable at all times, while actively encoding or not. + * + * @param vad + * Current VAD setting of the encoder. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetVADMode(gboolean& vad); + +protected: + /** + * Constructor + */ + QTMSG729Format(); + }; + +} //namespace QTMS + +#endif //QTMS_G729_FORMAT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsgaineffect.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsgaineffect.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_GAIN_EFFECT_H +#define QTMS_GAIN_EFFECT_H + +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSEffect; +} + +namespace QTMS { + +/** + * QTMSGainEffect class + * + * This class provides microphone gain level control in the stream scope. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSGainEffect : public QObject, + public QTMSEffect + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSGainEffect(); + + /** + * Set mic gain level. The gain level should not be higher than + * the value returned by GetMaxLevel(). + * + * @param level + * Gain level to be set. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint SetLevel(const guint level); + + /** + * Return mic gain level. + * + * @param level + * Current mic gain level. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetLevel(guint& level); + + /** + * Return max microphone gain level supported by the device. + * + * @param level + * Max gain level. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetMaxLevel(guint& level); + + /** + * Returns type of the effect. + * + * This function can be called at any time. + * + * @param effecttype + * Variable that contains the effect type on return. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSEffectType& effecttype); + + Q_SIGNALS: + void EffectsEvent(const QTMSEffect& tmseffect, QTMSSignalEvent event); + +protected: + /** + * Constructor + */ + QTMSGainEffect(); + +protected: + TMS::TMSEffect *iEffect; + }; + +} //namespace QTMS + +#endif //QTMS_GAIN_EFFECT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsglobalgaineffect.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsglobalgaineffect.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,117 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_GLOBAL_GAIN_EFFECT_H +#define QTMS_GLOBAL_GAIN_EFFECT_H + +#include +#include +#include "qtmswrapperexport.h" +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSEffect; +} + +namespace QTMS { + +/** + * QTMSGlobalGainEffect class + * + * This class provides microphone gain level control in the global QTMS scope. + * Mic gain level changes done by any client are adjusted accross all calls + * serviced by the QTMS server. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSGlobalGainEffect : public QObject, + public QTMSEffect + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSGlobalGainEffect(); + + /** + * Set global microphone gain level. The global gain level should be + * between 0 and the max value returned by GetMaxLevel(). + * + * @param level + * Gain level to be set. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint SetLevel(const guint level); + + /** + * Return current global microphone gain level. + * + * @param level + * Current mic gain level. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetLevel(guint& level); + + /** + * Return max microphone gain level supported by the device. + * + * @param level + * Max mic gain level. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetMaxLevel(guint& level); + + /** + * Return effect type. + * + * @param effecttype + * Type of the effect object (QTMS_EFFECT_GLOBAL_GAIN). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSEffectType& effecttype); + + Q_SIGNALS: + void EffectsEvent(const QTMSEffect& tmseffect, QTMSSignalEvent event); + +protected: + /** + * Constructor + */ + QTMSGlobalGainEffect(); + +protected: + TMS::TMSEffect* iEffect; + }; + +} //namespace QTMS + +#endif //QTMS_GLOBAL_GAIN_EFFECT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsglobalrouting.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsglobalrouting.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_GLOBAL_ROUTING_H +#define QTMS_GLOBAL_ROUTING_H + +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSGlobalRouting; +} + +namespace QTMS { + +/** + * QTMSGlobalRouting class + * + * This class provides audio routing control in the global QTMS scope. + * Audio routing changes done by any client are adjusted accross all calls + * serviced by the QTMS server. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSGlobalRouting : public QObject + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSGlobalRouting(); + + /** + * Set global output device audio should be routed to. + * + * Settings are call-type dependent. + * + * Common: + * QTMS_AUDIO_OUTPUT_NONE + * VoIP call type: + * QTMS_AUDIO_OUTPUT_PUBLIC + * QTMS_AUDIO_OUTPUT_PRIVATE + * CS call type: + * QTMS_AUDIO_OUTPUT_HANDSET + * QTMS_AUDIO_OUTPUT_LOUDSPEAKER + * QTMS_AUDIO_OUTPUT_WIRED_ACCESSORY + * QTMS_AUDIO_OUTPUT_ACCESSORY + * QTMS_AUDIO_OUTPUT_ETTY + * + * @param output + * Sets call-specific audio output device. + * + * @return + * QTMS_RESULT_INVALID_ARGUMENT if set to QTMS_AUDIO_OUTPUT_NONE. + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint SetOutput(const QTMSAudioOutput output); + + /** + * Return current global audio output device settings. + * + * Settings are call-type dependent. + * See SetOutput() (above) + * + * @param output + * Current audio output device. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetOutput(QTMSAudioOutput& output); + + /** + * Return previous audio output device. + * + * Settings are call-type dependent. + * See SetOutput() (above) + * + * @param output + * Previous audio output device. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetPreviousOutput(QTMSAudioOutput& output); + + /** + * Return list of supported audio output devices. + * + * Settings are call-type dependent. + * See SetOutput() (above) + * + * @param outputs + * The typedef std::vector OutputVector; list of supported + * audio output devices (QTMSAudioOutput-type). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetAvailableOutputs(OutputVector& outputs); + + Q_SIGNALS: + void GlobalRoutingEvent(const QTMSGlobalRouting& routing, + QTMSSignalEvent event, QTMSAudioOutput output); + +protected: + /** + * Constructor + */ + QTMSGlobalRouting(); + +protected: + TMS::TMSGlobalRouting* iRouting; + }; + +} //namespace QTMS + +#endif //QTMS_GLOBAL_ROUTING_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsglobalvoleffect.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsglobalvoleffect.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_GLOBAL_VOL_EFFECT_H +#define QTMS_GLOBAL_VOL_EFFECT_H + +#include +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSEffect; +} + +namespace QTMS { + +/** + * QTMSGlobalVolEffect class + * + * This class provides volume level control in the global QTMS scope. Volume + * level changes done by any client are adjusted accross all calls serviced + * by the QTMS server. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSGlobalVolEffect : public QObject, + public QTMSEffect + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSGlobalVolEffect(); + + /** + * Set global audio volume level. The volume level should be between 0 + * and the max value returned by GetMaxLevel(). + * + * @param level + * the volume level to be set. + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + */ + gint SetLevel(const guint level); + + /** + * Return current global audio volume level. + * + * @param level + * Volume level to be set. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetLevel(guint& level); + + /** + * Return max volume level supported by the device. + * + * @param level + * Max volume level. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetMaxLevel(guint& level); + + /** + * Return effect type. + * + * @param effecttype + * Type of the effect object (QTMS_EFFECT_GLOBAL_VOL). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSEffectType& effecttype); + + Q_SIGNALS: + void EffectsEvent(const QTMSEffect& tmseffect, QTMSSignalEvent event); + +protected: + /** + * Constructor + */ + QTMSGlobalVolEffect(); + +protected: + TMS::TMSEffect* iEffect; + }; + +} //namespace QTMS + +#endif //QTMS_GLOBAL_VOL_EFFECT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsilbcformat.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsilbcformat.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,177 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_ILBC_FORMAT_H +#define QTMS_ILBC_FORMAT_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +/** + * QTMSILBCFormat class + * + * This class provides access methods to configure and query iLBC codec + * format settings. + * + * This format class can be used for both the encoder and decoder. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSILBCFormat : public QObject, + public QTMSFormat + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSILBCFormat(); + + /** + * Set iLBC codec mode. + * + * This method is allowable when encoding is not active; i.e. anytime + * before encoding is started or after it is stopped. + * + * Supported iLBC codec modes are: + * QTMS_ILBC_CODEC_MODE_20MILLI_SEC_FRAME + * QTMS_ILBC_CODEC_MODE_30MILLI_SEC_FRAME + * + * @param mode + * Sets selected iLBC encoding or decoding mode. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INVALID_STATE if this method is used during active + * encoding or decoding operation. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * QTMS_RESULT_DOES_NOT_EXIST if the custom interface handle does + * not exist. + * + */ + gint SetMode(const QTMSILBCCodecMode mode); + + /** + * Return current iLBC codec mode. + * + * This method is allowable at all times, while actively encoding/decoding + * or not. + * + * Supported iLBC codec modes are: + * QTMS_ILBC_CODEC_MODE_20MILLI_SEC_FRAME + * QTMS_ILBC_CODEC_MODE_30MILLI_SEC_FRAME + * + * @param mode + * Returns current iLBC encoding or decoding mode. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetMode(QTMSILBCCodecMode& mode); + + /** + * Toggles on and off Comfort Noise Generator (CNG) for iLBC decoder. + * Not supported by the encoder. + * + * This method is allowable when decoding is not active; i.e. anytime + * before decoding is started or after it is stopped. + * + * @param cng + * Sets CNG feature on or off. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_INVALID_STATE if this method is used during active + * decoding operation. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * QTMS_RESULT_DOES_NOT_EXIST if the custom interface handle does + * not exist. + * + */ + gint SetCNG(const gboolean cng); + + /** + * Returns current CNG setting of the iLBC decoder. + * + * This method is allowable when decoding is not active; i.e. anytime + * before decoding is started or after it is stopped. + * + * @param cng + * Current CNG setting of the decoder. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetCNG(gboolean& cng); + + /** + * Toggles on and off Voice Activation Detection (VAD) for iLBC encoder. + * Not supported by the decoder. + * + * This method is allowable at all times, while actively encoding or not. + * + * @param vad + * Sets VAD feature on or off. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * QTMS_RESULT_FEATURE_NOT_SUPPORTED if this method is not implemented + * by the adaptation. + * QTMS_RESULT_DOES_NOT_EXIST if the custom interface handle does + * not exist. + * + */ + gint SetVADMode(const gboolean vad); + + /** + * Returns current VAD setting of the iLBC encoder. + * + * This method is allowable at all times, while actively encoding or not. + * + * @param vad + * Current VAD setting of the encoder. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetVADMode(gboolean& vad); + +protected: + /** + * Constructor + */ + QTMSILBCFormat(); + }; + +} //namespace QTMS + +#endif //QTMS_ILBC_FORMAT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsinbandtone.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsinbandtone.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_INBAND_TONE_H +#define QTMS_INBAND_TONE_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSInbandTone; +} + +namespace QTMS { + +/** + * QTMSInbandTone class + * + * This class provides Inband tone playback capability to the QTMS clients. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSInbandTone : public QObject + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSInbandTone(); + + /** + * Starts the inband tone playback. The inband volume will correspond to + * the current downlink volume level. + * + * For CS calltype. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Start(QTMSInbandToneType inbandtonetype); + + /** + * Stops the inband tone playback. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Stop(); + + Q_SIGNALS: + void InbandToneEvent(const QTMSInbandTone& inbandtone, + QTMSSignalEvent event); + +protected: + + /** + * Constructor + */ + QTMSInbandTone(); + +protected: + TMS::TMSInbandTone* iInbandTone; + }; + +} //namespace QTMS + +#endif //__QTMS_INBAND_TONE_H__ + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsmicsource.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsmicsource.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_MIC_SOURCE_H +#define QTMS_MIC_SOURCE_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSource; +} + +namespace QTMS { + +/** + * QTMSMicSource class + * + * This class instantiates QTMS mic source object. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSMicSource : public QObject, + public QTMSSource + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSMicSource(); + + /** + * Return source type. + * + * This function can be called at any time. + * + * @param sourcetype + * The type of sink object (QTMS_SOURCE_MIC). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSSourceType& sourcetype); + +protected: + /** + * Constructor + */ + QTMSMicSource(); + +protected: + TMS::TMSSource *iSource; + }; + +} //namespace QTMS + +#endif //QTMS_MIC_SOURCE_H + +// End of file + diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsmodemsink.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsmodemsink.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_MODEM_SINK_H +#define QTMS_MODEM_SINK_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSink; +} + +namespace QTMS { + +/** + * QTMSModemSink class + * + * This class instantiates QTMS modem sink object. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSModemSink : public QObject, + public QTMSSink + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSModemSink(); + + /** + * Return sink type. + * + * This function can be called at any time. + * + * @param sinktype + * The type of sink object (QTMS_SINK_MODEM). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSSinkType& sinktype); + +protected: + /** + * Constructor + */ + QTMSModemSink(); + +protected: + TMS::TMSSink *iSink; + }; + +} //namespace QTMS + +#endif //QTMS_MODEM_SINK_H + +// End of file + diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsmodemsource.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsmodemsource.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_MODEM_SOURCE_H +#define QTMS_MODEM_SOURCE_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSource; +} + +namespace QTMS { + +/** + * QTMSModemSource class + * + * This class instantiates QTMS mode source object. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSModemSource : public QObject, + public QTMSSource + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSModemSource(); + + /** + * Return source type. + * + * This function can be called at any time. + * + * @param sourcetype + * The type of sink object (QTMS_SOURCE_MODEM). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSSourceType& sourcetype); + +protected: + /** + * Constructor + */ + QTMSModemSource(); + +protected: + TMS::TMSSource *iSource; + }; + +} //namespace QTMS + +#endif //QTMS_MODEM_SOURCE_H + +// End of file + diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmspcmformat.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmspcmformat.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_PCM_FORMAT_H +#define QTMS_PCM_FORMAT_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +/** + * QTMSPCMFormat class + * + * This class provides access methods to configure and query PCM-16 codec + * format settings. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSPCMFormat : public QObject, + public QTMSFormat + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSPCMFormat(); + +protected: + /** + * Constructor + */ + QTMSPCMFormat(); + }; + +} //namespace QTMS + +#endif //QTMS_PCM_FORMAT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsringtone.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsringtone.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_RINGTONE_H +#define QTMS_RINGTONE_H + +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSRingTone; +} + +namespace QTMS { + +/** + * QTMSRingTone class + * + * This class provides ring tone playback capability to the QTMS clients. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSRingTone : public QObject + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSRingTone(); + + /** + * Init ring tone player to play supplied content based on its type. + * + * @param type + * Type of the content descriptor. Allowed types: + * - QTMS_RINGTONE_DEFAULT - use RT from current Profile + * - QTMS_RINGTONE_FILE - A/V File + * - QTMS_RINGTONE_SEQUENCE - RNG sequence in the descriptor format + * - QTMS_RINGTONE_BEEP_ONCE - play a beep + * - QTMS_RINGTONE_SILENT - play silent tone + * - QTMS_RINGTONE_UNSECURE_VOIP - play tone for uncecure VoIP call + * + * @param str + * Content descriptor to play. String containing one of the following: + * - File with folder name + * - Nokia ring tone sequence in a descriptor format + * - NULL - Will use current Profile. + * + * @param tts + * Text to be played. When added it will be played along with the + * tone. TTS can only be played with QTMS_RINGTONE_DEFAULT and + * TMS_RINGTONE_FILE. Parameter will be ignored for all other types. + * - NULL - Will use current Profile TTS setting - caller's name + * will be played from the phone book (if available). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Init(const QTMSRingToneType type = QTMS_RINGTONE_DEFAULT, + GString* str = NULL, GString* tts = NULL); + + /** + * Deinit ring tone player. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Deinit(); + + /** + * Start ring tone playback. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Play(); + + /** + * Stop ring tone playback. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Stop(); + + /** + * Pause ring tone playback. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Pause(); + + /** + * Mute ring tone playback. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint Mute(); + + Q_SIGNALS: + void RingtoneEvent(const QTMSRingTone& rt, QTMSSignalEvent event); + +protected: + /** + * Constructor + */ + QTMSRingTone(); + +protected: + TMS::TMSRingTone *iRingTone; + }; + +} //namespace QTMS + +#endif //QTMS_RINGTONE_H + +// End of file + diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmssink.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmssink.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_SINK_H +#define QTMS_SINK_H + +#include + +namespace QTMS { + +/** + * QTMSSink class + * + * Base class for QTMS data sink type objects. + * + * @lib QTMSapi.lib + * + */ +class QTMSSink + { +public: + /** + * Returns type of the concrete data sink object implementation. + * + * This function can be called at any time. + * + * @param sinktype& + * Contains data sink type on return. + * + * @return + * QTMS_RESULT_SUCCESS if sink type is returned successfully. + * + */ + virtual gint GetType(QTMSSinkType& sinktype) = 0; + }; + +} //namespace QTMS + +#endif //QTMS_SINK_H + diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmssource.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmssource.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_SOURCE_H +#define QTMS_SOURCE_H + +#include + +namespace QTMS { + +/** + * QTMSSource class + * + * Base class for QTMS data source type objects. + * + * @lib QTMSapi.lib + * + */ +class QTMSSource + { +public: + /** + * Returns type of the concrete data source object implementation. + * + * This function can be called at any time. + * + * @param sourcetype + * Contains data source type on return. + * + * @return + * QTMS_RESULT_SUCCESS if source type is returned successfully. + * + */ + virtual gint GetType(QTMSSourceType& sourcetype) = 0; + }; + +} //namespace QTMS + +#endif //QTMS_SOURCE_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsspeakersink.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsspeakersink.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_SPEAKER_SINK_H +#define QTMS_SPEAKER_SINK_H + +#include +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSink; +} + +namespace QTMS { + +/** + * QTMSSpeakerSink class + * + * This class instantiates QTMS speaker sink object. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSSpeakerSink : public QObject, + public QTMSSink + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSSpeakerSink(); + + /** + * Return sink type. + * + * This function can be called at any time. + * + * @param sinktype + * The type of sink object (QTMS_SINK_SPEAKER). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSSinkType& sinktype); + +protected: + /** + * Constructor + */ + QTMSSpeakerSink(); + +protected: + TMS::TMSSink *iSink; + }; + +} //namespace QTMS + +#endif //QTMS_SPEAKER_SINK_H + +// End of file + diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsstream.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsstream.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,496 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_STREAM_H +#define QTMS_STREAM_H + +// Include files +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSStream; +} + +namespace QTMS { + +// Forward declarations +class QTMSSource; +class QTMSSink; +class QTMSEffect; +class QTMSFormat; +class QTMSBuffer; + +/** + * QTMSStream class + * + * QTMSStream class represents either uplink or downlink stream associated with + * a QTMSCall. + * + * This class provides means for setting up and controlling telephony + * multimedia streams associated with a Circuit Switching (CS) call or Packet + * Switching (PS) such as IP call. + * + * QTMSStream instances are created by QTMSCall instance. Multiple QTMSStream + * instances (uplink and/or downlink streams) can be created. The QTMS engine + * does not limit the number of streams created per QTMSCall object. However, + * the combination of device policy and device run-time resources (both + * software and hardware) may limit this use-case. + * + * QTMSCall is a container which owns all its QTMSStream instances. The client + * has an option of creating and deleting individual streams. However, when a + * QTMSCall instance is deleted, all the streams associated with it are + * automatically deleted as well. + * + * QTMS ver 1.0.0.0: + * (1) An initialized stream will have one source, zero or one format, + * zero or more effects, and one or more sinks. + * + * (2) In the initial version of the QTMS implementation, the CS uplink and + * downlink streams will not control or communicate with the cellular modem. + * Also, the PS (IP) uplink and downlink streams will not handle network + * protocol. It is assumed that the QTMS client will handle this functionality. + * + * States: + * (1) QTMS_STREAM_UNINITIALIZED (initial state): The stream is alive but has + * not allocated all the resources it needs to function. + * + * (2) QTMS_STREAM_INITIALIZED: The stream has all the information required to + * acquire the media resources. Stream in this state will have most of the + * resources allocated, except the critical system resources, such as policy + * and/or hardware resources. + * + * (3) QTMS_STREAM_PAUSED: The stream has all the resources allocated, which may + * include critical system resources such as policy and/or hardware resources. + * + * (4) QTMS_STREAM_STARTED: The stream has all the resources allocated, + * including critical system resources such as policy and/or hardware resources + * and is active. + * + * Usage: + * + * QTMSFactory *iFactory; + * QTMSCall *iCall; + * QTMSStream *iUplink; + * QTMSStream *iDownlink; + * gint err; + * + * err = QTMSFactory::CreateFactory(iFactory); + * err = iFactory->CreateCall(QTMS_CALL_IP, iCall); + * err = iCall->CreateStream(QTMS_STREAM_UPLINK, iUplink); + * err = iCall->CreateStream(QTMS_STREAM_DOWNLINK, iDownlink); + * // Configure CS uplink stream + * iUplinkStream->AddObserver(*this); + * iUplinkStream->AddSource(iMicSource); + * iUplinkStream->AddSink(iModemSink); + * iUplinkStream->AddEffect(iGainEffect); // To control mic gain + * iUplinkStream->Init(); + * // Wait for state change callback + * iUplinkStream->Play(); + * // Wait for state change callback + * ... + * // call terminated on the cell modem side, now signal multimedia system + * iUplinkStream->Stop(); + * ... + * err = iCall->DeleteStream(iDownlink); + * err = iCall->DeleteStream(iUplink); + * err = iFactory->DeleteCall(iCall); + * delete iFactory; + * + * + * + * @lib QTMSapi.lib + * + */ + +class QTMS_WRAPPER_DLL_EXPORT QTMSStream : public QObject + { + Q_OBJECT +public: + + /** + * Destructor + */ + virtual ~QTMSStream(); + + /** + * Add source for this stream. + * + * This function can be called only when stream is in + * QTMS_STREAM_UNINITIALIZED state. + * + * After source is added to the stream successfully, ownership of the source + * is vested in this stream. If the client wants to reuse the source, it + * should call RemoveSource() to re-claim QTMSSource ownership. + * + * @param source + * Source object to be added to the stream. + * + * @return + * QTMS_RESULT_SUCCESS if source is added successfully to the stream. + * QTMS_RESULT_NULL_ARGUMENT if source is a NULL. + * QTMS_RESULT_ALREADY_EXIST if source has already been added to the + * stream. + * QTMS_RESULT_INVALID_STATE if stream is not + * in the QTMS_STREAM_UNINITIALIZED state. + * + */ + gint AddSource(QTMSSource* source); + + /** + * Remove source from this stream. + * + * This function can be called only when stream is in + * QTMS_STREAM_UNINITIALIZED state. + * + * After source is removed from the stream successfully, ownership of + * source is re-claimed by the client. + * + * @param source + * The source to remove. + * + * @return + * QTMS_RESULT_SUCCESS if source is removed successfully from the + * stream. + * QTMS_RESULT_NULL_ARGUMENT if source is a NULL. + * QTMS_RESULT_DOES_NOT_EXIST if trying to remove the source that has + * not been added to stream. + * QTMS_RESULT_INVALID_STATE if stream is not + * in the QTMS_STREAM_UNINITIALIZED state. + * + */ + gint RemoveSource(QTMSSource* source); + + /** + * Add sink to the stream. + * + * Multiple sinks of different types can be added to a stream. + * + * This function can be called only when stream is in + * QTMS_STREAM_UNINITIALIZED state. + * + * After sink is added to the stream successfully, ownership of the sink is + * vested in the stream. If the client wants to reuse sink, it should call + * RemoveSink() to re-claim QTMSSink ownership. + * + * @param sink + * Data sink to be added to the stream. + * + * @return + * QTMS_RESULT_SUCCESS if sink is added successfully to the stream. + * QTMS_RESULT_NULL_ARGUMENT if sink is a NULL. + * QTMS_RESULT_ALREADY_EXIST if sink type is already added to the + * stream. + * QTMS_RESULT_INVALID_STATE if stream is not + * in the QTMS_STREAM_UNINITIALIZED state. + * + */ + gint AddSink(QTMSSink* sink); + + /** + * Remove sink from the stream. + * + * This function can be called only when stream is in + * QTMS_STREAM_UNINITIALIZED state. + * + * After sink is removed from the stream successfully, ownership of the + * sink is re-claimed by the client. + * + * @param sink + * Sink to removed from the stream. + * + * @return + * QTMS_RESULT_SUCCESS if sink is removed successfully from the stream. + * QTMS_RESULT_NULL_ARGUMENT if sink is a NULL. + * QTMS_RESULT_DOES_NOT_EXIST if trying to remove sink that has not + * been added to the stream. + * QTMS_RESULT_INVALID_STATE if stream is not + * in the QTMS_STREAM_UNINITIALIZED state. + * + */ + gint RemoveSink(QTMSSink* sink); + + /** + * Set data format for the stream. + * + * This function can be called only when stream is in the + * QTMS_STREAM_UNINITIALIZED state. + * + * After format is added to the stream successfully, ownership of the + * format is vested in this stream. If the client wants to reuse format, + * it should call ResetFormat() to re-claim QTMSFormat ownership. + * + * Note: In QTMS Ver 1.0.0.0, setting data format for CS call is not + * required. + * + * @param format + * Data format to be set on the stream. + * + * @return + * QTMS_RESULT_SUCCESS if format is set successfully on the stream. + * QTMS_RESULT_NULL_ARGUMENT if format is a NULL. + * QTMS_RESULT_ALREADY_EXIST if format is already set on the stream. + * QTMS_RESULT_INVALID_STATE if stream is not + * in the QTMS_STREAM_UNINITIALIZED state. + * + */ + gint SetFormat(QTMSFormat* format); + + /** + * Remove data format from the stream. + * + * This function can be called only when stream is in the + * QTMS_STREAM_UNINITIALIZED state. + * + * After format is removed from the stream successfully, ownership of + * the format object is re-claimed by the client. + * + * @param format + * Data format to be removed from the stream. + * + * @return + * QTMS_RESULT_SUCCESS if format is removed successfully from the + * stream. + * QTMS_RESULT_NULL_ARGUMENT if format is a NULL. + * QTMS_RESULT_DOES_NOT_EXIST if format is not currently set on the + * stream. + * QTMS_RESULT_INVALID_STATE if stream is not in the + * QTMS_STREAM_UNINITIALIZED state. + * + */ + gint ResetFormat(QTMSFormat* format); + + /** + * Add an effect to the stream. + * + * Multiple effect objects of different types can be added to the stream. + * + * This function can be called only when stream is in the + * QTMS_STREAM_UNINITIALIZED state. + * + * After effect is added to the stream successfully, ownership of the + * effect is vested in the stream. If the client wants to reuse the effect, + * it shall call RemoveEffect() to re-claim QTMSEffect ownership. + * + * @param effect + * Stream effect to be added to the stream. + * + * @return + * QTMS_RESULT_SUCCESS if effect is added successfully to the stream. + * QTMS_RESULT_NULL_ARGUMENT if effect is a NULL. + * QTMS_RESULT_ALREADY_EXIST if effect type is already added to the + * stream. + * QTMS_RESULT_INVALID_STATE if stream is not in the + * QTMS_STREAM_UNINITIALIZED state. + * + */ + gint AddEffect(QTMSEffect* effect); + + /** + * Remove effect from the stream. + * + * This function can be called only when stream is in the + * QTMS_STREAM_UNINITIALIZED state. + * + * After effect is removed from the stream successfully, ownership of the + * effect is re-claimed by the client. + * + * @param effect + * Stream effect to be removed from the stream. + * + * @return + * QTMS_RESULT_SUCCESS if effect is removed successfully from the + * stream. + * QTMS_RESULT_NULL_ARGUMENT if effect is a NULL. + * QTMS_RESULT_DOES_NOT_EXIST if trying to remove an effect that has + * not been added to the stream. + * QTMS_RESULT_INVALID_STATE if stream is not in the + * QTMS_STREAM_UNINITIALIZED state. + * + */ + gint RemoveEffect(QTMSEffect* effect); + + /** + * Get current state of the stream. + * + * This function can be called at any time. + * + * Possible states are: + * QTMS_STREAM_UNINITIALIZED, + * QTMS_STREAM_INITIALIZED, + * QTMS_STREAM_PAUSED, + * QTMS_STREAM_STARTED. + + * @return + * Stream's current state. + * + */ + gint GetState(); + + /** + * Get stream type. + * + * This function can be called at any time. + * + * The possible types are: + * QTMS_STREAM_UPLINK + * QTMS_STREAM_DOWNLINK + * + * @return + * Stream type indicating whether it is an uplink or downlink. + * + */ + gint GetStreamId(); + + /** + * Get stream ID. + * + * This function can be called at any time. + * + * @return + * Unique ID of the stream. + * + */ + gint GetStreamType(); + + /** + * Trigger stream to transition to the initialized state. + * + * This function can be called only when stream is in the + * QTMS_STREAM_UNINITIALIZED state. + * + * If Init() is called when stream is already in initialized state, the + * request will be ignored and the function will return QTMS_RESULT_SUCCESS. + * + * Upon stream's successful transition to initialized state, the stream will + * be in the QTMS_STREAM_INITIALIZED state. + * + * QUESTION??? Should we do the initial checking here??? (for source, + * sink and other settings) + * + * @return + * QTMS_RESULT_SUCCESS if stream transitioned to the initialized state. + * QTMS_RESULT_INVALID_STATE if stream has not transitioned to the + * QTMS_STREAM_UNINITIALIZED state. + * + */ + gint Init(); + + /** + * Trigger stream to transition to the paused state. + * + * This function can be called only when stream is in the + * QTMS_STREAM_UNINITIALIZED or QTMS_STREAM_STARTED state. + * + * If Pause() is called when stream is already in paused state, the + * request will be ignored and the function will return QTMS_RESULT_SUCCESS. + * + * Upon stream's successful transition to the paused state, the stream will + * be in the QTMS_STREAM_PAUSED state. + * + * Note: In QTMS Ver 1.0.0.0, pausing stream for CS call is not supported. + * + * @return + * QTMS_RESULT_SUCCESS if stream successfully transitioned to the paused + * state. + * QTMS_RESULT_INVALID_STATE if stream is not in the + * QTMS_STREAM_INITIALIZED or QTMS_STREAM_STARTED state. + * + */ + gint Pause(); + + /** + * Trigger stream to transition to the started state. + * + * This function can be called only when stream is in the + * QTMS_STREAM_INITIALIZED or QTMS_STREAM_PAUSED state. + * + * If Start() is called when stream is already in the started state, the + * request will be ignored and the function will return QTMS_RESULT_SUCCESS. + * + * If Start() is called when stream is already in the initialized state, the + * stream will implicitly pause, but the observer will only receive one + * state change callback. + * + * Upon stream's successful transition to the started state, the stream will + * be in the QTMS_STREAM_STARTED state. + * + * @return + * QTMS_RESULT_SUCCESS if stream successfully transitioned to the paused + * state. + * QTMS_RESULT_INVALID_STATE if stream is not in the + * QTMS_STREAM_INITIALIZED or QTMS_STREAM_PAUSED state. + * + */ + gint Start(); + + /** + * Trigger stream to transition to the initialized state. + * + * This function can be called only when stream is in the + * QTMS_STREAM_STARTED or QTMS_STREAM_PAUSED state. + * + * If Stop() is called when stream is already in the stopped state, the + * request will be ignored and the function will return QTMS_RESULT_SUCCESS. + * + * Upon stream's successful transition to the started state, the stream will + * be in the QTMS_STREAM_INITIALIZED state. + * + * @return + * QTMS_RESULT_SUCCESS if stream successfully transitioned to the paused + * state. + * QTMS_RESULT_INVALID_STATE if stream is not in the + * QTMS_STREAM_STARTED or QTMS_STREAM_PAUSED state. + * + */ + gint Stop(); + + /** + * Trigger stream to transition to un-initialized state. + * + * This function can be called only when stream is NOT in + * QTMS_STREAM_UNINITIALIZED state. + * + * If Deinit() is called when stream is already in un-initialized state, the + * request will be ignored. + * + * Upon stream's successful transition to the un-initialized state, the + * stream will be in the QTMS_STREAM_UNINITIALIZED state. + * + */ + void Deinit(); + + Q_SIGNALS: + void TMSStreamEvent(const QTMSStream& stream, QTMSSignalEvent event); + +protected: + /** + * Constructor + */ + QTMSStream(); + +protected: + TMS::TMSStream *iStream; + }; + +} //namespace QTMS + +#endif // QTMS_STREAM_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsvolumeeffect.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmsvolumeeffect.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_VOLUME_EFFECT_H +#define QTMS_VOLUME_EFFECT_H + +#include +#include +#include "qtmswrapperexport.h" + +// FORWARD DECLARATIONS +namespace TMS { +class TMSEffect; +} + +namespace QTMS { + +/** + * QTMSVolumeEffect class + * + * This class provides volume level control in the stream scope. + * + * @lib QTMSapi.lib + * + */ +class QTMS_WRAPPER_DLL_EXPORT QTMSVolumeEffect : public QObject, + public QTMSEffect + { + Q_OBJECT +public: + /** + * Destructor + */ + virtual ~QTMSVolumeEffect(); + + /** + * Set audio volume level. The volume level should not be higher than + * the value returned by GetMaxLevel(). + * + * @param level + * Volume level to be set. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint SetLevel(const guint level); + + /** + * Return current audio volume level settings. + * + * @param level + * Volume level. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetLevel(guint& level); + + /** + * Return max volume level supported by the device. + * + * @param level + * Max volume level. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + gint GetMaxLevel(guint& level); + + /** + * Returns type of the effect. + * + * This function can be called at any time. + * + * @param effecttype + * Variable that contains the effect type on return. + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSEffectType& effecttype); + +Q_SIGNALS: + void EffectsEvent(const QTMSEffect& tmseffect, QTMSSignalEvent event); + +protected: + /** + * Constructor + */ + QTMSVolumeEffect(); + +protected: + TMS::TMSEffect *iEffect; + }; + +} //namespace QTMS + +#endif //QTMS_VOLUME_EFFECT_H diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmswrapperexport.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/qt_telephony_multimedia_service_api/inc/qtmswrapperexport.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010 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 QTMS_WRAPPER_EXPORT_H_ +#define QTMS_WRAPPER_EXPORT_H_ + +// System includes +#include + +#ifdef BUILD_TMS_WRAPPER_DLL +#define QTMS_WRAPPER_DLL_EXPORT Q_DECL_EXPORT +#else +#define QTMS_WRAPPER_DLL_EXPORT Q_DECL_IMPORT +#endif + +#endif // QTMS_WRAPPER_EXPORT_H_ diff -r d881023c13eb -r cbb1bfb7ebfb mmappfw_plat/videoplaylist_utility_api/tsrc/videoplaylistutilitytest/group/videoplaylistutilitytest.mmp --- a/mmappfw_plat/videoplaylist_utility_api/tsrc/videoplaylistutilitytest/group/videoplaylistutilitytest.mmp Mon May 03 12:58:40 2010 +0300 +++ b/mmappfw_plat/videoplaylist_utility_api/tsrc/videoplaylistutilitytest/group/videoplaylistutilitytest.mmp Fri May 14 16:21:14 2010 +0300 @@ -15,7 +15,7 @@ * */ -// Version : %version: 4 % +// Version : %version: 5 % #include diff -r d881023c13eb -r cbb1bfb7ebfb mpx/collectionframework/collectionengine/inc/mpxcollectionengine.h --- a/mpx/collectionframework/collectionengine/inc/mpxcollectionengine.h Mon May 03 12:58:40 2010 +0300 +++ b/mpx/collectionframework/collectionengine/inc/mpxcollectionengine.h Fri May 14 16:21:14 2010 +0300 @@ -79,6 +79,14 @@ * @param aData some data */ IMPORT_C void NotifyL(TMPXCollectionBroadCastMsg aMsg, TInt aData); + + + /** + * Broadcast a command to all plug-ins + * @param aCmd command to send + * @param aData some data + */ + void Command(TMPXCollectionCommand aCmd, TInt aData); /** * Retrieves the set of supported file types in the collection server diff -r d881023c13eb -r cbb1bfb7ebfb mpx/collectionframework/collectionengine/src/mpxcollectionclientcontext.cpp --- a/mpx/collectionframework/collectionengine/src/mpxcollectionclientcontext.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mpx/collectionframework/collectionengine/src/mpxcollectionclientcontext.cpp Fri May 14 16:21:14 2010 +0300 @@ -619,6 +619,13 @@ iEngine.PluginPop(); break; } + case EMcCloseCollection: + { + // Forward to all plug-ins; argument is drive number + iEngine.Command ( aCmd, aData ); + break; + } + default: { User::Leave(KErrNotSupported); diff -r d881023c13eb -r cbb1bfb7ebfb mpx/collectionframework/collectionengine/src/mpxcollectionengine.cpp --- a/mpx/collectionframework/collectionengine/src/mpxcollectionengine.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mpx/collectionframework/collectionengine/src/mpxcollectionengine.cpp Fri May 14 16:21:14 2010 +0300 @@ -194,6 +194,9 @@ TInt command = KErrNotSupported; TInt data = 0; TBool clearCache ( EFalse ); + TBool notify( ETrue ); + TInt count = iContexts.Count(); + CMPXCollectionClientContext* context( NULL ); switch( aMsg ) { case EMcMsgFormatStart: @@ -207,8 +210,14 @@ clearCache = ETrue; break; } + case EMcMsgDiskInserted: + for( TInt i=0; iNotifyL( aMsg, aData ); + } + notify = EFalse; case EMcMsgFormatEnd: - case EMcMsgDiskInserted: case EMcMsgUSBMassStorageEnd: { command = EMcReOpenCollection; @@ -253,12 +262,7 @@ } if( command != KErrNotSupported ) { - TArray plugins = iPluginHandler->LoadedPlugins(); - for( TInt i=0; iCommandL( (TMPXCollectionCommand)command, data)); - } + Command( (TMPXCollectionCommand)command, data ); } if( clearCache ) @@ -286,12 +290,22 @@ rfs.Close(); } - TInt count = iContexts.Count(); - for( TInt i=0; iNotifyL( aMsg, aData ); + } + } + } +void CMPXCollectionEngine::Command( TMPXCollectionCommand aCmd, TInt aData ) + { + TArray plugins = iPluginHandler->LoadedPlugins(); + for( TInt i=0; iNotifyL( aMsg, aData ); + CMPXCollectionPlugin* plugin = plugins[i]; + TRAP_IGNORE(plugin->CommandL( aCmd, aData)); } } diff -r d881023c13eb -r cbb1bfb7ebfb mpx/collectionframework/collectionserver/src/mpxcollectionserversession.cpp --- a/mpx/collectionframework/collectionserver/src/mpxcollectionserversession.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mpx/collectionframework/collectionserver/src/mpxcollectionserversession.cpp Fri May 14 16:21:14 2010 +0300 @@ -570,14 +570,14 @@ // void CMPXCollectionSession::CancelRequests() { + if (iContext) + { + iContext->CancelRequest(this); + } if (!iMessage.IsNull()) { iMessage.Complete(KErrCancel); } - if (iContext) - { - iContext->CancelRequest(this); - } } // ---------------------------------------------------------------------------- diff -r d881023c13eb -r cbb1bfb7ebfb mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp --- a/mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mpx/playbackframework/playbackengine/src/mpxplaybackengine.cpp Fri May 14 16:21:14 2010 +0300 @@ -1478,6 +1478,23 @@ { iProperties[EPbPropertyPosition] = 0; } + + //check whether plugin is KMPXPlaybackPluginVersion2, if not, set saved position + CDesCArray* interfaces = iPluginHandler->SupportedInterfacesL( iPluginUid ); + TBool version2InterfaceSupported = EFalse; + if ( interfaces->MdcaCount() ) + { + TInt pos(0); + version2InterfaceSupported = !interfaces->FindIsq( KMPXPlaybackPluginVersion2, pos ); + } + delete interfaces; + + if ( !version2InterfaceSupported ) + { + // Set position to restore saved position. + TRAP_IGNORE( // uPnP leaves if set position in stop state + PluginL()->SetL( EPbPropertyPosition, iProperties[EPbPropertyPosition] )); + } iAutoResumeHandler->HandleOpenFileComplete(); @@ -1678,14 +1695,6 @@ iCallback->HandleProperty(aProperty,aValue,aError); iCallback = NULL; iTaskQueue->CompleteTask(); - - // notify client the new position during the playback - if ((EPbPropertyPosition == aProperty) && (iProgressTimer->IsActive())) - { - TRAP_IGNORE(iClientList->SendMsgL( - TMPXPlaybackMessage(TMPXPlaybackMessage::EPropertyChanged, - EPbPropertyPosition,aValue))); - } } MPX_DEBUG2("<--CMPXPlaybackEngine::HandleProperty 0x%08x", this); } @@ -2628,7 +2637,7 @@ MPX_DEBUG1("==>CMPXPlaybackEngine::DoStopL()"); Suspend(); if (iState == EPbStatePaused || iState == EPbStatePlaying || - iState == EPbStateInitialising) + iState == EPbStateInitialising || iState == EPbStateBuffering) { if (aSavePlaybackInfo && (iState == EPbStatePaused || iState == EPbStatePlaying )) { diff -r d881023c13eb -r cbb1bfb7ebfb mpx/playbackframework/playbackserver/src/mpxplaybackserver.cpp --- a/mpx/playbackframework/playbackserver/src/mpxplaybackserver.cpp Mon May 03 12:58:40 2010 +0300 +++ b/mpx/playbackframework/playbackserver/src/mpxplaybackserver.cpp Fri May 14 16:21:14 2010 +0300 @@ -196,8 +196,16 @@ if (cl->ClientCount()==0) { MPX_DEBUG1("CMPXPlaybackServer::RemoveClient delete a player"); + CMPXPlaybackEngine* enginePtr = p; delete p; - iPlayers.Remove(i); + //Due to callbacks in PlaybackServer we have to remove engine from the iPlayers array after deleting. + //enginePtr is a invalid pointer as p is already deleted + //Find the index of deleted engine using its address + TInt engineIndex = iPlayers.Find(enginePtr); + if ( engineIndex != KErrNotFound ) + { + iPlayers.Remove(engineIndex); + } } break; } diff -r d881023c13eb -r cbb1bfb7ebfb qtms/SIS/QTMS_udeb_STUB_SIS.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/SIS/QTMS_udeb_STUB_SIS.bat Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,70 @@ +rem +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: GStreamer SisStub +rem + +@echo off +echo ---------------------------- +echo Configuring for RnD SIS +echo ---------------------------- +echo Start of configure time: +time /t + +:CREATE_DIR +echo. +echo - create Sis folder (created only if needed) +mkdir .\SIS + +:COPY_DLL +echo. +echo - Copy dlls [udeb]: +copy %EPOCROOT%epoc32\release\armv5\udeb\qtmsapi.dll . + + + +if errorlevel == 1 goto END_ERROR + +:CALL_ELFTRAIN +echo - Updating Version No [10.1] (calling elftran) +call elftran.exe -version 10.1 qtmsapi.dll + + + +:MAKESIS +makesis ..\SIS\qtms.pkg ..\SIS\qtms.sis +signsis ..\SIS\qtms.sis ..\SIS\qtms.sisx rd.crt rd.key +if errorlevel == 1 goto END_ERROR + +:DELETE_DLL +echo. +echo - remove the copied dlls from current folder +del qtmsapi.dll + + + +goto END + +:END_ERROR +echo. +echo Sis creation failed. +goto FINAL_END + +:END +echo. +echo Sis file created succesfully +echo ============================ + +:FINAL_END +echo End of configure time is: +time /t diff -r d881023c13eb -r cbb1bfb7ebfb qtms/SIS/qtms.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/SIS/qtms.pkg Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,35 @@ +; +; 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: Telephony Multimedia Services (TMS) - UDEB build +; +;File: tms.pkg + +;Languages +&EN + +;Header +#{"QTMS"},(0x10207CB2),1,0,0, TYPE=SA, RU + +;Series 60 v5.0 +[0x101F7961], 0,0,0, {"Series60ProductID"} + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + +;Files To Copy... +"/epoc32/release/armv5/udeb/qtmsapi.dll" -"!:/sys/bin/qtmsapi.dll" + diff -r d881023c13eb -r cbb1bfb7ebfb qtms/bwins/qtmsu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/bwins/qtmsu.def Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,388 @@ +EXPORTS + ?qt_metacast@QTMSSpeakerSink@QTMS@@UAEPAXPBD@Z @ 1 NONAME ; void * QTMS::QTMSSpeakerSink::qt_metacast(char const *) + ?getStaticMetaObject@QTMSGainEffect@QTMS@@SAABUQMetaObject@@XZ @ 2 NONAME ; struct QMetaObject const & QTMS::QTMSGainEffect::getStaticMetaObject(void) + ??0QTMSStream@QTMS@@IAE@XZ @ 3 NONAME ; QTMS::QTMSStream::QTMSStream(void) + ??0QTMSAMRFormat@QTMS@@IAE@XZ @ 4 NONAME ; QTMS::QTMSAMRFormat::QTMSAMRFormat(void) + ?tr@QTMSG729Format@QTMS@@SA?AVQString@@PBD0H@Z @ 5 NONAME ; class QString QTMS::QTMSG729Format::tr(char const *, char const *, int) + ?tr@QTMSModemSource@QTMS@@SA?AVQString@@PBD0@Z @ 6 NONAME ; class QString QTMS::QTMSModemSource::tr(char const *, char const *) + ?CreateRingTonePlayer@QTMSFactory@QTMS@@QAEHAAPAVQTMSRingTone@2@@Z @ 7 NONAME ; int QTMS::QTMSFactory::CreateRingTonePlayer(class QTMS::QTMSRingTone * &) + ?qt_metacall@QTMSClientSource@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 8 NONAME ; int QTMS::QTMSClientSource::qt_metacall(enum QMetaObject::Call, int, void * *) + ?trUtf8@QTMSVolumeEffect@QTMS@@SA?AVQString@@PBD0H@Z @ 9 NONAME ; class QString QTMS::QTMSVolumeEffect::trUtf8(char const *, char const *, int) + ?trUtf8@QTMSG711Format@QTMS@@SA?AVQString@@PBD0H@Z @ 10 NONAME ; class QString QTMS::QTMSG711Format::trUtf8(char const *, char const *, int) + ?Start@QTMSStream@QTMS@@QAEHXZ @ 11 NONAME ; int QTMS::QTMSStream::Start(void) + ??_EQTMSGlobalRouting@QTMS@@UAE@I@Z @ 12 NONAME ; QTMS::QTMSGlobalRouting::~QTMSGlobalRouting(unsigned int) + ?metaObject@QTMSGlobalRouting@QTMS@@UBEPBUQMetaObject@@XZ @ 13 NONAME ; struct QMetaObject const * QTMS::QTMSGlobalRouting::metaObject(void) const + ?SetPlc@QTMSG711Format@QTMS@@QAEHH@Z @ 14 NONAME ; int QTMS::QTMSG711Format::SetPlc(int) + ?BufferProcessed@QTMSClientSource@QTMS@@IAEXPBVTMSBuffer@TMS@@H@Z @ 15 NONAME ; void QTMS::QTMSClientSource::BufferProcessed(class TMS::TMSBuffer const *, int) + ?AddSink@QTMSStream@QTMS@@QAEHPAVQTMSSink@2@@Z @ 16 NONAME ; int QTMS::QTMSStream::AddSink(class QTMS::QTMSSink *) + ?tr@QTMSPCMFormat@QTMS@@SA?AVQString@@PBD0H@Z @ 17 NONAME ; class QString QTMS::QTMSPCMFormat::tr(char const *, char const *, int) + ??_EQTMSG729Format@QTMS@@UAE@I@Z @ 18 NONAME ; QTMS::QTMSG729Format::~QTMSG729Format(unsigned int) + ?qt_metacast@QTMSClientSink@QTMS@@UAEPAXPBD@Z @ 19 NONAME ; void * QTMS::QTMSClientSink::qt_metacast(char const *) + ?tr@QTMSG729Format@QTMS@@SA?AVQString@@PBD0@Z @ 20 NONAME ; class QString QTMS::QTMSG729Format::tr(char const *, char const *) + ??_EQTMSSpeakerSink@QTMS@@UAE@I@Z @ 21 NONAME ; QTMS::QTMSSpeakerSink::~QTMSSpeakerSink(unsigned int) + ?getStaticMetaObject@QTMSInbandTone@QTMS@@SAABUQMetaObject@@XZ @ 22 NONAME ; struct QMetaObject const & QTMS::QTMSInbandTone::getStaticMetaObject(void) + ??0QTMSGainEffect@QTMS@@IAE@XZ @ 23 NONAME ; QTMS::QTMSGainEffect::QTMSGainEffect(void) + ?tr@QTMSClientSink@QTMS@@SA?AVQString@@PBD0H@Z @ 24 NONAME ; class QString QTMS::QTMSClientSink::tr(char const *, char const *, int) + ?GetType@QTMSGlobalGainEffect@QTMS@@UAEHAAH@Z @ 25 NONAME ; int QTMS::QTMSGlobalGainEffect::GetType(int &) + ??1QTMSInbandTone@QTMS@@UAE@XZ @ 26 NONAME ; QTMS::QTMSInbandTone::~QTMSInbandTone(void) + ?trUtf8@QTMSInbandTone@QTMS@@SA?AVQString@@PBD0H@Z @ 27 NONAME ; class QString QTMS::QTMSInbandTone::trUtf8(char const *, char const *, int) + ?GetType@QTMSModemSink@QTMS@@UAEHAAH@Z @ 28 NONAME ; int QTMS::QTMSModemSink::GetType(int &) + ?trUtf8@QTMSSpeakerSink@QTMS@@SA?AVQString@@PBD0H@Z @ 29 NONAME ; class QString QTMS::QTMSSpeakerSink::trUtf8(char const *, char const *, int) + ?Stop@QTMSDTMF@QTMS@@QAEHXZ @ 30 NONAME ; int QTMS::QTMSDTMF::Stop(void) + ?DeleteRingTonePlayer@QTMSFactory@QTMS@@QAEHAAPAVQTMSRingTone@2@@Z @ 31 NONAME ; int QTMS::QTMSFactory::DeleteRingTonePlayer(class QTMS::QTMSRingTone * &) + ?tr@QTMSVolumeEffect@QTMS@@SA?AVQString@@PBD0H@Z @ 32 NONAME ; class QString QTMS::QTMSVolumeEffect::tr(char const *, char const *, int) + ?AddSource@QTMSStream@QTMS@@QAEHPAVQTMSSource@2@@Z @ 33 NONAME ; int QTMS::QTMSStream::AddSource(class QTMS::QTMSSource *) + ??1QTMSGlobalVolEffect@QTMS@@UAE@XZ @ 34 NONAME ; QTMS::QTMSGlobalVolEffect::~QTMSGlobalVolEffect(void) + ?GetType@QTMSSpeakerSink@QTMS@@UAEHAAH@Z @ 35 NONAME ; int QTMS::QTMSSpeakerSink::GetType(int &) + ?getStaticMetaObject@QTMSGlobalVolEffect@QTMS@@SAABUQMetaObject@@XZ @ 36 NONAME ; struct QMetaObject const & QTMS::QTMSGlobalVolEffect::getStaticMetaObject(void) + ??0QTMSModemSource@QTMS@@IAE@XZ @ 37 NONAME ; QTMS::QTMSModemSource::QTMSModemSource(void) + ?trUtf8@QTMSMicSource@QTMS@@SA?AVQString@@PBD0@Z @ 38 NONAME ; class QString QTMS::QTMSMicSource::trUtf8(char const *, char const *) + ?GetVADMode@QTMSILBCFormat@QTMS@@QAEHAAH@Z @ 39 NONAME ; int QTMS::QTMSILBCFormat::GetVADMode(int &) + ?qt_metacast@QTMSDTMF@QTMS@@UAEPAXPBD@Z @ 40 NONAME ; void * QTMS::QTMSDTMF::qt_metacast(char const *) + ??_EQTMSCall@QTMS@@UAE@I@Z @ 41 NONAME ; QTMS::QTMSCall::~QTMSCall(unsigned int) + ?trUtf8@QTMSILBCFormat@QTMS@@SA?AVQString@@PBD0@Z @ 42 NONAME ; class QString QTMS::QTMSILBCFormat::trUtf8(char const *, char const *) + ?SetMode@QTMSILBCFormat@QTMS@@QAEHH@Z @ 43 NONAME ; int QTMS::QTMSILBCFormat::SetMode(int) + ?trUtf8@QTMSModemSink@QTMS@@SA?AVQString@@PBD0H@Z @ 44 NONAME ; class QString QTMS::QTMSModemSink::trUtf8(char const *, char const *, int) + ?GetVADMode@QTMSG711Format@QTMS@@QAEHAAH@Z @ 45 NONAME ; int QTMS::QTMSG711Format::GetVADMode(int &) + ?staticMetaObject@QTMSDTMF@QTMS@@2UQMetaObject@@B @ 46 NONAME ; struct QMetaObject const QTMS::QTMSDTMF::staticMetaObject + ??0QTMSMicSource@QTMS@@IAE@XZ @ 47 NONAME ; QTMS::QTMSMicSource::QTMSMicSource(void) + ?GetPreviousOutput@QTMSGlobalRouting@QTMS@@QAEHAAH@Z @ 48 NONAME ; int QTMS::QTMSGlobalRouting::GetPreviousOutput(int &) + ??1QTMSGainEffect@QTMS@@UAE@XZ @ 49 NONAME ; QTMS::QTMSGainEffect::~QTMSGainEffect(void) + ?trUtf8@QTMSClientSink@QTMS@@SA?AVQString@@PBD0@Z @ 50 NONAME ; class QString QTMS::QTMSClientSink::trUtf8(char const *, char const *) + ?EffectsEvent@QTMSGainEffect@QTMS@@IAEXABVQTMSEffect@2@UQTMSSignalEvent@2@@Z @ 51 NONAME ; void QTMS::QTMSGainEffect::EffectsEvent(class QTMS::QTMSEffect const &, struct QTMS::QTMSSignalEvent) + ?qt_metacast@QTMSILBCFormat@QTMS@@UAEPAXPBD@Z @ 52 NONAME ; void * QTMS::QTMSILBCFormat::qt_metacast(char const *) + ?TMSStreamEvent@QTMSStream@QTMS@@IAEXABV12@UQTMSSignalEvent@2@@Z @ 53 NONAME ; void QTMS::QTMSStream::TMSStreamEvent(class QTMS::QTMSStream const &, struct QTMS::QTMSSignalEvent) + ??1QTMSModemSink@QTMS@@UAE@XZ @ 54 NONAME ; QTMS::QTMSModemSink::~QTMSModemSink(void) + ?metaObject@QTMSVolumeEffect@QTMS@@UBEPBUQMetaObject@@XZ @ 55 NONAME ; struct QMetaObject const * QTMS::QTMSVolumeEffect::metaObject(void) const + ??_EQTMSClientSink@QTMS@@UAE@I@Z @ 56 NONAME ; QTMS::QTMSClientSink::~QTMSClientSink(unsigned int) + ?qt_metacast@QTMSModemSink@QTMS@@UAEPAXPBD@Z @ 57 NONAME ; void * QTMS::QTMSModemSink::qt_metacast(char const *) + ??1QTMSClientSource@QTMS@@UAE@XZ @ 58 NONAME ; QTMS::QTMSClientSource::~QTMSClientSource(void) + ?qt_metacall@QTMSGainEffect@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 59 NONAME ; int QTMS::QTMSGainEffect::qt_metacall(enum QMetaObject::Call, int, void * *) + ?CreateSource@QTMSFactory@QTMS@@QAEHHAAPAVQTMSSource@2@@Z @ 60 NONAME ; int QTMS::QTMSFactory::CreateSource(int, class QTMS::QTMSSource * &) + ?trUtf8@QTMSFactory@QTMS@@SA?AVQString@@PBD0@Z @ 61 NONAME ; class QString QTMS::QTMSFactory::trUtf8(char const *, char const *) + ?qt_metacall@QTMSGlobalVolEffect@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 62 NONAME ; int QTMS::QTMSGlobalVolEffect::qt_metacall(enum QMetaObject::Call, int, void * *) + ?GetLevel@QTMSGlobalGainEffect@QTMS@@QAEHAAI@Z @ 63 NONAME ; int QTMS::QTMSGlobalGainEffect::GetLevel(unsigned int &) + ?trUtf8@QTMSGlobalVolEffect@QTMS@@SA?AVQString@@PBD0H@Z @ 64 NONAME ; class QString QTMS::QTMSGlobalVolEffect::trUtf8(char const *, char const *, int) + ?trUtf8@QTMSCall@QTMS@@SA?AVQString@@PBD0@Z @ 65 NONAME ; class QString QTMS::QTMSCall::trUtf8(char const *, char const *) + ?GetMaxLevel@QTMSGlobalGainEffect@QTMS@@QAEHAAI@Z @ 66 NONAME ; int QTMS::QTMSGlobalGainEffect::GetMaxLevel(unsigned int &) + ?RemoveSource@QTMSStream@QTMS@@QAEHPAVQTMSSource@2@@Z @ 67 NONAME ; int QTMS::QTMSStream::RemoveSource(class QTMS::QTMSSource *) + ?DTMFEvent@QTMSDTMF@QTMS@@IAEXABV12@UQTMSSignalEvent@2@@Z @ 68 NONAME ; void QTMS::QTMSDTMF::DTMFEvent(class QTMS::QTMSDTMF const &, struct QTMS::QTMSSignalEvent) + ?GetCNG@QTMSILBCFormat@QTMS@@QAEHAAH@Z @ 69 NONAME ; int QTMS::QTMSILBCFormat::GetCNG(int &) + ?qt_metacast@QTMSG729Format@QTMS@@UAEPAXPBD@Z @ 70 NONAME ; void * QTMS::QTMSG729Format::qt_metacast(char const *) + ?tr@QTMSILBCFormat@QTMS@@SA?AVQString@@PBD0@Z @ 71 NONAME ; class QString QTMS::QTMSILBCFormat::tr(char const *, char const *) + ?GetType@QTMSClientSink@QTMS@@UAEHAAH@Z @ 72 NONAME ; int QTMS::QTMSClientSink::GetType(int &) + ?tr@QTMSModemSink@QTMS@@SA?AVQString@@PBD0H@Z @ 73 NONAME ; class QString QTMS::QTMSModemSink::tr(char const *, char const *, int) + ?staticMetaObject@QTMSMicSource@QTMS@@2UQMetaObject@@B @ 74 NONAME ; struct QMetaObject const QTMS::QTMSMicSource::staticMetaObject + ?metaObject@QTMSModemSource@QTMS@@UBEPBUQMetaObject@@XZ @ 75 NONAME ; struct QMetaObject const * QTMS::QTMSModemSource::metaObject(void) const + ?ContinueDTMFStringSending@QTMSDTMF@QTMS@@QAEHH@Z @ 76 NONAME ; int QTMS::QTMSDTMF::ContinueDTMFStringSending(int) + ?GetCNG@QTMSG711Format@QTMS@@QAEHAAH@Z @ 77 NONAME ; int QTMS::QTMSG711Format::GetCNG(int &) + ?CreateGlobalRouting@QTMSFactory@QTMS@@QAEHAAPAVQTMSGlobalRouting@2@@Z @ 78 NONAME ; int QTMS::QTMSFactory::CreateGlobalRouting(class QTMS::QTMSGlobalRouting * &) + ?trUtf8@QTMSGlobalRouting@QTMS@@SA?AVQString@@PBD0H@Z @ 79 NONAME ; class QString QTMS::QTMSGlobalRouting::trUtf8(char const *, char const *, int) + ?tr@QTMSClientSink@QTMS@@SA?AVQString@@PBD0@Z @ 80 NONAME ; class QString QTMS::QTMSClientSink::tr(char const *, char const *) + ?trUtf8@QTMSModemSink@QTMS@@SA?AVQString@@PBD0@Z @ 81 NONAME ; class QString QTMS::QTMSModemSink::trUtf8(char const *, char const *) + ?qt_metacall@QTMSInbandTone@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 82 NONAME ; int QTMS::QTMSInbandTone::qt_metacall(enum QMetaObject::Call, int, void * *) + ?staticMetaObject@QTMSSpeakerSink@QTMS@@2UQMetaObject@@B @ 83 NONAME ; struct QMetaObject const QTMS::QTMSSpeakerSink::staticMetaObject + ?staticMetaObject@QTMSGainEffect@QTMS@@2UQMetaObject@@B @ 84 NONAME ; struct QMetaObject const QTMS::QTMSGainEffect::staticMetaObject + ?staticMetaObject@QTMSModemSink@QTMS@@2UQMetaObject@@B @ 85 NONAME ; struct QMetaObject const QTMS::QTMSModemSink::staticMetaObject + ?tr@QTMSModemSource@QTMS@@SA?AVQString@@PBD0H@Z @ 86 NONAME ; class QString QTMS::QTMSModemSource::tr(char const *, char const *, int) + ?tr@QTMSDTMF@QTMS@@SA?AVQString@@PBD0@Z @ 87 NONAME ; class QString QTMS::QTMSDTMF::tr(char const *, char const *) + ?tr@QTMSGlobalVolEffect@QTMS@@SA?AVQString@@PBD0H@Z @ 88 NONAME ; class QString QTMS::QTMSGlobalVolEffect::tr(char const *, char const *, int) + ?GetType@QTMSGainEffect@QTMS@@UAEHAAH@Z @ 89 NONAME ; int QTMS::QTMSGainEffect::GetType(int &) + ?trUtf8@QTMSSpeakerSink@QTMS@@SA?AVQString@@PBD0@Z @ 90 NONAME ; class QString QTMS::QTMSSpeakerSink::trUtf8(char const *, char const *) + ??_EQTMSG711Format@QTMS@@UAE@I@Z @ 91 NONAME ; QTMS::QTMSG711Format::~QTMSG711Format(unsigned int) + ?qt_metacast@QTMSAMRFormat@QTMS@@UAEPAXPBD@Z @ 92 NONAME ; void * QTMS::QTMSAMRFormat::qt_metacast(char const *) + ?GlobalRoutingEvent@QTMSGlobalRouting@QTMS@@IAEXABV12@UQTMSSignalEvent@2@H@Z @ 93 NONAME ; void QTMS::QTMSGlobalRouting::GlobalRoutingEvent(class QTMS::QTMSGlobalRouting const &, struct QTMS::QTMSSignalEvent, int) + ?trUtf8@QTMSAMRFormat@QTMS@@SA?AVQString@@PBD0H@Z @ 94 NONAME ; class QString QTMS::QTMSAMRFormat::trUtf8(char const *, char const *, int) + ?metaObject@QTMSMicSource@QTMS@@UBEPBUQMetaObject@@XZ @ 95 NONAME ; struct QMetaObject const * QTMS::QTMSMicSource::metaObject(void) const + ??1QTMSSpeakerSink@QTMS@@UAE@XZ @ 96 NONAME ; QTMS::QTMSSpeakerSink::~QTMSSpeakerSink(void) + ??0QTMSVolumeEffect@QTMS@@IAE@XZ @ 97 NONAME ; QTMS::QTMSVolumeEffect::QTMSVolumeEffect(void) + ?staticMetaObject@QTMSAMRFormat@QTMS@@2UQMetaObject@@B @ 98 NONAME ; struct QMetaObject const QTMS::QTMSAMRFormat::staticMetaObject + ?Init@QTMSStream@QTMS@@QAEHXZ @ 99 NONAME ; int QTMS::QTMSStream::Init(void) + ?GetVADMode@QTMSG729Format@QTMS@@QAEHAAH@Z @ 100 NONAME ; int QTMS::QTMSG729Format::GetVADMode(int &) + ??1QTMSGlobalGainEffect@QTMS@@UAE@XZ @ 101 NONAME ; QTMS::QTMSGlobalGainEffect::~QTMSGlobalGainEffect(void) + ??_EQTMSInbandTone@QTMS@@UAE@I@Z @ 102 NONAME ; QTMS::QTMSInbandTone::~QTMSInbandTone(unsigned int) + ?trUtf8@QTMSAMRFormat@QTMS@@SA?AVQString@@PBD0@Z @ 103 NONAME ; class QString QTMS::QTMSAMRFormat::trUtf8(char const *, char const *) + ?GetType@QTMSClientSource@QTMS@@UAEHAAH@Z @ 104 NONAME ; int QTMS::QTMSClientSource::GetType(int &) + ?metaObject@QTMSPCMFormat@QTMS@@UBEPBUQMetaObject@@XZ @ 105 NONAME ; struct QMetaObject const * QTMS::QTMSPCMFormat::metaObject(void) const + ?tr@QTMSMicSource@QTMS@@SA?AVQString@@PBD0@Z @ 106 NONAME ; class QString QTMS::QTMSMicSource::tr(char const *, char const *) + ??1QTMSGlobalRouting@QTMS@@UAE@XZ @ 107 NONAME ; QTMS::QTMSGlobalRouting::~QTMSGlobalRouting(void) + ?getStaticMetaObject@QTMSStream@QTMS@@SAABUQMetaObject@@XZ @ 108 NONAME ; struct QMetaObject const & QTMS::QTMSStream::getStaticMetaObject(void) + ?trUtf8@QTMSClientSource@QTMS@@SA?AVQString@@PBD0@Z @ 109 NONAME ; class QString QTMS::QTMSClientSource::trUtf8(char const *, char const *) + ?tr@QTMSAMRFormat@QTMS@@SA?AVQString@@PBD0H@Z @ 110 NONAME ; class QString QTMS::QTMSAMRFormat::tr(char const *, char const *, int) + ?qt_metacast@QTMSModemSource@QTMS@@UAEPAXPBD@Z @ 111 NONAME ; void * QTMS::QTMSModemSource::qt_metacast(char const *) + ?getStaticMetaObject@QTMSG711Format@QTMS@@SAABUQMetaObject@@XZ @ 112 NONAME ; struct QMetaObject const & QTMS::QTMSG711Format::getStaticMetaObject(void) + ??_EQTMSClientSource@QTMS@@UAE@I@Z @ 113 NONAME ; QTMS::QTMSClientSource::~QTMSClientSource(unsigned int) + ?GetLevel@QTMSGainEffect@QTMS@@QAEHAAI@Z @ 114 NONAME ; int QTMS::QTMSGainEffect::GetLevel(unsigned int &) + ?tr@QTMSFactory@QTMS@@SA?AVQString@@PBD0@Z @ 115 NONAME ; class QString QTMS::QTMSFactory::tr(char const *, char const *) + ?qt_metacast@QTMSGlobalRouting@QTMS@@UAEPAXPBD@Z @ 116 NONAME ; void * QTMS::QTMSGlobalRouting::qt_metacast(char const *) + ?getStaticMetaObject@QTMSFactory@QTMS@@SAABUQMetaObject@@XZ @ 117 NONAME ; struct QMetaObject const & QTMS::QTMSFactory::getStaticMetaObject(void) + ??_EQTMSAMRFormat@QTMS@@UAE@I@Z @ 118 NONAME ; QTMS::QTMSAMRFormat::~QTMSAMRFormat(unsigned int) + ?getStaticMetaObject@QTMSPCMFormat@QTMS@@SAABUQMetaObject@@XZ @ 119 NONAME ; struct QMetaObject const & QTMS::QTMSPCMFormat::getStaticMetaObject(void) + ?Flush@QTMSClientSource@QTMS@@QAEHXZ @ 120 NONAME ; int QTMS::QTMSClientSource::Flush(void) + ?DeleteGlobalRouting@QTMSFactory@QTMS@@QAEHAAPAVQTMSGlobalRouting@2@@Z @ 121 NONAME ; int QTMS::QTMSFactory::DeleteGlobalRouting(class QTMS::QTMSGlobalRouting * &) + ?tr@QTMSGlobalRouting@QTMS@@SA?AVQString@@PBD0H@Z @ 122 NONAME ; class QString QTMS::QTMSGlobalRouting::tr(char const *, char const *, int) + ?SetMode@QTMSG711Format@QTMS@@QAEHH@Z @ 123 NONAME ; int QTMS::QTMSG711Format::SetMode(int) + ?GetMode@QTMSILBCFormat@QTMS@@QAEHAAH@Z @ 124 NONAME ; int QTMS::QTMSILBCFormat::GetMode(int &) + ?GetMode@QTMSG711Format@QTMS@@QAEHAAH@Z @ 125 NONAME ; int QTMS::QTMSG711Format::GetMode(int &) + ?GetAvailableOutputs@QTMSGlobalRouting@QTMS@@QAEHAAV?$vector@IV?$allocator@I@std@@@std@@@Z @ 126 NONAME ; int QTMS::QTMSGlobalRouting::GetAvailableOutputs(class std::vector > &) + ?staticMetaObject@QTMSFactory@QTMS@@2UQMetaObject@@B @ 127 NONAME ; struct QMetaObject const QTMS::QTMSFactory::staticMetaObject + ?DeleteFormat@QTMSFactory@QTMS@@QAEHAAPAVQTMSFormat@2@@Z @ 128 NONAME ; int QTMS::QTMSFactory::DeleteFormat(class QTMS::QTMSFormat * &) + ?tr@QTMSILBCFormat@QTMS@@SA?AVQString@@PBD0H@Z @ 129 NONAME ; class QString QTMS::QTMSILBCFormat::tr(char const *, char const *, int) + ??1QTMSPCMFormat@QTMS@@UAE@XZ @ 130 NONAME ; QTMS::QTMSPCMFormat::~QTMSPCMFormat(void) + ?trUtf8@QTMSGainEffect@QTMS@@SA?AVQString@@PBD0@Z @ 131 NONAME ; class QString QTMS::QTMSGainEffect::trUtf8(char const *, char const *) + ??0QTMSG711Format@QTMS@@IAE@XZ @ 132 NONAME ; QTMS::QTMSG711Format::QTMSG711Format(void) + ?staticMetaObject@QTMSILBCFormat@QTMS@@2UQMetaObject@@B @ 133 NONAME ; struct QMetaObject const QTMS::QTMSILBCFormat::staticMetaObject + ?metaObject@QTMSG729Format@QTMS@@UBEPBUQMetaObject@@XZ @ 134 NONAME ; struct QMetaObject const * QTMS::QTMSG729Format::metaObject(void) const + ?tr@QTMSFactory@QTMS@@SA?AVQString@@PBD0H@Z @ 135 NONAME ; class QString QTMS::QTMSFactory::tr(char const *, char const *, int) + ?tr@QTMSCall@QTMS@@SA?AVQString@@PBD0H@Z @ 136 NONAME ; class QString QTMS::QTMSCall::tr(char const *, char const *, int) + ?staticMetaObject@QTMSClientSink@QTMS@@2UQMetaObject@@B @ 137 NONAME ; struct QMetaObject const QTMS::QTMSClientSink::staticMetaObject + ?EffectsEvent@QTMSGlobalVolEffect@QTMS@@IAEXABVQTMSEffect@2@UQTMSSignalEvent@2@@Z @ 138 NONAME ; void QTMS::QTMSGlobalVolEffect::EffectsEvent(class QTMS::QTMSEffect const &, struct QTMS::QTMSSignalEvent) + ?CreateFormat@QTMSFactory@QTMS@@QAEHHAAPAVQTMSFormat@2@@Z @ 139 NONAME ; int QTMS::QTMSFactory::CreateFormat(int, class QTMS::QTMSFormat * &) + ?SetCNG@QTMSILBCFormat@QTMS@@QAEHH@Z @ 140 NONAME ; int QTMS::QTMSILBCFormat::SetCNG(int) + ??1QTMSAMRFormat@QTMS@@UAE@XZ @ 141 NONAME ; QTMS::QTMSAMRFormat::~QTMSAMRFormat(void) + ?metaObject@QTMSClientSink@QTMS@@UBEPBUQMetaObject@@XZ @ 142 NONAME ; struct QMetaObject const * QTMS::QTMSClientSink::metaObject(void) const + ?trUtf8@QTMSInbandTone@QTMS@@SA?AVQString@@PBD0@Z @ 143 NONAME ; class QString QTMS::QTMSInbandTone::trUtf8(char const *, char const *) + ?staticMetaObject@QTMSG711Format@QTMS@@2UQMetaObject@@B @ 144 NONAME ; struct QMetaObject const QTMS::QTMSG711Format::staticMetaObject + ?BufferFilled@QTMSClientSource@QTMS@@QAEHAAVTMSBuffer@TMS@@@Z @ 145 NONAME ; int QTMS::QTMSClientSource::BufferFilled(class TMS::TMSBuffer &) + ?trUtf8@QTMSDTMF@QTMS@@SA?AVQString@@PBD0H@Z @ 146 NONAME ; class QString QTMS::QTMSDTMF::trUtf8(char const *, char const *, int) + ?InbandToneEvent@QTMSInbandTone@QTMS@@IAEXABV12@UQTMSSignalEvent@2@@Z @ 147 NONAME ; void QTMS::QTMSInbandTone::InbandToneEvent(class QTMS::QTMSInbandTone const &, struct QTMS::QTMSSignalEvent) + ?tr@QTMSModemSink@QTMS@@SA?AVQString@@PBD0@Z @ 148 NONAME ; class QString QTMS::QTMSModemSink::tr(char const *, char const *) + ?tr@QTMSGainEffect@QTMS@@SA?AVQString@@PBD0H@Z @ 149 NONAME ; class QString QTMS::QTMSGainEffect::tr(char const *, char const *, int) + ?qt_metacast@QTMSG711Format@QTMS@@UAEPAXPBD@Z @ 150 NONAME ; void * QTMS::QTMSG711Format::qt_metacast(char const *) + ?GetMaxLevel@QTMSVolumeEffect@QTMS@@QAEHAAI@Z @ 151 NONAME ; int QTMS::QTMSVolumeEffect::GetMaxLevel(unsigned int &) + ??0QTMSSpeakerSink@QTMS@@IAE@XZ @ 152 NONAME ; QTMS::QTMSSpeakerSink::QTMSSpeakerSink(void) + ?ProcessBuffer@QTMSClientSource@QTMS@@QAEHPAVTMSBuffer@TMS@@@Z @ 153 NONAME ; int QTMS::QTMSClientSource::ProcessBuffer(class TMS::TMSBuffer *) + ??_EQTMSMicSource@QTMS@@UAE@I@Z @ 154 NONAME ; QTMS::QTMSMicSource::~QTMSMicSource(unsigned int) + ?metaObject@QTMSModemSink@QTMS@@UBEPBUQMetaObject@@XZ @ 155 NONAME ; struct QMetaObject const * QTMS::QTMSModemSink::metaObject(void) const + ?DeleteCall@QTMSFactory@QTMS@@QAEHAAPAVQTMSCall@2@@Z @ 156 NONAME ; int QTMS::QTMSFactory::DeleteCall(class QTMS::QTMSCall * &) + ?tr@QTMSGlobalGainEffect@QTMS@@SA?AVQString@@PBD0H@Z @ 157 NONAME ; class QString QTMS::QTMSGlobalGainEffect::tr(char const *, char const *, int) + ?qt_metacall@QTMSMicSource@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 158 NONAME ; int QTMS::QTMSMicSource::qt_metacall(enum QMetaObject::Call, int, void * *) + ?GetType@QTMSFormat@QTMS@@UAEHAAH@Z @ 159 NONAME ; int QTMS::QTMSFormat::GetType(int &) + ?DeleteStream@QTMSCall@QTMS@@QAEHAAPAVQTMSStream@2@@Z @ 160 NONAME ; int QTMS::QTMSCall::DeleteStream(class QTMS::QTMSStream * &) + ?trUtf8@QTMSVolumeEffect@QTMS@@SA?AVQString@@PBD0@Z @ 161 NONAME ; class QString QTMS::QTMSVolumeEffect::trUtf8(char const *, char const *) + ?CreateInbandTonePlayer@QTMSFactory@QTMS@@QAEHAAPAVQTMSInbandTone@2@@Z @ 162 NONAME ; int QTMS::QTMSFactory::CreateInbandTonePlayer(class QTMS::QTMSInbandTone * &) + ?trUtf8@QTMSGlobalRouting@QTMS@@SA?AVQString@@PBD0@Z @ 163 NONAME ; class QString QTMS::QTMSGlobalRouting::trUtf8(char const *, char const *) + ??1QTMSG711Format@QTMS@@UAE@XZ @ 164 NONAME ; QTMS::QTMSG711Format::~QTMSG711Format(void) + ?tr@QTMSGainEffect@QTMS@@SA?AVQString@@PBD0@Z @ 165 NONAME ; class QString QTMS::QTMSGainEffect::tr(char const *, char const *) + ??_EQTMSModemSource@QTMS@@UAE@I@Z @ 166 NONAME ; QTMS::QTMSModemSource::~QTMSModemSource(unsigned int) + ?qt_metacall@QTMSPCMFormat@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 167 NONAME ; int QTMS::QTMSPCMFormat::qt_metacall(enum QMetaObject::Call, int, void * *) + ??0QTMSILBCFormat@QTMS@@IAE@XZ @ 168 NONAME ; QTMS::QTMSILBCFormat::QTMSILBCFormat(void) + ?trUtf8@QTMSStream@QTMS@@SA?AVQString@@PBD0H@Z @ 169 NONAME ; class QString QTMS::QTMSStream::trUtf8(char const *, char const *, int) + ?qt_metacast@QTMSPCMFormat@QTMS@@UAEPAXPBD@Z @ 170 NONAME ; void * QTMS::QTMSPCMFormat::qt_metacast(char const *) + ?qt_metacall@QTMSSpeakerSink@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 171 NONAME ; int QTMS::QTMSSpeakerSink::qt_metacall(enum QMetaObject::Call, int, void * *) + ?GetLevel@QTMSVolumeEffect@QTMS@@QAEHAAI@Z @ 172 NONAME ; int QTMS::QTMSVolumeEffect::GetLevel(unsigned int &) + ?trUtf8@QTMSFactory@QTMS@@SA?AVQString@@PBD0H@Z @ 173 NONAME ; class QString QTMS::QTMSFactory::trUtf8(char const *, char const *, int) + ??_EQTMSGainEffect@QTMS@@UAE@I@Z @ 174 NONAME ; QTMS::QTMSGainEffect::~QTMSGainEffect(unsigned int) + ?tr@QTMSGlobalRouting@QTMS@@SA?AVQString@@PBD0@Z @ 175 NONAME ; class QString QTMS::QTMSGlobalRouting::tr(char const *, char const *) + ?tr@QTMSAMRFormat@QTMS@@SA?AVQString@@PBD0@Z @ 176 NONAME ; class QString QTMS::QTMSAMRFormat::tr(char const *, char const *) + ?getStaticMetaObject@QTMSSpeakerSink@QTMS@@SAABUQMetaObject@@XZ @ 177 NONAME ; struct QMetaObject const & QTMS::QTMSSpeakerSink::getStaticMetaObject(void) + ?CreateDTMF@QTMSFactory@QTMS@@QAEHHAAPAVQTMSDTMF@2@@Z @ 178 NONAME ; int QTMS::QTMSFactory::CreateDTMF(int, class QTMS::QTMSDTMF * &) + ?trUtf8@QTMSStream@QTMS@@SA?AVQString@@PBD0@Z @ 179 NONAME ; class QString QTMS::QTMSStream::trUtf8(char const *, char const *) + ?tr@QTMSInbandTone@QTMS@@SA?AVQString@@PBD0@Z @ 180 NONAME ; class QString QTMS::QTMSInbandTone::tr(char const *, char const *) + ?tr@QTMSStream@QTMS@@SA?AVQString@@PBD0@Z @ 181 NONAME ; class QString QTMS::QTMSStream::tr(char const *, char const *) + ??1QTMSMicSource@QTMS@@UAE@XZ @ 182 NONAME ; QTMS::QTMSMicSource::~QTMSMicSource(void) + ??_EQTMSFactory@QTMS@@UAE@I@Z @ 183 NONAME ; QTMS::QTMSFactory::~QTMSFactory(unsigned int) + ??1QTMSCall@QTMS@@UAE@XZ @ 184 NONAME ; QTMS::QTMSCall::~QTMSCall(void) + ?staticMetaObject@QTMSG729Format@QTMS@@2UQMetaObject@@B @ 185 NONAME ; struct QMetaObject const QTMS::QTMSG729Format::staticMetaObject + ??0QTMSClientSource@QTMS@@IAE@XZ @ 186 NONAME ; QTMS::QTMSClientSource::QTMSClientSource(void) + ?Stop@QTMSInbandTone@QTMS@@QAEHXZ @ 187 NONAME ; int QTMS::QTMSInbandTone::Stop(void) + ?tr@QTMSCall@QTMS@@SA?AVQString@@PBD0@Z @ 188 NONAME ; class QString QTMS::QTMSCall::tr(char const *, char const *) + ?qt_metacall@QTMSCall@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 189 NONAME ; int QTMS::QTMSCall::qt_metacall(enum QMetaObject::Call, int, void * *) + ?metaObject@QTMSSpeakerSink@QTMS@@UBEPBUQMetaObject@@XZ @ 190 NONAME ; struct QMetaObject const * QTMS::QTMSSpeakerSink::metaObject(void) const + ?SetTone@QTMSDTMF@QTMS@@QAEHPAU_GString@@@Z @ 191 NONAME ; int QTMS::QTMSDTMF::SetTone(struct _GString *) + ?SetEnqueueMode@QTMSClientSource@QTMS@@QAEHH@Z @ 192 NONAME ; int QTMS::QTMSClientSource::SetEnqueueMode(int) + ?staticMetaObject@QTMSClientSource@QTMS@@2UQMetaObject@@B @ 193 NONAME ; struct QMetaObject const QTMS::QTMSClientSource::staticMetaObject + ?trUtf8@QTMSModemSource@QTMS@@SA?AVQString@@PBD0@Z @ 194 NONAME ; class QString QTMS::QTMSModemSource::trUtf8(char const *, char const *) + ?trUtf8@QTMSG729Format@QTMS@@SA?AVQString@@PBD0H@Z @ 195 NONAME ; class QString QTMS::QTMSG729Format::trUtf8(char const *, char const *, int) + ?GetType@QTMSVolumeEffect@QTMS@@UAEHAAH@Z @ 196 NONAME ; int QTMS::QTMSVolumeEffect::GetType(int &) + ?qt_metacall@QTMSVolumeEffect@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 197 NONAME ; int QTMS::QTMSVolumeEffect::qt_metacall(enum QMetaObject::Call, int, void * *) + ?tr@QTMSG711Format@QTMS@@SA?AVQString@@PBD0H@Z @ 198 NONAME ; class QString QTMS::QTMSG711Format::tr(char const *, char const *, int) + ??1QTMSILBCFormat@QTMS@@UAE@XZ @ 199 NONAME ; QTMS::QTMSILBCFormat::~QTMSILBCFormat(void) + ?qt_metacall@QTMSILBCFormat@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 200 NONAME ; int QTMS::QTMSILBCFormat::qt_metacall(enum QMetaObject::Call, int, void * *) + ?tr@QTMSSpeakerSink@QTMS@@SA?AVQString@@PBD0H@Z @ 201 NONAME ; class QString QTMS::QTMSSpeakerSink::tr(char const *, char const *, int) + ?GetBitRate@QTMSFormat@QTMS@@QAEHAAI@Z @ 202 NONAME ; int QTMS::QTMSFormat::GetBitRate(unsigned int &) + ?GetType@QTMSModemSource@QTMS@@UAEHAAH@Z @ 203 NONAME ; int QTMS::QTMSModemSource::GetType(int &) + ?staticMetaObject@QTMSGlobalVolEffect@QTMS@@2UQMetaObject@@B @ 204 NONAME ; struct QMetaObject const QTMS::QTMSGlobalVolEffect::staticMetaObject + ??1QTMSFormat@QTMS@@UAE@XZ @ 205 NONAME ; QTMS::QTMSFormat::~QTMSFormat(void) + ?GetPlc@QTMSG711Format@QTMS@@QAEHAAH@Z @ 206 NONAME ; int QTMS::QTMSG711Format::GetPlc(int &) + ?Start@QTMSInbandTone@QTMS@@QAEHH@Z @ 207 NONAME ; int QTMS::QTMSInbandTone::Start(int) + ?trUtf8@QTMSClientSink@QTMS@@SA?AVQString@@PBD0H@Z @ 208 NONAME ; class QString QTMS::QTMSClientSink::trUtf8(char const *, char const *, int) + ?tr@QTMSInbandTone@QTMS@@SA?AVQString@@PBD0H@Z @ 209 NONAME ; class QString QTMS::QTMSInbandTone::tr(char const *, char const *, int) + ??_EQTMSPCMFormat@QTMS@@UAE@I@Z @ 210 NONAME ; QTMS::QTMSPCMFormat::~QTMSPCMFormat(unsigned int) + ?metaObject@QTMSAMRFormat@QTMS@@UBEPBUQMetaObject@@XZ @ 211 NONAME ; struct QMetaObject const * QTMS::QTMSAMRFormat::metaObject(void) const + ?metaObject@QTMSStream@QTMS@@UBEPBUQMetaObject@@XZ @ 212 NONAME ; struct QMetaObject const * QTMS::QTMSStream::metaObject(void) const + ?getStaticMetaObject@QTMSGlobalGainEffect@QTMS@@SAABUQMetaObject@@XZ @ 213 NONAME ; struct QMetaObject const & QTMS::QTMSGlobalGainEffect::getStaticMetaObject(void) + ?tr@QTMSGlobalVolEffect@QTMS@@SA?AVQString@@PBD0@Z @ 214 NONAME ; class QString QTMS::QTMSGlobalVolEffect::tr(char const *, char const *) + ?staticMetaObject@QTMSInbandTone@QTMS@@2UQMetaObject@@B @ 215 NONAME ; struct QMetaObject const QTMS::QTMSInbandTone::staticMetaObject + ?trUtf8@QTMSGlobalGainEffect@QTMS@@SA?AVQString@@PBD0H@Z @ 216 NONAME ; class QString QTMS::QTMSGlobalGainEffect::trUtf8(char const *, char const *, int) + ?metaObject@QTMSCall@QTMS@@UBEPBUQMetaObject@@XZ @ 217 NONAME ; struct QMetaObject const * QTMS::QTMSCall::metaObject(void) const + ?qt_metacall@QTMSClientSink@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 218 NONAME ; int QTMS::QTMSClientSink::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacast@QTMSClientSource@QTMS@@UAEPAXPBD@Z @ 219 NONAME ; void * QTMS::QTMSClientSource::qt_metacast(char const *) + ?CreateStream@QTMSCall@QTMS@@QAEHHAAPAVQTMSStream@2@@Z @ 220 NONAME ; int QTMS::QTMSCall::CreateStream(int, class QTMS::QTMSStream * &) + ?DeleteInbandTonePlayer@QTMSFactory@QTMS@@QAEHAAPAVQTMSInbandTone@2@@Z @ 221 NONAME ; int QTMS::QTMSFactory::DeleteInbandTonePlayer(class QTMS::QTMSInbandTone * &) + ?SetLevel@QTMSGlobalGainEffect@QTMS@@QAEHI@Z @ 222 NONAME ; int QTMS::QTMSGlobalGainEffect::SetLevel(unsigned int) + ?GetStreamType@QTMSStream@QTMS@@QAEHXZ @ 223 NONAME ; int QTMS::QTMSStream::GetStreamType(void) + ?getStaticMetaObject@QTMSGlobalRouting@QTMS@@SAABUQMetaObject@@XZ @ 224 NONAME ; struct QMetaObject const & QTMS::QTMSGlobalRouting::getStaticMetaObject(void) + ??0QTMSGlobalVolEffect@QTMS@@IAE@XZ @ 225 NONAME ; QTMS::QTMSGlobalVolEffect::QTMSGlobalVolEffect(void) + ?CreateSink@QTMSFactory@QTMS@@QAEHHAAPAVQTMSSink@2@@Z @ 226 NONAME ; int QTMS::QTMSFactory::CreateSink(int, class QTMS::QTMSSink * &) + ?EffectsEvent@QTMSVolumeEffect@QTMS@@IAEXABVQTMSEffect@2@UQTMSSignalEvent@2@@Z @ 227 NONAME ; void QTMS::QTMSVolumeEffect::EffectsEvent(class QTMS::QTMSEffect const &, struct QTMS::QTMSSignalEvent) + ?getStaticMetaObject@QTMSG729Format@QTMS@@SAABUQMetaObject@@XZ @ 228 NONAME ; struct QMetaObject const & QTMS::QTMSG729Format::getStaticMetaObject(void) + ??1QTMSDTMF@QTMS@@UAE@XZ @ 229 NONAME ; QTMS::QTMSDTMF::~QTMSDTMF(void) + ?DeleteDTMF@QTMSFactory@QTMS@@QAEHAAPAVQTMSDTMF@2@@Z @ 230 NONAME ; int QTMS::QTMSFactory::DeleteDTMF(class QTMS::QTMSDTMF * &) + ??_EQTMSFormat@QTMS@@UAE@I@Z @ 231 NONAME ; QTMS::QTMSFormat::~QTMSFormat(unsigned int) + ?staticMetaObject@QTMSGlobalGainEffect@QTMS@@2UQMetaObject@@B @ 232 NONAME ; struct QMetaObject const QTMS::QTMSGlobalGainEffect::staticMetaObject + ?SetVADMode@QTMSILBCFormat@QTMS@@QAEHH@Z @ 233 NONAME ; int QTMS::QTMSILBCFormat::SetVADMode(int) + ??0QTMSCall@QTMS@@IAE@XZ @ 234 NONAME ; QTMS::QTMSCall::QTMSCall(void) + ?GetEnqueueMode@QTMSClientSource@QTMS@@QAEHAAH@Z @ 235 NONAME ; int QTMS::QTMSClientSource::GetEnqueueMode(int &) + ?metaObject@QTMSGlobalVolEffect@QTMS@@UBEPBUQMetaObject@@XZ @ 236 NONAME ; struct QMetaObject const * QTMS::QTMSGlobalVolEffect::metaObject(void) const + ?staticMetaObject@QTMSGlobalRouting@QTMS@@2UQMetaObject@@B @ 237 NONAME ; struct QMetaObject const QTMS::QTMSGlobalRouting::staticMetaObject + ?SetCNG@QTMSG711Format@QTMS@@QAEHH@Z @ 238 NONAME ; int QTMS::QTMSG711Format::SetCNG(int) + ?qt_metacall@QTMSG729Format@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 239 NONAME ; int QTMS::QTMSG729Format::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacast@QTMSFactory@QTMS@@UAEPAXPBD@Z @ 240 NONAME ; void * QTMS::QTMSFactory::qt_metacast(char const *) + ?tr@QTMSStream@QTMS@@SA?AVQString@@PBD0H@Z @ 241 NONAME ; class QString QTMS::QTMSStream::tr(char const *, char const *, int) + ?SetLevel@QTMSVolumeEffect@QTMS@@QAEHI@Z @ 242 NONAME ; int QTMS::QTMSVolumeEffect::SetLevel(unsigned int) + ?DeleteEffect@QTMSFactory@QTMS@@QAEHAAPAVQTMSEffect@2@@Z @ 243 NONAME ; int QTMS::QTMSFactory::DeleteEffect(class QTMS::QTMSEffect * &) + ?qt_metacast@QTMSCall@QTMS@@UAEPAXPBD@Z @ 244 NONAME ; void * QTMS::QTMSCall::qt_metacast(char const *) + ?SetFormat@QTMSStream@QTMS@@QAEHPAVQTMSFormat@2@@Z @ 245 NONAME ; int QTMS::QTMSStream::SetFormat(class QTMS::QTMSFormat *) + ?getStaticMetaObject@QTMSDTMF@QTMS@@SAABUQMetaObject@@XZ @ 246 NONAME ; struct QMetaObject const & QTMS::QTMSDTMF::getStaticMetaObject(void) + ?getStaticMetaObject@QTMSMicSource@QTMS@@SAABUQMetaObject@@XZ @ 247 NONAME ; struct QMetaObject const & QTMS::QTMSMicSource::getStaticMetaObject(void) + ?trUtf8@QTMSClientSource@QTMS@@SA?AVQString@@PBD0H@Z @ 248 NONAME ; class QString QTMS::QTMSClientSource::trUtf8(char const *, char const *, int) + ?qt_metacall@QTMSGlobalGainEffect@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 249 NONAME ; int QTMS::QTMSGlobalGainEffect::qt_metacall(enum QMetaObject::Call, int, void * *) + ?CreateCall@QTMSFactory@QTMS@@QAEHHAAPAVQTMSCall@2@I@Z @ 250 NONAME ; int QTMS::QTMSFactory::CreateCall(int, class QTMS::QTMSCall * &, unsigned int) + ?SetVADMode@QTMSG729Format@QTMS@@QAEHH@Z @ 251 NONAME ; int QTMS::QTMSG729Format::SetVADMode(int) + ?DeleteBuffer@QTMSFactory@QTMS@@QAEHAAPAVQTMSBuffer@2@@Z @ 252 NONAME ; int QTMS::QTMSFactory::DeleteBuffer(class QTMS::QTMSBuffer * &) + ?trUtf8@QTMSG711Format@QTMS@@SA?AVQString@@PBD0@Z @ 253 NONAME ; class QString QTMS::QTMSG711Format::trUtf8(char const *, char const *) + ?qt_metacall@QTMSDTMF@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 254 NONAME ; int QTMS::QTMSDTMF::qt_metacall(enum QMetaObject::Call, int, void * *) + ?qt_metacall@QTMSModemSource@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 255 NONAME ; int QTMS::QTMSModemSource::qt_metacall(enum QMetaObject::Call, int, void * *) + ?CreateFactory@QTMSFactory@QTMS@@SAHAAPAV12@AAVQTMSVer@2@@Z @ 256 NONAME ; int QTMS::QTMSFactory::CreateFactory(class QTMS::QTMSFactory * &, class QTMS::QTMSVer &) + ?tr@QTMSClientSource@QTMS@@SA?AVQString@@PBD0H@Z @ 257 NONAME ; class QString QTMS::QTMSClientSource::tr(char const *, char const *, int) + ??1QTMSStream@QTMS@@UAE@XZ @ 258 NONAME ; QTMS::QTMSStream::~QTMSStream(void) + ?qt_metacast@QTMSVolumeEffect@QTMS@@UAEPAXPBD@Z @ 259 NONAME ; void * QTMS::QTMSVolumeEffect::qt_metacast(char const *) + ??_EQTMSStream@QTMS@@UAE@I@Z @ 260 NONAME ; QTMS::QTMSStream::~QTMSStream(unsigned int) + ?tr@QTMSSpeakerSink@QTMS@@SA?AVQString@@PBD0@Z @ 261 NONAME ; class QString QTMS::QTMSSpeakerSink::tr(char const *, char const *) + ?RemoveSink@QTMSStream@QTMS@@QAEHPAVQTMSSink@2@@Z @ 262 NONAME ; int QTMS::QTMSStream::RemoveSink(class QTMS::QTMSSink *) + ?trUtf8@QTMSModemSource@QTMS@@SA?AVQString@@PBD0H@Z @ 263 NONAME ; class QString QTMS::QTMSModemSource::trUtf8(char const *, char const *, int) + ?metaObject@QTMSILBCFormat@QTMS@@UBEPBUQMetaObject@@XZ @ 264 NONAME ; struct QMetaObject const * QTMS::QTMSILBCFormat::metaObject(void) const + ?staticMetaObject@QTMSPCMFormat@QTMS@@2UQMetaObject@@B @ 265 NONAME ; struct QMetaObject const QTMS::QTMSPCMFormat::staticMetaObject + ?getStaticMetaObject@QTMSClientSource@QTMS@@SAABUQMetaObject@@XZ @ 266 NONAME ; struct QMetaObject const & QTMS::QTMSClientSource::getStaticMetaObject(void) + ??1QTMSFactory@QTMS@@UAE@XZ @ 267 NONAME ; QTMS::QTMSFactory::~QTMSFactory(void) + ?DeleteSource@QTMSFactory@QTMS@@QAEHAAPAVQTMSSource@2@@Z @ 268 NONAME ; int QTMS::QTMSFactory::DeleteSource(class QTMS::QTMSSource * &) + ?qt_metacall@QTMSGlobalRouting@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 269 NONAME ; int QTMS::QTMSGlobalRouting::qt_metacall(enum QMetaObject::Call, int, void * *) + ??0QTMSGlobalGainEffect@QTMS@@IAE@XZ @ 270 NONAME ; QTMS::QTMSGlobalGainEffect::QTMSGlobalGainEffect(void) + ?trUtf8@QTMSPCMFormat@QTMS@@SA?AVQString@@PBD0@Z @ 271 NONAME ; class QString QTMS::QTMSPCMFormat::trUtf8(char const *, char const *) + ??0QTMSDTMF@QTMS@@IAE@XZ @ 272 NONAME ; QTMS::QTMSDTMF::QTMSDTMF(void) + ?GetLevel@QTMSGlobalVolEffect@QTMS@@QAEHAAI@Z @ 273 NONAME ; int QTMS::QTMSGlobalVolEffect::GetLevel(unsigned int &) + ?GetType@QTMSGlobalVolEffect@QTMS@@UAEHAAH@Z @ 274 NONAME ; int QTMS::QTMSGlobalVolEffect::GetType(int &) + ?getStaticMetaObject@QTMSILBCFormat@QTMS@@SAABUQMetaObject@@XZ @ 275 NONAME ; struct QMetaObject const & QTMS::QTMSILBCFormat::getStaticMetaObject(void) + ??_EQTMSGlobalGainEffect@QTMS@@UAE@I@Z @ 276 NONAME ; QTMS::QTMSGlobalGainEffect::~QTMSGlobalGainEffect(unsigned int) + ?trUtf8@QTMSGlobalVolEffect@QTMS@@SA?AVQString@@PBD0@Z @ 277 NONAME ; class QString QTMS::QTMSGlobalVolEffect::trUtf8(char const *, char const *) + ?qt_metacast@QTMSGlobalGainEffect@QTMS@@UAEPAXPBD@Z @ 278 NONAME ; void * QTMS::QTMSGlobalGainEffect::qt_metacast(char const *) + ??_EQTMSModemSink@QTMS@@UAE@I@Z @ 279 NONAME ; QTMS::QTMSModemSink::~QTMSModemSink(unsigned int) + ??0QTMSModemSink@QTMS@@IAE@XZ @ 280 NONAME ; QTMS::QTMSModemSink::QTMSModemSink(void) + ?tr@QTMSG711Format@QTMS@@SA?AVQString@@PBD0@Z @ 281 NONAME ; class QString QTMS::QTMSG711Format::tr(char const *, char const *) + ?GetState@QTMSStream@QTMS@@QAEHXZ @ 282 NONAME ; int QTMS::QTMSStream::GetState(void) + ?qt_metacall@QTMSG711Format@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 283 NONAME ; int QTMS::QTMSG711Format::qt_metacall(enum QMetaObject::Call, int, void * *) + ?getStaticMetaObject@QTMSClientSink@QTMS@@SAABUQMetaObject@@XZ @ 284 NONAME ; struct QMetaObject const & QTMS::QTMSClientSink::getStaticMetaObject(void) + ?qt_metacast@QTMSInbandTone@QTMS@@UAEPAXPBD@Z @ 285 NONAME ; void * QTMS::QTMSInbandTone::qt_metacast(char const *) + ?getStaticMetaObject@QTMSModemSource@QTMS@@SAABUQMetaObject@@XZ @ 286 NONAME ; struct QMetaObject const & QTMS::QTMSModemSource::getStaticMetaObject(void) + ?metaObject@QTMSGainEffect@QTMS@@UBEPBUQMetaObject@@XZ @ 287 NONAME ; struct QMetaObject const * QTMS::QTMSGainEffect::metaObject(void) const + ??0QTMSGlobalRouting@QTMS@@IAE@XZ @ 288 NONAME ; QTMS::QTMSGlobalRouting::QTMSGlobalRouting(void) + ?metaObject@QTMSClientSource@QTMS@@UBEPBUQMetaObject@@XZ @ 289 NONAME ; struct QMetaObject const * QTMS::QTMSClientSource::metaObject(void) const + ?qt_metacast@QTMSStream@QTMS@@UAEPAXPBD@Z @ 290 NONAME ; void * QTMS::QTMSStream::qt_metacast(char const *) + ?DeleteSink@QTMSFactory@QTMS@@QAEHAAPAVQTMSSink@2@@Z @ 291 NONAME ; int QTMS::QTMSFactory::DeleteSink(class QTMS::QTMSSink * &) + ?getStaticMetaObject@QTMSModemSink@QTMS@@SAABUQMetaObject@@XZ @ 292 NONAME ; struct QMetaObject const & QTMS::QTMSModemSink::getStaticMetaObject(void) + ?tr@QTMSClientSource@QTMS@@SA?AVQString@@PBD0@Z @ 293 NONAME ; class QString QTMS::QTMSClientSource::tr(char const *, char const *) + ??_EQTMSDTMF@QTMS@@UAE@I@Z @ 294 NONAME ; QTMS::QTMSDTMF::~QTMSDTMF(unsigned int) + ?qt_metacall@QTMSStream@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 295 NONAME ; int QTMS::QTMSStream::qt_metacall(enum QMetaObject::Call, int, void * *) + ?tr@QTMSDTMF@QTMS@@SA?AVQString@@PBD0H@Z @ 296 NONAME ; class QString QTMS::QTMSDTMF::tr(char const *, char const *, int) + ?qt_metacast@QTMSGainEffect@QTMS@@UAEPAXPBD@Z @ 297 NONAME ; void * QTMS::QTMSGainEffect::qt_metacast(char const *) + ?GetCallContextId@QTMSCall@QTMS@@QAEHAAI@Z @ 298 NONAME ; int QTMS::QTMSCall::GetCallContextId(unsigned int &) + ?GetCallType@QTMSCall@QTMS@@QAEHXZ @ 299 NONAME ; int QTMS::QTMSCall::GetCallType(void) + ?Start@QTMSDTMF@QTMS@@QAEHXZ @ 300 NONAME ; int QTMS::QTMSDTMF::Start(void) + ?trUtf8@QTMSGlobalGainEffect@QTMS@@SA?AVQString@@PBD0@Z @ 301 NONAME ; class QString QTMS::QTMSGlobalGainEffect::trUtf8(char const *, char const *) + ?SetOutput@QTMSGlobalRouting@QTMS@@QAEHH@Z @ 302 NONAME ; int QTMS::QTMSGlobalRouting::SetOutput(int) + ??0QTMSClientSink@QTMS@@IAE@XZ @ 303 NONAME ; QTMS::QTMSClientSink::QTMSClientSink(void) + ?SetLevel@QTMSGlobalVolEffect@QTMS@@QAEHI@Z @ 304 NONAME ; int QTMS::QTMSGlobalVolEffect::SetLevel(unsigned int) + ?IsCallTypeSupported@QTMSFactory@QTMS@@QAEHHAAH@Z @ 305 NONAME ; int QTMS::QTMSFactory::IsCallTypeSupported(int, int &) + ?qt_metacast@QTMSGlobalVolEffect@QTMS@@UAEPAXPBD@Z @ 306 NONAME ; void * QTMS::QTMSGlobalVolEffect::qt_metacast(char const *) + ?staticMetaObject@QTMSModemSource@QTMS@@2UQMetaObject@@B @ 307 NONAME ; struct QMetaObject const QTMS::QTMSModemSource::staticMetaObject + ?GetStreamId@QTMSStream@QTMS@@QAEHXZ @ 308 NONAME ; int QTMS::QTMSStream::GetStreamId(void) + ??0QTMSG729Format@QTMS@@IAE@XZ @ 309 NONAME ; QTMS::QTMSG729Format::QTMSG729Format(void) + ??_EQTMSGlobalVolEffect@QTMS@@UAE@I@Z @ 310 NONAME ; QTMS::QTMSGlobalVolEffect::~QTMSGlobalVolEffect(unsigned int) + ?getStaticMetaObject@QTMSAMRFormat@QTMS@@SAABUQMetaObject@@XZ @ 311 NONAME ; struct QMetaObject const & QTMS::QTMSAMRFormat::getStaticMetaObject(void) + ?staticMetaObject@QTMSVolumeEffect@QTMS@@2UQMetaObject@@B @ 312 NONAME ; struct QMetaObject const QTMS::QTMSVolumeEffect::staticMetaObject + ??0QTMSFormat@QTMS@@IAE@XZ @ 313 NONAME ; QTMS::QTMSFormat::QTMSFormat(void) + ?GetSupportedFormats@QTMSFactory@QTMS@@QAEHHAAV?$vector@PAVQTMSFormat@QTMS@@V?$allocator@PAVQTMSFormat@QTMS@@@std@@@std@@@Z @ 314 NONAME ; int QTMS::QTMSFactory::GetSupportedFormats(int, class std::vector > &) + ?SetVADMode@QTMSG711Format@QTMS@@QAEHH@Z @ 315 NONAME ; int QTMS::QTMSG711Format::SetVADMode(int) + ?getStaticMetaObject@QTMSVolumeEffect@QTMS@@SAABUQMetaObject@@XZ @ 316 NONAME ; struct QMetaObject const & QTMS::QTMSVolumeEffect::getStaticMetaObject(void) + ?qt_metacall@QTMSModemSink@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 317 NONAME ; int QTMS::QTMSModemSink::qt_metacall(enum QMetaObject::Call, int, void * *) + ?trUtf8@QTMSILBCFormat@QTMS@@SA?AVQString@@PBD0H@Z @ 318 NONAME ; class QString QTMS::QTMSILBCFormat::trUtf8(char const *, char const *, int) + ?trUtf8@QTMSDTMF@QTMS@@SA?AVQString@@PBD0@Z @ 319 NONAME ; class QString QTMS::QTMSDTMF::trUtf8(char const *, char const *) + ?tr@QTMSGlobalGainEffect@QTMS@@SA?AVQString@@PBD0@Z @ 320 NONAME ; class QString QTMS::QTMSGlobalGainEffect::tr(char const *, char const *) + ?AddEffect@QTMSStream@QTMS@@QAEHPAVQTMSEffect@2@@Z @ 321 NONAME ; int QTMS::QTMSStream::AddEffect(class QTMS::QTMSEffect *) + ?ResetFormat@QTMSStream@QTMS@@QAEHPAVQTMSFormat@2@@Z @ 322 NONAME ; int QTMS::QTMSStream::ResetFormat(class QTMS::QTMSFormat *) + ?metaObject@QTMSG711Format@QTMS@@UBEPBUQMetaObject@@XZ @ 323 NONAME ; struct QMetaObject const * QTMS::QTMSG711Format::metaObject(void) const + ??1QTMSVolumeEffect@QTMS@@UAE@XZ @ 324 NONAME ; QTMS::QTMSVolumeEffect::~QTMSVolumeEffect(void) + ?GetSupportedBitRates@QTMSFormat@QTMS@@QAEHAAV?$vector@IV?$allocator@I@std@@@std@@@Z @ 325 NONAME ; int QTMS::QTMSFormat::GetSupportedBitRates(class std::vector > &) + ?EffectsEvent@QTMSGlobalGainEffect@QTMS@@IAEXABVQTMSEffect@2@UQTMSSignalEvent@2@@Z @ 326 NONAME ; void QTMS::QTMSGlobalGainEffect::EffectsEvent(class QTMS::QTMSEffect const &, struct QTMS::QTMSSignalEvent) + ?staticMetaObject@QTMSCall@QTMS@@2UQMetaObject@@B @ 327 NONAME ; struct QMetaObject const QTMS::QTMSCall::staticMetaObject + ??1QTMSModemSource@QTMS@@UAE@XZ @ 328 NONAME ; QTMS::QTMSModemSource::~QTMSModemSource(void) + ??1QTMSClientSink@QTMS@@UAE@XZ @ 329 NONAME ; QTMS::QTMSClientSink::~QTMSClientSink(void) + ?metaObject@QTMSFactory@QTMS@@UBEPBUQMetaObject@@XZ @ 330 NONAME ; struct QMetaObject const * QTMS::QTMSFactory::metaObject(void) const + ?metaObject@QTMSInbandTone@QTMS@@UBEPBUQMetaObject@@XZ @ 331 NONAME ; struct QMetaObject const * QTMS::QTMSInbandTone::metaObject(void) const + ?trUtf8@QTMSGainEffect@QTMS@@SA?AVQString@@PBD0H@Z @ 332 NONAME ; class QString QTMS::QTMSGainEffect::trUtf8(char const *, char const *, int) + ?trUtf8@QTMSMicSource@QTMS@@SA?AVQString@@PBD0H@Z @ 333 NONAME ; class QString QTMS::QTMSMicSource::trUtf8(char const *, char const *, int) + ?GetMaxLevel@QTMSGlobalVolEffect@QTMS@@QAEHAAI@Z @ 334 NONAME ; int QTMS::QTMSGlobalVolEffect::GetMaxLevel(unsigned int &) + ??_EQTMSVolumeEffect@QTMS@@UAE@I@Z @ 335 NONAME ; QTMS::QTMSVolumeEffect::~QTMSVolumeEffect(unsigned int) + ??1QTMSG729Format@QTMS@@UAE@XZ @ 336 NONAME ; QTMS::QTMSG729Format::~QTMSG729Format(void) + ?tr@QTMSVolumeEffect@QTMS@@SA?AVQString@@PBD0@Z @ 337 NONAME ; class QString QTMS::QTMSVolumeEffect::tr(char const *, char const *) + ?GetType@QTMSMicSource@QTMS@@UAEHAAH@Z @ 338 NONAME ; int QTMS::QTMSMicSource::GetType(int &) + ?CreateEffect@QTMSFactory@QTMS@@QAEHHAAPAVQTMSEffect@2@@Z @ 339 NONAME ; int QTMS::QTMSFactory::CreateEffect(int, class QTMS::QTMSEffect * &) + ?getStaticMetaObject@QTMSCall@QTMS@@SAABUQMetaObject@@XZ @ 340 NONAME ; struct QMetaObject const & QTMS::QTMSCall::getStaticMetaObject(void) + ?metaObject@QTMSGlobalGainEffect@QTMS@@UBEPBUQMetaObject@@XZ @ 341 NONAME ; struct QMetaObject const * QTMS::QTMSGlobalGainEffect::metaObject(void) const + ??0QTMSFactory@QTMS@@AAE@XZ @ 342 NONAME ; QTMS::QTMSFactory::QTMSFactory(void) + ?GetOutput@QTMSGlobalRouting@QTMS@@QAEHAAH@Z @ 343 NONAME ; int QTMS::QTMSGlobalRouting::GetOutput(int &) + ?tr@QTMSPCMFormat@QTMS@@SA?AVQString@@PBD0@Z @ 344 NONAME ; class QString QTMS::QTMSPCMFormat::tr(char const *, char const *) + ?CreateBuffer@QTMSFactory@QTMS@@QAEHHIAAPAVQTMSBuffer@2@@Z @ 345 NONAME ; int QTMS::QTMSFactory::CreateBuffer(int, unsigned int, class QTMS::QTMSBuffer * &) + ?trUtf8@QTMSPCMFormat@QTMS@@SA?AVQString@@PBD0H@Z @ 346 NONAME ; class QString QTMS::QTMSPCMFormat::trUtf8(char const *, char const *, int) + ?qt_metacast@QTMSMicSource@QTMS@@UAEPAXPBD@Z @ 347 NONAME ; void * QTMS::QTMSMicSource::qt_metacast(char const *) + ?trUtf8@QTMSG729Format@QTMS@@SA?AVQString@@PBD0@Z @ 348 NONAME ; class QString QTMS::QTMSG729Format::trUtf8(char const *, char const *) + ?BufferProcessed@QTMSClientSink@QTMS@@QAEHPAVTMSBuffer@TMS@@@Z @ 349 NONAME ; int QTMS::QTMSClientSink::BufferProcessed(class TMS::TMSBuffer *) + ?ProcessBuffer@QTMSClientSink@QTMS@@IAEXPBVTMSBuffer@TMS@@@Z @ 350 NONAME ; void QTMS::QTMSClientSink::ProcessBuffer(class TMS::TMSBuffer const *) + ?qt_metacall@QTMSAMRFormat@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 351 NONAME ; int QTMS::QTMSAMRFormat::qt_metacall(enum QMetaObject::Call, int, void * *) + ??0QTMSInbandTone@QTMS@@IAE@XZ @ 352 NONAME ; QTMS::QTMSInbandTone::QTMSInbandTone(void) + ?RemoveEffect@QTMSStream@QTMS@@QAEHPAVQTMSEffect@2@@Z @ 353 NONAME ; int QTMS::QTMSStream::RemoveEffect(class QTMS::QTMSEffect *) + ?SetBitRate@QTMSFormat@QTMS@@QAEHI@Z @ 354 NONAME ; int QTMS::QTMSFormat::SetBitRate(unsigned int) + ?Stop@QTMSStream@QTMS@@QAEHXZ @ 355 NONAME ; int QTMS::QTMSStream::Stop(void) + ?trUtf8@QTMSCall@QTMS@@SA?AVQString@@PBD0H@Z @ 356 NONAME ; class QString QTMS::QTMSCall::trUtf8(char const *, char const *, int) + ??_EQTMSILBCFormat@QTMS@@UAE@I@Z @ 357 NONAME ; QTMS::QTMSILBCFormat::~QTMSILBCFormat(unsigned int) + ?qt_metacall@QTMSFactory@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 358 NONAME ; int QTMS::QTMSFactory::qt_metacall(enum QMetaObject::Call, int, void * *) + ?staticMetaObject@QTMSStream@QTMS@@2UQMetaObject@@B @ 359 NONAME ; struct QMetaObject const QTMS::QTMSStream::staticMetaObject + ??0QTMSPCMFormat@QTMS@@IAE@XZ @ 360 NONAME ; QTMS::QTMSPCMFormat::QTMSPCMFormat(void) + ?tr@QTMSMicSource@QTMS@@SA?AVQString@@PBD0H@Z @ 361 NONAME ; class QString QTMS::QTMSMicSource::tr(char const *, char const *, int) + ?SetLevel@QTMSGainEffect@QTMS@@QAEHI@Z @ 362 NONAME ; int QTMS::QTMSGainEffect::SetLevel(unsigned int) + ?FillBuffer@QTMSClientSource@QTMS@@IAEXAAVTMSBuffer@TMS@@@Z @ 363 NONAME ; void QTMS::QTMSClientSource::FillBuffer(class TMS::TMSBuffer &) + ?Pause@QTMSStream@QTMS@@QAEHXZ @ 364 NONAME ; int QTMS::QTMSStream::Pause(void) + ?Deinit@QTMSStream@QTMS@@QAEXXZ @ 365 NONAME ; void QTMS::QTMSStream::Deinit(void) + ?metaObject@QTMSDTMF@QTMS@@UBEPBUQMetaObject@@XZ @ 366 NONAME ; struct QMetaObject const * QTMS::QTMSDTMF::metaObject(void) const + ?GetMaxLevel@QTMSGainEffect@QTMS@@QAEHAAI@Z @ 367 NONAME ; int QTMS::QTMSGainEffect::GetMaxLevel(unsigned int &) + ?Deinit@QTMSRingTone@QTMS@@QAEHXZ @ 368 NONAME ; int QTMS::QTMSRingTone::Deinit(void) + ?tr@QTMSRingTone@QTMS@@SA?AVQString@@PBD0@Z @ 369 NONAME ; class QString QTMS::QTMSRingTone::tr(char const *, char const *) + ?Pause@QTMSRingTone@QTMS@@QAEHXZ @ 370 NONAME ; int QTMS::QTMSRingTone::Pause(void) + ?RingtoneEvent@QTMSRingTone@QTMS@@IAEXABV12@UQTMSSignalEvent@2@@Z @ 371 NONAME ; void QTMS::QTMSRingTone::RingtoneEvent(class QTMS::QTMSRingTone const &, struct QTMS::QTMSSignalEvent) + ?staticMetaObject@QTMSRingTone@QTMS@@2UQMetaObject@@B @ 372 NONAME ; struct QMetaObject const QTMS::QTMSRingTone::staticMetaObject + ?trUtf8@QTMSRingTone@QTMS@@SA?AVQString@@PBD0@Z @ 373 NONAME ; class QString QTMS::QTMSRingTone::trUtf8(char const *, char const *) + ?tr@QTMSRingTone@QTMS@@SA?AVQString@@PBD0H@Z @ 374 NONAME ; class QString QTMS::QTMSRingTone::tr(char const *, char const *, int) + ?getStaticMetaObject@QTMSRingTone@QTMS@@SAABUQMetaObject@@XZ @ 375 NONAME ; struct QMetaObject const & QTMS::QTMSRingTone::getStaticMetaObject(void) + ?qt_metacast@QTMSRingTone@QTMS@@UAEPAXPBD@Z @ 376 NONAME ; void * QTMS::QTMSRingTone::qt_metacast(char const *) + ?Stop@QTMSRingTone@QTMS@@QAEHXZ @ 377 NONAME ; int QTMS::QTMSRingTone::Stop(void) + ?Play@QTMSRingTone@QTMS@@QAEHXZ @ 378 NONAME ; int QTMS::QTMSRingTone::Play(void) + ?qt_metacall@QTMSRingTone@QTMS@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 379 NONAME ; int QTMS::QTMSRingTone::qt_metacall(enum QMetaObject::Call, int, void * *) + ?Init@QTMSRingTone@QTMS@@QAEHHPAU_GString@@0@Z @ 380 NONAME ; int QTMS::QTMSRingTone::Init(int, struct _GString *, struct _GString *) + ??1QTMSRingTone@QTMS@@UAE@XZ @ 381 NONAME ; QTMS::QTMSRingTone::~QTMSRingTone(void) + ?Mute@QTMSRingTone@QTMS@@QAEHXZ @ 382 NONAME ; int QTMS::QTMSRingTone::Mute(void) + ?metaObject@QTMSRingTone@QTMS@@UBEPBUQMetaObject@@XZ @ 383 NONAME ; struct QMetaObject const * QTMS::QTMSRingTone::metaObject(void) const + ??_EQTMSRingTone@QTMS@@UAE@I@Z @ 384 NONAME ; QTMS::QTMSRingTone::~QTMSRingTone(unsigned int) + ??0QTMSRingTone@QTMS@@IAE@XZ @ 385 NONAME ; QTMS::QTMSRingTone::QTMSRingTone(void) + ?trUtf8@QTMSRingTone@QTMS@@SA?AVQString@@PBD0H@Z @ 386 NONAME ; class QString QTMS::QTMSRingTone::trUtf8(char const *, char const *, int) + diff -r d881023c13eb -r cbb1bfb7ebfb qtms/data/create_qtms_stub_sis.bat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/data/create_qtms_stub_sis.bat Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,17 @@ +rem +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: PKG for QT Telephony Media Services (QTMS) +rem + +makesis -s qtmsapi_stub.pkg qtmsapi_stub.sis diff -r d881023c13eb -r cbb1bfb7ebfb qtms/data/qtmsapi_stub.pkg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/data/qtmsapi_stub.pkg Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,29 @@ +; +; 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: QT Telephony Multimedia Services (QTMS) +; +;File: qtms_stub.pkg + +;Languages +&EN + +;Header +#{"QTMS"},(0x10207CB3),1,0,0, TYPE=SA + +;Localised Vendor name +%{"Nokia"} + +;Unique Vendor name +:"Nokia" + diff -r d881023c13eb -r cbb1bfb7ebfb qtms/data/qtmsapi_stub.sis Binary file qtms/data/qtmsapi_stub.sis has changed diff -r d881023c13eb -r cbb1bfb7ebfb qtms/eabi/qtmsu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/eabi/qtmsu.def Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,412 @@ +EXPORTS + _ZN4QTMS10QTMSFormat10GetBitRateERj @ 1 NONAME + _ZN4QTMS10QTMSFormat10SetBitRateEj @ 2 NONAME + _ZN4QTMS10QTMSFormat20GetSupportedBitRatesERSt6vectorIjSaIjEE @ 3 NONAME + _ZN4QTMS10QTMSFormat7GetTypeERi @ 4 NONAME + _ZN4QTMS10QTMSFormatC1Ev @ 5 NONAME + _ZN4QTMS10QTMSFormatC2Ev @ 6 NONAME + _ZN4QTMS10QTMSFormatD0Ev @ 7 NONAME + _ZN4QTMS10QTMSFormatD1Ev @ 8 NONAME + _ZN4QTMS10QTMSFormatD2Ev @ 9 NONAME + _ZN4QTMS10QTMSStream10RemoveSinkEPNS_8QTMSSinkE @ 10 NONAME + _ZN4QTMS10QTMSStream11GetStreamIdEv @ 11 NONAME + _ZN4QTMS10QTMSStream11ResetFormatEPNS_10QTMSFormatE @ 12 NONAME + _ZN4QTMS10QTMSStream11qt_metacallEN11QMetaObject4CallEiPPv @ 13 NONAME + _ZN4QTMS10QTMSStream11qt_metacastEPKc @ 14 NONAME + _ZN4QTMS10QTMSStream12RemoveEffectEPNS_10QTMSEffectE @ 15 NONAME + _ZN4QTMS10QTMSStream12RemoveSourceEPNS_10QTMSSourceE @ 16 NONAME + _ZN4QTMS10QTMSStream13GetStreamTypeEv @ 17 NONAME + _ZN4QTMS10QTMSStream14TMSStreamEventERKS0_NS_15QTMSSignalEventE @ 18 NONAME + _ZN4QTMS10QTMSStream16staticMetaObjectE @ 19 NONAME DATA 16 + _ZN4QTMS10QTMSStream19getStaticMetaObjectEv @ 20 NONAME + _ZN4QTMS10QTMSStream4InitEv @ 21 NONAME + _ZN4QTMS10QTMSStream4StopEv @ 22 NONAME + _ZN4QTMS10QTMSStream5PauseEv @ 23 NONAME + _ZN4QTMS10QTMSStream5StartEv @ 24 NONAME + _ZN4QTMS10QTMSStream6DeinitEv @ 25 NONAME + _ZN4QTMS10QTMSStream7AddSinkEPNS_8QTMSSinkE @ 26 NONAME + _ZN4QTMS10QTMSStream8GetStateEv @ 27 NONAME + _ZN4QTMS10QTMSStream9AddEffectEPNS_10QTMSEffectE @ 28 NONAME + _ZN4QTMS10QTMSStream9AddSourceEPNS_10QTMSSourceE @ 29 NONAME + _ZN4QTMS10QTMSStream9SetFormatEPNS_10QTMSFormatE @ 30 NONAME + _ZN4QTMS10QTMSStreamC1Ev @ 31 NONAME + _ZN4QTMS10QTMSStreamC2Ev @ 32 NONAME + _ZN4QTMS10QTMSStreamD0Ev @ 33 NONAME + _ZN4QTMS10QTMSStreamD1Ev @ 34 NONAME + _ZN4QTMS10QTMSStreamD2Ev @ 35 NONAME + _ZN4QTMS11QTMSFactory10CreateCallEiRPNS_8QTMSCallEj @ 36 NONAME + _ZN4QTMS11QTMSFactory10CreateDTMFEiRPNS_8QTMSDTMFE @ 37 NONAME + _ZN4QTMS11QTMSFactory10CreateSinkEiRPNS_8QTMSSinkE @ 38 NONAME + _ZN4QTMS11QTMSFactory10DeleteCallERPNS_8QTMSCallE @ 39 NONAME + _ZN4QTMS11QTMSFactory10DeleteDTMFERPNS_8QTMSDTMFE @ 40 NONAME + _ZN4QTMS11QTMSFactory10DeleteSinkERPNS_8QTMSSinkE @ 41 NONAME + _ZN4QTMS11QTMSFactory11qt_metacallEN11QMetaObject4CallEiPPv @ 42 NONAME + _ZN4QTMS11QTMSFactory11qt_metacastEPKc @ 43 NONAME + _ZN4QTMS11QTMSFactory12CreateBufferEijRPNS_10QTMSBufferE @ 44 NONAME + _ZN4QTMS11QTMSFactory12CreateEffectEiRPNS_10QTMSEffectE @ 45 NONAME + _ZN4QTMS11QTMSFactory12CreateFormatEiRPNS_10QTMSFormatE @ 46 NONAME + _ZN4QTMS11QTMSFactory12CreateSourceEiRPNS_10QTMSSourceE @ 47 NONAME + _ZN4QTMS11QTMSFactory12DeleteBufferERPNS_10QTMSBufferE @ 48 NONAME + _ZN4QTMS11QTMSFactory12DeleteEffectERPNS_10QTMSEffectE @ 49 NONAME + _ZN4QTMS11QTMSFactory12DeleteFormatERPNS_10QTMSFormatE @ 50 NONAME + _ZN4QTMS11QTMSFactory12DeleteSourceERPNS_10QTMSSourceE @ 51 NONAME + _ZN4QTMS11QTMSFactory13CreateFactoryERPS0_RNS_7QTMSVerE @ 52 NONAME + _ZN4QTMS11QTMSFactory16staticMetaObjectE @ 53 NONAME DATA 16 + _ZN4QTMS11QTMSFactory19CreateGlobalRoutingERPNS_17QTMSGlobalRoutingE @ 54 NONAME + _ZN4QTMS11QTMSFactory19DeleteGlobalRoutingERPNS_17QTMSGlobalRoutingE @ 55 NONAME + _ZN4QTMS11QTMSFactory19GetSupportedFormatsEiRSt6vectorIPNS_10QTMSFormatESaIS3_EE @ 56 NONAME + _ZN4QTMS11QTMSFactory19IsCallTypeSupportedEiRi @ 57 NONAME + _ZN4QTMS11QTMSFactory19getStaticMetaObjectEv @ 58 NONAME + _ZN4QTMS11QTMSFactory20CreateRingTonePlayerERPNS_12QTMSRingToneE @ 59 NONAME + _ZN4QTMS11QTMSFactory20DeleteRingTonePlayerERPNS_12QTMSRingToneE @ 60 NONAME + _ZN4QTMS11QTMSFactory22CreateInbandTonePlayerERPNS_14QTMSInbandToneE @ 61 NONAME + _ZN4QTMS11QTMSFactory22DeleteInbandTonePlayerERPNS_14QTMSInbandToneE @ 62 NONAME + _ZN4QTMS11QTMSFactoryC1Ev @ 63 NONAME + _ZN4QTMS11QTMSFactoryC2Ev @ 64 NONAME + _ZN4QTMS11QTMSFactoryD0Ev @ 65 NONAME + _ZN4QTMS11QTMSFactoryD1Ev @ 66 NONAME + _ZN4QTMS11QTMSFactoryD2Ev @ 67 NONAME + _ZN4QTMS13QTMSAMRFormat11qt_metacallEN11QMetaObject4CallEiPPv @ 68 NONAME + _ZN4QTMS13QTMSAMRFormat11qt_metacastEPKc @ 69 NONAME + _ZN4QTMS13QTMSAMRFormat16staticMetaObjectE @ 70 NONAME DATA 16 + _ZN4QTMS13QTMSAMRFormat19getStaticMetaObjectEv @ 71 NONAME + _ZN4QTMS13QTMSAMRFormatC1Ev @ 72 NONAME + _ZN4QTMS13QTMSAMRFormatC2Ev @ 73 NONAME + _ZN4QTMS13QTMSAMRFormatD0Ev @ 74 NONAME + _ZN4QTMS13QTMSAMRFormatD1Ev @ 75 NONAME + _ZN4QTMS13QTMSAMRFormatD2Ev @ 76 NONAME + _ZN4QTMS13QTMSMicSource11qt_metacallEN11QMetaObject4CallEiPPv @ 77 NONAME + _ZN4QTMS13QTMSMicSource11qt_metacastEPKc @ 78 NONAME + _ZN4QTMS13QTMSMicSource16staticMetaObjectE @ 79 NONAME DATA 16 + _ZN4QTMS13QTMSMicSource19getStaticMetaObjectEv @ 80 NONAME + _ZN4QTMS13QTMSMicSource7GetTypeERi @ 81 NONAME + _ZN4QTMS13QTMSMicSourceC1Ev @ 82 NONAME + _ZN4QTMS13QTMSMicSourceC2Ev @ 83 NONAME + _ZN4QTMS13QTMSMicSourceD0Ev @ 84 NONAME + _ZN4QTMS13QTMSMicSourceD1Ev @ 85 NONAME + _ZN4QTMS13QTMSMicSourceD2Ev @ 86 NONAME + _ZN4QTMS13QTMSModemSink11qt_metacallEN11QMetaObject4CallEiPPv @ 87 NONAME + _ZN4QTMS13QTMSModemSink11qt_metacastEPKc @ 88 NONAME + _ZN4QTMS13QTMSModemSink16staticMetaObjectE @ 89 NONAME DATA 16 + _ZN4QTMS13QTMSModemSink19getStaticMetaObjectEv @ 90 NONAME + _ZN4QTMS13QTMSModemSink7GetTypeERi @ 91 NONAME + _ZN4QTMS13QTMSModemSinkC1Ev @ 92 NONAME + _ZN4QTMS13QTMSModemSinkC2Ev @ 93 NONAME + _ZN4QTMS13QTMSModemSinkD0Ev @ 94 NONAME + _ZN4QTMS13QTMSModemSinkD1Ev @ 95 NONAME + _ZN4QTMS13QTMSModemSinkD2Ev @ 96 NONAME + _ZN4QTMS13QTMSPCMFormat11qt_metacallEN11QMetaObject4CallEiPPv @ 97 NONAME + _ZN4QTMS13QTMSPCMFormat11qt_metacastEPKc @ 98 NONAME + _ZN4QTMS13QTMSPCMFormat16staticMetaObjectE @ 99 NONAME DATA 16 + _ZN4QTMS13QTMSPCMFormat19getStaticMetaObjectEv @ 100 NONAME + _ZN4QTMS13QTMSPCMFormatC1Ev @ 101 NONAME + _ZN4QTMS13QTMSPCMFormatC2Ev @ 102 NONAME + _ZN4QTMS13QTMSPCMFormatD0Ev @ 103 NONAME + _ZN4QTMS13QTMSPCMFormatD1Ev @ 104 NONAME + _ZN4QTMS13QTMSPCMFormatD2Ev @ 105 NONAME + _ZN4QTMS14QTMSClientSink11qt_metacallEN11QMetaObject4CallEiPPv @ 106 NONAME + _ZN4QTMS14QTMSClientSink11qt_metacastEPKc @ 107 NONAME + _ZN4QTMS14QTMSClientSink13ProcessBufferEPKN3TMS9TMSBufferE @ 108 NONAME + _ZN4QTMS14QTMSClientSink15BufferProcessedEPN3TMS9TMSBufferE @ 109 NONAME + _ZN4QTMS14QTMSClientSink16staticMetaObjectE @ 110 NONAME DATA 16 + _ZN4QTMS14QTMSClientSink19getStaticMetaObjectEv @ 111 NONAME + _ZN4QTMS14QTMSClientSink7GetTypeERi @ 112 NONAME + _ZN4QTMS14QTMSClientSinkC1Ev @ 113 NONAME + _ZN4QTMS14QTMSClientSinkC2Ev @ 114 NONAME + _ZN4QTMS14QTMSClientSinkD0Ev @ 115 NONAME + _ZN4QTMS14QTMSClientSinkD1Ev @ 116 NONAME + _ZN4QTMS14QTMSClientSinkD2Ev @ 117 NONAME + _ZN4QTMS14QTMSG711Format10GetVADModeERi @ 118 NONAME + _ZN4QTMS14QTMSG711Format10SetVADModeEi @ 119 NONAME + _ZN4QTMS14QTMSG711Format11qt_metacallEN11QMetaObject4CallEiPPv @ 120 NONAME + _ZN4QTMS14QTMSG711Format11qt_metacastEPKc @ 121 NONAME + _ZN4QTMS14QTMSG711Format16staticMetaObjectE @ 122 NONAME DATA 16 + _ZN4QTMS14QTMSG711Format19getStaticMetaObjectEv @ 123 NONAME + _ZN4QTMS14QTMSG711Format6GetCNGERi @ 124 NONAME + _ZN4QTMS14QTMSG711Format6GetPlcERi @ 125 NONAME + _ZN4QTMS14QTMSG711Format6SetCNGEi @ 126 NONAME + _ZN4QTMS14QTMSG711Format6SetPlcEi @ 127 NONAME + _ZN4QTMS14QTMSG711Format7GetModeERi @ 128 NONAME + _ZN4QTMS14QTMSG711Format7SetModeEi @ 129 NONAME + _ZN4QTMS14QTMSG711FormatC1Ev @ 130 NONAME + _ZN4QTMS14QTMSG711FormatC2Ev @ 131 NONAME + _ZN4QTMS14QTMSG711FormatD0Ev @ 132 NONAME + _ZN4QTMS14QTMSG711FormatD1Ev @ 133 NONAME + _ZN4QTMS14QTMSG711FormatD2Ev @ 134 NONAME + _ZN4QTMS14QTMSG729Format10GetVADModeERi @ 135 NONAME + _ZN4QTMS14QTMSG729Format10SetVADModeEi @ 136 NONAME + _ZN4QTMS14QTMSG729Format11qt_metacallEN11QMetaObject4CallEiPPv @ 137 NONAME + _ZN4QTMS14QTMSG729Format11qt_metacastEPKc @ 138 NONAME + _ZN4QTMS14QTMSG729Format16staticMetaObjectE @ 139 NONAME DATA 16 + _ZN4QTMS14QTMSG729Format19getStaticMetaObjectEv @ 140 NONAME + _ZN4QTMS14QTMSG729FormatC1Ev @ 141 NONAME + _ZN4QTMS14QTMSG729FormatC2Ev @ 142 NONAME + _ZN4QTMS14QTMSG729FormatD0Ev @ 143 NONAME + _ZN4QTMS14QTMSG729FormatD1Ev @ 144 NONAME + _ZN4QTMS14QTMSG729FormatD2Ev @ 145 NONAME + _ZN4QTMS14QTMSGainEffect11GetMaxLevelERj @ 146 NONAME + _ZN4QTMS14QTMSGainEffect11qt_metacallEN11QMetaObject4CallEiPPv @ 147 NONAME + _ZN4QTMS14QTMSGainEffect11qt_metacastEPKc @ 148 NONAME + _ZN4QTMS14QTMSGainEffect12EffectsEventERKNS_10QTMSEffectENS_15QTMSSignalEventE @ 149 NONAME + _ZN4QTMS14QTMSGainEffect16staticMetaObjectE @ 150 NONAME DATA 16 + _ZN4QTMS14QTMSGainEffect19getStaticMetaObjectEv @ 151 NONAME + _ZN4QTMS14QTMSGainEffect7GetTypeERi @ 152 NONAME + _ZN4QTMS14QTMSGainEffect8GetLevelERj @ 153 NONAME + _ZN4QTMS14QTMSGainEffect8SetLevelEj @ 154 NONAME + _ZN4QTMS14QTMSGainEffectC1Ev @ 155 NONAME + _ZN4QTMS14QTMSGainEffectC2Ev @ 156 NONAME + _ZN4QTMS14QTMSGainEffectD0Ev @ 157 NONAME + _ZN4QTMS14QTMSGainEffectD1Ev @ 158 NONAME + _ZN4QTMS14QTMSGainEffectD2Ev @ 159 NONAME + _ZN4QTMS14QTMSILBCFormat10GetVADModeERi @ 160 NONAME + _ZN4QTMS14QTMSILBCFormat10SetVADModeEi @ 161 NONAME + _ZN4QTMS14QTMSILBCFormat11qt_metacallEN11QMetaObject4CallEiPPv @ 162 NONAME + _ZN4QTMS14QTMSILBCFormat11qt_metacastEPKc @ 163 NONAME + _ZN4QTMS14QTMSILBCFormat16staticMetaObjectE @ 164 NONAME DATA 16 + _ZN4QTMS14QTMSILBCFormat19getStaticMetaObjectEv @ 165 NONAME + _ZN4QTMS14QTMSILBCFormat6GetCNGERi @ 166 NONAME + _ZN4QTMS14QTMSILBCFormat6SetCNGEi @ 167 NONAME + _ZN4QTMS14QTMSILBCFormat7GetModeERi @ 168 NONAME + _ZN4QTMS14QTMSILBCFormat7SetModeEi @ 169 NONAME + _ZN4QTMS14QTMSILBCFormatC1Ev @ 170 NONAME + _ZN4QTMS14QTMSILBCFormatC2Ev @ 171 NONAME + _ZN4QTMS14QTMSILBCFormatD0Ev @ 172 NONAME + _ZN4QTMS14QTMSILBCFormatD1Ev @ 173 NONAME + _ZN4QTMS14QTMSILBCFormatD2Ev @ 174 NONAME + _ZN4QTMS14QTMSInbandTone11qt_metacallEN11QMetaObject4CallEiPPv @ 175 NONAME + _ZN4QTMS14QTMSInbandTone11qt_metacastEPKc @ 176 NONAME + _ZN4QTMS14QTMSInbandTone15InbandToneEventERKS0_NS_15QTMSSignalEventE @ 177 NONAME + _ZN4QTMS14QTMSInbandTone16staticMetaObjectE @ 178 NONAME DATA 16 + _ZN4QTMS14QTMSInbandTone19getStaticMetaObjectEv @ 179 NONAME + _ZN4QTMS14QTMSInbandTone4StopEv @ 180 NONAME + _ZN4QTMS14QTMSInbandTone5StartEi @ 181 NONAME + _ZN4QTMS14QTMSInbandToneC1Ev @ 182 NONAME + _ZN4QTMS14QTMSInbandToneC2Ev @ 183 NONAME + _ZN4QTMS14QTMSInbandToneD0Ev @ 184 NONAME + _ZN4QTMS14QTMSInbandToneD1Ev @ 185 NONAME + _ZN4QTMS14QTMSInbandToneD2Ev @ 186 NONAME + _ZN4QTMS15QTMSModemSource11qt_metacallEN11QMetaObject4CallEiPPv @ 187 NONAME + _ZN4QTMS15QTMSModemSource11qt_metacastEPKc @ 188 NONAME + _ZN4QTMS15QTMSModemSource16staticMetaObjectE @ 189 NONAME DATA 16 + _ZN4QTMS15QTMSModemSource19getStaticMetaObjectEv @ 190 NONAME + _ZN4QTMS15QTMSModemSource7GetTypeERi @ 191 NONAME + _ZN4QTMS15QTMSModemSourceC1Ev @ 192 NONAME + _ZN4QTMS15QTMSModemSourceC2Ev @ 193 NONAME + _ZN4QTMS15QTMSModemSourceD0Ev @ 194 NONAME + _ZN4QTMS15QTMSModemSourceD1Ev @ 195 NONAME + _ZN4QTMS15QTMSModemSourceD2Ev @ 196 NONAME + _ZN4QTMS15QTMSSpeakerSink11qt_metacallEN11QMetaObject4CallEiPPv @ 197 NONAME + _ZN4QTMS15QTMSSpeakerSink11qt_metacastEPKc @ 198 NONAME + _ZN4QTMS15QTMSSpeakerSink16staticMetaObjectE @ 199 NONAME DATA 16 + _ZN4QTMS15QTMSSpeakerSink19getStaticMetaObjectEv @ 200 NONAME + _ZN4QTMS15QTMSSpeakerSink7GetTypeERi @ 201 NONAME + _ZN4QTMS15QTMSSpeakerSinkC1Ev @ 202 NONAME + _ZN4QTMS15QTMSSpeakerSinkC2Ev @ 203 NONAME + _ZN4QTMS15QTMSSpeakerSinkD0Ev @ 204 NONAME + _ZN4QTMS15QTMSSpeakerSinkD1Ev @ 205 NONAME + _ZN4QTMS15QTMSSpeakerSinkD2Ev @ 206 NONAME + _ZN4QTMS16QTMSClientSource10FillBufferERN3TMS9TMSBufferE @ 207 NONAME + _ZN4QTMS16QTMSClientSource11qt_metacallEN11QMetaObject4CallEiPPv @ 208 NONAME + _ZN4QTMS16QTMSClientSource11qt_metacastEPKc @ 209 NONAME + _ZN4QTMS16QTMSClientSource12BufferFilledERN3TMS9TMSBufferE @ 210 NONAME + _ZN4QTMS16QTMSClientSource13ProcessBufferEPN3TMS9TMSBufferE @ 211 NONAME + _ZN4QTMS16QTMSClientSource14GetEnqueueModeERi @ 212 NONAME + _ZN4QTMS16QTMSClientSource14SetEnqueueModeEi @ 213 NONAME + _ZN4QTMS16QTMSClientSource15BufferProcessedEPKN3TMS9TMSBufferEi @ 214 NONAME + _ZN4QTMS16QTMSClientSource16staticMetaObjectE @ 215 NONAME DATA 16 + _ZN4QTMS16QTMSClientSource19getStaticMetaObjectEv @ 216 NONAME + _ZN4QTMS16QTMSClientSource5FlushEv @ 217 NONAME + _ZN4QTMS16QTMSClientSource7GetTypeERi @ 218 NONAME + _ZN4QTMS16QTMSClientSourceC1Ev @ 219 NONAME + _ZN4QTMS16QTMSClientSourceC2Ev @ 220 NONAME + _ZN4QTMS16QTMSClientSourceD0Ev @ 221 NONAME + _ZN4QTMS16QTMSClientSourceD1Ev @ 222 NONAME + _ZN4QTMS16QTMSClientSourceD2Ev @ 223 NONAME + _ZN4QTMS16QTMSVolumeEffect11GetMaxLevelERj @ 224 NONAME + _ZN4QTMS16QTMSVolumeEffect11qt_metacallEN11QMetaObject4CallEiPPv @ 225 NONAME + _ZN4QTMS16QTMSVolumeEffect11qt_metacastEPKc @ 226 NONAME + _ZN4QTMS16QTMSVolumeEffect12EffectsEventERKNS_10QTMSEffectENS_15QTMSSignalEventE @ 227 NONAME + _ZN4QTMS16QTMSVolumeEffect16staticMetaObjectE @ 228 NONAME DATA 16 + _ZN4QTMS16QTMSVolumeEffect19getStaticMetaObjectEv @ 229 NONAME + _ZN4QTMS16QTMSVolumeEffect7GetTypeERi @ 230 NONAME + _ZN4QTMS16QTMSVolumeEffect8GetLevelERj @ 231 NONAME + _ZN4QTMS16QTMSVolumeEffect8SetLevelEj @ 232 NONAME + _ZN4QTMS16QTMSVolumeEffectC1Ev @ 233 NONAME + _ZN4QTMS16QTMSVolumeEffectC2Ev @ 234 NONAME + _ZN4QTMS16QTMSVolumeEffectD0Ev @ 235 NONAME + _ZN4QTMS16QTMSVolumeEffectD1Ev @ 236 NONAME + _ZN4QTMS16QTMSVolumeEffectD2Ev @ 237 NONAME + _ZN4QTMS17QTMSGlobalRouting11qt_metacallEN11QMetaObject4CallEiPPv @ 238 NONAME + _ZN4QTMS17QTMSGlobalRouting11qt_metacastEPKc @ 239 NONAME + _ZN4QTMS17QTMSGlobalRouting16staticMetaObjectE @ 240 NONAME DATA 16 + _ZN4QTMS17QTMSGlobalRouting17GetPreviousOutputERi @ 241 NONAME + _ZN4QTMS17QTMSGlobalRouting18GlobalRoutingEventERKS0_NS_15QTMSSignalEventEi @ 242 NONAME + _ZN4QTMS17QTMSGlobalRouting19GetAvailableOutputsERSt6vectorIjSaIjEE @ 243 NONAME + _ZN4QTMS17QTMSGlobalRouting19getStaticMetaObjectEv @ 244 NONAME + _ZN4QTMS17QTMSGlobalRouting9GetOutputERi @ 245 NONAME + _ZN4QTMS17QTMSGlobalRouting9SetOutputEi @ 246 NONAME + _ZN4QTMS17QTMSGlobalRoutingC1Ev @ 247 NONAME + _ZN4QTMS17QTMSGlobalRoutingC2Ev @ 248 NONAME + _ZN4QTMS17QTMSGlobalRoutingD0Ev @ 249 NONAME + _ZN4QTMS17QTMSGlobalRoutingD1Ev @ 250 NONAME + _ZN4QTMS17QTMSGlobalRoutingD2Ev @ 251 NONAME + _ZN4QTMS19QTMSGlobalVolEffect11GetMaxLevelERj @ 252 NONAME + _ZN4QTMS19QTMSGlobalVolEffect11qt_metacallEN11QMetaObject4CallEiPPv @ 253 NONAME + _ZN4QTMS19QTMSGlobalVolEffect11qt_metacastEPKc @ 254 NONAME + _ZN4QTMS19QTMSGlobalVolEffect12EffectsEventERKNS_10QTMSEffectENS_15QTMSSignalEventE @ 255 NONAME + _ZN4QTMS19QTMSGlobalVolEffect16staticMetaObjectE @ 256 NONAME DATA 16 + _ZN4QTMS19QTMSGlobalVolEffect19getStaticMetaObjectEv @ 257 NONAME + _ZN4QTMS19QTMSGlobalVolEffect7GetTypeERi @ 258 NONAME + _ZN4QTMS19QTMSGlobalVolEffect8GetLevelERj @ 259 NONAME + _ZN4QTMS19QTMSGlobalVolEffect8SetLevelEj @ 260 NONAME + _ZN4QTMS19QTMSGlobalVolEffectC1Ev @ 261 NONAME + _ZN4QTMS19QTMSGlobalVolEffectC2Ev @ 262 NONAME + _ZN4QTMS19QTMSGlobalVolEffectD0Ev @ 263 NONAME + _ZN4QTMS19QTMSGlobalVolEffectD1Ev @ 264 NONAME + _ZN4QTMS19QTMSGlobalVolEffectD2Ev @ 265 NONAME + _ZN4QTMS20QTMSGlobalGainEffect11GetMaxLevelERj @ 266 NONAME + _ZN4QTMS20QTMSGlobalGainEffect11qt_metacallEN11QMetaObject4CallEiPPv @ 267 NONAME + _ZN4QTMS20QTMSGlobalGainEffect11qt_metacastEPKc @ 268 NONAME + _ZN4QTMS20QTMSGlobalGainEffect12EffectsEventERKNS_10QTMSEffectENS_15QTMSSignalEventE @ 269 NONAME + _ZN4QTMS20QTMSGlobalGainEffect16staticMetaObjectE @ 270 NONAME DATA 16 + _ZN4QTMS20QTMSGlobalGainEffect19getStaticMetaObjectEv @ 271 NONAME + _ZN4QTMS20QTMSGlobalGainEffect7GetTypeERi @ 272 NONAME + _ZN4QTMS20QTMSGlobalGainEffect8GetLevelERj @ 273 NONAME + _ZN4QTMS20QTMSGlobalGainEffect8SetLevelEj @ 274 NONAME + _ZN4QTMS20QTMSGlobalGainEffectC1Ev @ 275 NONAME + _ZN4QTMS20QTMSGlobalGainEffectC2Ev @ 276 NONAME + _ZN4QTMS20QTMSGlobalGainEffectD0Ev @ 277 NONAME + _ZN4QTMS20QTMSGlobalGainEffectD1Ev @ 278 NONAME + _ZN4QTMS20QTMSGlobalGainEffectD2Ev @ 279 NONAME + _ZN4QTMS8QTMSCall11GetCallTypeEv @ 280 NONAME + _ZN4QTMS8QTMSCall11qt_metacallEN11QMetaObject4CallEiPPv @ 281 NONAME + _ZN4QTMS8QTMSCall11qt_metacastEPKc @ 282 NONAME + _ZN4QTMS8QTMSCall12CreateStreamEiRPNS_10QTMSStreamE @ 283 NONAME + _ZN4QTMS8QTMSCall12DeleteStreamERPNS_10QTMSStreamE @ 284 NONAME + _ZN4QTMS8QTMSCall16GetCallContextIdERj @ 285 NONAME + _ZN4QTMS8QTMSCall16staticMetaObjectE @ 286 NONAME DATA 16 + _ZN4QTMS8QTMSCall19getStaticMetaObjectEv @ 287 NONAME + _ZN4QTMS8QTMSCallC1Ev @ 288 NONAME + _ZN4QTMS8QTMSCallC2Ev @ 289 NONAME + _ZN4QTMS8QTMSCallD0Ev @ 290 NONAME + _ZN4QTMS8QTMSCallD1Ev @ 291 NONAME + _ZN4QTMS8QTMSCallD2Ev @ 292 NONAME + _ZN4QTMS8QTMSDTMF11qt_metacallEN11QMetaObject4CallEiPPv @ 293 NONAME + _ZN4QTMS8QTMSDTMF11qt_metacastEPKc @ 294 NONAME + _ZN4QTMS8QTMSDTMF16staticMetaObjectE @ 295 NONAME DATA 16 + _ZN4QTMS8QTMSDTMF19getStaticMetaObjectEv @ 296 NONAME + _ZN4QTMS8QTMSDTMF25ContinueDTMFStringSendingEi @ 297 NONAME + _ZN4QTMS8QTMSDTMF4StopEv @ 298 NONAME + _ZN4QTMS8QTMSDTMF5StartEv @ 299 NONAME + _ZN4QTMS8QTMSDTMF7SetToneEP8_GString @ 300 NONAME + _ZN4QTMS8QTMSDTMF9DTMFEventERKS0_NS_15QTMSSignalEventE @ 301 NONAME + _ZN4QTMS8QTMSDTMFC1Ev @ 302 NONAME + _ZN4QTMS8QTMSDTMFC2Ev @ 303 NONAME + _ZN4QTMS8QTMSDTMFD0Ev @ 304 NONAME + _ZN4QTMS8QTMSDTMFD1Ev @ 305 NONAME + _ZN4QTMS8QTMSDTMFD2Ev @ 306 NONAME + _ZNK4QTMS10QTMSStream10metaObjectEv @ 307 NONAME + _ZNK4QTMS11QTMSFactory10metaObjectEv @ 308 NONAME + _ZNK4QTMS13QTMSAMRFormat10metaObjectEv @ 309 NONAME + _ZNK4QTMS13QTMSMicSource10metaObjectEv @ 310 NONAME + _ZNK4QTMS13QTMSModemSink10metaObjectEv @ 311 NONAME + _ZNK4QTMS13QTMSPCMFormat10metaObjectEv @ 312 NONAME + _ZNK4QTMS14QTMSClientSink10metaObjectEv @ 313 NONAME + _ZNK4QTMS14QTMSG711Format10metaObjectEv @ 314 NONAME + _ZNK4QTMS14QTMSG729Format10metaObjectEv @ 315 NONAME + _ZNK4QTMS14QTMSGainEffect10metaObjectEv @ 316 NONAME + _ZNK4QTMS14QTMSILBCFormat10metaObjectEv @ 317 NONAME + _ZNK4QTMS14QTMSInbandTone10metaObjectEv @ 318 NONAME + _ZNK4QTMS15QTMSModemSource10metaObjectEv @ 319 NONAME + _ZNK4QTMS15QTMSSpeakerSink10metaObjectEv @ 320 NONAME + _ZNK4QTMS16QTMSClientSource10metaObjectEv @ 321 NONAME + _ZNK4QTMS16QTMSVolumeEffect10metaObjectEv @ 322 NONAME + _ZNK4QTMS17QTMSGlobalRouting10metaObjectEv @ 323 NONAME + _ZNK4QTMS19QTMSGlobalVolEffect10metaObjectEv @ 324 NONAME + _ZNK4QTMS20QTMSGlobalGainEffect10metaObjectEv @ 325 NONAME + _ZNK4QTMS8QTMSCall10metaObjectEv @ 326 NONAME + _ZNK4QTMS8QTMSDTMF10metaObjectEv @ 327 NONAME + _ZTIN4QTMS10QTMSFormatE @ 328 NONAME + _ZTIN4QTMS10QTMSStreamE @ 329 NONAME + _ZTIN4QTMS11QTMSFactoryE @ 330 NONAME + _ZTIN4QTMS13QTMSAMRFormatE @ 331 NONAME + _ZTIN4QTMS13QTMSMicSourceE @ 332 NONAME + _ZTIN4QTMS13QTMSModemSinkE @ 333 NONAME + _ZTIN4QTMS13QTMSPCMFormatE @ 334 NONAME + _ZTIN4QTMS14QTMSClientSinkE @ 335 NONAME + _ZTIN4QTMS14QTMSG711FormatE @ 336 NONAME + _ZTIN4QTMS14QTMSG729FormatE @ 337 NONAME + _ZTIN4QTMS14QTMSGainEffectE @ 338 NONAME + _ZTIN4QTMS14QTMSILBCFormatE @ 339 NONAME + _ZTIN4QTMS14QTMSInbandToneE @ 340 NONAME + _ZTIN4QTMS15QTMSModemSourceE @ 341 NONAME + _ZTIN4QTMS15QTMSSpeakerSinkE @ 342 NONAME + _ZTIN4QTMS16QTMSClientSourceE @ 343 NONAME + _ZTIN4QTMS16QTMSVolumeEffectE @ 344 NONAME + _ZTIN4QTMS17QTMSGlobalRoutingE @ 345 NONAME + _ZTIN4QTMS19QTMSGlobalVolEffectE @ 346 NONAME + _ZTIN4QTMS20QTMSGlobalGainEffectE @ 347 NONAME + _ZTIN4QTMS8QTMSCallE @ 348 NONAME + _ZTIN4QTMS8QTMSDTMFE @ 349 NONAME + _ZTVN4QTMS10QTMSFormatE @ 350 NONAME + _ZTVN4QTMS10QTMSStreamE @ 351 NONAME + _ZTVN4QTMS11QTMSFactoryE @ 352 NONAME + _ZTVN4QTMS13QTMSAMRFormatE @ 353 NONAME + _ZTVN4QTMS13QTMSMicSourceE @ 354 NONAME + _ZTVN4QTMS13QTMSModemSinkE @ 355 NONAME + _ZTVN4QTMS13QTMSPCMFormatE @ 356 NONAME + _ZTVN4QTMS14QTMSClientSinkE @ 357 NONAME + _ZTVN4QTMS14QTMSG711FormatE @ 358 NONAME + _ZTVN4QTMS14QTMSG729FormatE @ 359 NONAME + _ZTVN4QTMS14QTMSGainEffectE @ 360 NONAME + _ZTVN4QTMS14QTMSILBCFormatE @ 361 NONAME + _ZTVN4QTMS14QTMSInbandToneE @ 362 NONAME + _ZTVN4QTMS15QTMSModemSourceE @ 363 NONAME + _ZTVN4QTMS15QTMSSpeakerSinkE @ 364 NONAME + _ZTVN4QTMS16QTMSClientSourceE @ 365 NONAME + _ZTVN4QTMS16QTMSVolumeEffectE @ 366 NONAME + _ZTVN4QTMS17QTMSGlobalRoutingE @ 367 NONAME + _ZTVN4QTMS19QTMSGlobalVolEffectE @ 368 NONAME + _ZTVN4QTMS20QTMSGlobalGainEffectE @ 369 NONAME + _ZTVN4QTMS8QTMSCallE @ 370 NONAME + _ZTVN4QTMS8QTMSDTMFE @ 371 NONAME + _ZThn8_N4QTMS13QTMSAMRFormatD0Ev @ 372 NONAME + _ZThn8_N4QTMS13QTMSAMRFormatD1Ev @ 373 NONAME + _ZThn8_N4QTMS13QTMSMicSource7GetTypeERi @ 374 NONAME + _ZThn8_N4QTMS13QTMSModemSink7GetTypeERi @ 375 NONAME + _ZThn8_N4QTMS13QTMSPCMFormatD0Ev @ 376 NONAME + _ZThn8_N4QTMS13QTMSPCMFormatD1Ev @ 377 NONAME + _ZThn8_N4QTMS14QTMSClientSink7GetTypeERi @ 378 NONAME + _ZThn8_N4QTMS14QTMSG711FormatD0Ev @ 379 NONAME + _ZThn8_N4QTMS14QTMSG711FormatD1Ev @ 380 NONAME + _ZThn8_N4QTMS14QTMSG729FormatD0Ev @ 381 NONAME + _ZThn8_N4QTMS14QTMSG729FormatD1Ev @ 382 NONAME + _ZThn8_N4QTMS14QTMSGainEffect7GetTypeERi @ 383 NONAME + _ZThn8_N4QTMS14QTMSILBCFormatD0Ev @ 384 NONAME + _ZThn8_N4QTMS14QTMSILBCFormatD1Ev @ 385 NONAME + _ZThn8_N4QTMS15QTMSModemSource7GetTypeERi @ 386 NONAME + _ZThn8_N4QTMS15QTMSSpeakerSink7GetTypeERi @ 387 NONAME + _ZThn8_N4QTMS16QTMSClientSource7GetTypeERi @ 388 NONAME + _ZThn8_N4QTMS16QTMSVolumeEffect7GetTypeERi @ 389 NONAME + _ZThn8_N4QTMS19QTMSGlobalVolEffect7GetTypeERi @ 390 NONAME + _ZThn8_N4QTMS20QTMSGlobalGainEffect7GetTypeERi @ 391 NONAME + _ZN4QTMS12QTMSRingTone11qt_metacallEN11QMetaObject4CallEiPPv @ 392 NONAME + _ZN4QTMS12QTMSRingTone11qt_metacastEPKc @ 393 NONAME + _ZN4QTMS12QTMSRingTone13RingtoneEventERKS0_NS_15QTMSSignalEventE @ 394 NONAME + _ZN4QTMS12QTMSRingTone16staticMetaObjectE @ 395 NONAME DATA 16 + _ZN4QTMS12QTMSRingTone19getStaticMetaObjectEv @ 396 NONAME + _ZN4QTMS12QTMSRingTone4InitEiP8_GStringS2_ @ 397 NONAME + _ZN4QTMS12QTMSRingTone4MuteEv @ 398 NONAME + _ZN4QTMS12QTMSRingTone4PlayEv @ 399 NONAME + _ZN4QTMS12QTMSRingTone4StopEv @ 400 NONAME + _ZN4QTMS12QTMSRingTone5PauseEv @ 401 NONAME + _ZN4QTMS12QTMSRingTone6DeinitEv @ 402 NONAME + _ZN4QTMS12QTMSRingToneC1Ev @ 403 NONAME + _ZN4QTMS12QTMSRingToneC2Ev @ 404 NONAME + _ZN4QTMS12QTMSRingToneD0Ev @ 405 NONAME + _ZN4QTMS12QTMSRingToneD1Ev @ 406 NONAME + _ZN4QTMS12QTMSRingToneD2Ev @ 407 NONAME + _ZNK4QTMS12QTMSRingTone10metaObjectEv @ 408 NONAME + _ZTIN4QTMS12QTMSRingToneE @ 409 NONAME + _ZTVN4QTMS12QTMSRingToneE @ 410 NONAME + diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsamrimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsamrimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_AMR_FORMAT_IMPL_H +#define QTMS_AMR_FORMAT_IMPL_H + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +// Class declaration +class QTMSAMRFormatImpl : public QTMSAMRFormat + { +public: + + static gint Create(QTMSFormat*& qformat, TMS::TMSFormat*& tmsformat); + virtual ~QTMSAMRFormatImpl(); + + gint GetFormat(TMS::TMSFormat*& fmt); + + // From QTMSFormat + gint GetType(QTMSFormatType& fmttype); + +private: + QTMSAMRFormatImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_AMR_FORMAT_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsbufferimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsbufferimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_BUFFER_IMPL_H +#define QTMS_BUFFER_IMPL_H + +#include + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSBuffer; + +// TMSBufferImpl class +class QTMSBufferImpl + { +public: + static gint Create(QTMSBufferType ctype, guint size, + QTMSBuffer*& tmsbuffer); + static gint Delete(QTMSBuffer*& tmsbuffer); + }; + +} //namespace QTMS + +#endif // QTMS_BUFFER_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmscallimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmscallimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_CALL_IMPL_H +#define QTMS_CALL_IMPL_H + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSCall; +} + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSStream; +class QTMSDTMF; +class QTMSRingTone; + +// QTMSCallImpl class +class QTMSCallImpl : public QTMSCall + { +public: + static gint Create(QTMSCall*& qtmscall, TMS::TMSCall*& tmscall); + + virtual ~QTMSCallImpl(); + + // From QTMSCallBody + // QTMSCallType GetCallType(); + // gint GetCallContextId(guint& ctxid); + // gint CreateStream(QTMSStreamType type, QTMSStream*& strm); + // gint DeleteStream(QTMSStream*& strm); + +private: + // TMS::TMSCall* iTmsCall; + QTMSCallImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_CALL_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsclientsinkimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsclientsinkimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_CLIENT_SINK_IMPL_H +#define QTMS_CLIENT_SINK_IMPL_H + +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSBuffer; +class TMSSink; +} + +namespace QTMS { + +// QTMSClientSinkImpl class +class QTMSClientSinkImpl : public QTMSClientSink, + public TMS::TMSClientSinkObserver + { +public: + static gint Create(QTMSSink*& qsink, TMS::TMSSink*& tmsclientsink); + virtual ~QTMSClientSinkImpl(); + + gint AddObserver(TMS::TMSClientSinkObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSClientSinkObserver& obsrvr); + + gint GetSink(TMS::TMSSink*& tmssink); + + // From TMSClientSinkObserver + void ProcessBuffer(const TMS::TMSBuffer* buffer); + +private: + QTMSClientSinkImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_CLIENT_SINK_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsclientsourceimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsclientsourceimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_CLIENT_SOURCE_IMPL_H +#define QTMS_CLIENT_SOURCE_IMPL_H + +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSBuffer; +class TMSSource; +} + +namespace QTMS { + +// QTMSClientSourceImpl class +class QTMSClientSourceImpl : public QTMSClientSource, + public TMS::TMSClientSourceObserver + { +public: + + static gint Create(QTMSSource*& qsource, TMS::TMSSource*& tmssource); + virtual ~QTMSClientSourceImpl(); + + gint AddObserver(TMS::TMSClientSourceObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSClientSourceObserver& obsrvr); + + gint GetSource(TMS::TMSSource*& tmssource); + + //From TMSClientSourceObserver + void FillBuffer(TMS::TMSBuffer& buffer); + void BufferProcessed(const TMS::TMSBuffer* buffer, gint reason); + +private: + QTMSClientSourceImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_CLIENT_SOURCE_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsdtmfimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsdtmfimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_DTMF_IMPL_H +#define QTMS_DTMF_IMPL_H + +#include +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSDTMF; +} + +namespace QTMS { + +// QTMSDTMFImpl class +class QTMSDTMFImpl : public QTMSDTMF, + public TMS::TMSDTMFObserver + { +public: + static gint Create(QTMSDTMF*& qdtmf, TMS::TMSDTMF*& tmsdtmf); + virtual ~QTMSDTMFImpl(); + + gint AddObserver(TMS::TMSDTMFObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSDTMFObserver& obsrvr); + + //from TMS::TMSDTMFObserver + void DTMFEvent(const TMS::TMSDTMF& dtmf, TMS::TMSSignalEvent event); + +private: + QTMSDTMFImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_DTMF_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsfactoryimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsfactoryimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMSFACTORYIMPL_H_ +#define QTMSFACTORYIMPL_H_ + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFactory; +} + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSCall; +class QTMSFormat; +class QTMSEffect; +class QTMSBuffer; +class QTMSSource; +class QTMSSink; +class QTMSGlobalRouting; +class QTMSRTPSession; +class QTMSDTMF; +class QTMSRingTone; +class QTMSInbandTone; + +// CLASS DECLARATION +class QTMSFactoryImpl + { +public: + QTMSFactoryImpl(); + virtual ~QTMSFactoryImpl(); + + gint CreateCall(QTMSCallType ctype, QTMSCall*& QTMScall, guint ctxid); + gint DeleteCall(QTMSCall*& QTMSct); + gint IsCallTypeSupported(QTMSCallType ctype, gboolean& flag); + gint GetSupportedFormats(const QTMSStreamType strmtype, + FormatVector& fmtlist); + gint CreateFormat(QTMSFormatType fmttype, QTMSFormat*& QTMSfmt); + gint DeleteFormat(QTMSFormat*& QTMSfmt); + gint CreateEffect(QTMSEffectType QTMSeffecttype, + QTMSEffect*& QTMSeffect); + gint DeleteEffect(QTMSEffect*& QTMSeffect); + gint CreateBuffer(QTMSBufferType buffertype, guint size, + QTMSBuffer*& QTMSbuffer); + gint DeleteBuffer(QTMSBuffer*& QTMSbuffer); + gint CreateSource(QTMSSourceType srctype, QTMSSource*& QTMSsrc); + gint DeleteSource(QTMSSource*& QTMSsrc); + gint CreateSink(QTMSSinkType sinktype, QTMSSink*& QTMSsink); + gint DeleteSink(QTMSSink*& QTMSsink); + gint CreateGlobalRouting(QTMSGlobalRouting*& globrouting); + gint DeleteGlobalRouting(QTMSGlobalRouting*& globrouting); + gint CreateDTMF(QTMSStreamType streamid, QTMSDTMF*& dtmf); + gint DeleteDTMF(QTMSDTMF*& dtmf); + gint CreateRTPSession(QTMSRTPSession*& rtpsession, guint8* sdp, + guint mode); + gint DeleteRTPSession(QTMSRTPSession*& rtpsession); + gint CreateRingTonePlayer(QTMSRingTone*& rt); + gint DeleteRingTonePlayer(QTMSRingTone*& rt); + gint CreateInbandTonePlayer(QTMSInbandTone*& inbandtone); + gint DeleteInbandTonePlayer(QTMSInbandTone*& inbandtone); + +private: + TMS::TMSFactory *iFactory; + }; + +} //namespace QTMS + +#endif diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsg711impl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsg711impl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_G711_FORMAT_IMPL_H +#define QTMS_G711_FORMAT_IMPL_H + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +// QTMSG711FormatImpl class +class QTMSG711FormatImpl : public QTMSG711Format + { +public: + static gint Create(QTMSFormat*& qformat, TMS::TMSFormat*& tmsformat); + virtual ~QTMSG711FormatImpl(); + + gint GetFormat(TMS::TMSFormat*& fmt); + + // From QTMSFormat + gint GetType(QTMSFormatType& fmttype); + +private: + QTMSG711FormatImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_G711_FORMAT_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsg729impl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsg729impl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_G729_FORMAT_IMPL_H +#define QTMS_G729_FORMAT_IMPL_H + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +// QTMSG729FormatImpl class +class QTMSG729FormatImpl : public QTMSG729Format + { +public: + + static gint Create(QTMSFormat*& qformat, TMS::TMSFormat*& tmsformat); + virtual ~QTMSG729FormatImpl(); + + gint GetFormat(TMS::TMSFormat*& fmt); + + // From QTMSFormat + gint GetType(QTMSFormatType& fmttype); + +private: + QTMSG729FormatImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_G729_FORMAT_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsgaineffectimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsgaineffectimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_GAIN_EFFECT_IMPL_H +#define QTMS_GAIN_EFFECT_IMPL_H + +#include +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSEffect; +} + +namespace QTMS { + +// QTMSGainEffectImpl class +class QTMSGainEffectImpl : public QTMSGainEffect, + public TMS::TMSEffectObserver + { +public: + static gint Create(QTMSEffect*& qvol, TMS::TMSEffect*& tmsvol); + virtual ~QTMSGainEffectImpl(); + + gint AddObserver(TMS::TMSEffectObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSEffectObserver& obsrvr); + + gint GetEffect(TMS::TMSEffect*& tmseffect); + + //From TMSEffectObserver + void EffectsEvent(const TMS::TMSEffect& tmseffect, + TMS::TMSSignalEvent event); + +private: + QTMSGainEffectImpl(); + gint PostConstruct(); + +private: + gpointer iUserData; + }; + +} //namespace QTMS + +#endif // QTMS_GAIN_EFFECT_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsglobalgaineffectimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsglobalgaineffectimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_GLOBAL_GAIN_EFFECT_IMPL_H +#define QTMS_GLOBAL_GAIN_EFFECT_IMPL_H + +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSEffect; +} + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSEffect; + +// QTMSGlobalGainEffectImpl class +class QTMSGlobalGainEffectImpl : public QTMSGlobalGainEffect, + public TMS::TMSEffectObserver + { +public: + static gint Create(QTMSEffect*& qglobalgain, + TMS::TMSEffect*& tmsglobalgain); + virtual ~QTMSGlobalGainEffectImpl(); + + gint AddObserver(TMS::TMSEffectObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSEffectObserver& obsrvr); + + //from TMSEffectObserver + void EffectsEvent(const TMS::TMSEffect& tmseffect, + TMS::TMSSignalEvent event); + +private: + QTMSGlobalGainEffectImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_GLOBAL_GAIN_EFFECT_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsglobalroutingimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsglobalroutingimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_GLOBAL_ROUTING_IMPL_H +#define QTMS_GLOBAL_ROUTING_IMPL_H + +#include +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSGlobalRouting; +} + +namespace QTMS { + +// QTMSGlobalRoutingImpl class +class QTMSGlobalRoutingImpl : public QTMSGlobalRouting, + public TMS::TMSGlobalRoutingObserver + { +public: + + static gint Create(QTMSGlobalRouting*& qrouting, + TMS::TMSGlobalRouting*& tmsrouting); + virtual ~QTMSGlobalRoutingImpl(); + + gint AddObserver(TMS::TMSGlobalRoutingObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSGlobalRoutingObserver& obsrvr); + + //from TMSGlobalRoutingObserver + void GlobalRoutingEvent(const TMS::TMSGlobalRouting& routing, + TMS::TMSSignalEvent event, TMS::TMSAudioOutput output); + +private: + QTMSGlobalRoutingImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_GLOBAL_ROUTING_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsglobalvoleffectimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsglobalvoleffectimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_GLOBAL_VOLUME_EFFECT_IMPL_H +#define QTMS_GLOBAL_VOLUME_EFFECT_IMPL_H + +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSEffect; +} + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSEffect; + +// QTMSGlobalVolEffectImpl class +class QTMSGlobalVolEffectImpl : public QTMSGlobalVolEffect, + public TMS::TMSEffectObserver + { +public: + + static gint Create(QTMSEffect*& qglobalvol, TMS::TMSEffect*& tmsglobalvol); + virtual ~QTMSGlobalVolEffectImpl(); + + gint AddObserver(TMS::TMSEffectObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSEffectObserver& obsrvr); + + //from TMSEffectObserver + void EffectsEvent(const TMS::TMSEffect& tmseffect, + TMS::TMSSignalEvent event); + +private: + QTMSGlobalVolEffectImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_GLOBAL_VOLUME_EFFECT_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsilbcimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsilbcimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_ILBC_FORMAT_IMPL_H +#define QTMS_ILBC_FORMAT_IMPL_H + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +// QTMSILBCFormatImpl class +class QTMSILBCFormatImpl : public QTMSILBCFormat + { +public: + static gint Create(QTMSFormat*& qformat, TMS::TMSFormat*& tmsformat); + virtual ~QTMSILBCFormatImpl(); + + gint GetFormat(TMS::TMSFormat*& fmt); + + // From QTMSFormat + gint GetType(QTMSFormatType& fmttype); + +private: + QTMSILBCFormatImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_ILBC_FORMAT_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsinbandtoneimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsinbandtoneimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_INBAND_IMPL_H +#define QTMS_INBAND_IMPL_H + +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSInbandTone; +} + +namespace QTMS { + +// QTMSInbandImpl class +class QTMSInbandToneImpl : public QTMSInbandTone, + public TMS::TMSInbandToneObserver + { +public: + static gint Create(QTMSInbandTone*& qinband, + TMS::TMSInbandTone*& tmsinband); + virtual ~QTMSInbandToneImpl(); + + gint AddObserver(TMS::TMSInbandToneObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSInbandToneObserver& obsrvr); + + //from TMS::TMSInbandToneObserver + void InbandToneEvent(const TMS::TMSInbandTone& inbandtone, + TMS::TMSSignalEvent event); + +private: + QTMSInbandToneImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_DTMF_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsmembuffer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsmembuffer.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_MEM_BUFFER_H +#define QTMS_MEM_BUFFER_H + +#include + +namespace QTMS { + +// QTMSMemBuffer class +class QTMSMemBuffer : public QTMSBuffer + { +public: + virtual ~QTMSMemBuffer(); + + /** + * Creates Memory Buffer object of the given size. + * The memory is allocated on the heap. + * + * @param size + * Size of the buffer to be created. + * + * @param buffer + * Created buffer object. + * + * @return + * TMS_RESULT_SUCCESS if buffer is created successfully. + * TMS_RESULT_INSUFFICIENT_MEMORY if buffer creation failed due to + * insufficient memory. + * TMS_RESULT_BUFFER_TYPE_NOT_SUPPORTED if the buffer type is not + * supported. + * + */ + static gint Create(guint size, QTMSBuffer*& buffer); + + /** + * Return buffer type. + * + * @param buftype + * Type of the buffer object (QTMS_BUFFER_MEMORY). + * + * @return + * QTMS_RESULT_SUCCESS if the operation was successful. + * + */ + virtual gint GetType(QTMSBufferType& buftype); + + /** + Gets the timestamp on the Buffer so that the framework can + determine the time at which this buffer has to be rendered + by the output device sink. + + @param ts + timestamp in microseconds + */ + virtual gint GetTimeStamp(guint64& ts); + + /** + Sets the timestamp on the Buffer so that the framework can + determine the time at which this buffer has to be rendered + by the output device sink. + + @param ts + timestamp in milliseconds + */ + virtual gint SetTimeStamp(const guint64 ts); + + /** + Gets the size of data in the buffer specified by the client. + + @param size + size of data in bytes + */ + virtual gint GetDataSize(guint& size); + + /** + Sets the size of data in the buffer after the client + fill it. + + @param size + size of data in bytes + */ + virtual gint SetDataSize(const guint size); + + /** + Gets the pointer to the memory location associated with this + buffer where the data is stored. + + @param bufptr + ptr to the data stored in the buffer. + */ + virtual gint GetDataPtr(guint8*& bufptr); + +private: + QTMSMemBuffer(); + gint PostConstruct(guint size); + +private: + guint iBufferSize; + guint iTimeStamp; + guint8* iDataPtr; + gboolean iOwnsBuffer; + }; + +} //namespace QTMS + +#endif //QTMS_MEM_BUFFER_H diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsmicsourceimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsmicsourceimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_MIC_SOURCE_IMPL_H +#define QTMS_MIC_SOURCE_IMPL_H + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSource; +} + +namespace QTMS { + +// QTMSMicSourceImpl class +class QTMSMicSourceImpl : public QTMSMicSource + { +public: + static gint Create(QTMSSource*& qsource, TMS::TMSSource*& tmssource); + virtual ~QTMSMicSourceImpl(); + gint GetSource(TMS::TMSSource*& tmssource); + +private: + QTMSMicSourceImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_MIC_SOURCE_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsmodemsinkimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsmodemsinkimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_MODEM_SINK_IMPL_H +#define QTMS_MODEM_SINK_IMPL_H + +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSink; +} + +namespace QTMS { + +// QTMSModemSinkImpl class +class QTMSModemSinkImpl : public QTMSModemSink + { +public: + static gint Create(QTMSSink*& qsink, TMS::TMSSink*& tmssink); + virtual ~QTMSModemSinkImpl(); + + gint GetSink(TMS::TMSSink*& tmssink); + +private: + QTMSModemSinkImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_MODEM_SINK_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsmodemsourceimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsmodemsourceimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_MODEM_SOURCE_IMPL_H +#define QTMS_MODEM_SOURCE_IMPL_H + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSource; +} + +namespace QTMS { + +// QTMSModemSourceImpl class +class QTMSModemSourceImpl : public QTMSModemSource + { +public: + static gint Create(QTMSSource*& qsource, TMS::TMSSource*& tmssource); + virtual ~QTMSModemSourceImpl(); + + gint GetSource(TMS::TMSSource*& tmssource); + +private: + QTMSModemSourceImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_MODEM_SOURCE_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmspcmimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmspcmimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_PCM_FORMAT_IMPL_H +#define QTMS_PCM_FORMAT_IMPL_H + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSFormat; +} + +namespace QTMS { + +// QTMSPCMFormatImpl class +class QTMSPCMFormatImpl : public QTMSPCMFormat + { +public: + static gint Create(QTMSFormat*& qformat, TMS::TMSFormat*& tmsformat); + virtual ~QTMSPCMFormatImpl(); + + gint GetFormat(TMS::TMSFormat*& fmt); + + // From QTMSFormat + gint GetType(QTMSFormatType& Formattype); + +private: + QTMSPCMFormatImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_PCM_FORMAT_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsringtoneimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsringtoneimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMSRINGTONEBODYIMPL_H +#define QTMSRINGTONEBODYIMPL_H + +#include +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSRingTone; +} + +namespace QTMS { + +// QTMSRingToneImpl class +class QTMSRingToneImpl : public QTMSRingTone, + public TMS::TMSRingToneObserver + { +public: + static gint Create(QTMSRingTone*& qrt, TMS::TMSRingTone*& tmsrt); + virtual ~QTMSRingToneImpl(); + + gint AddObserver(TMS::TMSRingToneObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSRingToneObserver& obsrvr); + + //from TMS::TMSRingToneObserver + void RingtoneEvent(const TMS::TMSRingTone& rt, TMS::TMSSignalEvent event); + +private: + QTMSRingToneImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif //QTMSRINGTONEBODYIMPL_H + +// End of file + diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmssinkimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmssinkimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_SINK_IMPL_H +#define QTMS_SINK_IMPL_H + +#include + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSSink; + +// TMSSinkImpl class +class QTMSSinkImpl + { +public: + static gint Create(QTMSSinkType sinktype, QTMSSink*& tmssink); + static gint Delete(QTMSSink*& tmssink); + }; + +} //namespace QTMS + +#endif // QTMS_SINK_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmssourceimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmssourceimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_SOURCE_IMPL_H +#define QTMS_SOURCE_IMPL_H + +#include + +namespace QTMS { + +// FORWARD DECLARATIONS +class QTMSSource; + +// TMSSourceImpl class +class QTMSSourceImpl + { +public: + static gint Create(QTMSSourceType sourcetype, QTMSSource*& tmssource); + static gint Delete(QTMSSource*& tmssource); + }; + +} //namespace QTMS + +#endif // QTMS_SOURCE_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsspeakersinkimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsspeakersinkimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_SPEAKER_SINK_IMPL_H +#define QTMS_SPEAKER_SINK_IMPL_H + +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSSink; +} + +namespace QTMS { + +// QTMSSpeakerSinkImpl class +class QTMSSpeakerSinkImpl : public QTMSSpeakerSink + { +public: + static gint Create(QTMSSink*& qsink, TMS::TMSSink*& tmssink); + virtual ~QTMSSpeakerSinkImpl(); + + gint GetSink(TMS::TMSSink*& tmssink); + +private: + QTMSSpeakerSinkImpl(); + gint PostConstruct(); + }; + +} //namespace QTMS + +#endif // QTMS_SPEAKER_SINK_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsstreamimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsstreamimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_STREAM_IMPL_H +#define QTMS_STREAM_IMPL_H + +#include +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSStream; +} + +namespace QTMS { + +// FORWARD DECLARATIONS +//class QTMSStream; +class QTMSSource; +class QTMSSink; +class QTMSForamt; +class QTMSEffect; +class QTMSBuffer; +class QTMSFormat; + +// QTMSStreamImpl class +class QTMSStreamImpl : public QTMSStream, + public TMS::TMSStreamObserver + + { + enum TQueueType + { + EMsgBufQueue, + EMsgComQueue + }; + +public: + static gint Create(QTMSCallType callType, QTMSStreamType stype, + QTMSStream*& qstrm, TMS::TMSStream*& tmsstrm); + + virtual ~QTMSStreamImpl(); + + // From QTMSStreamBody + gint AddObserver(TMS::TMSStreamObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSStreamObserver& obsrvr); + + // From TMSStreamObserver + void TMSStreamEvent(const TMS::TMSStream& stream, + TMS::TMSSignalEvent event); + +protected: + QTMSStreamImpl(); + + gint PostConstruct(QTMSCallType callType, QTMSStreamType stype, + QTMSStream& parent); + + gint CreateQueue(const gint aNumSlots); + void ReceiveMsgQHandlerEventsL(); + }; + +} //namespace QTMS + +#endif // QTMS_STREAM_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmsvolumeeffectimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmsvolumeeffectimpl.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef QTMS_VOLUME_EFFECT_IMPL_H +#define QTMS_VOLUME_EFFECT_IMPL_H + +#include +#include +#include +#include + +// FORWARD DECLARATIONS +namespace TMS { +class TMSEffect; +} + +namespace QTMS { + +// QTMSVolumeEffectImpl class +class QTMSVolumeEffectImpl : public QTMSVolumeEffect, + public TMS::TMSEffectObserver + { +public: + static gint Create(QTMSEffect*& qvol, TMS::TMSEffect*& tmsvol); + virtual ~QTMSVolumeEffectImpl(); + + gint AddObserver(TMS::TMSEffectObserver& obsrvr, gpointer user_data); + gint RemoveObserver(TMS::TMSEffectObserver& obsrvr); + + gint GetEffect(TMS::TMSEffect*& tmseffect); + + //From TMSEffectObserver + void EffectsEvent(const TMS::TMSEffect& tmseffect, + TMS::TMSSignalEvent event); + +private: + QTMSVolumeEffectImpl(); + gint PostConstruct(); + +private: + gpointer iUserData; + }; + +} //namespace QTMS + +#endif // QTMS_VOLUME_EFFECT_IMPL_H + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/qtmswrapperexport.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/qtmswrapperexport.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,30 @@ +/* +* 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 the License "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 QTMS_WRAPPER_EXPORT_H_ +#define QTMS_WRAPPER_EXPORT_H_ + +// System includes +#include + +#ifdef BUILD_TMS_WRAPPER_DLL + #define QTMS_WRAPPER_DLL_EXPORT Q_DECL_EXPORT +#else + #define QTMS_WRAPPER_DLL_EXPORT Q_DECL_IMPORT +#endif + +#endif // QTMS_WRAPPER_EXPORT_H_ diff -r d881023c13eb -r cbb1bfb7ebfb qtms/inc/tmsutility.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/inc/tmsutility.h Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#ifndef __TMSUTILITY_H__ +#define __TMSUTILITY_H__ + +#include +#include +#include +#ifdef _DEBUG +#include +#endif + +namespace TMS { + +// DEBUG TRACE DEFINITIONS +#ifdef _DEBUG +#define TRACE_PRN_FN_ENT RDebug::Printf("%s>ENTER", __PRETTY_FUNCTION__) +#define TRACE_PRN_FN_EXT RDebug::Printf("%s>EXIT", __PRETTY_FUNCTION__) +#define TRACE_PRN_IF_ERR(err) if (err != KErrNone) RDebug::Printf( "%s>BREAK[%d]", __PRETTY_FUNCTION__, err ) + +#define TRACE_PRN_0(str) RDebug::Print(str, this) +#define TRACE_PRN_1(str, val1) RDebug::Print(str, this, val1) +#define TRACE_PRN_2(str, val1, val2) RDebug::Print(str, this, val1, val2) + +#define TRACE_PRN_N(str) RDebug::Print(str) +#define TRACE_PRN_N1(str, val1) RDebug::Print(str, val1) +#define TRACE_PRN_N2(str, val1, val2) RDebug::Print(str, val1, val2) +#else +#define TRACE_PRN_FN_ENT +#define TRACE_PRN_FN_EXT +#define TRACE_PRN_IF_ERR(err) +#define TRACE_PRN_0(str) +#define TRACE_PRN_1(str, val1) +#define TRACE_PRN_2(str, val1, val2) +#define TRACE_PRN_N(str) +#define TRACE_PRN_N1(str, val1) +#define TRACE_PRN_N2(str, val1, val2) +#endif //_DEBUG + + +// MACRO DEFINITIONS +#define RET_ERR_IF_ERR(err) if ( err != 0) return err; +#define RET_REASON_IF_ERR(s) if(s!=0) return s + +#define TMSRESULT(result) TMSUtility::TMSResult(result) +#define TOTMSOUTPUT(output) TMSUtility::ToTMSOutput(output) +#define TOTAROUTPUT(output) TMSUtility::ToTAROutput(output) +#define TOFOURCC(format) TMSUtility::ToFourCC(format) +#define TOTMSFORMAT(fourcc) TMSUtility::FourCCToTMSFormat(fourcc) + +// TMSUtility class +class TMSUtility + { +public: + IMPORT_C static gint TMSResult(const gint error); + IMPORT_C static gint EtelToTMSResult(const gint error); + IMPORT_C static TMSAudioOutput ToTMSOutput( + CTelephonyAudioRouting::TAudioOutput taroutput); + IMPORT_C static CTelephonyAudioRouting::TAudioOutput ToTAROutput( + TMSAudioOutput output); + IMPORT_C static TUint32 ToFourCC(TMSFormatType frmtType); + IMPORT_C static TMSFormatType FourCCToTMSFormat(TUint32 fourcc); + }; + +} //namespace TMS + +#endif //__TMSUTILITY_H__ + diff -r d881023c13eb -r cbb1bfb7ebfb qtms/qtmsapi.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/qtmsapi.pro Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,154 @@ +# +# 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: +# + +TEMPLATE = lib +TARGET = qtmsapi +CONFIG += dll +DEFINES += BUILD_TMS_WRAPPER_DLL + +QT = core +CONFIG -= gui + + + DEFINES += SYMBIAN + TARGET.CAPABILITY = All -tcb + TARGET.EPOCALLOWDLLDATA = 1 + TARGET.UID2 = 0x10009D8D + TARGET.UID3 = 0x10207CA5 + + +BLD_INF_RULES.prj_exports += "$${LITERAL_HASH}include " \ + "rom/qtms.iby CORE_MW_LAYER_IBY_EXPORT_PATH(qtms.iby)" \ + "data/qtmsapi_stub.sis /epoc32/data/z/system/install/qtmsapi_stub.sis" + + +DEPENDPATH += . inc +INCLUDEPATH += . \ + .\inc + + + +qtmsDefFiles = \ + "$${LITERAL_HASH}ifdef WINSCW" \ + "DEFFILE bwins/qtms.def" \ + "$${LITERAL_HASH}else" \ + "DEFFILE eabi/qtms.def" \ + "$${LITERAL_HASH}endif" + +MMP_RULES += qtmsDefFiles + +INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE \ + $$OS_LAYER_LIBC_SYSTEMINCLUDE \ + $$OS_LAYER_GLIB_SYSTEMINCLUDE + + +LIBS += -ltmsfactory \ + -ltmsapi \ + -ltmsutility \ + -llibglib \ + -llibgobject \ + -llibgmodule \ + -llibstdcpp + + +# $$_PRO_FILE_PWD_ points to the directory of the pro file +MOC_DIR = ./tmp + +INCLUDEPATH += . \ + . inc \ + ../ \ + ../mmappfw_plat/qt_telephony_multimedia_service_api/inc/ + +DEPENDPATH += $$INCLUDEPATH src + +# Headers +HEADERS += qtmsfactory.h \ + qtmscall.h \ + qtmsstream.h \ + qtmsbuffer.h \ + qtmsclientsource.h \ + qtmsclientsink.h \ + qtmsvolumeeffect.h \ + qtmsgaineffect.h \ + qtmsglobalgaineffect.h \ + qtmsglobalvoleffect.h \ + qtmsglobalrouting.h \ + qtmsamrformat.h \ + qtmspcmformat.h \ + qtmsilbcformat.h \ + qtmsg711format.h \ + qtmsg729format.h \ + qtmsformat.h \ + qtmsmodemsink.h \ + qtmsspeakersink.h \ + qtmsmodemsource.h \ + qtmsmicsource.h \ + qtmsringtone.h \ + qtmsdtmf.h \ + qtmsinbandtone.h + + + +# Source +SOURCES += qtmsfactory.cpp \ + qtmsfactoryimpl.cpp \ + qtmsmembuffer.cpp \ + qtmsbufferimpl.cpp \ + qtmscall.cpp \ + qtmscallimpl.cpp \ + qtmsstream.cpp \ + qtmsstreamimpl.cpp \ + qtmsclientsource.cpp \ + qtmsclientsourceimpl.cpp \ + qtmsclientsink.cpp \ + qtmsclientsinkimpl.cpp \ + qtmsvolumeeffect.cpp \ + qtmsvolumeeffectimpl.cpp \ + qtmsgaineffect.cpp \ + qtmsgaineffectimpl.cpp \ + qtmsglobalgaineffect.cpp \ + qtmsglobalgaineffectimpl.cpp \ + qtmsglobalvoleffect.cpp \ + qtmsglobalvoleffectimpl.cpp \ + qtmsglobalrouting.cpp \ + qtmsglobalroutingimpl.cpp \ + qtmspcm.cpp \ + qtmspcmimpl.cpp \ + qtmsilbc.cpp \ + qtmsilbcimpl.cpp \ + qtmsamr.cpp \ + qtmsamrimpl.cpp \ + qtmsg711.cpp \ + qtmsg711impl.cpp \ + qtmsg729.cpp \ + qtmsg729impl.cpp \ + qtmsformat.cpp \ + qtmsmodemsink.cpp \ + qtmsmodemsinkimpl.cpp \ + qtmsspeakersink.cpp \ + qtmsspeakersinkimpl.cpp \ + qtmsmodemsource.cpp \ + qtmsmodemsourceimpl.cpp \ + qtmsmicsource.cpp \ + qtmsmicsourceimpl.cpp \ + qtmsringtone.cpp \ + qtmsringtoneimpl.cpp \ + qtmsdtmf.cpp \ + qtmsdtmfimpl.cpp \ + qtmsinbandtone.cpp \ + qtmsinbandtoneimpl.cpp + +SYMBIAN_PLATFORMS = DEFAULT \ No newline at end of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/rom/qtms.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/rom/qtms.iby Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,34 @@ +/* +* 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: +* Iby file for QTMS +* +*/ + + +#ifndef QTMS_IBY +#define QTMS_IBY + +// Use standard macros +#include + +#ifdef FF_TMS +file=ABI_DIR\BUILD_DIR\qtmsapi.dll SHARED_LIB_DIR\qtmsapi.dll + +//QTMS_Stub +data=ZSYSTEM/install/qtmsapi_stub.sis System/Install/qtmsapi_stub.sis + +#endif + +#endif diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsamr.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsamr.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include + +using namespace QTMS; + +QTMSAMRFormat::QTMSAMRFormat() + { + } + +QTMSAMRFormat::~QTMSAMRFormat() + { + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsamrimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsamrimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" +#include "qtmsamrimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSAMRFormatImpl::QTMSAMRFormatImpl() + { + } + +QTMSAMRFormatImpl::~QTMSAMRFormatImpl() + { + TRACE_PRN_FN_ENT; + TRACE_PRN_FN_EXT; + } + +gint QTMSAMRFormatImpl::Create(QTMSFormat*& qformat, TMS::TMSFormat*& tmsformat) + { + gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); + QTMSAMRFormatImpl* self = new QTMSAMRFormatImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != TMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iFormat = tmsformat; + } + qformat = self; + return ret; + } + +gint QTMSAMRFormatImpl::PostConstruct() + { + gint ret(TMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSAMRFormatImpl::GetFormat(TMS::TMSFormat*& fmt) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iFormat) + { + fmt = iFormat; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +gint QTMSAMRFormatImpl::GetType(QTMSFormatType& fmttype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + //status = static_cast (iFormat)->GetType(fmttype); + status = iFormat->GetType(fmttype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsbufferimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsbufferimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include "tmsutility.h" +#include "qtmsmembuffer.h" +#include "qtmsbufferimpl.h" + +using namespace QTMS; + +gint QTMSBufferImpl::Create(QTMSBufferType buffertype, guint size, + QTMSBuffer*& tmsbuffer) + { + gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); + TRACE_PRN_FN_ENT; + switch (buffertype) + { + case QTMS_BUFFER_MEMORY: + ret = QTMSMemBuffer::Create(size, tmsbuffer); + break; + default: + ret = QTMS_RESULT_BUFFER_TYPE_NOT_SUPPORTED; + break; + } + + TRACE_PRN_FN_EXT; + return ret; + } + +gint QTMSBufferImpl::Delete(QTMSBuffer*& tmsbuffer) + { + gint ret(TMS_RESULT_INVALID_ARGUMENT); + TRACE_PRN_FN_ENT; + QTMSBufferType buffertype; + ret = tmsbuffer->GetType(buffertype); + switch (buffertype) + { + case QTMS_BUFFER_MEMORY: + delete (QTMSMemBuffer*) (tmsbuffer); + tmsbuffer = NULL; + ret = QTMS_RESULT_SUCCESS; + break; + default: + ret = QTMS_RESULT_BUFFER_TYPE_NOT_SUPPORTED; + break; + } + + TRACE_PRN_FN_EXT; + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmscall.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmscall.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include +#include "qtmscallimpl.h" +#include "qtmsstreamimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSCall::QTMSCall() : + iTmsCall(NULL) + { + } + +QTMSCall::~QTMSCall() + { + } + +QTMSCallType QTMSCall::GetCallType() + { + QTMSCallType calltype(-1); + if (iTmsCall) + { + calltype = iTmsCall->GetCallType(); + } + return calltype; + } + +gint QTMSCall::GetCallContextId(guint& ctxid) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iTmsCall) + { + status = iTmsCall->GetCallContextId(ctxid); + } + return status; + } + +gint QTMSCall::CreateStream(const QTMSStreamType type, QTMSStream*& qstrm) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + + TMSStream* tmsstrm(NULL); + if (iTmsCall) + { + status = iTmsCall->CreateStream(type, tmsstrm); + } + + if (status == TMS_RESULT_SUCCESS) + { + QTMSCallType calltype = iTmsCall->GetCallType(); + switch (type) + { + case TMS_STREAM_UPLINK: + case TMS_STREAM_DOWNLINK: + status = QTMSStreamImpl::Create(calltype, type, qstrm, tmsstrm); + break; + default: + status = QTMS_RESULT_STREAM_TYPE_NOT_SUPPORTED; + break; + } + } + return status; + } + +gint QTMSCall::DeleteStream(QTMSStream*& strm) + { + gint status(QTMS_RESULT_SUCCESS); + //delete (static_cast (strm)); + delete strm; + strm = NULL; + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmscallimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmscallimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmscallimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSCallImpl::QTMSCallImpl() + { + } + +QTMSCallImpl::~QTMSCallImpl() + { + } + +gint QTMSCallImpl::Create(QTMSCall*& qtmscall, TMS::TMSCall*& tmscall) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSCallImpl* self = new QTMSCallImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iTmsCall = tmscall; + } + qtmscall = self; + return ret; + } + +gint QTMSCallImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsclientsink.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsclientsink.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include + +using namespace QTMS; +using namespace TMS; + +QTMSClientSink::QTMSClientSink() : + iSink(NULL) + { + } + +QTMSClientSink::~QTMSClientSink() + { + delete iSink; + } + +// Push mode +gint QTMSClientSink::BufferProcessed(TMS::TMSBuffer* buffer) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSink) + { + status = static_cast (iSink)->BufferProcessed(buffer); + } + return status; + } + +gint QTMSClientSink::GetType(QTMSSinkType& sinktype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSink) + { + status = static_cast (iSink)->GetType(sinktype); + //status = iSink->GetType(sinktype); //virtual; should be ok + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsclientsinkimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsclientsinkimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include +#include "qtmsclientsinkimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSClientSinkImpl::QTMSClientSinkImpl() + { + } + +QTMSClientSinkImpl::~QTMSClientSinkImpl() + { + RemoveObserver(*this); + } + +gint QTMSClientSinkImpl::Create(QTMSSink*& qsink, TMS::TMSSink*& tmssink) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSClientSinkImpl* self = new QTMSClientSinkImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iSink = tmssink; + self->AddObserver(*self, NULL); + } + qsink = self; + return ret; + } + +gint QTMSClientSinkImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSClientSinkImpl::AddObserver(TMS::TMSClientSinkObserver& obsrvr, + gpointer user_data) + { + gint ret(QTMS_RESULT_SUCCESS); + if (iSink) + { + ret = static_cast (iSink)->AddObserver(obsrvr, + user_data); + } + return ret; + } + +gint QTMSClientSinkImpl::RemoveObserver(TMS::TMSClientSinkObserver& obsrvr) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSink) + { + ret = static_cast (iSink)->RemoveObserver(obsrvr); + } + return ret; + } + +gint QTMSClientSinkImpl::GetSink(TMS::TMSSink*& tmssink) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iSink) + { + tmssink = iSink; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +void QTMSClientSinkImpl::ProcessBuffer(const TMS::TMSBuffer* buffer) + { + emit QTMS::QTMSClientSink::ProcessBuffer(buffer); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsclientsource.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsclientsource.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include + +using namespace QTMS; +using namespace TMS; + +QTMSClientSource::QTMSClientSource() : + iSource(NULL) + { + } + +QTMSClientSource::~QTMSClientSource() + { + delete iSource; + } + +gint QTMSClientSource::SetEnqueueMode(const gboolean enable) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + status = static_cast (iSource)->SetEnqueueMode( + enable); + } + return status; + } + +gint QTMSClientSource::GetEnqueueMode(gboolean& enable) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + status = static_cast (iSource)->GetEnqueueMode( + enable); + } + return status; + } + +gint QTMSClientSource::Flush() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + status = static_cast (iSource)->Flush(); + } + return status; + } + +gint QTMSClientSource::GetType(QTMSSourceType& sourcetype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + status = static_cast (iSource)->GetType(sourcetype); + } + return status; + } + +gint QTMSClientSource::BufferFilled(TMS::TMSBuffer& buffer) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + status = static_cast (iSource)->BufferFilled(buffer); + } + return status; + } + +// Push mode +gint QTMSClientSource::ProcessBuffer(TMS::TMSBuffer* buffer) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + status = static_cast (iSource)->ProcessBuffer(buffer); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsclientsourceimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsclientsourceimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include +#include "qtmsclientsourceimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSClientSourceImpl::QTMSClientSourceImpl() + { + } + +QTMSClientSourceImpl::~QTMSClientSourceImpl() + { + RemoveObserver(*this); + } + +gint QTMSClientSourceImpl::Create(QTMSSource*& qsource, + TMS::TMSSource*& tmssource) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSClientSourceImpl* self = new QTMSClientSourceImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iSource = tmssource; + self->AddObserver(*self, NULL); + } + qsource = self; + return ret; + } + +gint QTMSClientSourceImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSClientSourceImpl::AddObserver(TMS::TMSClientSourceObserver& obsrvr, + gpointer user_data) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + ret = static_cast (iSource)->AddObserver(obsrvr, + user_data); + } + return ret; + } + +gint QTMSClientSourceImpl::RemoveObserver(TMS::TMSClientSourceObserver& obsrvr) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + ret = static_cast (iSource)->RemoveObserver(obsrvr); + } + return ret; + } + +gint QTMSClientSourceImpl::GetSource(TMS::TMSSource*& tmssource) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iSource) + { + tmssource = iSource; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +void QTMSClientSourceImpl::FillBuffer(TMS::TMSBuffer& buffer) + { + emit QTMS::QTMSClientSource::FillBuffer(buffer); + } + +void QTMSClientSourceImpl::BufferProcessed(const TMS::TMSBuffer* buffer, + gint reason) + { + emit QTMS::QTMSClientSource::BufferProcessed(buffer, reason); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsdtmf.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsdtmf.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsdtmfimpl.h" +//#include "qtmswrapperexport.h" + +using namespace QTMS; + +QTMSDTMF::QTMSDTMF(void) : + iDtmf(NULL) + { + } + +QTMSDTMF::~QTMSDTMF(void) + { + delete iDtmf; + } + +gint QTMSDTMF::Start() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iDtmf) + { + status = iDtmf->Start(); + } + return status; + } + +gint QTMSDTMF::Stop() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iDtmf) + { + status = iDtmf->Stop(); + } + return status; + } + +gint QTMSDTMF::SetTone(GString* string) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iDtmf) + { + status = iDtmf->SetTone(string); + } + return status; + } + +gint QTMSDTMF::ContinueDTMFStringSending(gboolean aContinue) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iDtmf) + { + status = iDtmf->ContinueDTMFStringSending(aContinue); + } + return status; + } diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsdtmfimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsdtmfimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include "tmsutility.h" +#include "qtmsdtmfimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSDTMFImpl::QTMSDTMFImpl() + { + } + +QTMSDTMFImpl::~QTMSDTMFImpl() + { + RemoveObserver(*this); + } + +gint QTMSDTMFImpl::Create(QTMSDTMF*& qdtmf, TMS::TMSDTMF*& tmsdtmf) + { + gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); + QTMSDTMFImpl* self = new QTMSDTMFImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iDtmf = tmsdtmf; + ret = self->AddObserver(*self, NULL); + } + qdtmf = self; + return ret; + } + +gint QTMSDTMFImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSDTMFImpl::AddObserver(TMS::TMSDTMFObserver& obsrvr, + gpointer /*user_data*/) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iDtmf) + { + ret = iDtmf->AddObserver(obsrvr, NULL); + } + return ret; + } + +gint QTMSDTMFImpl::RemoveObserver(TMS::TMSDTMFObserver& obsrvr) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iDtmf) + { + ret = iDtmf->RemoveObserver(obsrvr); + } + return ret; + } + +void QTMSDTMFImpl::DTMFEvent(const TMS::TMSDTMF& /*dtmf*/, + TMS::TMSSignalEvent event) + { + QTMSSignalEvent qevent; + + qevent.type = event.type; + qevent.reason = event.reason; + qevent.curr_state = event.curr_state; + qevent.prev_state = event.prev_state; + qevent.event_data = event.event_data; + qevent.user_data = event.user_data; + + emit QTMS::QTMSDTMF::DTMFEvent(static_cast (*this), qevent); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmseffect.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmseffect.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include "qtmseffectimpl.h" +#include "qtmseffect.h" +#include "qtmswrapperexport.h" + + +void QTMSEffect::Construct(QTMSEffectImpl* impl) + { + QTMSeffectimpl = impl; + } + +QTMSEffect::QTMSEffect(void) + { + } + + QTMSEffect::~QTMSEffect(void) + { + } diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsfactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsfactory.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,266 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include +#include "qtmswrapperexport.h" +#include "qtmsfactoryimpl.h" + +using namespace QTMS; + +QTMSFactory::QTMSFactory() + { + impl = new QTMSFactoryImpl(); + } + +QTMSFactory::~QTMSFactory() + { + delete impl; + } + +gint QTMSFactory::CreateFactory(QTMSFactory*& tmsfactory, QTMSVer& /*ver*/) + { + QTMSFactory* self = new QTMSFactory(); + tmsfactory = self; + return QTMS_RESULT_SUCCESS; + } + +gint QTMSFactory::CreateCall(QTMSCallType ctype, QTMSCall*& tmscall, + guint ctxid) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateCall(ctype, tmscall, ctxid); + } + return status; + } + +gint QTMSFactory::DeleteCall(QTMSCall*& tmscall) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->DeleteCall(tmscall); + } + return status; + } + +gint QTMSFactory::IsCallTypeSupported(QTMSCallType ctype, gboolean& flag) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->IsCallTypeSupported(ctype, flag); + } + return status; + } + +gint QTMSFactory::GetSupportedFormats(const QTMSStreamType strmtype, + FormatVector& fmtlist) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->GetSupportedFormats(strmtype, fmtlist); + } + return status; + } + +gint QTMSFactory::CreateFormat(QTMSFormatType qfmttype, QTMSFormat*& qfmt) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateFormat(qfmttype, qfmt); + } + return status; + + } + +gint QTMSFactory::DeleteFormat(QTMSFormat*& qfmt) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->DeleteFormat(qfmt); + } + return status; + } + +gint QTMSFactory::CreateEffect(QTMSEffectType tmseffecttype, + QTMSEffect*& tmseffect) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateEffect(tmseffecttype, tmseffect); + } + return status; + } + +gint QTMSFactory::DeleteEffect(QTMSEffect*& qtmseffect) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + impl->DeleteEffect(qtmseffect); + } + return status; + } + +gint QTMSFactory::CreateBuffer(QTMSBufferType buffertype, guint size, + QTMSBuffer*& qbuffer) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateBuffer(buffertype, size, qbuffer); + } + return status; + } + +gint QTMSFactory::DeleteBuffer(QTMSBuffer*& qbuffer) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->DeleteBuffer(qbuffer); + } + return status; + } + +gint QTMSFactory::CreateSource(QTMSSourceType srctype, QTMSSource*& qtmssrc) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateSource(srctype, qtmssrc); + } + return status; + } + +gint QTMSFactory::DeleteSource(QTMSSource*& qtmssrc) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->DeleteSource(qtmssrc); + } + return status; + } + +gint QTMSFactory::CreateSink(QTMSSinkType sinktype, QTMSSink*& qtmssink) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateSink(sinktype, qtmssink); + } + return status; + } + +gint QTMSFactory::DeleteSink(QTMSSink*& qtmssink) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->DeleteSink(qtmssink); + } + return status; + } + +gint QTMSFactory::CreateGlobalRouting(QTMSGlobalRouting*& globalrouting) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateGlobalRouting(globalrouting); + } + return status; + } + +gint QTMSFactory::DeleteGlobalRouting(QTMSGlobalRouting*& globrouting) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->DeleteGlobalRouting(globrouting); + } + return status; + } + +gint QTMSFactory::CreateDTMF(QTMSStreamType streamtype, QTMSDTMF*& dtmf) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateDTMF(streamtype, dtmf); + } + return status; + } + +gint QTMSFactory::DeleteDTMF(QTMSDTMF*& dtmf) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->DeleteDTMF(dtmf); + } + return status; + } + +gint QTMSFactory::CreateRingTonePlayer(QTMSRingTone*& rt) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateRingTonePlayer(rt); + } + return status; + } + +gint QTMSFactory::DeleteRingTonePlayer(QTMSRingTone*& rt) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->DeleteRingTonePlayer(rt); + } + return status; + } + +gint QTMSFactory::CreateInbandTonePlayer(QTMSInbandTone*& inbandtone) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->CreateInbandTonePlayer(inbandtone); + } + return status; + } + +gint QTMSFactory::DeleteInbandTonePlayer(QTMSInbandTone*& inbandtone) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (impl) + { + status = impl->DeleteInbandTonePlayer(inbandtone); + } + return status; + } diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsfactoryimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsfactoryimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,574 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "tmsutility.h" +#include "qtmscallimpl.h" +#include "qtmsglobalroutingimpl.h" +#include "qtmsglobalvoleffectimpl.h" +#include "qtmsglobalgaineffectimpl.h" +#include "qtmsvolumeeffectimpl.h" +#include "qtmsgaineffectimpl.h" +#include "qtmsclientsinkimpl.h" +#include "qtmsmodemsinkimpl.h" +#include "qtmsspeakersinkimpl.h" +#include "qtmsclientsourceimpl.h" +#include "qtmsmodemsourceimpl.h" +#include "qtmsmicsourceimpl.h" +#include "qtmsringtoneimpl.h" +#include "qtmsdtmfimpl.h" +#include "qtmsinbandtoneimpl.h" +#include "qtmsfactoryimpl.h" +#include "qtmspcmimpl.h" +#include "qtmsamrimpl.h" +#include "qtmsg711impl.h" +#include "qtmsg729impl.h" +#include "qtmsilbcimpl.h" +#include "qtmsmembuffer.h" + +using namespace QTMS; +using namespace TMS; + +QTMSFactoryImpl::QTMSFactoryImpl() + { + TMSVer* ver = NULL; + TMSFactory::CreateFactory(iFactory, *ver); + } + +QTMSFactoryImpl::~QTMSFactoryImpl() + { + delete iFactory; + } + +gint QTMSFactoryImpl::CreateCall(QTMSCallType ctype, QTMSCall*& qtmscall, + guint /*ctxid*/) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + TMSCall* tmscall(NULL); + if (iFactory) + { + ret = iFactory->CreateCall((TMSCallType) ctype, tmscall); + + if (ret == TMS_RESULT_SUCCESS) + { + ret = QTMSCallImpl::Create(qtmscall, tmscall); + } + } + return ret; + } + +gint QTMSFactoryImpl::DeleteCall(QTMSCall*& qtmscall) + { + gint ret(QTMS_RESULT_SUCCESS); + delete qtmscall; + qtmscall = NULL; + return ret; + } + +gint QTMSFactoryImpl::IsCallTypeSupported(QTMSCallType ctype, gboolean& flag) + { + gint ret(QTMS_RESULT_SUCCESS); + + switch (ctype) + { + case QTMS_CALL_CS: + case QTMS_CALL_IP: + flag = ETrue; + break; + case QTMS_CALL_ECS: //from TB 10.1 + default: + flag = EFalse; + break; + } + return ret; + } + +gint QTMSFactoryImpl::GetSupportedFormats(const QTMSStreamType strmtype, + FormatVector& fmtlist) + { + gint ret(QTMS_RESULT_SUCCESS); + TMS::FormatVector tmsfmtlist; + if(iFactory) + { + iFactory->GetSupportedFormats(strmtype,tmsfmtlist); + } + + std::vector::iterator itCodecs = tmsfmtlist.begin(); + TMSFormatType fmttype; + for (; itCodecs < tmsfmtlist.end(); itCodecs++) + { + (*itCodecs)->GetType(fmttype); + QTMSFormat* qtmsfmt(NULL); + switch (fmttype) + { + case QTMS_FORMAT_PCM: + ret = QTMSPCMFormatImpl::Create(qtmsfmt,*itCodecs); + break; + case QTMS_FORMAT_AMR: + ret = QTMSAMRFormatImpl::Create(qtmsfmt,*itCodecs); + break; + case QTMS_FORMAT_G711: + ret = QTMSG711FormatImpl::Create(qtmsfmt,*itCodecs); + break; + case QTMS_FORMAT_G729: + ret = QTMSG729FormatImpl::Create(qtmsfmt,*itCodecs); + break; + case QTMS_FORMAT_ILBC: + ret = QTMSILBCFormatImpl::Create(qtmsfmt,*itCodecs); + break; + default: + break; + } + + if(qtmsfmt) + { + fmtlist.push_back(qtmsfmt); + } + } + + return ret; + } + +gint QTMSFactoryImpl::CreateFormat(QTMSFormatType fmttype, + QTMSFormat*& qtmsfmt) + { + gint ret(QTMS_RESULT_SUCCESS); + + TMSFormat* tmsformat(NULL); + + if (iFactory) + { + ret = iFactory->CreateFormat((TMSFormatType) fmttype, tmsformat); + + if (ret == TMS_RESULT_SUCCESS) + { + switch (fmttype) + { + case QTMS_FORMAT_PCM: + ret = QTMSPCMFormatImpl::Create(qtmsfmt, tmsformat); + break; + case QTMS_FORMAT_AMR: + ret = QTMSAMRFormatImpl::Create(qtmsfmt, tmsformat); + break; + case QTMS_FORMAT_G711: + ret = QTMSG711FormatImpl::Create(qtmsfmt, tmsformat); + break; + case QTMS_FORMAT_G729: + ret = QTMSG729FormatImpl::Create(qtmsfmt, tmsformat); + break; + case QTMS_FORMAT_ILBC: + ret = QTMSILBCFormatImpl::Create(qtmsfmt, tmsformat); + break; + default: + break; + } + } + } + + return ret; + } + +gint QTMSFactoryImpl::DeleteFormat(QTMSFormat*& qtmsfmt) + { + gint ret(QTMS_RESULT_FORMAT_TYPE_NOT_SUPPORTED); + + QTMSFormatType fmttype; + ret = qtmsfmt->GetType(fmttype); + switch (fmttype) + { + case QTMS_FORMAT_PCM: + delete (static_cast(qtmsfmt)); + qtmsfmt = NULL; + ret = QTMS_RESULT_SUCCESS; + break; + case QTMS_FORMAT_AMR: + delete (static_cast(qtmsfmt)); + qtmsfmt = NULL; + ret = QTMS_RESULT_SUCCESS; + break; + case QTMS_FORMAT_G711: + delete (static_cast(qtmsfmt)); + qtmsfmt = NULL; + ret = QTMS_RESULT_SUCCESS; + break; + case QTMS_FORMAT_G729: + delete (static_cast(qtmsfmt)); + qtmsfmt = NULL; + ret = QTMS_RESULT_SUCCESS; + break; + case QTMS_FORMAT_ILBC: + delete (static_cast(qtmsfmt)); + qtmsfmt = NULL; + ret = QTMS_RESULT_SUCCESS; + break; + default: + break; + } + + return ret; + } + +gint QTMSFactoryImpl::CreateEffect(QTMSEffectType tmseffecttype, + QTMSEffect*& qtmseffect) + { + //gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + gint ret(TMS_RESULT_SUCCESS); + TMSEffect* tmseffect(NULL); + if (iFactory) + { + ret = iFactory->CreateEffect((TMSEffectType) tmseffecttype, tmseffect); + + if (ret == TMS_RESULT_SUCCESS) + { + switch (tmseffecttype) + { + case TMS_EFFECT_VOLUME: + ret = QTMSVolumeEffectImpl::Create(qtmseffect, tmseffect); + break; + case TMS_EFFECT_GAIN: + ret = QTMSGainEffectImpl::Create(qtmseffect, tmseffect); + break; + case TMS_EFFECT_GLOBAL_VOL: + ret = QTMSGlobalVolEffectImpl::Create(qtmseffect, + tmseffect); + break; + case TMS_EFFECT_GLOBAL_GAIN: + ret = QTMSGlobalGainEffectImpl::Create(qtmseffect, + tmseffect); + break; + default: + ret = TMS_RESULT_EFFECT_TYPE_NOT_SUPPORTED; + break; + } + } + } + + return ret; + } + +gint QTMSFactoryImpl::DeleteEffect(QTMSEffect*& qtmseffect) + { + gint ret(QTMS_RESULT_SUCCESS); + + QTMSEffectType effecttype; + ret = qtmseffect->GetType(effecttype); + switch (effecttype) + { + case QTMS_EFFECT_VOLUME: + delete (static_cast (qtmseffect)); + qtmseffect = NULL; + break; + case QTMS_EFFECT_GAIN: + delete (static_cast (qtmseffect)); + qtmseffect = NULL; + break; + case QTMS_EFFECT_GLOBAL_VOL: + delete (static_cast (qtmseffect)); + qtmseffect = NULL; + break; + case QTMS_EFFECT_GLOBAL_GAIN: + delete (static_cast (qtmseffect)); + qtmseffect = NULL; + break; + default: + ret = QTMS_RESULT_EFFECT_TYPE_NOT_SUPPORTED; + break; + } + + return ret; + } + +gint QTMSFactoryImpl::CreateBuffer(QTMSBufferType buffertype, guint size, + QTMSBuffer*& qtmsbuffer) + { + gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); + TRACE_PRN_FN_ENT; + + switch (buffertype) + { + case QTMS_BUFFER_MEMORY: + ret = QTMSMemBuffer::Create(size, qtmsbuffer); + break; + default: + ret = QTMS_RESULT_BUFFER_TYPE_NOT_SUPPORTED; + break; + } + + TRACE_PRN_FN_EXT; + return ret; + } + +gint QTMSFactoryImpl::DeleteBuffer(QTMSBuffer*& qtmsbuffer) + { + delete (static_cast (qtmsbuffer)); + qtmsbuffer = NULL; + return QTMS_RESULT_SUCCESS; + } + +gint QTMSFactoryImpl::CreateSource(QTMSSourceType srctype, + QTMSSource*& qtmssrc) + { + gint ret(QTMS_RESULT_SUCCESS); + + TMS::TMSSource* tmssource(NULL); + if (iFactory) + { + ret = iFactory->CreateSource(srctype, tmssource); + + if (ret == TMS_RESULT_SUCCESS) + { + switch (srctype) + { + case QTMS_SOURCE_CLIENT: + ret = QTMSClientSourceImpl::Create(qtmssrc, tmssource); + break; + case QTMS_SOURCE_MODEM: + ret = QTMSModemSourceImpl::Create(qtmssrc, tmssource); + break; + case QTMS_SOURCE_MIC: + ret = QTMSMicSourceImpl::Create(qtmssrc, tmssource); + break; + default: + break; + } + } + } + + return ret; + } + +gint QTMSFactoryImpl::DeleteSource(QTMSSource*& qtmssrc) + { + gint ret(TMS_RESULT_INVALID_ARGUMENT); + + QTMSSourceType sourcetype; + ret = qtmssrc->GetType(sourcetype); + switch (sourcetype) + { + case QTMS_SOURCE_CLIENT: + delete (static_cast(qtmssrc)); + qtmssrc = NULL; + ret = QTMS_RESULT_SUCCESS; + break; + case QTMS_SOURCE_MODEM: + { + delete (static_cast(qtmssrc)); + qtmssrc = NULL; + ret = TMS_RESULT_SUCCESS; + } + break; + case TMS_SOURCE_MIC: + { + delete (static_cast(qtmssrc)); + qtmssrc = NULL; + ret = TMS_RESULT_SUCCESS; + } + break; + default: + ret = TMS_RESULT_SOURCE_TYPE_NOT_SUPPORTED; + break; + } + + TRACE_PRN_FN_EXT; + return ret; + } + +gint QTMSFactoryImpl::CreateSink(QTMSSinkType sinktype, QTMSSink*& qtmssink) + { + gint ret(QTMS_RESULT_SUCCESS); + + TMS::TMSSink* tmssink(NULL); + + if (iFactory) + { + ret = iFactory->CreateSink(sinktype, tmssink); + + if (ret == TMS_RESULT_SUCCESS) + { + switch (sinktype) + { + case QTMS_SINK_CLIENT: + ret = QTMSClientSinkImpl::Create(qtmssink, tmssink); + break; + case QTMS_SINK_MODEM: + ret = QTMSModemSinkImpl::Create(qtmssink, tmssink); + break; + case QTMS_SINK_SPEAKER: + ret = QTMSSpeakerSinkImpl::Create(qtmssink, tmssink); + break; + default: + break; + } + } + } + + return ret; + } + +gint QTMSFactoryImpl::DeleteSink(QTMSSink*& qtmssink) + { + gint ret(QTMS_RESULT_INVALID_ARGUMENT); + + QTMSSinkType sinktype; + ret = qtmssink->GetType(sinktype); + switch (sinktype) + { + case QTMS_SINK_CLIENT: + { + delete (static_cast(qtmssink)); + qtmssink = NULL; + ret = QTMS_RESULT_SUCCESS; + } + break; + case QTMS_SINK_MODEM: + { + delete (static_cast(qtmssink)); + qtmssink = NULL; + ret = QTMS_RESULT_SUCCESS; + } + break; + case QTMS_SINK_SPEAKER: + { + delete (static_cast(qtmssink)); + qtmssink = NULL; + ret = QTMS_RESULT_SUCCESS; + } + break; + default: + ret = QTMS_RESULT_SINK_TYPE_NOT_SUPPORTED; + break; + } + + return ret; + } + +gint QTMSFactoryImpl::CreateGlobalRouting(QTMSGlobalRouting*& qrouting) + { + gint ret(QTMS_RESULT_SUCCESS); + + TMS::TMSGlobalRouting* tmsrouting(NULL); + if (iFactory) + { + ret = iFactory->CreateGlobalRouting(tmsrouting); + + if (ret == TMS_RESULT_SUCCESS) + { + ret = QTMSGlobalRoutingImpl::Create(qrouting, tmsrouting); + } + } + return ret; + } + +gint QTMSFactoryImpl::DeleteGlobalRouting(QTMSGlobalRouting*& globalrouting) + { + gint ret(QTMS_RESULT_SUCCESS); + delete (static_cast(globalrouting)); + globalrouting = NULL; + return ret; + } + +gint QTMSFactoryImpl::CreateDTMF(QTMSStreamType streamtype, QTMSDTMF*& qdtmf) + { + gint ret(QTMS_RESULT_SUCCESS); + + TMS::TMSDTMF* tmsdtmf = NULL; + + if (iFactory) + { + ret = iFactory->CreateDTMF(streamtype, tmsdtmf); + + if (ret == TMS_RESULT_SUCCESS) + { + ret = QTMSDTMFImpl::Create(qdtmf, tmsdtmf); + } + } + return ret; + } + +gint QTMSFactoryImpl::DeleteDTMF(QTMSDTMF*& dtmf) + { + gint ret(QTMS_RESULT_SUCCESS); + delete (static_cast(dtmf)); + dtmf = NULL; + return ret; + } + +gint QTMSFactoryImpl::CreateRingTonePlayer(QTMSRingTone*& rt) + { + gint ret(QTMS_RESULT_SUCCESS); + + TMS::TMSRingTone* tmsrt = NULL; + + if (iFactory) + { + ret = iFactory->CreateRingTonePlayer(tmsrt); + + if (ret == TMS_RESULT_SUCCESS) + { + ret = QTMSRingToneImpl::Create(rt, tmsrt); + } + } + return ret; + } + +gint QTMSFactoryImpl::DeleteRingTonePlayer(QTMSRingTone*& rt) + { + gint ret(QTMS_RESULT_SUCCESS); + delete (static_cast(rt)); + rt = NULL; + return ret; + } + +gint QTMSFactoryImpl::CreateInbandTonePlayer(QTMSInbandTone*& qinbandtone) + { + gint ret(QTMS_RESULT_SUCCESS); + + TMS::TMSInbandTone* tmsinband = NULL; + if (iFactory) + { + ret = iFactory->CreateInbandTonePlayer(tmsinband); + + if (ret == TMS_RESULT_SUCCESS) + { + ret = QTMSInbandToneImpl::Create(qinbandtone, tmsinband); + } + } + return ret; + } + +gint QTMSFactoryImpl::DeleteInbandTonePlayer(QTMSInbandTone*& inbandtone) + { + gint ret(QTMS_RESULT_SUCCESS); + delete (static_cast(inbandtone)); + inbandtone = NULL; + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsformat.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsformat.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include + +using namespace QTMS; + +QTMSFormat::QTMSFormat() : + iFormat(NULL) + { + } + +QTMSFormat::~QTMSFormat() + { + delete iFormat; + } + +gint QTMSFormat::GetSupportedBitRates(BitRateVector& aVector) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = iFormat->GetSupportedBitRates(aVector); + } + return status; + } + +gint QTMSFormat::SetBitRate(const guint aBitrate) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = iFormat->SetBitRate(aBitrate); + } + return status; + } + +gint QTMSFormat::GetBitRate(guint& aBitrate) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = iFormat->GetBitRate(aBitrate); + } + return status; + } + +gint QTMSFormat::GetType(QTMSFormatType& fmttype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = iFormat->GetType(fmttype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsg711.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsg711.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include + +using namespace QTMS; +using namespace TMS; + +QTMSG711Format::QTMSG711Format() + { + } + +QTMSG711Format::~QTMSG711Format() + { + } + +gint QTMSG711Format::SetMode(const QTMSG711CodecMode aMode) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->SetMode(aMode); + } + return status; + } + +gint QTMSG711Format::GetMode(QTMSG711CodecMode& aMode) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->GetMode(aMode); + } + return status; + } + +gint QTMSG711Format::SetCNG(const gboolean aCng) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->SetCNG(aCng); + } + return status; + } + +gint QTMSG711Format::GetCNG(gboolean& aCng) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->GetCNG(aCng); + } + return status; + } + +gint QTMSG711Format::SetPlc(const gboolean aPlc) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->SetPlc(aPlc); + } + return status; + } + +gint QTMSG711Format::GetPlc(gboolean& aPlc) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->GetPlc(aPlc); + } + return status; + } + +gint QTMSG711Format::SetVADMode(const gboolean aVad) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->SetVADMode(aVad); + } + return status; + } + +gint QTMSG711Format::GetVADMode(gboolean& aVad) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->GetVADMode(aVad); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsg711impl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsg711impl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsg711impl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSG711FormatImpl::QTMSG711FormatImpl() + { + } + +QTMSG711FormatImpl::~QTMSG711FormatImpl() + { + } + +gint QTMSG711FormatImpl::Create(QTMSFormat*& qformat, + TMS::TMSFormat*& tmsformat) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSG711FormatImpl* self = new QTMSG711FormatImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iFormat = tmsformat; + } + qformat = self; + return ret; + } + +gint QTMSG711FormatImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSG711FormatImpl::GetFormat(TMS::TMSFormat*& fmt) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iFormat) + { + fmt = iFormat; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +gint QTMSG711FormatImpl::GetType(QTMSFormatType& fmttype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + //status = static_cast (iFormat)->GetType(fmttype); + status = iFormat->GetType(fmttype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsg729.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsg729.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" + +using namespace QTMS; +using namespace TMS; + +QTMSG729Format::QTMSG729Format() + { + } + +QTMSG729Format::~QTMSG729Format() + { + } + +gint QTMSG729Format::SetVADMode(const gboolean aVad) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->SetVADMode(aVad); + } + return status; + } + +gint QTMSG729Format::GetVADMode(gboolean& aVad) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->GetVADMode(aVad); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsg729impl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsg729impl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" +#include "qtmsg729impl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSG729FormatImpl::QTMSG729FormatImpl() + { + } + +QTMSG729FormatImpl::~QTMSG729FormatImpl() + { + TRACE_PRN_FN_ENT; + TRACE_PRN_FN_EXT; + } + +gint QTMSG729FormatImpl::Create(QTMSFormat*& qformat, + TMS::TMSFormat*& tmsformat) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSG729FormatImpl* self = new QTMSG729FormatImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iFormat = tmsformat; + } + qformat = self; + return ret; + } + +gint QTMSG729FormatImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSG729FormatImpl::GetFormat(TMS::TMSFormat*& fmt) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iFormat) + { + fmt = iFormat; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +gint QTMSG729FormatImpl::GetType(QTMSFormatType& fmttype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = iFormat->GetType(fmttype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsgaineffect.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsgaineffect.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsgaineffectimpl.h" +#include "qtmswrapperexport.h" + +using namespace QTMS; +using namespace TMS; + +QTMSGainEffect::QTMSGainEffect() : + iEffect(NULL) + { + } + +QTMSGainEffect::~QTMSGainEffect() + { + delete iEffect; + } + +gint QTMSGainEffect::GetLevel(guint& level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetLevel(level); + } + return status; + } + +gint QTMSGainEffect::SetLevel(const guint level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->SetLevel(level); + } + return status; + } + +gint QTMSGainEffect::GetMaxLevel(guint& level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetMaxLevel(level); + } + return status; + } + +gint QTMSGainEffect::GetType(QTMSSourceType& sourcetype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetType(sourcetype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsgaineffectimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsgaineffectimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsgaineffectimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSGainEffectImpl::QTMSGainEffectImpl() + { + } + +QTMSGainEffectImpl::~QTMSGainEffectImpl() + { + RemoveObserver(*this); + } + +gint QTMSGainEffectImpl::Create(QTMSEffect*& qgain, TMS::TMSEffect*& tmsgain) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSGainEffectImpl* self = new QTMSGainEffectImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iEffect = tmsgain; + ret = self->AddObserver(*self, NULL); + } + qgain = self; + return ret; + } + +gint QTMSGainEffectImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSGainEffectImpl::AddObserver(TMS::TMSEffectObserver& obsrvr, + gpointer /*user_data*/) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iEffect) + { + ret = static_cast (iEffect)->AddObserver(obsrvr, NULL); + } + return ret; + } + +gint QTMSGainEffectImpl::RemoveObserver(TMS::TMSEffectObserver& obsrvr) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iEffect) + { + ret = static_cast (iEffect)->RemoveObserver(obsrvr); + } + return ret; + } + +gint QTMSGainEffectImpl::GetEffect(TMS::TMSEffect*& tmseffect) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iEffect) + { + tmseffect = iEffect; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +void QTMSGainEffectImpl::EffectsEvent(const TMS::TMSEffect& /*tmseffect*/, + TMS::TMSSignalEvent event) + { + QTMSSignalEvent qevent; + + qevent.type = event.type; + qevent.reason = event.reason; + qevent.curr_state = event.curr_state; + qevent.prev_state = event.prev_state; + qevent.event_data = event.event_data; + qevent.user_data = event.user_data; + + emit QTMS::QTMSGainEffect::EffectsEvent(static_cast (*this), + qevent); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsglobalgaineffect.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsglobalgaineffect.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsglobalgaineffectimpl.h" +#include "qtmswrapperexport.h" + +using namespace QTMS; +using namespace TMS; + +QTMSGlobalGainEffect::QTMSGlobalGainEffect() : + iEffect(NULL) + { + } + +QTMSGlobalGainEffect::~QTMSGlobalGainEffect() + { + delete (static_cast(iEffect)); + } + +gint QTMSGlobalGainEffect::GetLevel(guint& level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetLevel(level); + } + return status; + } + +gint QTMSGlobalGainEffect::SetLevel(const guint level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->SetLevel(level); + } + return status; + } + +gint QTMSGlobalGainEffect::GetMaxLevel(guint& level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetMaxLevel( + level); + } + return status; + } + +gint QTMSGlobalGainEffect::GetType(QTMSSourceType& sourcetype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetType( + sourcetype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsglobalgaineffectimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsglobalgaineffectimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" +#include "qtmsglobalgaineffectimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSGlobalGainEffectImpl::QTMSGlobalGainEffectImpl() + { + } + +QTMSGlobalGainEffectImpl::~QTMSGlobalGainEffectImpl() + { + RemoveObserver(*this); + } + +gint QTMSGlobalGainEffectImpl::Create(QTMSEffect*& qglobalgain, + TMS::TMSEffect*& tmsglobalgain) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSGlobalGainEffectImpl* self = new QTMSGlobalGainEffectImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iEffect = tmsglobalgain; + ret = self->AddObserver(*self, NULL); + } + qglobalgain = self; + return ret; + } + +gint QTMSGlobalGainEffectImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSGlobalGainEffectImpl::AddObserver(TMS::TMSEffectObserver& obsrvr, + gpointer user_data) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iEffect) + { + ret = static_cast (iEffect)->AddObserver(obsrvr, + user_data); + } + return ret; + } + +gint QTMSGlobalGainEffectImpl::RemoveObserver(TMS::TMSEffectObserver& obsrvr) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iEffect) + { + ret = static_cast (iEffect)->RemoveObserver( + obsrvr); + } + return ret; + } + +void QTMSGlobalGainEffectImpl::EffectsEvent( + const TMS::TMSEffect& /*tmseffect*/, TMS::TMSSignalEvent event) + { + QTMSSignalEvent qevent; + + qevent.type = event.type; + qevent.reason = event.reason; + qevent.curr_state = event.curr_state; + qevent.prev_state = event.prev_state; + qevent.event_data = event.event_data; + qevent.user_data = event.user_data; + + emit QTMS::QTMSGlobalGainEffect::EffectsEvent( + static_cast (*this), qevent); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsglobalrouting.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsglobalrouting.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsglobalroutingimpl.h" +#include "qtmswrapperexport.h" + +using namespace QTMS; +using namespace TMS; + +QTMSGlobalRouting::QTMSGlobalRouting() : + iRouting(NULL) + { + } + +QTMSGlobalRouting::~QTMSGlobalRouting() + { + delete iRouting; + } + +gint QTMSGlobalRouting::SetOutput(const QTMSAudioOutput output) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iRouting) + { + status = iRouting->SetOutput(output); + } + return status; + } + +gint QTMSGlobalRouting::GetOutput(QTMSAudioOutput& output) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iRouting) + { + status = iRouting->GetOutput(output); + } + return status; + } + +gint QTMSGlobalRouting::GetPreviousOutput(QTMSAudioOutput& output) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iRouting) + { + status = iRouting->GetPreviousOutput(output); + } + return status; + } + +gint QTMSGlobalRouting::GetAvailableOutputs(OutputVector& outputs) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iRouting) + { + status = iRouting->GetAvailableOutputs(outputs); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsglobalroutingimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsglobalroutingimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" +#include "qtmsglobalroutingimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSGlobalRoutingImpl::QTMSGlobalRoutingImpl() + { + } + +QTMSGlobalRoutingImpl::~QTMSGlobalRoutingImpl() + { + RemoveObserver(*this); + } + +gint QTMSGlobalRoutingImpl::Create(QTMSGlobalRouting*& qrouting, + TMS::TMSGlobalRouting*& tmsrouting) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSGlobalRoutingImpl* self = new QTMSGlobalRoutingImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iRouting = tmsrouting; + ret = self->AddObserver(*self, NULL); + } + qrouting = self; + return ret; + } + +gint QTMSGlobalRoutingImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSGlobalRoutingImpl::AddObserver(TMS::TMSGlobalRoutingObserver& obsrvr, + gpointer user_data) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iRouting) + { + ret = iRouting->AddObserver(obsrvr, user_data); + } + return ret; + } + +gint QTMSGlobalRoutingImpl::RemoveObserver( + TMS::TMSGlobalRoutingObserver& obsrvr) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iRouting) + { + ret = iRouting->RemoveObserver(obsrvr); + } + return ret; + } + +void QTMSGlobalRoutingImpl::GlobalRoutingEvent( + const TMS::TMSGlobalRouting& /*routing*/, TMS::TMSSignalEvent event, + TMS::TMSAudioOutput output) + { + QTMSSignalEvent qevent; + QTMSAudioOutput qoutput; + + qevent.type = event.type; + qevent.reason = event.reason; + qevent.curr_state = event.curr_state; + qevent.prev_state = event.prev_state; + qevent.event_data = event.event_data; + qevent.user_data = event.user_data; + qoutput = output; + + emit QTMS::QTMSGlobalRouting::GlobalRoutingEvent( + static_cast (*this), qevent, qoutput); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsglobalvoleffect.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsglobalvoleffect.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsglobalvoleffectimpl.h" +#include "qtmswrapperexport.h" + +using namespace QTMS; +using namespace TMS; + +QTMSGlobalVolEffect::QTMSGlobalVolEffect() : + iEffect(NULL) + { + } + +QTMSGlobalVolEffect::~QTMSGlobalVolEffect() + { + delete (static_cast(iEffect)); + } + +gint QTMSGlobalVolEffect::GetLevel(guint& level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetLevel(level); + } + return status; + } + +gint QTMSGlobalVolEffect::SetLevel(const guint level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->SetLevel(level); + } + return status; + } + +gint QTMSGlobalVolEffect::GetMaxLevel(guint& level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetMaxLevel( + level); + } + return status; + } + +gint QTMSGlobalVolEffect::GetType(QTMSSourceType& sourcetype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetType( + sourcetype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsglobalvoleffectimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsglobalvoleffectimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" +#include "qtmsglobalvoleffectimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSGlobalVolEffectImpl::QTMSGlobalVolEffectImpl() + { + } + +QTMSGlobalVolEffectImpl::~QTMSGlobalVolEffectImpl() + { + RemoveObserver(*this); + } + +gint QTMSGlobalVolEffectImpl::Create(QTMSEffect*& qglobalvol, + TMS::TMSEffect*& tmsglobalvol) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSGlobalVolEffectImpl* self = new QTMSGlobalVolEffectImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iEffect = tmsglobalvol; + ret = self->AddObserver(*self, NULL); + } + qglobalvol = self; + return ret; + } + +gint QTMSGlobalVolEffectImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSGlobalVolEffectImpl::AddObserver(TMS::TMSEffectObserver& obsrvr, + gpointer user_data) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iEffect) + { + ret = static_cast (iEffect)->AddObserver(obsrvr, + user_data); + } + return ret; + } + +gint QTMSGlobalVolEffectImpl::RemoveObserver(TMS::TMSEffectObserver& obsrvr) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iEffect) + { + ret = static_cast (iEffect)->RemoveObserver( + obsrvr); + } + return ret; + } + +void QTMSGlobalVolEffectImpl::EffectsEvent(const TMS::TMSEffect& /*tmseffect*/, + TMS::TMSSignalEvent event) + { + QTMSSignalEvent qevent; + + qevent.type = event.type; + qevent.reason = event.reason; + qevent.curr_state = event.curr_state; + qevent.prev_state = event.prev_state; + qevent.event_data = event.event_data; + qevent.user_data = event.user_data; + + emit QTMS::QTMSGlobalVolEffect::EffectsEvent(static_cast + (*this), qevent); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsilbc.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsilbc.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" + +using namespace QTMS; +using namespace TMS; + +QTMSILBCFormat::QTMSILBCFormat() + { + } + +QTMSILBCFormat::~QTMSILBCFormat() + { + // iFormat is deleted with QTMSFormat::iFormat + } + +gint QTMSILBCFormat::SetMode(const QTMSG711CodecMode aMode) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->SetMode(aMode); + } + return status; + } + +gint QTMSILBCFormat::GetMode(QTMSG711CodecMode& aMode) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->GetMode(aMode); + } + return status; + } + +gint QTMSILBCFormat::SetCNG(const gboolean aCng) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->SetCNG(aCng); + } + return status; + } + +gint QTMSILBCFormat::GetCNG(gboolean& aCng) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->GetCNG(aCng); + } + return status; + } + +gint QTMSILBCFormat::SetVADMode(const gboolean aVad) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->SetVADMode(aVad); + } + return status; + } + +gint QTMSILBCFormat::GetVADMode(gboolean& aVad) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = static_cast (iFormat)->GetVADMode(aVad); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsilbcimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsilbcimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsilbcimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSILBCFormatImpl::QTMSILBCFormatImpl() + { + } + +QTMSILBCFormatImpl::~QTMSILBCFormatImpl() + { + } + +gint QTMSILBCFormatImpl::Create(QTMSFormat*& qformat, + TMS::TMSFormat*& tmsformat) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSILBCFormatImpl* self = new QTMSILBCFormatImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iFormat = tmsformat; + } + qformat = self; + return ret; + } + +gint QTMSILBCFormatImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSILBCFormatImpl::GetFormat(TMS::TMSFormat*& fmt) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iFormat) + { + fmt = iFormat; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +gint QTMSILBCFormatImpl::GetType(QTMSFormatType& fmttype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = iFormat->GetType(fmttype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsinbandtone.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsinbandtone.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmswrapperexport.h" +#include "qtmsinbandtoneimpl.h" + +using namespace QTMS; + +QTMSInbandTone::QTMSInbandTone(void) : + iInbandTone(NULL) + { + } + +QTMSInbandTone::~QTMSInbandTone(void) + { + delete iInbandTone; + } + +gint QTMSInbandTone::Start(QTMSInbandToneType inbandtonetype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iInbandTone) + { + status = iInbandTone->Start(inbandtonetype); + } + return status; + } + +gint QTMSInbandTone::Stop() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iInbandTone) + { + status = iInbandTone->Stop(); + } + return status; + } + diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsinbandtoneimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsinbandtoneimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" +#include "qtmsinbandtoneimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSInbandToneImpl::QTMSInbandToneImpl() + { + } + +QTMSInbandToneImpl::~QTMSInbandToneImpl() + { + RemoveObserver(*this); + } + +gint QTMSInbandToneImpl::Create(QTMSInbandTone*& qinband, + TMS::TMSInbandTone*& tmsinband) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSInbandToneImpl* self = new QTMSInbandToneImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iInbandTone = tmsinband; + self->AddObserver(*self, NULL); + } + qinband = self; + return ret; + } + +gint QTMSInbandToneImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSInbandToneImpl::AddObserver(TMS::TMSInbandToneObserver& obsrvr, + gpointer user_data) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iInbandTone) + { + ret = iInbandTone->AddObserver(obsrvr, user_data); + } + return ret; + } + +gint QTMSInbandToneImpl::RemoveObserver(TMS::TMSInbandToneObserver& obsrvr) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iInbandTone) + { + ret = iInbandTone->RemoveObserver(obsrvr); + } + return ret; + } + +void QTMSInbandToneImpl::InbandToneEvent( + const TMS::TMSInbandTone& /*inbandtone*/, TMS::TMSSignalEvent event) + { + QTMSSignalEvent qevent; + + qevent.type = event.type; + qevent.reason = event.reason; + qevent.curr_state = event.curr_state; + qevent.prev_state = event.prev_state; + qevent.event_data = event.event_data; + qevent.user_data = event.user_data; + + emit QTMS::QTMSInbandTone::InbandToneEvent( + static_cast (*this), qevent); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsipcallbodyimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsipcallbodyimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsstreamimpl.h" +#include "tmsutility.h" +#include "qtmsipcallimpl.h" + +using namespace QTMS; + +QTMSIPCallImpl::QTMSIPCallImpl() + { + TRACE_PRN_FN_ENT; + TRACE_PRN_FN_EXT; + } + +QTMSIPCallImpl::~QTMSIPCallImpl() + { + TRACE_PRN_FN_ENT; + + TRACE_PRN_FN_EXT; + } + +/* +gint QTMSIPCallImpl::Create(QTMSCallBody*& bodyimpl) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSIPCallImpl* self = new QTMSIPCallImpl; + + TRACE_PRN_FN_ENT; + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + } + bodyimpl = self; + + TRACE_PRN_FN_EXT; + return ret; + } +*/ +gint QTMSIPCallImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + TRACE_PRN_FN_ENT; + + + TRACE_PRN_FN_EXT; + return ret; + } + +QTMSCallType QTMSIPCallImpl::GetCallType() + { + QTMSCallType ctype(QTMS_CALL_IP); + return ctype; + } + +gint QTMSIPCallImpl::GetCallContextId(guint& ctxid) + { + gint ret(QTMS_RESULT_FEATURE_NOT_SUPPORTED); + ctxid = 0; + return ret; + } + +gint QTMSIPCallImpl::CreateStream(QTMSStreamType type, QTMSStream*& strm) + { + gint ret(QTMS_RESULT_CALL_TYPE_NOT_SUPPORTED); + strm = NULL; + switch (type) + { + case QTMS_STREAM_UPLINK: + case QTMS_STREAM_DOWNLINK: + // ret = QTMSStreamImpl::Create(QTMS_CALL_IP, type, iSession, strm); + break; + default: + break; + } + TRACE_PRN_FN_EXT; + return ret; + } + +gint QTMSIPCallImpl::DeleteStream(QTMSStream*& /*strm*/) + { + gint ret(QTMS_RESULT_SUCCESS); + TRACE_PRN_FN_ENT; + // ret = RemStreamFromList(strm); + TRACE_PRN_FN_EXT; + return ret; + } + +gint QTMSIPCallImpl::AddStreamToList(QTMSStream* /*strm*/) + { + gint ret(QTMS_RESULT_SUCCESS); + TRACE_PRN_FN_ENT; + // iStreamsVector.push_back(strm); + TRACE_PRN_FN_EXT; + return ret; + } + +gint QTMSIPCallImpl::RemStreamFromList(QTMSStream*& /*strm*/) + { + gint ret(QTMS_RESULT_DOES_NOT_EXIST); + + TRACE_PRN_FN_EXT; + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsmembuffer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsmembuffer.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsmembuffer.h" +#include "tmsutility.h" + +using namespace QTMS; +using namespace TMS; + +QTMSMemBuffer::QTMSMemBuffer() : + iBufferSize(0), + iTimeStamp(0), + iDataPtr(NULL), + iOwnsBuffer(FALSE) + { + } + +QTMSMemBuffer::~QTMSMemBuffer() + { + if (iOwnsBuffer) + { + free(iDataPtr); + } + } + +gint QTMSMemBuffer::Create(guint size, QTMSBuffer*& tmsbuffer) + { + gint ret(TMS_RESULT_INSUFFICIENT_MEMORY); + TRACE_PRN_FN_ENT; + QTMSMemBuffer* self = new QTMSMemBuffer(); + if (self) + { + ret = self->PostConstruct(size); + if (ret != TMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + } + tmsbuffer = self; + TRACE_PRN_FN_EXT; + return ret; + } + +gint QTMSMemBuffer::PostConstruct(guint size) + { + gint ret(TMS_RESULT_SUCCESS); + TRACE_PRN_FN_ENT; + iDataPtr = (guint8*) malloc(size); + if (!iDataPtr) + { + ret = TMS_RESULT_INSUFFICIENT_MEMORY; + } + iOwnsBuffer = TRUE; + iBufferSize = size; + TRACE_PRN_FN_EXT; + return ret; + } + +gint QTMSMemBuffer::GetType(QTMSBufferType& buffertype) + { + gint ret(TMS_RESULT_SUCCESS); + buffertype = TMS_BUFFER_MEMORY; + return ret; + } + +// Implementation of TMSBuffer interface begins +/** + Gets the timestamp on the Buffer so that the framework can + determine the time at which this buffer has to be rendered + by the output device sink. + + @param ts + timestamp in microseconds + + */ +gint QTMSMemBuffer::GetTimeStamp(guint64& ts) + { + gint ret(TMS_RESULT_SUCCESS); + ts = iTimeStamp; + return ret; + } + +/** + Sets the timestamp on the Buffer so that the framework can + determine the time at which this buffer has to be rendered + by the output device sink. + + @param ts + timestamp in milliseconds + + */ +gint QTMSMemBuffer::SetTimeStamp(const guint64 ts) + { + gint ret(TMS_RESULT_SUCCESS); + iTimeStamp = ts; + return ret; + } + +/** + Gets the size of data in the buffer specified by the client. + + @param size + size of data in bytes + + */ +gint QTMSMemBuffer::GetDataSize(guint& size) + { + gint ret(TMS_RESULT_SUCCESS); + size = iBufferSize; + return ret; + } + +/** + Sets the size of data in the buffer after the client + fill it. + + @param size + size of data in bytes + + */ +gint QTMSMemBuffer::SetDataSize(const guint size) + { + gint ret(TMS_RESULT_SUCCESS); + iBufferSize = size; + return ret; + } + +/** + Gets the pointer to the memory location associated with this + buffer where the data is stored. + + @param bufptr + ptr to the data stored in the buffer. + + */ +gint QTMSMemBuffer::GetDataPtr(guint8*& bufptr) + { + gint ret(TMS_RESULT_SUCCESS); + bufptr = iDataPtr; + return ret; + } + diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsmicsource.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsmicsource.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsmicsourceimpl.h" +#include "qtmswrapperexport.h" + +using namespace QTMS; +using namespace TMS; + +QTMSMicSource::QTMSMicSource() : + iSource(NULL) + { + } + +QTMSMicSource::~QTMSMicSource() + { + delete iSource; + } + +gint QTMSMicSource::GetType(QTMSSourceType& sourcetype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + //status = iSource->GetType(sourcetype); + status = static_cast (iSource)->GetType(sourcetype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsmicsourceimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsmicsourceimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsmicsourceimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSMicSourceImpl::QTMSMicSourceImpl() + { + } + +QTMSMicSourceImpl::~QTMSMicSourceImpl() + { + } + +gint QTMSMicSourceImpl::Create(QTMSSource*& qsource, TMS::TMSSource*& tmssource) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSMicSourceImpl* self = new QTMSMicSourceImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iSource = tmssource; + } + qsource = self; + return ret; + } + +gint QTMSMicSourceImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSMicSourceImpl::GetSource(TMS::TMSSource*& tmssource) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + tmssource = iSource; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsmodemsink.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsmodemsink.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsmodemsinkimpl.h" +#include "qtmswrapperexport.h" + +using namespace QTMS; +using namespace TMS; + +QTMSModemSink::QTMSModemSink() : + iSink(NULL) + { + } + +QTMSModemSink::~QTMSModemSink() + { + delete iSink; + } + +gint QTMSModemSink::GetType(QTMSSinkType& sinktype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSink) + { + //status = iSink->GetType(sinktype); + status = static_cast (iSink)->GetType(sinktype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsmodemsinkimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsmodemsinkimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsmodemsinkimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSModemSinkImpl::QTMSModemSinkImpl() + { + } + +QTMSModemSinkImpl::~QTMSModemSinkImpl() + { + } + +gint QTMSModemSinkImpl::Create(QTMSSink*& qsink,TMS::TMSSink*& tmssink) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSModemSinkImpl* self = new QTMSModemSinkImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iSink = tmssink; + } + qsink = self; + return ret; + } + +gint QTMSModemSinkImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSModemSinkImpl::GetSink(TMS::TMSSink*& tmssink) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSink) + { + tmssink = iSink; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsmodemsource.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsmodemsource.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include + +using namespace QTMS; +using namespace TMS; + +QTMSModemSource::QTMSModemSource() : + iSource(NULL) + { + } + +QTMSModemSource::~QTMSModemSource() + { + delete iSource; + } + +gint QTMSModemSource::GetType(QTMSSourceType& sourcetype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + //status = iSource->GetType(sourcetype); + status = static_cast (iSource)->GetType(sourcetype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsmodemsourceimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsmodemsourceimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsmodemsourceimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSModemSourceImpl::QTMSModemSourceImpl() + { + } + +QTMSModemSourceImpl::~QTMSModemSourceImpl() + { + } + +gint QTMSModemSourceImpl::Create(QTMSSource*& qsource, + TMS::TMSSource*& tmssource) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSModemSourceImpl* self = new QTMSModemSourceImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iSource = tmssource; + } + qsource = self; + return ret; + } + +gint QTMSModemSourceImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSModemSourceImpl::GetSource(TMS::TMSSource*& tmssource) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSource) + { + tmssource = iSource; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmspcm.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmspcm.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include + +using namespace QTMS; + +QTMSPCMFormat::QTMSPCMFormat() + { + } + +QTMSPCMFormat::~QTMSPCMFormat() + { + // iFormat is deleted with QTMSFormat::iFormat + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmspcmimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmspcmimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" +#include "qtmspcmimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSPCMFormatImpl::QTMSPCMFormatImpl() + { + } + +QTMSPCMFormatImpl::~QTMSPCMFormatImpl() + { + TRACE_PRN_FN_ENT; + TRACE_PRN_FN_EXT; + } + +gint QTMSPCMFormatImpl::Create(QTMSFormat*& qformat, TMS::TMSFormat*& tmsformat) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSPCMFormatImpl* self = new QTMSPCMFormatImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iFormat = tmsformat; + } + qformat = self; + return ret; + } + +gint QTMSPCMFormatImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSPCMFormatImpl::GetFormat(TMS::TMSFormat*& fmt) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iFormat) + { + fmt = iFormat; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +gint QTMSPCMFormatImpl::GetType(QTMSFormatType& fmttype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iFormat) + { + status = iFormat->GetType(fmttype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsringtone.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsringtone.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsringtoneimpl.h" + +using namespace QTMS; + +QTMSRingTone::QTMSRingTone() : + iRingTone(NULL) + { + } + +QTMSRingTone::~QTMSRingTone() + { + delete iRingTone; + } + +gint QTMSRingTone::Init(const QTMSRingToneType type, GString* str, GString* tts) + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (iRingTone) + { + status = iRingTone->Init(type, str, tts); + } + return status; + } + +gint QTMSRingTone::Deinit() + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (iRingTone) + { + status = iRingTone->Deinit(); + } + return status; + } + +gint QTMSRingTone::Play() + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (iRingTone) + { + status = iRingTone->Play(); + } + return status; + } + +gint QTMSRingTone::Stop() + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (iRingTone) + { + status = iRingTone->Stop(); + } + return status; + } + +gint QTMSRingTone::Pause() + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (iRingTone) + { + status = iRingTone->Pause(); + } + return status; + } + +gint QTMSRingTone::Mute() + { + gint status(TMS_RESULT_UNINITIALIZED_OBJECT); + if (iRingTone) + { + status = iRingTone->Mute(); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsringtoneimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsringtoneimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "tmsutility.h" +#include "qtmsringtoneimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSRingToneImpl::QTMSRingToneImpl() + { + } + +QTMSRingToneImpl::~QTMSRingToneImpl() + { + RemoveObserver(*this); + } + +gint QTMSRingToneImpl::Create(QTMSRingTone*& qrt, TMS::TMSRingTone*& tmsrt) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSRingToneImpl* self = new QTMSRingToneImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iRingTone = tmsrt; + ret = self->AddObserver(*self, NULL); + } + qrt = self; + return ret; + } + +gint QTMSRingToneImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSRingToneImpl::AddObserver(TMS::TMSRingToneObserver& obsrvr, + gpointer user_data) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iRingTone) + { + ret = iRingTone->AddObserver(obsrvr, user_data); + } + return ret; + } + +gint QTMSRingToneImpl::RemoveObserver(TMS::TMSRingToneObserver& obsrvr) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iRingTone) + { + ret = iRingTone->RemoveObserver(obsrvr); + } + return ret; + } + +void QTMSRingToneImpl::RingtoneEvent(const TMS::TMSRingTone& /*rt*/, + TMS::TMSSignalEvent event) + { + QTMSSignalEvent qevent; + qevent.type = event.type; + qevent.reason = event.reason; + qevent.curr_state = event.curr_state; + qevent.prev_state = event.prev_state; + qevent.event_data = event.event_data; + qevent.user_data = event.user_data; + + emit QTMS::QTMSRingTone::RingtoneEvent(static_cast (*this), + qevent); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmssinkimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmssinkimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +//#include "qtmsclientsinkimpl.h" +#include "tmsutility.h" +#include "qtmssinkimpl.h" +//#include "qtmsmodemsinkimpl.h" +//#include "qtmsspeakersinkimpl.h" + +using namespace QTMS; + +gint QTMSSinkImpl::Create(QTMSSinkType /*sinktype*/, QTMSSink*& /*qtmssink*/) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + TRACE_PRN_FN_ENT; + /* switch (sinktype) + { + case QTMS_SINK_CLIENT: + ret = QTMSClientSinkImpl::Create(QTMSsink); + break; + case QTMS_SINK_MODEM: + ret = QTMSModemSinkImpl::Create(QTMSsink); + break; + case QTMS_SINK_SPEAKER: + ret = QTMSSpeakerSinkImpl::Create(QTMSsink); + break; + default: + ret = QTMS_RESULT_SINK_TYPE_NOT_SUPPORTED; + break; + } + + TRACE_PRN_FN_EXT; + */ + return ret; + } + +gint QTMSSinkImpl::Delete(QTMSSink*& /*qtmssink*/) + { + gint ret(QTMS_RESULT_INVALID_ARGUMENT); + TRACE_PRN_FN_ENT; + /* QTMSSinkType sinktype; + ret = QTMSsink->GetType(sinktype); + switch (sinktype) + { + case QTMS_SINK_CLIENT: + { + delete (QTMSClientSinkImpl*) (QTMSsink); + QTMSsink = NULL; + ret = QTMS_RESULT_SUCCESS; + } + break; + case QTMS_SINK_MODEM: + { + delete (QTMSModemSinkImpl*) (QTMSsink); + QTMSsink = NULL; + ret = QTMS_RESULT_SUCCESS; + } + break; + case QTMS_SINK_SPEAKER: + { + delete (QTMSSpeakerSinkImpl*) (QTMSsink); + QTMSsink = NULL; + ret = QTMS_RESULT_SUCCESS; + } + break; + default: + ret = QTMS_RESULT_SINK_TYPE_NOT_SUPPORTED; + break; + } + + TRACE_PRN_FN_EXT; + */ + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmssourceimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmssourceimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +//#include "qtmsclientsourceimpl.h" +#include "tmsutility.h" +#include "qtmssourceimpl.h" +//#include "qtmsmodemsourceimpl.h" +//#include "qtmsmicsourceimpl.h" + +using namespace QTMS; + +gint QTMSSourceImpl::Create(QTMSSourceType /*sourcetype*/, + QTMSSource*& /*qtmssource*/) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + /* TRACE_PRN_FN_ENT; + switch (sourcetype) + { + case QTMS_SOURCE_CLIENT: + ret = QTMSClientSourceImpl::Create(QTMSsource); + break; + case QTMS_SOURCE_MODEM: + ret = QTMSModemSourceImpl::Create(QTMSsource); + break; + case QTMS_SOURCE_MIC: + ret = QTMSMicSourceImpl::Create(QTMSsource); + break; + default: + ret = QTMS_RESULT_SOURCE_TYPE_NOT_SUPPORTED; + break; + } + + TRACE_PRN_FN_EXT; + */ + return ret; + } + +gint QTMSSourceImpl::Delete(QTMSSource*& /*qtmssource*/) + { + gint ret(QTMS_RESULT_INVALID_ARGUMENT); + TRACE_PRN_FN_ENT; + /* QTMSSourceType sourcetype; + ret = QTMSsource->GetType(sourcetype); + switch (sourcetype) + { + case QTMS_SOURCE_CLIENT: + delete (QTMSClientSourceImpl*) (QTMSsource); + QTMSsource = NULL; + ret = QTMS_RESULT_SUCCESS; + break; + case QTMS_SOURCE_MODEM: + { + delete (QTMSModemSourceImpl*) (QTMSsource); + QTMSsource = NULL; + ret = QTMS_RESULT_SUCCESS; + } + break; + case QTMS_SOURCE_MIC: + { + delete (QTMSMicSourceImpl*) (QTMSsource); + QTMSsource = NULL; + ret = QTMS_RESULT_SUCCESS; + } + break; + default: + ret = QTMS_RESULT_SOURCE_TYPE_NOT_SUPPORTED; + break; + } + + TRACE_PRN_FN_EXT; + */ + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsspeakersink.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsspeakersink.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include + +using namespace QTMS; +using namespace TMS; + +QTMSSpeakerSink::QTMSSpeakerSink() : + iSink(NULL) + { + } + +QTMSSpeakerSink::~QTMSSpeakerSink() + { + delete iSink; + } + +gint QTMSSpeakerSink::GetType(QTMSSinkType& sinktype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iSink) + { + //status = iSink->GetType(sinktype); //should be ok + status = static_cast (iSink)->GetType(sinktype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsspeakersinkimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsspeakersinkimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsspeakersinkimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSSpeakerSinkImpl::QTMSSpeakerSinkImpl() + { + } + +QTMSSpeakerSinkImpl::~QTMSSpeakerSinkImpl() + { + } + +gint QTMSSpeakerSinkImpl::Create(QTMSSink*& qsink, TMS::TMSSink*& tmssink) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSSpeakerSinkImpl* self = new QTMSSpeakerSinkImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iSink = tmssink; + } + qsink = self; + return ret; + } + +gint QTMSSpeakerSinkImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSSpeakerSinkImpl::GetSink(TMS::TMSSink*& tmssink) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iSink) + { + tmssink = iSink; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsstream.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsstream.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,411 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include +#include +#include +#include "qtmsstreamimpl.h" +#include "qtmssource.h" +#include "qtmsclientsourceimpl.h" +#include "qtmsmodemsourceimpl.h" +#include "qtmsmicsourceimpl.h" +#include "qtmsclientsinkimpl.h" +#include "qtmsmodemsinkimpl.h" +#include "qtmsspeakersinkimpl.h" +#include "qtmspcmimpl.h" +#include "qtmsamrimpl.h" +#include "qtmsg711impl.h" +#include "qtmsg729impl.h" +#include "qtmsilbcimpl.h" +#include "qtmsvolumeeffectimpl.h" +#include "qtmsgaineffectimpl.h" +#include "qtmswrapperexport.h" + +using namespace QTMS; +using namespace TMS; + +QTMSStream::QTMSStream(void) : + iStream(NULL) + { + } + +QTMSStream::~QTMSStream() + { + //delete iStream; + //delete (static_cast (iStream)); + } + +gint QTMSStream::AddSource(QTMSSource* qsource) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iStream && qsource) + { + QTMSSourceType qsrctype; + TMSSource* tmssource(NULL); + + qsource->GetType(qsrctype); + + switch (qsrctype) + { + case QTMS_SOURCE_CLIENT: + status = static_cast + (qsource)->GetSource(tmssource); + break; + case QTMS_SOURCE_MODEM: + status = static_cast + (qsource)->GetSource(tmssource); + break; + case QTMS_SOURCE_MIC: + status = static_cast + (qsource)->GetSource(tmssource); + break; + default: + break; + } + if (status == QTMS_RESULT_SUCCESS && tmssource) + { + status = iStream->AddSource(tmssource); + } + } + return status; + } + +gint QTMSStream::RemoveSource(QTMSSource* qsource) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iStream && qsource) + { + QTMSSourceType qsrctype; + TMSSource* tmssource(NULL); + + qsource->GetType(qsrctype); + + switch (qsrctype) + { + case QTMS_SOURCE_CLIENT: + status = static_cast + (qsource)->GetSource(tmssource); + break; + case QTMS_SOURCE_MODEM: + status = static_cast + (qsource)->GetSource(tmssource); + break; + case QTMS_SOURCE_MIC: + status = static_cast + (qsource)->GetSource(tmssource); + break; + default: + break; + } + if (status == QTMS_RESULT_SUCCESS && tmssource) + { + status = iStream->RemoveSource(tmssource); + } + } + + return status; + } + +gint QTMSStream::AddSink(QTMSSink* qsink) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iStream && qsink) + { + QTMSSinkType qsinktype; + TMSSink* tmssink(NULL); + + qsink->GetType(qsinktype); + + switch (qsinktype) + { + case QTMS_SINK_CLIENT: + status = static_cast + (qsink)->GetSink(tmssink); + break; + case QTMS_SINK_MODEM: + status = static_cast + (qsink)->GetSink(tmssink); + break; + case QTMS_SINK_SPEAKER: + status = static_cast + (qsink)->GetSink(tmssink); + break; + default: + break; + } + if (status == QTMS_RESULT_SUCCESS && tmssink) + { + status = iStream->AddSink(tmssink); + } + } + return status; + } + +gint QTMSStream::RemoveSink(QTMSSink* qsink) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iStream && qsink) + { + QTMSSinkType qsinktype; + TMSSink* tmssink(NULL); + + qsink->GetType(qsinktype); + + switch (qsinktype) + { + case QTMS_SINK_CLIENT: + status = static_cast + (qsink)->GetSink(tmssink); + break; + case QTMS_SINK_MODEM: + status = static_cast + (qsink)->GetSink(tmssink); + break; + case QTMS_SINK_SPEAKER: + status = static_cast + (qsink)->GetSink(tmssink); + break; + default: + break; + } + if (status == QTMS_RESULT_SUCCESS && tmssink) + { + status = iStream->RemoveSink(tmssink); + } + } + + return status; + } + +gint QTMSStream::SetFormat(QTMSFormat* qformat) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iStream && qformat) + { + QTMSFormatType fmttype; + TMSFormat* tmsformat(NULL); + qformat->GetType(fmttype); + switch (fmttype) + { + case QTMS_FORMAT_PCM: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + case QTMS_FORMAT_AMR: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + case QTMS_FORMAT_G711: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + case QTMS_FORMAT_G729: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + case QTMS_FORMAT_ILBC: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + default: + break; + } + + status = iStream->SetFormat(tmsformat); + } + return status; + } + +gint QTMSStream::ResetFormat(QTMSFormat* qformat) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iStream && qformat) + { + QTMSFormatType fmttype; + TMSFormat* tmsformat(NULL); + qformat->GetType(fmttype); + switch (fmttype) + { + case QTMS_FORMAT_PCM: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + case QTMS_FORMAT_AMR: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + case QTMS_FORMAT_G711: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + case QTMS_FORMAT_G729: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + case QTMS_FORMAT_ILBC: + status = static_cast + (qformat)->GetFormat(tmsformat); + break; + default: + break; + } + + status = iStream->ResetFormat(tmsformat); + } + return status; + } + +gint QTMSStream::AddEffect(QTMSEffect* qeffect) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iStream && qeffect) + { + QTMSEffectType effecttype; + TMSEffect* tmseffect(NULL); + qeffect->GetType(effecttype); + + switch (effecttype) + { + case QTMS_EFFECT_VOLUME: + status = static_cast + (qeffect)->GetEffect(tmseffect); + break; + case QTMS_EFFECT_GAIN: + status = static_cast + (qeffect)->GetEffect(tmseffect); + break; + default: + break; + } + status = iStream->AddEffect(tmseffect); + } + return status; + } + +gint QTMSStream::RemoveEffect(QTMSEffect* qeffect) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iStream && qeffect) + { + QTMSEffectType effecttype; + TMSEffect* tmseffect(NULL); + qeffect->GetType(effecttype); + + switch (effecttype) + { + case QTMS_EFFECT_VOLUME: + status = static_cast + (qeffect)->GetEffect(tmseffect); + break; + case QTMS_EFFECT_GAIN: + status = static_cast + (qeffect)->GetEffect(tmseffect); + break; + default: + break; + } + status = iStream->RemoveEffect(tmseffect); + } + return status; + } + +gint QTMSStream::GetState() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iStream) + { + status = iStream->GetState(); + } + return status; + } + +gint QTMSStream::GetStreamType() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iStream) + { + status = iStream->GetStreamType(); + } + return status; + } + +gint QTMSStream::GetStreamId() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iStream) + { + status = iStream->GetStreamId(); + } + return status; + } + +gint QTMSStream::Init() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iStream) + { + status = iStream->Init(); + } + return status; + } + +gint QTMSStream::Pause() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iStream) + { + status = iStream->Pause(); + } + return status; + } + +gint QTMSStream::Start() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iStream) + { + status = iStream->Start(); + } + return status; + } + +gint QTMSStream::Stop() + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iStream) + { + status = iStream->Stop(); + } + return status; + } + +void QTMSStream::Deinit() + { + if (iStream) + { + iStream->Deinit(); + } + } + diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsstreamimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsstreamimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include +#include "tmsutility.h" +#include "qtmsstreamimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSStreamImpl::QTMSStreamImpl() + { + } + +QTMSStreamImpl::~QTMSStreamImpl() + { + RemoveObserver(*this); + } + +gint QTMSStreamImpl::Create(QTMSCallType callType, QTMSStreamType stype, + QTMSStream*& qstrm, TMS::TMSStream*& tmsstrm) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSStreamImpl* self = new QTMSStreamImpl(); + if (self) + { + ret = self->PostConstruct(callType, stype, *self); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iStream = tmsstrm; + self->AddObserver(*self, NULL); + } + qstrm = self; + return ret; + } + +gint QTMSStreamImpl::PostConstruct(QTMSCallType /*callType*/, + QTMSStreamType /*stype*/, QTMSStream& /*parent*/) + { + gint status(QTMS_RESULT_SUCCESS); + return status; + } + +gint QTMSStreamImpl::AddObserver(TMS::TMSStreamObserver& obsrvr, + gpointer user_data) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iStream) + { + iStream->AddObserver(obsrvr, user_data); + } + + return ret; + } + +gint QTMSStreamImpl::RemoveObserver(TMS::TMSStreamObserver& obsrvr) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iStream) + { + ret = iStream->RemoveObserver(obsrvr); + } + + return ret; + } + +void QTMSStreamImpl::TMSStreamEvent(const TMS::TMSStream& stream, + TMS::TMSSignalEvent event) + { + QTMSSignalEvent qevent; + + qevent.type = event.type; + qevent.reason = event.reason; + qevent.curr_state = event.curr_state; + qevent.prev_state = event.prev_state; + qevent.event_data = event.event_data; + qevent.user_data = event.user_data; + + emit QTMS::QTMSStream::TMSStreamEvent(static_cast (*this), + qevent); + } diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsvolumeeffect.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsvolumeeffect.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsvolumeeffectimpl.h" +#include "qtmswrapperexport.h" + +using namespace QTMS; +using namespace TMS; + +QTMSVolumeEffect::QTMSVolumeEffect() : + iEffect(NULL) + { + } + +QTMSVolumeEffect::~QTMSVolumeEffect() + { + delete iEffect; + } + +gint QTMSVolumeEffect::GetLevel(guint& level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetLevel(level); + } + return status; + } + +gint QTMSVolumeEffect::SetLevel(const guint level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->SetLevel(level); + } + return status; + } + +gint QTMSVolumeEffect::GetMaxLevel(guint& level) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetMaxLevel(level); + } + return status; + } + +gint QTMSVolumeEffect::GetType(QTMSSourceType& sourcetype) + { + gint status(QTMS_RESULT_UNINITIALIZED_OBJECT); + if (iEffect) + { + status = static_cast (iEffect)->GetType(sourcetype); + } + return status; + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb qtms/src/qtmsvolumeeffectimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/qtms/src/qtmsvolumeeffectimpl.cpp Fri May 14 16:21:14 2010 +0300 @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2010 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: QT Bindings for TMS + * + */ + +#include +#include +#include "qtmsvolumeeffectimpl.h" + +using namespace QTMS; +using namespace TMS; + +QTMSVolumeEffectImpl::QTMSVolumeEffectImpl() + { + } + +QTMSVolumeEffectImpl::~QTMSVolumeEffectImpl() + { + RemoveObserver(*this); + } + +gint QTMSVolumeEffectImpl::Create(QTMSEffect*& qvol, TMS::TMSEffect*& tmsvol) + { + gint ret(QTMS_RESULT_INSUFFICIENT_MEMORY); + QTMSVolumeEffectImpl* self = new QTMSVolumeEffectImpl(); + if (self) + { + ret = self->PostConstruct(); + if (ret != QTMS_RESULT_SUCCESS) + { + delete self; + self = NULL; + } + self->iEffect = tmsvol; + ret = self->AddObserver(*self, NULL); + } + qvol = self; + return ret; + } + +gint QTMSVolumeEffectImpl::PostConstruct() + { + gint ret(QTMS_RESULT_SUCCESS); + return ret; + } + +gint QTMSVolumeEffectImpl::AddObserver(TMS::TMSEffectObserver& obsrvr, + gpointer /*user_data*/) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iEffect) + { + ret = static_cast (iEffect)->AddObserver(obsrvr, + NULL); + } + return ret; + } + +gint QTMSVolumeEffectImpl::RemoveObserver(TMS::TMSEffectObserver& obsrvr) + { + gint ret(QTMS_RESULT_SUCCESS); + + if (iEffect) + { + ret = static_cast (iEffect)->RemoveObserver(obsrvr); + } + return ret; + } + +gint QTMSVolumeEffectImpl::GetEffect(TMS::TMSEffect*& tmseffect) + { + gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT); + + if (iEffect) + { + tmseffect = iEffect; + ret = QTMS_RESULT_SUCCESS; + } + return ret; + } + +void QTMSVolumeEffectImpl::EffectsEvent(const TMS::TMSEffect& /*tmseffect*/, + TMS::TMSSignalEvent event) + { + QTMSSignalEvent qevent; + + qevent.type = event.type; + qevent.reason = event.reason; + qevent.curr_state = event.curr_state; + qevent.prev_state = event.prev_state; + qevent.event_data = event.event_data; + qevent.user_data = event.user_data; + + emit QTMS::QTMSVolumeEffect::EffectsEvent( + static_cast (*this), qevent); + } + +// End of file diff -r d881023c13eb -r cbb1bfb7ebfb sysdef_1_4_0.dtd --- a/sysdef_1_4_0.dtd Mon May 03 12:58:40 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -