⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smbmusicapsyncserverplayerfunc.cpp

📁 索爱相关代码。实现功能是server。很有参考价值。代码很难弄到。symbian。
💻 CPP
📖 第 1 页 / 共 5 页
字号:
	TSmbRscMgrRscPriority	bgRsc;
	//梫媮儕僗僩傪惗惉
	if(NULL != iRscPriList)
		{
		delete iRscPriList;
		iRscPriList = NULL;
		}
	iRscPriList = new(ELeave)CArrayFixFlat<TSmbRscMgrRscPriority>(KMusicPlayerRscMaxNumber);

	//庢摼寢壥傪曐懚偡傞椞堟傪惗惉偡傞
	if(NULL != iRsctAllList)
		{
		delete iRsctAllList;
		iRsctAllList = NULL;
		}
	iRsctAllList = new(ELeave)CArrayFixFlat<TSmbRscMgrRscAllocId>(KSmbRscMgrAppRscListMax);

	//庢摼偡傞儕僜乕僗傪巜掕偡傞
	switch(aRsc)
		{
	//MW儕僜乕僗
	case ESmbMusicAPSyncServerPlayerMWRsc:
		mwRsc.iRscId = ESmbRscMgrRscMusicMW;
		mwRsc.iPriority = KSmbRscMgrRscPriorityValueNormal;
		iRscPriList->AppendL(mwRsc);
		iHasRsc = ESmbMusicAPSyncServerPlayerMWRsc;
		break;

	//BG儕僜乕僗
	case ESmbMusicAPSyncServerPlayerBGRsc:
//  MODIFY-S PTX824 k3-sugimoto
#ifdef __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
		bgRsc.iRscId = ESmbRscMgrRscMusicBG;			//  MusicBG嵞惗尃棙
#else	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
		bgRsc.iRscId = ESmbRscMgrRscMusicBG_forBGApp;	//  MusicBG嵞惗尃棙(BG傾僾儕梡)
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
//  MODIFY-E PTX824 k3-sugimoto
		bgRsc.iPriority = KSmbRscMgrRscPriorityValueNormal;
		iRscPriList->AppendL(bgRsc);
		//強桳偟偰偄傞儕僜乕僗傪曄峏偡傞
		iHasRsc = ESmbMusicAPSyncServerPlayerAllRsc;
		break;

	//慡偰偺儕僜乕僗
	case ESmbMusicAPSyncServerPlayerAllRsc:
		mwRsc.iRscId = ESmbRscMgrRscMusicMW;
		mwRsc.iPriority = KSmbRscMgrRscPriorityValueNormal;
		iRscPriList->AppendL(mwRsc);
//  MODIFY-S PTX824 k3-sugimoto
#ifdef __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
		bgRsc.iRscId = ESmbRscMgrRscMusicBG;			//  MusicBG嵞惗尃棙
#else	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
		bgRsc.iRscId = ESmbRscMgrRscMusicBG_forBGApp;	//  MusicBG嵞惗尃棙(BG傾僾儕梡)
#endif	//  __SMBMUSICAPSYNCSERVER_ENABLE_PTX810__
//  MODIFY-E PTX824 k3-sugimoto
		bgRsc.iPriority = KSmbRscMgrRscPriorityValueNormal;
		iRscPriList->AppendL(bgRsc);
		//強桳偟偰偄傞儕僜乕僗傪曄峏偡傞
		iHasRsc = ESmbMusicAPSyncServerPlayerAllRsc;
		break;

	default:
		//偙偙偵偔傞帠偑側偄偺偱儘僌弌椡
		TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber55;
		_LIT(KServerPlayerFunc55, "SyncServerPlayerFunc::GetResource default");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc55);

		//儕僜乕僗傪庢摼偟側偄偺偱儕乕僽偟傑偡
		User::Leave(KErrArgument);
		return;
//		break;
		}

	//堷悢偱巜掕偝傟偨傝僜乕僗傪梫媮偡傞
	iRscMgrClient->AllocationResourceReqL(iRscPriList, iRsctAllList);

#endif // __SMBMUSICAP_DESABLE_SUPERDUKE__
	}


/**
 儗僕儏乕儉忣曬傪峏怴偡傞
 * @param [in]	aOperate		憖嶌撪梕
 * @return	側偟
 */
void CSmbMusicAPSyncServerPlayerFunc::GetResume(TSmbMusicAPSyncServerPlayerMusicParamOperate aOperate)
	{
//TRK6763懳墳	start
	//儗僕儏乕儉忣曬奿擺峔憿懱
	TSmbMusicAPSyncServerPlayerResume	resume;
	//栠傝抣
	TInt res;

	switch (aOperate)
		{
	case ESmbMusicAPSyncServerPlayerNotResumeStackLocalFromPlayer:
		//僾儗僀儎乕惂屼偐傜僐儞僥僉僗僩傪庢摼偡傞
		res = iPlayerSession.GetPlayContext(resume.iPayerContext);
		if(KErrNone != res)
			{
			//儘僌弌椡
			TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber108;
			_LIT(KServerPlayerFunc108, "SyncServerPlayerFunc::GetResume GetPlayContext Error [val=%d][aOperate=%d]");
			SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc108, res, aOperate);

			//嵞惗僐儞僥僉僗僩庢摼偵幐攕偟偨偺偱丄壗傕偟側偄
			return;
			}

		//嬋ID傪曐懚偡傞
		iPlaySong.iIterator.iContainerID = resume.iPayerContext.iSongInfo.iContainerID;

//TRK10039 Add-S
		//僀僥儗乕僞偐傜Index傪庢摼偡傞
		iPlaySong.iIndex = iModel.IsIndexFromIHandle(resume.iPayerContext.iSongInfo.iIteratorHandle);
		//Index偐傜僀僥儗乕僞僴儞僪儖傪庢摼偡傞乮僒乕僶偑強桳偡傞僴儞僪儖偵抲偒姺偊傞乯
		iPlaySong.iIterator.iIteratorHandle = iModel.IsHandleFromIndex(iPlaySong.iIndex, iPlaySong.iListHandle);
//TRK10039 Add-E

		break;

	case ESmbMusicAPSyncServerPlayerStackLocalFromPlayer:

		//屆偄儗僕儏乕儉忣曬偑偁傟偽嶍彍偡傞
		if(NULL != iResume)
			{
			delete iResume;
			iResume = NULL;
			}

		//僾儗僀儎乕惂屼偐傜僐儞僥僉僗僩傪庢摼偡傞
		res = iPlayerSession.GetPlayContext(resume.iPayerContext);
		if(KErrNone != res)
			{
			//儘僌弌椡
			TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber80;
			_LIT(KServerPlayerFunc80, "SyncServerPlayerFunc::GetResume GetPlayContext Error [val=%d][aOperate=%d]");
			SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc80, res, aOperate);

			//儗僕儏乕儉桳岠僼儔僌傪柍岠偵愝掕偡傞
			iModel.SetPlayerResumeInfoAvailable(EFalse);
			return;
			}

	//TRK4598懳墳	Start
		//嬋忣曬傪曐懚偡傞
		//儕僗僩僴儞僪儖丄僀僥儗乕僞僴儞僪儖偼僾儗僀儎乕惂屼MW偑強桳偟偰偄傞僴儞僪儖抣傪曉偟偰
		//棃傞偺偱丄偙偺俀偮偵偮偄偰偼僒乕僶強桳偟偰偄傞偦傟偧傟偺僴儞僪儖抣偵曄姺偡傞昁梫偑偁傞
		resume.iPayerContext.iSongListHandleId = iPlaySong.iListHandle;

		//僀僥儗乕僞偐傜Index傪庢摼偡傞
		iPlaySong.iIndex = iModel.IsIndexFromIHandle(resume.iPayerContext.iSongInfo.iIteratorHandle);

		//Index偐傜僀僥儗乕僞僴儞僪儖傪庢摼偡傞乮僒乕僶偑強桳偡傞僴儞僪儖偵抲偒姺偊傞乯
		iPlaySong.iIterator.iIteratorHandle = iModel.IsHandleFromIndex(iPlaySong.iIndex, iPlaySong.iListHandle);
		resume.iPayerContext.iSongInfo.iIteratorHandle = iPlaySong.iIterator.iIteratorHandle;

		//SongID傪曐懚偡傞
		iPlaySong.iIterator.iContainerID = resume.iPayerContext.iSongInfo.iContainerID;

		//嵞惗帪娫傪庢摼偡傞
		res = iPlayerSession.GetPlayTime(resume.iPlayTime);
		if(KErrNone != res)
			{
			//儘僌弌椡
			TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber82;
			_LIT(KServerPlayerFunc82, "SyncServerPlayerFunc::GetResume GetPlayTime Error [%d]");
			SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc82, res);

			//儗僕儏乕儉桳岠僼儔僌傪柍岠偵愝掕偡傞
			iModel.SetPlayerResumeInfoAvailable(EFalse);
			return;
			}
		resume.iSongInfo.iIterator   = resume.iPayerContext.iSongInfo;
		resume.iSongInfo.iListHandle = resume.iPayerContext.iSongListHandleId;
		resume.iSongInfo.iIndex = iPlaySong.iIndex;
		resume.iAllShuffle = iAllShuffle;
	//TRK4598懳墳	End
		//嵞惗宱夁帪娫傪峏怴偡傞
		iPlayTime = resume.iPlayTime;

		//儗僕儏乕儉忣曬傪曐懚偡傞
		TRAPD(err, iResume = new(ELeave)CSmbMusicAPSyncServerPlayerResume(resume));
		if (KErrNone != err)
			{
			//儘僌弌椡
			TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber59;
			_LIT(KServerPlayerFunc59, "SyncServerPlayerFunc::GetResume Leave in new [%d]");
			SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc59, err);

			//儗僕儏乕儉桳岠僼儔僌傪柍岠偵愝掕偡傞
			iModel.SetPlayerResumeInfoAvailable(EFalse);
			}
		else
			{
			//儗僕儏乕儉桳岠僼儔僌傪桳岠偵愝掕偡傞
			iModel.SetPlayerResumeInfoAvailable(ETrue);
			}
		break;

	default:
		//儘僌弌椡
		TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber109;
		_LIT(KServerPlayerFunc109, "SyncServerPlayerFunc::GetResume default Error [aOperate=%d]");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc109, aOperate);
		}
//TRK6763懳墳	end
	}

/**
 壒埑儗儀儖傪庢摼偡傞
 * @param	側偟
 * @return	張棟寢壥
 */
TInt CSmbMusicAPSyncServerPlayerFunc::GetSound()
	{
	if(EFalse == iSoundMode)
		{
		//儘僌弌椡
		TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber02;
		_LIT(KServerPlayerFunc02, "SyncServerPlayerFunc::GetSound NotReady [%d]");
//  MODIFY-S  儘僌儗儀儖廋惓
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHigh, KServerPlayerFunc02, iSoundMode);
//  MODIFY-E  儘僌儗儀儖廋惓

		//儌乕僪傪愝掕偟偰側偄傛乣
		return KErrNotReady;
		}
	TInt res = KErrNone;
	TUint levelL;
	TUint levelR;

#ifdef __SMBMUSICAP_DESABLE_SUPERDUKE__
	// 儔儞僟儉偱壒埑傪巜掕偡傞
	levelL = static_cast<TUint>(Math::Random());
	levelR = static_cast<TUint>(Math::Random());
#else
	//壒埑傪庢摼偡傞
	res = iPlayerSession.GetSoundLevel(levelL, levelR);
	if (KErrNone != res)
		{
		TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber84;
		_LIT(KServerPlayerFunc84, "SyncServerPlayerFunc::GetSound GetSoundLevel Error [%d]");
//2006.10.20 儘僌儗儀儖傪High->Normal傊曄峏(堦搙昞帵偝傟傞偲偢偭偲昞帵偝傟丄懠偺廳梫側儘僌偑棳傟偰偟傑偆偨傔)
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelNormal, KServerPlayerFunc84, res);
		return res;
		}
#endif

	//儊僢僙乕僕偵娷傑傟傞僷僢働乕僕
	TSmbMusicAPSyncEngineSoundLevel	soundPkg;
	soundPkg.aLeftLevel = levelL;
	soundPkg.aRightLevel = levelR;

	//梫媮儊僢僙乕僕偺悢
	TInt cnt = iRequestMessage.Count();
	//儊僢僙乕僕偵壒埑抣傪彂偒崬傓
	TPckg<TSmbMusicAPSyncEngineSoundLevel>	resTpck(soundPkg);

	res = iRequestMessage[cnt -1].Write(1, resTpck);
	//Write偵幐攕偟偨傜丄儘僌弌椡屻丄僄儔乕傪曉偡
	if (KErrNone != res)
		{
		TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber54;
		_LIT(KServerPlayerFunc54, "SyncServerPlayerFunc::GetSound Write() Return Val [%d]");
		SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc54, res);
		}

	return res;
	}

/**
 専嶕梡偺嵞惗夞悢傪峏怴偡傞
 * @param [in]	aListHandle 	儕僗僩僴儞僪儖
 * @param [in]	aIndex 			index
 * @return	側偟
 */
void CSmbMusicAPSyncServerPlayerFunc::IncrementPlayTimes(TInt aListHandle, TInt aIndex)
	{
	TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber99;
	_LIT(KServerPlayerFunc99, "SyncServerPlayerFunc::IncrementPlayTimes(%08x, %d)");
	SmbMusicAPSyncServerLog(iLog, log, ELogLevelNormal, KServerPlayerFunc99, aListHandle, aIndex);

	//専嶕梡偺嵞惗夞悢傪峏怴偡傞
	iModel.IncrementPlaySongTimes(aListHandle, aIndex);
	}

/**
 堦帪掆巭忬懺偵偡傞
 * @param	側偟
 * @return	張棟寢壥
 */
TInt CSmbMusicAPSyncServerPlayerFunc::Pause()
	{
	return iPlayerSession.Pause();
	}

/**
 嵞惗帪娫偑0昩偺応崌偵専嶕梡偺嵞惗夞悢傪峏怴偡傞
 * @param	側偟
 * @return	側偟
 */
void CSmbMusicAPSyncServerPlayerFunc::IncrementPlayTimesIfNecessary()
	{
//TRK6286懳墳	Start
	//嵞惗夞悢傪峏怴偡傞
	IncrementPlayTimes(iPlaySong.iListHandle, iPlaySong.iIndex);
//TRK6286懳墳	End
	}

//@@TRK10039懳墳	Start
/**
 嵞惗奐巒慜偵嵞惗懳徾嬋偺Index傪捠抦偡傞
 * @param	側偟
 * @return	張棟寢壥
 */
TInt CSmbMusicAPSyncServerPlayerFunc::PlaySongIndex()
	{
	TInt cnt = iRequestMessage.Count();
	if(cnt > 0)
		{
		//MW亅傾僾儕娫偱Index偑偢傟偰偄傞偺偱曗惓偡傞
		TPckg<TInt> resPck(iPlaySong.iIndex - 1);
		//墳摎儊僢僙乕僕偵僨乕僞傪彂偒崬傓
		TInt msgRes = iRequestMessage[cnt- 1].Write(KSmbMusicAPSyncEngineMsgOut1, resPck);
		//偙偙偺IF暥偼墳摎儊僢僙乕僕傊偺Write寢壥傪敾掕偟傑偡
		if(KErrNone != msgRes)
			{
			TInt log = EMusicAPSyncServerClassNumber51 | EMusicAPSyncServerLocationNumber121;
			_LIT(KServerPlayerFunc121, "SyncServerPlayerFunc::::PlaySongIndex Write MSG Error [%d]");
			SmbMusicAPSyncServerLog(iLog, log, ELogLevelHighest, KServerPlayerFunc121, msgRes);
			return msgRes;
			}
		}
	return KErrNone;
	}

//@@TRK10039懳墳	End

/**
 嵞惗傪奐巒偡傞
 * @param	側偟
 * @return	張棟寢壥
 */
TInt CSmbMusicAPSyncServerPlayerFunc::Play()
	{
	return iPlayerSession.Play();
	}

/**
 憗憲傝嵞惗傪奐巒偡傞
 * @param	側偟
 * @return	張棟寢壥
 */
TInt CSmbMusicAPSyncServerPlayerFunc::PlayFF()
	{
	return iPlayerSession.PlayFF();
	}

/**
 憗栠偟嵞惗傪奐巒偡傞
 * @param	側偟
 * @return	張棟寢壥
 */
TInt CSmbMusicAPSyncServerPlayerFunc::PlayFR()
	{
	return iPlayerSession.PlayFR();
	}

/**
 憗憲傝傪夝彍偡傞
 * @param	側偟
 * @return	張棟寢壥
 */
TInt CSmbMusicAPSyncServerPlayerFunc::PlayFromFF()
	{
	return iPlayerSession.CancelPlayFF();
	}

/**
 憗栠偟傪夝彍偡傞
 * @param	側偟
 * @return	張棟寢壥

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -