www.pudn.com > Audio_Streaming_Example_v1_0.zip > AudioStreamEngine.h


/* 
* ============================================================================ 
*  Name     : CAudioStreamEngine from AudioStreamEngine.h 
*  Part of  : AudioStream 
*  Created  : 24.11.2003 by Nokia Forum 
*  Description: 
*     Declares engine for application. 
*  Version  : 
*  Copyright: Nokia Corporation 
* ============================================================================ 
*/ 
 
#ifndef AUDIOSTREAMENGINE_H 
#define AUDIOSTREAMENGINE_H 
 
// INCLUDES 
#include  
#include   
 
#include  
#include 	// audio input stream 
#include 	// audio output stream 
 
#include "AudioStream.hrh" 
#include "AudioStreamView.h"	 
#include "AudioStreamAppUi.h"	 
 
// FORWARD DECLARATIONS 
class CAudioStreamView; 
 
// CLASS DECLARATION 
 
/** 
*  CAudioStreamEngine application engine class. 
*   
*/ 
class CAudioStreamEngine : public CBase, MMdaAudioInputStreamCallback,  
	MMdaAudioOutputStreamCallback 
{ 
public: 
/*! 
 * NewL() 
 *  
 * discussion Create new CAudioStreamEngine object 
 * return a pointer to the created instance of CAudioStreamEngine 
 */ 
    static CAudioStreamEngine* NewL(CAudioStreamAppUi* /* aAppUi */); 
 
/*! 
 * NewLC() 
 *  
 * discussion Create new CAudioStreamEngine object 
 * return a pointer to the created instance of CAudioStreamEngine which  
 *    has also been pushed to cleanup stack 
 */ 
    static CAudioStreamEngine* NewLC(CAudioStreamAppUi* /* aAppUi */); 
 
 
/*! 
 * ~CAudioStreamEngine() 
 * 
 * discussion Destroy the object and release all memory objects 
 */ 
	~CAudioStreamEngine(); 
         
 
public: // New functions 
	 
/*! 
 * Play() 
 * 
 * discussion Plays the audio data sample 
 */ 
	void Play(); 
/*! 
 * Record() 
 * 
 * discussion Records an audio data sample 
 */ 
	void Record(); 
/*! 
 * Stop() 
 * 
 * discussion Stops the playing/recording of the audio data 
 */ 
	void Stop(); 
	 
/*! 
 * LoadAudioFileL() 
 * 
 * discussion Loads an audio data from a file 
 */ 
	void LoadAudioFileL(); 
/*! 
 * SaveAudioFileL() 
 * 
 * discussion Saves the audio data into a file 
 */ 
	void SaveAudioFileL(); 
 
	 
private: // in-class methods 
 
/*! 
 * ShowMessageL() 
 * 
 * discussion Displays application messages for user on a label 
 * 
 * param aMsg text to be displayed 
 * param aReset if true, the label will be cleared before displaying aMsg, 
 *    if false, aMsg text will be appended to existing message on label 
 */ 
	void ShowMessageL(const TDesC& /* aMsg */, TBool /* aReset=false */); 
	 
/*! 
 * MaiscOpenComplete() 
 * 
 * discussion A callback function that is called when  
 *    CMdaAudioInputStream::Open() has completed, indicating that the audio  
 *    input stream is ready for use. 
 * 
 * param aError KErrNone if the open succeeded, otherwise one of the system  
 *    error codes. 
 */ 
	virtual void MaiscOpenComplete(TInt aError); 
/*! 
 * MaiscBufferCopied() 
 * 
 * discussion A callback function that is called when a chunk of audio data  
 *    has been copied to the descriptor specified in a  
 *    CMdaAudioInputStream::ReadL(). 
 * 
 * param aError KErrNone if the copy succeeded, KErrAbort if the input stream 
 *    was closed for some reason, otherwise one of the system error codes. 
 */ 
	virtual void MaiscBufferCopied(TInt aError, const TDesC8& aBuffer); 
/*! 
 * MaiscRecordComplete() 
 * 
 * discussion A callback function that is called when the input stream is 
 *    closed using CMdaAudioInputStream::Stop().  
 * 
 * param aError KErrNone if the stop succeeded, otherwise one of the system 
 *    error codes. 
 */	 
	virtual void MaiscRecordComplete(TInt aError); 
 
/*! 
 * MaoscOpenComplete() 
 * 
 * discussion A callback function that is called when  
 *    CMdaAudioOutputStream::Open() has completed, indicating that the audio  
 *    output stream is ready for use. 
 * 
 * param aError KErrNone if the open succeeded, otherwise one of the system  
 *    error codes. 
 */ 
	virtual void MaoscOpenComplete(TInt aError); 
/*! 
 * MaoscBufferCopied() 
 * 
 * discussion A callback function that is called when a descriptor has been  
 *    copied to the lower layers of MMF. It is also called when an error has  
 *    occurred or when the client has stopped the stream playing before the  
 *    descriptor has been fully copied (by calling  
 *    CMdaAudioOutputStream::Stop()) 
 * 
 * param aError KErrNone if the copy succeeded, otherwise one of the system 
 *    error codes. KErrAbort indicates that the client has stopped the stream 
 *    playing before the descriptor has been copied. 
 * param aBuffer reference to the buffer that has been copied. 
 */ 
	virtual void MaoscBufferCopied(TInt aError, const TDesC8& aBuffer); 
	 
/*! 
 * MaoscPlayComplete() 
 * 
 * discussion A callback function that is called when playback terminates as 
 *    a result of a CMdaAudioOutputStream::Stop(). 
 * 
 * param aError KErrNone if the close succeeded, otherwise one of the system 
 *    error codes. 
 */ 
	virtual void MaoscPlayComplete(TInt aError); 
 
public: // Functions from base classes 
 
private: // Basic two-phase EPOC constructors 
 
/*! 
 * ConstructL() 
 * 
 * discussion Perform the second phase construction of a CAudioStreamEngine  
 *    object 
 */ 
    void ConstructL(); 
  
/*! 
 * CAudioStreamEngine() 
 * 
 * discussion Perform the first phase of two phase construction  
 */ 
    CAudioStreamEngine(CAudioStreamAppUi* /* aAppUi */); 
 
private:	 
 
	// enumeration of input/output stream status 
	enum TStatus 
		{ 
		ENotReady, 
		EOpen 
		}; 
 
		 
private: 	// data members 
 
	// application UI object reference 
	CAudioStreamAppUi* iAppUi; 
	// audio input stream object reference 
	CMdaAudioInputStream* iInputStream; 
	// audio output stream object reference 
	CMdaAudioOutputStream* iOutputStream; 
	// a buffer (pointer array) containing the audio data blocks 
	RPointerArray iStreamBuffer; 
	// audio data stream settings for input and output streams 
	TMdaAudioDataSettings iStreamSettings; 
	// status enumeration of input stream 
	TStatus iInputStatus; 
	// status enumeration of output stream	 
	TStatus iOutputStatus; 
	// index of audio data block currently being played/recorded on the buffer 
	TInt iStreamIdx; 
	// application status message displayed to user 
	TBuf<64> iMsg; 
	// stream start (first audio block in buffer) and end index 
	TInt iStreamStart; 
	TInt iStreamEnd; 
	 
}; 
 
#endif // AUDIOSTREAMENGINE_H