--- 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 @@
<module name="mmappfw">
<unit unitID="mmappfw" mrp="" bldFile="&layer_real_source_path;/group" name="mmappfw" />
<unit unitID="mpxviewframeworkqt" name="mpxviewframeworkqt" bldFile="&layer_real_source_path;/mpx/mpxviewframeworkqt" proFile="mpxviewframeworkqt.pro" qmakeArgs="-r -config rom" mrp=""/>
+ <unit unitID="qtms" name="qtms" bldFile="&layer_real_source_path;/qtms" proFile="qtmsapi.pro" qmakeArgs="-r -config rom" mrp=""/>
</module>
</layer>
@@ -29,6 +30,7 @@
<module name="mmappfw_group">
<unit unitID="mmappfw_group" mrp="" bldFile="&layer_real_source_path;/group" name="mmappfw_group" />
<unit unitID="mpxviewframeworkqt_group" name="mpxviewframeworkqt_group" bldFile="&layer_real_source_path;/mpx/mpxviewframeworkqt" proFile="mpxviewframeworkqt.pro" qmakeArgs="-r -config rom" mrp=""/>
+ <unit unitID="qtms_group" name="qtms_group" bldFile="&layer_real_source_path;/qtms" proFile="qtmsapi.pro" qmakeArgs="-r -config rom" mrp=""/>
</module>
</layer>
--- 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 <platform_paths.hrh>
--- 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__
--- 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 %
--- 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 <e32base.h>
#include <e32cons.h>
--- 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 %
--- 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 );
--- 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 %
*
*/
--- 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);
}
--- 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/
--- 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.
--- 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<CMPXHarvesterDbItem>* 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<CMPXFolderMonitor> iFolderMonitors; // Multiple drives
RPointerArray<CMPXCollectionType> iSupportedTypes;
CDesCArray* iContainerTypes;
+ RArray<TPath> iConfiguredDrivesToScan;
RArray<TPath> iDrivesToScan;
RArray<TPath> iFilteredDrivesToScan;
RArray<TPath> iPathsToBlock;
TBool iOutOfDisk;
-#ifdef RD_MULTIPLE_DRIVE
- TInt iRemovedDrive;
-#endif // RD_MULTIPLE_DRIVE
+ TBool iFilteredOutOfDisk;
// Metadata related
CMPXMetadataScanner* iMetadataScanner;
--- 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 <e32base.h>
+#include <mpxmetadataextractorobserver.h>
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<HBufC>* 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<HBufC> iNewFiles;
RPointerArray<HBufC> 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
--- 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 <e32base.h>
-#ifdef RD_MULTIPLE_DRIVE
#include <pathinfo.h>
#include <driveinfo.h>
-#endif //RD_MULTIPLE_DRIVE
#include <mpxlog.h>
#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
//
--- 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 )
--- 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();
--- 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 <e32base.h>
-#ifdef RD_MULTIPLE_DRIVE
#include <pathinfo.h>
#include <driveinfo.h>
-#endif //RD_MULTIPLE_DRIVE
#ifdef __RAMDISK_PERF_ENABLE
#include <centralrepository.h>
@@ -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<TDriveNumber>(driveNum)))
+ if (driveList[driveNum] && IsLocalDrive(static_cast<TDriveNumber>(driveNum)))
{
- TFileName drivePath;
- User::LeaveIfError(
- PathInfo::GetRootPath( drivePath, driveNum ) );
- MPX_DEBUG2("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: opening database in %S drive",
- &drivePath);
- TRAP( check, GetDatabaseL(static_cast<TDriveNumber>(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<TDriveNumber>(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<TDriveNumber>(driveNum)).OpenL() );
+ CMPXHarvesterDB* dB = iDatabases[index];
+ TRAPD(openError, rtn |= dB->OpenL() ); //lint !e665
if(openError != KErrNone)
{
- TRAP_IGNORE( RemoveDatabaseL(static_cast<TDriveNumber>(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; i<count; ++i )
- {
- CMPXHarvesterDB* db = (CMPXHarvesterDB*) iDatabases[i];
- if( db->GetDbDrive() == 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; i<count; ++i)
+ CMPXHarvesterDB * db =iDatabases[index];
+ db->Close();
+#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; i<count; ++i )
+ {
+ CMPXHarvesterDB* db = (CMPXHarvesterDB*) iDatabases[i];
+ if( db->GetDbDrive() == 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; i<count; ++i )
- {
- CMPXHarvesterDB* tmp = (CMPXHarvesterDB*) iDatabases[i];
- if( tmp->GetDbDrive() == 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; index<count; ++index )
- {
- if((iDatabases[index]!=NULL) && ( iDatabases[index]->GetDbDrive() == 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; i<count; ++i )
+ for( TInt i=0; i<count; )
{
// Close db, delete and recreate
//
MPX_DEBUG2("RecreateDatabasesL() -- %i", i);
- CMPXHarvesterDB* cur = (CMPXHarvesterDB*)iDatabases[i];
+ CMPXHarvesterDB* cur = iDatabases[i];
cur->Close();
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)) )
--- 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 <e32base.h>
#include <f32file.h>
#include <centralrepository.h>
-#ifdef RD_MULTIPLE_DRIVE
#include <pathinfo.h>
#include <driveinfo.h>
-#endif //RD_MULTIPLE_DRIVE
#include <mpxlog.h>
#include <mpxharvestercommon.h>
@@ -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<TDriveNumber>(currentDriveNumber)));
+ iDBManager->CloseDatabase(static_cast<TDriveNumber>(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<TDriveNumber>(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<TDriveNumber>(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<TDriveNumber>(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; i<tempList->Count(); 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; i<tempList->Count(); 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<TUint>( 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
--- 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<CMPXCollectionType>& 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<HBufC>* 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<HBufC>* CMPXMetadataScanner::GetSource()
+ {
+ MPX_FUNC("CMPXMetadataScanner::GetSource()");
TExtractType curType = (TExtractType) iExtractType;
-
- // Pointer re-direction to generalize extraction
- RPointerArray<HBufC>* 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; i<KLoopCount; ++i )
- {
- CMPXMedia* media(NULL);
-
- // TRAP to keep scanning if 1 file fails
- TRAPD( err, iExtractor->CreateMediaL( *(*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();
+ }
--- 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<class CMPXCollectionType> &)
?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)
--- 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 ; #<VT>#
_ZTV21CMPXMetadataExtractor @ 6 NONAME ; #<VT>#
_ZN21CMPXMetadataExtractor16ExtractAlbumArtLEP9CMPXMedia @ 7 NONAME
+ _ZN21CMPXMetadataExtractor13CancelRequestEv @ 8 NONAME
+ _ZN21CMPXMetadataExtractor17CreateMediaAsyncLERK7TDesC16P29MMPXMetadataExtractorObserveri @ 9 NONAME
--- 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<RMMFController*>(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
--- 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 <e32base.h>
#include <badesca.h>
#include <apgcli.h>
@@ -42,13 +41,18 @@
#include <mpxmediaaudiodefs.h>
#include <mpxmediadrmdefs.h>
#include <mpxmediamtpdefs.h>
+#include <mpxmetadataextractorobserver.h>
#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<TInt> 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<TMPXGeneralType>( KMPXMediaGeneralType,
- EMPXItem );
- media->SetTObjectValueL<TMPXGeneralCategory>( 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 <count; ++i)
- {
- TInt index2(KErrNotFound);
- const CDesCArray& exts = iSupportedTypes[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; i<count; ++i )
{
@@ -346,13 +282,12 @@
if ( fieldType != EMetaDataJpeg )
{
TRAPD( err, value = metaCont.At( i, fieldType ).AllocL() );
- CleanupStack::PushL( value );
if ( KErrNone != err )
{
MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL - error = %i", err);
- CleanupStack::PopAndDestroy( value );
continue;
}
+ CleanupStack::PushL( value );
}
switch( fieldType )
@@ -365,7 +300,7 @@
if (vallen>0)
{
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<TInt64>( KMPXMediaMusicYear,
+ iMedia->SetTObjectValueL<TInt64>( 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<TInt32>( 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<TMPXMediaDrmRightsStatus>(KMPXMediaDrmRightsStatus);
- aProp.SetTObjectValueL<TInt>(KMPXMediaDrmRightsStatus, status );
+ iMedia->SetTObjectValueL<TInt>(KMPXMediaDrmRightsStatus, status );
MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL -- status %i", status);
}
@@ -575,53 +507,65 @@
User::LeaveIfError( drmError );
}
- aProp.SetTObjectValueL<TBool>( KMPXMediaDrmProtected, prot );
- aProp.SetTObjectValueL<TUint16>( KMPXMediaMTPDrmStatus, (TUint16)prot );
+ iMedia->SetTObjectValueL<TBool>( KMPXMediaDrmProtected, prot );
+ iMedia->SetTObjectValueL<TUint16>( 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<TInt>( 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<TUint>( KMPXMediaAudioBitrate,
- iFileInfoUtil->BitRate() );
- aProp.SetTObjectValueL<TUint>( KMPXMediaAudioSamplerate,
- iFileInfoUtil->SampleRate() );
- TInt64 duration = (TInt64) iFileInfoUtil->Duration().Int64() / 1000; // ms
- aProp.SetTObjectValueL<TInt32>( KMPXMediaGeneralDuration,
- duration );
- MPX_DEBUG2("CMPXMetadataExtractor::SetExtMediaPropertiesL -- duration %i", duration);
+ MPX_DEBUG1("CMPXMetadataExtractor::SetExtMediaPropertiesL, get MMF controller");
+ iFile.Size( size );
+ iMedia->SetTObjectValueL<TInt>( 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<TUint>( KMPXMediaAudioBitrate,
+ iFileInfoUtil->BitRate() );
+ iMedia->SetTObjectValueL<TUint>( KMPXMediaAudioSamplerate,
+ iFileInfoUtil->SampleRate() );
+ TInt64 duration = (TInt64) iFileInfoUtil->Duration().Int64() / 1000; // ms
+ iMedia->SetTObjectValueL<TInt32>( 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<TInt>(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<TMetaDataFieldId> 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; i<count; i++ )
+ {
+ iTNManager->CancelRequest( 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<TInt> 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<TMPXGeneralType>( KMPXMediaGeneralType,
+ EMPXItem );
+ iMedia->SetTObjectValueL<TMPXGeneralCategory>( 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 <count; ++i)
+ {
+ TInt index2(KErrNotFound);
+ const CDesCArray& exts = iSupportedTypes[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<CMPXMetadataExtractor*>(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();
+ }
+
--- 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
--- 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;
--- 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 <e32base.h>
+#include <disknotifyhandler.h>
#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
--- 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 <mpxpskeyobserver.h>
-#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
--- 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 <e32base.h>
#include <f32file.h>
-#ifdef RD_MULTIPLE_DRIVE
#include <driveinfo.h>
-#endif //RD_MULTIPLE_DRIVE
#include <mpxlog.h>
#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<KDriveCount; ++i)
{
iObserver.HandleSystemEventL(EFormatEndEvent, iBackupDrives[i]);
--- a/mmappcomponents/harvester/server/src/mpxharvesterengine.cpp Mon May 03 12:58:40 2010 +0300
+++ b/mmappcomponents/harvester/server/src/mpxharvesterengine.cpp Fri May 14 16:21:14 2010 +0300
@@ -17,9 +17,7 @@
#include <e32std.h>
-#ifdef RD_MULTIPLE_DRIVE
#include <driveinfo.h>
-#endif //RD_MULTIPLE_DRIVE
#include <mpxlog.h>
#include <mpxmedia.h>
#include <mpxcollectionutility.h>
@@ -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();
+ }
}
// ---------------------------------------------------------------------------
--- 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 <e32base.h>
#include <f32file.h>
+#include <driveinfo.h>
#include <mpxlog.h>
#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;
- }
--- 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 <e32base.h>
-#include <e32property.h>
-#include <mpxpskeywatcher.h>
-#include <mpxlog.h>
-#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
--- 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 <e32base.h>
#include <f32file.h>
#include <e32property.h>
-#ifdef RD_MULTIPLE_DRIVE
#include <driveinfo.h>
-#endif //RD_MULTIPLE_DRIVE
#include <mpxpskeywatcher.h>
#include <coreapplicationuisdomainpskeys.h>
#include <UsbWatcherInternalPSKeys.h>
#include <usbpersonalityids.h>
-#include <MtpPrivatePSKeys.h>
+#include <mtpprivatepskeys.h>
#include <mpxlog.h>
#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;
}
--- 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 %
--- 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;
--- 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<KStorageRootMaxLength> iStoreRoot;
MMPXCollectionHelper* iCollectionHelper;
+ HBufC8* iSampleData;
#if defined(_DEBUG) || defined(MMMTPDP_PERFLOG)
CMmMtpDpPerfLog* iPerfLog;
--- 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
--- 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();
/**
--- 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()
--- 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" ) );
--- 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
--- 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();
--- 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
};
--- 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<const TMTPNotificationParamsHandle*> ( aParams ) );
break;
+ case EMTPObjectAdded:
+ PRINT( _L( "MM MTP <> CMediaMtpDataProvider::ProcessNotificationL EMTPObjectAdded event recvd" ) );
+ ObjectAddedL(*reinterpret_cast<const TUint32*>(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);
--- 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 &)
--- 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
--- 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 );
--- 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;
--- 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 <mtp/cmtptypearray.h>
#include <mtp/cmtptypestring.h>
#include <mtp/cmtptypeobjectproplist.h>
+#include <mtp/mmtpreferencemgr.h>
#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" ) );
}
--- 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 );
--- 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
--- 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;
--- 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;
--- 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 );
--- 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<CMTPObjectMetaData&>(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 );
}
--- 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<const CMTPTypeString&>( 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<const CMTPTypeString&>( aNewData );
TBuf<KMtpMaxStringLength> 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<TInt>( KMPXMediaMTPSampleData, (TInt)iSampleData );
+ aMediaProp.SetTObjectValueL<TBool>( attrib, ETrue );
CleanupStack::PopAndDestroy( &sampleFile );
- CleanupStack::PopAndDestroy( sampleData );
- aMediaProp.SetTObjectValueL<TBool>( 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<TBool>( 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 );
--- 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 );
--- 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 <data_caging_paths.hrh>
--- 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
--- 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
--- 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
--- 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;
--- 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 <data_caging_paths.hrh>
--- 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 %
--- 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"
--- 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
--- 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)
--- 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 <thumbnailmanager.h>
#include <thumbnailmanagerobserver.h>
@@ -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<TThumbnailRequestId> iArrayTNRequestId;
+ RArray<EMetadataExtractorTasks> 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
--- /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
--- 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
--- 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
--- 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
};
--- 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
--- /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 <platform_paths.hrh>
+
+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)
--- /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 <glib.h>
+#include <vector>
+
+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<QTMSFormat*> FormatVector;
+typedef std::vector<guint> BitRateVector;
+typedef std::vector<guint> 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
--- /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 <QObject>
+#include <qtmsformat.h>
+#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
--- /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 <qtms.h>
+#include <QObject>
+
+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
--- /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 <qtms.h>
+#include <QObject>
+#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:
+ * <code>
+ * 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;
+ * ...
+ * </code>
+ *
+ * @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
+
--- /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 <qtms.h>
+#include <qtmssink.h>
+#include <QObject>
+#include <qglobal.h>
+#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
+
--- /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 <qtms.h>
+#include <qtmssource.h>
+#include <QObject>
+#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
+
--- /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 <qtms.h>
+#include <QObject>
+#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
--- /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 <qtms.h>
+#include <QObject>
+
+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
--- /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 <qtms.h>
+#include <QObject>
+#include <QtCore/qglobal.h>
+#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:
+ * <code>
+ * QTMSFactory* iFactory;
+ * QTMSCall* iCall;
+ * gint err;
+ * err = QTMSFactory::CreateFactory(iFactory);
+ * err = iFactory->CreateCall(QTMS_CALL_IP, iCall);
+ * ...
+ * err = iFactory->DeleteCall(iCall);
+ * delete iFactory;
+ * ...
+ * </code>
+ *
+ * @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
--- /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 <qtms.h>
+#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:
+ * <code>
+ * QTMSFactory* iFactory;
+ * QTMSFormat* iFormat
+ * gint err;
+ * err = QTMSFactory::CreateFactory(iFactory);
+ * err = iFactory->Create(QTMS_FORMAT_XXX,iFormat);
+ * ...
+ * </code>
+ *
+ * @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<guint> 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
--- /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 <qtms.h>
+#include <qtmsformat.h>
+#include <QObject>
+#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
--- /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 <qtms.h>
+#include <qtmsformat.h>
+#include <QObject>
+#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
--- /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 <qtms.h>
+#include <qtmseffect.h>
+#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
--- /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 <qtms.h>
+#include <qtmseffect.h>
+#include "qtmswrapperexport.h"
+#include <QObject>
+
+// 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
--- /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 <qtms.h>
+#include <QObject>
+#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<guint> 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
--- /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 <qtms.h>
+#include <qtmseffect.h>
+#include <QObject>
+#include <qglobal.h>
+#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
--- /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 <qtms.h>
+#include <qtmsformat.h>
+#include <QObject>
+#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
--- /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 <glib.h>
+#include <qtms.h>
+#include <QObject>
+#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
--- /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 <qtms.h>
+#include <qtmssource.h>
+#include <QObject>
+#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
+
--- /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 <qtms.h>
+#include <qtmssink.h>
+#include <QObject>
+#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
+
--- /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 <qtms.h>
+#include <qtmssource.h>
+#include <QObject>
+#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
+
--- /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 <qtms.h>
+#include <qtmsformat.h>
+#include <QObject>
+#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
--- /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 <qtms.h>
+#include <QObject>
+#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
+
--- /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 <qtms.h>
+
+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
+
--- /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 <qtms.h>
+
+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
--- /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 <qtms.h>
+#include <qtmssink.h>
+#include <QObject>
+#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
+
--- /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 <qtms.h>
+#include <QObject>
+#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:
+ * <code>
+ * 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;
+ *
+ * </code>
+ *
+ * @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
--- /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 <qtms.h>
+#include <qtmseffect.h>
+#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
--- /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 <qglobal.h>
+
+#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_
--- 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 <platform_paths.hrh>
--- 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
--- 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);
--- 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; i<count; ++i )
+ {
+ context = iContexts[i];
+ context->NotifyL( aMsg, aData );
+ }
+ notify = EFalse;
case EMcMsgFormatEnd:
- case EMcMsgDiskInserted:
case EMcMsgUSBMassStorageEnd:
{
command = EMcReOpenCollection;
@@ -253,12 +262,7 @@
}
if( command != KErrNotSupported )
{
- TArray<CMPXCollectionPlugin*> plugins = iPluginHandler->LoadedPlugins();
- for( TInt i=0; i<plugins.Count(); ++i )
- {
- CMPXCollectionPlugin* plugin = plugins[i];
- TRAP_IGNORE(plugin->CommandL( (TMPXCollectionCommand)command, data));
- }
+ Command( (TMPXCollectionCommand)command, data );
}
if( clearCache )
@@ -286,12 +290,22 @@
rfs.Close();
}
- TInt count = iContexts.Count();
- for( TInt i=0; i<count; ++i )
+ if ( notify )
+ {
+ for( TInt i=0; i<count; ++i )
+ {
+ context = iContexts[i];
+ context->NotifyL( aMsg, aData );
+ }
+ }
+ }
+void CMPXCollectionEngine::Command( TMPXCollectionCommand aCmd, TInt aData )
+ {
+ TArray<CMPXCollectionPlugin*> plugins = iPluginHandler->LoadedPlugins();
+ for( TInt i=0; i<plugins.Count(); ++i )
{
- CMPXCollectionClientContext* context;
- context = iContexts[i];
- context->NotifyL( aMsg, aData );
+ CMPXCollectionPlugin* plugin = plugins[i];
+ TRAP_IGNORE(plugin->CommandL( aCmd, aData));
}
}
--- 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);
- }
}
// ----------------------------------------------------------------------------
--- 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 ))
{
--- 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;
}
--- /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
--- /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...<src> <destination>
+"/epoc32/release/armv5/udeb/qtmsapi.dll" -"!:/sys/bin/qtmsapi.dll"
+
--- /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<unsigned int, class std::allocator<unsigned int> > &)
+ ?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<class QTMS::QTMSFormat *, class std::allocator<class QTMS::QTMSFormat *> > &)
+ ?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<unsigned int, class std::allocator<unsigned int> > &)
+ ?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)
+
--- /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
--- /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"
+
Binary file qtms/data/qtmsapi_stub.sis has changed
--- /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
+
--- /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 <qtms.h>
+#include <qtmsamrformat.h>
+
+// 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
--- /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 <qtms.h>
+
+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
--- /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 <glib.h>
+#include <qtmscall.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsclientsink.h>
+#include <tmsclientsinkobsrvr.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsclientsource.h>
+#include <tmsclientsourceobsrvr.h>
+
+// 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
--- /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 <tms.h>
+#include <tmsdtmfobsrvr.h>
+#include <qtms.h>
+#include <qtmsdtmf.h>
+
+// 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
--- /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 <e32cmn.h>
+#include <qtms.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsg711format.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsg729format.h>
+
+// 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
--- /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 <qtms.h>
+#include <tms.h>
+#include <qtmsgaineffect.h>
+#include <tmseffectobsrvr.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsglobalgaineffect.h>
+#include <tmseffectobsrvr.h>
+
+// 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
--- /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 <tms.h>
+#include <qtms.h>
+#include <qtmsglobalrouting.h>
+#include <tmsglobalroutingobsrvr.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsglobalvoleffect.h>
+#include <tmseffectobsrvr.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsilbcformat.h>
+
+// 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
--- /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 <tmsinbandtoneobsrvr.h>
+#include <qtms.h>
+#include <qtmsinbandtone.h>
+
+// 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
--- /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 <qtmsbuffer.h>
+
+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
--- /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 <qtms.h>
+#include <qtmsmicsource.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsmodemsink.h>
+#include <qtmssink.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsmodemsource.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmspcmformat.h>
+
+// 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
--- /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 <tms.h>
+#include <tmsringtoneobsrvr.h>
+#include <qtms.h>
+#include <qtmsringtone.h>
+
+// 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
+
--- /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 <qtms.h>
+
+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
--- /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 <qtms.h>
+
+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
--- /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 <qtms.h>
+#include <qtmsspeakersink.h>
+
+// 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
--- /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 <qtms.h>
+#include <qtmsstream.h>
+#include <tmsstreamobsrvr.h>
+#include <QObject>
+
+// 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
--- /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 <qtms.h>
+#include <tms.h>
+#include <qtmsvolumeeffect.h>
+#include <tmseffectobsrvr.h>
+
+// 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
--- /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 <qglobal.h>
+
+#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_
--- /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 <e32std.h>
+#include <tms.h>
+#include <telephonyaudiorouting.h>
+#ifdef _DEBUG
+#include <e32debug.h>
+#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__
+
--- /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 <platform_paths.hrh>" \
+ "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
--- /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 <data_caging_paths_for_iby.hrh>
+
+#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
--- /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 <qtmsamrformat.h>
+
+using namespace QTMS;
+
+QTMSAMRFormat::QTMSAMRFormat()
+ {
+ }
+
+QTMSAMRFormat::~QTMSAMRFormat()
+ {
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsamrformat.h>
+#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<TMSFormat*> (iFormat)->GetType(fmttype);
+ status = iFormat->GetType(fmttype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#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
--- /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 <tmscall.h>
+#include <qtmscall.h>
+#include <tmsstream.h>
+#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<QTMSStreamImpl*> (strm));
+ delete strm;
+ strm = NULL;
+ return status;
+ }
+
+// End of file
--- /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 <tmscall.h>
+#include <qtms.h>
+#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
--- /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 <tmsclientsink.h>
+#include <tmsbuffer.h>
+#include <qtmsclientsink.h>
+
+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<TMSClientSink*> (iSink)->BufferProcessed(buffer);
+ }
+ return status;
+ }
+
+gint QTMSClientSink::GetType(QTMSSinkType& sinktype)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iSink)
+ {
+ status = static_cast<TMSClientSink*> (iSink)->GetType(sinktype);
+ //status = iSink->GetType(sinktype); //virtual; should be ok
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsbuffer.h>
+#include <tmsclientsink.h>
+#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<TMSClientSink*> (iSink)->AddObserver(obsrvr,
+ user_data);
+ }
+ return ret;
+ }
+
+gint QTMSClientSinkImpl::RemoveObserver(TMS::TMSClientSinkObserver& obsrvr)
+ {
+ gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iSink)
+ {
+ ret = static_cast<TMSClientSink*> (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
--- /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 <tmsclientsource.h>
+#include <tmsbuffer.h>
+#include <qtmsclientsource.h>
+
+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<TMSClientSource*> (iSource)->SetEnqueueMode(
+ enable);
+ }
+ return status;
+ }
+
+gint QTMSClientSource::GetEnqueueMode(gboolean& enable)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iSource)
+ {
+ status = static_cast<TMSClientSource*> (iSource)->GetEnqueueMode(
+ enable);
+ }
+ return status;
+ }
+
+gint QTMSClientSource::Flush()
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iSource)
+ {
+ status = static_cast<TMSClientSource*> (iSource)->Flush();
+ }
+ return status;
+ }
+
+gint QTMSClientSource::GetType(QTMSSourceType& sourcetype)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iSource)
+ {
+ status = static_cast<TMSClientSource*> (iSource)->GetType(sourcetype);
+ }
+ return status;
+ }
+
+gint QTMSClientSource::BufferFilled(TMS::TMSBuffer& buffer)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iSource)
+ {
+ status = static_cast<TMSClientSource*> (iSource)->BufferFilled(buffer);
+ }
+ return status;
+ }
+
+// Push mode
+gint QTMSClientSource::ProcessBuffer(TMS::TMSBuffer* buffer)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iSource)
+ {
+ status = static_cast<TMSClientSource*> (iSource)->ProcessBuffer(buffer);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsbuffer.h>
+#include <tmsclientsource.h>
+#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<TMSClientSource*> (iSource)->AddObserver(obsrvr,
+ user_data);
+ }
+ return ret;
+ }
+
+gint QTMSClientSourceImpl::RemoveObserver(TMS::TMSClientSourceObserver& obsrvr)
+ {
+ gint ret(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iSource)
+ {
+ ret = static_cast<TMSClientSource*> (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
--- /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 <tmsdtmf.h>
+#include <qtmsdtmf.h>
+#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;
+ }
--- /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 <tmsdtmf.h>
+#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<QTMSDTMF&> (*this), qevent);
+ }
+
+// End of file
--- /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)
+ {
+ }
--- /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 <tms.h>
+#include <QObject>
+#include <qtmsfactory.h>
+#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;
+ }
--- /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 <tms.h>
+#include <tmsfactory.h>
+#include <tmsformat.h>
+#include <qtms.h>
+#include <qtmscall.h>
+#include <qtmsformat.h>
+#include <qtmseffect.h>
+#include <qtmsbuffer.h>
+#include <qtmssource.h>
+#include <qtmssink.h>
+#include <qtmsringtone.h>
+#include <qtmsdtmf.h>
+#include <qtmsinbandtone.h>
+#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<TMSFormat*>::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<QTMSPCMFormatImpl*>(qtmsfmt));
+ qtmsfmt = NULL;
+ ret = QTMS_RESULT_SUCCESS;
+ break;
+ case QTMS_FORMAT_AMR:
+ delete (static_cast<QTMSAMRFormatImpl*>(qtmsfmt));
+ qtmsfmt = NULL;
+ ret = QTMS_RESULT_SUCCESS;
+ break;
+ case QTMS_FORMAT_G711:
+ delete (static_cast<QTMSG711FormatImpl*>(qtmsfmt));
+ qtmsfmt = NULL;
+ ret = QTMS_RESULT_SUCCESS;
+ break;
+ case QTMS_FORMAT_G729:
+ delete (static_cast<QTMSG729FormatImpl*>(qtmsfmt));
+ qtmsfmt = NULL;
+ ret = QTMS_RESULT_SUCCESS;
+ break;
+ case QTMS_FORMAT_ILBC:
+ delete (static_cast<QTMSILBCFormatImpl*>(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<QTMSVolumeEffectImpl*> (qtmseffect));
+ qtmseffect = NULL;
+ break;
+ case QTMS_EFFECT_GAIN:
+ delete (static_cast<QTMSGainEffectImpl*> (qtmseffect));
+ qtmseffect = NULL;
+ break;
+ case QTMS_EFFECT_GLOBAL_VOL:
+ delete (static_cast<QTMSGlobalVolEffectImpl*> (qtmseffect));
+ qtmseffect = NULL;
+ break;
+ case QTMS_EFFECT_GLOBAL_GAIN:
+ delete (static_cast<QTMSGlobalGainEffectImpl*> (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<QTMSMemBuffer*> (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<QTMSClientSourceImpl*>(qtmssrc));
+ qtmssrc = NULL;
+ ret = QTMS_RESULT_SUCCESS;
+ break;
+ case QTMS_SOURCE_MODEM:
+ {
+ delete (static_cast<QTMSModemSourceImpl*>(qtmssrc));
+ qtmssrc = NULL;
+ ret = TMS_RESULT_SUCCESS;
+ }
+ break;
+ case TMS_SOURCE_MIC:
+ {
+ delete (static_cast<QTMSMicSourceImpl*>(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<QTMSClientSinkImpl*>(qtmssink));
+ qtmssink = NULL;
+ ret = QTMS_RESULT_SUCCESS;
+ }
+ break;
+ case QTMS_SINK_MODEM:
+ {
+ delete (static_cast<QTMSModemSinkImpl*>(qtmssink));
+ qtmssink = NULL;
+ ret = QTMS_RESULT_SUCCESS;
+ }
+ break;
+ case QTMS_SINK_SPEAKER:
+ {
+ delete (static_cast<QTMSSpeakerSinkImpl*>(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<QTMSGlobalRoutingImpl*>(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<QTMSDTMFImpl*>(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<QTMSRingToneImpl*>(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<QTMSInbandToneImpl*>(inbandtone));
+ inbandtone = NULL;
+ return ret;
+ }
+
+// End of file
--- /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 <tmsformat.h>
+#include <qtmsformat.h>
+
+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
--- /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 <tmsg711format.h>
+#include <qtmsg711format.h>
+
+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<TMSG711Format*> (iFormat)->SetMode(aMode);
+ }
+ return status;
+ }
+
+gint QTMSG711Format::GetMode(QTMSG711CodecMode& aMode)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSG711Format*> (iFormat)->GetMode(aMode);
+ }
+ return status;
+ }
+
+gint QTMSG711Format::SetCNG(const gboolean aCng)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSG711Format*> (iFormat)->SetCNG(aCng);
+ }
+ return status;
+ }
+
+gint QTMSG711Format::GetCNG(gboolean& aCng)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSG711Format*> (iFormat)->GetCNG(aCng);
+ }
+ return status;
+ }
+
+gint QTMSG711Format::SetPlc(const gboolean aPlc)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSG711Format*> (iFormat)->SetPlc(aPlc);
+ }
+ return status;
+ }
+
+gint QTMSG711Format::GetPlc(gboolean& aPlc)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSG711Format*> (iFormat)->GetPlc(aPlc);
+ }
+ return status;
+ }
+
+gint QTMSG711Format::SetVADMode(const gboolean aVad)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSG711Format*> (iFormat)->SetVADMode(aVad);
+ }
+ return status;
+ }
+
+gint QTMSG711Format::GetVADMode(gboolean& aVad)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSG711Format*> (iFormat)->GetVADMode(aVad);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsg711format.h>
+#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<TMSFormat*> (iFormat)->GetType(fmttype);
+ status = iFormat->GetType(fmttype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <tmsg729format.h>
+#include <qtmsg729format.h>
+#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<TMSG729Format*> (iFormat)->SetVADMode(aVad);
+ }
+ return status;
+ }
+
+gint QTMSG729Format::GetVADMode(gboolean& aVad)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSG729Format*> (iFormat)->GetVADMode(aVad);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsilbcformat.h>
+#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
--- /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 <tmsgaineffect.h>
+#include <qtmsgaineffect.h>
+#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<TMSGainEffect*> (iEffect)->GetLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSGainEffect::SetLevel(const guint level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGainEffect*> (iEffect)->SetLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSGainEffect::GetMaxLevel(guint& level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGainEffect*> (iEffect)->GetMaxLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSGainEffect::GetType(QTMSSourceType& sourcetype)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGainEffect*> (iEffect)->GetType(sourcetype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsgaineffect.h>
+#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<TMSGainEffect*> (iEffect)->AddObserver(obsrvr, NULL);
+ }
+ return ret;
+ }
+
+gint QTMSGainEffectImpl::RemoveObserver(TMS::TMSEffectObserver& obsrvr)
+ {
+ gint ret(QTMS_RESULT_SUCCESS);
+
+ if (iEffect)
+ {
+ ret = static_cast<TMSGainEffect*> (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<QTMSEffect&> (*this),
+ qevent);
+ }
+
+// End of file
--- /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 <tmsglobalgaineffect.h>
+#include <qtmsglobalgaineffect.h>
+#include "qtmsglobalgaineffectimpl.h"
+#include "qtmswrapperexport.h"
+
+using namespace QTMS;
+using namespace TMS;
+
+QTMSGlobalGainEffect::QTMSGlobalGainEffect() :
+ iEffect(NULL)
+ {
+ }
+
+QTMSGlobalGainEffect::~QTMSGlobalGainEffect()
+ {
+ delete (static_cast<TMSGlobalGainEffect*>(iEffect));
+ }
+
+gint QTMSGlobalGainEffect::GetLevel(guint& level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGlobalGainEffect*> (iEffect)->GetLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSGlobalGainEffect::SetLevel(const guint level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGlobalGainEffect*> (iEffect)->SetLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSGlobalGainEffect::GetMaxLevel(guint& level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGlobalGainEffect*> (iEffect)->GetMaxLevel(
+ level);
+ }
+ return status;
+ }
+
+gint QTMSGlobalGainEffect::GetType(QTMSSourceType& sourcetype)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGlobalGainEffect*> (iEffect)->GetType(
+ sourcetype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsglobalgaineffect.h>
+#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<TMSGlobalGainEffect*> (iEffect)->AddObserver(obsrvr,
+ user_data);
+ }
+ return ret;
+ }
+
+gint QTMSGlobalGainEffectImpl::RemoveObserver(TMS::TMSEffectObserver& obsrvr)
+ {
+ gint ret(QTMS_RESULT_SUCCESS);
+
+ if (iEffect)
+ {
+ ret = static_cast<TMSGlobalGainEffect*> (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<QTMSEffect&> (*this), qevent);
+ }
+
+// End of file
--- /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 <tmsglobalrouting.h>
+#include <qtmsglobalrouting.h>
+#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
--- /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 <qtms.h>
+#include <tmsglobalrouting.h>
+#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<QTMSGlobalRouting&> (*this), qevent, qoutput);
+ }
+
+// End of file
--- /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<tmsglobalvoleffect.h>
+#include <qtmsglobalvoleffect.h>
+#include "qtmsglobalvoleffectimpl.h"
+#include "qtmswrapperexport.h"
+
+using namespace QTMS;
+using namespace TMS;
+
+QTMSGlobalVolEffect::QTMSGlobalVolEffect() :
+ iEffect(NULL)
+ {
+ }
+
+QTMSGlobalVolEffect::~QTMSGlobalVolEffect()
+ {
+ delete (static_cast<TMSGlobalVolEffect*>(iEffect));
+ }
+
+gint QTMSGlobalVolEffect::GetLevel(guint& level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGlobalVolEffect*> (iEffect)->GetLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSGlobalVolEffect::SetLevel(const guint level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGlobalVolEffect*> (iEffect)->SetLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSGlobalVolEffect::GetMaxLevel(guint& level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGlobalVolEffect*> (iEffect)->GetMaxLevel(
+ level);
+ }
+ return status;
+ }
+
+gint QTMSGlobalVolEffect::GetType(QTMSSourceType& sourcetype)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSGlobalVolEffect*> (iEffect)->GetType(
+ sourcetype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsglobalvoleffect.h>
+#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<TMSGlobalVolEffect*> (iEffect)->AddObserver(obsrvr,
+ user_data);
+ }
+ return ret;
+ }
+
+gint QTMSGlobalVolEffectImpl::RemoveObserver(TMS::TMSEffectObserver& obsrvr)
+ {
+ gint ret(QTMS_RESULT_SUCCESS);
+
+ if (iEffect)
+ {
+ ret = static_cast<TMSGlobalVolEffect*> (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<QTMSEffect&>
+ (*this), qevent);
+ }
+
+// End of file
--- /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 <tmsilbcformat.h>
+#include <qtmsilbcformat.h>
+#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<TMSILBCFormat*> (iFormat)->SetMode(aMode);
+ }
+ return status;
+ }
+
+gint QTMSILBCFormat::GetMode(QTMSG711CodecMode& aMode)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSILBCFormat*> (iFormat)->GetMode(aMode);
+ }
+ return status;
+ }
+
+gint QTMSILBCFormat::SetCNG(const gboolean aCng)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSILBCFormat*> (iFormat)->SetCNG(aCng);
+ }
+ return status;
+ }
+
+gint QTMSILBCFormat::GetCNG(gboolean& aCng)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSILBCFormat*> (iFormat)->GetCNG(aCng);
+ }
+ return status;
+ }
+
+gint QTMSILBCFormat::SetVADMode(const gboolean aVad)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSILBCFormat*> (iFormat)->SetVADMode(aVad);
+ }
+ return status;
+ }
+
+gint QTMSILBCFormat::GetVADMode(gboolean& aVad)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iFormat)
+ {
+ status = static_cast<TMSILBCFormat*> (iFormat)->GetVADMode(aVad);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsilbcformat.h>
+#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
--- /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 <qtmsinbandtone.h>
+#include <tmsinbandtone.h>
+#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;
+ }
+
--- /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 <qtms.h>
+#include <tmsinbandtone.h>
+#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<QTMSInbandTone&> (*this), qevent);
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <qtmsstream.h>
+#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
--- /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 <qtms.h>
+#include <qtmsbuffer.h>
+#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;
+ }
+
--- /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 <tmsmicsource.h>
+#include <qtmsmicsource.h>
+#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<TMSMicSource*> (iSource)->GetType(sourcetype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsmicsource.h>
+#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
--- /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 <qtmsmodemsink.h>
+#include <tmsmodemsink.h>
+#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<TMSModemSink*> (iSink)->GetType(sinktype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsmodemsink.h>
+#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
--- /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 <qtmsmodemsource.h>
+#include <tmsmodemsource.h>
+
+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<TMSModemSource*> (iSource)->GetType(sourcetype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsmodemsource.h>
+#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
--- /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 <qtmspcmformat.h>
+
+using namespace QTMS;
+
+QTMSPCMFormat::QTMSPCMFormat()
+ {
+ }
+
+QTMSPCMFormat::~QTMSPCMFormat()
+ {
+ // iFormat is deleted with QTMSFormat::iFormat
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmspcmformat.h>
+#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
--- /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 <tmsringtone.h>
+#include <qtmsringtone.h>
+#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
--- /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 <tmsringtone.h>
+#include <qtmseffect.h>
+#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<QTMSRingTone&> (*this),
+ qevent);
+ }
+
+// End of file
--- /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 <qtms.h>
+//#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
--- /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 <qtms.h>
+//#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
--- /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 <qtmsspeakersink.h>
+#include <tmsspeakersink.h>
+
+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<TMSSpeakerSink*> (iSink)->GetType(sinktype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsspeakersink.h>
+#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
--- /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 <tmssource.h>
+#include <tmsformat.h>
+#include <tmsstream.h>
+#include <qtmseffect.h>
+#include <qtmsstream.h>
+#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<QTMSStreamImpl*> (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<QTMSClientSourceImpl*>
+ (qsource)->GetSource(tmssource);
+ break;
+ case QTMS_SOURCE_MODEM:
+ status = static_cast<QTMSModemSourceImpl*>
+ (qsource)->GetSource(tmssource);
+ break;
+ case QTMS_SOURCE_MIC:
+ status = static_cast<QTMSMicSourceImpl*>
+ (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<QTMSClientSourceImpl*>
+ (qsource)->GetSource(tmssource);
+ break;
+ case QTMS_SOURCE_MODEM:
+ status = static_cast<QTMSModemSourceImpl*>
+ (qsource)->GetSource(tmssource);
+ break;
+ case QTMS_SOURCE_MIC:
+ status = static_cast<QTMSMicSourceImpl*>
+ (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<QTMSClientSinkImpl*>
+ (qsink)->GetSink(tmssink);
+ break;
+ case QTMS_SINK_MODEM:
+ status = static_cast<QTMSModemSinkImpl*>
+ (qsink)->GetSink(tmssink);
+ break;
+ case QTMS_SINK_SPEAKER:
+ status = static_cast<QTMSSpeakerSinkImpl*>
+ (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<QTMSClientSinkImpl*>
+ (qsink)->GetSink(tmssink);
+ break;
+ case QTMS_SINK_MODEM:
+ status = static_cast<QTMSModemSinkImpl*>
+ (qsink)->GetSink(tmssink);
+ break;
+ case QTMS_SINK_SPEAKER:
+ status = static_cast<QTMSSpeakerSinkImpl*>
+ (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<QTMSPCMFormatImpl*>
+ (qformat)->GetFormat(tmsformat);
+ break;
+ case QTMS_FORMAT_AMR:
+ status = static_cast<QTMSAMRFormatImpl*>
+ (qformat)->GetFormat(tmsformat);
+ break;
+ case QTMS_FORMAT_G711:
+ status = static_cast<QTMSG711FormatImpl*>
+ (qformat)->GetFormat(tmsformat);
+ break;
+ case QTMS_FORMAT_G729:
+ status = static_cast<QTMSG729FormatImpl*>
+ (qformat)->GetFormat(tmsformat);
+ break;
+ case QTMS_FORMAT_ILBC:
+ status = static_cast<QTMSILBCFormatImpl*>
+ (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<QTMSPCMFormatImpl*>
+ (qformat)->GetFormat(tmsformat);
+ break;
+ case QTMS_FORMAT_AMR:
+ status = static_cast<QTMSAMRFormatImpl*>
+ (qformat)->GetFormat(tmsformat);
+ break;
+ case QTMS_FORMAT_G711:
+ status = static_cast<QTMSG711FormatImpl*>
+ (qformat)->GetFormat(tmsformat);
+ break;
+ case QTMS_FORMAT_G729:
+ status = static_cast<QTMSG729FormatImpl*>
+ (qformat)->GetFormat(tmsformat);
+ break;
+ case QTMS_FORMAT_ILBC:
+ status = static_cast<QTMSILBCFormatImpl*>
+ (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<QTMSVolumeEffectImpl*>
+ (qeffect)->GetEffect(tmseffect);
+ break;
+ case QTMS_EFFECT_GAIN:
+ status = static_cast<QTMSGainEffectImpl*>
+ (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<QTMSVolumeEffectImpl*>
+ (qeffect)->GetEffect(tmseffect);
+ break;
+ case QTMS_EFFECT_GAIN:
+ status = static_cast<QTMSGainEffectImpl*>
+ (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();
+ }
+ }
+
--- /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 <qtms.h>
+#include <qtmseffect.h>
+#include <tmsstream.h>
+#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<QTMSStream&> (*this),
+ qevent);
+ }
--- /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 <tmsvolumeeffect.h>
+#include <qtmsvolumeeffect.h>
+#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<TMSVolumeEffect*> (iEffect)->GetLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSVolumeEffect::SetLevel(const guint level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSVolumeEffect*> (iEffect)->SetLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSVolumeEffect::GetMaxLevel(guint& level)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSVolumeEffect*> (iEffect)->GetMaxLevel(level);
+ }
+ return status;
+ }
+
+gint QTMSVolumeEffect::GetType(QTMSSourceType& sourcetype)
+ {
+ gint status(QTMS_RESULT_UNINITIALIZED_OBJECT);
+ if (iEffect)
+ {
+ status = static_cast<TMSVolumeEffect*> (iEffect)->GetType(sourcetype);
+ }
+ return status;
+ }
+
+// End of file
--- /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 <qtms.h>
+#include <tmsvolumeeffect.h>
+#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<TMSVolumeEffect*> (iEffect)->AddObserver(obsrvr,
+ NULL);
+ }
+ return ret;
+ }
+
+gint QTMSVolumeEffectImpl::RemoveObserver(TMS::TMSEffectObserver& obsrvr)
+ {
+ gint ret(QTMS_RESULT_SUCCESS);
+
+ if (iEffect)
+ {
+ ret = static_cast<TMSVolumeEffect*> (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<QTMSEffect&> (*this), qevent);
+ }
+
+// End of file
--- 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 @@
- <!ELEMENT SystemDefinition (systemModel?, build?)>
- <!ATTLIST SystemDefinition
- name CDATA #REQUIRED
- schema CDATA #REQUIRED>
- <!ELEMENT systemModel (layer+)>
- <!ELEMENT layer (logicalset* | module*)*>
- <!ATTLIST layer
- name CDATA #REQUIRED
- levels CDATA #IMPLIED
- span CDATA #IMPLIED>
- <!ELEMENT logicalset (logicalsubset* | module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalset name CDATA #REQUIRED>
- <!ELEMENT logicalsubset (module* | unit* | package* | prebuilt*)*>
- <!ATTLIST logicalsubset name CDATA #REQUIRED>
- <!ELEMENT module (component* | unit* | package* | prebuilt*)*>
- <!ATTLIST module
- name CDATA #REQUIRED
- level CDATA #IMPLIED>
- <!ELEMENT component (unit* | package* | prebuilt*)*>
- <!ATTLIST component name CDATA #REQUIRED>
- <!ELEMENT unit EMPTY>
- <!ATTLIST unit
- unitID ID #REQUIRED
- name CDATA #REQUIRED
- mrp CDATA #REQUIRED
- filter CDATA #IMPLIED
- bldFile CDATA #REQUIRED
- priority CDATA #IMPLIED
- contract CDATA #IMPLIED>
- <!ELEMENT package EMPTY>
- <!ATTLIST package
- name CDATA #REQUIRED
- mrp CDATA #REQUIRED
- filter CDATA #IMPLIED
- contract CDATA #IMPLIED>
- <!ELEMENT prebuilt EMPTY>
- <!ATTLIST prebuilt
- name CDATA #REQUIRED
- version CDATA #REQUIRED
- late (Y|N) #IMPLIED
- filter CDATA #IMPLIED
- contract CDATA #IMPLIED>
- <!ELEMENT build (option* | target+ | targetList+ | unitList+ | configuration+)*>
- <!ELEMENT unitList (unitRef+)>
- <!ATTLIST unitList
- name ID #REQUIRED
- description CDATA #REQUIRED>
- <!ELEMENT unitRef EMPTY>
- <!ATTLIST unitRef unit IDREF #REQUIRED>
- <!ELEMENT targetList EMPTY>
- <!ATTLIST targetList
- name ID #REQUIRED
- description CDATA #REQUIRED
- target IDREFS #REQUIRED>
- <!ELEMENT target EMPTY>
- <!ATTLIST target
- name ID #REQUIRED
- abldTarget CDATA #REQUIRED
- description CDATA #REQUIRED>
- <!ELEMENT option EMPTY>
- <!ATTLIST option
- name ID #REQUIRED
- abldOption CDATA #REQUIRED
- description CDATA #REQUIRED
- enable (Y | N | y | n) #REQUIRED>
- <!ELEMENT configuration (unitListRef+ | layerRef+ | task+)*>
- <!ATTLIST configuration
- name ID #REQUIRED
- description CDATA #REQUIRED
- filter CDATA #REQUIRED>
- <!ELEMENT task ( unitListRef* , (buildLayer | specialInstructions))>
- <!ELEMENT unitListRef EMPTY>
- <!ATTLIST unitListRef unitList IDREF #REQUIRED>
- <!ELEMENT layerRef EMPTY>
- <!ATTLIST layerRef layerName CDATA #REQUIRED>
- <!ELEMENT buildLayer EMPTY>
- <!ATTLIST buildLayer
- command CDATA #REQUIRED
- targetList IDREFS #IMPLIED
- unitParallel (Y | N | y | n) #REQUIRED
- targetParallel (Y | N | y | n) #IMPLIED>
- <!ELEMENT specialInstructions EMPTY>
- <!ATTLIST specialInstructions
- name CDATA #REQUIRED
- cwd CDATA #REQUIRED
- command CDATA #REQUIRED>