audio_svr.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:4k
源码类别:

Symbian

开发平台:

C/C++

  1. /* ***** BEGIN LICENSE BLOCK ***** 
  2.  * Version: RCSL 1.0/RPSL 1.0 
  3.  *  
  4.  * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved. 
  5.  *      
  6.  * The contents of this file, and the files included with this file, are 
  7.  * subject to the current version of the RealNetworks Public Source License 
  8.  * Version 1.0 (the "RPSL") available at 
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed 
  10.  * the file under the RealNetworks Community Source License Version 1.0 
  11.  * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl, 
  12.  * in which case the RCSL will apply. You may also obtain the license terms 
  13.  * directly from RealNetworks.  You may not use this file except in 
  14.  * compliance with the RPSL or, if you have a valid RCSL with RealNetworks 
  15.  * applicable to this file, the RCSL.  Please see the applicable RPSL or 
  16.  * RCSL for the rights, obligations and limitations governing use of the 
  17.  * contents of the file.  
  18.  *  
  19.  * This file is part of the Helix DNA Technology. RealNetworks is the 
  20.  * developer of the Original Code and owns the copyrights in the portions 
  21.  * it created. 
  22.  *  
  23.  * This file, and the files included with this file, is distributed and made 
  24.  * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  25.  * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  26.  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS 
  27.  * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  28.  * 
  29.  * Technology Compatibility Kit Test Suite(s) Location: 
  30.  *    http://www.helixcommunity.org/content/tck 
  31.  * 
  32.  * Contributor(s): 
  33.  *  
  34.  * ***** END LICENSE BLOCK ***** */ 
  35.  
  36. /*
  37.  *  Description: 
  38.  *  
  39.  *  This file contains three class definitions; HXSymbianAudioServer,
  40.  *  HXSymbianAudioSession, and HXSymbianAudioClient. Their purpose is
  41.  *  to allow us to hide the Symbian CMdaAudioOutputStream interface.
  42.  *
  43.  */
  44. #ifndef _AUDIO_SVR_H
  45. #define _AUDIO_SVR_H
  46. #include <stdio.h>
  47. #include <e32base.h>
  48. #include <bacntf.h>
  49. #include "hxcom.h"
  50. #include "hxausvc.h"
  51. /*
  52.  * class HXSymbianAudioServer
  53.  *
  54.  * This class specializes the Symbian OS CServer class in order to
  55.  * implement a server to respond to requests from one or more clients.
  56.  */
  57. class HXSymbianAudioServer : public CServer {
  58. public:
  59.     HXSymbianAudioServer();
  60.     virtual ~HXSymbianAudioServer();
  61.     enum Commands {
  62. EAS_Init,
  63. EAS_Write,
  64. EAS_CancelWrite,
  65. EAS_Play,
  66. EAS_Pause,
  67. EAS_GetTime,
  68. EAS_GetBlocksBuffered,
  69. EAS_SetVolume,
  70. EAS_GetVolume,
  71. EAS_GetMaxVolume,
  72. EAS_GetMinVolume,
  73. EAS_Stop,
  74. EAS_RequestDeviceTakenNotification,
  75. EAS_CancelDeviceTakenNotification
  76.     };
  77.     virtual CSharableSession* NewSessionL(const TVersion& aVersion) const;
  78.     void AddSession();
  79.     void DelSession();
  80.     TInt RunError(TInt aError);
  81.     void NotifyDeviceTaken();
  82.     static HBufC* AllocServerName();
  83. private:
  84.     int m_sessionCount; // session count
  85. };
  86. /* 
  87.  * class HXSymbianAudioClient
  88.  *
  89.  */
  90. class HXSymbianAudioClient : public RSessionBase {
  91. public:
  92.     HXSymbianAudioClient();
  93. // initialize audio device
  94.     TInt Init(int channels, int sampleRate);
  95.     TInt Write(const IHXBuffer* pAudioBuf);
  96.     void Write(const IHXBuffer* pAudioBuf, TRequestStatus& aStatus);
  97.     void CancelWrite();
  98. // get the current time played out in ms
  99.     TUint GetTime();
  100. // get the number of blocks buffered in device
  101.     TUint GetBlocksBuffered();
  102. // enable playback
  103.     TInt Play();
  104. // pause playback
  105.     void Pause();
  106. // stop playback
  107.     void Stop();
  108. // returns true if not playing
  109.     bool Stopped();
  110. // get the current volume
  111.     TInt GetVolume() const;
  112. // get the max volume
  113.     TInt GetMaxVolume() const;
  114. // get the min volume
  115.     TInt GetMinVolume() const;
  116. // set the current volume
  117.     void SetVolume(TInt volume);
  118.     
  119.     void RequestDeviceTakenNotification(TRequestStatus& status);
  120.     void CancelDeviceTakenNotification();
  121. // start a session with the server
  122.     TInt Connect();
  123. private:
  124.     bool m_stopped;
  125. };
  126. #endif // _AUDIO_SVR_H