www.pudn.com > helix.src.0812.rar > audio_svr.h
/* ***** BEGIN LICENSE BLOCK ***** * Version: RCSL 1.0/RPSL 1.0 * * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. * * The contents of this file, and the files included with this file, are * subject to the current version of the RealNetworks Public Source License * Version 1.0 (the "RPSL") available at * http://www.helixcommunity.org/content/rpsl unless you have licensed * the file under the RealNetworks Community Source License Version 1.0 * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, * in which case the RCSL will apply. You may also obtain the license terms * directly from RealNetworks. You may not use this file except in * compliance with the RPSL or, if you have a valid RCSL with RealNetworks * applicable to this file, the RCSL. Please see the applicable RPSL or * RCSL for the rights, obligations and limitations governing use of the * contents of the file. * * This file is part of the Helix DNA Technology. RealNetworks is the * developer of the Original Code and owns the copyrights in the portions * it created. * * This file, and the files included with this file, is distributed and made * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * * Technology Compatibility Kit Test Suite(s) Location: * http://www.helixcommunity.org/content/tck * * Contributor(s): * * ***** END LICENSE BLOCK ***** */ /* * Description: * * This file contains three class definitions; HXSymbianAudioServer, * HXSymbianAudioSession, and HXSymbianAudioClient. Their purpose is * to allow us to hide the Symbian CMdaAudioOutputStream interface. * */ #ifndef _AUDIO_SVR_H #define _AUDIO_SVR_H #include#include #include #include "hxcom.h" #include "hxausvc.h" /* * class HXSymbianAudioServer * * This class specializes the Symbian OS CServer class in order to * implement a server to respond to requests from one or more clients. */ class HXSymbianAudioServer : public CServer { public: HXSymbianAudioServer(); virtual ~HXSymbianAudioServer(); enum Commands { EAS_Init, EAS_Write, EAS_CancelWrite, EAS_Play, EAS_Pause, EAS_GetTime, EAS_GetBlocksBuffered, EAS_SetVolume, EAS_GetVolume, EAS_GetMaxVolume, EAS_GetMinVolume, EAS_Stop, EAS_RequestDeviceTakenNotification, EAS_CancelDeviceTakenNotification }; virtual CSharableSession* NewSessionL(const TVersion& aVersion) const; void AddSession(); void DelSession(); TInt RunError(TInt aError); void NotifyDeviceTaken(); static HBufC* AllocServerName(); private: int m_sessionCount; // session count }; /* * class HXSymbianAudioClient * */ class HXSymbianAudioClient : public RSessionBase { public: HXSymbianAudioClient(); // initialize audio device TInt Init(int channels, int sampleRate); TInt Write(const IHXBuffer* pAudioBuf); void Write(const IHXBuffer* pAudioBuf, TRequestStatus& aStatus); void CancelWrite(); // get the current time played out in ms TUint GetTime(); // get the number of blocks buffered in device TUint GetBlocksBuffered(); // enable playback TInt Play(); // pause playback void Pause(); // stop playback void Stop(); // returns true if not playing bool Stopped(); // get the current volume TInt GetVolume() const; // get the max volume TInt GetMaxVolume() const; // get the min volume TInt GetMinVolume() const; // set the current volume void SetVolume(TInt volume); void RequestDeviceTakenNotification(TRequestStatus& status); void CancelDeviceTakenNotification(); // start a session with the server TInt Connect(); private: bool m_stopped; }; #endif // _AUDIO_SVR_H